@deephaven/dashboard-core-plugins 0.22.3-beta.15 → 0.22.3-beta.18

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.
@@ -5,7 +5,7 @@ import './DropdownFilter.scss';
5
5
  import { LinkPoint } from '../../linker/LinkerUtils';
6
6
  export interface DropdownFilterColumn {
7
7
  name: string;
8
- type?: string;
8
+ type: string;
9
9
  }
10
10
  interface DropdownFilterProps {
11
11
  column: DropdownFilterColumn;
@@ -60,7 +60,7 @@ declare class DropdownFilter extends Component<DropdownFilterProps, DropdownFilt
60
60
  getColumnOptions: (columns: DropdownFilterColumn[], selectedColumn: DropdownFilterColumn | null) => [JSX.Element[], number];
61
61
  getSelectedOptionIndex: (values: (string | null)[], value: string | null) => number;
62
62
  getValueOptions: (values: (string | null)[]) => JSX.Element[];
63
- getItemLabel: ((columns: any, index: any) => any) & memoizee.Memoized<(columns: any, index: any) => any>;
63
+ getItemLabel: ((columns: DropdownFilterColumn[], index: number) => string) & memoizee.Memoized<(columns: DropdownFilterColumn[], index: number) => string>;
64
64
  handleColumnChange(event: ChangeEvent<HTMLSelectElement>): void;
65
65
  handleDropdownKeyPress(event: KeyboardEvent<HTMLSelectElement>): void;
66
66
  handleValueChange(event: ChangeEvent<HTMLSelectElement>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownFilter.d.ts","sourceRoot":"","sources":["../../../src/controls/dropdown-filter/DropdownFilter.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DropdownFilter.d.ts","sourceRoot":"","sources":["../../../src/controls/dropdown-filter/DropdownFilter.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownFilter.js","names":["React","Component","FontAwesomeIcon","Button","CardFlip","SocketedButton","vsGear","TableUtils","memoizee","memoize","debounce","Log","log","module","UPDATE_DEBOUNCE","DropdownFilter","constructor","props","source","columns","filter","type","undefined","isCompatibleType","columnType","selectedColumn","selectedIndex","options","push","forEach","columnItem","index","name","getItemLabel","values","value","indexOf","PLACEHOLDER","map","val","length","shortType","substring","lastIndexOf","onChange","column","isValueShown","state","handleColumnChange","bind","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleDropdownKeyPress","handleValueChange","dropdownRef","createRef","disableCancel","componentDidUpdate","prevProps","prevState","isLoaded","sourceUpdated","includes","resetValue","focusInput","sendUpdate","componentWillUnmount","flush","event","target","debug2","parseInt","setState","allColumns","getCompatibleColumns","key","preventDefault","stopPropagation","valueIndex","error","showSettings","current","handleMouseEnter","onSourceMouseEnter","handleMouseLeave","onSourceMouseLeave","focus","clearFilter","setFilterState","render","disableLinking","isLinkerActive","onColumnSelected","settingsError","columnSelectionDisabled","isLinked","sourceButtonLabel","columnName","SOURCE_BUTTON_PLACEHOLDER","filterTitle","columnOptions","getColumnOptions","valueOptions","getValueOptions","selectedOption","getSelectedOptionIndex","disableSave","isFlipped","SOURCE_BUTTON_CLASS_NAME"],"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 { Column } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport memoizee from 'memoizee';\nimport memoize from 'memoize-one';\nimport debounce from 'lodash.debounce';\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}\ninterface 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;\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}\n\nclass 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 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}\n </option>\n )),\n ]);\n\n getItemLabel = memoizee((columns, index) => {\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 === -1) {\n log.debug2('Selected default item');\n } else if (index >= 0 && index < values.length) {\n value = values[index];\n } else {\n log.error('Invalid index', index, values);\n return;\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 handleMouseEnter(): void {\n const { onSourceMouseEnter } = this.props;\n onSourceMouseEnter();\n }\n\n handleMouseLeave(): void {\n const { onSourceMouseLeave } = this.props;\n onSourceMouseLeave();\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 if (this.dropdownRef.current !== null) {\n this.dropdownRef.current.focus();\n }\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 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({ column, value, isValueShown });\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 {\n column,\n disableCancel,\n isValueShown,\n selectedColumn,\n 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 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>Source Column</label>\n <SocketedButton\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>Filter Column</label>\n <select\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 >\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 >\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","SocketedButton","vsGear","TableUtils","memoizee","memoize","debounce","Log","log","module","UPDATE_DEBOUNCE","DropdownFilter","constructor","props","source","columns","filter","type","undefined","isCompatibleType","columnType","selectedColumn","selectedIndex","options","push","forEach","columnItem","index","name","getItemLabel","values","value","indexOf","PLACEHOLDER","map","val","length","shortType","substring","lastIndexOf","onChange","column","isValueShown","state","handleColumnChange","bind","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleDropdownKeyPress","handleValueChange","dropdownRef","createRef","disableCancel","componentDidUpdate","prevProps","prevState","isLoaded","sourceUpdated","includes","resetValue","focusInput","sendUpdate","componentWillUnmount","flush","event","target","debug2","parseInt","setState","allColumns","getCompatibleColumns","key","preventDefault","stopPropagation","valueIndex","error","showSettings","current","handleMouseEnter","onSourceMouseEnter","handleMouseLeave","onSourceMouseLeave","focus","clearFilter","setFilterState","render","disableLinking","isLinkerActive","onColumnSelected","settingsError","columnSelectionDisabled","isLinked","sourceButtonLabel","columnName","SOURCE_BUTTON_PLACEHOLDER","filterTitle","columnOptions","getColumnOptions","valueOptions","getValueOptions","selectedOption","getSelectedOptionIndex","disableSave","isFlipped","SOURCE_BUTTON_CLASS_NAME"],"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 { Column } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport memoizee from 'memoizee';\nimport memoize from 'memoize-one';\nimport debounce from 'lodash.debounce';\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}\ninterface 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;\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}\n\nclass 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 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}\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 === -1) {\n log.debug2('Selected default item');\n } else if (index >= 0 && index < values.length) {\n value = values[index];\n } else {\n log.error('Invalid index', index, values);\n return;\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 handleMouseEnter(): void {\n const { onSourceMouseEnter } = this.props;\n onSourceMouseEnter();\n }\n\n handleMouseLeave(): void {\n const { onSourceMouseLeave } = this.props;\n onSourceMouseLeave();\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 if (this.dropdownRef.current !== null) {\n this.dropdownRef.current.focus();\n }\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 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({ column, value, isValueShown });\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 {\n column,\n disableCancel,\n isValueShown,\n selectedColumn,\n 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 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>Source Column</label>\n <SocketedButton\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>Filter Column</label>\n <select\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 >\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 >\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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"}
@@ -31,7 +31,7 @@ declare class InputFilter extends Component<InputFilterProps, InputFilterState>
31
31
  componentDidUpdate(prevProps: InputFilterProps, prevState: InputFilterState): void;
32
32
  componentWillUnmount(): void;
33
33
  inputRef: RefObject<HTMLInputElement>;
34
- getItemLabel: ((columns: any, index: any) => any) & memoizee.Memoized<(columns: any, index: any) => any>;
34
+ getItemLabel: ((columns: InputFilterColumn[], index: number) => string) & memoizee.Memoized<(columns: InputFilterColumn[], index: number) => string>;
35
35
  handleColumnChange(event: ChangeEvent<HTMLSelectElement>): void;
36
36
  handleInputKeyPress(event: KeyboardEvent<HTMLInputElement>): void;
37
37
  handleValueChange(event: ChangeEvent<HTMLInputElement>): 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,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,OAAO,oBAAoB,CAAC;AAK5B,oBAAY,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,6FAYT;IAEH,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAU/D,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;CA6GvB;AAED,eAAe,WAAW,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,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,OAAO,oBAAoB,CAAC;AAK5B,oBAAY,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,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAU/D,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;CA6GvB;AAED,eAAe,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"InputFilter.js","names":["React","Component","Button","CardFlip","FontAwesomeIcon","vsGear","memoizee","debounce","Log","log","module","UPDATE_DEBOUNCE","InputFilter","constructor","props","columns","index","name","type","length","shortType","substring","lastIndexOf","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","current","select","focus","clearFilter","setFilterState","update","render","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","map","columnItem","width"],"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 { Column } from '@deephaven/jsapi-shim';\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, index) => {\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","FontAwesomeIcon","vsGear","memoizee","debounce","Log","log","module","UPDATE_DEBOUNCE","InputFilter","constructor","props","columns","index","name","type","length","shortType","substring","lastIndexOf","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","current","select","focus","clearFilter","setFilterState","update","render","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","map","columnItem","width"],"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 { Column } from '@deephaven/jsapi-shim';\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,11 +1,11 @@
1
1
  import React, { Component, RefObject } from 'react';
2
- import { Column, Row, TableTemplate } from '@deephaven/jsapi-shim';
2
+ import type { Column, Row, Table, TableTemplate } from '@deephaven/jsapi-shim';
3
3
  import { DateTimeColumnFormatter, Formatter, FormattingRule } from '@deephaven/jsapi-utils';
4
4
  import { Pending } from '@deephaven/utils';
5
5
  import type { Container, EventEmitter } from '@deephaven/golden-layout';
6
6
  import DropdownFilter, { DropdownFilterColumn } from '../controls/dropdown-filter/DropdownFilter';
7
7
  import './DropdownFilterPanel.scss';
8
- import { Link } from '../linker/LinkerUtils';
8
+ import type { Link, LinkPoint } from '../linker/LinkerUtils';
9
9
  import { ColumnSelectionValidator } from '../linker/ColumnSelectionValidator';
10
10
  interface PanelState {
11
11
  name?: string;
@@ -68,16 +68,16 @@ declare class DropdownFilterPanel extends Component<DropdownFilterPanelProps, Dr
68
68
  getCoordinateForColumn(): [number, number] | null;
69
69
  getSettingsErrorMessage(): string | undefined;
70
70
  getPanelErrorMessage(): string | undefined;
71
- getCachedPanelLinks: (this: any, dashboardLinks: Link[], panel: any) => Link[];
72
- getCachedSource: (this: any, links: any) => any;
73
- getCachedSourceTable: (this: any, panelTableMap: any, source: any) => any;
74
- getCachedSourceColumn: (this: any, table: TableTemplate, source: any) => Column | null;
71
+ getCachedPanelLinks: (dashboardLinks: Link[], panel: DropdownFilterPanel) => Link[];
72
+ getCachedSource: (links: Link[]) => LinkPoint | undefined;
73
+ getCachedSourceTable: (panelTableMap: Map<string | string[], TableTemplate<Table>>, source: LinkPoint | undefined) => TableTemplate<Table> | null;
74
+ getCachedSourceColumn: (table: TableTemplate, source: LinkPoint | undefined) => Column | null;
75
75
  getSource(props?: Readonly<DropdownFilterPanelProps> & Readonly<{
76
76
  children?: React.ReactNode;
77
- }>): any;
77
+ }>): LinkPoint | undefined;
78
78
  getSourceTable(props?: Readonly<DropdownFilterPanelProps> & Readonly<{
79
79
  children?: React.ReactNode;
80
- }>): any;
80
+ }>): TableTemplate<Table> | null;
81
81
  getValuesColumn(valuesTable: TableTemplate): Column | null;
82
82
  startListeningToSource(sourceTable: TableTemplate): void;
83
83
  stopListeningToSource(sourceTable: TableTemplate): void;
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownFilterPanel.d.ts","sourceRoot":"","sources":["../../src/panels/DropdownFilterPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DropdownFilterPanel.d.ts","sourceRoot":"","sources":["../../src/panels/DropdownFilterPanel.tsx"],"names":[],"mappings":"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"}
@@ -61,7 +61,7 @@ class DropdownFilterPanel extends Component {
61
61
 
62
62
  _defineProperty(this, "getCachedSource", memoize(links => {
63
63
  log.debug('getCachedSource', links);
64
- var source = null;
64
+ var source;
65
65
 
66
66
  if (links.length > 0) {
67
67
  var [link] = links;
@@ -519,9 +519,9 @@ class DropdownFilterPanel extends Component {
519
519
  valuesTable
520
520
  } = this.state;
521
521
  var sourceTable = this.getSourceTable();
522
- log.debug('applySourceSorts', sourceTable.sort);
522
+ log.debug('applySourceSorts', sourceTable === null || sourceTable === void 0 ? void 0 : sourceTable.sort);
523
523
 
524
- if (valuesTable == null) {
524
+ if (valuesTable == null || sourceTable == null) {
525
525
  log.debug('Table not initialized');
526
526
  return;
527
527
  }
@@ -536,9 +536,9 @@ class DropdownFilterPanel extends Component {
536
536
  valuesTable
537
537
  } = this.state;
538
538
  var sourceTable = this.getSourceTable();
539
- log.debug('applySourceFilters', sourceTable.filter);
539
+ log.debug('applySourceFilters', sourceTable === null || sourceTable === void 0 ? void 0 : sourceTable.filter);
540
540
 
541
- if (valuesTable == null) {
541
+ if (valuesTable == null || sourceTable == null) {
542
542
  log.debug('Table not initialized');
543
543
  return;
544
544
  }