@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,964 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
3
|
+
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; }
|
|
4
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
5
|
+
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); }
|
|
6
|
+
import React, { Component } from 'react';
|
|
7
|
+
import classNames from 'classnames';
|
|
8
|
+
import { GridUtils } from '@deephaven/grid';
|
|
9
|
+
import { TextUtils, assertNotNull, DbNameValidator } from '@deephaven/utils';
|
|
10
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
11
|
+
import { dhEye, dhEyeSlash, dhSortAlphaDown, dhSortAlphaUp, dhArrowToTop, dhArrowToBottom, vsChevronUp, vsChevronDown, vsSymbolStructure, vsRefresh, vsCircleLargeFilled, vsAdd } from '@deephaven/icons';
|
|
12
|
+
import memoize from 'memoizee';
|
|
13
|
+
import debounce from 'lodash.debounce';
|
|
14
|
+
import { Button, SearchInput } from '@deephaven/components';
|
|
15
|
+
import clamp from 'lodash.clamp';
|
|
16
|
+
import throttle from 'lodash.throttle';
|
|
17
|
+
import "./VisibilityOrderingBuilder.css";
|
|
18
|
+
import ColumnHeaderGroup from "../../ColumnHeaderGroup.js";
|
|
19
|
+
import VisibilityOrderingItem from "./VisibilityOrderingItem.js";
|
|
20
|
+
import { flattenTree, getTreeItems } from "./sortable-tree/utilities.js";
|
|
21
|
+
import SortableTree from "./sortable-tree/SortableTree.js";
|
|
22
|
+
import { moveItemsFromDrop, moveToGroup } from "./VisibilityOrderingBuilderUtils.js";
|
|
23
|
+
var DEBOUNCE_SEARCH_COLUMN = 150;
|
|
24
|
+
class VisibilityOrderingBuilder extends Component {
|
|
25
|
+
constructor(props) {
|
|
26
|
+
super(props);
|
|
27
|
+
_defineProperty(this, "list", void 0);
|
|
28
|
+
_defineProperty(this, "debouncedSearchColumns", debounce(this.searchColumns, DEBOUNCE_SEARCH_COLUMN));
|
|
29
|
+
_defineProperty(this, "handleGroupColorChange", throttle((group, color) => {
|
|
30
|
+
var {
|
|
31
|
+
columnHeaderGroups,
|
|
32
|
+
onColumnHeaderGroupChanged
|
|
33
|
+
} = this.props;
|
|
34
|
+
var newGroups = [...columnHeaderGroups];
|
|
35
|
+
var newGroup = new ColumnHeaderGroup(_objectSpread(_objectSpread({}, group), {}, {
|
|
36
|
+
color
|
|
37
|
+
}));
|
|
38
|
+
newGroups.splice(newGroups.findIndex(_ref => {
|
|
39
|
+
var {
|
|
40
|
+
name
|
|
41
|
+
} = _ref;
|
|
42
|
+
return name === group.name;
|
|
43
|
+
}), 1, newGroup);
|
|
44
|
+
onColumnHeaderGroupChanged(newGroups);
|
|
45
|
+
}, 250));
|
|
46
|
+
_defineProperty(this, "renderItem", memoize(_ref2 => {
|
|
47
|
+
var {
|
|
48
|
+
value,
|
|
49
|
+
clone,
|
|
50
|
+
item,
|
|
51
|
+
ref,
|
|
52
|
+
handleProps
|
|
53
|
+
} = _ref2;
|
|
54
|
+
var {
|
|
55
|
+
onColumnVisibilityChanged
|
|
56
|
+
} = this.props;
|
|
57
|
+
var {
|
|
58
|
+
selectedColumns
|
|
59
|
+
} = this.state;
|
|
60
|
+
var displayString = value;
|
|
61
|
+
|
|
62
|
+
// The cloned drag overlay we want to show the items being dragged
|
|
63
|
+
if (clone) {
|
|
64
|
+
var selectedItemNames = this.getSelectedParentItems().map(_ref3 => {
|
|
65
|
+
var {
|
|
66
|
+
id
|
|
67
|
+
} = _ref3;
|
|
68
|
+
return id;
|
|
69
|
+
});
|
|
70
|
+
displayString = selectedItemNames.join(', ');
|
|
71
|
+
}
|
|
72
|
+
return /*#__PURE__*/React.createElement(VisibilityOrderingItem, {
|
|
73
|
+
ref: ref,
|
|
74
|
+
value: displayString,
|
|
75
|
+
clone: clone,
|
|
76
|
+
item: item,
|
|
77
|
+
childCount: selectedColumns.size,
|
|
78
|
+
onVisibilityChange: onColumnVisibilityChanged,
|
|
79
|
+
onClick: this.handleItemClick,
|
|
80
|
+
onGroupDelete: this.handleGroupDelete,
|
|
81
|
+
onGroupColorChange: this.handleGroupColorChange,
|
|
82
|
+
onGroupNameChange: this.handleGroupNameChange,
|
|
83
|
+
validateGroupName: this.validateGroupName,
|
|
84
|
+
handleProps: handleProps
|
|
85
|
+
});
|
|
86
|
+
}));
|
|
87
|
+
_defineProperty(this, "getMemoizedFirstMovableIndex", memoize((model, columns, movedColumns) => {
|
|
88
|
+
for (var i = 0; i < columns.length; i += 1) {
|
|
89
|
+
var modelIndex = GridUtils.getModelIndex(i, movedColumns);
|
|
90
|
+
if (model.isColumnMovable(modelIndex)) {
|
|
91
|
+
return i;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}));
|
|
96
|
+
_defineProperty(this, "getMemoizedLastMovableIndex", memoize((model, columns, movedColumns) => {
|
|
97
|
+
for (var i = columns.length - 1; i >= 0; i -= 1) {
|
|
98
|
+
var modelIndex = GridUtils.getModelIndex(i, movedColumns);
|
|
99
|
+
if (model.isColumnMovable(modelIndex)) {
|
|
100
|
+
return i;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return null;
|
|
104
|
+
}));
|
|
105
|
+
_defineProperty(this, "memoizedGetTreeItems", memoize((columns, movedColumns, columnHeaderGroups, hiddenColumns, selectedColumns) => getTreeItems(columns, movedColumns, columnHeaderGroups, hiddenColumns, [...selectedColumns.values()])));
|
|
106
|
+
_defineProperty(this, "makeVisibilityOrderingList", memoize((columns, treeItems) => {
|
|
107
|
+
var {
|
|
108
|
+
movedColumns
|
|
109
|
+
} = this.props;
|
|
110
|
+
var elements = [];
|
|
111
|
+
var firstMovableIndex = this.getFirstMovableIndex();
|
|
112
|
+
var lastMovableIndex = this.getLastMovableIndex();
|
|
113
|
+
var firstMovableTreeIndex = treeItems.findIndex(_ref4 => {
|
|
114
|
+
var {
|
|
115
|
+
data
|
|
116
|
+
} = _ref4;
|
|
117
|
+
return Array.isArray(data.visibleIndex) ? data.visibleIndex[0] === firstMovableIndex : data.visibleIndex === firstMovableIndex;
|
|
118
|
+
});
|
|
119
|
+
var lastMovableTreeIndex = treeItems.findIndex(_ref5 => {
|
|
120
|
+
var {
|
|
121
|
+
data
|
|
122
|
+
} = _ref5;
|
|
123
|
+
return Array.isArray(data.visibleIndex) ? data.visibleIndex[1] === lastMovableIndex : data.visibleIndex === lastMovableIndex;
|
|
124
|
+
});
|
|
125
|
+
var movableItems = treeItems.slice(firstMovableTreeIndex, lastMovableTreeIndex + 1);
|
|
126
|
+
|
|
127
|
+
// No movable items. Render all as immovable
|
|
128
|
+
if (firstMovableIndex == null || lastMovableIndex === null) {
|
|
129
|
+
for (var visibleIndex = 0; visibleIndex < columns.length; visibleIndex += 1) {
|
|
130
|
+
var modelIndex = GridUtils.getModelIndex(visibleIndex, movedColumns);
|
|
131
|
+
var column = columns[modelIndex];
|
|
132
|
+
elements.push(this.renderImmovableItem(column.name));
|
|
133
|
+
}
|
|
134
|
+
return elements;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Currently immovable groups are not supported
|
|
138
|
+
for (var _visibleIndex = 0; _visibleIndex < firstMovableIndex; _visibleIndex += 1) {
|
|
139
|
+
var _modelIndex = GridUtils.getModelIndex(_visibleIndex, movedColumns);
|
|
140
|
+
var _column = columns[_modelIndex];
|
|
141
|
+
elements.push(this.renderImmovableItem(_column.name));
|
|
142
|
+
}
|
|
143
|
+
if (firstMovableIndex !== null && firstMovableIndex > 0) {
|
|
144
|
+
elements.push( /*#__PURE__*/React.createElement("hr", {
|
|
145
|
+
key: "top-horizontal-divider"
|
|
146
|
+
}));
|
|
147
|
+
}
|
|
148
|
+
elements.push( /*#__PURE__*/React.createElement(SortableTree, {
|
|
149
|
+
key: "movable-items",
|
|
150
|
+
items: movableItems,
|
|
151
|
+
renderItem: this.renderItem,
|
|
152
|
+
onDragStart: this.handleDragStart,
|
|
153
|
+
onDragEnd: this.handleDragEnd
|
|
154
|
+
}));
|
|
155
|
+
if (lastMovableIndex != null && lastMovableIndex < columns.length - 1) {
|
|
156
|
+
elements.push( /*#__PURE__*/React.createElement("hr", {
|
|
157
|
+
key: "bottom-horizontal-divider"
|
|
158
|
+
}));
|
|
159
|
+
}
|
|
160
|
+
for (var _visibleIndex2 = lastMovableIndex + 1; _visibleIndex2 < columns.length; _visibleIndex2 += 1) {
|
|
161
|
+
var _modelIndex2 = GridUtils.getModelIndex(_visibleIndex2, movedColumns);
|
|
162
|
+
var _column2 = columns[_modelIndex2];
|
|
163
|
+
elements.push(this.renderImmovableItem(_column2.name));
|
|
164
|
+
}
|
|
165
|
+
return elements;
|
|
166
|
+
}));
|
|
167
|
+
_defineProperty(this, "renderImmovableItem", memoize(columnName => /*#__PURE__*/React.createElement("div", {
|
|
168
|
+
className: "visibility-ordering-list-item immovable",
|
|
169
|
+
key: columnName
|
|
170
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
171
|
+
className: "column-item"
|
|
172
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
173
|
+
className: "column-name"
|
|
174
|
+
}, columnName)))));
|
|
175
|
+
this.handleSearchInputChange = this.handleSearchInputChange.bind(this);
|
|
176
|
+
this.searchColumns = this.searchColumns.bind(this);
|
|
177
|
+
this.handleItemClick = this.handleItemClick.bind(this);
|
|
178
|
+
this.handleDragEnd = this.handleDragEnd.bind(this);
|
|
179
|
+
this.handleGroupDelete = this.handleGroupDelete.bind(this);
|
|
180
|
+
this.handleGroupNameChange = this.handleGroupNameChange.bind(this);
|
|
181
|
+
this.handleGroupCreate = this.handleGroupCreate.bind(this);
|
|
182
|
+
this.validateGroupName = this.validateGroupName.bind(this);
|
|
183
|
+
this.addColumnToSelected = this.addColumnToSelected.bind(this);
|
|
184
|
+
this.handleDragStart = this.handleDragStart.bind(this);
|
|
185
|
+
this.state = {
|
|
186
|
+
selectedColumns: new Set(),
|
|
187
|
+
lastSelectedColumn: '',
|
|
188
|
+
searchFilter: ''
|
|
189
|
+
};
|
|
190
|
+
this.list = null;
|
|
191
|
+
}
|
|
192
|
+
componentWillUnmount() {
|
|
193
|
+
this.debouncedSearchColumns.cancel();
|
|
194
|
+
}
|
|
195
|
+
resetVisibilityOrdering() {
|
|
196
|
+
var {
|
|
197
|
+
model,
|
|
198
|
+
onReset,
|
|
199
|
+
onMovedColumnsChanged,
|
|
200
|
+
onColumnHeaderGroupChanged
|
|
201
|
+
} = this.props;
|
|
202
|
+
this.setState({
|
|
203
|
+
selectedColumns: new Set(),
|
|
204
|
+
lastSelectedColumn: '',
|
|
205
|
+
searchFilter: ''
|
|
206
|
+
});
|
|
207
|
+
onReset();
|
|
208
|
+
onColumnHeaderGroupChanged(model.initialColumnHeaderGroups);
|
|
209
|
+
onMovedColumnsChanged(model.initialMovedColumns);
|
|
210
|
+
}
|
|
211
|
+
resetSelection() {
|
|
212
|
+
this.setState({
|
|
213
|
+
selectedColumns: new Set(),
|
|
214
|
+
lastSelectedColumn: ''
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
handleSearchInputChange(event) {
|
|
218
|
+
var searchFilter = event.target.value;
|
|
219
|
+
this.setState({
|
|
220
|
+
searchFilter
|
|
221
|
+
});
|
|
222
|
+
if (!searchFilter) {
|
|
223
|
+
this.debouncedSearchColumns.cancel();
|
|
224
|
+
this.resetSelection();
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
this.debouncedSearchColumns(searchFilter);
|
|
228
|
+
}
|
|
229
|
+
searchColumns(searchFilter) {
|
|
230
|
+
var flattenedItems = flattenTree(this.getTreeItems());
|
|
231
|
+
var itemsMatch = flattenedItems.filter(_ref6 => {
|
|
232
|
+
var _data$group$isNew, _data$group;
|
|
233
|
+
var {
|
|
234
|
+
id,
|
|
235
|
+
data
|
|
236
|
+
} = _ref6;
|
|
237
|
+
return !((_data$group$isNew = (_data$group = data.group) === null || _data$group === void 0 ? void 0 : _data$group.isNew) !== null && _data$group$isNew !== void 0 ? _data$group$isNew : false) && id.toLowerCase().includes(searchFilter.toLowerCase());
|
|
238
|
+
});
|
|
239
|
+
var columnsMatch = itemsMatch.map(_ref7 => {
|
|
240
|
+
var {
|
|
241
|
+
id
|
|
242
|
+
} = _ref7;
|
|
243
|
+
return id;
|
|
244
|
+
});
|
|
245
|
+
var visibleIndexToFocus = flattenedItems.findIndex(_ref8 => {
|
|
246
|
+
var {
|
|
247
|
+
id
|
|
248
|
+
} = _ref8;
|
|
249
|
+
return id.toLowerCase().includes(searchFilter.toLowerCase());
|
|
250
|
+
});
|
|
251
|
+
this.addColumnToSelected(columnsMatch, false);
|
|
252
|
+
if (columnsMatch.length > 0) {
|
|
253
|
+
var _this$list;
|
|
254
|
+
var columnItemToFocus = (_this$list = this.list) === null || _this$list === void 0 ? void 0 : _this$list.querySelectorAll('.item-wrapper')[visibleIndexToFocus];
|
|
255
|
+
columnItemToFocus === null || columnItemToFocus === void 0 ? void 0 : columnItemToFocus.scrollIntoView({
|
|
256
|
+
block: 'center'
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Moves the currently selected columns in the direction specified.
|
|
263
|
+
* Does not commit any changes to any state, just gets the required modifications.
|
|
264
|
+
*
|
|
265
|
+
* Items that are part of a selected group should not be moved separate from the group.
|
|
266
|
+
*
|
|
267
|
+
* Items moved to top or bottom should be removed from any groups they are within,
|
|
268
|
+
* unless part of a group that is also selected. The highest level selected group will
|
|
269
|
+
* be moved to the root level of the tree.
|
|
270
|
+
*
|
|
271
|
+
* Items moved up or down should move into and out of groups when applicable.
|
|
272
|
+
* They should never move more than 1 depth level at a time.
|
|
273
|
+
*
|
|
274
|
+
* Multiple selected items should move to the top or bottom in their existing order,
|
|
275
|
+
* but become one block of continuous columns.
|
|
276
|
+
*
|
|
277
|
+
* Multiple selected items moving up or down should move independently,
|
|
278
|
+
* unless they are at the same depth and contiguous. In that case, they should
|
|
279
|
+
* move in and out of groups together. I.e. if the 2 items above a group are selected,
|
|
280
|
+
* and the move down button is pressed, then both items should be moved into the group.
|
|
281
|
+
*
|
|
282
|
+
* @param option The movement option
|
|
283
|
+
* @returns A new copy of the movedColumns including moves required to perform the operation.
|
|
284
|
+
*
|
|
285
|
+
*/
|
|
286
|
+
moveSelectedColumns(option) {
|
|
287
|
+
var {
|
|
288
|
+
columnHeaderGroups
|
|
289
|
+
} = this.props;
|
|
290
|
+
var {
|
|
291
|
+
selectedColumns
|
|
292
|
+
} = this.state;
|
|
293
|
+
var treeItems = flattenTree(this.getTreeItems());
|
|
294
|
+
var firstMovableIndex = this.getFirstMovableIndex();
|
|
295
|
+
var lastMovableIndex = this.getLastMovableIndex();
|
|
296
|
+
assertNotNull(firstMovableIndex);
|
|
297
|
+
assertNotNull(lastMovableIndex);
|
|
298
|
+
var selectedItems = this.getSelectedParentItems();
|
|
299
|
+
var isMovingUpward = option === VisibilityOrderingBuilder.MOVE_OPTIONS.UP || option === VisibilityOrderingBuilder.MOVE_OPTIONS.TOP;
|
|
300
|
+
|
|
301
|
+
// for moving up and to the top, move column(s) in visibility index order
|
|
302
|
+
// for moving down and to the bottom, move column(s) in reverse visibility index order
|
|
303
|
+
if (!isMovingUpward) {
|
|
304
|
+
selectedItems.reverse();
|
|
305
|
+
}
|
|
306
|
+
var newMoves = [];
|
|
307
|
+
var updatedGroups = columnHeaderGroups;
|
|
308
|
+
var _loop = function _loop() {
|
|
309
|
+
var {
|
|
310
|
+
id,
|
|
311
|
+
parentId,
|
|
312
|
+
depth,
|
|
313
|
+
data: {
|
|
314
|
+
visibleIndex
|
|
315
|
+
}
|
|
316
|
+
} = selectedItems[i];
|
|
317
|
+
switch (option) {
|
|
318
|
+
case VisibilityOrderingBuilder.MOVE_OPTIONS.TOP:
|
|
319
|
+
{
|
|
320
|
+
newMoves = GridUtils.moveItemOrRange(visibleIndex, firstMovableIndex, newMoves, true);
|
|
321
|
+
var size = Array.isArray(visibleIndex) ? visibleIndex[1] - visibleIndex[0] + 1 : 1;
|
|
322
|
+
firstMovableIndex += size;
|
|
323
|
+
// Moving items to top should move out of any groups
|
|
324
|
+
updatedGroups = moveToGroup(selectedItems[i], null, updatedGroups);
|
|
325
|
+
break;
|
|
326
|
+
}
|
|
327
|
+
case VisibilityOrderingBuilder.MOVE_OPTIONS.BOTTOM:
|
|
328
|
+
{
|
|
329
|
+
newMoves = GridUtils.moveItemOrRange(visibleIndex, lastMovableIndex, newMoves, true);
|
|
330
|
+
var _size = Array.isArray(visibleIndex) ? visibleIndex[1] - visibleIndex[0] + 1 : 1;
|
|
331
|
+
lastMovableIndex -= _size;
|
|
332
|
+
// Moving items to bottom should move out of any groups
|
|
333
|
+
updatedGroups = moveToGroup(selectedItems[i], null, updatedGroups);
|
|
334
|
+
break;
|
|
335
|
+
}
|
|
336
|
+
case VisibilityOrderingBuilder.MOVE_OPTIONS.UP:
|
|
337
|
+
{
|
|
338
|
+
var itemIndex = treeItems.findIndex(item => item.id === id);
|
|
339
|
+
// Array.findLast would be better here, but it's too new for our browser support
|
|
340
|
+
var prevItemIndex = treeItems.map((item, idx) => idx < itemIndex && !selectedColumns.has(item.id)).lastIndexOf(true);
|
|
341
|
+
var prevItem = treeItems[prevItemIndex];
|
|
342
|
+
if (prevItem != null && prevItem.parentId !== parentId) {
|
|
343
|
+
// Moving into a different parent
|
|
344
|
+
if (Math.abs(prevItem.depth - depth) > 1) {
|
|
345
|
+
// Prev item is more than 1 level away
|
|
346
|
+
// Find prev parent at same depth as current
|
|
347
|
+
// This way we only ever move 1 depth level per event
|
|
348
|
+
var newParentItemIndex = treeItems.map((item, idx) => idx < prevItemIndex && item.depth === depth).lastIndexOf(true);
|
|
349
|
+
var newParentItem = treeItems[newParentItemIndex];
|
|
350
|
+
updatedGroups = moveToGroup(selectedItems[i], newParentItem.id, updatedGroups);
|
|
351
|
+
} else {
|
|
352
|
+
updatedGroups = moveToGroup(selectedItems[i], prevItem.parentId, updatedGroups);
|
|
353
|
+
}
|
|
354
|
+
} else {
|
|
355
|
+
var toIndex = clamp(Array.isArray(visibleIndex) ? visibleIndex[0] - 1 : visibleIndex - 1, firstMovableIndex, lastMovableIndex);
|
|
356
|
+
newMoves = GridUtils.moveItemOrRange(visibleIndex, toIndex, newMoves, false);
|
|
357
|
+
var _size2 = Array.isArray(visibleIndex) ? visibleIndex[1] - visibleIndex[0] + 1 : 1;
|
|
358
|
+
firstMovableIndex += _size2;
|
|
359
|
+
}
|
|
360
|
+
break;
|
|
361
|
+
}
|
|
362
|
+
case VisibilityOrderingBuilder.MOVE_OPTIONS.DOWN:
|
|
363
|
+
{
|
|
364
|
+
var _itemIndex = treeItems.findIndex(item => item.id === id);
|
|
365
|
+
var nextItem = treeItems.find((item, idx) => idx > _itemIndex && !selectedColumns.has(item.id));
|
|
366
|
+
if ((nextItem === null || nextItem === void 0 ? void 0 : nextItem.parentId) !== parentId) {
|
|
367
|
+
var _parentItem$parentId;
|
|
368
|
+
// Moving out of our group
|
|
369
|
+
// Move to the parent of our parent
|
|
370
|
+
// That way we only ever move 1 level at a time
|
|
371
|
+
var parentItem = treeItems.find(item => item.id === parentId);
|
|
372
|
+
updatedGroups = moveToGroup(selectedItems[i], (_parentItem$parentId = parentItem === null || parentItem === void 0 ? void 0 : parentItem.parentId) !== null && _parentItem$parentId !== void 0 ? _parentItem$parentId : null, updatedGroups);
|
|
373
|
+
break;
|
|
374
|
+
} else if ((nextItem === null || nextItem === void 0 ? void 0 : nextItem.children.length) > 0) {
|
|
375
|
+
// Moving into a group as 1st item
|
|
376
|
+
updatedGroups = moveToGroup(selectedItems[i], nextItem.id, updatedGroups);
|
|
377
|
+
break;
|
|
378
|
+
}
|
|
379
|
+
var _toIndex = clamp(Array.isArray(visibleIndex) ? visibleIndex[0] + 1 : visibleIndex + 1, firstMovableIndex, lastMovableIndex);
|
|
380
|
+
newMoves = GridUtils.moveItemOrRange(visibleIndex, _toIndex, newMoves, false);
|
|
381
|
+
var _size3 = Array.isArray(visibleIndex) ? visibleIndex[1] - visibleIndex[0] + 1 : 1;
|
|
382
|
+
lastMovableIndex -= _size3;
|
|
383
|
+
break;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
};
|
|
387
|
+
for (var i = 0; i < selectedItems.length; i += 1) {
|
|
388
|
+
_loop();
|
|
389
|
+
}
|
|
390
|
+
return {
|
|
391
|
+
newMoves,
|
|
392
|
+
groups: updatedGroups
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* Moves the selected columns according to the option.
|
|
398
|
+
* Commits changes to state and scrolls the list if moving to top or bottom.
|
|
399
|
+
*
|
|
400
|
+
* @param option The move operation
|
|
401
|
+
*/
|
|
402
|
+
handleMoveColumns(option) {
|
|
403
|
+
var {
|
|
404
|
+
onMovedColumnsChanged,
|
|
405
|
+
movedColumns,
|
|
406
|
+
onColumnHeaderGroupChanged
|
|
407
|
+
} = this.props;
|
|
408
|
+
var {
|
|
409
|
+
newMoves,
|
|
410
|
+
groups
|
|
411
|
+
} = this.moveSelectedColumns(option);
|
|
412
|
+
var scrollListAfterMove;
|
|
413
|
+
if (option === VisibilityOrderingBuilder.MOVE_OPTIONS.TOP) {
|
|
414
|
+
scrollListAfterMove = () => {
|
|
415
|
+
var _this$list2, _this$list2$parentEle;
|
|
416
|
+
(_this$list2 = this.list) === null || _this$list2 === void 0 ? void 0 : (_this$list2$parentEle = _this$list2.parentElement) === null || _this$list2$parentEle === void 0 ? void 0 : _this$list2$parentEle.scroll({
|
|
417
|
+
top: 0
|
|
418
|
+
});
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
if (option === VisibilityOrderingBuilder.MOVE_OPTIONS.BOTTOM) {
|
|
422
|
+
scrollListAfterMove = () => {
|
|
423
|
+
var _this$list3, _this$list3$parentEle;
|
|
424
|
+
(_this$list3 = this.list) === null || _this$list3 === void 0 ? void 0 : (_this$list3$parentEle = _this$list3.parentElement) === null || _this$list3$parentEle === void 0 ? void 0 : _this$list3$parentEle.scroll({
|
|
425
|
+
top: this.list.parentElement.scrollHeight
|
|
426
|
+
});
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
onColumnHeaderGroupChanged(groups);
|
|
430
|
+
if (newMoves.length > 0) {
|
|
431
|
+
onMovedColumnsChanged(movedColumns.concat(newMoves), scrollListAfterMove);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
/**
|
|
436
|
+
* Get the move operations required to recursively sort the grid
|
|
437
|
+
* Column header groups are sorted using their name
|
|
438
|
+
* Children of column header groups are then sorted within each group
|
|
439
|
+
*
|
|
440
|
+
* @param items The tree items to sort
|
|
441
|
+
* @param option Direction of the sort
|
|
442
|
+
* @param movedColumns The existing moved columns for the sort
|
|
443
|
+
* Grids may use an initial move list from the model (e.g. column header groups)
|
|
444
|
+
* Also used to recursively sort header groups
|
|
445
|
+
* @returns The moves required to sort the grid. Includes the starting movedColumns in the array
|
|
446
|
+
*/
|
|
447
|
+
getSortMoves(itemsParam, option, movedColumns) {
|
|
448
|
+
var items = [...itemsParam];
|
|
449
|
+
// Sort all the movable columns
|
|
450
|
+
var isAscending = option === VisibilityOrderingBuilder.SORTING_OPTIONS.ASC;
|
|
451
|
+
items.sort((a, b) => {
|
|
452
|
+
var aName = a.id.toUpperCase();
|
|
453
|
+
var bName = b.id.toUpperCase();
|
|
454
|
+
return TextUtils.sort(aName, bName, isAscending);
|
|
455
|
+
});
|
|
456
|
+
var newMoves = [...movedColumns]; // Start with the base state moves by the model
|
|
457
|
+
var moveToIndex = Math.min(...items.flatMap(item => {
|
|
458
|
+
var {
|
|
459
|
+
modelIndex
|
|
460
|
+
} = item.data;
|
|
461
|
+
return Array.isArray(modelIndex) ? GridUtils.getVisibleIndexes(modelIndex, newMoves) : GridUtils.getVisibleIndex(modelIndex, newMoves);
|
|
462
|
+
}));
|
|
463
|
+
for (var i = 0; i < items.length; i += 1) {
|
|
464
|
+
var item = items[i];
|
|
465
|
+
var {
|
|
466
|
+
modelIndex
|
|
467
|
+
} = item.data;
|
|
468
|
+
var visibleIndex = Array.isArray(modelIndex) ? GridUtils.getVisibleIndexes(modelIndex, newMoves) : GridUtils.getVisibleIndex(modelIndex, newMoves);
|
|
469
|
+
newMoves = Array.isArray(visibleIndex) ? GridUtils.moveRange([Math.min(...visibleIndex), Math.max(...visibleIndex)], moveToIndex, newMoves, true) : GridUtils.moveItem(visibleIndex, moveToIndex, newMoves);
|
|
470
|
+
if (Array.isArray(visibleIndex)) {
|
|
471
|
+
// Recursively sort groups
|
|
472
|
+
newMoves = this.getSortMoves(item.children, option, newMoves);
|
|
473
|
+
}
|
|
474
|
+
moveToIndex += Array.isArray(modelIndex) ? modelIndex.length : 1;
|
|
475
|
+
}
|
|
476
|
+
return newMoves;
|
|
477
|
+
}
|
|
478
|
+
handleSortColumns(option) {
|
|
479
|
+
var {
|
|
480
|
+
model,
|
|
481
|
+
onMovedColumnsChanged
|
|
482
|
+
} = this.props;
|
|
483
|
+
var newMoves = this.getSortMoves(this.getTreeItems(), option, model.initialMovedColumns);
|
|
484
|
+
onMovedColumnsChanged(newMoves);
|
|
485
|
+
}
|
|
486
|
+
handleItemClick(name, event) {
|
|
487
|
+
event.stopPropagation();
|
|
488
|
+
|
|
489
|
+
// Click was triggered by an interactive element. Ignore select
|
|
490
|
+
if (event.target instanceof HTMLElement && (event.target.tagName === 'BUTTON' || event.target.tagName === 'INPUT')) {
|
|
491
|
+
return;
|
|
492
|
+
}
|
|
493
|
+
event.currentTarget.focus();
|
|
494
|
+
var {
|
|
495
|
+
selectedColumns,
|
|
496
|
+
lastSelectedColumn
|
|
497
|
+
} = this.state;
|
|
498
|
+
var isModifierKeyDown = GridUtils.isModifierKeyDown(event);
|
|
499
|
+
var isShiftKeyDown = event.shiftKey;
|
|
500
|
+
var isSelected = selectedColumns.has(name);
|
|
501
|
+
var columnsToBeAdded = [name];
|
|
502
|
+
if (isSelected && isModifierKeyDown) {
|
|
503
|
+
this.removeColumnFromSelected(name);
|
|
504
|
+
return;
|
|
505
|
+
}
|
|
506
|
+
var movableItems = flattenTree(this.getTreeItems());
|
|
507
|
+
if (isSelected && !isShiftKeyDown && lastSelectedColumn === name) {
|
|
508
|
+
var selectedItem = movableItems.find(_ref9 => {
|
|
509
|
+
var {
|
|
510
|
+
id
|
|
511
|
+
} = _ref9;
|
|
512
|
+
return id === name;
|
|
513
|
+
});
|
|
514
|
+
assertNotNull(selectedItem);
|
|
515
|
+
var childCount = flattenTree(selectedItem.children).length;
|
|
516
|
+
// If clicking on an item and it's the only thing selected, deselect it
|
|
517
|
+
if (childCount + 1 === selectedColumns.size) {
|
|
518
|
+
this.resetSelection();
|
|
519
|
+
return;
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
if (isShiftKeyDown) {
|
|
523
|
+
var selectedIndex = movableItems.findIndex(item => item.id === name);
|
|
524
|
+
var lastSelectedIndex = movableItems.findIndex(item => item.id === lastSelectedColumn);
|
|
525
|
+
columnsToBeAdded.push(...movableItems.slice(Math.min(lastSelectedIndex, selectedIndex), Math.max(lastSelectedIndex, selectedIndex) + 1).map(item => item.id));
|
|
526
|
+
}
|
|
527
|
+
this.addColumnToSelected(columnsToBeAdded, isModifierKeyDown || isShiftKeyDown);
|
|
528
|
+
this.setState({
|
|
529
|
+
lastSelectedColumn: name
|
|
530
|
+
});
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
/**
|
|
534
|
+
* Adds columns or groups to the selected column set
|
|
535
|
+
* Groups being added will add all of their children to the selection as well
|
|
536
|
+
*
|
|
537
|
+
* @param columnsToBeAdded Array of column or group names to add
|
|
538
|
+
* @param addToExisting If these should be added to the existing selection or overwrite it
|
|
539
|
+
*/
|
|
540
|
+
addColumnToSelected(columnsToBeAdded, addToExisting) {
|
|
541
|
+
var {
|
|
542
|
+
selectedColumns
|
|
543
|
+
} = this.state;
|
|
544
|
+
var newSelectedColumns = new Set(addToExisting ? [...selectedColumns.values()].concat(columnsToBeAdded) : columnsToBeAdded);
|
|
545
|
+
var flattenedItems = flattenTree(this.getTreeItems());
|
|
546
|
+
|
|
547
|
+
// Add all children of selected groups to the selected columns
|
|
548
|
+
// The treeItems array will always be parent -> child in the order
|
|
549
|
+
// We don't need to recursively iterate because of this
|
|
550
|
+
// The parent will always be added before any children for nested selections
|
|
551
|
+
flattenedItems.forEach(_ref10 => {
|
|
552
|
+
var {
|
|
553
|
+
id,
|
|
554
|
+
children
|
|
555
|
+
} = _ref10;
|
|
556
|
+
if (newSelectedColumns.has(id)) {
|
|
557
|
+
children.forEach(child => newSelectedColumns.add(child.id));
|
|
558
|
+
}
|
|
559
|
+
});
|
|
560
|
+
this.setState({
|
|
561
|
+
selectedColumns: newSelectedColumns
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
/**
|
|
566
|
+
* Removes a column or group from selected columns set.
|
|
567
|
+
*
|
|
568
|
+
* Removing a group will deselect all of its children.
|
|
569
|
+
*
|
|
570
|
+
* Removing a child will deselect all parent groups.
|
|
571
|
+
* Other children in those parents will stay selected, just not the group item.
|
|
572
|
+
*
|
|
573
|
+
* @param name Name of the column to remove
|
|
574
|
+
*/
|
|
575
|
+
removeColumnFromSelected(name) {
|
|
576
|
+
var {
|
|
577
|
+
selectedColumns
|
|
578
|
+
} = this.state;
|
|
579
|
+
var flattenedItems = flattenTree(this.getTreeItems());
|
|
580
|
+
var item = flattenedItems.find(_ref11 => {
|
|
581
|
+
var {
|
|
582
|
+
id
|
|
583
|
+
} = _ref11;
|
|
584
|
+
return id === name;
|
|
585
|
+
});
|
|
586
|
+
assertNotNull(item);
|
|
587
|
+
var parentItem = flattenedItems.find(_ref12 => {
|
|
588
|
+
var {
|
|
589
|
+
id
|
|
590
|
+
} = _ref12;
|
|
591
|
+
return id === item.parentId;
|
|
592
|
+
});
|
|
593
|
+
|
|
594
|
+
// Remove all children of deselected groups
|
|
595
|
+
flattenTree(item === null || item === void 0 ? void 0 : item.children).forEach(child => selectedColumns.delete(child.id));
|
|
596
|
+
|
|
597
|
+
// Remove all parents of the removed group since it is no longer fully selected
|
|
598
|
+
var _loop2 = function _loop2() {
|
|
599
|
+
selectedColumns.delete(parentItem.id);
|
|
600
|
+
var newParentId = parentItem.parentId;
|
|
601
|
+
parentItem = flattenedItems.find(_ref13 => {
|
|
602
|
+
var {
|
|
603
|
+
id
|
|
604
|
+
} = _ref13;
|
|
605
|
+
return id === newParentId;
|
|
606
|
+
});
|
|
607
|
+
};
|
|
608
|
+
while (parentItem != null) {
|
|
609
|
+
_loop2();
|
|
610
|
+
}
|
|
611
|
+
selectedColumns.delete(name);
|
|
612
|
+
this.setState({
|
|
613
|
+
selectedColumns: new Set(selectedColumns)
|
|
614
|
+
});
|
|
615
|
+
}
|
|
616
|
+
handleDragStart(id) {
|
|
617
|
+
var {
|
|
618
|
+
selectedColumns
|
|
619
|
+
} = this.state;
|
|
620
|
+
if (!selectedColumns.has(id)) {
|
|
621
|
+
this.addColumnToSelected([id], false);
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
handleDragEnd(from, to) {
|
|
625
|
+
var {
|
|
626
|
+
movedColumns,
|
|
627
|
+
onMovedColumnsChanged,
|
|
628
|
+
columnHeaderGroups,
|
|
629
|
+
onColumnHeaderGroupChanged
|
|
630
|
+
} = this.props;
|
|
631
|
+
var selectedParentItems = this.getSelectedParentItems();
|
|
632
|
+
var flattenedItems = flattenTree(this.getTreeItems()).map((item, i) => _objectSpread(_objectSpread({}, item), {}, {
|
|
633
|
+
index: i
|
|
634
|
+
}));
|
|
635
|
+
var firstMovableIndex = this.getFirstMovableIndex();
|
|
636
|
+
var lastMovableIndex = this.getLastMovableIndex();
|
|
637
|
+
assertNotNull(firstMovableIndex);
|
|
638
|
+
assertNotNull(lastMovableIndex);
|
|
639
|
+
var {
|
|
640
|
+
groups: newGroups,
|
|
641
|
+
movedColumns: newMoves
|
|
642
|
+
} = moveItemsFromDrop(from, to, movedColumns, columnHeaderGroups, flattenedItems, selectedParentItems, firstMovableIndex, lastMovableIndex);
|
|
643
|
+
onColumnHeaderGroupChanged(newGroups);
|
|
644
|
+
onMovedColumnsChanged(newMoves);
|
|
645
|
+
}
|
|
646
|
+
handleGroupNameChange(group, newName) {
|
|
647
|
+
var {
|
|
648
|
+
columnHeaderGroups,
|
|
649
|
+
onColumnHeaderGroupChanged
|
|
650
|
+
} = this.props;
|
|
651
|
+
var newGroups = [...columnHeaderGroups];
|
|
652
|
+
var oldName = group.name;
|
|
653
|
+
var groupIndex = newGroups.findIndex(_ref14 => {
|
|
654
|
+
var {
|
|
655
|
+
name
|
|
656
|
+
} = _ref14;
|
|
657
|
+
return name === oldName;
|
|
658
|
+
});
|
|
659
|
+
var oldGroup = newGroups[groupIndex];
|
|
660
|
+
assertNotNull(oldGroup); // Also means groupIndex >= 0
|
|
661
|
+
|
|
662
|
+
var newGroup = new ColumnHeaderGroup(oldGroup);
|
|
663
|
+
newGroup.name = newName;
|
|
664
|
+
newGroups.splice(groupIndex, 1, newGroup);
|
|
665
|
+
var parentIndex = newGroups.findIndex(_ref15 => {
|
|
666
|
+
var {
|
|
667
|
+
name
|
|
668
|
+
} = _ref15;
|
|
669
|
+
return name === newGroup.parent;
|
|
670
|
+
});
|
|
671
|
+
if (parentIndex >= 0) {
|
|
672
|
+
var newParent = new ColumnHeaderGroup(newGroups[parentIndex]);
|
|
673
|
+
newParent.removeChildren([oldName]);
|
|
674
|
+
newParent.addChildren([newName]);
|
|
675
|
+
newGroups.splice(parentIndex, 1, newParent);
|
|
676
|
+
}
|
|
677
|
+
onColumnHeaderGroupChanged(newGroups);
|
|
678
|
+
}
|
|
679
|
+
handleGroupDelete(group) {
|
|
680
|
+
var {
|
|
681
|
+
columnHeaderGroups,
|
|
682
|
+
onColumnHeaderGroupChanged
|
|
683
|
+
} = this.props;
|
|
684
|
+
var newGroups = columnHeaderGroups.filter(g => g.name !== group.name);
|
|
685
|
+
var parentIndex = newGroups.findIndex(g => g.name === group.parent);
|
|
686
|
+
if (parentIndex >= 0) {
|
|
687
|
+
var newParent = new ColumnHeaderGroup(newGroups[parentIndex]);
|
|
688
|
+
newParent.addChildren(group.children);
|
|
689
|
+
newParent.removeChildren([group.name]);
|
|
690
|
+
newGroups.splice(parentIndex, 1, newParent);
|
|
691
|
+
}
|
|
692
|
+
onColumnHeaderGroupChanged(newGroups);
|
|
693
|
+
}
|
|
694
|
+
handleGroupCreate() {
|
|
695
|
+
var {
|
|
696
|
+
movedColumns,
|
|
697
|
+
onMovedColumnsChanged,
|
|
698
|
+
onColumnHeaderGroupChanged
|
|
699
|
+
} = this.props;
|
|
700
|
+
var {
|
|
701
|
+
newMoves,
|
|
702
|
+
groups
|
|
703
|
+
} = this.moveSelectedColumns(VisibilityOrderingBuilder.MOVE_OPTIONS.TOP);
|
|
704
|
+
var newGroups = groups.filter(group => !group.isNew);
|
|
705
|
+
var selectedItems = this.getSelectedParentItems();
|
|
706
|
+
var childIndexes = selectedItems.map(item => item.data.modelIndex).flat().filter(index => index >= 0);
|
|
707
|
+
|
|
708
|
+
// We don't care about this name really as long as it's unique
|
|
709
|
+
// The user must change it and we display a placeholder instead
|
|
710
|
+
var name = "".concat(ColumnHeaderGroup.NEW_GROUP_PREFIX, "-").concat(Date.now());
|
|
711
|
+
var newGroup = new ColumnHeaderGroup({
|
|
712
|
+
name,
|
|
713
|
+
children: selectedItems.map(_ref16 => {
|
|
714
|
+
var {
|
|
715
|
+
id
|
|
716
|
+
} = _ref16;
|
|
717
|
+
return id;
|
|
718
|
+
}),
|
|
719
|
+
depth: 0,
|
|
720
|
+
childIndexes: [...new Set(childIndexes)] // Remove any duplicates
|
|
721
|
+
});
|
|
722
|
+
|
|
723
|
+
onMovedColumnsChanged(movedColumns.concat(newMoves), () => {
|
|
724
|
+
var _this$list4, _this$list4$parentEle;
|
|
725
|
+
(_this$list4 = this.list) === null || _this$list4 === void 0 ? void 0 : (_this$list4$parentEle = _this$list4.parentElement) === null || _this$list4$parentEle === void 0 ? void 0 : _this$list4$parentEle.scroll({
|
|
726
|
+
top: 0
|
|
727
|
+
});
|
|
728
|
+
});
|
|
729
|
+
onColumnHeaderGroupChanged(newGroups.concat([newGroup]));
|
|
730
|
+
this.resetSelection();
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
/**
|
|
734
|
+
* Validates if a header group name is valid and not in use by any header groups or columns
|
|
735
|
+
* @param groupName The name to validate
|
|
736
|
+
* @returns Error message if invalid
|
|
737
|
+
*/
|
|
738
|
+
validateGroupName(groupName) {
|
|
739
|
+
var {
|
|
740
|
+
model,
|
|
741
|
+
columnHeaderGroups
|
|
742
|
+
} = this.props;
|
|
743
|
+
var {
|
|
744
|
+
columns
|
|
745
|
+
} = model;
|
|
746
|
+
if (!DbNameValidator.isValidColumnName(groupName)) {
|
|
747
|
+
return 'Invalid name';
|
|
748
|
+
}
|
|
749
|
+
if (columns.some(_ref17 => {
|
|
750
|
+
var {
|
|
751
|
+
name
|
|
752
|
+
} = _ref17;
|
|
753
|
+
return name === groupName;
|
|
754
|
+
}) || columnHeaderGroups.some(_ref18 => {
|
|
755
|
+
var {
|
|
756
|
+
name
|
|
757
|
+
} = _ref18;
|
|
758
|
+
return name === groupName;
|
|
759
|
+
})) {
|
|
760
|
+
return 'Duplicate name';
|
|
761
|
+
}
|
|
762
|
+
return '';
|
|
763
|
+
}
|
|
764
|
+
/**
|
|
765
|
+
* Gets the first movable visible index
|
|
766
|
+
*/
|
|
767
|
+
getFirstMovableIndex() {
|
|
768
|
+
var {
|
|
769
|
+
model,
|
|
770
|
+
movedColumns
|
|
771
|
+
} = this.props;
|
|
772
|
+
return this.getMemoizedFirstMovableIndex(model, model.columns, movedColumns);
|
|
773
|
+
}
|
|
774
|
+
/**
|
|
775
|
+
* Gets the last movable visible index
|
|
776
|
+
*/
|
|
777
|
+
getLastMovableIndex() {
|
|
778
|
+
var {
|
|
779
|
+
model,
|
|
780
|
+
movedColumns
|
|
781
|
+
} = this.props;
|
|
782
|
+
return this.getMemoizedLastMovableIndex(model, model.columns, movedColumns);
|
|
783
|
+
}
|
|
784
|
+
/**
|
|
785
|
+
* Gets the tree of movable items in order. Memoized for efficiency
|
|
786
|
+
* Use flattenItems(this.getTreeItems()) if a flat list is needed
|
|
787
|
+
* @returns The movable tree items in order
|
|
788
|
+
*/
|
|
789
|
+
getTreeItems() {
|
|
790
|
+
var {
|
|
791
|
+
model,
|
|
792
|
+
movedColumns,
|
|
793
|
+
hiddenColumns,
|
|
794
|
+
columnHeaderGroups
|
|
795
|
+
} = this.props;
|
|
796
|
+
var {
|
|
797
|
+
selectedColumns
|
|
798
|
+
} = this.state;
|
|
799
|
+
return this.memoizedGetTreeItems(model.columns, movedColumns, columnHeaderGroups, hiddenColumns, selectedColumns);
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
/**
|
|
803
|
+
* Gets the selected items that are movable.
|
|
804
|
+
* This is any item whose parent is not also selected.
|
|
805
|
+
*
|
|
806
|
+
* @returns The array of items whose parents are not selected
|
|
807
|
+
*/
|
|
808
|
+
getSelectedParentItems() {
|
|
809
|
+
var {
|
|
810
|
+
selectedColumns
|
|
811
|
+
} = this.state;
|
|
812
|
+
var treeItems = flattenTree(this.getTreeItems());
|
|
813
|
+
return treeItems.filter(_ref19 => {
|
|
814
|
+
var {
|
|
815
|
+
id,
|
|
816
|
+
parentId
|
|
817
|
+
} = _ref19;
|
|
818
|
+
return (
|
|
819
|
+
// All items whose parents are not selected
|
|
820
|
+
selectedColumns.has(id) && !selectedColumns.has(parentId !== null && parentId !== void 0 ? parentId : '')
|
|
821
|
+
);
|
|
822
|
+
});
|
|
823
|
+
}
|
|
824
|
+
render() {
|
|
825
|
+
var {
|
|
826
|
+
model,
|
|
827
|
+
hiddenColumns,
|
|
828
|
+
onColumnVisibilityChanged
|
|
829
|
+
} = this.props;
|
|
830
|
+
var {
|
|
831
|
+
selectedColumns,
|
|
832
|
+
searchFilter
|
|
833
|
+
} = this.state;
|
|
834
|
+
var hasSelection = selectedColumns.size > 0;
|
|
835
|
+
var treeItems = this.getTreeItems();
|
|
836
|
+
var nameToIndexes = new Map(flattenTree(treeItems).map(item => [item.id, item.data.modelIndex]));
|
|
837
|
+
var hiddenColumnsSet = new Set(hiddenColumns);
|
|
838
|
+
var columnsToToggle = [
|
|
839
|
+
// Pass through Set to dedupe model indexes
|
|
840
|
+
...new Set(hasSelection ? [...selectedColumns.values()].map(name => nameToIndexes.get(name)).filter(i => i != null).flat() : treeItems.map(item => item.data.modelIndex).flat())];
|
|
841
|
+
var areSomeVisible = columnsToToggle.some(column => !hiddenColumnsSet.has(column));
|
|
842
|
+
var allToggleText = areSomeVisible ? 'Hide All' : 'Show All';
|
|
843
|
+
var selectedToggleText = areSomeVisible ? 'Hide Selected' : 'Show Selected';
|
|
844
|
+
var visibilityOrderingList = this.makeVisibilityOrderingList(model.columns, treeItems);
|
|
845
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
846
|
+
role: "menu",
|
|
847
|
+
className: "visibility-ordering-builder",
|
|
848
|
+
tabIndex: 0
|
|
849
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
850
|
+
className: "top-menu"
|
|
851
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
852
|
+
kind: "ghost",
|
|
853
|
+
className: "toggle-visibility-btn",
|
|
854
|
+
onClick: () => {
|
|
855
|
+
onColumnVisibilityChanged(columnsToToggle, !areSomeVisible);
|
|
856
|
+
},
|
|
857
|
+
icon: areSomeVisible ? dhEye : dhEyeSlash,
|
|
858
|
+
tooltip: "Toggle column visibility"
|
|
859
|
+
}, !hasSelection ? allToggleText : selectedToggleText), /*#__PURE__*/React.createElement(SearchInput, {
|
|
860
|
+
className: "visibility-search",
|
|
861
|
+
value: searchFilter,
|
|
862
|
+
matchCount: searchFilter ? selectedColumns.size : undefined,
|
|
863
|
+
onChange: this.handleSearchInputChange
|
|
864
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
865
|
+
className: "top-menu"
|
|
866
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
867
|
+
kind: "ghost",
|
|
868
|
+
icon: vsRefresh,
|
|
869
|
+
tooltip: "Reset to default",
|
|
870
|
+
onClick: () => {
|
|
871
|
+
this.resetVisibilityOrdering();
|
|
872
|
+
}
|
|
873
|
+
}, "Reset"), /*#__PURE__*/React.createElement("span", {
|
|
874
|
+
className: "vertical-divider"
|
|
875
|
+
}), /*#__PURE__*/React.createElement(Button, {
|
|
876
|
+
kind: "ghost",
|
|
877
|
+
icon: dhSortAlphaDown,
|
|
878
|
+
tooltip: "Sort ascending",
|
|
879
|
+
onClick: () => {
|
|
880
|
+
this.handleSortColumns(VisibilityOrderingBuilder.SORTING_OPTIONS.ASC);
|
|
881
|
+
}
|
|
882
|
+
}), /*#__PURE__*/React.createElement(Button, {
|
|
883
|
+
kind: "ghost",
|
|
884
|
+
icon: dhSortAlphaUp,
|
|
885
|
+
tooltip: "Sort descending",
|
|
886
|
+
onClick: () => {
|
|
887
|
+
this.handleSortColumns(VisibilityOrderingBuilder.SORTING_OPTIONS.DSC);
|
|
888
|
+
}
|
|
889
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
890
|
+
className: "vertical-divider"
|
|
891
|
+
}), /*#__PURE__*/React.createElement(Button, {
|
|
892
|
+
kind: "ghost",
|
|
893
|
+
tooltip: "Create group from selection",
|
|
894
|
+
disabled: !hasSelection,
|
|
895
|
+
onClick: this.handleGroupCreate
|
|
896
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
897
|
+
className: "fa-layers",
|
|
898
|
+
style: {
|
|
899
|
+
marginRight: '0.75rem'
|
|
900
|
+
}
|
|
901
|
+
}, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
902
|
+
mask: vsSymbolStructure,
|
|
903
|
+
icon: vsCircleLargeFilled,
|
|
904
|
+
transform: "right-7 down-5 shrink-6"
|
|
905
|
+
}), /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
906
|
+
icon: vsAdd,
|
|
907
|
+
transform: "right-8 down-6 shrink-8"
|
|
908
|
+
})), "Group"), /*#__PURE__*/React.createElement("span", {
|
|
909
|
+
className: "vertical-divider"
|
|
910
|
+
}), /*#__PURE__*/React.createElement(Button, {
|
|
911
|
+
kind: "ghost",
|
|
912
|
+
icon: vsChevronUp,
|
|
913
|
+
tooltip: "Move selection up",
|
|
914
|
+
onClick: () => {
|
|
915
|
+
this.handleMoveColumns(VisibilityOrderingBuilder.MOVE_OPTIONS.UP);
|
|
916
|
+
},
|
|
917
|
+
disabled: !hasSelection
|
|
918
|
+
}), /*#__PURE__*/React.createElement(Button, {
|
|
919
|
+
kind: "ghost",
|
|
920
|
+
icon: vsChevronDown,
|
|
921
|
+
tooltip: "Move selection down",
|
|
922
|
+
onClick: () => {
|
|
923
|
+
this.handleMoveColumns(VisibilityOrderingBuilder.MOVE_OPTIONS.DOWN);
|
|
924
|
+
},
|
|
925
|
+
disabled: !hasSelection
|
|
926
|
+
}), /*#__PURE__*/React.createElement(Button, {
|
|
927
|
+
kind: "ghost",
|
|
928
|
+
icon: dhArrowToTop,
|
|
929
|
+
tooltip: "Move selection to top",
|
|
930
|
+
onClick: () => {
|
|
931
|
+
this.handleMoveColumns(VisibilityOrderingBuilder.MOVE_OPTIONS.TOP);
|
|
932
|
+
},
|
|
933
|
+
disabled: !hasSelection
|
|
934
|
+
}), /*#__PURE__*/React.createElement(Button, {
|
|
935
|
+
kind: "ghost",
|
|
936
|
+
icon: dhArrowToBottom,
|
|
937
|
+
tooltip: "Move selection to bottom",
|
|
938
|
+
onClick: () => {
|
|
939
|
+
this.handleMoveColumns(VisibilityOrderingBuilder.MOVE_OPTIONS.BOTTOM);
|
|
940
|
+
},
|
|
941
|
+
disabled: !hasSelection
|
|
942
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
943
|
+
role: "menu",
|
|
944
|
+
className: classNames('visibility-ordering-list')
|
|
945
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
946
|
+
className: "column-list",
|
|
947
|
+
ref: list => {
|
|
948
|
+
this.list = list;
|
|
949
|
+
}
|
|
950
|
+
}, visibilityOrderingList)));
|
|
951
|
+
}
|
|
952
|
+
}
|
|
953
|
+
_defineProperty(VisibilityOrderingBuilder, "SORTING_OPTIONS", {
|
|
954
|
+
DSC: 'DSC',
|
|
955
|
+
ASC: 'ASC'
|
|
956
|
+
});
|
|
957
|
+
_defineProperty(VisibilityOrderingBuilder, "MOVE_OPTIONS", {
|
|
958
|
+
TOP: 'TOP',
|
|
959
|
+
BOTTOM: 'BOTTOM',
|
|
960
|
+
UP: 'UP',
|
|
961
|
+
DOWN: 'DOWN'
|
|
962
|
+
});
|
|
963
|
+
export default VisibilityOrderingBuilder;
|
|
964
|
+
//# sourceMappingURL=VisibilityOrderingBuilder.js.map
|