@deephaven/iris-grid 1.22.1 → 1.22.2-alpha-pivot-builder.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/README.md +284 -1
  2. package/dist/AdvancedFilterCreator.js +65 -102
  3. package/dist/AdvancedFilterCreator.js.map +1 -1
  4. package/dist/AdvancedFilterCreatorFilterItem.js +22 -37
  5. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  6. package/dist/AdvancedFilterCreatorSelectValue.js +37 -63
  7. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  8. package/dist/AdvancedFilterCreatorSelectValueList.js +29 -59
  9. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  10. package/dist/ColumnHeaderGroup.js +6 -8
  11. package/dist/ColumnHeaderGroup.js.map +1 -1
  12. package/dist/ColumnStatistics.js +22 -28
  13. package/dist/ColumnStatistics.js.map +1 -1
  14. package/dist/CommonTypes.d.ts +62 -2
  15. package/dist/CommonTypes.d.ts.map +1 -1
  16. package/dist/CommonTypes.js.map +1 -1
  17. package/dist/CrossColumnSearch.js +20 -29
  18. package/dist/CrossColumnSearch.js.map +1 -1
  19. package/dist/FilterInputField.js +19 -46
  20. package/dist/FilterInputField.js.map +1 -1
  21. package/dist/GotoRow.js +32 -29
  22. package/dist/GotoRow.js.map +1 -1
  23. package/dist/IrisGrid.d.ts +85 -2
  24. package/dist/IrisGrid.d.ts.map +1 -1
  25. package/dist/IrisGrid.js +709 -861
  26. package/dist/IrisGrid.js.map +1 -1
  27. package/dist/IrisGridBottomBar.js +10 -11
  28. package/dist/IrisGridBottomBar.js.map +1 -1
  29. package/dist/IrisGridCacheUtils.js +28 -8
  30. package/dist/IrisGridCacheUtils.js.map +1 -1
  31. package/dist/IrisGridCellOverflowModal.js +30 -13
  32. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  33. package/dist/IrisGridCellRendererUtils.js +6 -12
  34. package/dist/IrisGridCellRendererUtils.js.map +1 -1
  35. package/dist/IrisGridCopyHandler.js +28 -47
  36. package/dist/IrisGridCopyHandler.js.map +1 -1
  37. package/dist/IrisGridMetricCalculator.js +28 -51
  38. package/dist/IrisGridMetricCalculator.js.map +1 -1
  39. package/dist/IrisGridModel.d.ts +30 -1
  40. package/dist/IrisGridModel.d.ts.map +1 -1
  41. package/dist/IrisGridModel.js +36 -1
  42. package/dist/IrisGridModel.js.map +1 -1
  43. package/dist/IrisGridModelUpdater.js +32 -30
  44. package/dist/IrisGridModelUpdater.js.map +1 -1
  45. package/dist/IrisGridModelWidgetProps.d.ts +26 -0
  46. package/dist/IrisGridModelWidgetProps.d.ts.map +1 -0
  47. package/dist/IrisGridModelWidgetProps.js +2 -0
  48. package/dist/IrisGridModelWidgetProps.js.map +1 -0
  49. package/dist/IrisGridPartitionSelector.js +28 -62
  50. package/dist/IrisGridPartitionSelector.js.map +1 -1
  51. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  52. package/dist/IrisGridProxyModel.js +41 -14
  53. package/dist/IrisGridProxyModel.js.map +1 -1
  54. package/dist/IrisGridRenderer.js +162 -264
  55. package/dist/IrisGridRenderer.js.map +1 -1
  56. package/dist/IrisGridTableModel.js +23 -16
  57. package/dist/IrisGridTableModel.js.map +1 -1
  58. package/dist/IrisGridTableModelTemplate.js +49 -73
  59. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  60. package/dist/IrisGridTestUtils.js +19 -19
  61. package/dist/IrisGridTestUtils.js.map +1 -1
  62. package/dist/IrisGridTextCellRenderer.d.ts.map +1 -1
  63. package/dist/IrisGridTextCellRenderer.js +36 -53
  64. package/dist/IrisGridTextCellRenderer.js.map +1 -1
  65. package/dist/IrisGridTheme.js +9 -1
  66. package/dist/IrisGridTheme.js.map +1 -1
  67. package/dist/IrisGridThemeProvider.js +5 -7
  68. package/dist/IrisGridThemeProvider.js.map +1 -1
  69. package/dist/IrisGridTreeTableModel.js +5 -9
  70. package/dist/IrisGridTreeTableModel.js.map +1 -1
  71. package/dist/IrisGridUtils.d.ts +25 -2
  72. package/dist/IrisGridUtils.d.ts.map +1 -1
  73. package/dist/IrisGridUtils.js +297 -294
  74. package/dist/IrisGridUtils.js.map +1 -1
  75. package/dist/LazyIrisGrid.d.ts +1 -1
  76. package/dist/NoPastePermissionModal.js +3 -5
  77. package/dist/NoPastePermissionModal.js.map +1 -1
  78. package/dist/PendingDataBottomBar.js +27 -16
  79. package/dist/PendingDataBottomBar.js.map +1 -1
  80. package/dist/ToastBottomBar.js +16 -8
  81. package/dist/ToastBottomBar.js.map +1 -1
  82. package/dist/format-context-menus/CustomFormatAction.js +11 -24
  83. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  84. package/dist/index.d.ts +1 -0
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +1 -0
  87. package/dist/index.js.map +1 -1
  88. package/dist/key-handlers/CopyCellKeyHandler.js +3 -4
  89. package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
  90. package/dist/key-handlers/CopyKeyHandler.js +1 -3
  91. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  92. package/dist/key-handlers/ReverseKeyHandler.js +1 -3
  93. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  94. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +35 -59
  95. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  96. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +13 -29
  97. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  98. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +8 -17
  99. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  100. package/dist/mousehandlers/IrisGridContextMenuHandler.js +96 -199
  101. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  102. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +2 -4
  103. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  104. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +16 -30
  105. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  106. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js +5 -13
  107. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
  108. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +20 -36
  109. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
  110. package/dist/mousehandlers/IrisGridSortMouseHandler.js +3 -5
  111. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  112. package/dist/mousehandlers/IrisGridTokenMouseHandler.js +9 -18
  113. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
  114. package/dist/mousehandlers/PendingMouseHandler.js +10 -18
  115. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  116. package/dist/sidebar/AdvancedSettingsMenu.js +12 -5
  117. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  118. package/dist/sidebar/ChartBuilder.js +45 -102
  119. package/dist/sidebar/ChartBuilder.js.map +1 -1
  120. package/dist/sidebar/CustomColumnBuilder.js +35 -77
  121. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  122. package/dist/sidebar/CustomColumnInput.js +9 -11
  123. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  124. package/dist/sidebar/InputEditor.js +17 -24
  125. package/dist/sidebar/InputEditor.js.map +1 -1
  126. package/dist/sidebar/IrisGridTableOptionsWidgetProps.d.ts +22 -0
  127. package/dist/sidebar/IrisGridTableOptionsWidgetProps.d.ts.map +1 -0
  128. package/dist/sidebar/IrisGridTableOptionsWidgetProps.js +2 -0
  129. package/dist/sidebar/IrisGridTableOptionsWidgetProps.js.map +1 -0
  130. package/dist/sidebar/OptionType.d.ts +8 -0
  131. package/dist/sidebar/OptionType.d.ts.map +1 -1
  132. package/dist/sidebar/OptionType.js +7 -0
  133. package/dist/sidebar/OptionType.js.map +1 -1
  134. package/dist/sidebar/PluginTableOptionsErrorBoundary.d.ts +30 -0
  135. package/dist/sidebar/PluginTableOptionsErrorBoundary.d.ts.map +1 -0
  136. package/dist/sidebar/PluginTableOptionsErrorBoundary.js +55 -0
  137. package/dist/sidebar/PluginTableOptionsErrorBoundary.js.map +1 -0
  138. package/dist/sidebar/RollupRows.js +72 -113
  139. package/dist/sidebar/RollupRows.js.map +1 -1
  140. package/dist/sidebar/SelectDistinctBuilder.js +16 -33
  141. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  142. package/dist/sidebar/TableCsvExporter.js +50 -74
  143. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  144. package/dist/sidebar/TableSaver.js +18 -42
  145. package/dist/sidebar/TableSaver.js.map +1 -1
  146. package/dist/sidebar/aggregations/AggregationEdit.js +25 -18
  147. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  148. package/dist/sidebar/aggregations/AggregationUtils.js +1 -3
  149. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  150. package/dist/sidebar/aggregations/Aggregations.js +45 -34
  151. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  152. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +35 -24
  153. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  154. package/dist/sidebar/conditional-formatting/ConditionEditor.js +38 -21
  155. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  156. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +27 -11
  157. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  158. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +9 -11
  159. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  160. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +48 -57
  161. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  162. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +35 -24
  163. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  164. package/dist/sidebar/conditional-formatting/StyleEditor.js +26 -11
  165. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  166. package/dist/sidebar/index.d.ts +3 -2
  167. package/dist/sidebar/index.d.ts.map +1 -1
  168. package/dist/sidebar/index.js.map +1 -1
  169. package/dist/sidebar/visibility-ordering-builder/SearchItem.js +5 -7
  170. package/dist/sidebar/visibility-ordering-builder/SearchItem.js.map +1 -1
  171. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js +24 -18
  172. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js.map +1 -1
  173. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +166 -256
  174. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  175. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +4 -11
  176. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  177. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +28 -14
  178. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
  179. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +16 -19
  180. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  181. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +1 -3
  182. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
  183. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +19 -29
  184. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  185. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js +39 -52
  186. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js.map +1 -1
  187. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +18 -23
  188. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  189. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +19 -15
  190. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  191. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +16 -30
  192. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
  193. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +30 -39
  194. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  195. package/package.json +16 -16
@@ -3,8 +3,9 @@ import { type GridRangeIndex, type ModelIndex } from '@deephaven/grid';
3
3
  import type { dh } from '@deephaven/jsapi-types';
4
4
  import { type Shortcut } from '@deephaven/components';
5
5
  import { type IconDefinition } from '@deephaven/icons';
6
+ import { type ComponentType } from 'react';
6
7
  import type AggregationOperation from './sidebar/aggregations/AggregationOperation';
7
- import { type UIRollupConfig, type OptionType } from './sidebar';
8
+ import { type UIRollupConfig, type OptionItemKey } from './sidebar';
8
9
  import type IrisGridModel from './IrisGridModel';
9
10
  import { type IrisGridThemeType } from './IrisGridTheme';
10
11
  export type RowIndex = ModelIndex;
@@ -29,13 +30,72 @@ export type Action = {
29
30
  action: () => void;
30
31
  shortcut: Shortcut;
31
32
  };
33
+ /**
34
+ * Options accepted by `IrisGrid.startLoading`. Mirrors the inline options bag
35
+ * on that method so initiators (including plugins) can type their request.
36
+ */
37
+ export type StartLoadingOptions = {
38
+ /** Reset selected ranges and scroll position when loading begins. */
39
+ resetRanges?: boolean;
40
+ /** Whether the loading scrim shows a cancel button. */
41
+ loadingCancelShown?: boolean;
42
+ /** Whether the loading scrim blocks interaction with the grid. */
43
+ loadingBlocksGrid?: boolean;
44
+ };
45
+ /**
46
+ * Detail payload for `IrisGridModel.EVENT.PENDING`. Self-describing so an
47
+ * initiator (e.g. a plugin) can raise the loading scrim for an operation
48
+ * IrisGrid has no built-in knowledge of.
49
+ */
50
+ export type PendingOperationDetail = {
51
+ /**
52
+ * Display text for the scrim. Omitted → IrisGrid uses a generic message.
53
+ */
54
+ text?: string;
55
+ /** Scrim options the initiator wants applied while loading. */
56
+ options?: StartLoadingOptions;
57
+ };
58
+ /**
59
+ * Props passed to a plugin-supplied sidebar page (an item whose
60
+ * `configPage` is set). Pages receive the current model and a
61
+ * back-navigation callback; any additional state access should
62
+ * flow through the model or through props the plugin threads in
63
+ * itself.
64
+ */
65
+ export type IrisGridTableOptionsPageProps = {
66
+ /** Current model the grid is rendering. */
67
+ model: IrisGridModel;
68
+ /** Pop the current page off the sidebar stack. */
69
+ onBack: () => void;
70
+ };
32
71
  export type OptionItem = {
33
- type: OptionType;
72
+ /**
73
+ * Built-in items use the `OptionType` enum; plugin-contributed items
74
+ * use a namespaced string key (convention `plugin:<name>:<id>`).
75
+ */
76
+ type: OptionItemKey;
34
77
  title: string;
35
78
  subtitle?: string;
36
79
  icon?: IconDefinition;
37
80
  isOn?: boolean;
38
81
  onChange?: () => void;
82
+ /**
83
+ * Optional sort weight for positioning the item within the menu. Items
84
+ * are stably sorted by ascending `order`; an omitted `order` sinks the
85
+ * item to the end of the menu. Built-in items are numbered with a stride
86
+ * of 100 (Chart Builder `100` … Go to `1200`), so a plugin can slot an
87
+ * item between two built-ins (e.g. `250`) or before all of them with a
88
+ * smaller/negative value.
89
+ */
90
+ order?: number;
91
+ /**
92
+ * Renderer for plugin-supplied sidebar pages. Built-in items leave
93
+ * this undefined — the `IrisGrid` page switch renders them via
94
+ * its existing `case OptionType.*` arms; the `default` case renders
95
+ * `configPage` when present and falls back to a programmer-error
96
+ * throw otherwise.
97
+ */
98
+ configPage?: ComponentType<IrisGridTableOptionsPageProps>;
39
99
  };
40
100
  export interface UITotalsTableConfig extends dh.TotalsTableConfig {
41
101
  operationOrder: AggregationOperation[];
@@ -1 +1 @@
1
- {"version":3,"file":"CommonTypes.d.ts","sourceRoot":"","sources":["../src/CommonTypes.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CommonTypes.d.ts","sourceRoot":"","sources":["../src/CommonTypes.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CommonTypes.js","names":[],"sources":["../src/CommonTypes.tsx"],"sourcesContent":["import {\n type AdvancedFilterOptions,\n type SortDescriptor,\n} from '@deephaven/jsapi-utils';\nimport { type GridRangeIndex, type ModelIndex } from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type Shortcut } from '@deephaven/components';\nimport { type IconDefinition } from '@deephaven/icons';\nimport type AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { type UIRollupConfig, type OptionType } from './sidebar';\nimport type IrisGridModel from './IrisGridModel';\nimport { type IrisGridThemeType } from './IrisGridTheme';\n\nexport type RowIndex = ModelIndex;\n\nexport type { AdvancedFilterOptions };\nexport type ColumnName = string;\nexport type AdvancedFilterMap = Map<ModelIndex, AdvancedFilter>;\nexport type QuickFilterMap = Map<ModelIndex, QuickFilter>;\nexport type ReadonlyAdvancedFilterMap = ReadonlyMap<ModelIndex, AdvancedFilter>;\nexport type ReadonlyQuickFilterMap = ReadonlyMap<ModelIndex, QuickFilter>;\nexport type ReadonlyAggregationMap = Readonly<\n Record<AggregationOperation, readonly ColumnName[]>\n>;\nexport type OperationMap = Record<ColumnName, readonly AggregationOperation[]>;\nexport type ReadonlyOperationMap = Readonly<\n Record<ColumnName, readonly AggregationOperation[]>\n>;\n\nexport type QuickFilter = {\n text: string;\n filter: dh.FilterCondition | null;\n};\n\nexport type AdvancedFilter = {\n filter: dh.FilterCondition | null;\n options: AdvancedFilterOptions;\n};\n\nexport type Action = {\n action: () => void;\n shortcut: Shortcut;\n};\n\nexport type OptionItem = {\n type: OptionType;\n title: string;\n subtitle?: string;\n icon?: IconDefinition;\n isOn?: boolean;\n onChange?: () => void;\n};\n\nexport interface UITotalsTableConfig extends dh.TotalsTableConfig {\n operationOrder: AggregationOperation[];\n showOnTop: boolean;\n}\n\nexport type InputFilter = {\n name: string;\n type: string;\n value: string;\n excludePanelIds?: (string | string[])[];\n};\n\nexport interface UIRow {\n /**\n * The data in the row indexed by column number.\n * If a column is not part of the columns array (i.e. it's hidden by the model/table),\n * then it will be included by its name instead of index.\n */\n data: Map<ModelIndex | ColumnName, CellData>;\n}\n\nexport type UIViewportData<R extends UIRow = UIRow> = {\n offset: number;\n rows: R[];\n};\nexport type RowData<T = unknown> = Map<number, { value: T }>;\n\nexport type CellData = {\n value: unknown;\n format?: dh.Format;\n};\nexport type PendingDataMap<R extends UIRow = UIRow> = ReadonlyMap<RowIndex, R>;\n\n/** Maps from a row index to the errors for that row */\nexport type PendingDataErrorMap<T extends Error = Error> = ReadonlyMap<\n RowIndex,\n readonly T[]\n>;\n\nexport interface IrisGridStateOverride extends Record<string, unknown> {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n hoverSelectColumn: GridRangeIndex;\n isFilterBarShown: boolean;\n isMenuShown: boolean;\n isSelectingColumn: boolean;\n loadingScrimProgress: number | null;\n advancedFilters: ReadonlyAdvancedFilterMap;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly SortDescriptor[];\n reverse: boolean;\n rollupConfig: UIRollupConfig | undefined;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"CommonTypes.js","names":[],"sources":["../src/CommonTypes.tsx"],"sourcesContent":["import {\n type AdvancedFilterOptions,\n type SortDescriptor,\n} from '@deephaven/jsapi-utils';\nimport { type GridRangeIndex, type ModelIndex } from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type Shortcut } from '@deephaven/components';\nimport { type IconDefinition } from '@deephaven/icons';\nimport { type ComponentType } from 'react';\nimport type AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { type UIRollupConfig, type OptionItemKey } from './sidebar';\nimport type IrisGridModel from './IrisGridModel';\nimport { type IrisGridThemeType } from './IrisGridTheme';\n\nexport type RowIndex = ModelIndex;\n\nexport type { AdvancedFilterOptions };\nexport type ColumnName = string;\nexport type AdvancedFilterMap = Map<ModelIndex, AdvancedFilter>;\nexport type QuickFilterMap = Map<ModelIndex, QuickFilter>;\nexport type ReadonlyAdvancedFilterMap = ReadonlyMap<ModelIndex, AdvancedFilter>;\nexport type ReadonlyQuickFilterMap = ReadonlyMap<ModelIndex, QuickFilter>;\nexport type ReadonlyAggregationMap = Readonly<\n Record<AggregationOperation, readonly ColumnName[]>\n>;\nexport type OperationMap = Record<ColumnName, readonly AggregationOperation[]>;\nexport type ReadonlyOperationMap = Readonly<\n Record<ColumnName, readonly AggregationOperation[]>\n>;\n\nexport type QuickFilter = {\n text: string;\n filter: dh.FilterCondition | null;\n};\n\nexport type AdvancedFilter = {\n filter: dh.FilterCondition | null;\n options: AdvancedFilterOptions;\n};\n\nexport type Action = {\n action: () => void;\n shortcut: Shortcut;\n};\n\n/**\n * Options accepted by `IrisGrid.startLoading`. Mirrors the inline options bag\n * on that method so initiators (including plugins) can type their request.\n */\nexport type StartLoadingOptions = {\n /** Reset selected ranges and scroll position when loading begins. */\n resetRanges?: boolean;\n /** Whether the loading scrim shows a cancel button. */\n loadingCancelShown?: boolean;\n /** Whether the loading scrim blocks interaction with the grid. */\n loadingBlocksGrid?: boolean;\n};\n\n/**\n * Detail payload for `IrisGridModel.EVENT.PENDING`. Self-describing so an\n * initiator (e.g. a plugin) can raise the loading scrim for an operation\n * IrisGrid has no built-in knowledge of.\n */\nexport type PendingOperationDetail = {\n /**\n * Display text for the scrim. Omitted → IrisGrid uses a generic message.\n */\n text?: string;\n /** Scrim options the initiator wants applied while loading. */\n options?: StartLoadingOptions;\n};\n\n/**\n * Props passed to a plugin-supplied sidebar page (an item whose\n * `configPage` is set). Pages receive the current model and a\n * back-navigation callback; any additional state access should\n * flow through the model or through props the plugin threads in\n * itself.\n */\nexport type IrisGridTableOptionsPageProps = {\n /** Current model the grid is rendering. */\n model: IrisGridModel;\n /** Pop the current page off the sidebar stack. */\n onBack: () => void;\n};\n\nexport type OptionItem = {\n /**\n * Built-in items use the `OptionType` enum; plugin-contributed items\n * use a namespaced string key (convention `plugin:<name>:<id>`).\n */\n type: OptionItemKey;\n title: string;\n subtitle?: string;\n icon?: IconDefinition;\n isOn?: boolean;\n onChange?: () => void;\n /**\n * Optional sort weight for positioning the item within the menu. Items\n * are stably sorted by ascending `order`; an omitted `order` sinks the\n * item to the end of the menu. Built-in items are numbered with a stride\n * of 100 (Chart Builder `100` … Go to `1200`), so a plugin can slot an\n * item between two built-ins (e.g. `250`) or before all of them with a\n * smaller/negative value.\n */\n order?: number;\n /**\n * Renderer for plugin-supplied sidebar pages. Built-in items leave\n * this undefined — the `IrisGrid` page switch renders them via\n * its existing `case OptionType.*` arms; the `default` case renders\n * `configPage` when present and falls back to a programmer-error\n * throw otherwise.\n */\n configPage?: ComponentType<IrisGridTableOptionsPageProps>;\n};\n\nexport interface UITotalsTableConfig extends dh.TotalsTableConfig {\n operationOrder: AggregationOperation[];\n showOnTop: boolean;\n}\n\nexport type InputFilter = {\n name: string;\n type: string;\n value: string;\n excludePanelIds?: (string | string[])[];\n};\n\nexport interface UIRow {\n /**\n * The data in the row indexed by column number.\n * If a column is not part of the columns array (i.e. it's hidden by the model/table),\n * then it will be included by its name instead of index.\n */\n data: Map<ModelIndex | ColumnName, CellData>;\n}\n\nexport type UIViewportData<R extends UIRow = UIRow> = {\n offset: number;\n rows: R[];\n};\nexport type RowData<T = unknown> = Map<number, { value: T }>;\n\nexport type CellData = {\n value: unknown;\n format?: dh.Format;\n};\nexport type PendingDataMap<R extends UIRow = UIRow> = ReadonlyMap<RowIndex, R>;\n\n/** Maps from a row index to the errors for that row */\nexport type PendingDataErrorMap<T extends Error = Error> = ReadonlyMap<\n RowIndex,\n readonly T[]\n>;\n\nexport interface IrisGridStateOverride extends Record<string, unknown> {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n hoverSelectColumn: GridRangeIndex;\n isFilterBarShown: boolean;\n isMenuShown: boolean;\n isSelectingColumn: boolean;\n loadingScrimProgress: number | null;\n advancedFilters: ReadonlyAdvancedFilterMap;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly SortDescriptor[];\n reverse: boolean;\n rollupConfig: UIRollupConfig | undefined;\n}\n"],"mappings":"","ignoreList":[]}
@@ -36,32 +36,28 @@ class CrossColumnSearch extends PureComponent {
36
36
  (_this$searchField$cur = this.searchField.current) === null || _this$searchField$cur === void 0 || _this$searchField$cur.focus();
37
37
  }
38
38
  handleSearchValueChange(event) {
39
- var {
40
- onChange,
41
- selectedColumns,
42
- invertSelection
43
- } = this.props;
39
+ var _this$props = this.props,
40
+ onChange = _this$props.onChange,
41
+ selectedColumns = _this$props.selectedColumns,
42
+ invertSelection = _this$props.invertSelection;
44
43
  onChange(event.target.value, selectedColumns, invertSelection);
45
44
  }
46
45
  sendColumnChange(selectedColumns, invertSelection) {
47
- var {
48
- onChange,
49
- value
50
- } = this.props;
46
+ var _this$props2 = this.props,
47
+ onChange = _this$props2.onChange,
48
+ value = _this$props2.value;
51
49
  onChange(value, selectedColumns, invertSelection);
52
50
  }
53
51
  setInvertSelection(invertSelection) {
54
- var {
55
- onChange,
56
- value
57
- } = this.props;
52
+ var _this$props3 = this.props,
53
+ onChange = _this$props3.onChange,
54
+ value = _this$props3.value;
58
55
  onChange(value, [], invertSelection);
59
56
  }
60
57
  toggleColumn(name) {
61
- var {
62
- selectedColumns,
63
- invertSelection
64
- } = this.props;
58
+ var _this$props4 = this.props,
59
+ selectedColumns = _this$props4.selectedColumns,
60
+ invertSelection = _this$props4.invertSelection;
65
61
  if (selectedColumns.includes(name)) {
66
62
  this.sendColumnChange(selectedColumns.filter(c => c !== name), invertSelection);
67
63
  } else {
@@ -77,21 +73,16 @@ class CrossColumnSearch extends PureComponent {
77
73
  this.setInvertSelection(false);
78
74
  }
79
75
  selectNumbers() {
80
- var {
81
- columns
82
- } = this.props;
76
+ var columns = this.props.columns;
83
77
  this.sendColumnChange(columns.filter(c => TableUtils.isNumberType(c.type)).map(column => column.name), false);
84
78
  }
85
79
  render() {
86
- var {
87
- value,
88
- selectedColumns,
89
- invertSelection,
90
- columns
91
- } = this.props;
92
- var {
93
- isConfigureColumnsShown
94
- } = this.state;
80
+ var _this$props5 = this.props,
81
+ value = _this$props5.value,
82
+ selectedColumns = _this$props5.selectedColumns,
83
+ invertSelection = _this$props5.invertSelection,
84
+ columns = _this$props5.columns;
85
+ var isConfigureColumnsShown = this.state.isConfigureColumnsShown;
95
86
  var hasAllColumnsSelected = selectedColumns.length === 0 && invertSelection === true || selectedColumns.length === columns.length && invertSelection === false;
96
87
  var hasNoColumnsSelected = selectedColumns.length === 0 && invertSelection === false || selectedColumns.length === columns.length && invertSelection === true;
97
88
 
@@ -1 +1 @@
1
- {"version":3,"file":"CrossColumnSearch.js","names":["React","PureComponent","FontAwesomeIcon","Checkbox","Popper","SearchInput","Tooltip","dhGearFilled","dhCheckSquare","dhSquareFilled","dhRemoveSquareFilled","dhWarningCircleFilled","vsCircleLargeFilled","TableUtils","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","CrossColumnSearch","createSearchFilter","dh","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","children","mask","transform","className","placeholder","ref","onClick","setState","isShown","onExited","closeOnBlur","interactive","isProxy","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 type { dh as DhType } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport './CrossColumnSearch.scss';\nimport { type ColumnName } from './CommonTypes';\nimport { type DisplayColumn } from './IrisGridModel';\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 DisplayColumn[];\n}\n\ninterface CrossColumnSearchState {\n isConfigureColumnsShown: boolean;\n}\nclass CrossColumnSearch extends PureComponent<\n CrossColumnSearchProps,\n CrossColumnSearchState\n> {\n static createSearchFilter(\n dh: typeof DhType,\n searchValue: string,\n selectedColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n invertSelection: boolean\n ): DhType.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 data-testid=\"cross-column-search\"\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 if (column.isProxy === true) return null;\n\n return (\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 })}\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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","ignoreList":[]}
1
+ {"version":3,"file":"CrossColumnSearch.js","names":["React","PureComponent","FontAwesomeIcon","Checkbox","Popper","SearchInput","Tooltip","dhGearFilled","dhCheckSquare","dhSquareFilled","dhRemoveSquareFilled","dhWarningCircleFilled","vsCircleLargeFilled","TableUtils","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","CrossColumnSearch","createSearchFilter","dh","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","_this$props","onChange","target","value","sendColumnChange","_this$props2","setInvertSelection","_this$props3","_this$props4","c","update","slice","push","isNumberType","type","render","_this$props5","hasAllColumnsSelected","hasNoColumnsSelected","icon","children","mask","transform","className","placeholder","ref","onClick","setState","isShown","onExited","closeOnBlur","interactive","isProxy","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 type { dh as DhType } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport './CrossColumnSearch.scss';\nimport { type ColumnName } from './CommonTypes';\nimport { type DisplayColumn } from './IrisGridModel';\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 DisplayColumn[];\n}\n\ninterface CrossColumnSearchState {\n isConfigureColumnsShown: boolean;\n}\nclass CrossColumnSearch extends PureComponent<\n CrossColumnSearchProps,\n CrossColumnSearchState\n> {\n static createSearchFilter(\n dh: typeof DhType,\n searchValue: string,\n selectedColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n invertSelection: boolean\n ): DhType.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 data-testid=\"cross-column-search\"\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 if (column.isProxy === true) return null;\n\n return (\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 })}\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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","ignoreList":[]}
@@ -19,9 +19,7 @@ class FilterInputField extends PureComponent {
19
19
  _defineProperty(this, "inputField", void 0);
20
20
  _defineProperty(this, "initialValue", void 0);
21
21
  _defineProperty(this, "debouncedSendUpdate", void 0);
22
- var {
23
- debounceMs
24
- } = props;
22
+ var debounceMs = props.debounceMs;
25
23
  this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);
26
24
  this.handleCancel = this.handleCancel.bind(this);
27
25
  this.handleChange = this.handleChange.bind(this);
@@ -31,9 +29,7 @@ class FilterInputField extends PureComponent {
31
29
  this.handleKeyDown = this.handleKeyDown.bind(this);
32
30
  this.handleContextMenu = this.handleContextMenu.bind(this);
33
31
  this.inputField = null;
34
- var {
35
- value
36
- } = props;
32
+ var value = props.value;
37
33
  this.initialValue = value;
38
34
  this.state = {
39
35
  isChanged: false,
@@ -45,9 +41,7 @@ class FilterInputField extends PureComponent {
45
41
  (_this$inputField = this.inputField) === null || _this$inputField === void 0 || _this$inputField.focus();
46
42
  }
47
43
  componentDidUpdate(prevProps) {
48
- var {
49
- debounceMs
50
- } = this.props;
44
+ var debounceMs = this.props.debounceMs;
51
45
  if (prevProps.debounceMs !== debounceMs) {
52
46
  this.debouncedSendUpdate.flush();
53
47
  this.debouncedSendUpdate = debounce(this.sendUpdate.bind(this), debounceMs);
@@ -70,9 +64,7 @@ class FilterInputField extends PureComponent {
70
64
  (_this$inputField2 = this.inputField) === null || _this$inputField2 === void 0 || _this$inputField2.focus();
71
65
  }
72
66
  handleChange(event) {
73
- var {
74
- value
75
- } = event.target;
67
+ var value = event.target.value;
76
68
  this.setState({
77
69
  value,
78
70
  isChanged: true
@@ -81,27 +73,19 @@ class FilterInputField extends PureComponent {
81
73
  }
82
74
  handleCancel() {
83
75
  this.debouncedSendUpdate.cancel();
84
- var {
85
- initialValue
86
- } = this;
87
- var {
88
- isChanged
89
- } = this.state;
76
+ var initialValue = this.initialValue;
77
+ var isChanged = this.state.isChanged;
90
78
  if (isChanged) {
91
79
  this.sendUpdate(initialValue);
92
80
  }
93
- var {
94
- onDone
95
- } = this.props;
81
+ var onDone = this.props.onDone;
96
82
  onDone();
97
83
  }
98
84
  handleCommit() {
99
85
  var setGridFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
100
86
  var defocusInput = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
101
87
  this.debouncedSendUpdate.flush();
102
- var {
103
- onDone
104
- } = this.props;
88
+ var onDone = this.props.onDone;
105
89
  onDone(setGridFocus, defocusInput);
106
90
  }
107
91
  handleFocus() {
@@ -109,9 +93,7 @@ class FilterInputField extends PureComponent {
109
93
  (_this$inputField3 = this.inputField) === null || _this$inputField3 === void 0 || _this$inputField3.select();
110
94
  }
111
95
  handleBlur(event) {
112
- var {
113
- relatedTarget
114
- } = event;
96
+ var relatedTarget = event.relatedTarget;
115
97
  // handleCommit results in a call that steals focus
116
98
  if (relatedTarget != null && relatedTarget.classList.contains('context-menu-container')) {
117
99
  // input blurred by calling context-menu
@@ -129,9 +111,7 @@ class FilterInputField extends PureComponent {
129
111
  handleTab() {
130
112
  var backward = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
131
113
  this.debouncedSendUpdate.flush();
132
- var {
133
- onTab
134
- } = this.props;
114
+ var onTab = this.props.onTab;
135
115
  onTab(backward);
136
116
  }
137
117
  handleKeyDown(event) {
@@ -156,28 +136,21 @@ class FilterInputField extends PureComponent {
156
136
  }
157
137
  }
158
138
  handleContextMenu(event) {
159
- var {
160
- onContextMenu
161
- } = this.props;
139
+ var onContextMenu = this.props.onContextMenu;
162
140
  onContextMenu(event);
163
141
  }
164
142
  sendUpdate(value) {
165
- var {
166
- onChange
167
- } = this.props;
143
+ var onChange = this.props.onChange;
168
144
  onChange(value);
169
145
  }
170
146
  render() {
171
- var {
172
- className,
173
- style,
174
- showAdvancedFilterButton,
175
- isAdvancedFilterSet,
176
- onAdvancedFiltersTriggered
177
- } = this.props;
178
- var {
179
- value
180
- } = this.state;
147
+ var _this$props = this.props,
148
+ className = _this$props.className,
149
+ style = _this$props.style,
150
+ showAdvancedFilterButton = _this$props.showAdvancedFilterButton,
151
+ isAdvancedFilterSet = _this$props.isAdvancedFilterSet,
152
+ onAdvancedFiltersTriggered = _this$props.onAdvancedFiltersTriggered;
153
+ var value = this.state.value;
181
154
  return /*#__PURE__*/_jsxs("div", {
182
155
  style: style,
183
156
  className: "iris-grid-input-autosized-wrapper",
@@ -1 +1 @@
1
- {"version":3,"file":"FilterInputField.js","names":["React","PureComponent","classNames","debounce","vsFilter","dhFilterFilled","FontAwesomeIcon","Button","jsx","_jsx","jsxs","_jsxs","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","showAdvancedFilterButton","isAdvancedFilterSet","onAdvancedFiltersTriggered","children","ref","type","onBlur","onFocus","onKeyDown","autoComplete","autoCorrect","autoCapitalize","spellCheck","kind","onClick","icon"],"sources":["../src/FilterInputField.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n PureComponent,\n type ReactElement,\n} 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 showAdvancedFilterButton: boolean;\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 showAdvancedFilterButton: false,\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 showAdvancedFilterButton,\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 {showAdvancedFilterButton && (\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\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon icon={vsFilter} className=\"filter-light\" />\n </div>\n </Button>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default FilterInputField;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FilterInputField.js","names":["React","PureComponent","classNames","debounce","vsFilter","dhFilterFilled","FontAwesomeIcon","Button","jsx","_jsx","jsxs","_jsxs","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","_this$props","className","style","showAdvancedFilterButton","isAdvancedFilterSet","onAdvancedFiltersTriggered","children","ref","type","onBlur","onFocus","onKeyDown","autoComplete","autoCorrect","autoCapitalize","spellCheck","kind","onClick","icon"],"sources":["../src/FilterInputField.tsx"],"sourcesContent":["import React, {\n type ChangeEvent,\n PureComponent,\n type ReactElement,\n} 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 showAdvancedFilterButton: boolean;\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 showAdvancedFilterButton: false,\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 showAdvancedFilterButton,\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 {showAdvancedFilterButton && (\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\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon icon={vsFilter} className=\"filter-light\" />\n </div>\n </Button>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default FilterInputField;\n"],"mappings":"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","ignoreList":[]}
package/dist/GotoRow.js CHANGED
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
2
8
  import { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';
3
9
  import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
@@ -12,40 +18,37 @@ import { isIrisGridTableModelTemplate } from "./IrisGridTableModelTemplate.js";
12
18
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
13
19
  var DEFAULT_FORMAT_STRING = '###,##0';
14
20
  var GotoRow = /*#__PURE__*/forwardRef((_ref, ref) => {
15
- var {
16
- gotoRow,
17
- gotoRowError,
18
- gotoValueError,
19
- onGotoRowSubmit,
20
- isShown,
21
- onEntering,
22
- onEntered: _onEntered,
23
- onExiting,
24
- onExited,
25
- model,
26
- onGotoRowNumberChanged,
27
- onClose,
28
- gotoValueSelectedColumnName,
29
- gotoValue,
30
- gotoValueFilter,
31
- onGotoValueSelectedColumnNameChanged,
32
- onGotoValueSelectedFilterChanged,
33
- onGotoValueChanged,
34
- onGotoValueSubmit
35
- } = _ref;
21
+ var gotoRow = _ref.gotoRow,
22
+ gotoRowError = _ref.gotoRowError,
23
+ gotoValueError = _ref.gotoValueError,
24
+ onGotoRowSubmit = _ref.onGotoRowSubmit,
25
+ isShown = _ref.isShown,
26
+ onEntering = _ref.onEntering,
27
+ _onEntered = _ref.onEntered,
28
+ onExiting = _ref.onExiting,
29
+ onExited = _ref.onExited,
30
+ model = _ref.model,
31
+ onGotoRowNumberChanged = _ref.onGotoRowNumberChanged,
32
+ onClose = _ref.onClose,
33
+ gotoValueSelectedColumnName = _ref.gotoValueSelectedColumnName,
34
+ gotoValue = _ref.gotoValue,
35
+ gotoValueFilter = _ref.gotoValueFilter,
36
+ onGotoValueSelectedColumnNameChanged = _ref.onGotoValueSelectedColumnNameChanged,
37
+ onGotoValueSelectedFilterChanged = _ref.onGotoValueSelectedFilterChanged,
38
+ onGotoValueChanged = _ref.onGotoValueChanged,
39
+ onGotoValueSubmit = _ref.onGotoValueSubmit;
36
40
  var gotoRowInputRef = useRef(null);
37
41
  var gotoValueInputRef = useRef(null);
38
- var [isGotoRowActive, setIsGotoRowActive] = useState(false);
42
+ var _useState = useState(false),
43
+ _useState2 = _slicedToArray(_useState, 2),
44
+ isGotoRowActive = _useState2[0],
45
+ setIsGotoRowActive = _useState2[1];
39
46
  var columns = [];
40
47
  if (isIrisGridTableModelTemplate(model)) {
41
- ({
42
- columns
43
- } = model.table);
48
+ columns = model.table.columns;
44
49
  }
45
- var {
46
- dh,
47
- rowCount
48
- } = model;
50
+ var dh = model.dh,
51
+ rowCount = model.rowCount;
49
52
  var gotoRowInputId = useMemo(() => "goto-row-input-".concat(nanoid()), []);
50
53
  var handleGotoValueNumberKeyDown = e => {
51
54
  if (e.key === 'Enter') {