@deephaven/iris-grid 0.37.4-logout.1 → 0.37.4-logout.17
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.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.js +1 -2
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.css +1 -3
- package/dist/IrisGrid.css.map +1 -1
- package/dist/IrisGrid.js +10 -3
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCopyHandler.js +3 -4
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.js +138 -0
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.js +5 -6
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +6 -0
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.module.css +1 -2
- package/dist/IrisGridTheme.module.css.map +1 -1
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.js +3 -0
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.js +3 -0
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js +1 -2
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +5 -0
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/sidebar/AdvancedSettings.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsType.js +3 -3
- package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/OptionType.js +3 -3
- package/dist/sidebar/OptionType.js.map +1 -1
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.js +4 -0
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +3 -3
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationOperation.js +3 -3
- package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +21 -21
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/icons/BarIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
- package/dist/sidebar/icons/LineIcon.js.map +1 -1
- package/dist/sidebar/icons/PieIcon.js.map +1 -1
- package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +15 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrossColumnSearch.js","names":["React","PureComponent","FontAwesomeIcon","Checkbox","Popper","SearchInput","Tooltip","dhGearFilled","dhCheckSquare","dhSquareFilled","dhRemoveSquareFilled","dhWarningCircleFilled","vsCircleLargeFilled","dh","TableUtils","CrossColumnSearch","createSearchFilter","searchValue","selectedColumns","columns","invertSelection","filterColumns","filter","column","includes","name","map","length","filterValue","FilterValue","ofString","searchFilter","FilterCondition","search","undefined","constructor","props","handleSearchValueChange","bind","toggleColumn","selectAll","clear","selectNumbers","searchField","createRef","state","isConfigureColumnsShown","focus","current","event","onChange","target","value","sendColumnChange","setInvertSelection","c","update","slice","push","isNumberType","type","render","hasAllColumnsSelected","hasNoColumnsSelected","icon","setState","substring","lastIndexOf"],"sources":["../src/CrossColumnSearch.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport {\n dhGearFilled,\n dhCheckSquare,\n dhSquareFilled,\n dhRemoveSquareFilled,\n dhWarningCircleFilled,\n vsCircleLargeFilled,\n} from '@deephaven/icons';\nimport dh, { Column, FilterCondition } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport './CrossColumnSearch.scss';\nimport { ColumnName } from './CommonTypes';\n\ninterface CrossColumnSearchProps {\n value: string;\n selectedColumns: readonly ColumnName[];\n invertSelection: boolean;\n onChange: (\n value: string,\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ) => void;\n columns: readonly Column[];\n}\n\ninterface CrossColumnSearchState {\n isConfigureColumnsShown: boolean;\n}\nclass CrossColumnSearch extends PureComponent<\n CrossColumnSearchProps,\n CrossColumnSearchState\n> {\n static createSearchFilter(\n searchValue: string,\n selectedColumns: readonly ColumnName[],\n columns: readonly Column[],\n invertSelection: boolean\n ): FilterCondition | undefined {\n const filterColumns = invertSelection\n ? columns\n .filter(column => !selectedColumns.includes(column.name))\n .map(column => column.name)\n : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n const filterValue = dh.FilterValue.ofString(searchValue);\n const searchFilter =\n filterColumns.length === columns.length\n ? dh.FilterCondition.search(filterValue)\n : dh.FilterCondition.search(\n filterValue,\n columns\n .filter(column => filterColumns.includes(column.name))\n .map(column => column.filter())\n );\n return searchFilter;\n }\n return undefined;\n }\n\n constructor(props: CrossColumnSearchProps) {\n super(props);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n\n this.searchField = React.createRef();\n\n this.state = {\n isConfigureColumnsShown: false,\n };\n }\n\n searchField: React.RefObject<SearchInput>;\n\n focus(): void {\n this.searchField.current?.focus();\n }\n\n handleSearchValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const { onChange, selectedColumns, invertSelection } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n\n sendColumnChange(\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ): void {\n const { onChange, value } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n\n setInvertSelection(invertSelection: boolean): void {\n const { onChange, value } = this.props;\n onChange(value, [], invertSelection);\n }\n\n toggleColumn(name: string): void {\n const { selectedColumns, invertSelection } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(\n selectedColumns.filter(c => c !== name),\n invertSelection\n );\n } else {\n const update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n\n selectAll(): void {\n this.setInvertSelection(true);\n }\n\n clear(): void {\n this.setInvertSelection(false);\n }\n\n selectNumbers(): void {\n const { columns } = this.props;\n this.sendColumnChange(\n columns\n .filter(c => TableUtils.isNumberType(c.type))\n .map(column => column.name),\n false\n );\n }\n\n render(): React.ReactElement {\n const { value, selectedColumns, invertSelection, columns } = this.props;\n const { isConfigureColumnsShown } = this.state;\n const hasAllColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === true) ||\n (selectedColumns.length === columns.length && invertSelection === false);\n const hasNoColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === false) ||\n (selectedColumns.length === columns.length && invertSelection === true);\n\n // set icon layers\n let icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhCheckSquare}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = (\n <>\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={dhGearFilled}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhWarningCircleFilled}\n className=\"text-danger\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else {\n // icon if some columns selected, but not all\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhRemoveSquareFilled}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n }\n\n return (\n <div className=\"cross-column-container\">\n <SearchInput\n className=\"cross-column-search\"\n placeholder=\"Search Data...\"\n value={value}\n onChange={this.handleSearchValueChange}\n ref={this.searchField}\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2\"\n onClick={() => {\n if (isConfigureColumnsShown) {\n this.setState({ isConfigureColumnsShown: false });\n } else {\n this.setState({ isConfigureColumnsShown: true });\n }\n }}\n >\n <div className=\"fa-layers\">{icon}</div>\n <Tooltip>Configure Columns</Tooltip>\n <Popper\n isShown={isConfigureColumnsShown}\n className=\"cross-column-popper\"\n onExited={() => {\n this.setState({ isConfigureColumnsShown: false });\n }}\n closeOnBlur\n interactive\n >\n <div className=\"cross-column-popup\">\n Searched Columns\n <div className=\"cross-column-scroll\">\n {columns.map(column => (\n <React.Fragment key={column.name}>\n <Checkbox\n className=\"cross-column-checkbox\"\n checked={\n invertSelection\n ? !selectedColumns.includes(column.name)\n : selectedColumns.includes(column.name)\n }\n onChange={() => this.toggleColumn(column.name)}\n >\n {column.name}\n </Checkbox>\n\n {column.type.substring(column.type.lastIndexOf('.') + 1)}\n </React.Fragment>\n ))}\n </div>\n <div className=\"cross-column-button-bar\">\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n >\n Clear\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectNumbers}\n >\n Numbers Only\n </button>\n </div>\n {hasNoColumnsSelected && (\n <p className=\"text-danger\">\n <FontAwesomeIcon icon={dhWarningCircleFilled} /> Select at\n least one column to search.\n </p>\n )}\n </div>\n </Popper>\n </button>\n </div>\n );\n }\n}\n\nexport default CrossColumnSearch;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CrossColumnSearch.js","names":["React","PureComponent","FontAwesomeIcon","Checkbox","Popper","SearchInput","Tooltip","dhGearFilled","dhCheckSquare","dhSquareFilled","dhRemoveSquareFilled","dhWarningCircleFilled","vsCircleLargeFilled","dh","TableUtils","CrossColumnSearch","createSearchFilter","searchValue","selectedColumns","columns","invertSelection","filterColumns","filter","column","includes","name","map","length","filterValue","FilterValue","ofString","searchFilter","FilterCondition","search","undefined","constructor","props","_defineProperty","handleSearchValueChange","bind","toggleColumn","selectAll","clear","selectNumbers","searchField","createRef","state","isConfigureColumnsShown","focus","_this$searchField$cur","current","event","onChange","target","value","sendColumnChange","setInvertSelection","c","update","slice","push","isNumberType","type","render","hasAllColumnsSelected","hasNoColumnsSelected","icon","createElement","Fragment","mask","transform","className","placeholder","ref","onClick","setState","isShown","onExited","closeOnBlur","interactive","key","checked","substring","lastIndexOf"],"sources":["../src/CrossColumnSearch.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport {\n dhGearFilled,\n dhCheckSquare,\n dhSquareFilled,\n dhRemoveSquareFilled,\n dhWarningCircleFilled,\n vsCircleLargeFilled,\n} from '@deephaven/icons';\nimport dh, { Column, FilterCondition } from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport './CrossColumnSearch.scss';\nimport { ColumnName } from './CommonTypes';\n\ninterface CrossColumnSearchProps {\n value: string;\n selectedColumns: readonly ColumnName[];\n invertSelection: boolean;\n onChange: (\n value: string,\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ) => void;\n columns: readonly Column[];\n}\n\ninterface CrossColumnSearchState {\n isConfigureColumnsShown: boolean;\n}\nclass CrossColumnSearch extends PureComponent<\n CrossColumnSearchProps,\n CrossColumnSearchState\n> {\n static createSearchFilter(\n searchValue: string,\n selectedColumns: readonly ColumnName[],\n columns: readonly Column[],\n invertSelection: boolean\n ): FilterCondition | undefined {\n const filterColumns = invertSelection\n ? columns\n .filter(column => !selectedColumns.includes(column.name))\n .map(column => column.name)\n : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n const filterValue = dh.FilterValue.ofString(searchValue);\n const searchFilter =\n filterColumns.length === columns.length\n ? dh.FilterCondition.search(filterValue)\n : dh.FilterCondition.search(\n filterValue,\n columns\n .filter(column => filterColumns.includes(column.name))\n .map(column => column.filter())\n );\n return searchFilter;\n }\n return undefined;\n }\n\n constructor(props: CrossColumnSearchProps) {\n super(props);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n\n this.searchField = React.createRef();\n\n this.state = {\n isConfigureColumnsShown: false,\n };\n }\n\n searchField: React.RefObject<SearchInput>;\n\n focus(): void {\n this.searchField.current?.focus();\n }\n\n handleSearchValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const { onChange, selectedColumns, invertSelection } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n\n sendColumnChange(\n selectedColumns: readonly ColumnName[],\n invertSelection: boolean\n ): void {\n const { onChange, value } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n\n setInvertSelection(invertSelection: boolean): void {\n const { onChange, value } = this.props;\n onChange(value, [], invertSelection);\n }\n\n toggleColumn(name: string): void {\n const { selectedColumns, invertSelection } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(\n selectedColumns.filter(c => c !== name),\n invertSelection\n );\n } else {\n const update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n\n selectAll(): void {\n this.setInvertSelection(true);\n }\n\n clear(): void {\n this.setInvertSelection(false);\n }\n\n selectNumbers(): void {\n const { columns } = this.props;\n this.sendColumnChange(\n columns\n .filter(c => TableUtils.isNumberType(c.type))\n .map(column => column.name),\n false\n );\n }\n\n render(): React.ReactElement {\n const { value, selectedColumns, invertSelection, columns } = this.props;\n const { isConfigureColumnsShown } = this.state;\n const hasAllColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === true) ||\n (selectedColumns.length === columns.length && invertSelection === false);\n const hasNoColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === false) ||\n (selectedColumns.length === columns.length && invertSelection === true);\n\n // set icon layers\n let icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhCheckSquare}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = (\n <>\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={dhGearFilled}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhWarningCircleFilled}\n className=\"text-danger\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else {\n // icon if some columns selected, but not all\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhRemoveSquareFilled}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n }\n\n return (\n <div className=\"cross-column-container\">\n <SearchInput\n className=\"cross-column-search\"\n placeholder=\"Search Data...\"\n value={value}\n onChange={this.handleSearchValueChange}\n ref={this.searchField}\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2\"\n onClick={() => {\n if (isConfigureColumnsShown) {\n this.setState({ isConfigureColumnsShown: false });\n } else {\n this.setState({ isConfigureColumnsShown: true });\n }\n }}\n >\n <div className=\"fa-layers\">{icon}</div>\n <Tooltip>Configure Columns</Tooltip>\n <Popper\n isShown={isConfigureColumnsShown}\n className=\"cross-column-popper\"\n onExited={() => {\n this.setState({ isConfigureColumnsShown: false });\n }}\n closeOnBlur\n interactive\n >\n <div className=\"cross-column-popup\">\n Searched Columns\n <div className=\"cross-column-scroll\">\n {columns.map(column => (\n <React.Fragment key={column.name}>\n <Checkbox\n className=\"cross-column-checkbox\"\n checked={\n invertSelection\n ? !selectedColumns.includes(column.name)\n : selectedColumns.includes(column.name)\n }\n onChange={() => this.toggleColumn(column.name)}\n >\n {column.name}\n </Checkbox>\n\n {column.type.substring(column.type.lastIndexOf('.') + 1)}\n </React.Fragment>\n ))}\n </div>\n <div className=\"cross-column-button-bar\">\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n >\n Clear\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectNumbers}\n >\n Numbers Only\n </button>\n </div>\n {hasNoColumnsSelected && (\n <p className=\"text-danger\">\n <FontAwesomeIcon icon={dhWarningCircleFilled} /> Select at\n least one column to search.\n </p>\n )}\n </div>\n </Popper>\n </button>\n </div>\n );\n }\n}\n\nexport default CrossColumnSearch;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterInputField.js","names":["React","PureComponent","classNames","debounce","vsFilter","dhFilterFilled","FontAwesomeIcon","Button","FilterInputField","constructor","props","debounceMs","debouncedSendUpdate","sendUpdate","bind","handleCancel","handleChange","handleCommit","handleFocus","handleBlur","handleKeyDown","handleContextMenu","inputField","value","initialValue","state","isChanged","componentDidMount","focus","componentDidUpdate","prevProps","flush","componentWillUnmount","cancel","setValue","setState","event","target","onDone","setGridFocus","defocusInput","select","relatedTarget","classList","contains","handleTab","backward","onTab","key","stopPropagation","preventDefault","shiftKey","onContextMenu","onChange","render","className","style","isAdvancedFilterSet","onAdvancedFiltersTriggered","undefined"],"sources":["../src/FilterInputField.tsx"],"sourcesContent":["import React, { ChangeEvent, PureComponent, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { vsFilter, dhFilterFilled } from '@deephaven/icons';\nimport './FilterInputField.scss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport type { DebouncedFunc } from 'lodash';\nimport { Button } from '@deephaven/components';\n\ninterface FilterInputFieldProps {\n className: string;\n style: React.CSSProperties;\n value: string;\n isAdvancedFilterSet: boolean;\n onAdvancedFiltersTriggered: React.MouseEventHandler<HTMLButtonElement>;\n onChange: (value: string) => void;\n onDone: (setGridFocus?: boolean, defocusInput?: boolean) => void;\n onTab: (backward: boolean) => void;\n onContextMenu: React.MouseEventHandler<HTMLInputElement | HTMLButtonElement>;\n debounceMs: number;\n}\ninterface FilterInputFieldState {\n isChanged: boolean;\n value: string;\n}\n/**\n * An input field showing a input field and button.\n * Debounces changes.\n */\nclass FilterInputField extends PureComponent<\n FilterInputFieldProps,\n FilterInputFieldState\n> {\n static defaultProps = {\n style: {},\n className: '',\n value: '',\n isAdvancedFilterSet: false,\n onAdvancedFiltersTriggered: (): void => undefined,\n onChange: (): void => undefined,\n onDone: (): void => undefined,\n onTab: (): void => undefined,\n onContextMenu: (): void => undefined,\n debounceMs: 150,\n };\n\n constructor(props: FilterInputFieldProps) {\n super(props);\n\n const { debounceMs } = props;\n\n this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleCommit = this.handleCommit.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n\n this.inputField = null;\n\n const { value } = props;\n this.initialValue = value;\n this.state = {\n isChanged: false,\n value,\n };\n }\n\n componentDidMount(): void {\n this.inputField?.focus();\n }\n\n componentDidUpdate(prevProps: FilterInputFieldProps): void {\n const { debounceMs } = this.props;\n if (prevProps.debounceMs !== debounceMs) {\n this.debouncedSendUpdate.flush();\n this.debouncedSendUpdate = debounce(\n this.sendUpdate.bind(this),\n debounceMs\n );\n }\n }\n\n componentWillUnmount(): void {\n this.debouncedSendUpdate.cancel();\n }\n\n inputField: HTMLInputElement | null;\n\n initialValue: string;\n\n debouncedSendUpdate: DebouncedFunc<(value: string) => void>;\n\n // clear filters needs to be able to reset the value externally\n // and due to the way this component handles its own debouncing\n // this was easier than moving state up.\n setValue(value: string): void {\n this.initialValue = value;\n this.setState({ value });\n }\n\n focus(): void {\n this.inputField?.focus();\n }\n\n handleChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value } = event.target;\n this.setState({ value, isChanged: true });\n\n this.debouncedSendUpdate(value);\n }\n\n handleCancel(): void {\n this.debouncedSendUpdate.cancel();\n const { initialValue } = this;\n const { isChanged } = this.state;\n if (isChanged) {\n this.sendUpdate(initialValue);\n }\n\n const { onDone } = this.props;\n onDone();\n }\n\n handleCommit(setGridFocus = true, defocusInput = true): void {\n this.debouncedSendUpdate.flush();\n\n const { onDone } = this.props;\n onDone(setGridFocus, defocusInput);\n }\n\n handleFocus(): void {\n this.inputField?.select();\n }\n\n handleBlur(event: React.FocusEvent<HTMLInputElement>): void {\n const { relatedTarget } = event;\n // handleCommit results in a call that steals focus\n if (\n relatedTarget != null &&\n relatedTarget.classList.contains('context-menu-container')\n ) {\n // input blurred by calling context-menu\n // don't set grid focus, but do null column focus\n this.handleCommit(false, true);\n } else if (\n relatedTarget != null &&\n relatedTarget.classList.contains('advanced-filter-button')\n ) {\n // blurred by clicking an advanced filter button\n // don't set grid focus, maintain focusedFilterBarColumn state\n this.handleCommit(false, false);\n } else {\n // clear both, blurred elsewhere\n this.handleCommit(true, true);\n }\n }\n\n handleTab(backward = false): void {\n this.debouncedSendUpdate.flush();\n\n const { onTab } = this.props;\n onTab(backward);\n }\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {\n switch (event.key) {\n case 'Escape':\n event.stopPropagation();\n event.preventDefault();\n this.handleCancel();\n break;\n case 'Enter':\n event.stopPropagation();\n event.preventDefault();\n this.handleCommit();\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n this.handleTab(event.shiftKey);\n break;\n default:\n break;\n }\n }\n\n handleContextMenu(\n event: React.MouseEvent<HTMLInputElement | HTMLButtonElement>\n ): void {\n const { onContextMenu } = this.props;\n onContextMenu(event);\n }\n\n sendUpdate(value: string): void {\n const { onChange } = this.props;\n onChange(value);\n }\n\n render(): ReactElement {\n const {\n className,\n style,\n isAdvancedFilterSet,\n onAdvancedFiltersTriggered,\n } = this.props;\n const { value } = this.state;\n return (\n <div\n style={style}\n className=\"iris-grid-input-autosized-wrapper\"\n data-value={value} // used by css based autosizer\n >\n <input\n ref={inputField => {\n this.inputField = inputField;\n }}\n className={classNames('iris-grid-input-field', className)}\n type=\"text\"\n value={value}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onChange={this.handleChange}\n onKeyDown={this.handleKeyDown}\n onContextMenu={this.handleContextMenu}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n />\n <div className=\"advanced-filter-button-container\">\n <Button\n kind=\"ghost\"\n className={classNames('btn-link-icon advanced-filter-button', {\n 'filter-set': isAdvancedFilterSet,\n })}\n onClick={onAdvancedFiltersTriggered}\n onContextMenu={this.handleContextMenu}\n >\n <div className=\"fa-layers \">\n <FontAwesomeIcon icon={dhFilterFilled} className=\"filter-solid\" />\n <FontAwesomeIcon icon={vsFilter} className=\"filter-light\" />\n </div>\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default FilterInputField;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FilterInputField.js","names":["React","PureComponent","classNames","debounce","vsFilter","dhFilterFilled","FontAwesomeIcon","Button","FilterInputField","constructor","props","_defineProperty","debounceMs","debouncedSendUpdate","sendUpdate","bind","handleCancel","handleChange","handleCommit","handleFocus","handleBlur","handleKeyDown","handleContextMenu","inputField","value","initialValue","state","isChanged","componentDidMount","_this$inputField","focus","componentDidUpdate","prevProps","flush","componentWillUnmount","cancel","setValue","setState","_this$inputField2","event","target","onDone","setGridFocus","arguments","length","undefined","defocusInput","_this$inputField3","select","relatedTarget","classList","contains","handleTab","backward","onTab","key","stopPropagation","preventDefault","shiftKey","onContextMenu","onChange","render","className","style","isAdvancedFilterSet","onAdvancedFiltersTriggered","createElement","ref","type","onBlur","onFocus","onKeyDown","autoComplete","autoCorrect","autoCapitalize","spellCheck","kind","onClick","icon"],"sources":["../src/FilterInputField.tsx"],"sourcesContent":["import React, { ChangeEvent, PureComponent, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { vsFilter, dhFilterFilled } from '@deephaven/icons';\nimport './FilterInputField.scss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport type { DebouncedFunc } from 'lodash';\nimport { Button } from '@deephaven/components';\n\ninterface FilterInputFieldProps {\n className: string;\n style: React.CSSProperties;\n value: string;\n isAdvancedFilterSet: boolean;\n onAdvancedFiltersTriggered: React.MouseEventHandler<HTMLButtonElement>;\n onChange: (value: string) => void;\n onDone: (setGridFocus?: boolean, defocusInput?: boolean) => void;\n onTab: (backward: boolean) => void;\n onContextMenu: React.MouseEventHandler<HTMLInputElement | HTMLButtonElement>;\n debounceMs: number;\n}\ninterface FilterInputFieldState {\n isChanged: boolean;\n value: string;\n}\n/**\n * An input field showing a input field and button.\n * Debounces changes.\n */\nclass FilterInputField extends PureComponent<\n FilterInputFieldProps,\n FilterInputFieldState\n> {\n static defaultProps = {\n style: {},\n className: '',\n value: '',\n isAdvancedFilterSet: false,\n onAdvancedFiltersTriggered: (): void => undefined,\n onChange: (): void => undefined,\n onDone: (): void => undefined,\n onTab: (): void => undefined,\n onContextMenu: (): void => undefined,\n debounceMs: 150,\n };\n\n constructor(props: FilterInputFieldProps) {\n super(props);\n\n const { debounceMs } = props;\n\n this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleCommit = this.handleCommit.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n\n this.inputField = null;\n\n const { value } = props;\n this.initialValue = value;\n this.state = {\n isChanged: false,\n value,\n };\n }\n\n componentDidMount(): void {\n this.inputField?.focus();\n }\n\n componentDidUpdate(prevProps: FilterInputFieldProps): void {\n const { debounceMs } = this.props;\n if (prevProps.debounceMs !== debounceMs) {\n this.debouncedSendUpdate.flush();\n this.debouncedSendUpdate = debounce(\n this.sendUpdate.bind(this),\n debounceMs\n );\n }\n }\n\n componentWillUnmount(): void {\n this.debouncedSendUpdate.cancel();\n }\n\n inputField: HTMLInputElement | null;\n\n initialValue: string;\n\n debouncedSendUpdate: DebouncedFunc<(value: string) => void>;\n\n // clear filters needs to be able to reset the value externally\n // and due to the way this component handles its own debouncing\n // this was easier than moving state up.\n setValue(value: string): void {\n this.initialValue = value;\n this.setState({ value });\n }\n\n focus(): void {\n this.inputField?.focus();\n }\n\n handleChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value } = event.target;\n this.setState({ value, isChanged: true });\n\n this.debouncedSendUpdate(value);\n }\n\n handleCancel(): void {\n this.debouncedSendUpdate.cancel();\n const { initialValue } = this;\n const { isChanged } = this.state;\n if (isChanged) {\n this.sendUpdate(initialValue);\n }\n\n const { onDone } = this.props;\n onDone();\n }\n\n handleCommit(setGridFocus = true, defocusInput = true): void {\n this.debouncedSendUpdate.flush();\n\n const { onDone } = this.props;\n onDone(setGridFocus, defocusInput);\n }\n\n handleFocus(): void {\n this.inputField?.select();\n }\n\n handleBlur(event: React.FocusEvent<HTMLInputElement>): void {\n const { relatedTarget } = event;\n // handleCommit results in a call that steals focus\n if (\n relatedTarget != null &&\n relatedTarget.classList.contains('context-menu-container')\n ) {\n // input blurred by calling context-menu\n // don't set grid focus, but do null column focus\n this.handleCommit(false, true);\n } else if (\n relatedTarget != null &&\n relatedTarget.classList.contains('advanced-filter-button')\n ) {\n // blurred by clicking an advanced filter button\n // don't set grid focus, maintain focusedFilterBarColumn state\n this.handleCommit(false, false);\n } else {\n // clear both, blurred elsewhere\n this.handleCommit(true, true);\n }\n }\n\n handleTab(backward = false): void {\n this.debouncedSendUpdate.flush();\n\n const { onTab } = this.props;\n onTab(backward);\n }\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): void {\n switch (event.key) {\n case 'Escape':\n event.stopPropagation();\n event.preventDefault();\n this.handleCancel();\n break;\n case 'Enter':\n event.stopPropagation();\n event.preventDefault();\n this.handleCommit();\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n this.handleTab(event.shiftKey);\n break;\n default:\n break;\n }\n }\n\n handleContextMenu(\n event: React.MouseEvent<HTMLInputElement | HTMLButtonElement>\n ): void {\n const { onContextMenu } = this.props;\n onContextMenu(event);\n }\n\n sendUpdate(value: string): void {\n const { onChange } = this.props;\n onChange(value);\n }\n\n render(): ReactElement {\n const {\n className,\n style,\n isAdvancedFilterSet,\n onAdvancedFiltersTriggered,\n } = this.props;\n const { value } = this.state;\n return (\n <div\n style={style}\n className=\"iris-grid-input-autosized-wrapper\"\n data-value={value} // used by css based autosizer\n >\n <input\n ref={inputField => {\n this.inputField = inputField;\n }}\n className={classNames('iris-grid-input-field', className)}\n type=\"text\"\n value={value}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onChange={this.handleChange}\n onKeyDown={this.handleKeyDown}\n onContextMenu={this.handleContextMenu}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n />\n <div className=\"advanced-filter-button-container\">\n <Button\n kind=\"ghost\"\n className={classNames('btn-link-icon advanced-filter-button', {\n 'filter-set': isAdvancedFilterSet,\n })}\n onClick={onAdvancedFiltersTriggered}\n onContextMenu={this.handleContextMenu}\n >\n <div className=\"fa-layers \">\n <FontAwesomeIcon icon={dhFilterFilled} className=\"filter-solid\" />\n <FontAwesomeIcon icon={vsFilter} className=\"filter-light\" />\n </div>\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default FilterInputField;\n"],"mappings":"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"}
|
package/dist/GotoRow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GotoRow.js","names":["FontAwesomeIcon","vsClose","vsArrowUp","vsArrowDown","React","useEffect","useRef","useState","Type","FilterType","Button","DateTimeInput","TableUtils","classNames","IrisGridBottomBar","isIrisGridProxyModel","model","undefined","DEFAULT_FORMAT_STRING","GotoRow","gotoRow","gotoRowError","gotoValueError","onGotoRowSubmit","isShown","onEntering","onEntered","onExiting","onExited","onGotoRowNumberChanged","onClose","gotoValueSelectedColumnName","gotoValue","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","gotoRowInputRef","gotoValueInputRef","isGotoRowActive","setIsGotoRowActive","columns","table","res","rowCount","handleGotoValueNumberKeyDown","e","key","stopPropagation","preventDefault","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","onGotoValueInputChanged","handleGotoValueKeySubmit","shiftKey","index","getColumnIndexByName","selectedColumn","columnType","type","normalizedType","getNormalizedType","value","selectInput","document","activeElement","current","select","renderValueInput","dataType","DECIMAL","INT","target","toLowerCase","test","DATETIME","STRING","event","eq","contains","eqIgnoreCase","BOOLEAN","dh","i18n","NumberFormat","format","marginRight","isSeekRowAvailable","columnName","map","column","name"],"sources":["../src/GotoRow.tsx"],"sourcesContent":["import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';\nimport React, {\n ChangeEvent,\n KeyboardEvent,\n ReactElement,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Column } from '@deephaven/jsapi-shim';\nimport {\n Type as FilterType,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { Button, DateTimeInput } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport classNames from 'classnames';\nimport './GotoRow.scss';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridProxyModel from './IrisGridProxyModel';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport { ColumnName } from './CommonTypes';\n\nfunction isIrisGridProxyModel(\n model: IrisGridModel\n): model is IrisGridProxyModel {\n return (model as IrisGridProxyModel).model !== undefined;\n}\n\nconst DEFAULT_FORMAT_STRING = '###,##0';\n\ninterface GotoRowProps {\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n onGotoRowSubmit: () => void;\n model: IrisGridModel;\n onGotoRowNumberChanged: (event: ChangeEvent<HTMLInputElement>) => void;\n onClose: () => void;\n isShown: boolean;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValue: string;\n gotoValueFilter: FilterTypeValue;\n onGotoValueSelectedColumnNameChanged: (columnName: ColumnName) => void;\n onGotoValueSelectedFilterChanged: (filter: FilterTypeValue) => void;\n onGotoValueChanged: (input: string) => void;\n onGotoValueSubmit: (isBackward?: boolean) => void;\n}\n\nfunction GotoRow({\n gotoRow,\n gotoRowError,\n gotoValueError,\n onGotoRowSubmit,\n isShown,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n model,\n onGotoRowNumberChanged,\n onClose,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueFilter,\n onGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged,\n onGotoValueChanged,\n onGotoValueSubmit,\n}: GotoRowProps): ReactElement {\n const gotoRowInputRef = useRef<HTMLInputElement>(null);\n const gotoValueInputRef = useRef<HTMLInputElement>(null);\n\n const [isGotoRowActive, setIsGotoRowActive] = useState(false);\n let columns: Column[] = [];\n\n if (isIrisGridProxyModel(model) && model.table !== undefined) {\n ({ columns } = model.table);\n }\n\n const res = 'Row number';\n\n const { rowCount } = model;\n\n const handleGotoValueNumberKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n } else if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n (gotoValue === `${Number.POSITIVE_INFINITY}` ||\n gotoValue === `${Number.NEGATIVE_INFINITY}`)\n ) {\n onGotoValueInputChanged('');\n }\n };\n\n const handleGotoValueKeySubmit = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit(e.shiftKey);\n }\n };\n\n const index = model.getColumnIndexByName(gotoValueSelectedColumnName);\n\n const selectedColumn = columns[index ?? 0];\n\n const columnType = selectedColumn?.type;\n\n const normalizedType = TableUtils.getNormalizedType(columnType);\n const onGotoValueInputChanged = (value?: string) => {\n onGotoValueChanged(value ?? '');\n };\n const selectInput = () => {\n // when row changes without focus (i.e. via context menu), re-select input\n if (isGotoRowActive && document.activeElement !== gotoRowInputRef.current) {\n gotoRowInputRef.current?.select();\n } else if (\n !isGotoRowActive &&\n document.activeElement !== gotoValueInputRef.current\n ) {\n gotoValueInputRef.current?.select();\n }\n };\n useEffect(selectInput, [isGotoRowActive, gotoRow, gotoValue]);\n\n const renderValueInput = () => {\n switch (normalizedType) {\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueNumberKeyDown}\n placeholder=\"value\"\n onChange={e => {\n const value = e.target.value.toLowerCase();\n // regex tests for\n if (/^-?[0-9]*\\.?[0-9]*$/.test(e.target.value)) {\n onGotoValueInputChanged(e.target.value);\n } else if (value === '-i' || value === '-infinity') {\n onGotoValueInputChanged(`${Number.NEGATIVE_INFINITY}`);\n } else if (value === 'i' || value === 'infinity') {\n onGotoValueInputChanged(`${Number.POSITIVE_INFINITY}`);\n }\n }}\n value={gotoValue}\n />\n </div>\n );\n case TableUtils.dataType.DATETIME:\n return (\n <div className=\"goto-value-date-time-input\">\n <DateTimeInput\n ref={gotoValueInputRef}\n className={classNames(\n 'form-control',\n 'goto-value-date-time-input',\n {\n 'is-invalid': gotoValueError !== '',\n }\n )}\n defaultValue={gotoValue}\n onChange={onGotoValueInputChanged}\n onSubmit={handleGotoValueKeySubmit}\n />\n </div>\n );\n case TableUtils.dataType.STRING:\n return (\n <>\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n onGotoValueSelectedFilterChanged(\n event.target.value as FilterTypeValue\n );\n }}\n value={gotoValueFilter}\n >\n <option key={FilterType.eq} value={FilterType.eq}>\n Equals\n </option>\n <option key={FilterType.contains} value={FilterType.contains}>\n Contains\n </option>\n <option\n key={FilterType.eqIgnoreCase}\n value={FilterType.eqIgnoreCase}\n >\n EqIgnoreCase\n </option>\n </select>\n </div>\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n />\n </div>\n </>\n );\n case TableUtils.dataType.BOOLEAN:\n return (\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n onGotoValueInputChanged(event.target.value);\n }}\n value={gotoValue}\n >\n <option aria-label=\"null value\" key=\"null\" value=\"\" />\n <option key=\"true\" value=\"true\">\n true\n </option>\n <option key=\"false\" value=\"false\">\n false\n </option>\n </select>\n </div>\n );\n default:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className=\"form-control\"\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n />\n </div>\n );\n }\n };\n return (\n <IrisGridBottomBar\n isShown={isShown}\n className={classNames('goto-row')}\n onEntering={onEntering}\n onEntered={() => {\n onEntered();\n selectInput();\n }}\n onExiting={onExiting}\n onExited={onExited}\n >\n <>\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': !isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(true)}\n onFocus={() => setIsGotoRowActive(true)}\n role=\"group\"\n >\n <div className=\"goto-row-text\">Go to row</div>\n <div className=\"goto-row-input\">\n <input\n ref={gotoRowInputRef}\n type=\"number\"\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoRowSubmit();\n }\n }}\n className={classNames('form-control', {\n 'is-invalid': gotoRowError !== '',\n })}\n placeholder={res}\n onChange={event => {\n onGotoRowNumberChanged(event);\n }}\n value={gotoRow}\n />\n </div>\n <div className=\"goto-row-text\">\n of {dh.i18n.NumberFormat.format(DEFAULT_FORMAT_STRING, rowCount)}\n </div>\n {gotoRowError && <div className=\"text-danger\">{gotoRowError}</div>}\n </div>\n <div className=\"goto-row-close\">\n <Button kind=\"ghost\" onClick={onClose}>\n <FontAwesomeIcon icon={vsClose} style={{ marginRight: '0' }} />\n </Button>\n </div>\n </div>\n {model.isSeekRowAvailable && (\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(false)}\n onFocus={() => setIsGotoRowActive(false)}\n role=\"group\"\n >\n <div className=\"goto-row-text\">Go to value</div>\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n const columnName = event.target.value;\n onGotoValueSelectedColumnNameChanged(columnName);\n }}\n value={gotoValueSelectedColumnName}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </select>\n </div>\n\n {renderValueInput()}\n\n <div>\n <Button\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(true);\n }}\n >\n <FontAwesomeIcon icon={vsArrowUp} />\n </Button>\n <Button\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(false);\n }}\n >\n <FontAwesomeIcon icon={vsArrowDown} />\n </Button>\n </div>\n {gotoValueError && (\n <div className=\"text-danger\">{gotoValueError}</div>\n )}\n </div>\n </div>\n )}\n </>\n </IrisGridBottomBar>\n );\n}\n\nexport default GotoRow;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GotoRow.js","names":["FontAwesomeIcon","vsClose","vsArrowUp","vsArrowDown","React","useEffect","useRef","useState","Type","FilterType","Button","DateTimeInput","TableUtils","classNames","IrisGridBottomBar","isIrisGridProxyModel","model","undefined","DEFAULT_FORMAT_STRING","GotoRow","_ref","gotoRow","gotoRowError","gotoValueError","onGotoRowSubmit","isShown","onEntering","onEntered","onExiting","onExited","onGotoRowNumberChanged","onClose","gotoValueSelectedColumnName","gotoValue","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","gotoRowInputRef","gotoValueInputRef","isGotoRowActive","setIsGotoRowActive","columns","table","res","rowCount","handleGotoValueNumberKeyDown","e","key","stopPropagation","preventDefault","concat","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","onGotoValueInputChanged","handleGotoValueKeySubmit","shiftKey","index","getColumnIndexByName","selectedColumn","columnType","type","normalizedType","getNormalizedType","value","selectInput","document","activeElement","current","_gotoRowInputRef$curr","select","_gotoValueInputRef$cu","renderValueInput","dataType","DECIMAL","INT","createElement","className","ref","onKeyDown","placeholder","onChange","target","toLowerCase","test","DATETIME","defaultValue","onSubmit","STRING","Fragment","event","eq","contains","eqIgnoreCase","BOOLEAN","onClick","onFocus","role","dh","i18n","NumberFormat","format","kind","icon","style","marginRight","isSeekRowAvailable","columnName","map","column","name","disabled"],"sources":["../src/GotoRow.tsx"],"sourcesContent":["import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';\nimport React, {\n ChangeEvent,\n KeyboardEvent,\n ReactElement,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Column } from '@deephaven/jsapi-shim';\nimport {\n Type as FilterType,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { Button, DateTimeInput } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport classNames from 'classnames';\nimport './GotoRow.scss';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridProxyModel from './IrisGridProxyModel';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport { ColumnName } from './CommonTypes';\n\nfunction isIrisGridProxyModel(\n model: IrisGridModel\n): model is IrisGridProxyModel {\n return (model as IrisGridProxyModel).model !== undefined;\n}\n\nconst DEFAULT_FORMAT_STRING = '###,##0';\n\ninterface GotoRowProps {\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n onGotoRowSubmit: () => void;\n model: IrisGridModel;\n onGotoRowNumberChanged: (event: ChangeEvent<HTMLInputElement>) => void;\n onClose: () => void;\n isShown: boolean;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValue: string;\n gotoValueFilter: FilterTypeValue;\n onGotoValueSelectedColumnNameChanged: (columnName: ColumnName) => void;\n onGotoValueSelectedFilterChanged: (filter: FilterTypeValue) => void;\n onGotoValueChanged: (input: string) => void;\n onGotoValueSubmit: (isBackward?: boolean) => void;\n}\n\nfunction GotoRow({\n gotoRow,\n gotoRowError,\n gotoValueError,\n onGotoRowSubmit,\n isShown,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n model,\n onGotoRowNumberChanged,\n onClose,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueFilter,\n onGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged,\n onGotoValueChanged,\n onGotoValueSubmit,\n}: GotoRowProps): ReactElement {\n const gotoRowInputRef = useRef<HTMLInputElement>(null);\n const gotoValueInputRef = useRef<HTMLInputElement>(null);\n\n const [isGotoRowActive, setIsGotoRowActive] = useState(false);\n let columns: Column[] = [];\n\n if (isIrisGridProxyModel(model) && model.table !== undefined) {\n ({ columns } = model.table);\n }\n\n const res = 'Row number';\n\n const { rowCount } = model;\n\n const handleGotoValueNumberKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n } else if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n (gotoValue === `${Number.POSITIVE_INFINITY}` ||\n gotoValue === `${Number.NEGATIVE_INFINITY}`)\n ) {\n onGotoValueInputChanged('');\n }\n };\n\n const handleGotoValueKeySubmit = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit(e.shiftKey);\n }\n };\n\n const index = model.getColumnIndexByName(gotoValueSelectedColumnName);\n\n const selectedColumn = columns[index ?? 0];\n\n const columnType = selectedColumn?.type;\n\n const normalizedType = TableUtils.getNormalizedType(columnType);\n const onGotoValueInputChanged = (value?: string) => {\n onGotoValueChanged(value ?? '');\n };\n const selectInput = () => {\n // when row changes without focus (i.e. via context menu), re-select input\n if (isGotoRowActive && document.activeElement !== gotoRowInputRef.current) {\n gotoRowInputRef.current?.select();\n } else if (\n !isGotoRowActive &&\n document.activeElement !== gotoValueInputRef.current\n ) {\n gotoValueInputRef.current?.select();\n }\n };\n useEffect(selectInput, [isGotoRowActive, gotoRow, gotoValue]);\n\n const renderValueInput = () => {\n switch (normalizedType) {\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueNumberKeyDown}\n placeholder=\"value\"\n onChange={e => {\n const value = e.target.value.toLowerCase();\n // regex tests for\n if (/^-?[0-9]*\\.?[0-9]*$/.test(e.target.value)) {\n onGotoValueInputChanged(e.target.value);\n } else if (value === '-i' || value === '-infinity') {\n onGotoValueInputChanged(`${Number.NEGATIVE_INFINITY}`);\n } else if (value === 'i' || value === 'infinity') {\n onGotoValueInputChanged(`${Number.POSITIVE_INFINITY}`);\n }\n }}\n value={gotoValue}\n />\n </div>\n );\n case TableUtils.dataType.DATETIME:\n return (\n <div className=\"goto-value-date-time-input\">\n <DateTimeInput\n ref={gotoValueInputRef}\n className={classNames(\n 'form-control',\n 'goto-value-date-time-input',\n {\n 'is-invalid': gotoValueError !== '',\n }\n )}\n defaultValue={gotoValue}\n onChange={onGotoValueInputChanged}\n onSubmit={handleGotoValueKeySubmit}\n />\n </div>\n );\n case TableUtils.dataType.STRING:\n return (\n <>\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n onGotoValueSelectedFilterChanged(\n event.target.value as FilterTypeValue\n );\n }}\n value={gotoValueFilter}\n >\n <option key={FilterType.eq} value={FilterType.eq}>\n Equals\n </option>\n <option key={FilterType.contains} value={FilterType.contains}>\n Contains\n </option>\n <option\n key={FilterType.eqIgnoreCase}\n value={FilterType.eqIgnoreCase}\n >\n EqIgnoreCase\n </option>\n </select>\n </div>\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n />\n </div>\n </>\n );\n case TableUtils.dataType.BOOLEAN:\n return (\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n onGotoValueInputChanged(event.target.value);\n }}\n value={gotoValue}\n >\n <option aria-label=\"null value\" key=\"null\" value=\"\" />\n <option key=\"true\" value=\"true\">\n true\n </option>\n <option key=\"false\" value=\"false\">\n false\n </option>\n </select>\n </div>\n );\n default:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className=\"form-control\"\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n />\n </div>\n );\n }\n };\n return (\n <IrisGridBottomBar\n isShown={isShown}\n className={classNames('goto-row')}\n onEntering={onEntering}\n onEntered={() => {\n onEntered();\n selectInput();\n }}\n onExiting={onExiting}\n onExited={onExited}\n >\n <>\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': !isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(true)}\n onFocus={() => setIsGotoRowActive(true)}\n role=\"group\"\n >\n <div className=\"goto-row-text\">Go to row</div>\n <div className=\"goto-row-input\">\n <input\n ref={gotoRowInputRef}\n type=\"number\"\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoRowSubmit();\n }\n }}\n className={classNames('form-control', {\n 'is-invalid': gotoRowError !== '',\n })}\n placeholder={res}\n onChange={event => {\n onGotoRowNumberChanged(event);\n }}\n value={gotoRow}\n />\n </div>\n <div className=\"goto-row-text\">\n of {dh.i18n.NumberFormat.format(DEFAULT_FORMAT_STRING, rowCount)}\n </div>\n {gotoRowError && <div className=\"text-danger\">{gotoRowError}</div>}\n </div>\n <div className=\"goto-row-close\">\n <Button kind=\"ghost\" onClick={onClose}>\n <FontAwesomeIcon icon={vsClose} style={{ marginRight: '0' }} />\n </Button>\n </div>\n </div>\n {model.isSeekRowAvailable && (\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(false)}\n onFocus={() => setIsGotoRowActive(false)}\n role=\"group\"\n >\n <div className=\"goto-row-text\">Go to value</div>\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n const columnName = event.target.value;\n onGotoValueSelectedColumnNameChanged(columnName);\n }}\n value={gotoValueSelectedColumnName}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </select>\n </div>\n\n {renderValueInput()}\n\n <div>\n <Button\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(true);\n }}\n >\n <FontAwesomeIcon icon={vsArrowUp} />\n </Button>\n <Button\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(false);\n }}\n >\n <FontAwesomeIcon icon={vsArrowDown} />\n </Button>\n </div>\n {gotoValueError && (\n <div className=\"text-danger\">{gotoValueError}</div>\n )}\n </div>\n </div>\n )}\n </>\n </IrisGridBottomBar>\n );\n}\n\nexport default GotoRow;\n"],"mappings":"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"}
|
package/dist/IrisGrid.css
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
/* stylelint-disable scss/at-import-no-partial-leading-underscore */
|
|
2
|
-
/* stylelint-disable */
|
|
3
|
-
/* stylelint-disable scss/at-import-no-partial-leading-underscore */
|
|
1
|
+
/* stylelint-disable scss/at-import-no-partial-leading-underscore */ /* stylelint-disable */ /* stylelint-disable scss/at-import-no-partial-leading-underscore */
|
|
4
2
|
:export {
|
|
5
3
|
grid-bg: #211f22;
|
|
6
4
|
font: 12px Fira Sans, sans-serif;
|