@deephaven/iris-grid 1.22.1 → 1.22.2-alpha-pivot-builder.0730ba6.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.
- package/README.md +296 -1
- package/dist/AdvancedFilterCreator.js +65 -102
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +22 -37
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +37 -63
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +29 -59
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js +6 -8
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.js +22 -28
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.d.ts +84 -2
- package/dist/CommonTypes.d.ts.map +1 -1
- package/dist/CommonTypes.js.map +1 -1
- package/dist/CrossColumnSearch.js +20 -29
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.css +3 -0
- package/dist/FilterInputField.css.map +1 -1
- package/dist/FilterInputField.js +19 -46
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.js +32 -29
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.css +3 -0
- package/dist/IrisGrid.css.map +1 -1
- package/dist/IrisGrid.d.ts +99 -4
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +732 -860
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.js +10 -11
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCacheUtils.js +28 -8
- package/dist/IrisGridCacheUtils.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +30 -13
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCellRendererUtils.js +6 -12
- package/dist/IrisGridCellRendererUtils.js.map +1 -1
- package/dist/IrisGridCopyHandler.js +28 -47
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +28 -51
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +36 -1
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +42 -1
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelUpdater.js +32 -30
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridModelWidgetProps.d.ts +26 -0
- package/dist/IrisGridModelWidgetProps.d.ts.map +1 -0
- package/dist/IrisGridModelWidgetProps.js +2 -0
- package/dist/IrisGridModelWidgetProps.js.map +1 -0
- package/dist/IrisGridPartitionSelector.js +28 -62
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +41 -14
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.js +162 -264
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.js +23 -16
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +49 -73
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js +19 -19
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTextCellRenderer.d.ts.map +1 -1
- package/dist/IrisGridTextCellRenderer.js +36 -53
- package/dist/IrisGridTextCellRenderer.js.map +1 -1
- package/dist/IrisGridTheme.js +9 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridThemeProvider.js +5 -7
- package/dist/IrisGridThemeProvider.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +5 -9
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +25 -2
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +297 -294
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/LazyIrisGrid.d.ts +1 -1
- package/dist/NoPastePermissionModal.js +3 -5
- package/dist/NoPastePermissionModal.js.map +1 -1
- package/dist/PendingDataBottomBar.js +27 -16
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/ToastBottomBar.js +16 -8
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +11 -24
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/CopyCellKeyHandler.js +3 -4
- package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js +1 -3
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +1 -3
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +35 -59
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +13 -29
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +8 -17
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +96 -199
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +2 -4
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +16 -30
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js +5 -13
- package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +20 -36
- package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +3 -5
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js +9 -18
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +10 -18
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +12 -5
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/ChartBuilder.js +45 -102
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +35 -77
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +9 -11
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js +17 -24
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/IrisGridTableOptionsWidgetProps.d.ts +22 -0
- package/dist/sidebar/IrisGridTableOptionsWidgetProps.d.ts.map +1 -0
- package/dist/sidebar/IrisGridTableOptionsWidgetProps.js +2 -0
- package/dist/sidebar/IrisGridTableOptionsWidgetProps.js.map +1 -0
- package/dist/sidebar/OptionType.d.ts +8 -0
- package/dist/sidebar/OptionType.d.ts.map +1 -1
- package/dist/sidebar/OptionType.js +7 -0
- package/dist/sidebar/OptionType.js.map +1 -1
- package/dist/sidebar/PluginTableOptionsErrorBoundary.d.ts +25 -0
- package/dist/sidebar/PluginTableOptionsErrorBoundary.d.ts.map +1 -0
- package/dist/sidebar/PluginTableOptionsErrorBoundary.js +49 -0
- package/dist/sidebar/PluginTableOptionsErrorBoundary.js.map +1 -0
- package/dist/sidebar/RollupRows.js +72 -113
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +16 -33
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +50 -74
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.js +18 -42
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +25 -18
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +1 -3
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +45 -34
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +35 -24
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +38 -21
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +27 -11
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +9 -11
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +48 -57
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +35 -24
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +26 -11
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/index.d.ts +3 -2
- package/dist/sidebar/index.d.ts.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchItem.js +5 -7
- package/dist/sidebar/visibility-ordering-builder/SearchItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.css +3 -0
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.css.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js +24 -18
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +166 -256
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +4 -11
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +28 -14
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +16 -19
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +1 -3
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +19 -29
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js +39 -52
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +18 -23
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +19 -15
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +16 -30
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +30 -39
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +16 -16
package/dist/CommonTypes.d.ts
CHANGED
|
@@ -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
|
|
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,94 @@ 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
|
+
* A curated, read-only snapshot of the grid's current view configuration,
|
|
60
|
+
* exposed to plugin-supplied sidebar pages. This is intentionally a small,
|
|
61
|
+
* stable subset of the grid's internal state (not `IrisGridState` itself):
|
|
62
|
+
* fields are added here additively as plugins need them, so the plugin API
|
|
63
|
+
* stays decoupled from `IrisGrid`'s internal/serialization concerns.
|
|
64
|
+
*/
|
|
65
|
+
export interface IrisGridViewState {
|
|
66
|
+
/**
|
|
67
|
+
* Names of columns currently hidden by the user (via the Visibility &
|
|
68
|
+
* Ordering builder) or by `model.layoutHints.hiddenColumns`. Order is
|
|
69
|
+
* not significant. Pages that surface column choosers should use this
|
|
70
|
+
* to filter their selection lists; column-name comparisons are
|
|
71
|
+
* case-sensitive and must match `IrisGridModel#columns[i].name`.
|
|
72
|
+
*
|
|
73
|
+
* Optional so plugins keep handling fields defensively as this type grows,
|
|
74
|
+
* staying resilient when the host's iris-grid version differs from theirs.
|
|
75
|
+
*/
|
|
76
|
+
readonly hiddenColumns?: readonly ColumnName[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Props passed to a plugin-supplied sidebar page (an item whose
|
|
80
|
+
* `configPage` is set). Pages receive the current model, a read-only
|
|
81
|
+
* snapshot of the grid's view state, and a back-navigation callback; any
|
|
82
|
+
* additional state access should flow through the model or through props
|
|
83
|
+
* the plugin threads in itself.
|
|
84
|
+
*/
|
|
85
|
+
export type IrisGridTableOptionsPageProps = {
|
|
86
|
+
/** Current model the grid is rendering. */
|
|
87
|
+
model: IrisGridModel;
|
|
88
|
+
/** Read-only snapshot of the grid's current view configuration. */
|
|
89
|
+
viewState: IrisGridViewState;
|
|
90
|
+
/** Pop the current page off the sidebar stack. */
|
|
91
|
+
onBack: () => void;
|
|
92
|
+
};
|
|
32
93
|
export type OptionItem = {
|
|
33
|
-
|
|
94
|
+
/**
|
|
95
|
+
* Built-in items use the `OptionType` enum; plugin-contributed items
|
|
96
|
+
* use a namespaced string key (convention `plugin:<name>:<id>`).
|
|
97
|
+
*/
|
|
98
|
+
type: OptionItemKey;
|
|
34
99
|
title: string;
|
|
35
100
|
subtitle?: string;
|
|
36
101
|
icon?: IconDefinition;
|
|
37
102
|
isOn?: boolean;
|
|
38
103
|
onChange?: () => void;
|
|
104
|
+
/**
|
|
105
|
+
* Optional sort weight for positioning the item within the menu. Items
|
|
106
|
+
* are stably sorted by ascending `order`; an omitted `order` sinks the
|
|
107
|
+
* item to the end of the menu. Built-in items are numbered with a stride
|
|
108
|
+
* of 100 (Chart Builder `100` … Go to `1200`), so a plugin can slot an
|
|
109
|
+
* item between two built-ins (e.g. `250`) or before all of them with a
|
|
110
|
+
* smaller/negative value.
|
|
111
|
+
*/
|
|
112
|
+
order?: number;
|
|
113
|
+
/**
|
|
114
|
+
* Renderer for plugin-supplied sidebar pages. Built-in items leave
|
|
115
|
+
* this undefined — the `IrisGrid` page switch renders them via
|
|
116
|
+
* its existing `case OptionType.*` arms; the `default` case renders
|
|
117
|
+
* `configPage` when present and falls back to a programmer-error
|
|
118
|
+
* throw otherwise.
|
|
119
|
+
*/
|
|
120
|
+
configPage?: ComponentType<IrisGridTableOptionsPageProps>;
|
|
39
121
|
};
|
|
40
122
|
export interface UITotalsTableConfig extends dh.TotalsTableConfig {
|
|
41
123
|
operationOrder: AggregationOperation[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommonTypes.d.ts","sourceRoot":"","sources":["../src/CommonTypes.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,oBAAoB,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"CommonTypes.d.ts","sourceRoot":"","sources":["../src/CommonTypes.tsx"],"names":[],"mappings":"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"}
|
package/dist/CommonTypes.js.map
CHANGED
|
@@ -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
|
|
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 * A curated, read-only snapshot of the grid's current view configuration,\n * exposed to plugin-supplied sidebar pages. This is intentionally a small,\n * stable subset of the grid's internal state (not `IrisGridState` itself):\n * fields are added here additively as plugins need them, so the plugin API\n * stays decoupled from `IrisGrid`'s internal/serialization concerns.\n */\nexport interface IrisGridViewState {\n /**\n * Names of columns currently hidden by the user (via the Visibility &\n * Ordering builder) or by `model.layoutHints.hiddenColumns`. Order is\n * not significant. Pages that surface column choosers should use this\n * to filter their selection lists; column-name comparisons are\n * case-sensitive and must match `IrisGridModel#columns[i].name`.\n *\n * Optional so plugins keep handling fields defensively as this type grows,\n * staying resilient when the host's iris-grid version differs from theirs.\n */\n readonly hiddenColumns?: readonly ColumnName[];\n}\n\n/**\n * Props passed to a plugin-supplied sidebar page (an item whose\n * `configPage` is set). Pages receive the current model, a read-only\n * snapshot of the grid's view state, and a back-navigation callback; any\n * additional state access should flow through the model or through props\n * the plugin threads in itself.\n */\nexport type IrisGridTableOptionsPageProps = {\n /** Current model the grid is rendering. */\n model: IrisGridModel;\n /** Read-only snapshot of the grid's current view configuration. */\n viewState: IrisGridViewState;\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
|
-
|
|
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":[]}
|