@deephaven/dashboard-core-plugins 1.22.1 → 1.22.2-alpha-pivot-builder.0
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/ChartBuilderPlugin.js +8 -15
- package/dist/ChartBuilderPlugin.js.map +1 -1
- package/dist/ChartPanelPlugin.js +13 -6
- package/dist/ChartPanelPlugin.js.map +1 -1
- package/dist/ChartWidgetPlugin.js +11 -4
- package/dist/ChartWidgetPlugin.js.map +1 -1
- package/dist/ConsolePlugin.js +38 -46
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.js +63 -44
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPanelPlugin.js +3 -5
- package/dist/GridPanelPlugin.js.map +1 -1
- package/dist/GridWidgetPlugin.d.ts +11 -1
- package/dist/GridWidgetPlugin.d.ts.map +1 -1
- package/dist/GridWidgetPlugin.js +48 -30
- package/dist/GridWidgetPlugin.js.map +1 -1
- package/dist/LinkerPlugin.js +3 -5
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/MarkdownPlugin.js +18 -17
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPanelPlugin.js +3 -5
- package/dist/PandasPanelPlugin.js.map +1 -1
- package/dist/PandasWidgetPlugin.js +3 -7
- package/dist/PandasWidgetPlugin.js.map +1 -1
- package/dist/TablePluginWrapper.js +8 -10
- package/dist/TablePluginWrapper.js.map +1 -1
- package/dist/WidgetLoaderPlugin.js +24 -29
- package/dist/WidgetLoaderPlugin.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +63 -79
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +32 -58
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js +4 -5
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js +7 -10
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js +8 -12
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/linker/Linker.js +100 -192
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerLink.js +23 -31
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.js +65 -66
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.js +6 -14
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js +4 -6
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.js +7 -9
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.js +136 -220
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/ChartPanelUtils.js +3 -4
- package/dist/panels/ChartPanelUtils.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.js +33 -52
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.js +68 -130
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/CorePanel.js +6 -18
- package/dist/panels/CorePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +109 -165
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.js +30 -55
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.js +81 -141
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js +68 -87
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.js +45 -68
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +28 -6
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +224 -280
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/IrisGridPanelTooltip.js +1 -3
- package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
- package/dist/panels/LogPanel.js +6 -13
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebook.js +28 -50
- package/dist/panels/MarkdownNotebook.js.map +1 -1
- package/dist/panels/MarkdownPanel.js +19 -38
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.js +157 -292
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.js +5 -15
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/PandasReloadButton.js +1 -3
- package/dist/panels/PandasReloadButton.js.map +1 -1
- package/dist/panels/WidgetPanel.js +42 -51
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js +6 -10
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/useConfigureRuff.js +8 -9
- package/dist/useConfigureRuff.js.map +1 -1
- package/dist/useDashboardColumnFilters.js +4 -7
- package/dist/useDashboardColumnFilters.js.map +1 -1
- package/dist/useGridLinker.js +9 -16
- package/dist/useGridLinker.js.map +1 -1
- package/dist/useIrisGridModel.d.ts +2 -2
- package/dist/useIrisGridModel.d.ts.map +1 -1
- package/dist/useIrisGridModel.js +34 -6
- package/dist/useIrisGridModel.js.map +1 -1
- package/dist/useTablePlugin.js +27 -14
- package/dist/useTablePlugin.js.map +1 -1
- package/package.json +24 -24
|
@@ -36,9 +36,7 @@ class FilterSetManager extends Component {
|
|
|
36
36
|
_defineProperty(this, "dropdownRef", /*#__PURE__*/React.createRef());
|
|
37
37
|
_defineProperty(this, "editDropdownRef", /*#__PURE__*/React.createRef());
|
|
38
38
|
_defineProperty(this, "isRenamingExistingSet", memoizeOne((filterSets, renameSet) => renameSet !== undefined && filterSets.some(_ref => {
|
|
39
|
-
var
|
|
40
|
-
id
|
|
41
|
-
} = _ref;
|
|
39
|
+
var id = _ref.id;
|
|
42
40
|
return id === renameSet.id;
|
|
43
41
|
})));
|
|
44
42
|
this.handleSettingsCancel = this.handleSettingsCancel.bind(this);
|
|
@@ -67,9 +65,7 @@ class FilterSetManager extends Component {
|
|
|
67
65
|
};
|
|
68
66
|
}
|
|
69
67
|
componentDidMount() {
|
|
70
|
-
var
|
|
71
|
-
isValueShown
|
|
72
|
-
} = this.props;
|
|
68
|
+
var isValueShown = this.props.isValueShown;
|
|
73
69
|
if (isValueShown) {
|
|
74
70
|
this.updateSelectedId();
|
|
75
71
|
} else {
|
|
@@ -77,13 +73,10 @@ class FilterSetManager extends Component {
|
|
|
77
73
|
}
|
|
78
74
|
}
|
|
79
75
|
componentDidUpdate(prevProps, prevState) {
|
|
80
|
-
var
|
|
81
|
-
isValueShown,
|
|
82
|
-
filterSets
|
|
83
|
-
|
|
84
|
-
var {
|
|
85
|
-
modifiedFilterSets
|
|
86
|
-
} = this.state;
|
|
76
|
+
var _this$props = this.props,
|
|
77
|
+
isValueShown = _this$props.isValueShown,
|
|
78
|
+
filterSets = _this$props.filterSets;
|
|
79
|
+
var modifiedFilterSets = this.state.modifiedFilterSets;
|
|
87
80
|
if (prevProps.isValueShown && !isValueShown) {
|
|
88
81
|
this.initSettingsScreen();
|
|
89
82
|
}
|
|
@@ -93,9 +86,7 @@ class FilterSetManager extends Component {
|
|
|
93
86
|
if (filterSets !== prevProps.filterSets) {
|
|
94
87
|
if (!isValueShown && filterSets.length > 0 && prevProps.filterSets.length === 0 && modifiedFilterSets.length === 0) {
|
|
95
88
|
// Filter set added from another panel, flip from the settings side/initial screen to the value side
|
|
96
|
-
var
|
|
97
|
-
onChange
|
|
98
|
-
} = this.props;
|
|
89
|
+
var onChange = this.props.onChange;
|
|
99
90
|
onChange({
|
|
100
91
|
isValueShown: true,
|
|
101
92
|
selectedId: filterSets[0].id
|
|
@@ -106,10 +97,9 @@ class FilterSetManager extends Component {
|
|
|
106
97
|
}
|
|
107
98
|
}
|
|
108
99
|
initSettingsScreen() {
|
|
109
|
-
var
|
|
110
|
-
filterSets,
|
|
111
|
-
selectedId
|
|
112
|
-
} = this.props;
|
|
100
|
+
var _this$props2 = this.props,
|
|
101
|
+
filterSets = _this$props2.filterSets,
|
|
102
|
+
selectedId = _this$props2.selectedId;
|
|
113
103
|
log.debug('initSettingsScreen', filterSets, selectedId);
|
|
114
104
|
this.setState({
|
|
115
105
|
modifiedFilterSets: [...filterSets],
|
|
@@ -119,20 +109,17 @@ class FilterSetManager extends Component {
|
|
|
119
109
|
|
|
120
110
|
// Update selected id without applying the new set on filterSets change
|
|
121
111
|
updateSelectedId() {
|
|
122
|
-
var
|
|
123
|
-
isValueShown,
|
|
124
|
-
filterSets,
|
|
125
|
-
selectedId,
|
|
126
|
-
onChange
|
|
127
|
-
} = this.props;
|
|
112
|
+
var _this$props3 = this.props,
|
|
113
|
+
isValueShown = _this$props3.isValueShown,
|
|
114
|
+
filterSets = _this$props3.filterSets,
|
|
115
|
+
selectedId = _this$props3.selectedId,
|
|
116
|
+
onChange = _this$props3.onChange;
|
|
128
117
|
log.debug('updateSelectedId', filterSets, selectedId);
|
|
129
118
|
if (!isValueShown) {
|
|
130
119
|
return;
|
|
131
120
|
}
|
|
132
121
|
if (!filterSets.some(_ref2 => {
|
|
133
|
-
var
|
|
134
|
-
id
|
|
135
|
-
} = _ref2;
|
|
122
|
+
var id = _ref2.id;
|
|
136
123
|
return id === selectedId;
|
|
137
124
|
})) {
|
|
138
125
|
// Update the selection if selectedId doesn't exist in the list
|
|
@@ -151,10 +138,9 @@ class FilterSetManager extends Component {
|
|
|
151
138
|
}
|
|
152
139
|
handleFilterChange(eventTargetValue) {
|
|
153
140
|
var selectedId = eventTargetValue;
|
|
154
|
-
var
|
|
155
|
-
isValueShown,
|
|
156
|
-
onChange
|
|
157
|
-
} = this.props;
|
|
141
|
+
var _this$props4 = this.props,
|
|
142
|
+
isValueShown = _this$props4.isValueShown,
|
|
143
|
+
onChange = _this$props4.onChange;
|
|
158
144
|
this.applyFilterSet(selectedId);
|
|
159
145
|
onChange({
|
|
160
146
|
isValueShown,
|
|
@@ -162,17 +148,14 @@ class FilterSetManager extends Component {
|
|
|
162
148
|
});
|
|
163
149
|
}
|
|
164
150
|
handleFilterApply() {
|
|
165
|
-
var
|
|
166
|
-
selectedId
|
|
167
|
-
} = this.props;
|
|
151
|
+
var selectedId = this.props.selectedId;
|
|
168
152
|
this.applyFilterSet(selectedId);
|
|
169
153
|
}
|
|
170
154
|
handleSettingsCancel() {
|
|
171
|
-
var
|
|
172
|
-
onChange,
|
|
173
|
-
selectedId,
|
|
174
|
-
filterSets
|
|
175
|
-
} = this.props;
|
|
155
|
+
var _this$props5 = this.props,
|
|
156
|
+
onChange = _this$props5.onChange,
|
|
157
|
+
selectedId = _this$props5.selectedId,
|
|
158
|
+
filterSets = _this$props5.filterSets;
|
|
176
159
|
this.setState({
|
|
177
160
|
modifiedFilterSets: []
|
|
178
161
|
});
|
|
@@ -186,14 +169,12 @@ class FilterSetManager extends Component {
|
|
|
186
169
|
}
|
|
187
170
|
}
|
|
188
171
|
handleSettingsSave() {
|
|
189
|
-
var
|
|
190
|
-
onChange,
|
|
191
|
-
onUpdateSets
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
editId
|
|
196
|
-
} = this.state;
|
|
172
|
+
var _this$props6 = this.props,
|
|
173
|
+
onChange = _this$props6.onChange,
|
|
174
|
+
onUpdateSets = _this$props6.onUpdateSets;
|
|
175
|
+
var _this$state = this.state,
|
|
176
|
+
modifiedFilterSets = _this$state.modifiedFilterSets,
|
|
177
|
+
editId = _this$state.editId;
|
|
197
178
|
this.setState({
|
|
198
179
|
modifiedFilterSets: []
|
|
199
180
|
});
|
|
@@ -208,9 +189,7 @@ class FilterSetManager extends Component {
|
|
|
208
189
|
}
|
|
209
190
|
}
|
|
210
191
|
handleCaptureNewSet() {
|
|
211
|
-
var
|
|
212
|
-
getFilterState
|
|
213
|
-
} = this.props;
|
|
192
|
+
var getFilterState = this.props.getFilterState;
|
|
214
193
|
FilterSetManager.animateScreenFlash();
|
|
215
194
|
var id = nanoid();
|
|
216
195
|
var panels = getFilterState();
|
|
@@ -238,20 +217,17 @@ class FilterSetManager extends Component {
|
|
|
238
217
|
}
|
|
239
218
|
getNameError(nameInputValue) {
|
|
240
219
|
var _nameInputValue$trim;
|
|
241
|
-
var
|
|
242
|
-
renameSet,
|
|
243
|
-
modifiedFilterSets
|
|
244
|
-
} = this.state;
|
|
220
|
+
var _this$state2 = this.state,
|
|
221
|
+
renameSet = _this$state2.renameSet,
|
|
222
|
+
modifiedFilterSets = _this$state2.modifiedFilterSets;
|
|
245
223
|
var trimmedName = (_nameInputValue$trim = nameInputValue === null || nameInputValue === void 0 ? void 0 : nameInputValue.trim()) !== null && _nameInputValue$trim !== void 0 ? _nameInputValue$trim : '';
|
|
246
224
|
if (trimmedName.length === 0) {
|
|
247
225
|
log.debug('Name cannot be empty', trimmedName);
|
|
248
226
|
return 'Name cannot be empty';
|
|
249
227
|
}
|
|
250
228
|
if (renameSet !== undefined && modifiedFilterSets.some(_ref3 => {
|
|
251
|
-
var
|
|
252
|
-
|
|
253
|
-
id
|
|
254
|
-
} = _ref3;
|
|
229
|
+
var title = _ref3.title,
|
|
230
|
+
id = _ref3.id;
|
|
255
231
|
return title === trimmedName && id !== renameSet.id;
|
|
256
232
|
})) {
|
|
257
233
|
log.debug('Set with this name already exists', trimmedName);
|
|
@@ -261,12 +237,11 @@ class FilterSetManager extends Component {
|
|
|
261
237
|
}
|
|
262
238
|
handleRenameConfirm() {
|
|
263
239
|
var _nameInputValue$trim2;
|
|
264
|
-
var
|
|
265
|
-
nameInputValue,
|
|
266
|
-
renameSet,
|
|
267
|
-
modifiedFilterSets,
|
|
268
|
-
restoreFullState
|
|
269
|
-
} = this.state;
|
|
240
|
+
var _this$state3 = this.state,
|
|
241
|
+
nameInputValue = _this$state3.nameInputValue,
|
|
242
|
+
renameSet = _this$state3.renameSet,
|
|
243
|
+
modifiedFilterSets = _this$state3.modifiedFilterSets,
|
|
244
|
+
restoreFullState = _this$state3.restoreFullState;
|
|
270
245
|
if (renameSet === undefined) {
|
|
271
246
|
log.error('Renamed set undefined.');
|
|
272
247
|
return;
|
|
@@ -285,9 +260,7 @@ class FilterSetManager extends Component {
|
|
|
285
260
|
restoreFullState
|
|
286
261
|
});
|
|
287
262
|
var selectedIndex = modifiedFilterSets.findIndex(_ref4 => {
|
|
288
|
-
var
|
|
289
|
-
id
|
|
290
|
-
} = _ref4;
|
|
263
|
+
var id = _ref4.id;
|
|
291
264
|
return id === renameSet.id;
|
|
292
265
|
});
|
|
293
266
|
var updatedModifiedFilterSets = [...modifiedFilterSets];
|
|
@@ -306,14 +279,10 @@ class FilterSetManager extends Component {
|
|
|
306
279
|
}
|
|
307
280
|
handleSetDelete() {
|
|
308
281
|
this.setState(state => {
|
|
309
|
-
var
|
|
310
|
-
|
|
311
|
-
modifiedFilterSets: prevFilterSets
|
|
312
|
-
} = state;
|
|
282
|
+
var editId = state.editId,
|
|
283
|
+
prevFilterSets = state.modifiedFilterSets;
|
|
313
284
|
var selectedIndex = prevFilterSets.findIndex(_ref5 => {
|
|
314
|
-
var
|
|
315
|
-
id
|
|
316
|
-
} = _ref5;
|
|
285
|
+
var id = _ref5.id;
|
|
317
286
|
return id === editId;
|
|
318
287
|
});
|
|
319
288
|
if (selectedIndex < 0) {
|
|
@@ -321,9 +290,7 @@ class FilterSetManager extends Component {
|
|
|
321
290
|
return null;
|
|
322
291
|
}
|
|
323
292
|
var modifiedFilterSets = prevFilterSets.filter(_ref6 => {
|
|
324
|
-
var
|
|
325
|
-
id
|
|
326
|
-
} = _ref6;
|
|
293
|
+
var id = _ref6.id;
|
|
327
294
|
return id !== editId;
|
|
328
295
|
});
|
|
329
296
|
var newSelectedIndex = Math.max(0, Math.min(modifiedFilterSets.length - 1, selectedIndex - 1));
|
|
@@ -337,25 +304,19 @@ class FilterSetManager extends Component {
|
|
|
337
304
|
});
|
|
338
305
|
}
|
|
339
306
|
handleSetUpdate() {
|
|
340
|
-
var
|
|
341
|
-
getFilterState
|
|
342
|
-
} = this.props;
|
|
307
|
+
var getFilterState = this.props.getFilterState;
|
|
343
308
|
FilterSetManager.animateScreenFlash();
|
|
344
309
|
var panels = getFilterState();
|
|
345
310
|
this.setState(_ref7 => {
|
|
346
|
-
var
|
|
347
|
-
|
|
348
|
-
editId
|
|
349
|
-
} = _ref7;
|
|
311
|
+
var prevFilterSets = _ref7.modifiedFilterSets,
|
|
312
|
+
editId = _ref7.editId;
|
|
350
313
|
if (editId === undefined) {
|
|
351
314
|
log.error('Filter for update not selected.');
|
|
352
315
|
return null;
|
|
353
316
|
}
|
|
354
317
|
var modifiedFilterSets = [...prevFilterSets];
|
|
355
318
|
var selectedSetIndex = modifiedFilterSets.findIndex(_ref8 => {
|
|
356
|
-
var
|
|
357
|
-
id
|
|
358
|
-
} = _ref8;
|
|
319
|
+
var id = _ref8.id;
|
|
359
320
|
return id === editId;
|
|
360
321
|
});
|
|
361
322
|
if (selectedSetIndex < 0) {
|
|
@@ -374,24 +335,19 @@ class FilterSetManager extends Component {
|
|
|
374
335
|
}
|
|
375
336
|
handleSetEdit() {
|
|
376
337
|
this.setState(_ref9 => {
|
|
377
|
-
var
|
|
378
|
-
|
|
379
|
-
modifiedFilterSets
|
|
380
|
-
} = _ref9;
|
|
338
|
+
var editId = _ref9.editId,
|
|
339
|
+
modifiedFilterSets = _ref9.modifiedFilterSets;
|
|
381
340
|
var selectedSet = modifiedFilterSets.find(_ref0 => {
|
|
382
|
-
var
|
|
383
|
-
id
|
|
384
|
-
} = _ref0;
|
|
341
|
+
var id = _ref0.id;
|
|
385
342
|
return id === editId;
|
|
386
343
|
});
|
|
387
344
|
if (selectedSet === undefined) {
|
|
388
345
|
log.error('Could not find selected set', editId, modifiedFilterSets);
|
|
389
346
|
return null;
|
|
390
347
|
}
|
|
391
|
-
var
|
|
392
|
-
|
|
393
|
-
restoreFullState = false
|
|
394
|
-
} = selectedSet;
|
|
348
|
+
var title = selectedSet.title,
|
|
349
|
+
_selectedSet$restoreF = selectedSet.restoreFullState,
|
|
350
|
+
restoreFullState = _selectedSet$restoreF === void 0 ? false : _selectedSet$restoreF;
|
|
395
351
|
return {
|
|
396
352
|
nameInputValue: title,
|
|
397
353
|
nameInputError: undefined,
|
|
@@ -402,10 +358,9 @@ class FilterSetManager extends Component {
|
|
|
402
358
|
}
|
|
403
359
|
handleSettingsClick(event) {
|
|
404
360
|
event.stopPropagation();
|
|
405
|
-
var
|
|
406
|
-
onChange,
|
|
407
|
-
selectedId
|
|
408
|
-
} = this.props;
|
|
361
|
+
var _this$props7 = this.props,
|
|
362
|
+
onChange = _this$props7.onChange,
|
|
363
|
+
selectedId = _this$props7.selectedId;
|
|
409
364
|
onChange({
|
|
410
365
|
isValueShown: false,
|
|
411
366
|
selectedId
|
|
@@ -419,9 +374,7 @@ class FilterSetManager extends Component {
|
|
|
419
374
|
}
|
|
420
375
|
}
|
|
421
376
|
handleNameInputChange(event) {
|
|
422
|
-
var
|
|
423
|
-
value: nameInputValue
|
|
424
|
-
} = event.target;
|
|
377
|
+
var nameInputValue = event.target.value;
|
|
425
378
|
var nameInputError = this.getNameError(nameInputValue);
|
|
426
379
|
this.setState({
|
|
427
380
|
nameInputValue,
|
|
@@ -429,9 +382,7 @@ class FilterSetManager extends Component {
|
|
|
429
382
|
});
|
|
430
383
|
}
|
|
431
384
|
handleNameInputKeyPress(event) {
|
|
432
|
-
var
|
|
433
|
-
key
|
|
434
|
-
} = event;
|
|
385
|
+
var key = event.key;
|
|
435
386
|
if (key === 'Enter') {
|
|
436
387
|
event.preventDefault();
|
|
437
388
|
this.handleRenameConfirm();
|
|
@@ -439,24 +390,19 @@ class FilterSetManager extends Component {
|
|
|
439
390
|
}
|
|
440
391
|
isNameInputScreen() {
|
|
441
392
|
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state;
|
|
442
|
-
var
|
|
443
|
-
renameSet
|
|
444
|
-
} = state;
|
|
393
|
+
var renameSet = state.renameSet;
|
|
445
394
|
return renameSet !== undefined;
|
|
446
395
|
}
|
|
447
396
|
applyFilterSet(selectedId) {
|
|
448
|
-
var
|
|
449
|
-
onApply,
|
|
450
|
-
filterSets
|
|
451
|
-
} = this.props;
|
|
397
|
+
var _this$props8 = this.props,
|
|
398
|
+
onApply = _this$props8.onApply,
|
|
399
|
+
filterSets = _this$props8.filterSets;
|
|
452
400
|
if (selectedId === undefined) {
|
|
453
401
|
log.debug('No filter selected');
|
|
454
402
|
return;
|
|
455
403
|
}
|
|
456
404
|
var filterSet = filterSets.find(_ref1 => {
|
|
457
|
-
var
|
|
458
|
-
id
|
|
459
|
-
} = _ref1;
|
|
405
|
+
var id = _ref1.id;
|
|
460
406
|
return id === selectedId;
|
|
461
407
|
});
|
|
462
408
|
if (filterSet === undefined) {
|
|
@@ -475,19 +421,17 @@ class FilterSetManager extends Component {
|
|
|
475
421
|
(_this$renameInputRef$ = this.renameInputRef.current) === null || _this$renameInputRef$ === void 0 || _this$renameInputRef$.focus();
|
|
476
422
|
}
|
|
477
423
|
render() {
|
|
478
|
-
var
|
|
479
|
-
nameInputValue,
|
|
480
|
-
nameInputError,
|
|
481
|
-
editId,
|
|
482
|
-
renameSet,
|
|
483
|
-
modifiedFilterSets,
|
|
484
|
-
restoreFullState
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
selectedId
|
|
490
|
-
} = this.props;
|
|
424
|
+
var _this$state4 = this.state,
|
|
425
|
+
nameInputValue = _this$state4.nameInputValue,
|
|
426
|
+
nameInputError = _this$state4.nameInputError,
|
|
427
|
+
editId = _this$state4.editId,
|
|
428
|
+
renameSet = _this$state4.renameSet,
|
|
429
|
+
modifiedFilterSets = _this$state4.modifiedFilterSets,
|
|
430
|
+
restoreFullState = _this$state4.restoreFullState;
|
|
431
|
+
var _this$props9 = this.props,
|
|
432
|
+
isValueShown = _this$props9.isValueShown,
|
|
433
|
+
filterSets = _this$props9.filterSets,
|
|
434
|
+
selectedId = _this$props9.selectedId;
|
|
491
435
|
var isNameInputScreen = this.isNameInputScreen();
|
|
492
436
|
var isRenamingExistingSet = this.isRenamingExistingSet(modifiedFilterSets, renameSet);
|
|
493
437
|
var isEmptyEditList = modifiedFilterSets.length === 0;
|
|
@@ -609,10 +553,8 @@ class FilterSetManager extends Component {
|
|
|
609
553
|
disabled: true,
|
|
610
554
|
children: EMPTY_LIST_PLACEHOLDER
|
|
611
555
|
}), modifiedFilterSets.map(_ref10 => {
|
|
612
|
-
var
|
|
613
|
-
|
|
614
|
-
title
|
|
615
|
-
} = _ref10;
|
|
556
|
+
var id = _ref10.id,
|
|
557
|
+
title = _ref10.title;
|
|
616
558
|
return /*#__PURE__*/_jsx("option", {
|
|
617
559
|
value: id,
|
|
618
560
|
children: title
|
|
@@ -686,10 +628,8 @@ class FilterSetManager extends Component {
|
|
|
686
628
|
disabled: true,
|
|
687
629
|
children: EMPTY_LIST_PLACEHOLDER
|
|
688
630
|
}), filterSets.map(_ref11 => {
|
|
689
|
-
var
|
|
690
|
-
|
|
691
|
-
title
|
|
692
|
-
} = _ref11;
|
|
631
|
+
var id = _ref11.id,
|
|
632
|
+
title = _ref11.title;
|
|
693
633
|
return /*#__PURE__*/_jsx("option", {
|
|
694
634
|
value: id,
|
|
695
635
|
children: title
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterSetManager.js","names":["React","Component","memoizeOne","nanoid","FontAwesomeIcon","vsEdit","vsGear","vsSave","vsCircleSlash","vsTrash","vsDeviceCamera","dhRefresh","dhNewCircleLargeFilled","vsCircleLargeFilled","vsArrowSmallUp","Log","Button","CardFlip","RadioGroup","Radio","Select","jsx","_jsx","jsxs","_jsxs","log","module","NAME_INPUT_PLACEHOLDER","EMPTY_LIST_PLACEHOLDER","FilterSetManager","animateScreenFlash","_document$querySelect","overlay","document","createElement","classList","add","addEventListener","remove","querySelector","appendChild","constructor","props","_defineProperty","createRef","filterSets","renameSet","undefined","some","_ref","id","handleSettingsCancel","bind","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleEditDropdownChange","handleFilterChange","handleFilterApply","handleCaptureNewSet","handleNameInputChange","handleNameInputKeyPress","handleRenameConfirm","handleRenameCancel","handleRestoreFullStateChange","handleSetDelete","handleSetEdit","handleSetUpdate","state","editId","nameInputValue","nameInputError","modifiedFilterSets","restoreFullState","componentDidMount","isValueShown","updateSelectedId","initSettingsScreen","componentDidUpdate","prevProps","prevState","isNameInputScreen","focusRenameInput","length","onChange","selectedId","debug","setState","_ref2","isEmptyList","eventTargetValue","applyFilterSet","onUpdateSets","getFilterState","panels","title","value","getNameError","_nameInputValue$trim","trimmedName","trim","_ref3","_nameInputValue$trim2","error","namedFilterSet","_objectSpread","selectedIndex","findIndex","_ref4","updatedModifiedFilterSets","push","prevFilterSets","_ref5","filter","_ref6","newSelectedIndex","Math","max","min","newSelectedId","_ref7","selectedSetIndex","_ref8","_ref9","selectedSet","find","_ref0","event","stopPropagation","target","dropdownRef","current","focusInput","key","preventDefault","arguments","onApply","filterSet","_ref1","_this$dropdownRef$cur","focus","_this$renameInputRef$","renameInputRef","render","isRenamingExistingSet","isEmptyEditList","isInitialScreen","isEditListScreen","captureSetIcon","className","children","icon","mask","transform","updateSetIcon","isFlipped","kind","onClick","type","placeholder","ref","onKeyPress","spellCheck","tooltip","concat","editDropdownRef","disabled","map","_ref10","_ref11"],"sources":["../../src/panels/FilterSetManager.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, {\n type ChangeEvent,\n Component,\n type ReactNode,\n type KeyboardEvent,\n type MouseEvent,\n} from 'react';\nimport memoizeOne from 'memoize-one';\nimport { nanoid } from 'nanoid';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n vsEdit,\n vsGear,\n vsSave,\n vsCircleSlash,\n vsTrash,\n vsDeviceCamera,\n dhRefresh,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsArrowSmallUp,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport {\n Button,\n CardFlip,\n RadioGroup,\n Radio,\n Select,\n} from '@deephaven/components';\n\nimport './FilterSetManager.scss';\n\nconst log = Log.module('FilterSetManager');\n\nexport interface FilterSetPanel {\n panelId?: string | string[] | null;\n type: string;\n id?: string;\n state: unknown;\n}\n\nexport interface FilterSet {\n id: string;\n title: string;\n panels: FilterSetPanel[];\n restoreFullState?: boolean;\n}\n\nexport interface ChangeHandlerArgs {\n isValueShown: boolean;\n selectedId?: string;\n}\n\ninterface FilterSetManagerProps {\n isValueShown: boolean;\n selectedId?: string;\n filterSets: FilterSet[];\n getFilterState: () => FilterSetPanel[];\n onChange: (args: ChangeHandlerArgs) => void;\n onApply: (filterSet: FilterSet) => void;\n onUpdateSets: (filterSets: FilterSet[], editId?: string) => void;\n}\n\ninterface FilterSetManagerState {\n nameInputValue: string;\n nameInputError?: string;\n editId?: string;\n renameSet?: FilterSet;\n // Unsaved set changes on the settings screen\n modifiedFilterSets: FilterSet[];\n restoreFullState: boolean;\n}\n\nconst NAME_INPUT_PLACEHOLDER = 'Enter name...';\n\nconst EMPTY_LIST_PLACEHOLDER = 'No Available Filter Sets';\n\nclass FilterSetManager extends Component<\n FilterSetManagerProps,\n FilterSetManagerState\n> {\n static animateScreenFlash(): void {\n const overlay = document.createElement('div');\n overlay.classList.add('screen-flash-overlay');\n overlay.addEventListener('animationend', () => {\n // Removing the element removes its event listeners\n overlay.remove();\n });\n document.querySelector('body')?.appendChild(overlay);\n }\n\n constructor(props: FilterSetManagerProps) {\n super(props);\n\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleEditDropdownChange = this.handleEditDropdownChange.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleCaptureNewSet = this.handleCaptureNewSet.bind(this);\n this.handleNameInputChange = this.handleNameInputChange.bind(this);\n this.handleNameInputKeyPress = this.handleNameInputKeyPress.bind(this);\n this.handleRenameConfirm = this.handleRenameConfirm.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRestoreFullStateChange =\n this.handleRestoreFullStateChange.bind(this);\n\n this.handleSetDelete = this.handleSetDelete.bind(this);\n this.handleSetEdit = this.handleSetEdit.bind(this);\n this.handleSetUpdate = this.handleSetUpdate.bind(this);\n\n this.state = {\n editId: undefined,\n renameSet: undefined,\n nameInputValue: '',\n nameInputError: undefined,\n modifiedFilterSets: [],\n restoreFullState: false,\n };\n }\n\n componentDidMount(): void {\n const { isValueShown } = this.props;\n if (isValueShown) {\n this.updateSelectedId();\n } else {\n this.initSettingsScreen();\n }\n }\n\n componentDidUpdate(\n prevProps: FilterSetManagerProps,\n prevState: FilterSetManagerState\n ): void {\n const { isValueShown, filterSets } = this.props;\n const { modifiedFilterSets } = this.state;\n\n if (prevProps.isValueShown && !isValueShown) {\n this.initSettingsScreen();\n }\n\n if (this.isNameInputScreen() && !this.isNameInputScreen(prevState)) {\n this.focusRenameInput();\n }\n\n if (filterSets !== prevProps.filterSets) {\n if (\n !isValueShown &&\n filterSets.length > 0 &&\n prevProps.filterSets.length === 0 &&\n modifiedFilterSets.length === 0\n ) {\n // Filter set added from another panel, flip from the settings side/initial screen to the value side\n const { onChange } = this.props;\n onChange({ isValueShown: true, selectedId: filterSets[0].id });\n } else {\n this.updateSelectedId();\n }\n }\n }\n\n private renameInputRef = React.createRef<HTMLInputElement>();\n\n private dropdownRef = React.createRef<HTMLSelectElement>();\n\n private editDropdownRef = React.createRef<HTMLSelectElement>();\n\n initSettingsScreen(): void {\n const { filterSets, selectedId } = this.props;\n log.debug('initSettingsScreen', filterSets, selectedId);\n this.setState({\n modifiedFilterSets: [...filterSets],\n editId: selectedId,\n });\n }\n\n // Update selected id without applying the new set on filterSets change\n updateSelectedId(): void {\n const { isValueShown, filterSets, selectedId, onChange } = this.props;\n log.debug('updateSelectedId', filterSets, selectedId);\n if (!isValueShown) {\n return;\n }\n if (!filterSets.some(({ id }) => id === selectedId)) {\n // Update the selection if selectedId doesn't exist in the list\n // Flip to the settings side for empty list to show the initial screen\n const isEmptyList = filterSets.length === 0;\n onChange({\n isValueShown: !isEmptyList,\n selectedId: isEmptyList ? undefined : filterSets[0].id,\n });\n }\n }\n\n handleEditDropdownChange(eventTargetValue: string): void {\n this.setState({ editId: eventTargetValue });\n }\n\n handleFilterChange(eventTargetValue: string): void {\n const selectedId = eventTargetValue;\n const { isValueShown, onChange } = this.props;\n this.applyFilterSet(selectedId);\n onChange({ isValueShown, selectedId });\n }\n\n handleFilterApply(): void {\n const { selectedId } = this.props;\n this.applyFilterSet(selectedId);\n }\n\n handleSettingsCancel(): void {\n const { onChange, selectedId, filterSets } = this.props;\n this.setState({ modifiedFilterSets: [] });\n // Flip the card to the filter set selection screen if the sets list isn't empty\n // Otherwise show the initial screen\n if (filterSets.length > 0) {\n onChange({ isValueShown: true, selectedId });\n }\n }\n\n handleSettingsSave(): void {\n const { onChange, onUpdateSets } = this.props;\n const { modifiedFilterSets, editId } = this.state;\n this.setState({ modifiedFilterSets: [] });\n log.debug('Update sets', modifiedFilterSets, editId);\n onUpdateSets(modifiedFilterSets);\n // Don't flip the card to the filter set selection screen if the updated sets list is empty\n if (modifiedFilterSets.length > 0) {\n onChange({ isValueShown: true, selectedId: editId });\n }\n }\n\n handleCaptureNewSet(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const id = nanoid();\n const panels = getFilterState();\n const renameSet = {\n id,\n title: '',\n panels,\n };\n log.debug('handleSetCreate', renameSet);\n this.setState({ nameInputValue: '', nameInputError: undefined, renameSet });\n }\n\n handleRenameCancel(): void {\n this.setState({ renameSet: undefined });\n }\n\n handleRestoreFullStateChange(value: string): void {\n this.setState({\n restoreFullState: value === 'true',\n });\n }\n\n getNameError(nameInputValue: string): string | undefined {\n const { renameSet, modifiedFilterSets } = this.state;\n const trimmedName = nameInputValue?.trim() ?? '';\n if (trimmedName.length === 0) {\n log.debug('Name cannot be empty', trimmedName);\n return 'Name cannot be empty';\n }\n\n if (\n renameSet !== undefined &&\n modifiedFilterSets.some(\n ({ title, id }) => title === trimmedName && id !== renameSet.id\n )\n ) {\n log.debug('Set with this name already exists', trimmedName);\n return 'Set with this name already exists';\n }\n\n return undefined;\n }\n\n handleRenameConfirm(): void {\n const { nameInputValue, renameSet, modifiedFilterSets, restoreFullState } =\n this.state;\n if (renameSet === undefined) {\n log.error('Renamed set undefined.');\n return;\n }\n const nameInputError = this.getNameError(nameInputValue);\n log.debug('handleRenameConfirm', nameInputValue, nameInputError);\n if (nameInputError !== undefined) {\n this.setState({ nameInputError });\n return;\n }\n const trimmedName = nameInputValue?.trim() ?? '';\n const namedFilterSet = {\n ...renameSet,\n title: trimmedName,\n restoreFullState,\n };\n const selectedIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === renameSet.id\n );\n const updatedModifiedFilterSets = [...modifiedFilterSets];\n\n if (selectedIndex >= 0) {\n updatedModifiedFilterSets[selectedIndex] = namedFilterSet;\n log.debug('Renamed existing set', updatedModifiedFilterSets);\n } else {\n updatedModifiedFilterSets.push(namedFilterSet);\n log.debug('Added new set to modified sets', updatedModifiedFilterSets);\n }\n\n this.setState({\n editId: namedFilterSet.id,\n modifiedFilterSets: updatedModifiedFilterSets,\n renameSet: undefined,\n });\n }\n\n handleSetDelete(): void {\n this.setState(state => {\n const { editId, modifiedFilterSets: prevFilterSets } = state;\n const selectedIndex = prevFilterSets.findIndex(({ id }) => id === editId);\n if (selectedIndex < 0) {\n log.error(\n 'Unable to find selected filterSet index',\n prevFilterSets,\n editId\n );\n return null;\n }\n const modifiedFilterSets = prevFilterSets.filter(\n ({ id }) => id !== editId\n );\n const newSelectedIndex = Math.max(\n 0,\n Math.min(modifiedFilterSets.length - 1, selectedIndex - 1)\n );\n const newSelectedId =\n modifiedFilterSets.length > 0\n ? modifiedFilterSets[newSelectedIndex].id\n : undefined;\n log.debug(\n 'Deleted selected set',\n editId,\n prevFilterSets,\n modifiedFilterSets\n );\n log.debug('New selection', newSelectedIndex, newSelectedId);\n return {\n modifiedFilterSets,\n editId: newSelectedId,\n };\n });\n }\n\n handleSetUpdate(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const panels = getFilterState();\n this.setState(({ modifiedFilterSets: prevFilterSets, editId }) => {\n if (editId === undefined) {\n log.error('Filter for update not selected.');\n return null;\n }\n const modifiedFilterSets = [...prevFilterSets];\n const selectedSetIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === editId\n );\n if (selectedSetIndex < 0) {\n log.error('Selected set for update not found.');\n return null;\n }\n // Clone selected set to avoid mutation of the props\n modifiedFilterSets[selectedSetIndex] = {\n ...modifiedFilterSets[selectedSetIndex],\n panels,\n };\n\n log.debug('Update set', modifiedFilterSets, panels);\n return {\n modifiedFilterSets,\n };\n });\n }\n\n handleSetEdit(): void {\n this.setState(({ editId, modifiedFilterSets }) => {\n const selectedSet = modifiedFilterSets.find(({ id }) => id === editId);\n if (selectedSet === undefined) {\n log.error('Could not find selected set', editId, modifiedFilterSets);\n return null;\n }\n const { title, restoreFullState = false } = selectedSet;\n return {\n nameInputValue: title,\n nameInputError: undefined,\n renameSet: selectedSet,\n restoreFullState,\n };\n });\n }\n\n handleSettingsClick(event: MouseEvent): void {\n event.stopPropagation();\n const { onChange, selectedId } = this.props;\n onChange({ isValueShown: false, selectedId });\n }\n\n handleBackgroundClick(event: MouseEvent): void {\n log.debug('handleBackgroundClick');\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n handleNameInputChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value: nameInputValue } = event.target;\n const nameInputError = this.getNameError(nameInputValue);\n this.setState({ nameInputValue, nameInputError });\n }\n\n handleNameInputKeyPress(event: KeyboardEvent): void {\n const { key } = event;\n if (key === 'Enter') {\n event.preventDefault();\n this.handleRenameConfirm();\n }\n }\n\n isNameInputScreen(state = this.state): boolean {\n const { renameSet } = state;\n return renameSet !== undefined;\n }\n\n isRenamingExistingSet = memoizeOne(\n (filterSets: FilterSet[], renameSet?: FilterSet): boolean =>\n renameSet !== undefined &&\n filterSets.some(({ id }) => id === renameSet.id)\n );\n\n applyFilterSet(selectedId?: string): void {\n const { onApply, filterSets } = this.props;\n if (selectedId === undefined) {\n log.debug('No filter selected');\n return;\n }\n const filterSet = filterSets.find(({ id }) => id === selectedId);\n if (filterSet === undefined) {\n log.debug('Selected id not found in filterSets', selectedId, filterSets);\n return;\n }\n log.debug('Apply filterSet', filterSet);\n onApply(filterSet);\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n focusRenameInput(): void {\n this.renameInputRef.current?.focus();\n }\n\n render(): ReactNode {\n const {\n nameInputValue,\n nameInputError,\n editId,\n renameSet,\n modifiedFilterSets,\n restoreFullState,\n } = this.state;\n const { isValueShown, filterSets, selectedId } = this.props;\n const isNameInputScreen = this.isNameInputScreen();\n const isRenamingExistingSet = this.isRenamingExistingSet(\n modifiedFilterSets,\n renameSet\n );\n const isEmptyEditList = modifiedFilterSets.length === 0;\n const isInitialScreen =\n !isNameInputScreen && isEmptyEditList && filterSets.length === 0;\n const isEditListScreen = !isNameInputScreen && !isInitialScreen;\n const captureSetIcon = (\n <div className=\"fa-layers mr-3\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhNewCircleLargeFilled}\n className=\"text-primary\"\n transform=\"shrink-6 down-5 right-7\"\n />\n </div>\n );\n const updateSetIcon = (\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={vsArrowSmallUp}\n transform=\"shrink-1 down-5 right-7\"\n />\n </div>\n );\n return (\n <div className=\"filter-set-manager fill-parent-absolute\">\n <CardFlip className=\"w-100 h-100\" isFlipped={isValueShown}>\n <div\n className=\"filter-set-manager-settings-card fill-parent-absolute\"\n key=\"front\"\n >\n <div className=\"filter-set-manager-card-content\">\n {isInitialScreen && (\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture filter set\n </Button>\n <div className=\"py-3 text-muted small\">\n Takes a snapshot of the currently applied filters on all\n panels, allowing you to restore saved filter sets later.\n </div>\n </div>\n )}\n\n {isNameInputScreen && (\n <div\n className=\"d-flex flex-column justify-content-center\"\n data-testid=\"edit-filter-set-container\"\n >\n <div className=\"form-group\">\n <label>\n {isRenamingExistingSet ? 'Edit set' : 'Name captured set'}\n </label>\n <div className=\"name-input-container\">\n <input\n type=\"text\"\n className=\"input-set-name form-control\"\n placeholder={NAME_INPUT_PLACEHOLDER}\n value={nameInputValue}\n ref={this.renameInputRef}\n onChange={this.handleNameInputChange}\n onKeyPress={this.handleNameInputKeyPress}\n spellCheck=\"false\"\n />\n <Button\n data-testid=\"rename-confirm-button\"\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameConfirm}\n tooltip=\"Save\"\n test-id=\"button-save\"\n icon={vsSave}\n />\n\n <Button\n data-testid=\"rename-cancel-button\"\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameCancel}\n tooltip=\"Cancel\"\n icon={vsCircleSlash}\n />\n </div>\n {nameInputError !== undefined && (\n <div className=\"error-message\">{nameInputError}</div>\n )}\n </div>\n <div className=\"form-group\">\n <RadioGroup\n aria-label=\"Restoration options\"\n onChange={this.handleRestoreFullStateChange}\n value={`${restoreFullState}`}\n >\n <Radio value=\"false\">Restore only filters</Radio>\n <Radio value=\"true\">Restore full table state</Radio>\n </RadioGroup>\n </div>\n </div>\n )}\n\n {isEditListScreen && (\n <div className=\"filter-set-manager-settings-grid-1\">\n <div className=\"form-group\">\n <label>Edit filter sets</label>\n <div className=\"filter-select-container\">\n <Select\n data-testid=\"settings-card-filter-select\"\n ref={this.editDropdownRef}\n value={editId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleEditDropdownChange}\n disabled={isEmptyEditList}\n >\n {isEmptyEditList && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {modifiedFilterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </Select>\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetUpdate}\n disabled={isEmptyEditList}\n icon={updateSetIcon}\n tooltip=\"Update\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetEdit}\n disabled={isEmptyEditList}\n icon={vsEdit}\n tooltip=\"Edit\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetDelete}\n disabled={isEmptyEditList}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n </div>\n </div>\n\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture new filter set\n </Button>\n </div>\n\n <div className=\"py-3 text-right\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n >\n Cancel\n </Button>\n \n <Button kind=\"primary\" onClick={this.handleSettingsSave}>\n Save\n </Button>\n </div>\n </div>\n )}\n </div>\n </div>\n <div\n className=\"filter-set-manager-value-card fill-parent-absolute\"\n key=\"back\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"filter-set-manager-column\">\n <div className=\"filter-set-manager-column-title\">Filter sets</div>\n </div>\n <div className=\"filter-set-manager-card-content\">\n <div className=\"filter-set-manager-value-input\">\n <div className=\"filter-select-container\">\n <Select\n data-testid=\"value-card-filter-select\"\n ref={this.dropdownRef}\n value={selectedId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleFilterChange}\n >\n {filterSets.length === 0 && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {filterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </Select>\n <Button\n data-testid=\"filter-apply-button\"\n kind=\"ghost\"\n onClick={this.handleFilterApply}\n icon={dhRefresh}\n tooltip=\"Apply Filter Set\"\n />\n </div>\n </div>\n </div>\n <div className=\"filter-set-manager-menu\">\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n tooltip=\"Settings\"\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n />\n </div>\n </div>\n </CardFlip>\n </div>\n );\n }\n}\n\nexport default FilterSetManager;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FilterSetManager.js","names":["React","Component","memoizeOne","nanoid","FontAwesomeIcon","vsEdit","vsGear","vsSave","vsCircleSlash","vsTrash","vsDeviceCamera","dhRefresh","dhNewCircleLargeFilled","vsCircleLargeFilled","vsArrowSmallUp","Log","Button","CardFlip","RadioGroup","Radio","Select","jsx","_jsx","jsxs","_jsxs","log","module","NAME_INPUT_PLACEHOLDER","EMPTY_LIST_PLACEHOLDER","FilterSetManager","animateScreenFlash","_document$querySelect","overlay","document","createElement","classList","add","addEventListener","remove","querySelector","appendChild","constructor","props","_defineProperty","createRef","filterSets","renameSet","undefined","some","_ref","id","handleSettingsCancel","bind","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleEditDropdownChange","handleFilterChange","handleFilterApply","handleCaptureNewSet","handleNameInputChange","handleNameInputKeyPress","handleRenameConfirm","handleRenameCancel","handleRestoreFullStateChange","handleSetDelete","handleSetEdit","handleSetUpdate","state","editId","nameInputValue","nameInputError","modifiedFilterSets","restoreFullState","componentDidMount","isValueShown","updateSelectedId","initSettingsScreen","componentDidUpdate","prevProps","prevState","_this$props","isNameInputScreen","focusRenameInput","length","onChange","selectedId","_this$props2","debug","setState","_this$props3","_ref2","isEmptyList","eventTargetValue","_this$props4","applyFilterSet","_this$props5","_this$props6","onUpdateSets","_this$state","getFilterState","panels","title","value","getNameError","_nameInputValue$trim","_this$state2","trimmedName","trim","_ref3","_nameInputValue$trim2","_this$state3","error","namedFilterSet","_objectSpread","selectedIndex","findIndex","_ref4","updatedModifiedFilterSets","push","prevFilterSets","_ref5","filter","_ref6","newSelectedIndex","Math","max","min","newSelectedId","_ref7","selectedSetIndex","_ref8","_ref9","selectedSet","find","_ref0","_selectedSet$restoreF","event","stopPropagation","_this$props7","target","dropdownRef","current","focusInput","key","preventDefault","arguments","_this$props8","onApply","filterSet","_ref1","_this$dropdownRef$cur","focus","_this$renameInputRef$","renameInputRef","render","_this$state4","_this$props9","isRenamingExistingSet","isEmptyEditList","isInitialScreen","isEditListScreen","captureSetIcon","className","children","icon","mask","transform","updateSetIcon","isFlipped","kind","onClick","type","placeholder","ref","onKeyPress","spellCheck","tooltip","concat","editDropdownRef","disabled","map","_ref10","_ref11"],"sources":["../../src/panels/FilterSetManager.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, {\n type ChangeEvent,\n Component,\n type ReactNode,\n type KeyboardEvent,\n type MouseEvent,\n} from 'react';\nimport memoizeOne from 'memoize-one';\nimport { nanoid } from 'nanoid';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n vsEdit,\n vsGear,\n vsSave,\n vsCircleSlash,\n vsTrash,\n vsDeviceCamera,\n dhRefresh,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsArrowSmallUp,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport {\n Button,\n CardFlip,\n RadioGroup,\n Radio,\n Select,\n} from '@deephaven/components';\n\nimport './FilterSetManager.scss';\n\nconst log = Log.module('FilterSetManager');\n\nexport interface FilterSetPanel {\n panelId?: string | string[] | null;\n type: string;\n id?: string;\n state: unknown;\n}\n\nexport interface FilterSet {\n id: string;\n title: string;\n panels: FilterSetPanel[];\n restoreFullState?: boolean;\n}\n\nexport interface ChangeHandlerArgs {\n isValueShown: boolean;\n selectedId?: string;\n}\n\ninterface FilterSetManagerProps {\n isValueShown: boolean;\n selectedId?: string;\n filterSets: FilterSet[];\n getFilterState: () => FilterSetPanel[];\n onChange: (args: ChangeHandlerArgs) => void;\n onApply: (filterSet: FilterSet) => void;\n onUpdateSets: (filterSets: FilterSet[], editId?: string) => void;\n}\n\ninterface FilterSetManagerState {\n nameInputValue: string;\n nameInputError?: string;\n editId?: string;\n renameSet?: FilterSet;\n // Unsaved set changes on the settings screen\n modifiedFilterSets: FilterSet[];\n restoreFullState: boolean;\n}\n\nconst NAME_INPUT_PLACEHOLDER = 'Enter name...';\n\nconst EMPTY_LIST_PLACEHOLDER = 'No Available Filter Sets';\n\nclass FilterSetManager extends Component<\n FilterSetManagerProps,\n FilterSetManagerState\n> {\n static animateScreenFlash(): void {\n const overlay = document.createElement('div');\n overlay.classList.add('screen-flash-overlay');\n overlay.addEventListener('animationend', () => {\n // Removing the element removes its event listeners\n overlay.remove();\n });\n document.querySelector('body')?.appendChild(overlay);\n }\n\n constructor(props: FilterSetManagerProps) {\n super(props);\n\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleEditDropdownChange = this.handleEditDropdownChange.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleCaptureNewSet = this.handleCaptureNewSet.bind(this);\n this.handleNameInputChange = this.handleNameInputChange.bind(this);\n this.handleNameInputKeyPress = this.handleNameInputKeyPress.bind(this);\n this.handleRenameConfirm = this.handleRenameConfirm.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRestoreFullStateChange =\n this.handleRestoreFullStateChange.bind(this);\n\n this.handleSetDelete = this.handleSetDelete.bind(this);\n this.handleSetEdit = this.handleSetEdit.bind(this);\n this.handleSetUpdate = this.handleSetUpdate.bind(this);\n\n this.state = {\n editId: undefined,\n renameSet: undefined,\n nameInputValue: '',\n nameInputError: undefined,\n modifiedFilterSets: [],\n restoreFullState: false,\n };\n }\n\n componentDidMount(): void {\n const { isValueShown } = this.props;\n if (isValueShown) {\n this.updateSelectedId();\n } else {\n this.initSettingsScreen();\n }\n }\n\n componentDidUpdate(\n prevProps: FilterSetManagerProps,\n prevState: FilterSetManagerState\n ): void {\n const { isValueShown, filterSets } = this.props;\n const { modifiedFilterSets } = this.state;\n\n if (prevProps.isValueShown && !isValueShown) {\n this.initSettingsScreen();\n }\n\n if (this.isNameInputScreen() && !this.isNameInputScreen(prevState)) {\n this.focusRenameInput();\n }\n\n if (filterSets !== prevProps.filterSets) {\n if (\n !isValueShown &&\n filterSets.length > 0 &&\n prevProps.filterSets.length === 0 &&\n modifiedFilterSets.length === 0\n ) {\n // Filter set added from another panel, flip from the settings side/initial screen to the value side\n const { onChange } = this.props;\n onChange({ isValueShown: true, selectedId: filterSets[0].id });\n } else {\n this.updateSelectedId();\n }\n }\n }\n\n private renameInputRef = React.createRef<HTMLInputElement>();\n\n private dropdownRef = React.createRef<HTMLSelectElement>();\n\n private editDropdownRef = React.createRef<HTMLSelectElement>();\n\n initSettingsScreen(): void {\n const { filterSets, selectedId } = this.props;\n log.debug('initSettingsScreen', filterSets, selectedId);\n this.setState({\n modifiedFilterSets: [...filterSets],\n editId: selectedId,\n });\n }\n\n // Update selected id without applying the new set on filterSets change\n updateSelectedId(): void {\n const { isValueShown, filterSets, selectedId, onChange } = this.props;\n log.debug('updateSelectedId', filterSets, selectedId);\n if (!isValueShown) {\n return;\n }\n if (!filterSets.some(({ id }) => id === selectedId)) {\n // Update the selection if selectedId doesn't exist in the list\n // Flip to the settings side for empty list to show the initial screen\n const isEmptyList = filterSets.length === 0;\n onChange({\n isValueShown: !isEmptyList,\n selectedId: isEmptyList ? undefined : filterSets[0].id,\n });\n }\n }\n\n handleEditDropdownChange(eventTargetValue: string): void {\n this.setState({ editId: eventTargetValue });\n }\n\n handleFilterChange(eventTargetValue: string): void {\n const selectedId = eventTargetValue;\n const { isValueShown, onChange } = this.props;\n this.applyFilterSet(selectedId);\n onChange({ isValueShown, selectedId });\n }\n\n handleFilterApply(): void {\n const { selectedId } = this.props;\n this.applyFilterSet(selectedId);\n }\n\n handleSettingsCancel(): void {\n const { onChange, selectedId, filterSets } = this.props;\n this.setState({ modifiedFilterSets: [] });\n // Flip the card to the filter set selection screen if the sets list isn't empty\n // Otherwise show the initial screen\n if (filterSets.length > 0) {\n onChange({ isValueShown: true, selectedId });\n }\n }\n\n handleSettingsSave(): void {\n const { onChange, onUpdateSets } = this.props;\n const { modifiedFilterSets, editId } = this.state;\n this.setState({ modifiedFilterSets: [] });\n log.debug('Update sets', modifiedFilterSets, editId);\n onUpdateSets(modifiedFilterSets);\n // Don't flip the card to the filter set selection screen if the updated sets list is empty\n if (modifiedFilterSets.length > 0) {\n onChange({ isValueShown: true, selectedId: editId });\n }\n }\n\n handleCaptureNewSet(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const id = nanoid();\n const panels = getFilterState();\n const renameSet = {\n id,\n title: '',\n panels,\n };\n log.debug('handleSetCreate', renameSet);\n this.setState({ nameInputValue: '', nameInputError: undefined, renameSet });\n }\n\n handleRenameCancel(): void {\n this.setState({ renameSet: undefined });\n }\n\n handleRestoreFullStateChange(value: string): void {\n this.setState({\n restoreFullState: value === 'true',\n });\n }\n\n getNameError(nameInputValue: string): string | undefined {\n const { renameSet, modifiedFilterSets } = this.state;\n const trimmedName = nameInputValue?.trim() ?? '';\n if (trimmedName.length === 0) {\n log.debug('Name cannot be empty', trimmedName);\n return 'Name cannot be empty';\n }\n\n if (\n renameSet !== undefined &&\n modifiedFilterSets.some(\n ({ title, id }) => title === trimmedName && id !== renameSet.id\n )\n ) {\n log.debug('Set with this name already exists', trimmedName);\n return 'Set with this name already exists';\n }\n\n return undefined;\n }\n\n handleRenameConfirm(): void {\n const { nameInputValue, renameSet, modifiedFilterSets, restoreFullState } =\n this.state;\n if (renameSet === undefined) {\n log.error('Renamed set undefined.');\n return;\n }\n const nameInputError = this.getNameError(nameInputValue);\n log.debug('handleRenameConfirm', nameInputValue, nameInputError);\n if (nameInputError !== undefined) {\n this.setState({ nameInputError });\n return;\n }\n const trimmedName = nameInputValue?.trim() ?? '';\n const namedFilterSet = {\n ...renameSet,\n title: trimmedName,\n restoreFullState,\n };\n const selectedIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === renameSet.id\n );\n const updatedModifiedFilterSets = [...modifiedFilterSets];\n\n if (selectedIndex >= 0) {\n updatedModifiedFilterSets[selectedIndex] = namedFilterSet;\n log.debug('Renamed existing set', updatedModifiedFilterSets);\n } else {\n updatedModifiedFilterSets.push(namedFilterSet);\n log.debug('Added new set to modified sets', updatedModifiedFilterSets);\n }\n\n this.setState({\n editId: namedFilterSet.id,\n modifiedFilterSets: updatedModifiedFilterSets,\n renameSet: undefined,\n });\n }\n\n handleSetDelete(): void {\n this.setState(state => {\n const { editId, modifiedFilterSets: prevFilterSets } = state;\n const selectedIndex = prevFilterSets.findIndex(({ id }) => id === editId);\n if (selectedIndex < 0) {\n log.error(\n 'Unable to find selected filterSet index',\n prevFilterSets,\n editId\n );\n return null;\n }\n const modifiedFilterSets = prevFilterSets.filter(\n ({ id }) => id !== editId\n );\n const newSelectedIndex = Math.max(\n 0,\n Math.min(modifiedFilterSets.length - 1, selectedIndex - 1)\n );\n const newSelectedId =\n modifiedFilterSets.length > 0\n ? modifiedFilterSets[newSelectedIndex].id\n : undefined;\n log.debug(\n 'Deleted selected set',\n editId,\n prevFilterSets,\n modifiedFilterSets\n );\n log.debug('New selection', newSelectedIndex, newSelectedId);\n return {\n modifiedFilterSets,\n editId: newSelectedId,\n };\n });\n }\n\n handleSetUpdate(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const panels = getFilterState();\n this.setState(({ modifiedFilterSets: prevFilterSets, editId }) => {\n if (editId === undefined) {\n log.error('Filter for update not selected.');\n return null;\n }\n const modifiedFilterSets = [...prevFilterSets];\n const selectedSetIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === editId\n );\n if (selectedSetIndex < 0) {\n log.error('Selected set for update not found.');\n return null;\n }\n // Clone selected set to avoid mutation of the props\n modifiedFilterSets[selectedSetIndex] = {\n ...modifiedFilterSets[selectedSetIndex],\n panels,\n };\n\n log.debug('Update set', modifiedFilterSets, panels);\n return {\n modifiedFilterSets,\n };\n });\n }\n\n handleSetEdit(): void {\n this.setState(({ editId, modifiedFilterSets }) => {\n const selectedSet = modifiedFilterSets.find(({ id }) => id === editId);\n if (selectedSet === undefined) {\n log.error('Could not find selected set', editId, modifiedFilterSets);\n return null;\n }\n const { title, restoreFullState = false } = selectedSet;\n return {\n nameInputValue: title,\n nameInputError: undefined,\n renameSet: selectedSet,\n restoreFullState,\n };\n });\n }\n\n handleSettingsClick(event: MouseEvent): void {\n event.stopPropagation();\n const { onChange, selectedId } = this.props;\n onChange({ isValueShown: false, selectedId });\n }\n\n handleBackgroundClick(event: MouseEvent): void {\n log.debug('handleBackgroundClick');\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n handleNameInputChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value: nameInputValue } = event.target;\n const nameInputError = this.getNameError(nameInputValue);\n this.setState({ nameInputValue, nameInputError });\n }\n\n handleNameInputKeyPress(event: KeyboardEvent): void {\n const { key } = event;\n if (key === 'Enter') {\n event.preventDefault();\n this.handleRenameConfirm();\n }\n }\n\n isNameInputScreen(state = this.state): boolean {\n const { renameSet } = state;\n return renameSet !== undefined;\n }\n\n isRenamingExistingSet = memoizeOne(\n (filterSets: FilterSet[], renameSet?: FilterSet): boolean =>\n renameSet !== undefined &&\n filterSets.some(({ id }) => id === renameSet.id)\n );\n\n applyFilterSet(selectedId?: string): void {\n const { onApply, filterSets } = this.props;\n if (selectedId === undefined) {\n log.debug('No filter selected');\n return;\n }\n const filterSet = filterSets.find(({ id }) => id === selectedId);\n if (filterSet === undefined) {\n log.debug('Selected id not found in filterSets', selectedId, filterSets);\n return;\n }\n log.debug('Apply filterSet', filterSet);\n onApply(filterSet);\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n focusRenameInput(): void {\n this.renameInputRef.current?.focus();\n }\n\n render(): ReactNode {\n const {\n nameInputValue,\n nameInputError,\n editId,\n renameSet,\n modifiedFilterSets,\n restoreFullState,\n } = this.state;\n const { isValueShown, filterSets, selectedId } = this.props;\n const isNameInputScreen = this.isNameInputScreen();\n const isRenamingExistingSet = this.isRenamingExistingSet(\n modifiedFilterSets,\n renameSet\n );\n const isEmptyEditList = modifiedFilterSets.length === 0;\n const isInitialScreen =\n !isNameInputScreen && isEmptyEditList && filterSets.length === 0;\n const isEditListScreen = !isNameInputScreen && !isInitialScreen;\n const captureSetIcon = (\n <div className=\"fa-layers mr-3\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhNewCircleLargeFilled}\n className=\"text-primary\"\n transform=\"shrink-6 down-5 right-7\"\n />\n </div>\n );\n const updateSetIcon = (\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={vsArrowSmallUp}\n transform=\"shrink-1 down-5 right-7\"\n />\n </div>\n );\n return (\n <div className=\"filter-set-manager fill-parent-absolute\">\n <CardFlip className=\"w-100 h-100\" isFlipped={isValueShown}>\n <div\n className=\"filter-set-manager-settings-card fill-parent-absolute\"\n key=\"front\"\n >\n <div className=\"filter-set-manager-card-content\">\n {isInitialScreen && (\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture filter set\n </Button>\n <div className=\"py-3 text-muted small\">\n Takes a snapshot of the currently applied filters on all\n panels, allowing you to restore saved filter sets later.\n </div>\n </div>\n )}\n\n {isNameInputScreen && (\n <div\n className=\"d-flex flex-column justify-content-center\"\n data-testid=\"edit-filter-set-container\"\n >\n <div className=\"form-group\">\n <label>\n {isRenamingExistingSet ? 'Edit set' : 'Name captured set'}\n </label>\n <div className=\"name-input-container\">\n <input\n type=\"text\"\n className=\"input-set-name form-control\"\n placeholder={NAME_INPUT_PLACEHOLDER}\n value={nameInputValue}\n ref={this.renameInputRef}\n onChange={this.handleNameInputChange}\n onKeyPress={this.handleNameInputKeyPress}\n spellCheck=\"false\"\n />\n <Button\n data-testid=\"rename-confirm-button\"\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameConfirm}\n tooltip=\"Save\"\n test-id=\"button-save\"\n icon={vsSave}\n />\n\n <Button\n data-testid=\"rename-cancel-button\"\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameCancel}\n tooltip=\"Cancel\"\n icon={vsCircleSlash}\n />\n </div>\n {nameInputError !== undefined && (\n <div className=\"error-message\">{nameInputError}</div>\n )}\n </div>\n <div className=\"form-group\">\n <RadioGroup\n aria-label=\"Restoration options\"\n onChange={this.handleRestoreFullStateChange}\n value={`${restoreFullState}`}\n >\n <Radio value=\"false\">Restore only filters</Radio>\n <Radio value=\"true\">Restore full table state</Radio>\n </RadioGroup>\n </div>\n </div>\n )}\n\n {isEditListScreen && (\n <div className=\"filter-set-manager-settings-grid-1\">\n <div className=\"form-group\">\n <label>Edit filter sets</label>\n <div className=\"filter-select-container\">\n <Select\n data-testid=\"settings-card-filter-select\"\n ref={this.editDropdownRef}\n value={editId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleEditDropdownChange}\n disabled={isEmptyEditList}\n >\n {isEmptyEditList && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {modifiedFilterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </Select>\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetUpdate}\n disabled={isEmptyEditList}\n icon={updateSetIcon}\n tooltip=\"Update\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetEdit}\n disabled={isEmptyEditList}\n icon={vsEdit}\n tooltip=\"Edit\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetDelete}\n disabled={isEmptyEditList}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n </div>\n </div>\n\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture new filter set\n </Button>\n </div>\n\n <div className=\"py-3 text-right\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n >\n Cancel\n </Button>\n \n <Button kind=\"primary\" onClick={this.handleSettingsSave}>\n Save\n </Button>\n </div>\n </div>\n )}\n </div>\n </div>\n <div\n className=\"filter-set-manager-value-card fill-parent-absolute\"\n key=\"back\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"filter-set-manager-column\">\n <div className=\"filter-set-manager-column-title\">Filter sets</div>\n </div>\n <div className=\"filter-set-manager-card-content\">\n <div className=\"filter-set-manager-value-input\">\n <div className=\"filter-select-container\">\n <Select\n data-testid=\"value-card-filter-select\"\n ref={this.dropdownRef}\n value={selectedId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleFilterChange}\n >\n {filterSets.length === 0 && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {filterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </Select>\n <Button\n data-testid=\"filter-apply-button\"\n kind=\"ghost\"\n onClick={this.handleFilterApply}\n icon={dhRefresh}\n tooltip=\"Apply Filter Set\"\n />\n </div>\n </div>\n </div>\n <div className=\"filter-set-manager-menu\">\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n tooltip=\"Settings\"\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n />\n </div>\n </div>\n </CardFlip>\n </div>\n );\n }\n}\n\nexport default FilterSetManager;\n"],"mappings":"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","ignoreList":[]}
|