@@ -77,18 +77,94 @@ type DeleteTokensAction = {
77
77
focusOverride ?: FocusOverride ;
78
78
} ;
79
79
80
- type UpdateFreeTextAction = {
80
+ type UpdateFreeTextActionOnSelect = {
81
81
shouldCommitQuery : boolean ;
82
82
text : string ;
83
83
tokens : ParseResultToken [ ] ;
84
- type : 'UPDATE_FREE_TEXT ' ;
84
+ type : 'UPDATE_FREE_TEXT_ON_SELECT ' ;
85
85
focusOverride ?: FocusOverride ;
86
86
} ;
87
87
88
- type ReplaceTokensWithTextAction = {
88
+ type UpdateFreeTextActionOnBlur = {
89
+ shouldCommitQuery : boolean ;
90
+ text : string ;
91
+ tokens : ParseResultToken [ ] ;
92
+ type : 'UPDATE_FREE_TEXT_ON_BLUR' ;
93
+ focusOverride ?: FocusOverride ;
94
+ } ;
95
+
96
+ type UpdateFreeTextActionOnCommit = {
97
+ shouldCommitQuery : boolean ;
89
98
text : string ;
90
99
tokens : ParseResultToken [ ] ;
91
- type : 'REPLACE_TOKENS_WITH_TEXT' ;
100
+ type : 'UPDATE_FREE_TEXT_ON_COMMIT' ;
101
+ focusOverride ?: FocusOverride ;
102
+ } ;
103
+
104
+ type UpdateFreeTextActionOnExit = {
105
+ shouldCommitQuery : boolean ;
106
+ text : string ;
107
+ tokens : ParseResultToken [ ] ;
108
+ type : 'UPDATE_FREE_TEXT_ON_EXIT' ;
109
+ focusOverride ?: FocusOverride ;
110
+ } ;
111
+
112
+ type UpdateFreeTextActionOnFunction = {
113
+ shouldCommitQuery : boolean ;
114
+ text : string ;
115
+ tokens : ParseResultToken [ ] ;
116
+ type : 'UPDATE_FREE_TEXT_ON_FUNCTION' ;
117
+ focusOverride ?: FocusOverride ;
118
+ } ;
119
+
120
+ type UpdateFreeTextActionOnParenthesis = {
121
+ shouldCommitQuery : boolean ;
122
+ text : string ;
123
+ tokens : ParseResultToken [ ] ;
124
+ type : 'UPDATE_FREE_TEXT_ON_PARENTHESIS' ;
125
+ focusOverride ?: FocusOverride ;
126
+ } ;
127
+
128
+ type UpdateFreeTextActionOnColon = {
129
+ shouldCommitQuery : boolean ;
130
+ text : string ;
131
+ tokens : ParseResultToken [ ] ;
132
+ type : 'UPDATE_FREE_TEXT_ON_COLON' ;
133
+ focusOverride ?: FocusOverride ;
134
+ } ;
135
+
136
+ type ReplaceTokensWithTextOnPasteAction = {
137
+ text : string ;
138
+ tokens : ParseResultToken [ ] ;
139
+ type : 'REPLACE_TOKENS_WITH_TEXT_ON_PASTE' ;
140
+ focusOverride ?: FocusOverride ;
141
+ } ;
142
+
143
+ type ReplaceTokensWithTextOnDeleteAction = {
144
+ text : string ;
145
+ tokens : ParseResultToken [ ] ;
146
+ type : 'REPLACE_TOKENS_WITH_TEXT_ON_DELETE' ;
147
+ focusOverride ?: FocusOverride ;
148
+ } ;
149
+
150
+ type ReplaceTokensWithTextOnCutAction = {
151
+ text : string ;
152
+ tokens : ParseResultToken [ ] ;
153
+ type : 'REPLACE_TOKENS_WITH_TEXT_ON_CUT' ;
154
+ focusOverride ?: FocusOverride ;
155
+ } ;
156
+
157
+ type ReplaceTokensWithTextOnKeyDownAction = {
158
+ text : string ;
159
+ tokens : ParseResultToken [ ] ;
160
+ type : 'REPLACE_TOKENS_WITH_TEXT_ON_KEY_DOWN' ;
161
+ focusOverride ?: FocusOverride ;
162
+ } ;
163
+
164
+ type ReplaceTokensWithTextOnSelectAction = {
165
+ text : string ;
166
+ tokens : ParseResultToken [ ] ;
167
+ type : 'REPLACE_TOKENS_WITH_TEXT_ON_SELECT' ;
92
168
focusOverride ?: FocusOverride ;
93
169
} ;
94
170
@@ -126,15 +202,34 @@ type UpdateAggregateArgsAction = {
126
202
127
203
type ResetClearAskSeerFeedbackAction = { type : 'RESET_CLEAR_ASK_SEER_FEEDBACK' } ;
128
204
205
+ type UpdateFreeTextActions =
206
+ | UpdateFreeTextActionOnSelect
207
+ | UpdateFreeTextActionOnBlur
208
+ | UpdateFreeTextActionOnCommit
209
+ | UpdateFreeTextActionOnExit
210
+ | UpdateFreeTextActionOnFunction
211
+ | UpdateFreeTextActionOnParenthesis
212
+ | UpdateFreeTextActionOnColon ;
213
+
129
214
export type QueryBuilderActions =
130
215
| ClearAction
131
216
| CommitQueryAction
132
217
| UpdateQueryAction
133
218
| ResetFocusOverrideAction
134
219
| DeleteTokenAction
135
220
| DeleteTokensAction
136
- | UpdateFreeTextAction
137
- | ReplaceTokensWithTextAction
221
+ | UpdateFreeTextActionOnSelect
222
+ | UpdateFreeTextActionOnBlur
223
+ | UpdateFreeTextActionOnCommit
224
+ | UpdateFreeTextActionOnExit
225
+ | UpdateFreeTextActionOnFunction
226
+ | UpdateFreeTextActionOnParenthesis
227
+ | UpdateFreeTextActionOnColon
228
+ | ReplaceTokensWithTextOnPasteAction
229
+ | ReplaceTokensWithTextOnDeleteAction
230
+ | ReplaceTokensWithTextOnCutAction
231
+ | ReplaceTokensWithTextOnKeyDownAction
232
+ | ReplaceTokensWithTextOnSelectAction
138
233
| UpdateFilterKeyAction
139
234
| UpdateFilterOpAction
140
235
| UpdateTokenValueAction
@@ -361,7 +456,7 @@ function replaceTokensWithPadding(
361
456
362
457
function updateFreeText (
363
458
state : QueryBuilderState ,
364
- action : UpdateFreeTextAction
459
+ action : UpdateFreeTextActions
365
460
) : QueryBuilderState {
366
461
const newQuery = replaceTokensWithPadding ( state . query , action . tokens , action . text ) ;
367
462
@@ -636,7 +731,13 @@ export function useQueryBuilderState({
636
731
clearAskSeerFeedback : displayAskSeerFeedback ? true : false ,
637
732
} ;
638
733
}
639
- case 'UPDATE_FREE_TEXT' : {
734
+ case 'UPDATE_FREE_TEXT_ON_SELECT' :
735
+ case 'UPDATE_FREE_TEXT_ON_BLUR' :
736
+ case 'UPDATE_FREE_TEXT_ON_COMMIT' :
737
+ case 'UPDATE_FREE_TEXT_ON_EXIT' :
738
+ case 'UPDATE_FREE_TEXT_ON_FUNCTION' :
739
+ case 'UPDATE_FREE_TEXT_ON_PARENTHESIS' :
740
+ case 'UPDATE_FREE_TEXT_ON_COLON' : {
640
741
const newState = updateFreeText ( state , action ) ;
641
742
642
743
return {
@@ -645,7 +746,11 @@ export function useQueryBuilderState({
645
746
newState . query !== state . query && displayAskSeerFeedback ? true : false ,
646
747
} ;
647
748
}
648
- case 'REPLACE_TOKENS_WITH_TEXT' :
749
+ case 'REPLACE_TOKENS_WITH_TEXT_ON_CUT' :
750
+ case 'REPLACE_TOKENS_WITH_TEXT_ON_PASTE' :
751
+ case 'REPLACE_TOKENS_WITH_TEXT_ON_DELETE' :
752
+ case 'REPLACE_TOKENS_WITH_TEXT_ON_SELECT' :
753
+ case 'REPLACE_TOKENS_WITH_TEXT_ON_KEY_DOWN' :
649
754
return replaceTokensWithText ( state , {
650
755
tokens : action . tokens ,
651
756
text : action . text ,
0 commit comments