@deephaven/iris-grid 0.24.1-beta.3 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/ColumnHeaderGroup.d.ts +10 -3
  2. package/dist/ColumnHeaderGroup.d.ts.map +1 -1
  3. package/dist/ColumnHeaderGroup.js +20 -1
  4. package/dist/ColumnHeaderGroup.js.map +1 -1
  5. package/dist/IrisGrid.css.map +1 -1
  6. package/dist/IrisGrid.d.ts +6 -3
  7. package/dist/IrisGrid.d.ts.map +1 -1
  8. package/dist/IrisGrid.js +42 -25
  9. package/dist/IrisGrid.js.map +1 -1
  10. package/dist/IrisGridModel.d.ts +9 -2
  11. package/dist/IrisGridModel.d.ts.map +1 -1
  12. package/dist/IrisGridModel.js +0 -13
  13. package/dist/IrisGridModel.js.map +1 -1
  14. package/dist/IrisGridModelUpdater.d.ts +3 -1
  15. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  16. package/dist/IrisGridModelUpdater.js +5 -1
  17. package/dist/IrisGridModelUpdater.js.map +1 -1
  18. package/dist/IrisGridProxyModel.d.ts +7 -2
  19. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  20. package/dist/IrisGridProxyModel.js +16 -4
  21. package/dist/IrisGridProxyModel.js.map +1 -1
  22. package/dist/IrisGridTableModel.d.ts +1 -1
  23. package/dist/IrisGridTableModel.d.ts.map +1 -1
  24. package/dist/IrisGridTableModel.js.map +1 -1
  25. package/dist/IrisGridTableModelTemplate.d.ts +18 -9
  26. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  27. package/dist/IrisGridTableModelTemplate.js +143 -165
  28. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  29. package/dist/IrisGridTestUtils.d.ts +8 -2
  30. package/dist/IrisGridTestUtils.d.ts.map +1 -1
  31. package/dist/IrisGridTestUtils.js +9 -4
  32. package/dist/IrisGridTestUtils.js.map +1 -1
  33. package/dist/IrisGridTheme.module.css.map +1 -1
  34. package/dist/IrisGridUtils.d.ts +16 -2
  35. package/dist/IrisGridUtils.d.ts.map +1 -1
  36. package/dist/IrisGridUtils.js +151 -48
  37. package/dist/IrisGridUtils.js.map +1 -1
  38. package/dist/index.d.ts +1 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/sidebar/index.d.ts +1 -1
  43. package/dist/sidebar/index.d.ts.map +1 -1
  44. package/dist/sidebar/index.js +1 -1
  45. package/dist/sidebar/index.js.map +1 -1
  46. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css +68 -0
  47. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css.map +1 -0
  48. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +156 -0
  49. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -0
  50. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +962 -0
  51. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -0
  52. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts +26 -0
  53. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts.map +1 -0
  54. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +130 -0
  55. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -0
  56. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css +29 -0
  57. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css.map +1 -0
  58. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.d.ts +13 -0
  59. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.d.ts.map +1 -0
  60. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +160 -0
  61. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -0
  62. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts +19 -0
  63. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -0
  64. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +81 -0
  65. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -0
  66. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.d.ts +13 -0
  67. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.d.ts.map +1 -0
  68. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +28 -0
  69. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -0
  70. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts +18 -0
  71. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts.map +1 -0
  72. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +156 -0
  73. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -0
  74. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.d.ts +19 -0
  75. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.d.ts.map +1 -0
  76. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +144 -0
  77. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -0
  78. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.d.ts +7 -0
  79. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.d.ts.map +1 -0
  80. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +57 -0
  81. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -0
  82. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css +139 -0
  83. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css.map +1 -0
  84. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts +36 -0
  85. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts.map +1 -0
  86. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +44 -0
  87. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -0
  88. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.d.ts +4 -0
  89. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.d.ts.map +1 -0
  90. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +127 -0
  91. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -0
  92. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.d.ts +20 -0
  93. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.d.ts.map +1 -0
  94. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js +4 -0
  95. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -0
  96. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +55 -0
  97. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -0
  98. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +265 -0
  99. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -0
  100. package/package.json +20 -16
  101. package/dist/sidebar/VisibilityOrderingBuilder.css +0 -156
  102. package/dist/sidebar/VisibilityOrderingBuilder.css.map +0 -1
  103. package/dist/sidebar/VisibilityOrderingBuilder.d.ts +0 -79
  104. package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +0 -1
  105. package/dist/sidebar/VisibilityOrderingBuilder.js +0 -753
  106. package/dist/sidebar/VisibilityOrderingBuilder.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../../../../node_modules/@deephaven/components/scss/custom.scss","../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.scss","../../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss","../../../../../node_modules/@deephaven/components/scss/new_variables.scss"],"names":[],"mappings":"AAAA;ACEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA,kBCHY;EDIZ;EACA;;AAEA;EACE,cEjBK;EFkBL,eElBK;;AFsBT;EACE;EACA,cEvBO;;AF0BT;EACE;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA,kBC7BU;;ADiCd;EACE,cE3CO;;AF8CL;EACE,aE/CG;;AFkDL;EACE;EACA;EACA,OClCG;EDmCH;;AACA;EACE;;AAIJ;EACE;EACA;EACA;;AAKN;EACE;EACA,eEtEO;EFuEP,aEvEO;EFwEP;;AAGF;EACE,SE5EO","file":"VisibilityOrderingBuilder.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.visibility-ordering-builder {\n display: flex;\n flex-direction: column;\n height: 100%;\n max-height: 100%;\n outline: 0;\n\n .top-menu {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n background-color: $content-bg;\n padding: $spacer-1 $spacer-2;\n z-index: 2;\n\n .btn-link-icon {\n padding-left: $spacer-1;\n padding-right: $spacer-1;\n }\n }\n\n .toggle-visibility-btn {\n flex-shrink: 0;\n margin-right: $spacer-2;\n }\n\n .visibility-search {\n flex-grow: 1;\n flex-shrink: 1;\n }\n\n .visibility-ordering-list {\n overflow-y: auto;\n flex-grow: 1;\n\n hr {\n margin: $spacer-2 0;\n background-color: $content-bg;\n }\n }\n\n .visibility-ordering-list-item {\n padding-left: $spacer-1; // space for focus border\n\n &.immovable {\n &:first-child {\n padding-top: $spacer-1;\n }\n\n .column-item {\n user-select: none;\n border: $input-border-width solid transparent;\n color: $text-muted;\n padding-left: 32px;\n &:hover {\n background: transparent;\n }\n }\n\n .column-name {\n overflow-x: hidden;\n text-overflow: ellipsis;\n padding-right: 2px;\n }\n }\n }\n\n .vertical-divider {\n border-left: 1px solid $black;\n padding-right: $spacer-1;\n margin-left: $spacer-1;\n height: 1rem;\n }\n\n .tree-container {\n padding: $spacer-1;\n }\n}\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","//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"]}
@@ -0,0 +1,156 @@
1
+ import React, { ChangeEvent, Component, ReactElement } from 'react';
2
+ import { ModelSizeMap, MoveOperation, VisibleIndex } from '@deephaven/grid';
3
+ import type { Column } from '@deephaven/jsapi-shim';
4
+ import memoize from 'memoizee';
5
+ import './VisibilityOrderingBuilder.scss';
6
+ import IrisGridModel from '../../IrisGridModel';
7
+ import { ColumnName } from '../../CommonTypes';
8
+ import ColumnHeaderGroup from '../../ColumnHeaderGroup';
9
+ import { FlattenedIrisGridTreeItem, IrisGridTreeItem } from './sortable-tree/utilities';
10
+ import { TreeItemRenderFn } from './sortable-tree/TreeItem';
11
+ interface VisibilityOrderingBuilderProps {
12
+ model: IrisGridModel;
13
+ movedColumns: MoveOperation[];
14
+ userColumnWidths: ModelSizeMap;
15
+ columnHeaderGroups: ColumnHeaderGroup[];
16
+ onColumnVisibilityChanged: (columns: VisibleIndex[], isVisible: boolean) => void;
17
+ onMovedColumnsChanged: (operations: MoveOperation[], cb?: () => void) => void;
18
+ onColumnHeaderGroupChanged: (groups: ColumnHeaderGroup[]) => void;
19
+ }
20
+ interface VisibilityOrderingBuilderState {
21
+ selectedColumns: Set<string>;
22
+ lastSelectedColumn: string;
23
+ searchFilter: string;
24
+ }
25
+ declare class VisibilityOrderingBuilder extends Component<VisibilityOrderingBuilderProps, VisibilityOrderingBuilderState> {
26
+ static SORTING_OPTIONS: {
27
+ readonly DSC: "DSC";
28
+ readonly ASC: "ASC";
29
+ };
30
+ static MOVE_OPTIONS: {
31
+ readonly TOP: "TOP";
32
+ readonly BOTTOM: "BOTTOM";
33
+ readonly UP: "UP";
34
+ readonly DOWN: "DOWN";
35
+ };
36
+ constructor(props: VisibilityOrderingBuilderProps);
37
+ componentWillUnmount(): void;
38
+ list: HTMLDivElement | null;
39
+ debouncedSearchColumns: import("lodash").DebouncedFunc<(searchFilter: string) => void>;
40
+ resetVisibilityOrdering(): void;
41
+ resetSelection(): void;
42
+ handleSearchInputChange(event: ChangeEvent<HTMLInputElement>): void;
43
+ searchColumns(searchFilter: string): void;
44
+ /**
45
+ * Moves the currently selected columns in the direction specified.
46
+ * Does not commit any changes to any state, just gets the required modifications.
47
+ *
48
+ * Items that are part of a selected group should not be moved separate from the group.
49
+ *
50
+ * Items moved to top or bottom should be removed from any groups they are within,
51
+ * unless part of a group that is also selected. The highest level selected group will
52
+ * be moved to the root level of the tree.
53
+ *
54
+ * Items moved up or down should move into and out of groups when applicable.
55
+ * They should never move more than 1 depth level at a time.
56
+ *
57
+ * Multiple selected items should move to the top or bottom in their existing order,
58
+ * but become one block of continuous columns.
59
+ *
60
+ * Multiple selected items moving up or down should move independently,
61
+ * unless they are at the same depth and contiguous. In that case, they should
62
+ * move in and out of groups together. I.e. if the 2 items above a group are selected,
63
+ * and the move down button is pressed, then both items should be moved into the group.
64
+ *
65
+ * @param option The movement option
66
+ * @returns A new copy of the movedColumns including moves required to perform the operation.
67
+ *
68
+ */
69
+ moveSelectedColumns(option: keyof typeof VisibilityOrderingBuilder.MOVE_OPTIONS): {
70
+ newMoves: MoveOperation[];
71
+ groups: ColumnHeaderGroup[];
72
+ };
73
+ /**
74
+ * Moves the selected columns according to the option.
75
+ * Commits changes to state and scrolls the list if moving to top or bottom.
76
+ *
77
+ * @param option The move operation
78
+ */
79
+ handleMoveColumns(option: keyof typeof VisibilityOrderingBuilder.MOVE_OPTIONS): void;
80
+ /**
81
+ * Get the move operations required to recursively sort the grid
82
+ * Column header groups are sorted using their name
83
+ * Children of column header groups are then sorted within each group
84
+ *
85
+ * @param items The tree items to sort
86
+ * @param option Direction of the sort
87
+ * @param movedColumns The existing moved columns for the sort
88
+ * Grids may use an initial move list from the model (e.g. column header groups)
89
+ * Also used to recursively sort header groups
90
+ * @returns The moves required to sort the grid. Includes the starting movedColumns in the array
91
+ */
92
+ getSortMoves(itemsParam: IrisGridTreeItem[], option: keyof typeof VisibilityOrderingBuilder.SORTING_OPTIONS, movedColumns: MoveOperation[]): MoveOperation[];
93
+ handleSortColumns(option: keyof typeof VisibilityOrderingBuilder.SORTING_OPTIONS): void;
94
+ handleItemClick(name: string, event: React.MouseEvent<HTMLElement, MouseEvent>): void;
95
+ /**
96
+ * Adds columns or groups to the selected column set
97
+ * Groups being added will add all of their children to the selection as well
98
+ *
99
+ * @param columnsToBeAdded Array of column or group names to add
100
+ * @param addToExisting If these should be added to the existing selection or overwrite it
101
+ */
102
+ addColumnToSelected(columnsToBeAdded: string[], addToExisting: boolean): void;
103
+ /**
104
+ * Removes a column or group from selected columns set.
105
+ *
106
+ * Removing a group will deselect all of its children.
107
+ *
108
+ * Removing a child will deselect all parent groups.
109
+ * Other children in those parents will stay selected, just not the group item.
110
+ *
111
+ * @param name Name of the column to remove
112
+ */
113
+ removeColumnFromSelected(name: string): void;
114
+ handleDragStart(id: string): void;
115
+ handleDragEnd(from: FlattenedIrisGridTreeItem, to: FlattenedIrisGridTreeItem): void;
116
+ handleGroupNameChange(group: ColumnHeaderGroup, newName: string): void;
117
+ handleGroupColorChange: import("lodash").DebouncedFunc<(group: ColumnHeaderGroup, color: string | undefined) => void>;
118
+ handleGroupDelete(group: ColumnHeaderGroup): void;
119
+ handleGroupCreate(): void;
120
+ /**
121
+ * Validates if a header group name is valid and not in use by any header groups or columns
122
+ * @param groupName The name to validate
123
+ * @returns Error message if invalid
124
+ */
125
+ validateGroupName(groupName: string): string;
126
+ renderItem: TreeItemRenderFn<IrisGridTreeItem> & memoize.Memoized<TreeItemRenderFn<IrisGridTreeItem>>;
127
+ getMemoizedFirstMovableIndex: ((model: IrisGridModel, columns: Column[], movedColumns: MoveOperation[]) => number | null) & memoize.Memoized<(model: IrisGridModel, columns: Column[], movedColumns: MoveOperation[]) => number | null>;
128
+ /**
129
+ * Gets the first movable visible index
130
+ */
131
+ getFirstMovableIndex(): number | null;
132
+ getMemoizedLastMovableIndex: ((model: IrisGridModel, columns: Column[], movedColumns: MoveOperation[]) => number | null) & memoize.Memoized<(model: IrisGridModel, columns: Column[], movedColumns: MoveOperation[]) => number | null>;
133
+ /**
134
+ * Gets the last movable visible index
135
+ */
136
+ getLastMovableIndex(): number | null;
137
+ memoizedGetTreeItems: ((columns: Column[], movedColumns: MoveOperation[], columnHeaderGroups: ColumnHeaderGroup[], userColumnWidths: ModelSizeMap, selectedColumns: Set<string>) => IrisGridTreeItem[]) & memoize.Memoized<(columns: Column[], movedColumns: MoveOperation[], columnHeaderGroups: ColumnHeaderGroup[], userColumnWidths: ModelSizeMap, selectedColumns: Set<string>) => IrisGridTreeItem[]>;
138
+ /**
139
+ * Gets the tree of movable items in order. Memoized for efficiency
140
+ * Use flattenItems(this.getTreeItems()) if a flat list is needed
141
+ * @returns The movable tree items in order
142
+ */
143
+ getTreeItems(): IrisGridTreeItem[];
144
+ /**
145
+ * Gets the selected items that are movable.
146
+ * This is any item whose parent is not also selected.
147
+ *
148
+ * @returns The array of items whose parents are not selected
149
+ */
150
+ getSelectedParentItems(): FlattenedIrisGridTreeItem[];
151
+ makeVisibilityOrderingList: ((columns: Column[], treeItems: IrisGridTreeItem[]) => JSX.Element[]) & memoize.Memoized<(columns: Column[], treeItems: IrisGridTreeItem[]) => JSX.Element[]>;
152
+ renderImmovableItem: ((columnName: ColumnName) => ReactElement) & memoize.Memoized<(columnName: ColumnName) => ReactElement>;
153
+ render(): ReactElement;
154
+ }
155
+ export default VisibilityOrderingBuilder;
156
+ //# sourceMappingURL=VisibilityOrderingBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisibilityOrderingBuilder.d.ts","sourceRoot":"","sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.tsx"],"names":[],"mappings":"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"}