@@ -780,7 +780,7 @@ class WidgetAnnotationElement extends AnnotationElement {
780
780
detail : {
781
781
id : this . data . id ,
782
782
name : eventName ,
783
- value : event . target . checked ,
783
+ value : valueGetter ( event ) ,
784
784
} ,
785
785
} ) ;
786
786
} ) ;
@@ -923,8 +923,6 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
923
923
const elementData = {
924
924
userValue : null ,
925
925
formattedValue : null ,
926
- beforeInputSelectionRange : null ,
927
- beforeInputValue : null ,
928
926
} ;
929
927
930
928
if ( this . data . multiLine ) {
@@ -965,7 +963,6 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
965
963
}
966
964
// Reset the cursor position to the start of the field (issue 12359).
967
965
event . target . scrollLeft = 0 ;
968
- elementData . beforeInputSelectionRange = null ;
969
966
} ;
970
967
971
968
if ( this . enableScripting && this . hasJSActions ) {
@@ -1007,7 +1004,6 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
1007
1004
// Even if the field hasn't any actions
1008
1005
// leaving it can still trigger some actions with Calculate
1009
1006
element . addEventListener ( "keydown" , event => {
1010
- elementData . beforeInputValue = event . target . value ;
1011
1007
// if the key is one of Escape, Enter or Tab
1012
1008
// then the data are committed
1013
1009
let commitKey = - 1 ;
@@ -1039,9 +1035,9 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
1039
1035
const _blurListener = blurListener ;
1040
1036
blurListener = null ;
1041
1037
element . addEventListener ( "blur" , event => {
1038
+ elementData . userValue = event . target . value ;
1042
1039
if ( this . _mouseState . isDown ) {
1043
1040
// Focus out using the mouse: data are committed
1044
- elementData . userValue = event . target . value ;
1045
1041
this . linkService . eventBus ?. dispatch ( "dispatcheventinsandbox" , {
1046
1042
source : this ,
1047
1043
detail : {
@@ -1057,42 +1053,22 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
1057
1053
}
1058
1054
_blurListener ( event ) ;
1059
1055
} ) ;
1060
- element . addEventListener ( "mousedown" , event => {
1061
- elementData . beforeInputValue = event . target . value ;
1062
- elementData . beforeInputSelectionRange = null ;
1063
- } ) ;
1064
- element . addEventListener ( "keyup" , event => {
1065
- // keyup is triggered after input
1066
- if ( event . target . selectionStart === event . target . selectionEnd ) {
1067
- elementData . beforeInputSelectionRange = null ;
1068
- }
1069
- } ) ;
1070
- element . addEventListener ( "select" , event => {
1071
- elementData . beforeInputSelectionRange = [
1072
- event . target . selectionStart ,
1073
- event . target . selectionEnd ,
1074
- ] ;
1075
- } ) ;
1076
1056
1077
1057
if ( this . data . actions ?. Keystroke ) {
1078
- // We should use beforeinput but this
1079
- // event isn't available in Firefox
1080
- element . addEventListener ( "input" , event => {
1081
- let selStart = - 1 ;
1082
- let selEnd = - 1 ;
1083
- if ( elementData . beforeInputSelectionRange ) {
1084
- [ selStart , selEnd ] = elementData . beforeInputSelectionRange ;
1085
- }
1058
+ element . addEventListener ( "beforeinput" , event => {
1059
+ elementData . formattedValue = "" ;
1060
+ const { data, target } = event ;
1061
+ const { value, selectionStart, selectionEnd } = target ;
1086
1062
this . linkService . eventBus ?. dispatch ( "dispatcheventinsandbox" , {
1087
1063
source : this ,
1088
1064
detail : {
1089
1065
id,
1090
1066
name : "Keystroke" ,
1091
- value : elementData . beforeInputValue ,
1092
- change : event . data ,
1067
+ value,
1068
+ change : data ,
1093
1069
willCommit : false ,
1094
- selStart,
1095
- selEnd,
1070
+ selStart : selectionStart ,
1071
+ selEnd : selectionEnd ,
1096
1072
} ,
1097
1073
} ) ;
1098
1074
} ) ;
0 commit comments