@deephaven/dashboard-core-plugins 0.54.1-beta.0 → 0.54.1-beta.2
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/controls/dropdown-filter/DropdownFilter.d.ts +3 -3
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +10 -14
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.d.ts +1 -1
- package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +5 -8
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/panels/FilterSetManager.d.ts +2 -2
- package/dist/panels/FilterSetManager.d.ts.map +1 -1
- package/dist/panels/FilterSetManager.js +8 -13
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/package.json +24 -24
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="lodash" />
|
|
2
|
-
import {
|
|
2
|
+
import { Component, KeyboardEvent, MouseEvent, ReactElement, RefObject } from 'react';
|
|
3
3
|
import type { Column } from '@deephaven/jsapi-types';
|
|
4
4
|
import memoizee from 'memoizee';
|
|
5
5
|
import './DropdownFilter.scss';
|
|
@@ -63,9 +63,9 @@ export declare class DropdownFilter extends Component<DropdownFilterProps, Dropd
|
|
|
63
63
|
getSelectedOptionIndex: (values: (string | null)[], value: string | null) => number;
|
|
64
64
|
getValueOptions: (values: (string | null)[]) => JSX.Element[];
|
|
65
65
|
getItemLabel: ((columns: DropdownFilterColumn[], index: number) => string) & memoizee.Memoized<(columns: DropdownFilterColumn[], index: number) => string>;
|
|
66
|
-
handleColumnChange(
|
|
66
|
+
handleColumnChange(eventTargetValue: string): void;
|
|
67
67
|
handleDropdownKeyPress(event: KeyboardEvent<HTMLSelectElement>): void;
|
|
68
|
-
handleValueChange(
|
|
68
|
+
handleValueChange(eventTargetValue: string): void;
|
|
69
69
|
handleSettingsCancel(): void;
|
|
70
70
|
handleSettingsSave(): void;
|
|
71
71
|
handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownFilter.d.ts","sourceRoot":"","sources":["../../../src/controls/dropdown-filter/DropdownFilter.tsx"],"names":[],"mappings":";AAIA,OAAc,EACZ,
|
|
1
|
+
{"version":3,"file":"DropdownFilter.d.ts","sourceRoot":"","sources":["../../../src/controls/dropdown-filter/DropdownFilter.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ function _toPrimitive(input, hint) { if (typeof input !== "object" || input ===
|
|
|
7
7
|
|
|
8
8
|
import React, { Component } from 'react';
|
|
9
9
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
10
|
-
import { Button, CardFlip, SocketedButton } from '@deephaven/components';
|
|
10
|
+
import { Button, CardFlip, Select, SocketedButton } from '@deephaven/components';
|
|
11
11
|
import { vsGear } from '@deephaven/icons';
|
|
12
12
|
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
13
13
|
import memoizee from 'memoizee';
|
|
@@ -139,10 +139,8 @@ export class DropdownFilter extends Component {
|
|
|
139
139
|
componentWillUnmount() {
|
|
140
140
|
this.sendUpdate.flush();
|
|
141
141
|
}
|
|
142
|
-
handleColumnChange(
|
|
143
|
-
var
|
|
144
|
-
value
|
|
145
|
-
} = event.target;
|
|
142
|
+
handleColumnChange(eventTargetValue) {
|
|
143
|
+
var value = eventTargetValue;
|
|
146
144
|
log.debug2('handleColumnChange', value);
|
|
147
145
|
if (value != null && parseInt(value, 10) < 0) {
|
|
148
146
|
this.setState({
|
|
@@ -168,10 +166,8 @@ export class DropdownFilter extends Component {
|
|
|
168
166
|
this.sendUpdate.flush();
|
|
169
167
|
}
|
|
170
168
|
}
|
|
171
|
-
handleValueChange(
|
|
172
|
-
var
|
|
173
|
-
value: valueIndex
|
|
174
|
-
} = event.target;
|
|
169
|
+
handleValueChange(eventTargetValue) {
|
|
170
|
+
var valueIndex = eventTargetValue;
|
|
175
171
|
var index = parseInt(valueIndex, 10);
|
|
176
172
|
// Default empty string value for 'clear filter'
|
|
177
173
|
var value = '';
|
|
@@ -343,9 +339,9 @@ export class DropdownFilter extends Component {
|
|
|
343
339
|
}), /*#__PURE__*/_jsx("label", {
|
|
344
340
|
htmlFor: filterColumnId,
|
|
345
341
|
children: "Filter Column"
|
|
346
|
-
}), /*#__PURE__*/_jsx(
|
|
342
|
+
}), /*#__PURE__*/_jsx(Select, {
|
|
347
343
|
id: filterColumnId,
|
|
348
|
-
value: selectedIndex,
|
|
344
|
+
value: String(selectedIndex),
|
|
349
345
|
className: "custom-select",
|
|
350
346
|
onChange: this.handleColumnChange,
|
|
351
347
|
disabled: columnSelectionDisabled,
|
|
@@ -392,12 +388,12 @@ export class DropdownFilter extends Component {
|
|
|
392
388
|
className: "dropdown-filter-card-content",
|
|
393
389
|
children: [/*#__PURE__*/_jsx("div", {
|
|
394
390
|
className: "dropdown-filter-value-input d-flex flex-column justify-content-center",
|
|
395
|
-
children: /*#__PURE__*/_jsx(
|
|
391
|
+
children: /*#__PURE__*/_jsx(Select, {
|
|
396
392
|
className: "custom-select",
|
|
397
|
-
value: selectedOption,
|
|
393
|
+
value: String(selectedOption),
|
|
398
394
|
ref: this.dropdownRef,
|
|
399
395
|
onChange: this.handleValueChange,
|
|
400
|
-
|
|
396
|
+
onKeyDown: this.handleDropdownKeyPress,
|
|
401
397
|
title: "Select Value",
|
|
402
398
|
children: valueOptions
|
|
403
399
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownFilter.js","names":["React","Component","FontAwesomeIcon","Button","CardFlip","SocketedButton","vsGear","TableUtils","memoizee","memoize","debounce","shortid","Log","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","UPDATE_DEBOUNCE","DropdownFilter","constructor","props","_defineProperty","source","columns","filter","_ref","type","undefined","isCompatibleType","columnType","selectedColumn","selectedIndex","options","push","value","children","forEach","columnItem","index","getItemLabel","concat","name","values","indexOf","PLACEHOLDER","map","val","length","shortType","substring","lastIndexOf","onChange","column","isValueShown","state","handleColumnChange","bind","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleDropdownKeyPress","handleValueChange","dropdownRef","createRef","id","disableCancel","componentDidUpdate","prevProps","prevState","isLoaded","sourceUpdated","includes","resetValue","focusInput","sendUpdate","componentWillUnmount","flush","event","target","debug2","parseInt","setState","allColumns","getCompatibleColumns","key","preventDefault","stopPropagation","valueIndex","_ref2","_ref3","showSettings","current","_this$dropdownRef$cur","focus","clearFilter","setFilterState","_ref4","_ref5","oldValue","oldIsValueShown","render","_source$columnName","disableLinking","isLinkerActive","onColumnSelected","onSourceMouseEnter","onSourceMouseLeave","settingsError","columnSelectionDisabled","isLinked","sourceButtonLabel","columnName","SOURCE_BUTTON_PLACEHOLDER","filterTitle","columnOptions","getColumnOptions","valueOptions","getValueOptions","selectedOption","getSelectedOptionIndex","disableSave","isFlipped","sourceColumnId","filterColumnId","className","htmlFor","onClick","onMouseEnter","onMouseLeave","SOURCE_BUTTON_CLASS_NAME","disabled","kind","tooltip","ref","onKeyPress","title","icon","transform"],"sources":["../../../src/controls/dropdown-filter/DropdownFilter.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 ChangeEvent,\n Component,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n RefObject,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, CardFlip, SocketedButton } from '@deephaven/components';\nimport { vsGear } from '@deephaven/icons';\nimport type { Column } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport memoizee from 'memoizee';\nimport memoize from 'memoize-one';\nimport debounce from 'lodash.debounce';\nimport shortid from 'shortid';\nimport Log from '@deephaven/log';\nimport './DropdownFilter.scss';\nimport { LinkPoint } from '../../linker/LinkerUtils';\n\nconst log = Log.module('DropdownFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nexport interface DropdownFilterColumn {\n name: string;\n type: string;\n}\n\nexport interface DropdownFilterProps {\n column: DropdownFilterColumn;\n columns: DropdownFilterColumn[];\n onSourceMouseEnter: () => void;\n onSourceMouseLeave: () => void;\n disableLinking: boolean;\n isLinkerActive: boolean;\n isLoaded: boolean;\n isValueShown: boolean;\n settingsError: string;\n source: LinkPoint;\n value: string | null;\n values: (string | null)[];\n onChange: (change: {\n column: Partial<Column> | null;\n isValueShown?: boolean;\n value?: string;\n }) => void;\n onColumnSelected: () => void;\n}\n\ninterface DropdownFilterState {\n column: DropdownFilterColumn | null;\n selectedColumn: DropdownFilterColumn | null;\n disableCancel: boolean;\n isValueShown: boolean;\n value: string | null;\n id: string;\n}\n\nexport class DropdownFilter extends Component<\n DropdownFilterProps,\n DropdownFilterState\n> {\n static defaultProps = {\n column: null,\n disableLinking: false,\n isLinkerActive: false,\n isLoaded: false,\n isValueShown: false,\n\n settingsError: null,\n source: null,\n value: '',\n values: [],\n onColumnSelected: (): void => undefined,\n onSourceMouseEnter: (): void => undefined,\n onSourceMouseLeave: (): void => undefined,\n };\n\n static PLACEHOLDER = 'Select a value...';\n\n static SOURCE_BUTTON_CLASS_NAME = 'btn-dropdown-filter-selector';\n\n static SOURCE_BUTTON_PLACEHOLDER = 'Select a column';\n\n constructor(props: DropdownFilterProps) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\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.handleDropdownKeyPress = this.handleDropdownKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n\n this.dropdownRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n id: shortid(),\n selectedColumn: column,\n disableCancel: !isValueShown,\n isValueShown,\n value,\n };\n }\n\n componentDidUpdate(\n prevProps: DropdownFilterProps,\n prevState: DropdownFilterState\n ): void {\n const { source, values, isLoaded } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (isLoaded) {\n if (source !== prevProps.source) {\n this.sourceUpdated();\n }\n\n if (\n values !== prevProps.values &&\n value !== '' &&\n !values.includes(value)\n ) {\n // Value list loaded, but doesn't contain the current value\n this.resetValue();\n }\n\n if (isValueShown !== prevState.isValueShown) {\n if (isValueShown) {\n this.focusInput();\n }\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.sendUpdate.flush();\n }\n\n dropdownRef: RefObject<HTMLSelectElement>;\n\n getCompatibleColumns = memoize(\n (source: LinkPoint, columns: DropdownFilterColumn[]) =>\n source != null\n ? columns.filter(\n ({ type }) =>\n type !== undefined &&\n TableUtils.isCompatibleType(type, source.columnType)\n )\n : []\n );\n\n getColumnOptions = memoize(\n (\n columns: DropdownFilterColumn[],\n selectedColumn: DropdownFilterColumn | null\n ): [JSX.Element[], number] => {\n let selectedIndex = -1;\n const options = [];\n options.push(\n <option key=\"placeholder\" value=\"-1\">\n Select a column\n </option>\n );\n columns.forEach((columnItem, index) => {\n options.push(\n <option key={`${columnItem.name}/${columnItem.type}`} value={index}>\n {this.getItemLabel(columns, index)}\n </option>\n );\n if (\n selectedColumn !== null &&\n columnItem.name === selectedColumn.name &&\n columnItem.type === selectedColumn.type\n ) {\n selectedIndex = index;\n }\n });\n return [options, selectedIndex];\n }\n );\n\n getSelectedOptionIndex = memoize(\n (values: (string | null)[], value: string | null) => values.indexOf(value)\n );\n\n getValueOptions = memoize((values: (string | null)[]) => [\n <option value=\"-1\" key=\"-1\">\n {DropdownFilter.PLACEHOLDER}\n </option>,\n ...values.map((val, index) => (\n <option\n value={index}\n // eslint-disable-next-line react/no-array-index-key\n key={`${index}/${val}`}\n >\n {val ?? '(null)'}\n </option>\n )),\n ]);\n\n getItemLabel = memoizee((columns: DropdownFilterColumn[], index: number) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value } = event.target;\n log.debug2('handleColumnChange', value);\n if (value != null && parseInt(value, 10) < 0) {\n this.setState({\n selectedColumn: null,\n });\n return;\n }\n const { columns: allColumns, source } = this.props;\n const columns = this.getCompatibleColumns(source, allColumns);\n this.setState({\n selectedColumn: columns[parseInt(value, 10)],\n });\n }\n\n handleDropdownKeyPress(event: KeyboardEvent<HTMLSelectElement>): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n\n log.debug2('handleDropdownKeyPress');\n\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n }\n\n handleValueChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: valueIndex } = event.target;\n const index = parseInt(valueIndex, 10);\n // Default empty string value for 'clear filter'\n let value: string | null = '';\n const { values } = this.props;\n if (index >= 0 && index < values.length) {\n value = values[index];\n } else {\n log.debug2('Selected default item');\n }\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel(): void {\n this.setState(({ column }) => ({\n selectedColumn: column,\n isValueShown: true,\n }));\n }\n\n handleSettingsSave(): void {\n this.setState(({ column, selectedColumn, value }) => ({\n column: selectedColumn,\n // Reset value if column changed\n value: column === selectedColumn ? value : '',\n isValueShown: true,\n disableCancel: false,\n }));\n }\n\n handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void {\n event.stopPropagation();\n this.showSettings();\n }\n\n handleBackgroundClick(event: MouseEvent<HTMLDivElement>): void {\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 sourceUpdated(): void {\n this.setState({\n column: null,\n selectedColumn: null,\n isValueShown: false,\n disableCancel: true,\n value: '',\n });\n }\n\n showSettings(): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n resetValue(): void {\n this.setState({ value: '' });\n }\n\n // Called by the parent component via ref\n clearFilter(): void {\n this.resetValue();\n }\n\n // Called by the parent component via ref\n setFilterState({\n name,\n type,\n value,\n isValueShown,\n }: {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n }): void {\n const column = name != null && type != null ? { name, type } : null;\n this.setState(({ value: oldValue, isValueShown: oldIsValueShown }) => ({\n column,\n value: value ?? oldValue,\n isValueShown: isValueShown ?? oldIsValueShown,\n }));\n }\n\n sendUpdate = debounce(() => {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value: value ?? undefined });\n }, UPDATE_DEBOUNCE);\n\n render(): ReactElement {\n const {\n columns: allColumns,\n disableLinking,\n isLinkerActive,\n isLoaded,\n source,\n onColumnSelected,\n onSourceMouseEnter,\n onSourceMouseLeave,\n values,\n settingsError,\n } = this.props;\n const { column, disableCancel, id, isValueShown, selectedColumn, value } =\n this.state;\n const columnSelectionDisabled = source === null;\n const columns = this.getCompatibleColumns(source, allColumns);\n const isLinked = source != null;\n const sourceButtonLabel =\n source?.columnName ?? DropdownFilter.SOURCE_BUTTON_PLACEHOLDER;\n const filterTitle = column != null ? `${column.name} Filter` : null;\n const [columnOptions, selectedIndex] = this.getColumnOptions(\n columns,\n selectedColumn\n );\n const valueOptions = this.getValueOptions(values);\n const selectedOption = this.getSelectedOptionIndex(values, value);\n const disableSave = !isLinked || selectedColumn == null;\n\n const isFlipped = isValueShown && !isLinkerActive;\n\n const sourceColumnId = `source-column-btn-${id}`;\n const filterColumnId = `filter-column-select-${id}`;\n\n return (\n <CardFlip\n className=\"dropdown-filter fill-parent-absolute\"\n isFlipped={isFlipped}\n >\n <div className=\"dropdown-filter-settings-card\">\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-settings-grid\">\n <label htmlFor={sourceColumnId}>Source Column</label>\n <SocketedButton\n id={sourceColumnId}\n isLinked={isLinked}\n onClick={onColumnSelected}\n onMouseEnter={onSourceMouseEnter}\n onMouseLeave={onSourceMouseLeave}\n className={DropdownFilter.SOURCE_BUTTON_CLASS_NAME}\n disabled={disableLinking}\n >\n {sourceButtonLabel}\n </SocketedButton>\n\n <div className=\"text-muted small\">\n Select a source column for the list by linking to a table.\n </div>\n\n <label htmlFor={filterColumnId}>Filter Column</label>\n <select\n id={filterColumnId}\n value={selectedIndex}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n disabled={columnSelectionDisabled}\n >\n {columnOptions}\n </select>\n <div className=\"text-muted small\">\n Dropdown filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n {settingsError && (\n <div className=\"error-message text-center\">{settingsError}</div>\n )}\n {isLinked && (\n <div className=\"dropdown-filter-settings-buttons\">\n <Button\n kind=\"secondary\"\n type=\"button\"\n onClick={this.handleSettingsCancel}\n disabled={disableCancel || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive\n ? 'Cancel disabled while linker open'\n : undefined\n }\n >\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"button\"\n className=\"ml-2\"\n onClick={this.handleSettingsSave}\n disabled={disableSave || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive\n ? 'Save disabled while linker open'\n : undefined\n }\n >\n Save\n </Button>\n </div>\n )}\n </div>\n </div>\n\n <div\n className=\"dropdown-filter-value-card\"\n onClick={this.handleBackgroundClick}\n data-testid=\"dropdown-filter-value-background\"\n >\n {isLoaded && (\n <>\n <div className=\"dropdown-filter-column\">\n <div className=\"dropdown-filter-column-title\">\n {filterTitle}\n </div>\n </div>\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-value-input d-flex flex-column justify-content-center\">\n <select\n className=\"custom-select\"\n value={selectedOption}\n ref={this.dropdownRef}\n onChange={this.handleValueChange}\n onKeyPress={this.handleDropdownKeyPress}\n title=\"Select Value\"\n >\n {valueOptions}\n </select>\n </div>\n {settingsError && (\n <div className=\"error-message mt-3 text-center\">\n {settingsError}\n </div>\n )}\n </div>\n <div className=\"dropdown-filter-menu\">\n <Button\n kind=\"ghost\"\n className=\"m-2 px-2\"\n onClick={this.handleSettingsClick}\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n tooltip=\"Dropdown Filter Settings\"\n />\n </div>\n </>\n )}\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default DropdownFilter;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DropdownFilter.js","names":["React","Component","FontAwesomeIcon","Button","CardFlip","Select","SocketedButton","vsGear","TableUtils","memoizee","memoize","debounce","shortid","Log","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","UPDATE_DEBOUNCE","DropdownFilter","constructor","props","_defineProperty","source","columns","filter","_ref","type","undefined","isCompatibleType","columnType","selectedColumn","selectedIndex","options","push","value","children","forEach","columnItem","index","getItemLabel","concat","name","values","indexOf","PLACEHOLDER","map","val","length","shortType","substring","lastIndexOf","onChange","column","isValueShown","state","handleColumnChange","bind","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleDropdownKeyPress","handleValueChange","dropdownRef","createRef","id","disableCancel","componentDidUpdate","prevProps","prevState","isLoaded","sourceUpdated","includes","resetValue","focusInput","sendUpdate","componentWillUnmount","flush","eventTargetValue","debug2","parseInt","setState","allColumns","getCompatibleColumns","event","key","preventDefault","stopPropagation","valueIndex","_ref2","_ref3","showSettings","target","current","_this$dropdownRef$cur","focus","clearFilter","setFilterState","_ref4","_ref5","oldValue","oldIsValueShown","render","_source$columnName","disableLinking","isLinkerActive","onColumnSelected","onSourceMouseEnter","onSourceMouseLeave","settingsError","columnSelectionDisabled","isLinked","sourceButtonLabel","columnName","SOURCE_BUTTON_PLACEHOLDER","filterTitle","columnOptions","getColumnOptions","valueOptions","getValueOptions","selectedOption","getSelectedOptionIndex","disableSave","isFlipped","sourceColumnId","filterColumnId","className","htmlFor","onClick","onMouseEnter","onMouseLeave","SOURCE_BUTTON_CLASS_NAME","disabled","String","kind","tooltip","ref","onKeyDown","title","icon","transform"],"sources":["../../../src/controls/dropdown-filter/DropdownFilter.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 Component,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n RefObject,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n CardFlip,\n Select,\n SocketedButton,\n} from '@deephaven/components';\nimport { vsGear } from '@deephaven/icons';\nimport type { Column } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport memoizee from 'memoizee';\nimport memoize from 'memoize-one';\nimport debounce from 'lodash.debounce';\nimport shortid from 'shortid';\nimport Log from '@deephaven/log';\nimport './DropdownFilter.scss';\nimport { LinkPoint } from '../../linker/LinkerUtils';\n\nconst log = Log.module('DropdownFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nexport interface DropdownFilterColumn {\n name: string;\n type: string;\n}\n\nexport interface DropdownFilterProps {\n column: DropdownFilterColumn;\n columns: DropdownFilterColumn[];\n onSourceMouseEnter: () => void;\n onSourceMouseLeave: () => void;\n disableLinking: boolean;\n isLinkerActive: boolean;\n isLoaded: boolean;\n isValueShown: boolean;\n settingsError: string;\n source: LinkPoint;\n value: string | null;\n values: (string | null)[];\n onChange: (change: {\n column: Partial<Column> | null;\n isValueShown?: boolean;\n value?: string;\n }) => void;\n onColumnSelected: () => void;\n}\n\ninterface DropdownFilterState {\n column: DropdownFilterColumn | null;\n selectedColumn: DropdownFilterColumn | null;\n disableCancel: boolean;\n isValueShown: boolean;\n value: string | null;\n id: string;\n}\n\nexport class DropdownFilter extends Component<\n DropdownFilterProps,\n DropdownFilterState\n> {\n static defaultProps = {\n column: null,\n disableLinking: false,\n isLinkerActive: false,\n isLoaded: false,\n isValueShown: false,\n\n settingsError: null,\n source: null,\n value: '',\n values: [],\n onColumnSelected: (): void => undefined,\n onSourceMouseEnter: (): void => undefined,\n onSourceMouseLeave: (): void => undefined,\n };\n\n static PLACEHOLDER = 'Select a value...';\n\n static SOURCE_BUTTON_CLASS_NAME = 'btn-dropdown-filter-selector';\n\n static SOURCE_BUTTON_PLACEHOLDER = 'Select a column';\n\n constructor(props: DropdownFilterProps) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\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.handleDropdownKeyPress = this.handleDropdownKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n\n this.dropdownRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n id: shortid(),\n selectedColumn: column,\n disableCancel: !isValueShown,\n isValueShown,\n value,\n };\n }\n\n componentDidUpdate(\n prevProps: DropdownFilterProps,\n prevState: DropdownFilterState\n ): void {\n const { source, values, isLoaded } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (isLoaded) {\n if (source !== prevProps.source) {\n this.sourceUpdated();\n }\n\n if (\n values !== prevProps.values &&\n value !== '' &&\n !values.includes(value)\n ) {\n // Value list loaded, but doesn't contain the current value\n this.resetValue();\n }\n\n if (isValueShown !== prevState.isValueShown) {\n if (isValueShown) {\n this.focusInput();\n }\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.sendUpdate.flush();\n }\n\n dropdownRef: RefObject<HTMLSelectElement>;\n\n getCompatibleColumns = memoize(\n (source: LinkPoint, columns: DropdownFilterColumn[]) =>\n source != null\n ? columns.filter(\n ({ type }) =>\n type !== undefined &&\n TableUtils.isCompatibleType(type, source.columnType)\n )\n : []\n );\n\n getColumnOptions = memoize(\n (\n columns: DropdownFilterColumn[],\n selectedColumn: DropdownFilterColumn | null\n ): [JSX.Element[], number] => {\n let selectedIndex = -1;\n const options = [];\n options.push(\n <option key=\"placeholder\" value=\"-1\">\n Select a column\n </option>\n );\n columns.forEach((columnItem, index) => {\n options.push(\n <option key={`${columnItem.name}/${columnItem.type}`} value={index}>\n {this.getItemLabel(columns, index)}\n </option>\n );\n if (\n selectedColumn !== null &&\n columnItem.name === selectedColumn.name &&\n columnItem.type === selectedColumn.type\n ) {\n selectedIndex = index;\n }\n });\n return [options, selectedIndex];\n }\n );\n\n getSelectedOptionIndex = memoize(\n (values: (string | null)[], value: string | null) => values.indexOf(value)\n );\n\n getValueOptions = memoize((values: (string | null)[]) => [\n <option value=\"-1\" key=\"-1\">\n {DropdownFilter.PLACEHOLDER}\n </option>,\n ...values.map((val, index) => (\n <option\n value={index}\n // eslint-disable-next-line react/no-array-index-key\n key={`${index}/${val}`}\n >\n {val ?? '(null)'}\n </option>\n )),\n ]);\n\n getItemLabel = memoizee((columns: DropdownFilterColumn[], index: number) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(eventTargetValue: string): void {\n const value = eventTargetValue;\n log.debug2('handleColumnChange', value);\n if (value != null && parseInt(value, 10) < 0) {\n this.setState({\n selectedColumn: null,\n });\n return;\n }\n const { columns: allColumns, source } = this.props;\n const columns = this.getCompatibleColumns(source, allColumns);\n this.setState({\n selectedColumn: columns[parseInt(value, 10)],\n });\n }\n\n handleDropdownKeyPress(event: KeyboardEvent<HTMLSelectElement>): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n\n log.debug2('handleDropdownKeyPress');\n\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n }\n\n handleValueChange(eventTargetValue: string): void {\n const valueIndex = eventTargetValue;\n const index = parseInt(valueIndex, 10);\n // Default empty string value for 'clear filter'\n let value: string | null = '';\n const { values } = this.props;\n if (index >= 0 && index < values.length) {\n value = values[index];\n } else {\n log.debug2('Selected default item');\n }\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel(): void {\n this.setState(({ column }) => ({\n selectedColumn: column,\n isValueShown: true,\n }));\n }\n\n handleSettingsSave(): void {\n this.setState(({ column, selectedColumn, value }) => ({\n column: selectedColumn,\n // Reset value if column changed\n value: column === selectedColumn ? value : '',\n isValueShown: true,\n disableCancel: false,\n }));\n }\n\n handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void {\n event.stopPropagation();\n this.showSettings();\n }\n\n handleBackgroundClick(event: MouseEvent<HTMLDivElement>): void {\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 sourceUpdated(): void {\n this.setState({\n column: null,\n selectedColumn: null,\n isValueShown: false,\n disableCancel: true,\n value: '',\n });\n }\n\n showSettings(): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n resetValue(): void {\n this.setState({ value: '' });\n }\n\n // Called by the parent component via ref\n clearFilter(): void {\n this.resetValue();\n }\n\n // Called by the parent component via ref\n setFilterState({\n name,\n type,\n value,\n isValueShown,\n }: {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n }): void {\n const column = name != null && type != null ? { name, type } : null;\n this.setState(({ value: oldValue, isValueShown: oldIsValueShown }) => ({\n column,\n value: value ?? oldValue,\n isValueShown: isValueShown ?? oldIsValueShown,\n }));\n }\n\n sendUpdate = debounce(() => {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value: value ?? undefined });\n }, UPDATE_DEBOUNCE);\n\n render(): ReactElement {\n const {\n columns: allColumns,\n disableLinking,\n isLinkerActive,\n isLoaded,\n source,\n onColumnSelected,\n onSourceMouseEnter,\n onSourceMouseLeave,\n values,\n settingsError,\n } = this.props;\n const { column, disableCancel, id, isValueShown, selectedColumn, value } =\n this.state;\n const columnSelectionDisabled = source === null;\n const columns = this.getCompatibleColumns(source, allColumns);\n const isLinked = source != null;\n const sourceButtonLabel =\n source?.columnName ?? DropdownFilter.SOURCE_BUTTON_PLACEHOLDER;\n const filterTitle = column != null ? `${column.name} Filter` : null;\n const [columnOptions, selectedIndex] = this.getColumnOptions(\n columns,\n selectedColumn\n );\n const valueOptions = this.getValueOptions(values);\n const selectedOption = this.getSelectedOptionIndex(values, value);\n const disableSave = !isLinked || selectedColumn == null;\n\n const isFlipped = isValueShown && !isLinkerActive;\n\n const sourceColumnId = `source-column-btn-${id}`;\n const filterColumnId = `filter-column-select-${id}`;\n\n return (\n <CardFlip\n className=\"dropdown-filter fill-parent-absolute\"\n isFlipped={isFlipped}\n >\n <div className=\"dropdown-filter-settings-card\">\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-settings-grid\">\n <label htmlFor={sourceColumnId}>Source Column</label>\n <SocketedButton\n id={sourceColumnId}\n isLinked={isLinked}\n onClick={onColumnSelected}\n onMouseEnter={onSourceMouseEnter}\n onMouseLeave={onSourceMouseLeave}\n className={DropdownFilter.SOURCE_BUTTON_CLASS_NAME}\n disabled={disableLinking}\n >\n {sourceButtonLabel}\n </SocketedButton>\n\n <div className=\"text-muted small\">\n Select a source column for the list by linking to a table.\n </div>\n\n <label htmlFor={filterColumnId}>Filter Column</label>\n <Select\n id={filterColumnId}\n value={String(selectedIndex)}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n disabled={columnSelectionDisabled}\n >\n {columnOptions}\n </Select>\n <div className=\"text-muted small\">\n Dropdown filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n {settingsError && (\n <div className=\"error-message text-center\">{settingsError}</div>\n )}\n {isLinked && (\n <div className=\"dropdown-filter-settings-buttons\">\n <Button\n kind=\"secondary\"\n type=\"button\"\n onClick={this.handleSettingsCancel}\n disabled={disableCancel || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive\n ? 'Cancel disabled while linker open'\n : undefined\n }\n >\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n type=\"button\"\n className=\"ml-2\"\n onClick={this.handleSettingsSave}\n disabled={disableSave || isValueShown || isLinkerActive}\n tooltip={\n isLinkerActive\n ? 'Save disabled while linker open'\n : undefined\n }\n >\n Save\n </Button>\n </div>\n )}\n </div>\n </div>\n\n <div\n className=\"dropdown-filter-value-card\"\n onClick={this.handleBackgroundClick}\n data-testid=\"dropdown-filter-value-background\"\n >\n {isLoaded && (\n <>\n <div className=\"dropdown-filter-column\">\n <div className=\"dropdown-filter-column-title\">\n {filterTitle}\n </div>\n </div>\n <div className=\"dropdown-filter-card-content\">\n <div className=\"dropdown-filter-value-input d-flex flex-column justify-content-center\">\n <Select\n className=\"custom-select\"\n value={String(selectedOption)}\n ref={this.dropdownRef}\n onChange={this.handleValueChange}\n onKeyDown={this.handleDropdownKeyPress}\n title=\"Select Value\"\n >\n {valueOptions}\n </Select>\n </div>\n {settingsError && (\n <div className=\"error-message mt-3 text-center\">\n {settingsError}\n </div>\n )}\n </div>\n <div className=\"dropdown-filter-menu\">\n <Button\n kind=\"ghost\"\n className=\"m-2 px-2\"\n onClick={this.handleSettingsClick}\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n tooltip=\"Dropdown Filter Settings\"\n />\n </div>\n </>\n )}\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default DropdownFilter;\n"],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ declare class InputFilter extends Component<InputFilterProps, InputFilterState>
|
|
|
33
33
|
componentWillUnmount(): void;
|
|
34
34
|
inputRef: RefObject<HTMLInputElement>;
|
|
35
35
|
getItemLabel: ((columns: InputFilterColumn[], index: number) => string) & memoizee.Memoized<(columns: InputFilterColumn[], index: number) => string>;
|
|
36
|
-
handleColumnChange(
|
|
36
|
+
handleColumnChange(eventTargetValue: string): void;
|
|
37
37
|
handleInputKeyPress(event: KeyboardEvent<HTMLInputElement>): void;
|
|
38
38
|
handleValueChange(event: ChangeEvent<HTMLInputElement>): void;
|
|
39
39
|
handleSettingsCancel(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputFilter.d.ts","sourceRoot":"","sources":["../../../src/controls/input-filter/InputFilter.tsx"],"names":[],"mappings":";AAIA,OAAc,EACZ,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACb,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,OAAO,oBAAoB,CAAC;AAK5B,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAE9D,UAAU,gBAAgB;IACxB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,MAAM,EAAE;QACjB,MAAM,CAAC,EAAE,iBAAiB,CAAC;QAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,cAAM,WAAY,SAAQ,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACrE,MAAM,CAAC,WAAW,SAAoB;IAEtC,MAAM,CAAC,YAAY;;;;MAIjB;gBAEU,KAAK,EAAE,gBAAgB;IAsBnC,kBAAkB,CAChB,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,gBAAgB,GAC1B,IAAI;IA0BP,oBAAoB,IAAI,IAAI;IAI5B,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEtC,YAAY,aAAsB,iBAAiB,EAAE,SAAS,MAAM,2CAAlC,iBAAiB,EAAE,SAAS,MAAM,aAYjE;IAEH,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"InputFilter.d.ts","sourceRoot":"","sources":["../../../src/controls/input-filter/InputFilter.tsx"],"names":[],"mappings":";AAIA,OAAc,EACZ,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACb,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,OAAO,oBAAoB,CAAC;AAK5B,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAE9D,UAAU,gBAAgB;IACxB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,MAAM,EAAE;QACjB,MAAM,CAAC,EAAE,iBAAiB,CAAC;QAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,cAAM,WAAY,SAAQ,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACrE,MAAM,CAAC,WAAW,SAAoB;IAEtC,MAAM,CAAC,YAAY;;;;MAIjB;gBAEU,KAAK,EAAE,gBAAgB;IAsBnC,kBAAkB,CAChB,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,gBAAgB,GAC1B,IAAI;IA0BP,oBAAoB,IAAI,IAAI;IAI5B,QAAQ,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEtC,YAAY,aAAsB,iBAAiB,EAAE,SAAS,MAAM,2CAAlC,iBAAiB,EAAE,SAAS,MAAM,aAYjE;IAEH,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IASlD,mBAAmB,CAAC,KAAK,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAcjE,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAQ7D,oBAAoB,IAAI,IAAI;IAK5B,kBAAkB,IAAI,IAAI;IAK1B,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAM/D,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,IAAI;IAO9D,UAAU,IAAI,IAAI;IAOlB,WAAW,IAAI,IAAI;IAInB,cAAc,CAAC,EACb,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,YAAY,GACb,EAAE;QACD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,GAAG,IAAI;IASR,UAAU,6CAIU;IAEpB,MAAM,IAAI,YAAY;CA+GvB;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -6,7 +6,7 @@ function _toPrimitive(input, hint) { if (typeof input !== "object" || input ===
|
|
|
6
6
|
// background click is just a convience method, not an actual a11y issue
|
|
7
7
|
|
|
8
8
|
import React, { Component } from 'react';
|
|
9
|
-
import { Button, CardFlip } from '@deephaven/components';
|
|
9
|
+
import { Button, CardFlip, Select } from '@deephaven/components';
|
|
10
10
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
11
11
|
import { vsGear } from '@deephaven/icons';
|
|
12
12
|
import memoizee from 'memoizee';
|
|
@@ -93,14 +93,11 @@ class InputFilter extends Component {
|
|
|
93
93
|
componentWillUnmount() {
|
|
94
94
|
this.sendUpdate.flush();
|
|
95
95
|
}
|
|
96
|
-
handleColumnChange(
|
|
96
|
+
handleColumnChange(eventTargetValue) {
|
|
97
97
|
var {
|
|
98
98
|
columns
|
|
99
99
|
} = this.props;
|
|
100
|
-
var
|
|
101
|
-
value
|
|
102
|
-
} = event.target;
|
|
103
|
-
var selectedColumn = columns[parseInt(value, 10)];
|
|
100
|
+
var selectedColumn = columns[parseInt(eventTargetValue, 10)];
|
|
104
101
|
log.debug2('handleColumnChange', selectedColumn);
|
|
105
102
|
this.setState({
|
|
106
103
|
selectedColumn,
|
|
@@ -226,8 +223,8 @@ class InputFilter extends Component {
|
|
|
226
223
|
className: "input-filter-settings-grid",
|
|
227
224
|
children: [/*#__PURE__*/_jsx("label", {
|
|
228
225
|
children: "Filter Column"
|
|
229
|
-
}), /*#__PURE__*/_jsxs(
|
|
230
|
-
value: columns.findIndex(item => item.name === (selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.name) && item.type === (selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.type)),
|
|
226
|
+
}), /*#__PURE__*/_jsxs(Select, {
|
|
227
|
+
value: String(columns.findIndex(item => item.name === (selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.name) && item.type === (selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.type))),
|
|
231
228
|
className: "custom-select",
|
|
232
229
|
onChange: this.handleColumnChange,
|
|
233
230
|
children: [columns.map((columnItem, index) => /*#__PURE__*/_jsx("option", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputFilter.js","names":["React","Component","Button","CardFlip","FontAwesomeIcon","vsGear","memoizee","debounce","Log","jsx","_jsx","jsxs","_jsxs","log","module","UPDATE_DEBOUNCE","InputFilter","constructor","props","_defineProperty","columns","index","name","type","length","shortType","substring","lastIndexOf","concat","onChange","column","value","isValueShown","state","handleColumnChange","bind","handleInputKeyPress","handleValueChange","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","inputRef","createRef","selectedColumn","componentDidUpdate","prevProps","prevState","propColumn","setState","undefined","focusInput","sendUpdate","componentWillUnmount","flush","event","target","parseInt","debug2","key","preventDefault","stopPropagation","_ref","current","select","focus","clearFilter","setFilterState","_ref2","update","render","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","className","isFlipped","children","map","columnItem","disabled","kind","onClick","ref","placeholder","onKeyPress","style","width","spellCheck","icon","transform","tooltip"],"sources":["../../../src/controls/input-filter/InputFilter.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 convience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n RefObject,\n MouseEvent,\n KeyboardEvent,\n ReactElement,\n} from 'react';\nimport { Button, CardFlip } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGear } from '@deephaven/icons';\nimport type { Column } from '@deephaven/jsapi-types';\nimport memoizee from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './InputFilter.scss';\n\nconst log = Log.module('InputFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nexport type InputFilterColumn = Pick<Column, 'type' | 'name'>;\n\ninterface InputFilterProps {\n columns: InputFilterColumn[];\n column: InputFilterColumn;\n isValueShown: boolean;\n value: string;\n onChange: (change: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }) => void;\n}\n\nexport interface InputFilterState {\n column?: InputFilterColumn;\n selectedColumn?: InputFilterColumn;\n value?: string;\n isValueShown?: boolean;\n}\n\nclass InputFilter extends Component<InputFilterProps, InputFilterState> {\n static PLACEHOLDER = 'Enter value...';\n\n static defaultProps = {\n column: null,\n isValueShown: false,\n value: null,\n };\n\n constructor(props: InputFilterProps) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleInputKeyPress = this.handleInputKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\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\n this.inputRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n selectedColumn: column,\n value,\n isValueShown,\n };\n }\n\n componentDidUpdate(\n prevProps: InputFilterProps,\n prevState: InputFilterState\n ): void {\n const { column: propColumn } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (propColumn !== prevProps.column) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ column: propColumn, selectedColumn: propColumn });\n }\n\n if (\n isValueShown !== undefined &&\n isValueShown &&\n isValueShown !== prevState.isValueShown\n ) {\n this.focusInput();\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n\n componentWillUnmount(): void {\n this.sendUpdate.flush();\n }\n\n inputRef: RefObject<HTMLInputElement>;\n\n getItemLabel = memoizee((columns: InputFilterColumn[], index: number) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { columns } = this.props;\n const { value } = event.target;\n const selectedColumn = columns[parseInt(value, 10)];\n\n log.debug2('handleColumnChange', selectedColumn);\n\n this.setState({ selectedColumn, value: undefined });\n }\n\n handleInputKeyPress(event: KeyboardEvent<HTMLInputElement>): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.setState(\n ({ value }) => (value == null ? { value: '' } : null),\n () => {\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n );\n }\n }\n\n handleValueChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value } = event.target;\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel(): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: true });\n }\n\n handleSettingsSave(): void {\n const { selectedColumn } = this.state;\n this.setState({ column: selectedColumn, isValueShown: true });\n }\n\n handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n event.stopPropagation();\n }\n\n handleBackgroundClick(event: MouseEvent<HTMLDivElement>): void {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.inputRef.current) {\n this.focusInput();\n }\n }\n\n focusInput(): void {\n if (this.inputRef.current !== null) {\n this.inputRef.current.select();\n this.inputRef.current.focus();\n }\n }\n\n clearFilter(): void {\n this.setState({ value: '' });\n }\n\n setFilterState({\n name,\n type,\n value,\n isValueShown,\n }: {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n }): void {\n const column = name != null && type != null ? { name, type } : undefined;\n const update =\n isValueShown === undefined\n ? { column, value }\n : { column, value, isValueShown };\n this.setState(update);\n }\n\n sendUpdate = debounce(() => {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value });\n }, UPDATE_DEBOUNCE);\n\n render(): ReactElement {\n const { columns } = this.props;\n const { column, isValueShown, selectedColumn, value } = this.state;\n const inputLength =\n value == null || value.length === 0\n ? InputFilter.PLACEHOLDER.length\n : value.length;\n let titleLabel = null;\n if (column != null) {\n const columnIndex = columns.findIndex(\n item => item.name === column.name && item.type === column.type\n );\n titleLabel =\n columnIndex >= 0\n ? this.getItemLabel(columns, columnIndex)\n : column.name;\n }\n\n return (\n <CardFlip\n className=\"input-filter fill-parent-absolute\"\n isFlipped={isValueShown ?? false}\n >\n <div className=\"input-filter-settings-card\">\n <div className=\"input-filter-settings-content\">\n <div className=\"input-filter-settings-grid\">\n <label>Filter Column</label>\n <select\n value={columns.findIndex(\n item =>\n item.name === selectedColumn?.name &&\n item.type === selectedColumn?.type\n )}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n >\n {columns.map((columnItem, index) => (\n <option\n key={`${columnItem.name}/${columnItem.type}`}\n value={index}\n >\n {this.getItemLabel(columns, index)}\n </option>\n ))}\n {columns.length === 0 && (\n <option value=\"-1\" disabled>\n No Available Columns\n </option>\n )}\n </select>\n <div className=\"text-muted small\">\n Input filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n <div className=\"input-filter-settings-buttons\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n disabled={column == null}\n >\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n className=\"ml-2\"\n onClick={this.handleSettingsSave}\n disabled={selectedColumn == null}\n >\n Save\n </Button>\n </div>\n </div>\n </div>\n\n <div\n className=\"input-filter-value-card\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"input-filter-column\">\n <div className=\"input-filter-column-title\">{titleLabel} Filter</div>\n </div>\n <div className=\"d-flex justify-content-center align-items-center h-100 w-100\">\n <div className=\"input-filter-value-input d-flex flex-column justify-content-center\">\n <input\n type=\"text\"\n ref={this.inputRef}\n placeholder={InputFilter.PLACEHOLDER}\n value={value ?? ''}\n onChange={this.handleValueChange}\n onKeyPress={this.handleInputKeyPress}\n style={{ width: `${inputLength + 3}ch` }}\n spellCheck=\"false\"\n />\n </div>\n </div>\n <div className=\"input-filter-menu\">\n <Button\n kind=\"ghost\"\n className=\"m-2 px-2\"\n onClick={this.handleSettingsClick}\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n tooltip=\"Input Filter Settings\"\n />\n </div>\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default InputFilter;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InputFilter.js","names":["React","Component","Button","CardFlip","Select","FontAwesomeIcon","vsGear","memoizee","debounce","Log","jsx","_jsx","jsxs","_jsxs","log","module","UPDATE_DEBOUNCE","InputFilter","constructor","props","_defineProperty","columns","index","name","type","length","shortType","substring","lastIndexOf","concat","onChange","column","value","isValueShown","state","handleColumnChange","bind","handleInputKeyPress","handleValueChange","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","inputRef","createRef","selectedColumn","componentDidUpdate","prevProps","prevState","propColumn","setState","undefined","focusInput","sendUpdate","componentWillUnmount","flush","eventTargetValue","parseInt","debug2","event","key","preventDefault","stopPropagation","_ref","target","current","select","focus","clearFilter","setFilterState","_ref2","update","render","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","className","isFlipped","children","String","map","columnItem","disabled","kind","onClick","ref","placeholder","onKeyPress","style","width","spellCheck","icon","transform","tooltip"],"sources":["../../../src/controls/input-filter/InputFilter.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 convience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n RefObject,\n MouseEvent,\n KeyboardEvent,\n ReactElement,\n} from 'react';\nimport { Button, CardFlip, Select } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGear } from '@deephaven/icons';\nimport type { Column } from '@deephaven/jsapi-types';\nimport memoizee from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './InputFilter.scss';\n\nconst log = Log.module('InputFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nexport type InputFilterColumn = Pick<Column, 'type' | 'name'>;\n\ninterface InputFilterProps {\n columns: InputFilterColumn[];\n column: InputFilterColumn;\n isValueShown: boolean;\n value: string;\n onChange: (change: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }) => void;\n}\n\nexport interface InputFilterState {\n column?: InputFilterColumn;\n selectedColumn?: InputFilterColumn;\n value?: string;\n isValueShown?: boolean;\n}\n\nclass InputFilter extends Component<InputFilterProps, InputFilterState> {\n static PLACEHOLDER = 'Enter value...';\n\n static defaultProps = {\n column: null,\n isValueShown: false,\n value: null,\n };\n\n constructor(props: InputFilterProps) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleInputKeyPress = this.handleInputKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\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\n this.inputRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n selectedColumn: column,\n value,\n isValueShown,\n };\n }\n\n componentDidUpdate(\n prevProps: InputFilterProps,\n prevState: InputFilterState\n ): void {\n const { column: propColumn } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (propColumn !== prevProps.column) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ column: propColumn, selectedColumn: propColumn });\n }\n\n if (\n isValueShown !== undefined &&\n isValueShown &&\n isValueShown !== prevState.isValueShown\n ) {\n this.focusInput();\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n\n componentWillUnmount(): void {\n this.sendUpdate.flush();\n }\n\n inputRef: RefObject<HTMLInputElement>;\n\n getItemLabel = memoizee((columns: InputFilterColumn[], index: number) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(eventTargetValue: string): void {\n const { columns } = this.props;\n const selectedColumn = columns[parseInt(eventTargetValue, 10)];\n\n log.debug2('handleColumnChange', selectedColumn);\n\n this.setState({ selectedColumn, value: undefined });\n }\n\n handleInputKeyPress(event: KeyboardEvent<HTMLInputElement>): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.setState(\n ({ value }) => (value == null ? { value: '' } : null),\n () => {\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n );\n }\n }\n\n handleValueChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value } = event.target;\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel(): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: true });\n }\n\n handleSettingsSave(): void {\n const { selectedColumn } = this.state;\n this.setState({ column: selectedColumn, isValueShown: true });\n }\n\n handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n event.stopPropagation();\n }\n\n handleBackgroundClick(event: MouseEvent<HTMLDivElement>): void {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.inputRef.current) {\n this.focusInput();\n }\n }\n\n focusInput(): void {\n if (this.inputRef.current !== null) {\n this.inputRef.current.select();\n this.inputRef.current.focus();\n }\n }\n\n clearFilter(): void {\n this.setState({ value: '' });\n }\n\n setFilterState({\n name,\n type,\n value,\n isValueShown,\n }: {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n }): void {\n const column = name != null && type != null ? { name, type } : undefined;\n const update =\n isValueShown === undefined\n ? { column, value }\n : { column, value, isValueShown };\n this.setState(update);\n }\n\n sendUpdate = debounce(() => {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value });\n }, UPDATE_DEBOUNCE);\n\n render(): ReactElement {\n const { columns } = this.props;\n const { column, isValueShown, selectedColumn, value } = this.state;\n const inputLength =\n value == null || value.length === 0\n ? InputFilter.PLACEHOLDER.length\n : value.length;\n let titleLabel = null;\n if (column != null) {\n const columnIndex = columns.findIndex(\n item => item.name === column.name && item.type === column.type\n );\n titleLabel =\n columnIndex >= 0\n ? this.getItemLabel(columns, columnIndex)\n : column.name;\n }\n\n return (\n <CardFlip\n className=\"input-filter fill-parent-absolute\"\n isFlipped={isValueShown ?? false}\n >\n <div className=\"input-filter-settings-card\">\n <div className=\"input-filter-settings-content\">\n <div className=\"input-filter-settings-grid\">\n <label>Filter Column</label>\n <Select\n value={String(\n columns.findIndex(\n item =>\n item.name === selectedColumn?.name &&\n item.type === selectedColumn?.type\n )\n )}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n >\n {columns.map((columnItem, index) => (\n <option\n key={`${columnItem.name}/${columnItem.type}`}\n value={index}\n >\n {this.getItemLabel(columns, index)}\n </option>\n ))}\n {columns.length === 0 && (\n <option value=\"-1\" disabled>\n No Available Columns\n </option>\n )}\n </Select>\n <div className=\"text-muted small\">\n Input filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n <div className=\"input-filter-settings-buttons\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n disabled={column == null}\n >\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n className=\"ml-2\"\n onClick={this.handleSettingsSave}\n disabled={selectedColumn == null}\n >\n Save\n </Button>\n </div>\n </div>\n </div>\n\n <div\n className=\"input-filter-value-card\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"input-filter-column\">\n <div className=\"input-filter-column-title\">{titleLabel} Filter</div>\n </div>\n <div className=\"d-flex justify-content-center align-items-center h-100 w-100\">\n <div className=\"input-filter-value-input d-flex flex-column justify-content-center\">\n <input\n type=\"text\"\n ref={this.inputRef}\n placeholder={InputFilter.PLACEHOLDER}\n value={value ?? ''}\n onChange={this.handleValueChange}\n onKeyPress={this.handleInputKeyPress}\n style={{ width: `${inputLength + 3}ch` }}\n spellCheck=\"false\"\n />\n </div>\n </div>\n <div className=\"input-filter-menu\">\n <Button\n kind=\"ghost\"\n className=\"m-2 px-2\"\n onClick={this.handleSettingsClick}\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n tooltip=\"Input Filter Settings\"\n />\n </div>\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default InputFilter;\n"],"mappings":"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"}
|
|
@@ -43,8 +43,8 @@ declare class FilterSetManager extends Component<FilterSetManagerProps, FilterSe
|
|
|
43
43
|
private editDropdownRef;
|
|
44
44
|
initSettingsScreen(): void;
|
|
45
45
|
updateSelectedId(): void;
|
|
46
|
-
handleEditDropdownChange(
|
|
47
|
-
handleFilterChange(
|
|
46
|
+
handleEditDropdownChange(eventTargetValue: string): void;
|
|
47
|
+
handleFilterChange(eventTargetValue: string): void;
|
|
48
48
|
handleFilterApply(): void;
|
|
49
49
|
handleSettingsCancel(): void;
|
|
50
50
|
handleSettingsSave(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterSetManager.d.ts","sourceRoot":"","sources":["../../src/panels/FilterSetManager.tsx"],"names":[],"mappings":"AAIA,OAAc,EACZ,WAAW,EACX,SAAS,EACT,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"FilterSetManager.d.ts","sourceRoot":"","sources":["../../src/panels/FilterSetManager.tsx"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import shortid from 'shortid';
|
|
|
13
13
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
14
14
|
import { vsEdit, vsGear, vsSave, vsCircleSlash, vsTrash, vsDeviceCamera, dhRefresh, dhNewCircleLargeFilled, vsCircleLargeFilled, vsArrowSmallUp } from '@deephaven/icons';
|
|
15
15
|
import Log from '@deephaven/log';
|
|
16
|
-
import { Button, CardFlip, RadioGroup, RadioItem } from '@deephaven/components';
|
|
16
|
+
import { Button, CardFlip, RadioGroup, RadioItem, Select } from '@deephaven/components';
|
|
17
17
|
import "./FilterSetManager.css";
|
|
18
18
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
19
19
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -145,18 +145,13 @@ class FilterSetManager extends Component {
|
|
|
145
145
|
});
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
|
-
handleEditDropdownChange(
|
|
149
|
-
var {
|
|
150
|
-
value: editId
|
|
151
|
-
} = event.target;
|
|
148
|
+
handleEditDropdownChange(eventTargetValue) {
|
|
152
149
|
this.setState({
|
|
153
|
-
editId
|
|
150
|
+
editId: eventTargetValue
|
|
154
151
|
});
|
|
155
152
|
}
|
|
156
|
-
handleFilterChange(
|
|
157
|
-
var
|
|
158
|
-
value: selectedId
|
|
159
|
-
} = event.target;
|
|
153
|
+
handleFilterChange(eventTargetValue) {
|
|
154
|
+
var selectedId = eventTargetValue;
|
|
160
155
|
var {
|
|
161
156
|
isValueShown,
|
|
162
157
|
onChange
|
|
@@ -602,7 +597,7 @@ class FilterSetManager extends Component {
|
|
|
602
597
|
children: "Edit filter sets"
|
|
603
598
|
}), /*#__PURE__*/_jsxs("div", {
|
|
604
599
|
className: "filter-select-container",
|
|
605
|
-
children: [/*#__PURE__*/_jsxs(
|
|
600
|
+
children: [/*#__PURE__*/_jsxs(Select, {
|
|
606
601
|
"data-testid": "settings-card-filter-select",
|
|
607
602
|
ref: this.editDropdownRef,
|
|
608
603
|
value: editId !== null && editId !== void 0 ? editId : '-1',
|
|
@@ -680,10 +675,10 @@ class FilterSetManager extends Component {
|
|
|
680
675
|
className: "filter-set-manager-value-input",
|
|
681
676
|
children: /*#__PURE__*/_jsxs("div", {
|
|
682
677
|
className: "filter-select-container",
|
|
683
|
-
children: [/*#__PURE__*/_jsxs(
|
|
678
|
+
children: [/*#__PURE__*/_jsxs(Select, {
|
|
684
679
|
"data-testid": "value-card-filter-select",
|
|
685
680
|
ref: this.dropdownRef,
|
|
686
|
-
value: selectedId,
|
|
681
|
+
value: selectedId !== null && selectedId !== void 0 ? selectedId : '-1',
|
|
687
682
|
className: "custom-select filter-value-select",
|
|
688
683
|
onChange: this.handleFilterChange,
|
|
689
684
|
children: [filterSets.length === 0 && /*#__PURE__*/_jsx("option", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterSetManager.js","names":["React","Component","memoizeOne","shortid","FontAwesomeIcon","vsEdit","vsGear","vsSave","vsCircleSlash","vsTrash","vsDeviceCamera","dhRefresh","dhNewCircleLargeFilled","vsCircleLargeFilled","vsArrowSmallUp","Log","Button","CardFlip","RadioGroup","RadioItem","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","event","value","target","applyFilterSet","onUpdateSets","getFilterState","panels","title","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","_ref10","stopPropagation","dropdownRef","current","focusInput","key","preventDefault","arguments","onApply","filterSet","_ref11","_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","_ref12","_ref13"],"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 ChangeEvent,\n Component,\n ReactNode,\n KeyboardEvent,\n MouseEvent,\n} from 'react';\nimport memoizeOne from 'memoize-one';\nimport shortid from 'shortid';\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 { Button, CardFlip, RadioGroup, RadioItem } 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(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: editId } = event.target;\n this.setState({ editId });\n }\n\n handleFilterChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: selectedId } = event.target;\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 = shortid();\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(event: ChangeEvent<HTMLInputElement>): void {\n this.setState({\n restoreFullState: event.target.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 onChange={this.handleRestoreFullStateChange}\n value={`${restoreFullState}`}\n >\n <RadioItem value=\"false\">Restore only filters</RadioItem>\n <RadioItem value=\"true\">\n Restore full table state\n </RadioItem>\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}\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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"}
|
|
1
|
+
{"version":3,"file":"FilterSetManager.js","names":["React","Component","memoizeOne","shortid","FontAwesomeIcon","vsEdit","vsGear","vsSave","vsCircleSlash","vsTrash","vsDeviceCamera","dhRefresh","dhNewCircleLargeFilled","vsCircleLargeFilled","vsArrowSmallUp","Log","Button","CardFlip","RadioGroup","RadioItem","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","event","target","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","_ref10","stopPropagation","dropdownRef","current","focusInput","key","preventDefault","arguments","onApply","filterSet","_ref11","_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","_ref12","_ref13"],"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 ChangeEvent,\n Component,\n ReactNode,\n KeyboardEvent,\n MouseEvent,\n} from 'react';\nimport memoizeOne from 'memoize-one';\nimport shortid from 'shortid';\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 RadioItem,\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 = shortid();\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(event: ChangeEvent<HTMLInputElement>): void {\n this.setState({\n restoreFullState: event.target.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 onChange={this.handleRestoreFullStateChange}\n value={`${restoreFullState}`}\n >\n <RadioItem value=\"false\">Restore only filters</RadioItem>\n <RadioItem value=\"true\">\n Restore full table state\n </RadioItem>\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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/dashboard-core-plugins",
|
|
3
|
-
"version": "0.54.1-beta.
|
|
3
|
+
"version": "0.54.1-beta.2+737d1aa9",
|
|
4
4
|
"description": "Deephaven Dashboard Core Plugins",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,26 +22,26 @@
|
|
|
22
22
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@deephaven/chart": "^0.54.1-beta.
|
|
26
|
-
"@deephaven/components": "^0.54.1-beta.
|
|
27
|
-
"@deephaven/console": "^0.54.1-beta.
|
|
28
|
-
"@deephaven/dashboard": "^0.54.1-beta.
|
|
29
|
-
"@deephaven/file-explorer": "^0.54.1-beta.
|
|
30
|
-
"@deephaven/filters": "^0.54.1-beta.
|
|
31
|
-
"@deephaven/golden-layout": "^0.54.1-beta.
|
|
32
|
-
"@deephaven/grid": "^0.54.1-beta.
|
|
33
|
-
"@deephaven/icons": "^0.54.1-beta.
|
|
34
|
-
"@deephaven/iris-grid": "^0.54.1-beta.
|
|
35
|
-
"@deephaven/jsapi-bootstrap": "^0.54.1-beta.
|
|
36
|
-
"@deephaven/jsapi-components": "^0.54.1-beta.
|
|
37
|
-
"@deephaven/jsapi-types": "^0.54.1-beta.
|
|
38
|
-
"@deephaven/jsapi-utils": "^0.54.1-beta.
|
|
39
|
-
"@deephaven/log": "^0.54.1-beta.
|
|
40
|
-
"@deephaven/plugin": "^0.54.1-beta.
|
|
41
|
-
"@deephaven/react-hooks": "^0.54.1-beta.
|
|
42
|
-
"@deephaven/redux": "^0.54.1-beta.
|
|
43
|
-
"@deephaven/storage": "^0.54.1-beta.
|
|
44
|
-
"@deephaven/utils": "^0.54.1-beta.
|
|
25
|
+
"@deephaven/chart": "^0.54.1-beta.2+737d1aa9",
|
|
26
|
+
"@deephaven/components": "^0.54.1-beta.2+737d1aa9",
|
|
27
|
+
"@deephaven/console": "^0.54.1-beta.2+737d1aa9",
|
|
28
|
+
"@deephaven/dashboard": "^0.54.1-beta.2+737d1aa9",
|
|
29
|
+
"@deephaven/file-explorer": "^0.54.1-beta.2+737d1aa9",
|
|
30
|
+
"@deephaven/filters": "^0.54.1-beta.2+737d1aa9",
|
|
31
|
+
"@deephaven/golden-layout": "^0.54.1-beta.2+737d1aa9",
|
|
32
|
+
"@deephaven/grid": "^0.54.1-beta.2+737d1aa9",
|
|
33
|
+
"@deephaven/icons": "^0.54.1-beta.2+737d1aa9",
|
|
34
|
+
"@deephaven/iris-grid": "^0.54.1-beta.2+737d1aa9",
|
|
35
|
+
"@deephaven/jsapi-bootstrap": "^0.54.1-beta.2+737d1aa9",
|
|
36
|
+
"@deephaven/jsapi-components": "^0.54.1-beta.2+737d1aa9",
|
|
37
|
+
"@deephaven/jsapi-types": "^0.54.1-beta.2+737d1aa9",
|
|
38
|
+
"@deephaven/jsapi-utils": "^0.54.1-beta.2+737d1aa9",
|
|
39
|
+
"@deephaven/log": "^0.54.1-beta.2+737d1aa9",
|
|
40
|
+
"@deephaven/plugin": "^0.54.1-beta.2+737d1aa9",
|
|
41
|
+
"@deephaven/react-hooks": "^0.54.1-beta.2+737d1aa9",
|
|
42
|
+
"@deephaven/redux": "^0.54.1-beta.2+737d1aa9",
|
|
43
|
+
"@deephaven/storage": "^0.54.1-beta.2+737d1aa9",
|
|
44
|
+
"@deephaven/utils": "^0.54.1-beta.2+737d1aa9",
|
|
45
45
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
46
46
|
"classnames": "^2.3.1",
|
|
47
47
|
"deep-equal": "^2.0.5",
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
"react-redux": "^7.2.4"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@deephaven/jsapi-shim": "^0.54.1-beta.
|
|
68
|
-
"@deephaven/mocks": "^0.54.1-beta.
|
|
67
|
+
"@deephaven/jsapi-shim": "^0.54.1-beta.2+737d1aa9",
|
|
68
|
+
"@deephaven/mocks": "^0.54.1-beta.2+737d1aa9"
|
|
69
69
|
},
|
|
70
70
|
"files": [
|
|
71
71
|
"dist"
|
|
@@ -76,5 +76,5 @@
|
|
|
76
76
|
"publishConfig": {
|
|
77
77
|
"access": "public"
|
|
78
78
|
},
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "737d1aa98d04800377035d7d189219fefacfa23f"
|
|
80
80
|
}
|