@deephaven/iris-grid 0.46.1-beta.0 → 0.46.1-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AdvancedFilterCreator.js +122 -102
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +47 -38
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +52 -40
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +35 -28
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnStatistics.js +74 -54
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CrossColumnSearch.js +113 -90
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.js +42 -35
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.js +226 -193
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.js +371 -344
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.js +11 -8
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +56 -50
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCopyHandler.js +34 -24
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridPartitionSelector.js +59 -46
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/PartitionSelectorSearch.js +43 -36
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.js +34 -22
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/ToastBottomBar.js +5 -3
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +34 -25
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js +2 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +50 -36
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +2 -1
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/ChartBuilder.js +134 -107
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +70 -48
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +66 -53
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js +15 -11
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/RollupRows.js +130 -103
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +49 -39
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +178 -128
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +67 -57
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +86 -63
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +30 -22
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +52 -47
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +52 -42
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +90 -67
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +30 -22
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +70 -58
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/icons/BarIcon.js +21 -12
- package/dist/sidebar/icons/BarIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatColumnWhereIcon.js +38 -30
- package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatRowWhereIcon.js +32 -24
- package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/HistogramIcon.js +21 -12
- package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
- package/dist/sidebar/icons/LineIcon.js +24 -15
- package/dist/sidebar/icons/LineIcon.js.map +1 -1
- package/dist/sidebar/icons/PieIcon.js +21 -12
- package/dist/sidebar/icons/PieIcon.js.map +1 -1
- package/dist/sidebar/icons/ScatterIcon.js +71 -62
- package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +129 -121
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +121 -87
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +40 -26
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +17 -14
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +34 -28
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +2 -2
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +8 -7
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
- package/package.json +15 -15
package/dist/GotoRow.js
CHANGED
|
@@ -8,6 +8,9 @@ import classNames from 'classnames';
|
|
|
8
8
|
import "./GotoRow.css";
|
|
9
9
|
import shortid from 'shortid';
|
|
10
10
|
import IrisGridBottomBar from "./IrisGridBottomBar.js";
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
11
14
|
function isIrisGridProxyModel(model) {
|
|
12
15
|
return model.model !== undefined;
|
|
13
16
|
}
|
|
@@ -86,113 +89,122 @@ function GotoRow(_ref) {
|
|
|
86
89
|
switch (normalizedType) {
|
|
87
90
|
case TableUtils.dataType.DECIMAL:
|
|
88
91
|
case TableUtils.dataType.INT:
|
|
89
|
-
return /*#__PURE__*/
|
|
90
|
-
className: "goto-row-input"
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
92
|
+
return /*#__PURE__*/_jsx("div", {
|
|
93
|
+
className: "goto-row-input",
|
|
94
|
+
children: /*#__PURE__*/_jsx("input", {
|
|
95
|
+
ref: gotoValueInputRef,
|
|
96
|
+
className: classNames('form-control', {
|
|
97
|
+
'is-invalid': gotoValueError !== ''
|
|
98
|
+
}),
|
|
99
|
+
onKeyDown: handleGotoValueNumberKeyDown,
|
|
100
|
+
placeholder: "value",
|
|
101
|
+
onChange: e => {
|
|
102
|
+
var value = e.target.value.toLowerCase();
|
|
103
|
+
// regex tests for
|
|
104
|
+
if (/^-?[0-9]*\.?[0-9]*$/.test(e.target.value)) {
|
|
105
|
+
onGotoValueInputChanged(e.target.value);
|
|
106
|
+
} else if (value === '-i' || value === '-infinity') {
|
|
107
|
+
onGotoValueInputChanged("".concat(Number.NEGATIVE_INFINITY));
|
|
108
|
+
} else if (value === 'i' || value === 'infinity') {
|
|
109
|
+
onGotoValueInputChanged("".concat(Number.POSITIVE_INFINITY));
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
value: gotoValue,
|
|
113
|
+
"aria-label": "Value Input"
|
|
114
|
+
})
|
|
115
|
+
});
|
|
112
116
|
case TableUtils.dataType.DATETIME:
|
|
113
|
-
return /*#__PURE__*/
|
|
114
|
-
className: "goto-value-date-time-input"
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
117
|
+
return /*#__PURE__*/_jsx("div", {
|
|
118
|
+
className: "goto-value-date-time-input",
|
|
119
|
+
children: /*#__PURE__*/_jsx(DateTimeInput, {
|
|
120
|
+
ref: gotoValueInputRef,
|
|
121
|
+
className: classNames('form-control', 'goto-value-date-time-input', {
|
|
122
|
+
'is-invalid': gotoValueError !== ''
|
|
123
|
+
}),
|
|
124
|
+
defaultValue: gotoValue,
|
|
125
|
+
onChange: onGotoValueInputChanged,
|
|
126
|
+
onSubmit: handleGotoValueKeySubmit,
|
|
127
|
+
"aria-label": "Value Input"
|
|
128
|
+
})
|
|
129
|
+
});
|
|
125
130
|
case TableUtils.dataType.STRING:
|
|
126
|
-
return /*#__PURE__*/
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
131
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
132
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
133
|
+
className: "goto-row-input",
|
|
134
|
+
children: /*#__PURE__*/_jsxs("select", {
|
|
135
|
+
className: "custom-select",
|
|
136
|
+
onChange: event => {
|
|
137
|
+
onGotoValueSelectedFilterChanged(event.target.value);
|
|
138
|
+
},
|
|
139
|
+
value: gotoValueFilter,
|
|
140
|
+
"aria-label": "filter-type-select",
|
|
141
|
+
children: [/*#__PURE__*/_jsx("option", {
|
|
142
|
+
value: FilterType.eqIgnoreCase,
|
|
143
|
+
children: "Equals (case-insensitive)"
|
|
144
|
+
}, FilterType.eqIgnoreCase), /*#__PURE__*/_jsx("option", {
|
|
145
|
+
value: FilterType.containsIgnoreCase,
|
|
146
|
+
children: "Contains (case-insensitive)"
|
|
147
|
+
}, FilterType.containsIgnoreCase), /*#__PURE__*/_jsx("option", {
|
|
148
|
+
value: FilterType.eq,
|
|
149
|
+
children: "Equals"
|
|
150
|
+
}, FilterType.eq), /*#__PURE__*/_jsx("option", {
|
|
151
|
+
value: FilterType.contains,
|
|
152
|
+
children: "Contains"
|
|
153
|
+
}, FilterType.contains)]
|
|
154
|
+
})
|
|
155
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
156
|
+
className: "goto-row-input",
|
|
157
|
+
children: /*#__PURE__*/_jsx("input", {
|
|
158
|
+
ref: gotoValueInputRef,
|
|
159
|
+
className: classNames('form-control', {
|
|
160
|
+
'is-invalid': gotoValueError !== ''
|
|
161
|
+
}),
|
|
162
|
+
onKeyDown: handleGotoValueKeySubmit,
|
|
163
|
+
placeholder: "value",
|
|
164
|
+
onChange: e => onGotoValueInputChanged(e.target.value),
|
|
165
|
+
value: gotoValue,
|
|
166
|
+
"aria-label": "Value Input"
|
|
167
|
+
})
|
|
168
|
+
})]
|
|
169
|
+
});
|
|
160
170
|
case TableUtils.dataType.BOOLEAN:
|
|
161
|
-
return /*#__PURE__*/
|
|
162
|
-
className: "goto-row-input"
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
171
|
+
return /*#__PURE__*/_jsx("div", {
|
|
172
|
+
className: "goto-row-input",
|
|
173
|
+
children: /*#__PURE__*/_jsxs("select", {
|
|
174
|
+
className: "custom-select",
|
|
175
|
+
onChange: event => {
|
|
176
|
+
onGotoValueInputChanged(event.target.value);
|
|
177
|
+
},
|
|
178
|
+
value: gotoValue,
|
|
179
|
+
"aria-label": "Value Input",
|
|
180
|
+
children: [/*#__PURE__*/_jsx("option", {
|
|
181
|
+
"aria-label": "null value",
|
|
182
|
+
value: ""
|
|
183
|
+
}, "null"), /*#__PURE__*/_jsx("option", {
|
|
184
|
+
value: "true",
|
|
185
|
+
children: "true"
|
|
186
|
+
}, "true"), /*#__PURE__*/_jsx("option", {
|
|
187
|
+
value: "false",
|
|
188
|
+
children: "false"
|
|
189
|
+
}, "false")]
|
|
190
|
+
})
|
|
191
|
+
});
|
|
181
192
|
default:
|
|
182
|
-
return /*#__PURE__*/
|
|
183
|
-
className: "goto-row-input"
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
+
return /*#__PURE__*/_jsx("div", {
|
|
194
|
+
className: "goto-row-input",
|
|
195
|
+
children: /*#__PURE__*/_jsx("input", {
|
|
196
|
+
ref: gotoValueInputRef,
|
|
197
|
+
className: "form-control",
|
|
198
|
+
onKeyDown: handleGotoValueKeySubmit,
|
|
199
|
+
placeholder: "value",
|
|
200
|
+
onChange: e => onGotoValueInputChanged(e.target.value),
|
|
201
|
+
value: gotoValue,
|
|
202
|
+
"aria-label": "Value Input"
|
|
203
|
+
})
|
|
204
|
+
});
|
|
193
205
|
}
|
|
194
206
|
};
|
|
195
|
-
return /*#__PURE__*/
|
|
207
|
+
return /*#__PURE__*/_jsx(IrisGridBottomBar, {
|
|
196
208
|
isShown: isShown,
|
|
197
209
|
className: classNames('goto-row'),
|
|
198
210
|
onEntering: onEntering,
|
|
@@ -201,98 +213,119 @@ function GotoRow(_ref) {
|
|
|
201
213
|
selectInput();
|
|
202
214
|
},
|
|
203
215
|
onExiting: onExiting,
|
|
204
|
-
onExited: onExited
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
216
|
+
onExited: onExited,
|
|
217
|
+
children: /*#__PURE__*/_jsxs(_Fragment, {
|
|
218
|
+
children: [/*#__PURE__*/_jsxs("div", {
|
|
219
|
+
className: "goto-row-row",
|
|
220
|
+
children: [/*#__PURE__*/_jsxs("div", {
|
|
221
|
+
className: classNames('goto-row-wrapper', {
|
|
222
|
+
'is-inactive': !isGotoRowActive
|
|
223
|
+
}),
|
|
224
|
+
onClick: () => setIsGotoRowActive(true),
|
|
225
|
+
onFocus: () => setIsGotoRowActive(true),
|
|
226
|
+
role: "group",
|
|
227
|
+
children: [/*#__PURE__*/_jsx("label", {
|
|
228
|
+
className: "goto-row-text",
|
|
229
|
+
htmlFor: gotoRowInputId,
|
|
230
|
+
children: "Go to row"
|
|
231
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
232
|
+
className: "goto-row-input",
|
|
233
|
+
children: /*#__PURE__*/_jsx("input", {
|
|
234
|
+
ref: gotoRowInputRef,
|
|
235
|
+
"data-testid": "goto-row-input",
|
|
236
|
+
type: "number",
|
|
237
|
+
onKeyDown: e => {
|
|
238
|
+
if (e.key === 'Enter') {
|
|
239
|
+
e.stopPropagation();
|
|
240
|
+
e.preventDefault();
|
|
241
|
+
onGotoRowSubmit();
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
className: classNames('form-control', {
|
|
245
|
+
'is-invalid': gotoRowError !== ''
|
|
246
|
+
}),
|
|
247
|
+
placeholder: "Row number",
|
|
248
|
+
onChange: event => {
|
|
249
|
+
onGotoRowNumberChanged(event);
|
|
250
|
+
},
|
|
251
|
+
value: gotoRow,
|
|
252
|
+
id: gotoRowInputId
|
|
253
|
+
})
|
|
254
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
255
|
+
className: "goto-row-text",
|
|
256
|
+
children: ["of ", dh.i18n.NumberFormat.format(DEFAULT_FORMAT_STRING, rowCount)]
|
|
257
|
+
}), gotoRowError && /*#__PURE__*/_jsx("div", {
|
|
258
|
+
className: "text-danger",
|
|
259
|
+
children: gotoRowError
|
|
260
|
+
})]
|
|
261
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
262
|
+
className: "goto-row-close",
|
|
263
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
264
|
+
kind: "ghost",
|
|
265
|
+
onClick: onClose,
|
|
266
|
+
children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
|
|
267
|
+
icon: vsClose,
|
|
268
|
+
style: {
|
|
269
|
+
marginRight: '0'
|
|
270
|
+
}
|
|
271
|
+
})
|
|
272
|
+
})
|
|
273
|
+
})]
|
|
274
|
+
}), model.isSeekRowAvailable && /*#__PURE__*/_jsx("div", {
|
|
275
|
+
className: "goto-row-row",
|
|
276
|
+
children: /*#__PURE__*/_jsxs("div", {
|
|
277
|
+
className: classNames('goto-row-wrapper', {
|
|
278
|
+
'is-inactive': isGotoRowActive
|
|
279
|
+
}),
|
|
280
|
+
onClick: () => setIsGotoRowActive(false),
|
|
281
|
+
onFocus: () => setIsGotoRowActive(false),
|
|
282
|
+
role: "group",
|
|
283
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
284
|
+
className: "goto-row-text",
|
|
285
|
+
children: "Go to value"
|
|
286
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
287
|
+
className: "goto-row-input",
|
|
288
|
+
children: /*#__PURE__*/_jsx("select", {
|
|
289
|
+
className: "custom-select",
|
|
290
|
+
onChange: event => {
|
|
291
|
+
var columnName = event.target.value;
|
|
292
|
+
onGotoValueSelectedColumnNameChanged(columnName);
|
|
293
|
+
},
|
|
294
|
+
value: gotoValueSelectedColumnName,
|
|
295
|
+
"aria-label": "column-name-select",
|
|
296
|
+
children: columns.map(column => /*#__PURE__*/_jsx("option", {
|
|
297
|
+
value: column.name,
|
|
298
|
+
children: column.name
|
|
299
|
+
}, column.name))
|
|
300
|
+
})
|
|
301
|
+
}), renderValueInput(), /*#__PURE__*/_jsxs("div", {
|
|
302
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
|
303
|
+
kind: "ghost",
|
|
304
|
+
disabled: gotoValue === '',
|
|
305
|
+
onClick: () => {
|
|
306
|
+
onGotoValueSubmit(true);
|
|
307
|
+
},
|
|
308
|
+
children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
|
|
309
|
+
icon: vsArrowUp
|
|
310
|
+
})
|
|
311
|
+
}), /*#__PURE__*/_jsx(Button, {
|
|
312
|
+
kind: "ghost",
|
|
313
|
+
disabled: gotoValue === '',
|
|
314
|
+
onClick: () => {
|
|
315
|
+
onGotoValueSubmit(false);
|
|
316
|
+
},
|
|
317
|
+
children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
|
|
318
|
+
icon: vsArrowDown
|
|
319
|
+
})
|
|
320
|
+
})]
|
|
321
|
+
}), gotoValueError && /*#__PURE__*/_jsx("div", {
|
|
322
|
+
className: "text-danger",
|
|
323
|
+
children: gotoValueError
|
|
324
|
+
})]
|
|
325
|
+
})
|
|
326
|
+
})]
|
|
327
|
+
})
|
|
328
|
+
});
|
|
296
329
|
}
|
|
297
330
|
export default GotoRow;
|
|
298
331
|
//# sourceMappingURL=GotoRow.js.map
|
package/dist/GotoRow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GotoRow.js","names":["FontAwesomeIcon","vsClose","vsArrowUp","vsArrowDown","React","useEffect","useMemo","useRef","useState","Type","FilterType","Button","DateTimeInput","TableUtils","classNames","shortid","IrisGridBottomBar","isIrisGridProxyModel","model","undefined","DEFAULT_FORMAT_STRING","GotoRow","gotoRow","gotoRowError","gotoValueError","onGotoRowSubmit","isShown","onEntering","onEntered","onExiting","onExited","onGotoRowNumberChanged","onClose","gotoValueSelectedColumnName","gotoValue","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","gotoRowInputRef","gotoValueInputRef","isGotoRowActive","setIsGotoRowActive","columns","table","dh","rowCount","gotoRowInputId","handleGotoValueNumberKeyDown","e","key","stopPropagation","preventDefault","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","onGotoValueInputChanged","handleGotoValueKeySubmit","shiftKey","index","getColumnIndexByName","selectedColumn","columnType","type","normalizedType","getNormalizedType","value","selectInput","document","activeElement","current","select","renderValueInput","dataType","DECIMAL","INT","target","toLowerCase","test","DATETIME","STRING","event","eqIgnoreCase","containsIgnoreCase","eq","contains","BOOLEAN","i18n","NumberFormat","format","marginRight","isSeekRowAvailable","columnName","map","column","name"],"sources":["../src/GotoRow.tsx"],"sourcesContent":["import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';\nimport React, {\n ChangeEvent,\n KeyboardEvent,\n ReactElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { Column } from '@deephaven/jsapi-types';\nimport {\n Type as FilterType,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { Button, DateTimeInput } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport classNames from 'classnames';\nimport './GotoRow.scss';\nimport shortid from 'shortid';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridProxyModel from './IrisGridProxyModel';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport { ColumnName } from './CommonTypes';\n\nfunction isIrisGridProxyModel(\n model: IrisGridModel\n): model is IrisGridProxyModel {\n return (model as IrisGridProxyModel).model !== undefined;\n}\n\nconst DEFAULT_FORMAT_STRING = '###,##0';\n\ninterface GotoRowProps {\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n onGotoRowSubmit: () => void;\n model: IrisGridModel;\n onGotoRowNumberChanged: (event: ChangeEvent<HTMLInputElement>) => void;\n onClose: () => void;\n isShown: boolean;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValue: string;\n gotoValueFilter: FilterTypeValue;\n onGotoValueSelectedColumnNameChanged: (columnName: ColumnName) => void;\n onGotoValueSelectedFilterChanged: (filter: FilterTypeValue) => void;\n onGotoValueChanged: (input: string) => void;\n onGotoValueSubmit: (isBackward?: boolean) => void;\n}\n\nfunction GotoRow({\n gotoRow,\n gotoRowError,\n gotoValueError,\n onGotoRowSubmit,\n isShown,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n model,\n onGotoRowNumberChanged,\n onClose,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueFilter,\n onGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged,\n onGotoValueChanged,\n onGotoValueSubmit,\n}: GotoRowProps): ReactElement {\n const gotoRowInputRef = useRef<HTMLInputElement>(null);\n const gotoValueInputRef = useRef<HTMLInputElement>(null);\n\n const [isGotoRowActive, setIsGotoRowActive] = useState(false);\n let columns: Column[] = [];\n\n if (isIrisGridProxyModel(model) && model.table !== undefined) {\n ({ columns } = model.table);\n }\n\n const { dh, rowCount } = model;\n\n const gotoRowInputId = useMemo(() => `goto-row-input-${shortid()}`, []);\n\n const handleGotoValueNumberKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n } else if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n (gotoValue === `${Number.POSITIVE_INFINITY}` ||\n gotoValue === `${Number.NEGATIVE_INFINITY}`)\n ) {\n onGotoValueInputChanged('');\n }\n };\n\n const handleGotoValueKeySubmit = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit(e.shiftKey);\n }\n };\n\n const index = model.getColumnIndexByName(gotoValueSelectedColumnName);\n\n const selectedColumn = columns[index ?? 0];\n\n const columnType = selectedColumn?.type;\n\n const normalizedType = TableUtils.getNormalizedType(columnType);\n const onGotoValueInputChanged = (value?: string) => {\n onGotoValueChanged(value ?? '');\n };\n const selectInput = () => {\n // when row changes without focus (i.e. via context menu), re-select input\n if (isGotoRowActive && document.activeElement !== gotoRowInputRef.current) {\n gotoRowInputRef.current?.select();\n } else if (\n !isGotoRowActive &&\n document.activeElement !== gotoValueInputRef.current\n ) {\n gotoValueInputRef.current?.select();\n }\n };\n useEffect(selectInput, [isGotoRowActive, gotoRow, gotoValue]);\n\n const renderValueInput = () => {\n switch (normalizedType) {\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueNumberKeyDown}\n placeholder=\"value\"\n onChange={e => {\n const value = e.target.value.toLowerCase();\n // regex tests for\n if (/^-?[0-9]*\\.?[0-9]*$/.test(e.target.value)) {\n onGotoValueInputChanged(e.target.value);\n } else if (value === '-i' || value === '-infinity') {\n onGotoValueInputChanged(`${Number.NEGATIVE_INFINITY}`);\n } else if (value === 'i' || value === 'infinity') {\n onGotoValueInputChanged(`${Number.POSITIVE_INFINITY}`);\n }\n }}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n );\n case TableUtils.dataType.DATETIME:\n return (\n <div className=\"goto-value-date-time-input\">\n <DateTimeInput\n ref={gotoValueInputRef}\n className={classNames(\n 'form-control',\n 'goto-value-date-time-input',\n {\n 'is-invalid': gotoValueError !== '',\n }\n )}\n defaultValue={gotoValue}\n onChange={onGotoValueInputChanged}\n onSubmit={handleGotoValueKeySubmit}\n aria-label=\"Value Input\"\n />\n </div>\n );\n case TableUtils.dataType.STRING:\n return (\n <>\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n onGotoValueSelectedFilterChanged(\n event.target.value as FilterTypeValue\n );\n }}\n value={gotoValueFilter}\n aria-label=\"filter-type-select\"\n >\n <option\n key={FilterType.eqIgnoreCase}\n value={FilterType.eqIgnoreCase}\n >\n Equals (case-insensitive)\n </option>\n <option\n key={FilterType.containsIgnoreCase}\n value={FilterType.containsIgnoreCase}\n >\n Contains (case-insensitive)\n </option>\n <option key={FilterType.eq} value={FilterType.eq}>\n Equals\n </option>\n <option key={FilterType.contains} value={FilterType.contains}>\n Contains\n </option>\n </select>\n </div>\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n </>\n );\n case TableUtils.dataType.BOOLEAN:\n return (\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n onGotoValueInputChanged(event.target.value);\n }}\n value={gotoValue}\n aria-label=\"Value Input\"\n >\n <option aria-label=\"null value\" key=\"null\" value=\"\" />\n <option key=\"true\" value=\"true\">\n true\n </option>\n <option key=\"false\" value=\"false\">\n false\n </option>\n </select>\n </div>\n );\n default:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className=\"form-control\"\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n );\n }\n };\n return (\n <IrisGridBottomBar\n isShown={isShown}\n className={classNames('goto-row')}\n onEntering={onEntering}\n onEntered={() => {\n onEntered();\n selectInput();\n }}\n onExiting={onExiting}\n onExited={onExited}\n >\n <>\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': !isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(true)}\n onFocus={() => setIsGotoRowActive(true)}\n role=\"group\"\n >\n <label className=\"goto-row-text\" htmlFor={gotoRowInputId}>\n Go to row\n </label>\n <div className=\"goto-row-input\">\n <input\n ref={gotoRowInputRef}\n data-testid=\"goto-row-input\"\n type=\"number\"\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoRowSubmit();\n }\n }}\n className={classNames('form-control', {\n 'is-invalid': gotoRowError !== '',\n })}\n placeholder=\"Row number\"\n onChange={event => {\n onGotoRowNumberChanged(event);\n }}\n value={gotoRow}\n id={gotoRowInputId}\n />\n </div>\n <div className=\"goto-row-text\">\n of {dh.i18n.NumberFormat.format(DEFAULT_FORMAT_STRING, rowCount)}\n </div>\n {gotoRowError && <div className=\"text-danger\">{gotoRowError}</div>}\n </div>\n <div className=\"goto-row-close\">\n <Button kind=\"ghost\" onClick={onClose}>\n <FontAwesomeIcon icon={vsClose} style={{ marginRight: '0' }} />\n </Button>\n </div>\n </div>\n {model.isSeekRowAvailable && (\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(false)}\n onFocus={() => setIsGotoRowActive(false)}\n role=\"group\"\n >\n <div className=\"goto-row-text\">Go to value</div>\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n const columnName = event.target.value;\n onGotoValueSelectedColumnNameChanged(columnName);\n }}\n value={gotoValueSelectedColumnName}\n aria-label=\"column-name-select\"\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </select>\n </div>\n\n {renderValueInput()}\n\n <div>\n <Button\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(true);\n }}\n >\n <FontAwesomeIcon icon={vsArrowUp} />\n </Button>\n <Button\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(false);\n }}\n >\n <FontAwesomeIcon icon={vsArrowDown} />\n </Button>\n </div>\n {gotoValueError && (\n <div className=\"text-danger\">{gotoValueError}</div>\n )}\n </div>\n </div>\n )}\n </>\n </IrisGridBottomBar>\n );\n}\n\nexport default GotoRow;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GotoRow.js","names":["FontAwesomeIcon","vsClose","vsArrowUp","vsArrowDown","React","useEffect","useMemo","useRef","useState","Type","FilterType","Button","DateTimeInput","TableUtils","classNames","shortid","IrisGridBottomBar","isIrisGridProxyModel","model","undefined","DEFAULT_FORMAT_STRING","GotoRow","gotoRow","gotoRowError","gotoValueError","onGotoRowSubmit","isShown","onEntering","onEntered","onExiting","onExited","onGotoRowNumberChanged","onClose","gotoValueSelectedColumnName","gotoValue","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","gotoRowInputRef","gotoValueInputRef","isGotoRowActive","setIsGotoRowActive","columns","table","dh","rowCount","gotoRowInputId","handleGotoValueNumberKeyDown","e","key","stopPropagation","preventDefault","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","onGotoValueInputChanged","handleGotoValueKeySubmit","shiftKey","index","getColumnIndexByName","selectedColumn","columnType","type","normalizedType","getNormalizedType","value","selectInput","document","activeElement","current","select","renderValueInput","dataType","DECIMAL","INT","target","toLowerCase","test","DATETIME","STRING","event","eqIgnoreCase","containsIgnoreCase","eq","contains","BOOLEAN","i18n","NumberFormat","format","marginRight","isSeekRowAvailable","columnName","map","column","name"],"sources":["../src/GotoRow.tsx"],"sourcesContent":["import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';\nimport React, {\n ChangeEvent,\n KeyboardEvent,\n ReactElement,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { Column } from '@deephaven/jsapi-types';\nimport {\n Type as FilterType,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { Button, DateTimeInput } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport classNames from 'classnames';\nimport './GotoRow.scss';\nimport shortid from 'shortid';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridProxyModel from './IrisGridProxyModel';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport { ColumnName } from './CommonTypes';\n\nfunction isIrisGridProxyModel(\n model: IrisGridModel\n): model is IrisGridProxyModel {\n return (model as IrisGridProxyModel).model !== undefined;\n}\n\nconst DEFAULT_FORMAT_STRING = '###,##0';\n\ninterface GotoRowProps {\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n onGotoRowSubmit: () => void;\n model: IrisGridModel;\n onGotoRowNumberChanged: (event: ChangeEvent<HTMLInputElement>) => void;\n onClose: () => void;\n isShown: boolean;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValue: string;\n gotoValueFilter: FilterTypeValue;\n onGotoValueSelectedColumnNameChanged: (columnName: ColumnName) => void;\n onGotoValueSelectedFilterChanged: (filter: FilterTypeValue) => void;\n onGotoValueChanged: (input: string) => void;\n onGotoValueSubmit: (isBackward?: boolean) => void;\n}\n\nfunction GotoRow({\n gotoRow,\n gotoRowError,\n gotoValueError,\n onGotoRowSubmit,\n isShown,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n model,\n onGotoRowNumberChanged,\n onClose,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueFilter,\n onGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged,\n onGotoValueChanged,\n onGotoValueSubmit,\n}: GotoRowProps): ReactElement {\n const gotoRowInputRef = useRef<HTMLInputElement>(null);\n const gotoValueInputRef = useRef<HTMLInputElement>(null);\n\n const [isGotoRowActive, setIsGotoRowActive] = useState(false);\n let columns: Column[] = [];\n\n if (isIrisGridProxyModel(model) && model.table !== undefined) {\n ({ columns } = model.table);\n }\n\n const { dh, rowCount } = model;\n\n const gotoRowInputId = useMemo(() => `goto-row-input-${shortid()}`, []);\n\n const handleGotoValueNumberKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n } else if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n (gotoValue === `${Number.POSITIVE_INFINITY}` ||\n gotoValue === `${Number.NEGATIVE_INFINITY}`)\n ) {\n onGotoValueInputChanged('');\n }\n };\n\n const handleGotoValueKeySubmit = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit(e.shiftKey);\n }\n };\n\n const index = model.getColumnIndexByName(gotoValueSelectedColumnName);\n\n const selectedColumn = columns[index ?? 0];\n\n const columnType = selectedColumn?.type;\n\n const normalizedType = TableUtils.getNormalizedType(columnType);\n const onGotoValueInputChanged = (value?: string) => {\n onGotoValueChanged(value ?? '');\n };\n const selectInput = () => {\n // when row changes without focus (i.e. via context menu), re-select input\n if (isGotoRowActive && document.activeElement !== gotoRowInputRef.current) {\n gotoRowInputRef.current?.select();\n } else if (\n !isGotoRowActive &&\n document.activeElement !== gotoValueInputRef.current\n ) {\n gotoValueInputRef.current?.select();\n }\n };\n useEffect(selectInput, [isGotoRowActive, gotoRow, gotoValue]);\n\n const renderValueInput = () => {\n switch (normalizedType) {\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueNumberKeyDown}\n placeholder=\"value\"\n onChange={e => {\n const value = e.target.value.toLowerCase();\n // regex tests for\n if (/^-?[0-9]*\\.?[0-9]*$/.test(e.target.value)) {\n onGotoValueInputChanged(e.target.value);\n } else if (value === '-i' || value === '-infinity') {\n onGotoValueInputChanged(`${Number.NEGATIVE_INFINITY}`);\n } else if (value === 'i' || value === 'infinity') {\n onGotoValueInputChanged(`${Number.POSITIVE_INFINITY}`);\n }\n }}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n );\n case TableUtils.dataType.DATETIME:\n return (\n <div className=\"goto-value-date-time-input\">\n <DateTimeInput\n ref={gotoValueInputRef}\n className={classNames(\n 'form-control',\n 'goto-value-date-time-input',\n {\n 'is-invalid': gotoValueError !== '',\n }\n )}\n defaultValue={gotoValue}\n onChange={onGotoValueInputChanged}\n onSubmit={handleGotoValueKeySubmit}\n aria-label=\"Value Input\"\n />\n </div>\n );\n case TableUtils.dataType.STRING:\n return (\n <>\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n onGotoValueSelectedFilterChanged(\n event.target.value as FilterTypeValue\n );\n }}\n value={gotoValueFilter}\n aria-label=\"filter-type-select\"\n >\n <option\n key={FilterType.eqIgnoreCase}\n value={FilterType.eqIgnoreCase}\n >\n Equals (case-insensitive)\n </option>\n <option\n key={FilterType.containsIgnoreCase}\n value={FilterType.containsIgnoreCase}\n >\n Contains (case-insensitive)\n </option>\n <option key={FilterType.eq} value={FilterType.eq}>\n Equals\n </option>\n <option key={FilterType.contains} value={FilterType.contains}>\n Contains\n </option>\n </select>\n </div>\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n </>\n );\n case TableUtils.dataType.BOOLEAN:\n return (\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n onGotoValueInputChanged(event.target.value);\n }}\n value={gotoValue}\n aria-label=\"Value Input\"\n >\n <option aria-label=\"null value\" key=\"null\" value=\"\" />\n <option key=\"true\" value=\"true\">\n true\n </option>\n <option key=\"false\" value=\"false\">\n false\n </option>\n </select>\n </div>\n );\n default:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className=\"form-control\"\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n );\n }\n };\n return (\n <IrisGridBottomBar\n isShown={isShown}\n className={classNames('goto-row')}\n onEntering={onEntering}\n onEntered={() => {\n onEntered();\n selectInput();\n }}\n onExiting={onExiting}\n onExited={onExited}\n >\n <>\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': !isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(true)}\n onFocus={() => setIsGotoRowActive(true)}\n role=\"group\"\n >\n <label className=\"goto-row-text\" htmlFor={gotoRowInputId}>\n Go to row\n </label>\n <div className=\"goto-row-input\">\n <input\n ref={gotoRowInputRef}\n data-testid=\"goto-row-input\"\n type=\"number\"\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoRowSubmit();\n }\n }}\n className={classNames('form-control', {\n 'is-invalid': gotoRowError !== '',\n })}\n placeholder=\"Row number\"\n onChange={event => {\n onGotoRowNumberChanged(event);\n }}\n value={gotoRow}\n id={gotoRowInputId}\n />\n </div>\n <div className=\"goto-row-text\">\n of {dh.i18n.NumberFormat.format(DEFAULT_FORMAT_STRING, rowCount)}\n </div>\n {gotoRowError && <div className=\"text-danger\">{gotoRowError}</div>}\n </div>\n <div className=\"goto-row-close\">\n <Button kind=\"ghost\" onClick={onClose}>\n <FontAwesomeIcon icon={vsClose} style={{ marginRight: '0' }} />\n </Button>\n </div>\n </div>\n {model.isSeekRowAvailable && (\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(false)}\n onFocus={() => setIsGotoRowActive(false)}\n role=\"group\"\n >\n <div className=\"goto-row-text\">Go to value</div>\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n const columnName = event.target.value;\n onGotoValueSelectedColumnNameChanged(columnName);\n }}\n value={gotoValueSelectedColumnName}\n aria-label=\"column-name-select\"\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </select>\n </div>\n\n {renderValueInput()}\n\n <div>\n <Button\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(true);\n }}\n >\n <FontAwesomeIcon icon={vsArrowUp} />\n </Button>\n <Button\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(false);\n }}\n >\n <FontAwesomeIcon icon={vsArrowDown} />\n </Button>\n </div>\n {gotoValueError && (\n <div className=\"text-danger\">{gotoValueError}</div>\n )}\n </div>\n </div>\n )}\n </>\n </IrisGridBottomBar>\n );\n}\n\nexport default GotoRow;\n"],"mappings":"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"}
|