@deephaven/iris-grid 0.22.3-beta.15 → 0.22.3-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AdvancedFilterCreator.js +7 -65
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +0 -23
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +0 -52
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +2 -42
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js +0 -11
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.js +1 -20
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CrossColumnSearch.js +2 -23
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.js +2 -36
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.d.ts +1 -1
- package/dist/GotoRow.d.ts.map +1 -1
- package/dist/GotoRow.js +2 -7
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.d.ts +41 -35
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +77 -519
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.d.ts +1 -1
- package/dist/IrisGridBottomBar.d.ts.map +1 -1
- package/dist/IrisGridBottomBar.js +2 -2
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +6 -21
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCopyHandler.js +3 -50
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +2 -12
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.js +32 -58
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.js +0 -7
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.js +0 -4
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.js +0 -23
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.js +9 -153
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.js +41 -183
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridShortcuts.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +2 -2
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +10 -90
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +2 -2
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +70 -461
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js +0 -23
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +3 -42
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +11 -5
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +98 -196
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.js +0 -7
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.js +2 -48
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +1 -1
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js +2 -7
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.d.ts +2 -2
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TableViewportUpdater.js +3 -29
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/ToastBottomBar.d.ts +1 -1
- package/dist/ToastBottomBar.d.ts.map +1 -1
- package/dist/ToastBottomBar.js +2 -4
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/TreeTableViewportUpdater.js +0 -21
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +4 -25
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -7
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -9
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js +3 -9
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -8
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/index.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/ClearFilterKeyHandler.js +0 -8
- package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js +1 -10
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +0 -11
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/key-handlers/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +2 -32
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +4 -34
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -20
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +15 -105
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -9
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -17
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +2 -15
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +0 -6
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/mousehandlers/index.js.map +1 -1
- package/dist/sidebar/AdvancedSettings.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.d.ts +4 -4
- package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +2 -6
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsType.js +0 -2
- package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
- package/dist/sidebar/ChartBuilder.js +2 -46
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +6 -58
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +4 -15
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js +5 -36
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/OptionType.js +0 -2
- package/dist/sidebar/OptionType.js.map +1 -1
- package/dist/sidebar/RollupRows.js +9 -65
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +0 -13
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +0 -52
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +1 -1
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +10 -123
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts +3 -2
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +37 -116
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +2 -14
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationOperation.js +0 -2
- package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +2 -5
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +2 -12
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -35
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +16 -26
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +9 -172
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/icons/BarIcon.js +0 -3
- package/dist/sidebar/icons/BarIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatColumnWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatRowWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/HistogramIcon.js +0 -3
- package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
- package/dist/sidebar/icons/LineIcon.js +0 -3
- package/dist/sidebar/icons/LineIcon.js.map +1 -1
- package/dist/sidebar/icons/PieIcon.js +0 -3
- package/dist/sidebar/icons/PieIcon.js.map +1 -1
- package/dist/sidebar/icons/ScatterIcon.js +0 -3
- package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
- package/dist/sidebar/icons/index.js.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/package.json +15 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreatorFilterItem.js","names":["React","PureComponent","Button","getLabelForBooleanFilter","getLabelForDateFilter","getLabelForNumberFilter","getLabelForTextFilter","vsTrash","TableUtils","Log","classNames","memoizeOne","log","module","AdvancedFilterCreatorFilterItem","getLabelForFilter","columnType","filterType","isNumberType","isCharType","isTextType","isDateType","isBooleanType","Error","e","warn","constructor","props","column","operation","value","timeZone","makeAdvancedValueFilter","handleDelete","bind","handleTypeChange","handleValueChange","typeDropdown","filterTypes","selectedType","state","componentDidMount","focus","componentDidUpdate","prevProps","undefined","setState","event","target","debug2","onChange","length","debug","onDelete","render","formatter","showValueInput","type","typeOptionElements","isValid","getCachedIsValid","i","label","element","push","error"],"sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { Button } from '@deephaven/components';\nimport {\n getLabelForBooleanFilter,\n getLabelForDateFilter,\n getLabelForNumberFilter,\n getLabelForTextFilter,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { vsTrash } from '@deephaven/icons';\nimport { Column } from '@deephaven/jsapi-shim';\nimport {\n AdvancedFilterItemType,\n Formatter,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport memoizeOne from 'memoize-one';\nimport './AdvancedFilterCreatorFilterItem.scss';\n\nconst log = Log.module('AdvancedFilterCreatorFilterItem');\n\nexport interface AdvancedFilterCreatorFilterItemProps {\n column: Column;\n filterTypes: FilterTypeValue[];\n onChange(type: FilterTypeValue, value: string): void;\n onDelete(): void;\n selectedType?: FilterTypeValue;\n value?: string;\n formatter: Formatter;\n}\n\nexport type AdvancedFilterCreatorFilterItemState = AdvancedFilterItemType;\n\nexport class AdvancedFilterCreatorFilterItem extends PureComponent<\n AdvancedFilterCreatorFilterItemProps,\n AdvancedFilterCreatorFilterItemState\n> {\n static getLabelForFilter(\n columnType: string,\n filterType: FilterTypeValue\n ): string {\n try {\n if (\n TableUtils.isNumberType(columnType) ||\n TableUtils.isCharType(columnType)\n ) {\n return getLabelForNumberFilter(filterType);\n }\n if (TableUtils.isTextType(columnType)) {\n return getLabelForTextFilter(filterType);\n }\n if (TableUtils.isDateType(columnType)) {\n return getLabelForDateFilter(filterType);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getLabelForBooleanFilter(filterType);\n }\n throw new Error(`Unrecognized column type: ${columnType}`);\n } catch (e) {\n log.warn(e);\n return '';\n }\n }\n\n constructor(props: AdvancedFilterCreatorFilterItemProps) {\n super(props);\n\n this.handleDelete = this.handleDelete.bind(this);\n this.handleTypeChange = this.handleTypeChange.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.typeDropdown = null;\n\n const { value = '', filterTypes, selectedType = filterTypes[0] } = props;\n\n this.state = {\n selectedType,\n value,\n };\n }\n\n componentDidMount(): void {\n this.typeDropdown?.focus();\n }\n\n componentDidUpdate(prevProps: AdvancedFilterCreatorFilterItemProps): void {\n const { value, selectedType } = this.props;\n if (selectedType !== undefined && prevProps.selectedType !== selectedType) {\n this.setState({ selectedType });\n }\n if (value !== undefined && prevProps.value !== value) {\n this.setState({ value });\n }\n }\n\n typeDropdown: HTMLSelectElement | null;\n\n handleTypeChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const selectedType = event.target.value as FilterTypeValue;\n log.debug2('typeChange', selectedType);\n this.setState({ selectedType });\n\n const { onChange } = this.props;\n const { value } = this.state;\n if (value != null && value.length > 0) {\n // Don't send an update unless there's already a value entered\n onChange(selectedType, value);\n }\n }\n\n handleValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('valueChange');\n const { value } = event.target;\n this.setState({ value });\n\n const { onChange } = this.props;\n const { selectedType } = this.state;\n if (selectedType != null) {\n // Don't send an update unless they've already selected a type\n onChange(selectedType, value);\n }\n }\n\n handleDelete(): void {\n log.debug('delete');\n\n const { onDelete } = this.props;\n onDelete();\n }\n\n getCachedIsValid = memoizeOne(\n (\n column: Column,\n operation: FilterTypeValue,\n value: string,\n timeZone: string\n ): boolean => {\n try {\n // We don't want to show an error for an empty value\n return (\n !value ||\n TableUtils.makeAdvancedValueFilter(\n column,\n operation,\n value,\n timeZone\n ) != null\n );\n } catch (e) {\n return false;\n }\n }\n );\n\n render(): JSX.Element {\n const { column, filterTypes, formatter } = this.props;\n const { selectedType, value } = this.state;\n const showValueInput = !TableUtils.isBooleanType(column.type);\n const typeOptionElements = [];\n const isValid = this.getCachedIsValid(\n column,\n selectedType,\n value,\n formatter.timeZone\n );\n for (let i = 0; i < filterTypes.length; i += 1) {\n const type = filterTypes[i];\n const label = AdvancedFilterCreatorFilterItem.getLabelForFilter(\n column.type,\n type\n );\n const element = (\n <option key={type} value={type}>\n {label}\n </option>\n );\n typeOptionElements.push(element);\n }\n\n return (\n <div className=\"advanced-filter-creator-filter-item\">\n <div className=\"form-row\">\n <div className=\"form-group col\">\n <select\n className=\"form-control custom-select\"\n value={selectedType}\n onChange={this.handleTypeChange}\n ref={typeDropdown => {\n this.typeDropdown = typeDropdown;\n }}\n >\n {typeOptionElements}\n </select>\n </div>\n {showValueInput && (\n <div className=\"form-group col\">\n <div className=\"input-group\">\n <input\n type=\"text\"\n className={classNames('form-control', { error: !isValid })}\n placeholder=\"Enter value\"\n value={value}\n onChange={this.handleValueChange}\n />\n </div>\n </div>\n )}\n <div className=\"form-group col-1 px-0\">\n <Button\n kind=\"ghost\"\n className=\"w-100 h-100 p-0 m-0\"\n onClick={this.handleDelete}\n icon={vsTrash}\n tooltip=\"Remove Filter\"\n />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorFilterItem;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreatorFilterItem.js","names":["React","PureComponent","Button","getLabelForBooleanFilter","getLabelForDateFilter","getLabelForNumberFilter","getLabelForTextFilter","vsTrash","TableUtils","Log","classNames","memoizeOne","log","module","AdvancedFilterCreatorFilterItem","getLabelForFilter","columnType","filterType","isNumberType","isCharType","isTextType","isDateType","isBooleanType","Error","e","warn","constructor","props","column","operation","value","timeZone","makeAdvancedValueFilter","handleDelete","bind","handleTypeChange","handleValueChange","typeDropdown","filterTypes","selectedType","state","componentDidMount","focus","componentDidUpdate","prevProps","undefined","setState","event","target","debug2","onChange","length","debug","onDelete","render","formatter","showValueInput","type","typeOptionElements","isValid","getCachedIsValid","i","label","element","push","error"],"sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { Button } from '@deephaven/components';\nimport {\n getLabelForBooleanFilter,\n getLabelForDateFilter,\n getLabelForNumberFilter,\n getLabelForTextFilter,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { vsTrash } from '@deephaven/icons';\nimport { Column } from '@deephaven/jsapi-shim';\nimport {\n AdvancedFilterItemType,\n Formatter,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport memoizeOne from 'memoize-one';\nimport './AdvancedFilterCreatorFilterItem.scss';\n\nconst log = Log.module('AdvancedFilterCreatorFilterItem');\n\nexport interface AdvancedFilterCreatorFilterItemProps {\n column: Column;\n filterTypes: FilterTypeValue[];\n onChange(type: FilterTypeValue, value: string): void;\n onDelete(): void;\n selectedType?: FilterTypeValue;\n value?: string;\n formatter: Formatter;\n}\n\nexport type AdvancedFilterCreatorFilterItemState = AdvancedFilterItemType;\n\nexport class AdvancedFilterCreatorFilterItem extends PureComponent<\n AdvancedFilterCreatorFilterItemProps,\n AdvancedFilterCreatorFilterItemState\n> {\n static getLabelForFilter(\n columnType: string,\n filterType: FilterTypeValue\n ): string {\n try {\n if (\n TableUtils.isNumberType(columnType) ||\n TableUtils.isCharType(columnType)\n ) {\n return getLabelForNumberFilter(filterType);\n }\n if (TableUtils.isTextType(columnType)) {\n return getLabelForTextFilter(filterType);\n }\n if (TableUtils.isDateType(columnType)) {\n return getLabelForDateFilter(filterType);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getLabelForBooleanFilter(filterType);\n }\n throw new Error(`Unrecognized column type: ${columnType}`);\n } catch (e) {\n log.warn(e);\n return '';\n }\n }\n\n constructor(props: AdvancedFilterCreatorFilterItemProps) {\n super(props);\n\n this.handleDelete = this.handleDelete.bind(this);\n this.handleTypeChange = this.handleTypeChange.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.typeDropdown = null;\n\n const { value = '', filterTypes, selectedType = filterTypes[0] } = props;\n\n this.state = {\n selectedType,\n value,\n };\n }\n\n componentDidMount(): void {\n this.typeDropdown?.focus();\n }\n\n componentDidUpdate(prevProps: AdvancedFilterCreatorFilterItemProps): void {\n const { value, selectedType } = this.props;\n if (selectedType !== undefined && prevProps.selectedType !== selectedType) {\n this.setState({ selectedType });\n }\n if (value !== undefined && prevProps.value !== value) {\n this.setState({ value });\n }\n }\n\n typeDropdown: HTMLSelectElement | null;\n\n handleTypeChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const selectedType = event.target.value as FilterTypeValue;\n log.debug2('typeChange', selectedType);\n this.setState({ selectedType });\n\n const { onChange } = this.props;\n const { value } = this.state;\n if (value != null && value.length > 0) {\n // Don't send an update unless there's already a value entered\n onChange(selectedType, value);\n }\n }\n\n handleValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('valueChange');\n const { value } = event.target;\n this.setState({ value });\n\n const { onChange } = this.props;\n const { selectedType } = this.state;\n if (selectedType != null) {\n // Don't send an update unless they've already selected a type\n onChange(selectedType, value);\n }\n }\n\n handleDelete(): void {\n log.debug('delete');\n\n const { onDelete } = this.props;\n onDelete();\n }\n\n getCachedIsValid = memoizeOne(\n (\n column: Column,\n operation: FilterTypeValue,\n value: string,\n timeZone: string\n ): boolean => {\n try {\n // We don't want to show an error for an empty value\n return (\n !value ||\n TableUtils.makeAdvancedValueFilter(\n column,\n operation,\n value,\n timeZone\n ) != null\n );\n } catch (e) {\n return false;\n }\n }\n );\n\n render(): JSX.Element {\n const { column, filterTypes, formatter } = this.props;\n const { selectedType, value } = this.state;\n const showValueInput = !TableUtils.isBooleanType(column.type);\n const typeOptionElements = [];\n const isValid = this.getCachedIsValid(\n column,\n selectedType,\n value,\n formatter.timeZone\n );\n for (let i = 0; i < filterTypes.length; i += 1) {\n const type = filterTypes[i];\n const label = AdvancedFilterCreatorFilterItem.getLabelForFilter(\n column.type,\n type\n );\n const element = (\n <option key={type} value={type}>\n {label}\n </option>\n );\n typeOptionElements.push(element);\n }\n\n return (\n <div className=\"advanced-filter-creator-filter-item\">\n <div className=\"form-row\">\n <div className=\"form-group col\">\n <select\n className=\"form-control custom-select\"\n value={selectedType}\n onChange={this.handleTypeChange}\n ref={typeDropdown => {\n this.typeDropdown = typeDropdown;\n }}\n >\n {typeOptionElements}\n </select>\n </div>\n {showValueInput && (\n <div className=\"form-group col\">\n <div className=\"input-group\">\n <input\n type=\"text\"\n className={classNames('form-control', { error: !isValid })}\n placeholder=\"Enter value\"\n value={value}\n onChange={this.handleValueChange}\n />\n </div>\n </div>\n )}\n <div className=\"form-group col-1 px-0\">\n <Button\n kind=\"ghost\"\n className=\"w-100 h-100 p-0 m-0\"\n onClick={this.handleDelete}\n icon={vsTrash}\n tooltip=\"Remove Filter\"\n />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorFilterItem;\n"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
-
|
|
3
2
|
/* eslint react/no-did-update-set-state: "off" */
|
|
4
3
|
import React, { PureComponent } from 'react';
|
|
5
4
|
import { CSSTransition } from 'react-transition-group';
|
|
@@ -8,15 +7,11 @@ import { TableUtils } from '@deephaven/jsapi-utils';
|
|
|
8
7
|
import { Button } from '@deephaven/components';
|
|
9
8
|
import AdvancedFilterCreatorSelectValueList from "./AdvancedFilterCreatorSelectValueList.js";
|
|
10
9
|
import "./AdvancedFilterCreatorSelectValue.css";
|
|
11
|
-
|
|
12
10
|
class AdvancedFilterCreatorSelectValue extends PureComponent {
|
|
13
11
|
constructor(props) {
|
|
14
12
|
super(props);
|
|
15
|
-
|
|
16
13
|
_defineProperty(this, "searchTablePromise", void 0);
|
|
17
|
-
|
|
18
14
|
_defineProperty(this, "updateFilterTimer", void 0);
|
|
19
|
-
|
|
20
15
|
this.handleSelectAllClick = this.handleSelectAllClick.bind(this);
|
|
21
16
|
this.handleClearAllClick = this.handleClearAllClick.bind(this);
|
|
22
17
|
this.handleListChange = this.handleListChange.bind(this);
|
|
@@ -33,97 +28,77 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
|
|
|
33
28
|
searchText: ''
|
|
34
29
|
};
|
|
35
30
|
}
|
|
36
|
-
|
|
37
31
|
componentDidMount() {
|
|
38
32
|
this.initSearchTable();
|
|
39
33
|
}
|
|
40
|
-
|
|
41
34
|
componentDidUpdate(prevProps, prevState) {
|
|
42
35
|
var {
|
|
43
36
|
invertSelection,
|
|
44
37
|
selectedValues,
|
|
45
38
|
table
|
|
46
39
|
} = this.props;
|
|
47
|
-
|
|
48
40
|
if (prevProps.table !== table) {
|
|
49
41
|
this.initSearchTable();
|
|
50
42
|
}
|
|
51
|
-
|
|
52
43
|
if (prevProps.invertSelection !== invertSelection) {
|
|
53
44
|
this.setState({
|
|
54
45
|
invertSelection
|
|
55
46
|
});
|
|
56
47
|
}
|
|
57
|
-
|
|
58
48
|
if (prevProps.selectedValues !== selectedValues) {
|
|
59
49
|
this.setState({
|
|
60
50
|
selectedValues
|
|
61
51
|
});
|
|
62
52
|
}
|
|
63
|
-
|
|
64
53
|
var {
|
|
65
54
|
table: searchTable,
|
|
66
55
|
searchText
|
|
67
56
|
} = this.state;
|
|
68
|
-
|
|
69
57
|
if (searchTable !== prevState.table) {
|
|
70
58
|
if (prevState.table != null) {
|
|
71
59
|
prevState.table.close();
|
|
72
60
|
}
|
|
73
|
-
|
|
74
61
|
if (searchTable != null) {
|
|
75
62
|
this.startUpdateFilterTimer();
|
|
76
63
|
}
|
|
77
64
|
}
|
|
78
|
-
|
|
79
65
|
if (searchText !== prevState.searchText) {
|
|
80
66
|
this.startUpdateFilterTimer();
|
|
81
67
|
}
|
|
82
68
|
}
|
|
83
|
-
|
|
84
69
|
componentWillUnmount() {
|
|
85
70
|
var {
|
|
86
71
|
table
|
|
87
72
|
} = this.state;
|
|
88
|
-
|
|
89
73
|
if (table != null) {
|
|
90
74
|
table.close();
|
|
91
75
|
}
|
|
92
|
-
|
|
93
76
|
this.searchTablePromise = undefined;
|
|
94
77
|
this.stopUpdateFilterTimer();
|
|
95
78
|
}
|
|
96
|
-
|
|
97
79
|
getColumnName() {
|
|
98
80
|
var {
|
|
99
81
|
table
|
|
100
82
|
} = this.props;
|
|
101
|
-
|
|
102
83
|
if (table != null) {
|
|
103
84
|
return table.columns[0].name;
|
|
104
85
|
}
|
|
105
|
-
|
|
106
86
|
return '';
|
|
107
87
|
}
|
|
108
|
-
|
|
109
88
|
getDisplayedValuesCount() {
|
|
110
89
|
var {
|
|
111
90
|
invertSelection,
|
|
112
91
|
selectedValues,
|
|
113
92
|
table
|
|
114
93
|
} = this.state;
|
|
115
|
-
|
|
116
94
|
if (table == null) {
|
|
117
95
|
return null;
|
|
118
96
|
}
|
|
119
|
-
|
|
120
97
|
if (invertSelection) {
|
|
121
98
|
return table.totalSize - selectedValues.length;
|
|
122
99
|
}
|
|
123
|
-
|
|
124
100
|
return selectedValues.length;
|
|
125
101
|
}
|
|
126
|
-
|
|
127
102
|
getDisplayedValueText() {
|
|
128
103
|
var count = this.getDisplayedValuesCount();
|
|
129
104
|
var {
|
|
@@ -132,31 +107,24 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
|
|
|
132
107
|
var {
|
|
133
108
|
formatter
|
|
134
109
|
} = this.props;
|
|
135
|
-
|
|
136
110
|
if (count != null && table != null) {
|
|
137
111
|
var formattedCount = formatter.getFormattedString(count, 'long');
|
|
138
112
|
var formattedTableSize = formatter.getFormattedString(table.totalSize, 'long');
|
|
139
113
|
var prefix = '';
|
|
140
|
-
|
|
141
114
|
if (count < 1000000) {
|
|
142
115
|
prefix = 'Displaying ';
|
|
143
116
|
}
|
|
144
|
-
|
|
145
117
|
return "".concat(prefix).concat(formattedCount, " of ").concat(formattedTableSize);
|
|
146
118
|
}
|
|
147
|
-
|
|
148
119
|
return null;
|
|
149
120
|
}
|
|
150
|
-
|
|
151
121
|
initSearchTable() {
|
|
152
122
|
var {
|
|
153
123
|
table
|
|
154
124
|
} = this.props;
|
|
155
|
-
|
|
156
125
|
if (table == null) {
|
|
157
126
|
return;
|
|
158
127
|
}
|
|
159
|
-
|
|
160
128
|
var searchTablePromise = table.copy();
|
|
161
129
|
this.searchTablePromise = searchTablePromise;
|
|
162
130
|
this.searchTablePromise.then(searchTable => {
|
|
@@ -170,7 +138,6 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
|
|
|
170
138
|
}
|
|
171
139
|
});
|
|
172
140
|
}
|
|
173
|
-
|
|
174
141
|
handleListChange(selectedValues, invertSelection) {
|
|
175
142
|
this.setState({
|
|
176
143
|
selectedValues,
|
|
@@ -181,27 +148,22 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
|
|
|
181
148
|
} = this.props;
|
|
182
149
|
onChange(selectedValues, invertSelection);
|
|
183
150
|
}
|
|
184
|
-
|
|
185
151
|
handleSearchChange(event) {
|
|
186
152
|
var searchText = event.target.value;
|
|
187
153
|
this.setState({
|
|
188
154
|
searchText
|
|
189
155
|
});
|
|
190
156
|
}
|
|
191
|
-
|
|
192
157
|
handleSelectAllClick() {
|
|
193
158
|
this.resetSelection(true);
|
|
194
159
|
}
|
|
195
|
-
|
|
196
160
|
handleClearAllClick() {
|
|
197
161
|
this.resetSelection(false);
|
|
198
162
|
}
|
|
199
|
-
|
|
200
163
|
handleUpdateFilterTimeout() {
|
|
201
164
|
this.updateFilterTimer = undefined;
|
|
202
165
|
this.updateTableFilter();
|
|
203
166
|
}
|
|
204
|
-
|
|
205
167
|
resetSelection(invertSelection) {
|
|
206
168
|
var selectedValues = [];
|
|
207
169
|
this.setState({
|
|
@@ -213,19 +175,16 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
|
|
|
213
175
|
} = this.props;
|
|
214
176
|
onChange(selectedValues, invertSelection);
|
|
215
177
|
}
|
|
216
|
-
|
|
217
178
|
startUpdateFilterTimer() {
|
|
218
179
|
this.stopUpdateFilterTimer();
|
|
219
180
|
this.updateFilterTimer = setTimeout(this.handleUpdateFilterTimeout, AdvancedFilterCreatorSelectValue.searchDebounceTime);
|
|
220
181
|
}
|
|
221
|
-
|
|
222
182
|
stopUpdateFilterTimer() {
|
|
223
183
|
if (this.updateFilterTimer != null) {
|
|
224
184
|
clearTimeout(this.updateFilterTimer);
|
|
225
185
|
this.updateFilterTimer = undefined;
|
|
226
186
|
}
|
|
227
187
|
}
|
|
228
|
-
|
|
229
188
|
updateTableFilter() {
|
|
230
189
|
var {
|
|
231
190
|
table,
|
|
@@ -236,16 +195,12 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
|
|
|
236
195
|
} = this.props;
|
|
237
196
|
var column = table === null || table === void 0 ? void 0 : table.columns[0];
|
|
238
197
|
var filters = [];
|
|
239
|
-
|
|
240
198
|
if (column == null) {
|
|
241
199
|
return;
|
|
242
200
|
}
|
|
243
|
-
|
|
244
201
|
var error;
|
|
245
|
-
|
|
246
202
|
if (searchText.length > 0) {
|
|
247
203
|
var filter = null;
|
|
248
|
-
|
|
249
204
|
if (TableUtils.isCharType(column.type)) {
|
|
250
205
|
// Just exact match for char
|
|
251
206
|
filter = TableUtils.makeQuickFilter(column, searchText);
|
|
@@ -257,20 +212,17 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
|
|
|
257
212
|
// we may want to be smarter with some other types (like dates)
|
|
258
213
|
filter = TableUtils.makeQuickFilter(column, ">=".concat(searchText), timeZone);
|
|
259
214
|
}
|
|
260
|
-
|
|
261
215
|
if (filter != null) {
|
|
262
216
|
filters.push(filter);
|
|
263
217
|
} else {
|
|
264
218
|
error = 'Invalid search text';
|
|
265
219
|
}
|
|
266
220
|
}
|
|
267
|
-
|
|
268
221
|
this.setState({
|
|
269
222
|
filters,
|
|
270
223
|
error
|
|
271
224
|
});
|
|
272
225
|
}
|
|
273
|
-
|
|
274
226
|
render() {
|
|
275
227
|
var {
|
|
276
228
|
error,
|
|
@@ -327,17 +279,13 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
|
|
|
327
279
|
className: "row-count-info"
|
|
328
280
|
}, displayedValuesText))));
|
|
329
281
|
}
|
|
330
|
-
|
|
331
282
|
}
|
|
332
|
-
|
|
333
283
|
_defineProperty(AdvancedFilterCreatorSelectValue, "searchDebounceTime", 250);
|
|
334
|
-
|
|
335
284
|
_defineProperty(AdvancedFilterCreatorSelectValue, "defaultProps", {
|
|
336
285
|
invertSelection: true,
|
|
337
286
|
selectedValues: [],
|
|
338
287
|
onChange: () => undefined,
|
|
339
288
|
showSearch: true
|
|
340
289
|
});
|
|
341
|
-
|
|
342
290
|
export default AdvancedFilterCreatorSelectValue;
|
|
343
291
|
//# sourceMappingURL=AdvancedFilterCreatorSelectValue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreatorSelectValue.js","names":["React","PureComponent","CSSTransition","classNames","TableUtils","Button","AdvancedFilterCreatorSelectValueList","AdvancedFilterCreatorSelectValue","constructor","props","handleSelectAllClick","bind","handleClearAllClick","handleListChange","handleSearchChange","handleUpdateFilterTimeout","invertSelection","selectedValues","state","filters","searchText","componentDidMount","initSearchTable","componentDidUpdate","prevProps","prevState","table","setState","searchTable","close","startUpdateFilterTimer","componentWillUnmount","searchTablePromise","undefined","stopUpdateFilterTimer","getColumnName","columns","name","getDisplayedValuesCount","totalSize","length","getDisplayedValueText","count","formatter","formattedCount","getFormattedString","formattedTableSize","prefix","copy","then","onChange","event","target","value","resetSelection","updateFilterTimer","updateTableFilter","setTimeout","searchDebounceTime","clearTimeout","timeZone","column","error","filter","isCharType","type","makeQuickFilter","isTextType","push","render","showSearch","columnName","displayedValuesText","placeholderText"],"sources":["../src/AdvancedFilterCreatorSelectValue.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport classNames from 'classnames';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport { FilterCondition, Table } from '@deephaven/jsapi-shim';\nimport { Button } from '@deephaven/components';\nimport AdvancedFilterCreatorSelectValueList from './AdvancedFilterCreatorSelectValueList';\nimport './AdvancedFilterCreatorSelectValue.scss';\nimport { ColumnName } from './CommonTypes';\n\ninterface AdvancedFilterCreatorSelectValueProps<T> {\n invertSelection: boolean;\n selectedValues: T[];\n table?: Table;\n formatter: Formatter;\n onChange: (selectedValues: T[], invertSelection: boolean) => void;\n showSearch: boolean;\n timeZone: string;\n}\n\ninterface AdvancedFilterCreatorSelectValueState<T> {\n error?: string;\n filters: FilterCondition[];\n invertSelection: boolean;\n selectedValues: T[];\n searchText: string;\n table?: Table;\n}\n\nclass AdvancedFilterCreatorSelectValue<T = unknown> extends PureComponent<\n AdvancedFilterCreatorSelectValueProps<T>,\n AdvancedFilterCreatorSelectValueState<T>\n> {\n static searchDebounceTime = 250;\n\n static defaultProps = {\n invertSelection: true,\n selectedValues: [],\n onChange: (): void => undefined,\n showSearch: true,\n };\n\n constructor(props: AdvancedFilterCreatorSelectValueProps<T>) {\n super(props);\n\n this.handleSelectAllClick = this.handleSelectAllClick.bind(this);\n this.handleClearAllClick = this.handleClearAllClick.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUpdateFilterTimeout = this.handleUpdateFilterTimeout.bind(this);\n\n const { invertSelection, selectedValues } = props;\n\n this.state = {\n filters: [],\n invertSelection,\n selectedValues,\n searchText: '',\n };\n }\n\n componentDidMount(): void {\n this.initSearchTable();\n }\n\n componentDidUpdate(\n prevProps: AdvancedFilterCreatorSelectValueProps<T>,\n prevState: AdvancedFilterCreatorSelectValueState<T>\n ): void {\n const { invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n this.initSearchTable();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ invertSelection });\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues });\n }\n\n const { table: searchTable, searchText } = this.state;\n\n if (searchTable !== prevState.table) {\n if (prevState.table != null) {\n prevState.table.close();\n }\n if (searchTable != null) {\n this.startUpdateFilterTimer();\n }\n }\n\n if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n\n componentWillUnmount(): void {\n const { table } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = undefined;\n\n this.stopUpdateFilterTimer();\n }\n\n searchTablePromise?: Promise<Table>;\n\n updateFilterTimer?: ReturnType<typeof setTimeout>;\n\n getColumnName(): ColumnName {\n const { table } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n\n getDisplayedValuesCount(): number | null {\n const { invertSelection, selectedValues, table } = this.state;\n if (table == null) {\n return null;\n }\n\n if (invertSelection) {\n return table.totalSize - selectedValues.length;\n }\n return selectedValues.length;\n }\n\n getDisplayedValueText(): string | null {\n const count = this.getDisplayedValuesCount();\n const { table } = this.state;\n\n const { formatter } = this.props;\n\n if (count != null && table != null) {\n const formattedCount = formatter.getFormattedString(count, 'long');\n const formattedTableSize = formatter.getFormattedString(\n table.totalSize,\n 'long'\n );\n let prefix = '';\n if (count < 1000000) {\n prefix = 'Displaying ';\n }\n return `${prefix}${formattedCount} of ${formattedTableSize}`;\n }\n return null;\n }\n\n initSearchTable(): void {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n const searchTablePromise = table.copy();\n this.searchTablePromise = searchTablePromise;\n this.searchTablePromise.then(searchTable => {\n if (this.searchTablePromise === searchTablePromise) {\n this.setState({ table: searchTable });\n this.searchTablePromise = undefined;\n } else {\n searchTable.close();\n }\n });\n }\n\n handleListChange(selectedValues: T[], invertSelection: boolean): void {\n this.setState({ selectedValues, invertSelection });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleSearchChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const searchText = event.target.value;\n this.setState({ searchText });\n }\n\n handleSelectAllClick(): void {\n this.resetSelection(true);\n }\n\n handleClearAllClick(): void {\n this.resetSelection(false);\n }\n\n handleUpdateFilterTimeout(): void {\n this.updateFilterTimer = undefined;\n this.updateTableFilter();\n }\n\n resetSelection(invertSelection: boolean): void {\n const selectedValues: T[] = [];\n\n this.setState({ invertSelection, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n startUpdateFilterTimer(): void {\n this.stopUpdateFilterTimer();\n\n this.updateFilterTimer = setTimeout(\n this.handleUpdateFilterTimeout,\n AdvancedFilterCreatorSelectValue.searchDebounceTime\n );\n }\n\n stopUpdateFilterTimer(): void {\n if (this.updateFilterTimer != null) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = undefined;\n }\n }\n\n updateTableFilter(): void {\n const { table, searchText } = this.state;\n const { timeZone } = this.props;\n const column = table?.columns[0];\n const filters = [];\n if (column == null) {\n return;\n }\n let error;\n if (searchText.length > 0) {\n let filter = null;\n if (TableUtils.isCharType(column.type)) {\n // Just exact match for char\n filter = TableUtils.makeQuickFilter(column, searchText);\n } else if (TableUtils.isTextType(column.type)) {\n // case insensitive & contains search text\n filter = TableUtils.makeQuickFilter(column, `~${searchText}`, timeZone);\n } else {\n // greater than or equal search for everything else\n // we may want to be smarter with some other types (like dates)\n filter = TableUtils.makeQuickFilter(\n column,\n `>=${searchText}`,\n timeZone\n );\n }\n\n if (filter != null) {\n filters.push(filter);\n } else {\n error = 'Invalid search text';\n }\n }\n\n this.setState({ filters, error });\n }\n\n render(): React.ReactElement {\n const {\n error,\n filters,\n invertSelection,\n selectedValues,\n searchText,\n table,\n } = this.state;\n const { formatter, showSearch } = this.props;\n const columnName = this.getColumnName();\n const displayedValuesText = this.getDisplayedValueText();\n const placeholderText = columnName ? `Find ${columnName}...` : '';\n\n return (\n <div className=\"advanced-filter-creator-select-value\">\n <div className={showSearch ? 'form-group' : ''}>\n <label htmlFor=\"advanced-filter-creator-select-value-input\">\n Select Values\n </label>\n {showSearch && (\n <input\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': error != null,\n })}\n id=\"advanced-filter-creator-select-value-input\"\n placeholder={placeholderText}\n value={searchText}\n onChange={this.handleSearchChange}\n />\n )}\n </div>\n <AdvancedFilterCreatorSelectValueList\n table={table}\n filters={filters}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n onChange={this.handleListChange}\n />\n <div className=\"advanced-filter-creator-select-meta-row\">\n <div>\n <Button kind=\"ghost\" onClick={this.handleSelectAllClick}>\n Select All\n </Button>\n <Button kind=\"ghost\" onClick={this.handleClearAllClick}>\n Clear\n </Button>\n </div>\n <CSSTransition\n in={displayedValuesText != null}\n timeout={250}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"row-count-info\">{displayedValuesText}</div>\n </CSSTransition>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorSelectValue;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreatorSelectValue.js","names":["React","PureComponent","CSSTransition","classNames","TableUtils","Button","AdvancedFilterCreatorSelectValueList","AdvancedFilterCreatorSelectValue","constructor","props","handleSelectAllClick","bind","handleClearAllClick","handleListChange","handleSearchChange","handleUpdateFilterTimeout","invertSelection","selectedValues","state","filters","searchText","componentDidMount","initSearchTable","componentDidUpdate","prevProps","prevState","table","setState","searchTable","close","startUpdateFilterTimer","componentWillUnmount","searchTablePromise","undefined","stopUpdateFilterTimer","getColumnName","columns","name","getDisplayedValuesCount","totalSize","length","getDisplayedValueText","count","formatter","formattedCount","getFormattedString","formattedTableSize","prefix","copy","then","onChange","event","target","value","resetSelection","updateFilterTimer","updateTableFilter","setTimeout","searchDebounceTime","clearTimeout","timeZone","column","error","filter","isCharType","type","makeQuickFilter","isTextType","push","render","showSearch","columnName","displayedValuesText","placeholderText"],"sources":["../src/AdvancedFilterCreatorSelectValue.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport classNames from 'classnames';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport { FilterCondition, Table } from '@deephaven/jsapi-shim';\nimport { Button } from '@deephaven/components';\nimport AdvancedFilterCreatorSelectValueList from './AdvancedFilterCreatorSelectValueList';\nimport './AdvancedFilterCreatorSelectValue.scss';\nimport { ColumnName } from './CommonTypes';\n\ninterface AdvancedFilterCreatorSelectValueProps<T> {\n invertSelection: boolean;\n selectedValues: T[];\n table?: Table;\n formatter: Formatter;\n onChange: (selectedValues: T[], invertSelection: boolean) => void;\n showSearch: boolean;\n timeZone: string;\n}\n\ninterface AdvancedFilterCreatorSelectValueState<T> {\n error?: string;\n filters: FilterCondition[];\n invertSelection: boolean;\n selectedValues: T[];\n searchText: string;\n table?: Table;\n}\n\nclass AdvancedFilterCreatorSelectValue<T = unknown> extends PureComponent<\n AdvancedFilterCreatorSelectValueProps<T>,\n AdvancedFilterCreatorSelectValueState<T>\n> {\n static searchDebounceTime = 250;\n\n static defaultProps = {\n invertSelection: true,\n selectedValues: [],\n onChange: (): void => undefined,\n showSearch: true,\n };\n\n constructor(props: AdvancedFilterCreatorSelectValueProps<T>) {\n super(props);\n\n this.handleSelectAllClick = this.handleSelectAllClick.bind(this);\n this.handleClearAllClick = this.handleClearAllClick.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUpdateFilterTimeout = this.handleUpdateFilterTimeout.bind(this);\n\n const { invertSelection, selectedValues } = props;\n\n this.state = {\n filters: [],\n invertSelection,\n selectedValues,\n searchText: '',\n };\n }\n\n componentDidMount(): void {\n this.initSearchTable();\n }\n\n componentDidUpdate(\n prevProps: AdvancedFilterCreatorSelectValueProps<T>,\n prevState: AdvancedFilterCreatorSelectValueState<T>\n ): void {\n const { invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n this.initSearchTable();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ invertSelection });\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues });\n }\n\n const { table: searchTable, searchText } = this.state;\n\n if (searchTable !== prevState.table) {\n if (prevState.table != null) {\n prevState.table.close();\n }\n if (searchTable != null) {\n this.startUpdateFilterTimer();\n }\n }\n\n if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n\n componentWillUnmount(): void {\n const { table } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = undefined;\n\n this.stopUpdateFilterTimer();\n }\n\n searchTablePromise?: Promise<Table>;\n\n updateFilterTimer?: ReturnType<typeof setTimeout>;\n\n getColumnName(): ColumnName {\n const { table } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n\n getDisplayedValuesCount(): number | null {\n const { invertSelection, selectedValues, table } = this.state;\n if (table == null) {\n return null;\n }\n\n if (invertSelection) {\n return table.totalSize - selectedValues.length;\n }\n return selectedValues.length;\n }\n\n getDisplayedValueText(): string | null {\n const count = this.getDisplayedValuesCount();\n const { table } = this.state;\n\n const { formatter } = this.props;\n\n if (count != null && table != null) {\n const formattedCount = formatter.getFormattedString(count, 'long');\n const formattedTableSize = formatter.getFormattedString(\n table.totalSize,\n 'long'\n );\n let prefix = '';\n if (count < 1000000) {\n prefix = 'Displaying ';\n }\n return `${prefix}${formattedCount} of ${formattedTableSize}`;\n }\n return null;\n }\n\n initSearchTable(): void {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n const searchTablePromise = table.copy();\n this.searchTablePromise = searchTablePromise;\n this.searchTablePromise.then(searchTable => {\n if (this.searchTablePromise === searchTablePromise) {\n this.setState({ table: searchTable });\n this.searchTablePromise = undefined;\n } else {\n searchTable.close();\n }\n });\n }\n\n handleListChange(selectedValues: T[], invertSelection: boolean): void {\n this.setState({ selectedValues, invertSelection });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleSearchChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const searchText = event.target.value;\n this.setState({ searchText });\n }\n\n handleSelectAllClick(): void {\n this.resetSelection(true);\n }\n\n handleClearAllClick(): void {\n this.resetSelection(false);\n }\n\n handleUpdateFilterTimeout(): void {\n this.updateFilterTimer = undefined;\n this.updateTableFilter();\n }\n\n resetSelection(invertSelection: boolean): void {\n const selectedValues: T[] = [];\n\n this.setState({ invertSelection, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n startUpdateFilterTimer(): void {\n this.stopUpdateFilterTimer();\n\n this.updateFilterTimer = setTimeout(\n this.handleUpdateFilterTimeout,\n AdvancedFilterCreatorSelectValue.searchDebounceTime\n );\n }\n\n stopUpdateFilterTimer(): void {\n if (this.updateFilterTimer != null) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = undefined;\n }\n }\n\n updateTableFilter(): void {\n const { table, searchText } = this.state;\n const { timeZone } = this.props;\n const column = table?.columns[0];\n const filters = [];\n if (column == null) {\n return;\n }\n let error;\n if (searchText.length > 0) {\n let filter = null;\n if (TableUtils.isCharType(column.type)) {\n // Just exact match for char\n filter = TableUtils.makeQuickFilter(column, searchText);\n } else if (TableUtils.isTextType(column.type)) {\n // case insensitive & contains search text\n filter = TableUtils.makeQuickFilter(column, `~${searchText}`, timeZone);\n } else {\n // greater than or equal search for everything else\n // we may want to be smarter with some other types (like dates)\n filter = TableUtils.makeQuickFilter(\n column,\n `>=${searchText}`,\n timeZone\n );\n }\n\n if (filter != null) {\n filters.push(filter);\n } else {\n error = 'Invalid search text';\n }\n }\n\n this.setState({ filters, error });\n }\n\n render(): React.ReactElement {\n const {\n error,\n filters,\n invertSelection,\n selectedValues,\n searchText,\n table,\n } = this.state;\n const { formatter, showSearch } = this.props;\n const columnName = this.getColumnName();\n const displayedValuesText = this.getDisplayedValueText();\n const placeholderText = columnName ? `Find ${columnName}...` : '';\n\n return (\n <div className=\"advanced-filter-creator-select-value\">\n <div className={showSearch ? 'form-group' : ''}>\n <label htmlFor=\"advanced-filter-creator-select-value-input\">\n Select Values\n </label>\n {showSearch && (\n <input\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': error != null,\n })}\n id=\"advanced-filter-creator-select-value-input\"\n placeholder={placeholderText}\n value={searchText}\n onChange={this.handleSearchChange}\n />\n )}\n </div>\n <AdvancedFilterCreatorSelectValueList\n table={table}\n filters={filters}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n onChange={this.handleListChange}\n />\n <div className=\"advanced-filter-creator-select-meta-row\">\n <div>\n <Button kind=\"ghost\" onClick={this.handleSelectAllClick}>\n Select All\n </Button>\n <Button kind=\"ghost\" onClick={this.handleClearAllClick}>\n Clear\n </Button>\n </div>\n <CSSTransition\n in={displayedValuesText != null}\n timeout={250}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"row-count-info\">{displayedValuesText}</div>\n </CSSTransition>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorSelectValue;\n"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
-
|
|
3
2
|
/* eslint react/no-did-update-set-state: "off" */
|
|
4
3
|
import React, { PureComponent } from 'react';
|
|
5
4
|
import { CSSTransition } from 'react-transition-group';
|
|
@@ -7,7 +6,6 @@ import dh from '@deephaven/jsapi-shim';
|
|
|
7
6
|
import { LoadingSpinner, SelectValueList } from '@deephaven/components';
|
|
8
7
|
import Log from '@deephaven/log';
|
|
9
8
|
var log = Log.module('AdvancedFilterCreatorSelectValueList');
|
|
10
|
-
|
|
11
9
|
/**
|
|
12
10
|
* Select values from a long scrollable list.
|
|
13
11
|
* Swaps items in and out for infinite scrolling
|
|
@@ -21,20 +19,15 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
|
|
|
21
19
|
static indexOf(value, values) {
|
|
22
20
|
for (var i = 0; i < values.length; i += 1) {
|
|
23
21
|
var v = values[i];
|
|
24
|
-
|
|
25
22
|
if (v === value || v != null && v.valueOf != null && value != null && value.valueOf != null && v.valueOf() === value.valueOf()) {
|
|
26
23
|
return i;
|
|
27
24
|
}
|
|
28
25
|
}
|
|
29
|
-
|
|
30
26
|
return -1;
|
|
31
27
|
}
|
|
32
|
-
|
|
33
28
|
constructor(props) {
|
|
34
29
|
super(props);
|
|
35
|
-
|
|
36
30
|
_defineProperty(this, "list", void 0);
|
|
37
|
-
|
|
38
31
|
this.handleSelect = this.handleSelect.bind(this);
|
|
39
32
|
this.handleViewportChange = this.handleViewportChange.bind(this);
|
|
40
33
|
this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);
|
|
@@ -51,14 +44,12 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
|
|
|
51
44
|
isLoading: true
|
|
52
45
|
};
|
|
53
46
|
}
|
|
54
|
-
|
|
55
47
|
componentDidMount() {
|
|
56
48
|
var {
|
|
57
49
|
table
|
|
58
50
|
} = this.props;
|
|
59
51
|
if (table) this.startListening(table);
|
|
60
52
|
}
|
|
61
|
-
|
|
62
53
|
componentDidUpdate(prevProps) {
|
|
63
54
|
var {
|
|
64
55
|
filters,
|
|
@@ -66,38 +57,32 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
|
|
|
66
57
|
selectedValues,
|
|
67
58
|
table
|
|
68
59
|
} = this.props;
|
|
69
|
-
|
|
70
60
|
if (prevProps.table !== table) {
|
|
71
61
|
if (prevProps.table) this.stopListening(prevProps.table);
|
|
72
62
|
if (table) this.startListening(table);
|
|
73
63
|
this.resetViewport();
|
|
74
64
|
}
|
|
75
|
-
|
|
76
65
|
if (prevProps.invertSelection !== invertSelection) {
|
|
77
66
|
this.setState({
|
|
78
67
|
selectedValues: []
|
|
79
68
|
}, this.handleSelectionUpdate);
|
|
80
69
|
}
|
|
81
|
-
|
|
82
70
|
if (prevProps.selectedValues !== selectedValues) {
|
|
83
71
|
this.setState({
|
|
84
72
|
selectedValues
|
|
85
73
|
}, this.handleSelectionUpdate);
|
|
86
74
|
}
|
|
87
|
-
|
|
88
75
|
if (prevProps.filters !== filters) {
|
|
89
76
|
table === null || table === void 0 ? void 0 : table.applyFilter(filters);
|
|
90
77
|
this.resetViewport();
|
|
91
78
|
}
|
|
92
79
|
}
|
|
93
|
-
|
|
94
80
|
componentWillUnmount() {
|
|
95
81
|
var {
|
|
96
82
|
table
|
|
97
83
|
} = this.props;
|
|
98
84
|
if (table) this.stopListening(table);
|
|
99
85
|
}
|
|
100
|
-
|
|
101
86
|
handleSelect(itemIndex, value) {
|
|
102
87
|
var {
|
|
103
88
|
invertSelection
|
|
@@ -107,19 +92,15 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
|
|
|
107
92
|
} = this.state;
|
|
108
93
|
selectedValues = [...selectedValues];
|
|
109
94
|
var selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(value, selectedValues);
|
|
110
|
-
|
|
111
95
|
if (selectedIndex >= 0) {
|
|
112
96
|
selectedValues.splice(selectedIndex, 1);
|
|
113
97
|
} else {
|
|
114
98
|
selectedValues.push(value);
|
|
115
99
|
}
|
|
116
|
-
|
|
117
100
|
var isSelected = selectedIndex < 0;
|
|
118
|
-
|
|
119
101
|
if (invertSelection) {
|
|
120
102
|
isSelected = !isSelected;
|
|
121
103
|
}
|
|
122
|
-
|
|
123
104
|
var {
|
|
124
105
|
offset
|
|
125
106
|
} = this.state;
|
|
@@ -128,11 +109,9 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
|
|
|
128
109
|
} = this.state;
|
|
129
110
|
items = [...items];
|
|
130
111
|
var visibleItemIndex = itemIndex - offset;
|
|
131
|
-
|
|
132
112
|
if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {
|
|
133
113
|
items[visibleItemIndex].isSelected = isSelected;
|
|
134
114
|
}
|
|
135
|
-
|
|
136
115
|
this.setState({
|
|
137
116
|
items,
|
|
138
117
|
selectedValues
|
|
@@ -142,15 +121,12 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
|
|
|
142
121
|
} = this.props;
|
|
143
122
|
onChange(selectedValues, invertSelection);
|
|
144
123
|
}
|
|
145
|
-
|
|
146
124
|
handleViewportChange(top, bottom) {
|
|
147
125
|
this.updateViewport(top, bottom);
|
|
148
126
|
}
|
|
149
|
-
|
|
150
127
|
handleSelectionUpdate() {
|
|
151
128
|
this.updateItemSelection();
|
|
152
129
|
}
|
|
153
|
-
|
|
154
130
|
handleTableUpdate(event) {
|
|
155
131
|
var {
|
|
156
132
|
table,
|
|
@@ -163,7 +139,6 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
|
|
|
163
139
|
} = data;
|
|
164
140
|
var items = [];
|
|
165
141
|
var column = table.columns[0];
|
|
166
|
-
|
|
167
142
|
for (var r = 0; r < data.rows.length; r += 1) {
|
|
168
143
|
var row = data.rows[r];
|
|
169
144
|
var value = row.get(column);
|
|
@@ -175,7 +150,6 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
|
|
|
175
150
|
isSelected
|
|
176
151
|
});
|
|
177
152
|
}
|
|
178
|
-
|
|
179
153
|
log.debug2('Received table update:', offset, items.length);
|
|
180
154
|
var itemCount = table.size;
|
|
181
155
|
this.setState({
|
|
@@ -185,39 +159,34 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
|
|
|
185
159
|
isLoading: false
|
|
186
160
|
});
|
|
187
161
|
}
|
|
188
|
-
|
|
189
162
|
isValueSelected(value) {
|
|
190
163
|
var {
|
|
191
164
|
invertSelection
|
|
192
165
|
} = this.props;
|
|
193
166
|
var {
|
|
194
167
|
selectedValues
|
|
195
|
-
} = this.state;
|
|
168
|
+
} = this.state;
|
|
196
169
|
|
|
170
|
+
// Need to check if any of the valueOf matches, timestamp value that is equal
|
|
197
171
|
var selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(value, selectedValues);
|
|
198
172
|
return invertSelection ? selectedIndex < 0 : selectedIndex >= 0;
|
|
199
173
|
}
|
|
200
|
-
|
|
201
174
|
startListening(table) {
|
|
202
175
|
table.addEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);
|
|
203
176
|
}
|
|
204
|
-
|
|
205
177
|
stopListening(table) {
|
|
206
178
|
table.removeEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);
|
|
207
179
|
}
|
|
208
|
-
|
|
209
180
|
resetViewport() {
|
|
210
181
|
if (this.list && this.list.topRow != null && this.list.bottomRow != null) {
|
|
211
182
|
this.updateViewport(this.list.topRow, this.list.bottomRow, true);
|
|
212
183
|
}
|
|
213
184
|
}
|
|
214
|
-
|
|
215
185
|
updateItemSelection() {
|
|
216
186
|
var {
|
|
217
187
|
items
|
|
218
188
|
} = this.state;
|
|
219
189
|
items = [...items];
|
|
220
|
-
|
|
221
190
|
for (var i = 0; i < items.length; i += 1) {
|
|
222
191
|
var item = items[i];
|
|
223
192
|
var {
|
|
@@ -225,35 +194,29 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
|
|
|
225
194
|
} = item;
|
|
226
195
|
item.isSelected = this.isValueSelected(value);
|
|
227
196
|
}
|
|
228
|
-
|
|
229
197
|
this.setState({
|
|
230
198
|
items
|
|
231
199
|
});
|
|
232
200
|
}
|
|
233
|
-
|
|
234
201
|
updateViewport(top, bottom) {
|
|
235
202
|
var isLoading = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
236
203
|
var {
|
|
237
204
|
table
|
|
238
205
|
} = this.props;
|
|
239
|
-
|
|
240
206
|
if (table == null) {
|
|
241
207
|
return;
|
|
242
208
|
}
|
|
243
|
-
|
|
244
209
|
if (isLoading) {
|
|
245
210
|
this.setState({
|
|
246
211
|
isLoading: true
|
|
247
212
|
});
|
|
248
213
|
}
|
|
249
|
-
|
|
250
214
|
var viewportSize = bottom - top + 1;
|
|
251
215
|
var topRow = Math.max(0, top - viewportSize * 3);
|
|
252
216
|
var bottomRow = Math.max(topRow, bottom + viewportSize * 3);
|
|
253
217
|
log.debug2('Setting viewport', topRow, ',', bottomRow);
|
|
254
218
|
table.setViewport(topRow, bottomRow);
|
|
255
219
|
}
|
|
256
|
-
|
|
257
220
|
render() {
|
|
258
221
|
var {
|
|
259
222
|
offset,
|
|
@@ -284,14 +247,11 @@ class AdvancedFilterCreatorSelectValueList extends PureComponent {
|
|
|
284
247
|
className: "loading-spinner-large"
|
|
285
248
|
}))));
|
|
286
249
|
}
|
|
287
|
-
|
|
288
250
|
}
|
|
289
|
-
|
|
290
251
|
_defineProperty(AdvancedFilterCreatorSelectValueList, "defaultProps", {
|
|
291
252
|
invertSelection: true,
|
|
292
253
|
selectedValues: [],
|
|
293
254
|
onChange: () => undefined
|
|
294
255
|
});
|
|
295
|
-
|
|
296
256
|
export default AdvancedFilterCreatorSelectValueList;
|
|
297
257
|
//# sourceMappingURL=AdvancedFilterCreatorSelectValueList.js.map
|