@deephaven/iris-grid 0.43.0 → 0.44.1-beta.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/dist/AdvancedFilterCreator.css +106 -0
- package/dist/AdvancedFilterCreator.css.map +1 -0
- package/dist/AdvancedFilterCreator.js +541 -0
- package/dist/AdvancedFilterCreator.js.map +1 -0
- package/dist/AdvancedFilterCreatorFilterItem.css +9 -0
- package/dist/AdvancedFilterCreatorFilterItem.css.map +1 -0
- package/dist/AdvancedFilterCreatorFilterItem.js +184 -0
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -0
- package/dist/AdvancedFilterCreatorSelectValue.css +50 -0
- package/dist/AdvancedFilterCreatorSelectValue.css.map +1 -0
- package/dist/AdvancedFilterCreatorSelectValue.js +301 -0
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -0
- package/dist/AdvancedFilterCreatorSelectValueList.js +272 -0
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -0
- package/dist/ColumnHeaderGroup.js +61 -0
- package/dist/ColumnHeaderGroup.js.map +1 -0
- package/dist/ColumnStatistics.css +76 -0
- package/dist/ColumnStatistics.css.map +1 -0
- package/dist/ColumnStatistics.js +202 -0
- package/dist/ColumnStatistics.js.map +1 -0
- package/dist/CommonTypes.js +2 -0
- package/dist/CommonTypes.js.map +1 -0
- package/dist/CrossColumnSearch.css +35 -0
- package/dist/CrossColumnSearch.css.map +1 -0
- package/dist/CrossColumnSearch.js +199 -0
- package/dist/CrossColumnSearch.js.map +1 -0
- package/dist/FilterInputField.css +56 -0
- package/dist/FilterInputField.css.map +1 -0
- package/dist/FilterInputField.js +232 -0
- package/dist/FilterInputField.js.map +1 -0
- package/dist/GotoRow.css +45 -0
- package/dist/GotoRow.css.map +1 -0
- package/dist/GotoRow.js +298 -0
- package/dist/GotoRow.js.map +1 -0
- package/dist/IrisGrid.css +359 -0
- package/dist/IrisGrid.css.map +1 -0
- package/dist/IrisGrid.js +3651 -0
- package/dist/IrisGrid.js.map +1 -0
- package/dist/IrisGridBottomBar.css +85 -0
- package/dist/IrisGridBottomBar.css.map +1 -0
- package/dist/IrisGridBottomBar.js +36 -0
- package/dist/IrisGridBottomBar.js.map +1 -0
- package/dist/IrisGridCellOverflowModal.css +17 -0
- package/dist/IrisGridCellOverflowModal.css.map +1 -0
- package/dist/IrisGridCellOverflowModal.js +157 -0
- package/dist/IrisGridCellOverflowModal.js.map +1 -0
- package/dist/IrisGridCellRendererUtils.js +20 -0
- package/dist/IrisGridCellRendererUtils.js.map +1 -0
- package/dist/IrisGridCopyHandler.css +64 -0
- package/dist/IrisGridCopyHandler.css.map +1 -0
- package/dist/IrisGridCopyHandler.js +331 -0
- package/dist/IrisGridCopyHandler.js.map +1 -0
- package/dist/IrisGridDataBarCellRenderer.js +10 -0
- package/dist/IrisGridDataBarCellRenderer.js.map +1 -0
- package/dist/IrisGridIcons.js +25 -0
- package/dist/IrisGridIcons.js.map +1 -0
- package/dist/IrisGridMetricCalculator.js +33 -0
- package/dist/IrisGridMetricCalculator.js.map +1 -0
- package/dist/IrisGridModel.js +263 -0
- package/dist/IrisGridModel.js.map +1 -0
- package/dist/IrisGridModelFactory.js +27 -0
- package/dist/IrisGridModelFactory.js.map +1 -0
- package/dist/IrisGridModelUpdater.js +96 -0
- package/dist/IrisGridModelUpdater.js.map +1 -0
- package/dist/IrisGridPartitionSelector.css +48 -0
- package/dist/IrisGridPartitionSelector.css.map +1 -0
- package/dist/IrisGridPartitionSelector.js +198 -0
- package/dist/IrisGridPartitionSelector.js.map +1 -0
- package/dist/IrisGridProxyModel.js +530 -0
- package/dist/IrisGridProxyModel.js.map +1 -0
- package/dist/IrisGridRenderer.js +779 -0
- package/dist/IrisGridRenderer.js.map +1 -0
- package/dist/IrisGridShortcuts.js +59 -0
- package/dist/IrisGridShortcuts.js.map +1 -0
- package/dist/IrisGridTableModel.js +273 -0
- package/dist/IrisGridTableModel.js.map +1 -0
- package/dist/IrisGridTableModelTemplate.js +1589 -0
- package/dist/IrisGridTableModelTemplate.js.map +1 -0
- package/dist/IrisGridTestUtils.js +121 -0
- package/dist/IrisGridTestUtils.js.map +1 -0
- package/dist/IrisGridTextCellRenderer.js +139 -0
- package/dist/IrisGridTextCellRenderer.js.map +1 -0
- package/dist/IrisGridTheme.js +96 -0
- package/dist/IrisGridTheme.js.map +1 -0
- package/dist/IrisGridTheme.module.css +69 -0
- package/dist/IrisGridTheme.module.css.map +1 -0
- package/dist/IrisGridTreeTableModel.js +145 -0
- package/dist/IrisGridTreeTableModel.js.map +1 -0
- package/dist/IrisGridUtils.js +1279 -0
- package/dist/IrisGridUtils.js.map +1 -0
- package/dist/MissingKeyError.js +15 -0
- package/dist/MissingKeyError.js.map +1 -0
- package/dist/PartitionSelectorSearch.css +22 -0
- package/dist/PartitionSelectorSearch.css.map +1 -0
- package/dist/PartitionSelectorSearch.js +317 -0
- package/dist/PartitionSelectorSearch.js.map +1 -0
- package/dist/PendingDataBottomBar.css +13 -0
- package/dist/PendingDataBottomBar.css.map +1 -0
- package/dist/PendingDataBottomBar.js +98 -0
- package/dist/PendingDataBottomBar.js.map +1 -0
- package/dist/TableViewportUpdater.js +156 -0
- package/dist/TableViewportUpdater.js.map +1 -0
- package/dist/ToastBottomBar.js +42 -0
- package/dist/ToastBottomBar.js.map +1 -0
- package/dist/TreeTableViewportUpdater.js +96 -0
- package/dist/TreeTableViewportUpdater.js.map +1 -0
- package/dist/declaration.d.js +2 -0
- package/dist/declaration.d.js.map +1 -0
- package/dist/format-context-menus/CustomFormatAction.css +25 -0
- package/dist/format-context-menus/CustomFormatAction.css.map +1 -0
- package/dist/format-context-menus/CustomFormatAction.js +132 -0
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -0
- package/dist/format-context-menus/DateTimeFormatContextMenu.js +53 -0
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -0
- package/dist/format-context-menus/DecimalFormatContextMenu.js +59 -0
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -0
- package/dist/format-context-menus/FormatContextMenuUtils.js +63 -0
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -0
- package/dist/format-context-menus/IntegerFormatContextMenu.js +43 -0
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -0
- package/dist/format-context-menus/index.js +4 -0
- package/dist/format-context-menus/index.js.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/key-handlers/ClearFilterKeyHandler.js +21 -0
- package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -0
- package/dist/key-handlers/CopyKeyHandler.js +31 -0
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -0
- package/dist/key-handlers/ReverseKeyHandler.js +32 -0
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -0
- package/dist/key-handlers/index.js +4 -0
- package/dist/key-handlers/index.js.map +1 -0
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +175 -0
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -0
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +139 -0
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -0
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +83 -0
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -0
- package/dist/mousehandlers/IrisGridContextMenuHandler.css +19 -0
- package/dist/mousehandlers/IrisGridContextMenuHandler.css.map +1 -0
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +1220 -0
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -0
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +28 -0
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -0
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +80 -0
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -0
- package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +126 -0
- package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -0
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +46 -0
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -0
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js +151 -0
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -0
- package/dist/mousehandlers/PendingMouseHandler.js +39 -0
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -0
- package/dist/mousehandlers/index.js +11 -0
- package/dist/mousehandlers/index.js.map +1 -0
- package/dist/sidebar/AdvancedSettings.js +6 -0
- package/dist/sidebar/AdvancedSettings.js.map +1 -0
- package/dist/sidebar/AdvancedSettingsMenu.js +29 -0
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -0
- package/dist/sidebar/AdvancedSettingsType.js +7 -0
- package/dist/sidebar/AdvancedSettingsType.js.map +1 -0
- package/dist/sidebar/ChartBuilder.css +56 -0
- package/dist/sidebar/ChartBuilder.css.map +1 -0
- package/dist/sidebar/ChartBuilder.js +443 -0
- package/dist/sidebar/ChartBuilder.js.map +1 -0
- package/dist/sidebar/CustomColumnBuilder.css +58 -0
- package/dist/sidebar/CustomColumnBuilder.css.map +1 -0
- package/dist/sidebar/CustomColumnBuilder.js +384 -0
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -0
- package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +91 -0
- package/dist/sidebar/CustomColumnInput.js.map +1 -0
- package/dist/sidebar/InputEditor.css +35 -0
- package/dist/sidebar/InputEditor.css.map +1 -0
- package/dist/sidebar/InputEditor.d.ts +4 -2
- package/dist/sidebar/InputEditor.d.ts.map +1 -1
- package/dist/sidebar/InputEditor.js +180 -0
- package/dist/sidebar/InputEditor.js.map +1 -0
- package/dist/sidebar/OptionType.js +19 -0
- package/dist/sidebar/OptionType.js.map +1 -0
- package/dist/sidebar/RollupRows.css +120 -0
- package/dist/sidebar/RollupRows.css.map +1 -0
- package/dist/sidebar/RollupRows.js +519 -0
- package/dist/sidebar/RollupRows.js.map +1 -0
- package/dist/sidebar/SelectDistinctBuilder.css +41 -0
- package/dist/sidebar/SelectDistinctBuilder.css.map +1 -0
- package/dist/sidebar/SelectDistinctBuilder.js +155 -0
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -0
- package/dist/sidebar/TableCsvExporter.css +32 -0
- package/dist/sidebar/TableCsvExporter.css.map +1 -0
- package/dist/sidebar/TableCsvExporter.js +399 -0
- package/dist/sidebar/TableCsvExporter.js.map +1 -0
- package/dist/sidebar/TableSaver.js +487 -0
- package/dist/sidebar/TableSaver.js.map +1 -0
- package/dist/sidebar/aggregations/AggregationEdit.css +61 -0
- package/dist/sidebar/aggregations/AggregationEdit.css.map +1 -0
- package/dist/sidebar/aggregations/AggregationEdit.js +155 -0
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -0
- package/dist/sidebar/aggregations/AggregationOperation.js +19 -0
- package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -0
- package/dist/sidebar/aggregations/AggregationUtils.js +59 -0
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -0
- package/dist/sidebar/aggregations/Aggregations.css +43 -0
- package/dist/sidebar/aggregations/Aggregations.css.map +1 -0
- package/dist/sidebar/aggregations/Aggregations.js +178 -0
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -0
- package/dist/sidebar/aggregations/index.js +2 -0
- package/dist/sidebar/aggregations/index.js.map +1 -0
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +123 -0
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +243 -0
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css +22 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +109 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +18 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css +57 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +150 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +635 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -0
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +122 -0
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -0
- package/dist/sidebar/conditional-formatting/StyleEditor.css +55 -0
- package/dist/sidebar/conditional-formatting/StyleEditor.css.map +1 -0
- package/dist/sidebar/conditional-formatting/StyleEditor.js +150 -0
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -0
- package/dist/sidebar/icons/BarIcon.js +24 -0
- package/dist/sidebar/icons/BarIcon.js.map +1 -0
- package/dist/sidebar/icons/FormatColumnWhereIcon.js +42 -0
- package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -0
- package/dist/sidebar/icons/FormatRowWhereIcon.js +36 -0
- package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -0
- package/dist/sidebar/icons/HistogramIcon.js +24 -0
- package/dist/sidebar/icons/HistogramIcon.js.map +1 -0
- package/dist/sidebar/icons/LineIcon.js +27 -0
- package/dist/sidebar/icons/LineIcon.js.map +1 -0
- package/dist/sidebar/icons/PieIcon.js +24 -0
- package/dist/sidebar/icons/PieIcon.js.map +1 -0
- package/dist/sidebar/icons/ScatterIcon.js +74 -0
- package/dist/sidebar/icons/ScatterIcon.js.map +1 -0
- package/dist/sidebar/icons/index.js +8 -0
- package/dist/sidebar/icons/index.js.map +1 -0
- package/dist/sidebar/index.d.ts +1 -0
- package/dist/sidebar/index.d.ts.map +1 -1
- package/dist/sidebar/index.js +19 -0
- package/dist/sidebar/index.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css +68 -0
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +964 -0
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +132 -0
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css +29 -0
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +188 -0
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +81 -0
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +30 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +158 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +146 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +59 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css +139 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +44 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +129 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js +4 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +261 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -0
- package/package.json +15 -15
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/* stylelint-disable scss/at-import-no-partial-leading-underscore */
|
|
2
|
+
.rollup-rows {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
justify-content: flex-start;
|
|
6
|
+
outline: 0;
|
|
7
|
+
margin: 0;
|
|
8
|
+
padding: 0;
|
|
9
|
+
height: 100%;
|
|
10
|
+
}
|
|
11
|
+
.rollup-rows .section-title {
|
|
12
|
+
margin: 0 0.5rem;
|
|
13
|
+
padding-bottom: 0;
|
|
14
|
+
}
|
|
15
|
+
.rollup-rows .top-menu,
|
|
16
|
+
.rollup-rows .bottom-menu {
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-direction: row;
|
|
19
|
+
justify-content: space-between;
|
|
20
|
+
padding: 0.25rem;
|
|
21
|
+
z-index: 2;
|
|
22
|
+
}
|
|
23
|
+
.rollup-rows .top-menu .btn-link-icon,
|
|
24
|
+
.rollup-rows .bottom-menu .btn-link-icon {
|
|
25
|
+
min-width: 1rem;
|
|
26
|
+
padding: 0 0.5rem;
|
|
27
|
+
margin-right: 0.25rem;
|
|
28
|
+
}
|
|
29
|
+
.rollup-rows .top-menu .btn-link-icon:first-of-type,
|
|
30
|
+
.rollup-rows .bottom-menu .btn-link-icon:first-of-type {
|
|
31
|
+
margin-left: 0.25rem;
|
|
32
|
+
}
|
|
33
|
+
.rollup-rows .top-menu .btn-link-icon.active,
|
|
34
|
+
.rollup-rows .bottom-menu .btn-link-icon.active {
|
|
35
|
+
color: #f0f0ee;
|
|
36
|
+
}
|
|
37
|
+
.rollup-rows .top-menu .btn-link-icon:hover,
|
|
38
|
+
.rollup-rows .bottom-menu .btn-link-icon:hover {
|
|
39
|
+
color: #4878ea;
|
|
40
|
+
}
|
|
41
|
+
.rollup-rows .top-menu .label,
|
|
42
|
+
.rollup-rows .bottom-menu .label {
|
|
43
|
+
font-weight: 500;
|
|
44
|
+
}
|
|
45
|
+
.rollup-rows .bottom-menu {
|
|
46
|
+
margin-left: 0;
|
|
47
|
+
padding-left: 0.5rem;
|
|
48
|
+
border-top: 1px solid #1a171a;
|
|
49
|
+
padding-top: 0.5rem;
|
|
50
|
+
}
|
|
51
|
+
.rollup-rows .bottom-menu .custom-checkbox {
|
|
52
|
+
font-size: smaller;
|
|
53
|
+
margin-left: 0.25rem;
|
|
54
|
+
}
|
|
55
|
+
.rollup-rows .bottom-menu .custom-checkbox .custom-control-label {
|
|
56
|
+
padding-top: 2px;
|
|
57
|
+
}
|
|
58
|
+
.rollup-rows .item-list-scroll-pane {
|
|
59
|
+
border: none;
|
|
60
|
+
padding-top: 0;
|
|
61
|
+
padding-bottom: 0;
|
|
62
|
+
}
|
|
63
|
+
.rollup-rows .rollup-rows-group-by {
|
|
64
|
+
display: flex;
|
|
65
|
+
flex-direction: column;
|
|
66
|
+
background-color: #373438;
|
|
67
|
+
}
|
|
68
|
+
.rollup-rows .rollup-rows-group-by .draggable-item-list {
|
|
69
|
+
flex-grow: 1;
|
|
70
|
+
transition: height 0.15s;
|
|
71
|
+
}
|
|
72
|
+
.rollup-rows .rollup-rows-group-by .btn-delete-grouping {
|
|
73
|
+
margin-right: 0.5rem;
|
|
74
|
+
padding: 0 0.5rem;
|
|
75
|
+
}
|
|
76
|
+
.rollup-rows .rollup-rows-group-by .placeholder {
|
|
77
|
+
margin: 0.5rem;
|
|
78
|
+
padding: 1rem;
|
|
79
|
+
text-align: center;
|
|
80
|
+
border: dashed 1px;
|
|
81
|
+
}
|
|
82
|
+
.rollup-rows .rollup-rows-available-columns {
|
|
83
|
+
display: flex;
|
|
84
|
+
flex-direction: column;
|
|
85
|
+
background-color: #403e41;
|
|
86
|
+
flex-grow: 1;
|
|
87
|
+
}
|
|
88
|
+
.rollup-rows .rollup-rows-available-columns .draggable-item-list {
|
|
89
|
+
flex-grow: 1;
|
|
90
|
+
}
|
|
91
|
+
.rollup-rows.is-dragging .rollup-rows-group-by .placeholder {
|
|
92
|
+
border: dashed 1px transparent;
|
|
93
|
+
background-image: linear-gradient(to right, #1a171a 50%, #f0f0ee 50%), linear-gradient(to right, #1a171a 50%, #f0f0ee 50%), linear-gradient(to bottom, #1a171a 50%, #f0f0ee 50%), linear-gradient(to bottom, #1a171a 50%, #f0f0ee 50%);
|
|
94
|
+
background-size: 8px 1px, 8px 1px, 1px 8px, 1px 8px;
|
|
95
|
+
background-position: 0 top, 0 bottom, left 0, right 0;
|
|
96
|
+
background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
|
|
97
|
+
animation: march 0.5s;
|
|
98
|
+
animation-timing-function: linear;
|
|
99
|
+
animation-iteration-count: infinite;
|
|
100
|
+
}
|
|
101
|
+
.rollup-rows.is-dragging .rollup-rows-group-by .item-list-scroll-pane {
|
|
102
|
+
background-image: linear-gradient(to right, #1a171a 50%, #f0f0ee 50%), linear-gradient(to right, #1a171a 50%, #f0f0ee 50%), linear-gradient(to bottom, #1a171a 50%, #f0f0ee 50%), linear-gradient(to bottom, #1a171a 50%, #f0f0ee 50%);
|
|
103
|
+
background-size: 8px 1px, 8px 1px, 1px 8px, 1px 8px;
|
|
104
|
+
background-position: 0 top, 0 bottom, left 0, right 0;
|
|
105
|
+
background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
|
|
106
|
+
animation: march 0.5s;
|
|
107
|
+
animation-timing-function: linear;
|
|
108
|
+
animation-iteration-count: infinite;
|
|
109
|
+
}
|
|
110
|
+
.rollup-rows.is-dragging .rollup-rows-available-columns .draggable-item-list:not(.is-dragging-from-this) .item-list-scroll-pane {
|
|
111
|
+
background-image: linear-gradient(to right, #1a171a 50%, #f0f0ee 50%), linear-gradient(to right, #1a171a 50%, #f0f0ee 50%), linear-gradient(to bottom, #1a171a 50%, #f0f0ee 50%), linear-gradient(to bottom, #1a171a 50%, #f0f0ee 50%);
|
|
112
|
+
background-size: 8px 1px, 8px 1px, 1px 8px, 1px 8px;
|
|
113
|
+
background-position: 0 top, 0 bottom, left 0, right 0;
|
|
114
|
+
background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
|
|
115
|
+
animation: march 0.5s;
|
|
116
|
+
animation-timing-function: linear;
|
|
117
|
+
animation-iteration-count: infinite;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/*# sourceMappingURL=RollupRows.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../src/sidebar/RollupRows.scss","../../../../node_modules/@deephaven/components/scss/new_variables.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACQA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;AAAA;EAEE;EACA;EACA;EACA,SCzBO;ED0BP;;AAEA;AAAA;EACE;EACA;EACA,cC/BK;;ADgCL;AAAA;EACE,aCjCG;;ADoCL;AAAA;EACE,OE1BS;;AF6BX;AAAA;EACE,OE/BQ;;AFmCZ;AAAA;EACE;;AAIJ;EACE;EACA,cCnDO;EDoDP;EACA,aCrDO;;ADsDP;EACE;EACA,aCzDK;;AD0DL;EACE;;AAKN;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA,kBElDO;;AFoDP;EACE;EACA;;AAGF;EACE,cChFK;EDiFL;;AAGF;EACE,QCrFK;EDsFL,SCrFK;EDsFL;EACA;;AAIJ;EACE;EACA;EACA,kBE1EO;EF2EP;;AACA;EACE;;AAMA;EACE;EC1FN;EAIA;EAEA;EACA;EACA;EACA;EACA;;ADoFI;EC9FJ;EAIA;EAEA;EACA;EACA;EACA;EACA;;AD2FI;ECrGJ;EAIA;EAEA;EACA;EACA;EACA;EACA","file":"RollupRows.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n$draggable-item-hover-bg: $secondary;\n$draggable-item-selected-bg: rgba($primary, 0.4);\n$draggable-item-selected-hover-bg: $primary;\n$draggable-item-border: $input-border-width solid transparent;\n$row-selected-bg-color: rgba($primary, 0.4);\n\n.rollup-rows {\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n outline: 0;\n margin: 0;\n padding: 0;\n height: 100%;\n\n .section-title {\n margin: 0 $spacer-2;\n padding-bottom: 0;\n }\n\n .top-menu,\n .bottom-menu {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: $spacer-1;\n z-index: 2;\n\n .btn-link-icon {\n min-width: 1rem;\n padding: 0 $spacer-2;\n margin-right: $spacer-1;\n &:first-of-type {\n margin-left: $spacer-1;\n }\n\n &.active {\n color: $foreground;\n }\n\n &:hover {\n color: $primary;\n }\n }\n\n .label {\n font-weight: 500;\n }\n }\n\n .bottom-menu {\n margin-left: 0;\n padding-left: $spacer-2;\n border-top: 1px solid $background;\n padding-top: $spacer-2;\n .custom-checkbox {\n font-size: smaller;\n margin-left: $spacer-1;\n .custom-control-label {\n padding-top: 2px;\n }\n }\n }\n\n .item-list-scroll-pane {\n border: none;\n padding-top: 0;\n padding-bottom: 0;\n }\n\n .rollup-rows-group-by {\n display: flex;\n flex-direction: column;\n background-color: $gray-800;\n\n .draggable-item-list {\n flex-grow: 1;\n transition: height $transition;\n }\n\n .btn-delete-grouping {\n margin-right: $spacer-2;\n padding: 0 $spacer-2;\n }\n\n .placeholder {\n margin: $spacer-2;\n padding: $spacer-3;\n text-align: center;\n border: dashed 1px;\n }\n }\n\n .rollup-rows-available-columns {\n display: flex;\n flex-direction: column;\n background-color: $gray-700;\n flex-grow: 1;\n .draggable-item-list {\n flex-grow: 1;\n }\n }\n\n &.is-dragging {\n .rollup-rows-group-by {\n .placeholder {\n border: dashed 1px transparent;\n @include ants-base($foreground, $background);\n }\n\n .item-list-scroll-pane {\n @include ants-base($foreground, $background);\n }\n }\n\n .rollup-rows-available-columns\n .draggable-item-list:not(.is-dragging-from-this) {\n .item-list-scroll-pane {\n @include ants-base($foreground, $background);\n }\n }\n }\n}\n","//Set of spacer variables from the spacer map\n$spacer-0: map-get($spacers, 0); //0\n$spacer-1: map-get($spacers, 1);\n$spacer-2: map-get($spacers, 2);\n$spacer-3: map-get($spacers, 3);\n$spacer-4: map-get($spacers, 4);\n$spacer-5: map-get($spacers, 5);\n\n//Marching Ants for golden layout dropzone and drag and drop\n//top bottom, left right.\n//create 4 background images that are 50% color 1, 50% color 2 using graidents, two veritical, two horizontal\n//size them to ant-size and thickness\n//position those images along the egdes and make top/bottom repeat-x and left/right repeat-y\n//then offest each of those background positions by ant-size in animation to make them march.\n$ant-size: 8px;\n$ant-thickness: 1px;\n\n@mixin ants-base($color-1: black, $color-2: white) {\n background-image: linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%);\n background-size: $ant-size $ant-thickness, $ant-size $ant-thickness,\n $ant-thickness $ant-size, $ant-thickness $ant-size;\n background-position: 0 top, 0 bottom, left 0, right 0;\n background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;\n animation: march 0.5s;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n}\n\n@mixin drag-stack($pseudo-element) {\n &::#{$pseudo-element} {\n content: ' ';\n background: $primary;\n box-shadow: $box-shadow;\n border-radius: $border-radius;\n position: absolute;\n height: 100%;\n width: 100%;\n @content;\n }\n}\n\n$focus-bg-transparency: 0.12;\n$hover-bg-transparency: 0.14;\n$active-bg-transparency: 0.28;\n$exception-transparency: 0.13;\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
|
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
3
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
4
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
5
|
+
/* eslint-disable jsx-a11y/click-events-have-key-events */
|
|
6
|
+
import React, { Component } from 'react';
|
|
7
|
+
import classNames from 'classnames';
|
|
8
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
9
|
+
import { DragDropContext, Droppable } from 'react-beautiful-dnd';
|
|
10
|
+
import { Checkbox, DraggableItemList, DragUtils, SearchInput, Tooltip, Button } from '@deephaven/components';
|
|
11
|
+
import { vsTrash, dhSortAlphaDown, dhSortAlphaUp } from '@deephaven/icons';
|
|
12
|
+
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
13
|
+
import memoize from 'memoizee';
|
|
14
|
+
import debounce from 'lodash.debounce';
|
|
15
|
+
import Log from '@deephaven/log';
|
|
16
|
+
import { assertNotNull } from '@deephaven/utils';
|
|
17
|
+
import "./RollupRows.css";
|
|
18
|
+
var log = Log.module('RollupRows');
|
|
19
|
+
var DEBOUNCE_SEARCH = 150;
|
|
20
|
+
var GROUPED_LIST_ID = 'grouped-rollup-rows';
|
|
21
|
+
var UNGROUPED_LIST_ID = 'ungrouped-rollup-rows';
|
|
22
|
+
class RollupRows extends Component {
|
|
23
|
+
static renderColumn(_ref) {
|
|
24
|
+
var {
|
|
25
|
+
item,
|
|
26
|
+
isClone,
|
|
27
|
+
selectedCount
|
|
28
|
+
} = _ref;
|
|
29
|
+
var text = item === null || item === void 0 ? void 0 : item.name;
|
|
30
|
+
var badgeText = isClone !== undefined && isClone ? "".concat(selectedCount) : undefined;
|
|
31
|
+
var className = isClone !== undefined && isClone ? 'item-list-item-clone' : '';
|
|
32
|
+
return DraggableItemList.renderTextItem({
|
|
33
|
+
text,
|
|
34
|
+
badgeText,
|
|
35
|
+
className
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
static addGroupings(currentGroupings, newGroupings) {
|
|
39
|
+
var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentGroupings.length;
|
|
40
|
+
if (newGroupings == null || newGroupings.length === 0) {
|
|
41
|
+
return currentGroupings;
|
|
42
|
+
}
|
|
43
|
+
var insertIndex = index;
|
|
44
|
+
var groupings = currentGroupings.filter((grouping, i) => {
|
|
45
|
+
if (newGroupings.includes(grouping)) {
|
|
46
|
+
if (i < insertIndex) {
|
|
47
|
+
insertIndex -= 1;
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
return true;
|
|
52
|
+
});
|
|
53
|
+
groupings.splice(insertIndex, 0, ...newGroupings);
|
|
54
|
+
return groupings;
|
|
55
|
+
}
|
|
56
|
+
static isGroupable(column) {
|
|
57
|
+
return !TableUtils.isDecimalType(column.type);
|
|
58
|
+
}
|
|
59
|
+
constructor(props) {
|
|
60
|
+
super(props);
|
|
61
|
+
_defineProperty(this, "ungroupedList", void 0);
|
|
62
|
+
_defineProperty(this, "groupedList", void 0);
|
|
63
|
+
_defineProperty(this, "search", debounce(searchFilter => {
|
|
64
|
+
var columns = this.getSortedUngroupedColumns();
|
|
65
|
+
var selectedRanges = [];
|
|
66
|
+
var focusIndex = null;
|
|
67
|
+
for (var i = 0; i < columns.length; i += 1) {
|
|
68
|
+
var column = columns[i];
|
|
69
|
+
if (column.name.toLowerCase().includes(searchFilter.toLowerCase())) {
|
|
70
|
+
if (focusIndex == null) {
|
|
71
|
+
focusIndex = i;
|
|
72
|
+
}
|
|
73
|
+
selectedRanges.push([i, i]);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
assertNotNull(focusIndex);
|
|
77
|
+
this.setState({
|
|
78
|
+
ungroupedSelectedRanges: selectedRanges
|
|
79
|
+
});
|
|
80
|
+
if (selectedRanges.length > 0 && this.ungroupedList.current) {
|
|
81
|
+
this.ungroupedList.current.scrollToItem(focusIndex);
|
|
82
|
+
}
|
|
83
|
+
}, DEBOUNCE_SEARCH));
|
|
84
|
+
_defineProperty(this, "getCachedUngroupedColumns", memoize((columns, groupedColumns) => columns.filter(column => RollupRows.isGroupable(column) && groupedColumns.find(name => name === column.name) == null)));
|
|
85
|
+
_defineProperty(this, "getCachedSortedColumns", memoize((columns, sort) => sort == null ? [...columns] : TableUtils.sortColumns(columns, sort === RollupRows.SORT.ASCENDING)));
|
|
86
|
+
this.handleDeleteClicked = this.handleDeleteClicked.bind(this);
|
|
87
|
+
this.handleSearchChange = this.handleSearchChange.bind(this);
|
|
88
|
+
this.handleUngroupedSelect = this.handleUngroupedSelect.bind(this);
|
|
89
|
+
this.handleUngroupedSelectionChange = this.handleUngroupedSelectionChange.bind(this);
|
|
90
|
+
this.handleDragStart = this.handleDragStart.bind(this);
|
|
91
|
+
this.handleDragEnd = this.handleDragEnd.bind(this);
|
|
92
|
+
this.handleGroupedSelectionChange = this.handleGroupedSelectionChange.bind(this);
|
|
93
|
+
this.handleShowConstituentsChange = this.handleShowConstituentsChange.bind(this);
|
|
94
|
+
this.handleShowNonAggregatedColumnsChange = this.handleShowNonAggregatedColumnsChange.bind(this);
|
|
95
|
+
this.handleSortAscending = this.handleSortAscending.bind(this);
|
|
96
|
+
this.handleSortDescending = this.handleSortDescending.bind(this);
|
|
97
|
+
this.renderGroupedItem = this.renderGroupedItem.bind(this);
|
|
98
|
+
this.ungroupedList = /*#__PURE__*/React.createRef();
|
|
99
|
+
this.groupedList = /*#__PURE__*/React.createRef();
|
|
100
|
+
var {
|
|
101
|
+
config
|
|
102
|
+
} = props;
|
|
103
|
+
var {
|
|
104
|
+
columns: _columns = [],
|
|
105
|
+
showConstituents = true,
|
|
106
|
+
showNonAggregatedColumns = true
|
|
107
|
+
} = config !== null && config !== void 0 ? config : {};
|
|
108
|
+
this.state = {
|
|
109
|
+
ungroupedSelectedRanges: [],
|
|
110
|
+
columns: _columns,
|
|
111
|
+
groupedSelectedRanges: [],
|
|
112
|
+
searchFilter: '',
|
|
113
|
+
showConstituents,
|
|
114
|
+
showNonAggregatedColumns,
|
|
115
|
+
dragSource: null,
|
|
116
|
+
sort: null
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
componentDidUpdate(prevProps, prevState) {
|
|
120
|
+
var {
|
|
121
|
+
config
|
|
122
|
+
} = this.props;
|
|
123
|
+
var {
|
|
124
|
+
columns,
|
|
125
|
+
showConstituents,
|
|
126
|
+
showNonAggregatedColumns
|
|
127
|
+
} = this.state;
|
|
128
|
+
if (config !== prevProps.config) {
|
|
129
|
+
this.updateFromConfig();
|
|
130
|
+
} else if (columns !== prevState.columns || showConstituents !== prevState.showConstituents || showNonAggregatedColumns !== prevState.showNonAggregatedColumns) {
|
|
131
|
+
if (config == null || columns !== config.columns || showConstituents !== config.showConstituents || showNonAggregatedColumns !== config.showNonAggregatedColumns) {
|
|
132
|
+
this.sendChange();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
componentWillUnmount() {
|
|
137
|
+
this.search.cancel();
|
|
138
|
+
}
|
|
139
|
+
handleSearchChange(event) {
|
|
140
|
+
var searchFilter = event.target.value;
|
|
141
|
+
this.setState({
|
|
142
|
+
searchFilter
|
|
143
|
+
});
|
|
144
|
+
if (!searchFilter) {
|
|
145
|
+
this.search.cancel();
|
|
146
|
+
this.resetSelection();
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
this.search(searchFilter);
|
|
150
|
+
}
|
|
151
|
+
handleSortAscending() {
|
|
152
|
+
this.setState(_ref2 => {
|
|
153
|
+
var {
|
|
154
|
+
sort
|
|
155
|
+
} = _ref2;
|
|
156
|
+
return {
|
|
157
|
+
sort: sort === RollupRows.SORT.ASCENDING ? null : RollupRows.SORT.ASCENDING
|
|
158
|
+
};
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
handleSortDescending() {
|
|
162
|
+
this.setState(_ref3 => {
|
|
163
|
+
var {
|
|
164
|
+
sort
|
|
165
|
+
} = _ref3;
|
|
166
|
+
return {
|
|
167
|
+
sort: sort === RollupRows.SORT.DESCENDING ? null : RollupRows.SORT.DESCENDING
|
|
168
|
+
};
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
resetSelection() {
|
|
172
|
+
this.setState({
|
|
173
|
+
ungroupedSelectedRanges: [],
|
|
174
|
+
groupedSelectedRanges: []
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
handleDragStart(e) {
|
|
178
|
+
log.debug('handleDragStart', e);
|
|
179
|
+
document.documentElement.classList.add('drag-pointer-events-none');
|
|
180
|
+
this.setState({
|
|
181
|
+
dragSource: e.source
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
handleDragEnd(e) {
|
|
185
|
+
log.debug('handleDragEnd', e);
|
|
186
|
+
document.documentElement.classList.remove('drag-pointer-events-none');
|
|
187
|
+
this.setState({
|
|
188
|
+
dragSource: null
|
|
189
|
+
});
|
|
190
|
+
var {
|
|
191
|
+
destination,
|
|
192
|
+
source
|
|
193
|
+
} = e;
|
|
194
|
+
if (destination == null || source == null) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// We don't allow dragging within the ungrouped list, so if we're dragging into the ungrouped list,
|
|
199
|
+
// it must have came from the grouped list. Remove those grouped columns.
|
|
200
|
+
if (destination.droppableId === UNGROUPED_LIST_ID) {
|
|
201
|
+
this.setState(_ref4 => {
|
|
202
|
+
var {
|
|
203
|
+
groupedSelectedRanges,
|
|
204
|
+
columns
|
|
205
|
+
} = _ref4;
|
|
206
|
+
var newColumns = [...columns];
|
|
207
|
+
DragUtils.reorder(newColumns, groupedSelectedRanges, [], 0);
|
|
208
|
+
return {
|
|
209
|
+
columns: newColumns,
|
|
210
|
+
ungroupedSelectedRanges: [],
|
|
211
|
+
groupedSelectedRanges: []
|
|
212
|
+
};
|
|
213
|
+
});
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// Otherwise, it must be dropping into the grouped list, so we just need to check the source
|
|
218
|
+
var isSameList = source.droppableId === GROUPED_LIST_ID;
|
|
219
|
+
var destinationIndex = destination.index;
|
|
220
|
+
if (isSameList && source.index < destination.index) {
|
|
221
|
+
// react-beautiful-dnd adjusts the index when dragging within a list already, however that only supports single selection
|
|
222
|
+
// We need to change it back to the index we actually want it to drop at before adjusting for the removed source index, as
|
|
223
|
+
// we adjust the index based on all the selected ranges, not just the source.index.
|
|
224
|
+
destinationIndex += 1;
|
|
225
|
+
}
|
|
226
|
+
this.setState(_ref5 => {
|
|
227
|
+
var {
|
|
228
|
+
columns,
|
|
229
|
+
ungroupedSelectedRanges,
|
|
230
|
+
groupedSelectedRanges
|
|
231
|
+
} = _ref5;
|
|
232
|
+
var newColumns = [...columns];
|
|
233
|
+
var sourceItems = isSameList ? newColumns : this.getSortedUngroupedColumns().map(c => c.name);
|
|
234
|
+
var sourceRanges = isSameList ? groupedSelectedRanges : ungroupedSelectedRanges;
|
|
235
|
+
var draggedItems = DragUtils.reorder(sourceItems, sourceRanges, newColumns, destinationIndex);
|
|
236
|
+
|
|
237
|
+
// Select the newly dropped items
|
|
238
|
+
var insertIndex = isSameList ? DragUtils.adjustDestinationIndex(destinationIndex, groupedSelectedRanges) : destinationIndex;
|
|
239
|
+
var newSelectedRanges = [[insertIndex, insertIndex + draggedItems.length - 1]];
|
|
240
|
+
return {
|
|
241
|
+
columns: newColumns,
|
|
242
|
+
ungroupedSelectedRanges: [],
|
|
243
|
+
groupedSelectedRanges: newSelectedRanges
|
|
244
|
+
};
|
|
245
|
+
});
|
|
246
|
+
this.resetSelection();
|
|
247
|
+
}
|
|
248
|
+
handleUngroupedSelect(itemIndex) {
|
|
249
|
+
log.debug('handleUngroupedSelect');
|
|
250
|
+
this.setState(_ref6 => {
|
|
251
|
+
var {
|
|
252
|
+
columns
|
|
253
|
+
} = _ref6;
|
|
254
|
+
return {
|
|
255
|
+
columns: RollupRows.addGroupings(columns, [this.getSortedUngroupedColumns()[itemIndex].name]),
|
|
256
|
+
ungroupedSelectedRanges: [],
|
|
257
|
+
groupedSelectedRanges: []
|
|
258
|
+
};
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
handleUngroupedSelectionChange(ungroupedSelectedRanges) {
|
|
262
|
+
log.debug2('handleUngroupedSelectionChange', ungroupedSelectedRanges);
|
|
263
|
+
this.setState(_ref7 => {
|
|
264
|
+
var {
|
|
265
|
+
ungroupedSelectedRanges: stateUngroupedSelectedRanges
|
|
266
|
+
} = _ref7;
|
|
267
|
+
if (ungroupedSelectedRanges === stateUngroupedSelectedRanges) {
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
return {
|
|
271
|
+
ungroupedSelectedRanges,
|
|
272
|
+
groupedSelectedRanges: []
|
|
273
|
+
};
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
handleGroupedSelectionChange(groupedSelectedRanges) {
|
|
277
|
+
log.debug2('handleGroupedSelectedRanges', groupedSelectedRanges);
|
|
278
|
+
this.setState(_ref8 => {
|
|
279
|
+
var {
|
|
280
|
+
groupedSelectedRanges: stateGroupedSelectedRanges
|
|
281
|
+
} = _ref8;
|
|
282
|
+
if (groupedSelectedRanges === stateGroupedSelectedRanges) {
|
|
283
|
+
return null;
|
|
284
|
+
}
|
|
285
|
+
return {
|
|
286
|
+
groupedSelectedRanges,
|
|
287
|
+
ungroupedSelectedRanges: []
|
|
288
|
+
};
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
handleDeleteClicked(index) {
|
|
292
|
+
this.setState(_ref9 => {
|
|
293
|
+
var {
|
|
294
|
+
columns
|
|
295
|
+
} = _ref9;
|
|
296
|
+
var newColumns = columns.slice();
|
|
297
|
+
newColumns.splice(index, 1);
|
|
298
|
+
return {
|
|
299
|
+
columns: newColumns
|
|
300
|
+
};
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
handleShowConstituentsChange() {
|
|
304
|
+
this.setState(_ref10 => {
|
|
305
|
+
var {
|
|
306
|
+
showConstituents
|
|
307
|
+
} = _ref10;
|
|
308
|
+
return {
|
|
309
|
+
showConstituents: !showConstituents
|
|
310
|
+
};
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
handleShowNonAggregatedColumnsChange() {
|
|
314
|
+
this.setState(_ref11 => {
|
|
315
|
+
var {
|
|
316
|
+
showNonAggregatedColumns
|
|
317
|
+
} = _ref11;
|
|
318
|
+
return {
|
|
319
|
+
showNonAggregatedColumns: !showNonAggregatedColumns
|
|
320
|
+
};
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
updateFromConfig() {
|
|
324
|
+
var {
|
|
325
|
+
config
|
|
326
|
+
} = this.props;
|
|
327
|
+
var {
|
|
328
|
+
columns = [],
|
|
329
|
+
showConstituents = true,
|
|
330
|
+
showNonAggregatedColumns = true
|
|
331
|
+
} = config !== null && config !== void 0 ? config : {};
|
|
332
|
+
this.setState({
|
|
333
|
+
columns,
|
|
334
|
+
showConstituents,
|
|
335
|
+
showNonAggregatedColumns
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
sendChange() {
|
|
339
|
+
var {
|
|
340
|
+
onChange
|
|
341
|
+
} = this.props;
|
|
342
|
+
var {
|
|
343
|
+
columns,
|
|
344
|
+
showConstituents,
|
|
345
|
+
showNonAggregatedColumns
|
|
346
|
+
} = this.state;
|
|
347
|
+
onChange({
|
|
348
|
+
columns,
|
|
349
|
+
showConstituents,
|
|
350
|
+
showNonAggregatedColumns
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
getUngroupedColumns() {
|
|
354
|
+
var {
|
|
355
|
+
model
|
|
356
|
+
} = this.props;
|
|
357
|
+
var {
|
|
358
|
+
columns
|
|
359
|
+
} = this.state;
|
|
360
|
+
var {
|
|
361
|
+
originalColumns
|
|
362
|
+
} = model;
|
|
363
|
+
return this.getCachedUngroupedColumns(originalColumns, columns);
|
|
364
|
+
}
|
|
365
|
+
getSortedUngroupedColumns() {
|
|
366
|
+
var {
|
|
367
|
+
sort
|
|
368
|
+
} = this.state;
|
|
369
|
+
var columns = this.getUngroupedColumns();
|
|
370
|
+
return this.getCachedSortedColumns(columns, sort);
|
|
371
|
+
}
|
|
372
|
+
renderGroupedItem(_ref12) {
|
|
373
|
+
var {
|
|
374
|
+
item,
|
|
375
|
+
itemIndex,
|
|
376
|
+
isClone,
|
|
377
|
+
selectedCount
|
|
378
|
+
} = _ref12;
|
|
379
|
+
var indent = isClone !== undefined && isClone ? '' : '\u00A0\u00A0'.repeat(itemIndex);
|
|
380
|
+
var text = "".concat(indent).concat(item);
|
|
381
|
+
var badgeText = isClone !== undefined && isClone ? "".concat(selectedCount) : undefined;
|
|
382
|
+
var className = isClone !== undefined && isClone ? 'item-list-item-clone' : '';
|
|
383
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, DraggableItemList.renderTextItem({
|
|
384
|
+
text,
|
|
385
|
+
badgeText,
|
|
386
|
+
className
|
|
387
|
+
}), (isClone === undefined || !isClone) && /*#__PURE__*/React.createElement(Button, {
|
|
388
|
+
kind: "ghost",
|
|
389
|
+
className: "btn btn-link btn-link-icon btn-delete-grouping float-right",
|
|
390
|
+
onClick: () => this.handleDeleteClicked(itemIndex)
|
|
391
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
392
|
+
icon: vsTrash
|
|
393
|
+
})));
|
|
394
|
+
}
|
|
395
|
+
render() {
|
|
396
|
+
var {
|
|
397
|
+
columns,
|
|
398
|
+
dragSource,
|
|
399
|
+
searchFilter,
|
|
400
|
+
groupedSelectedRanges,
|
|
401
|
+
ungroupedSelectedRanges,
|
|
402
|
+
showConstituents,
|
|
403
|
+
showNonAggregatedColumns,
|
|
404
|
+
sort
|
|
405
|
+
} = this.state;
|
|
406
|
+
var ungroupedColumns = this.getSortedUngroupedColumns();
|
|
407
|
+
var groupListHeight = columns.length * DraggableItemList.DEFAULT_ROW_HEIGHT;
|
|
408
|
+
if ((dragSource === null || dragSource === void 0 ? void 0 : dragSource.droppableId) === UNGROUPED_LIST_ID) {
|
|
409
|
+
groupListHeight += DraggableItemList.DEFAULT_ROW_HEIGHT;
|
|
410
|
+
}
|
|
411
|
+
var ungroupMaxListHeight = ungroupedColumns.length * DraggableItemList.DEFAULT_ROW_HEIGHT + 10;
|
|
412
|
+
var ungroupMinListHeight = Math.min(3 * DraggableItemList.DEFAULT_ROW_HEIGHT, ungroupMaxListHeight);
|
|
413
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
414
|
+
role: "menu",
|
|
415
|
+
className: classNames('rollup-rows', {
|
|
416
|
+
'is-dragging': dragSource != null
|
|
417
|
+
}),
|
|
418
|
+
tabIndex: 0
|
|
419
|
+
}, /*#__PURE__*/React.createElement(DragDropContext, {
|
|
420
|
+
onDragEnd: this.handleDragEnd,
|
|
421
|
+
onDragStart: this.handleDragStart
|
|
422
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
423
|
+
className: "rollup-rows-group-by"
|
|
424
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
425
|
+
className: "section-title"
|
|
426
|
+
}, "Group By"), columns.length === 0 && /*#__PURE__*/React.createElement(Droppable, {
|
|
427
|
+
droppableId: "placeholder"
|
|
428
|
+
}, (provided, snapshot) => /*#__PURE__*/React.createElement("div", _extends({
|
|
429
|
+
className: classNames('placeholder', 'text-muted', {
|
|
430
|
+
'is-dragging-from-this': snapshot.draggingFromThisWith,
|
|
431
|
+
'is-dragging-over': snapshot.isDraggingOver,
|
|
432
|
+
'is-dropping': snapshot.draggingOverWith
|
|
433
|
+
}),
|
|
434
|
+
ref: provided.innerRef
|
|
435
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
436
|
+
}, provided.droppableProps), "To create a rollup, drag columns from the list below and drop them into this area.")), columns.length > 0 && /*#__PURE__*/React.createElement(DraggableItemList, {
|
|
437
|
+
draggingItemClassName: "rollup-rows-dragging-grouped-item",
|
|
438
|
+
draggablePrefix: GROUPED_LIST_ID,
|
|
439
|
+
droppableId: GROUPED_LIST_ID,
|
|
440
|
+
itemCount: columns.length,
|
|
441
|
+
items: columns,
|
|
442
|
+
offset: 0,
|
|
443
|
+
onSelectionChange: this.handleGroupedSelectionChange,
|
|
444
|
+
ref: this.groupedList,
|
|
445
|
+
renderItem: this.renderGroupedItem,
|
|
446
|
+
selectedRanges: groupedSelectedRanges,
|
|
447
|
+
style: {
|
|
448
|
+
height: groupListHeight
|
|
449
|
+
},
|
|
450
|
+
isMultiSelect: true
|
|
451
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
452
|
+
className: "rollup-rows-available-columns"
|
|
453
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
454
|
+
className: "section-title"
|
|
455
|
+
}, "Available Grouping Columns"), /*#__PURE__*/React.createElement("div", {
|
|
456
|
+
className: "top-menu"
|
|
457
|
+
}, /*#__PURE__*/React.createElement(SearchInput, {
|
|
458
|
+
className: "w-100",
|
|
459
|
+
value: searchFilter,
|
|
460
|
+
matchCount: searchFilter ? ungroupedSelectedRanges.length : undefined,
|
|
461
|
+
placeholder: "Find column...",
|
|
462
|
+
onChange: this.handleSearchChange
|
|
463
|
+
}), /*#__PURE__*/React.createElement(Button, {
|
|
464
|
+
kind: "ghost",
|
|
465
|
+
className: classNames('btn-link btn-link-icon', {
|
|
466
|
+
active: sort === RollupRows.SORT.ASCENDING
|
|
467
|
+
}),
|
|
468
|
+
onClick: this.handleSortAscending
|
|
469
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
470
|
+
icon: dhSortAlphaDown
|
|
471
|
+
}), /*#__PURE__*/React.createElement(Tooltip, null, "Sort ascending")), /*#__PURE__*/React.createElement(Button, {
|
|
472
|
+
kind: "ghost",
|
|
473
|
+
className: classNames('btn-link btn-link-icon', {
|
|
474
|
+
active: sort === RollupRows.SORT.DESCENDING
|
|
475
|
+
}),
|
|
476
|
+
onClick: this.handleSortDescending
|
|
477
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
478
|
+
icon: dhSortAlphaUp
|
|
479
|
+
}), /*#__PURE__*/React.createElement(Tooltip, null, "Sort descending"))), /*#__PURE__*/React.createElement(DraggableItemList, {
|
|
480
|
+
className: "rollup-available-grouping-columns",
|
|
481
|
+
draggablePrefix: UNGROUPED_LIST_ID,
|
|
482
|
+
droppableId: UNGROUPED_LIST_ID,
|
|
483
|
+
itemCount: ungroupedColumns.length,
|
|
484
|
+
items: ungroupedColumns,
|
|
485
|
+
renderItem: RollupRows.renderColumn,
|
|
486
|
+
offset: 0,
|
|
487
|
+
onSelect: this.handleUngroupedSelect,
|
|
488
|
+
onSelectionChange: this.handleUngroupedSelectionChange,
|
|
489
|
+
ref: this.ungroupedList,
|
|
490
|
+
selectedRanges: ungroupedSelectedRanges,
|
|
491
|
+
style: {
|
|
492
|
+
maxHeight: ungroupMaxListHeight,
|
|
493
|
+
minHeight: ungroupMinListHeight
|
|
494
|
+
},
|
|
495
|
+
isDropDisabled: (dragSource === null || dragSource === void 0 ? void 0 : dragSource.droppableId) !== GROUPED_LIST_ID,
|
|
496
|
+
isMultiSelect: true
|
|
497
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
498
|
+
className: "bottom-menu"
|
|
499
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
500
|
+
className: "label"
|
|
501
|
+
}, "Show:"), /*#__PURE__*/React.createElement(Checkbox, {
|
|
502
|
+
checked: showConstituents,
|
|
503
|
+
onChange: this.handleShowConstituentsChange
|
|
504
|
+
}, "Constituents"), /*#__PURE__*/React.createElement(Checkbox, {
|
|
505
|
+
checked: showNonAggregatedColumns,
|
|
506
|
+
onChange: this.handleShowNonAggregatedColumnsChange
|
|
507
|
+
}, "Non-Aggregated Columns")))));
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
_defineProperty(RollupRows, "SORT", Object.freeze({
|
|
511
|
+
ASCENDING: 'ASC',
|
|
512
|
+
DESCENDING: 'DESC'
|
|
513
|
+
}));
|
|
514
|
+
_defineProperty(RollupRows, "defaultProps", {
|
|
515
|
+
config: null,
|
|
516
|
+
onChange: () => undefined
|
|
517
|
+
});
|
|
518
|
+
export default RollupRows;
|
|
519
|
+
//# sourceMappingURL=RollupRows.js.map
|