@deephaven/iris-grid 1.9.1-beta.0 → 1.9.1-beta.2

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 (54) hide show
  1. package/dist/sidebar/RollupRows.css +14 -1
  2. package/dist/sidebar/RollupRows.css.map +1 -1
  3. package/dist/sidebar/RollupRows.d.ts.map +1 -1
  4. package/dist/sidebar/RollupRows.js +4 -5
  5. package/dist/sidebar/RollupRows.js.map +1 -1
  6. package/dist/sidebar/visibility-ordering-builder/SearchItem.d.ts +2 -2
  7. package/dist/sidebar/visibility-ordering-builder/SearchItem.d.ts.map +1 -1
  8. package/dist/sidebar/visibility-ordering-builder/SearchItem.js +4 -4
  9. package/dist/sidebar/visibility-ordering-builder/SearchItem.js.map +1 -1
  10. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.css +7 -2
  11. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.css.map +1 -1
  12. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.d.ts +3 -3
  13. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.d.ts.map +1 -1
  14. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js +13 -11
  15. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js.map +1 -1
  16. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css +1 -3
  17. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css.map +1 -1
  18. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +20 -7
  19. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
  20. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +101 -76
  21. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  22. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts +1 -1
  23. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts.map +1 -1
  24. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +5 -23
  25. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  26. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -1
  27. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +7 -5
  28. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  29. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts +6 -3
  30. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts.map +1 -1
  31. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +69 -23
  32. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  33. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.d.ts +2 -2
  34. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.d.ts.map +1 -1
  35. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js +52 -47
  36. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js.map +1 -1
  37. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.d.ts +8 -1
  38. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.d.ts.map +1 -1
  39. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +12 -5
  40. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  41. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css +1 -0
  42. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css.map +1 -1
  43. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts +1 -2
  44. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts.map +1 -1
  45. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +9 -4
  46. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  47. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.d.ts +1 -1
  48. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.d.ts.map +1 -1
  49. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -1
  50. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +1 -1
  51. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
  52. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +46 -20
  53. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  54. package/package.json +17 -16
@@ -64,7 +64,7 @@
64
64
  }
65
65
  .rollup-rows .rollup-rows-group-by .draggable-item-list {
66
66
  flex-grow: 1;
67
- transition: height 0.15s;
67
+ min-height: calc(var(--group-list-height) + var(--placeholder-height, 0px));
68
68
  }
69
69
  .rollup-rows .rollup-rows-group-by .btn-delete-grouping {
70
70
  height: 26px;
@@ -76,6 +76,7 @@
76
76
  padding: 1rem;
77
77
  text-align: center;
78
78
  border: dashed 1px;
79
+ text-wrap: pretty;
79
80
  }
80
81
  .rollup-rows .rollup-rows-available-columns {
81
82
  display: flex;
@@ -96,6 +97,9 @@
96
97
  animation-timing-function: linear;
97
98
  animation-iteration-count: infinite;
98
99
  }
100
+ .rollup-rows.is-dragging .rollup-rows-group-by .placeholder.is-dragging-over {
101
+ background-color: var(--dh-color-item-list-selected-hover-bg);
102
+ }
99
103
  .rollup-rows.is-dragging .rollup-rows-group-by .item-list-scroll-pane {
100
104
  background-image: linear-gradient(to right, var(--dh-color-bg, #1a171a) 50%, var(--dh-color-fg, #f0f0ee) 50%), linear-gradient(to right, var(--dh-color-bg, #1a171a) 50%, var(--dh-color-fg, #f0f0ee) 50%), linear-gradient(to bottom, var(--dh-color-bg, #1a171a) 50%, var(--dh-color-fg, #f0f0ee) 50%), linear-gradient(to bottom, var(--dh-color-bg, #1a171a) 50%, var(--dh-color-fg, #f0f0ee) 50%);
101
105
  background-size: 8px 1px, 8px 1px, 1px 8px, 1px 8px;
@@ -105,6 +109,12 @@
105
109
  animation-timing-function: linear;
106
110
  animation-iteration-count: infinite;
107
111
  }
112
+ .rollup-rows.is-dragging .rollup-rows-group-by .draggable-item-list.is-dragging-over .item-list-scroll-pane {
113
+ background-color: var(--dh-color-item-list-selected-hover-bg);
114
+ }
115
+ .rollup-rows.is-dragging .rollup-rows-group-by .draggable-item-list.is-dragging-over:not(.is-dragging-from-this) {
116
+ --placeholder-height: var(--row-height);
117
+ }
108
118
  .rollup-rows.is-dragging .rollup-rows-available-columns .draggable-item-list:not(.is-dragging-from-this) .item-list-scroll-pane {
109
119
  background-image: linear-gradient(to right, var(--dh-color-bg, #1a171a) 50%, var(--dh-color-fg, #f0f0ee) 50%), linear-gradient(to right, var(--dh-color-bg, #1a171a) 50%, var(--dh-color-fg, #f0f0ee) 50%), linear-gradient(to bottom, var(--dh-color-bg, #1a171a) 50%, var(--dh-color-fg, #f0f0ee) 50%), linear-gradient(to bottom, var(--dh-color-bg, #1a171a) 50%, var(--dh-color-fg, #f0f0ee) 50%);
110
120
  background-size: 8px 1px, 8px 1px, 1px 8px, 1px 8px;
@@ -114,5 +124,8 @@
114
124
  animation-timing-function: linear;
115
125
  animation-iteration-count: infinite;
116
126
  }
127
+ .rollup-rows.is-dragging .rollup-rows-available-columns .draggable-item-list:not(.is-dragging-from-this).is-dragging-over .item-list-scroll-pane {
128
+ background-color: var(--dh-color-item-list-selected-hover-bg);
129
+ }
117
130
 
118
131
  /*# sourceMappingURL=RollupRows.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss","../../src/sidebar/RollupRows.scss","../../../../node_modules/@deephaven/components/scss/new_variables.scss"],"names":[],"mappings":"AAAA;AC6LA;AC3LA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;AAAA;EAEE;EACA;EACA;EACA,SCjBO;EDkBP;;AAEA;AAAA;EACE;EACA;EACA,cCvBK;;ADwBL;AAAA;EACE,aCzBG;;AD4BL;AAAA;EACE,ODIK;;ACAT;AAAA;EACE;;AAIJ;EACE;EACA,cCvCO;EDwCP;EACA,aCzCO;;AD0CP;EACE;EACA,aC7CK;;AD8CL;EACE;;AAKN;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA,kBDzCO;;AC2CP;EACE;EACA;;AAGF;EACE;EACA,cCrEK;EDsEL;;AAGF;EACE,QC1EK;ED2EL,SC1EK;ED2EL;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AACA;EACE;;AAMA;EACE;EC/EN;EAIA,iBACE;EAIF,qBACE;EAIF;EACA;EACA;EACA;;ADkEI;ECnFJ;EAIA,iBACE;EAIF,qBACE;EAIF;EACA;EACA;EACA;;ADyEI;EC1FJ;EAIA,iBACE;EAIF,qBACE;EAIF;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 './util.scss';\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n// Fallback colors are used if theme isn't loaded\n// this is required for error messages if the API doesn't load\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg, #1a171a);\n$foreground: var(--dh-color-fg, #f0f0ee);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\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:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n 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$text-select-color: var(--dh-color-text-highlight);\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 var(--dh-color-dropshadow);\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n$btn-line-height: 1.3;\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: color-mix(\n in srgb,\n var(--dh-color-accent) 35%,\n transparent\n);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n$input-btn-line-height: 1.3;\n// Bootstrap uses a calc expression to determine the input height (calc(line-height + 2*padding-y + border)).\n// The padding-y value has to be in rem to match units as it is a SASS calc.\n// Using 0.42145rem with 1.3 line height gets us to spectrum's 32px.\n/* stylelint-disable-next-line number-max-precision */\n$input-btn-padding-y: 0.42145rem;\n\n//checkbox\n$custom-control-indicator-bg: var(--dh-color-input-bg);\n$custom-control-indicator-border-color: var(--dh-color-input-border);\n$custom-checkbox-indicator-border-radius: 2px;\n$custom-control-indicator-border-width: 2px;\n$custom-control-indicator-active-bg: var(--dh-color-input-bg);\n$custom-control-indicator-active-border-color: var(--dh-color-input-fg);\n$custom-control-indicator-checked-bg: var(--dh-color-input-fg);\n$custom-control-indicator-checked-color: black; // used as mask fill color\n$custom-checkbox-indicator-indeterminate-bg: var(--dh-color-input-fg);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: var(--dh-color-input-disabled-bg);\n$custom-control-indicator-checked-disabled-bg: var(\n --dh-color-input-disabled-bg\n);\n$custom-control-label-disabled-color: var(--dh-color-input-disabled-fg);\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg: var(--dh-color-selector-bg);\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: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $content-bg;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n$close-color: var(--dh-color-text);\n$close-text-shadow: none;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: var(--dh-color-item-list-hover-bg);\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: var(--dh-color-popover-bg);\n$contextmenu-color: var(--dh-color-text);\n$contextmenu-disabled-color: var(--dh-color-text-disabled);\n$contextmenu-keyboard-selected-bg: var(--dh-color-keyboard-selected-bg);\n$contextmenu-selected-bg: var(--dh-color-item-list-hover-bg);\n$contextmenu-selected-color: var(--dh-color-item-list-selected-fg);\n\n//hr\n$hr-border-color: var(--dh-color-hr);\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: $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\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n","@import '@deephaven/components/scss/custom.scss';\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\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 var(--dh-color-hr);\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 height: 26px;\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: var(--dh-color-surface);\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","@use 'sass:math';\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:\n $ant-size $ant-thickness,\n $ant-size $ant-thickness,\n $ant-thickness $ant-size,\n $ant-thickness $ant-size;\n background-position:\n 0 top,\n 0 bottom,\n left 0,\n 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: 12%;\n$hover-bg-transparency: 14%;\n$active-bg-transparency: 28%;\n$exception-transparency: 28%;\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss","../../src/sidebar/RollupRows.scss","../../../../node_modules/@deephaven/components/scss/new_variables.scss"],"names":[],"mappings":"AAAA;AC6LA;AC3LA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;AAAA;EAEE;EACA;EACA;EACA,SCjBO;EDkBP;;AAEA;AAAA;EACE;EACA;EACA,cCvBK;;ADwBL;AAAA;EACE,aCzBG;;AD4BL;AAAA;EACE,ODIK;;ACAT;AAAA;EACE;;AAIJ;EACE;EACA,cCvCO;EDwCP;EACA,aCzCO;;AD0CP;EACE;EACA,aC7CK;;AD8CL;EACE;;AAKN;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA,kBDzCO;;AC2CP;EACE;EAEA;;AAKF;EACE;EACA,cCxEK;EDyEL;;AAGF;EACE,QC7EK;ED8EL,SC7EK;ED8EL;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AACA;EACE;;AAMA;EACE;ECnFN;EAIA,iBACE;EAIF,qBACE;EAIF;EACA;EACA;EACA;;ADsEM;EACE;;AAIJ;EC5FJ;EAIA,iBACE;EAIF,qBACE;EAIF;EACA;EACA;EACA;;ADgFM;EACE;;AAGF;EAIE;;AAOJ;EChHJ;EAIA,iBACE;EAIF,qBACE;EAIF;EACA;EACA;EACA;;ADoGM;EACE","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 './util.scss';\n","// Styling overrides for bootstrap\n@use 'sass:map';\n\n// Override / set color variables\n$red: var(--dh-color-visual-red);\n$orange: var(--dh-color-visual-orange);\n$yellow: var(--dh-color-visual-yellow);\n$green: var(--dh-color-visual-green);\n$blue: var(--dh-color-visual-blue);\n$purple: var(--dh-color-visual-purple);\n\n// Fallback colors are used if theme isn't loaded\n// this is required for error messages if the API doesn't load\n\n//Define our Gray scale\n$gray-100: var(--dh-color-gray-900, #fcfcfa);\n$gray-200: var(--dh-color-gray-800);\n$gray-300: var(--dh-color-gray-700);\n$gray-400: var(--dh-color-gray-600);\n$gray-500: var(--dh-color-gray-500);\n// intentional duplicate, scale doesn't line up otherwise\n// as we have gray-850 and spectrum doesn't and it is needed\n$gray-600: var(--dh-color-gray-500);\n$gray-700: var(--dh-color-gray-400);\n$gray-800: var(--dh-color-gray-300);\n$gray-850: var(--dh-color-gray-200);\n$gray-900: var(--dh-color-gray-75);\n$black: var(--dh-color-black, #1a171a);\n$white: var(--dh-color-white, #f0f0ee);\n\n//Define some UI colors\n$interfacegray: var(--dh-color-content-bg, #2d2a2e);\n$interfaceblue: var(--dh-color-accent-bg);\n$interfacewhite: $white;\n$interfaceblack: $black;\n$content-bg: var(--dh-color-content-bg, #2d2a2e);\n$background: var(--dh-color-bg, #1a171a);\n$foreground: var(--dh-color-fg, #f0f0ee);\n\n// Extend default Bootstrap $grays map\n$grays-custom: (\n '850': $gray-850,\n);\n$grays: () !default;\n$grays: map-merge($grays, $grays-custom);\n\n// Extend default Bootstrap $colors map\n$colors-custom: (\n 'black': $black,\n);\n$colors: () !default;\n$colors: map-merge($colors, $colors-custom);\n\n// Override default Bootstrap $theme-colors map by mapping each key to itself.\n// These will then be re-mapped inside of `button-outline-variant` and\n// `button-outline-variant` mixins in `bootstrap_override_mixins_buttons.scss`\n$theme-colors-self-map: ();\n@each $key\n in (\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'danger',\n 'light',\n 'dark'\n )\n{\n $theme-colors-self-map: map.set($theme-colors-self-map, $key, $key);\n}\n$theme-colors: () !default;\n$theme-colors: map-merge($theme-colors, $theme-colors-self-map);\n\n// Used by bootstrap_override_mixins_buttons.scss to map Bootstrap colors to\n// DH semantic colors\n$bootstrap-dh-semantic-map: (\n 'primary': 'accent',\n 'secondary': 'neutral',\n 'success': 'positive',\n 'info': 'info',\n 'warning': 'notice',\n 'danger': 'negative',\n // We shouldn't be using these, but mapping so they work with our custom\n // `color-yiq` mixin. If we find a way to remove $light + $dark that are\n // defined in Bootstrap _variables.scss, we should remove these\n 'light': 'neutral',\n 'dark': 'neutral',\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: var(--dh-color-accent-bg);\n$primary-hover: var(--dh-color-accent-hover-bg);\n$primary-dark: var(--dh-color-accent-down-bg);\n$secondary: var(--dh-color-neutral-bg);\n$secondary-hover: var(--dh-color-neutral-hover-bg);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: var(--dh-color-negative-bg);\n$danger-hover: var(--dh-color-negative-hover-bg);\n// We really don't want to use $light or $dark variables, but Bootstrap defines\n// them in _variables.scss. Explicitly setting them to ensure we are in control\n// of their values. If we can find a way to remove them, we should\n$light: var(--dh-color-gray-light);\n$dark: var(--dh-color-gray-dark);\n// Bootstrap doesn't define $mid, and we want to move away from this particular\n// semantic. Should be deleted by #1635\n$mid: var(--dh-color-gray-mid);\n\n$semantic-colors: (\n 'primary-hover': $primary-hover,\n 'primary-dark': $primary-dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n 'secondary-hover': $secondary-hover,\n 'danger-hover': $danger-hover,\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:\n 'Fira Sans',\n -apple-system,\n blinkmacsystemfont,\n 'Segoe UI',\n 'Roboto',\n 'Helvetica Neue',\n arial,\n 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$text-select-color: var(--dh-color-text-highlight);\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 var(--dh-color-dropshadow);\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\n color 0.12s ease-in-out,\n background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out,\n box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n$btn-font-weight: var(--spectrum-global-font-weight-bold);\n$btn-line-height: 1.3;\n\n//Override Inputs\n$input-bg: var(--dh-color-input-bg);\n$input-disabled-bg: var(--dh-color-input-disabled-bg);\n$input-color: var(--dh-color-input-fg);\n$input-border-color: var(--dh-color-input-border);\n$input-placeholder-color: var(--dh-color-input-placeholder);\n$input-focus-border-color: var(--dh-color-input-focus-border);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: color-mix(\n in srgb,\n var(--dh-color-accent) 35%,\n transparent\n);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n$input-btn-line-height: 1.3;\n// Bootstrap uses a calc expression to determine the input height (calc(line-height + 2*padding-y + border)).\n// The padding-y value has to be in rem to match units as it is a SASS calc.\n// Using 0.42145rem with 1.3 line height gets us to spectrum's 32px.\n/* stylelint-disable-next-line number-max-precision */\n$input-btn-padding-y: 0.42145rem;\n\n//checkbox\n$custom-control-indicator-bg: var(--dh-color-input-bg);\n$custom-control-indicator-border-color: var(--dh-color-input-border);\n$custom-checkbox-indicator-border-radius: 2px;\n$custom-control-indicator-border-width: 2px;\n$custom-control-indicator-active-bg: var(--dh-color-input-bg);\n$custom-control-indicator-active-border-color: var(--dh-color-input-fg);\n$custom-control-indicator-checked-bg: var(--dh-color-input-fg);\n$custom-control-indicator-checked-color: black; // used as mask fill color\n$custom-checkbox-indicator-indeterminate-bg: var(--dh-color-input-fg);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: var(--dh-color-input-disabled-bg);\n$custom-control-indicator-checked-disabled-bg: var(\n --dh-color-input-disabled-bg\n);\n$custom-control-label-disabled-color: var(--dh-color-input-disabled-fg);\n\n// The $custom-select-indicator variable is used by Bootstrap to provide the\n// icon for the select dropdown. Inline svgs can't use CSS variables, so we hard\n// code the color to #929192 (the default value of --dh-color-gray-600). PR #1651\n// overrides this icon altogether for known dropdowns, so technically we may not\n// need this, but it's here in case there are any remaining instances.\n$custom-select-indicator-color: #929192;\n$custom-select-bg: var(--dh-color-selector-bg);\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: $gray-500;\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $content-bg;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n$close-color: var(--dh-color-text);\n$close-text-shadow: none;\n\n// Toast notification\n$toast-bg: var(--dh-color-accent-100);\n$toast-color: var(--dh-color-text);\n$toast-error-bg: var(--dh-color-negative-bg);\n$toast-error-color: var(--dh-color-text);\n\n//tooltips\n$tooltip-bg: var(--dh-color-tooltip-bg);\n$tooltip-color: var(--dh-color-tooltip-fg);\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem var(--dh-color-tooltip-box-shadow);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: var(--dh-color-item-list-hover-bg);\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: var(--dh-color-popover-bg);\n$contextmenu-color: var(--dh-color-text);\n$contextmenu-disabled-color: var(--dh-color-text-disabled);\n$contextmenu-keyboard-selected-bg: var(--dh-color-keyboard-selected-bg);\n$contextmenu-selected-bg: var(--dh-color-item-list-hover-bg);\n$contextmenu-selected-color: var(--dh-color-item-list-selected-fg);\n\n//hr\n$hr-border-color: var(--dh-color-hr);\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: $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\n// This section of variables is not consumed directly by DH, but they need to be\n// defined for sass to compile _variables\n$table-dark-bg: $gray-800;\n$table-dark-accent-bg: var(--dh-color-highlight-hover);\n$table-dark-hover-bg: var(--dh-color-highlight-active);\n$table-dark-border-color: $gray-700;\n$popover-bg: var(--dh-color-tooltip-bg);\n$popover-border-color: var(--dh-color-overlay-modal-bg);\n$popover-header-bg: #000;\n$popover-arrow-outer-color: var(--dh-color-dropshadow);\n$custom-range-thumb-active-bg: var(--dh-color-accent-1100);\n","@import '@deephaven/components/scss/custom.scss';\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\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 var(--dh-color-hr);\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 // group-list-height assigned from JS\n min-height: calc(\n var(--group-list-height) + var(--placeholder-height, 0px)\n );\n }\n\n .btn-delete-grouping {\n height: 26px;\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 text-wrap: pretty;\n }\n }\n\n .rollup-rows-available-columns {\n display: flex;\n flex-direction: column;\n background-color: var(--dh-color-surface);\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\n @include ants-base($foreground, $background);\n\n &.is-dragging-over {\n background-color: var(--dh-color-item-list-selected-hover-bg);\n }\n }\n\n .item-list-scroll-pane {\n @include ants-base($foreground, $background);\n }\n\n .draggable-item-list.is-dragging-over {\n .item-list-scroll-pane {\n background-color: var(--dh-color-item-list-selected-hover-bg);\n }\n\n &:not(.is-dragging-from-this) {\n // placeholder doesn't add height with current AutoSizer\n // so add the height of the placeholder manually\n // rowHeight variable assigned from JS\n --placeholder-height: var(--row-height);\n }\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 &.is-dragging-over {\n .item-list-scroll-pane {\n background-color: var(--dh-color-item-list-selected-hover-bg);\n }\n }\n }\n }\n}\n","@use 'sass:math';\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:\n $ant-size $ant-thickness,\n $ant-size $ant-thickness,\n $ant-thickness $ant-size,\n $ant-thickness $ant-size;\n background-position:\n 0 top,\n 0 bottom,\n left 0,\n 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: 12%;\n$hover-bg-transparency: 14%;\n$active-bg-transparency: 28%;\n$exception-transparency: 28%;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RollupRows.d.ts","sourceRoot":"","sources":["../../src/sidebar/RollupRows.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RollupRows.d.ts","sourceRoot":"","sources":["../../src/sidebar/RollupRows.tsx"],"names":[],"mappings":"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"}
@@ -414,9 +414,6 @@ class RollupRows extends Component {
414
414
  } = this.state;
415
415
  var ungroupedColumns = this.getSortedUngroupedColumns();
416
416
  var groupListHeight = columns.length * DraggableItemList.DEFAULT_ROW_HEIGHT;
417
- if ((dragSource === null || dragSource === void 0 ? void 0 : dragSource.droppableId) === UNGROUPED_LIST_ID) {
418
- groupListHeight += DraggableItemList.DEFAULT_ROW_HEIGHT;
419
- }
420
417
  var ungroupMaxListHeight = ungroupedColumns.length * DraggableItemList.DEFAULT_ROW_HEIGHT + 10;
421
418
  var ungroupMinListHeight = Math.min(3 * DraggableItemList.DEFAULT_ROW_HEIGHT, ungroupMaxListHeight);
422
419
  return /*#__PURE__*/_jsx("div", {
@@ -458,9 +455,11 @@ class RollupRows extends Component {
458
455
  renderItem: this.renderGroupedItem,
459
456
  selectedRanges: groupedSelectedRanges,
460
457
  style: {
461
- height: groupListHeight
458
+ '--group-list-height': "".concat(groupListHeight, "px"),
459
+ '--row-height': "".concat(DraggableItemList.DEFAULT_ROW_HEIGHT, "px")
462
460
  },
463
- isMultiSelect: true
461
+ isMultiSelect: true,
462
+ hasPlaceholder: true
464
463
  })]
465
464
  }), /*#__PURE__*/_jsxs("div", {
466
465
  className: "rollup-rows-available-columns",
@@ -1 +1 @@
1
- {"version":3,"file":"RollupRows.js","names":["React","Component","classNames","FontAwesomeIcon","DragDropContext","Droppable","Checkbox","DraggableItemList","DragUtils","SearchInput","Tooltip","Button","vsTrash","dhSortAlphaDown","dhSortAlphaUp","TableUtils","memoize","debounce","Log","assertNotNull","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","log","module","DEBOUNCE_SEARCH","GROUPED_LIST_ID","UNGROUPED_LIST_ID","RollupRows","renderColumn","_ref","item","isClone","selectedCount","text","name","badgeText","undefined","concat","className","renderTextItem","addGroupings","currentGroupings","newGroupings","index","arguments","length","insertIndex","groupings","filter","grouping","i","includes","splice","isGroupable","column","isBigDecimalType","type","isBigIntegerType","constructor","props","_defineProperty","searchFilter","columns","getSortedUngroupedColumns","selectedRanges","focusIndex","toLowerCase","push","setState","ungroupedSelectedRanges","ungroupedList","current","scrollToItem","groupedColumns","find","max","sort","sortColumns","SORT","ASCENDING","handleDeleteClicked","bind","handleSearchChange","handleUngroupedSelect","handleUngroupedSelectionChange","handleDragStart","handleDragEnd","handleGroupedSelectionChange","handleShowConstituentsChange","handleShowNonAggregatedColumnsChange","handleSortAscending","handleSortDescending","renderGroupedItem","createRef","groupedList","config","showConstituents","showNonAggregatedColumns","state","groupedSelectedRanges","dragSource","componentDidUpdate","prevProps","prevState","updateFromConfig","sendChange","componentWillUnmount","search","cancel","event","target","value","resetSelection","_ref2","_ref3","DESCENDING","e","debug","document","documentElement","classList","add","source","remove","destination","droppableId","_ref4","newColumns","reorder","isSameList","destinationIndex","_ref5","sourceItems","map","c","sourceRanges","draggedItems","adjustDestinationIndex","newSelectedRanges","itemIndex","_ref6","debug2","_ref7","stateUngroupedSelectedRanges","_ref8","stateGroupedSelectedRanges","_ref9","slice","_ref0","_ref1","onChange","getUngroupedColumns","model","originalColumns","getCachedUngroupedColumns","getCachedSortedColumns","_ref10","indent","repeat","children","kind","onClick","icon","render","ungroupedColumns","groupListHeight","DEFAULT_ROW_HEIGHT","ungroupMaxListHeight","ungroupMinListHeight","Math","min","role","tabIndex","onDragEnd","onDragStart","provided","snapshot","_objectSpread","draggingFromThisWith","isDraggingOver","draggingOverWith","ref","innerRef","droppableProps","draggingItemClassName","draggablePrefix","itemCount","items","offset","onSelectionChange","renderItem","style","height","isMultiSelect","matchCount","placeholder","active","onSelect","maxHeight","minHeight","isDropDisabled","checked","Object","freeze"],"sources":["../../src/sidebar/RollupRows.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, {\n type ChangeEvent,\n Component,\n type ReactElement,\n type RefObject,\n} from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n DragDropContext,\n type DraggableLocation,\n type DragStart,\n Droppable,\n type DropResult,\n} from '@hello-pangea/dnd';\nimport {\n Checkbox,\n DraggableItemList,\n DragUtils,\n SearchInput,\n Tooltip,\n type Range,\n type RenderItemProps,\n Button,\n} from '@deephaven/components';\nimport { vsTrash, dhSortAlphaDown, dhSortAlphaUp } from '@deephaven/icons';\nimport { TableUtils, type SortDirection } from '@deephaven/jsapi-utils';\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { assertNotNull } from '@deephaven/utils';\nimport './RollupRows.scss';\nimport type { dh } from '@deephaven/jsapi-types';\nimport type IrisGridModel from '../IrisGridModel';\nimport { type ColumnName } from '../CommonTypes';\n\nconst log = Log.module('RollupRows');\nconst DEBOUNCE_SEARCH = 150;\nconst GROUPED_LIST_ID = 'grouped-rollup-rows';\nconst UNGROUPED_LIST_ID = 'ungrouped-rollup-rows';\n\nexport interface UIRollupConfig {\n columns: ColumnName[];\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n includeDescriptions: true;\n}\n\ninterface RollupRowsProps {\n model: IrisGridModel;\n onChange: (rollupConfig: UIRollupConfig) => void;\n config: UIRollupConfig | null;\n}\n\ninterface RollupRowsState {\n ungroupedSelectedRanges: readonly Range[];\n columns: ColumnName[];\n groupedSelectedRanges: readonly Range[];\n searchFilter: string;\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n dragSource: DraggableLocation | null;\n sort: SortDirection;\n}\n\nclass RollupRows extends Component<RollupRowsProps, RollupRowsState> {\n static SORT = Object.freeze({\n ASCENDING: 'ASC',\n DESCENDING: 'DESC',\n });\n\n static defaultProps = {\n config: null,\n onChange: (): void => undefined,\n };\n\n static renderColumn({\n item,\n isClone,\n selectedCount,\n }: RenderItemProps<dh.Column> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const text = item?.name;\n const badgeText =\n isClone !== undefined && isClone ? `${selectedCount}` : undefined;\n const className =\n isClone !== undefined && isClone ? 'item-list-item-clone' : '';\n return DraggableItemList.renderTextItem({ text, badgeText, className });\n }\n\n static addGroupings(\n currentGroupings: string[],\n newGroupings: string[],\n index: number = currentGroupings.length\n ): string[] {\n if (newGroupings == null || newGroupings.length === 0) {\n return currentGroupings;\n }\n\n let insertIndex = index;\n const groupings = currentGroupings.filter((grouping, i) => {\n if (newGroupings.includes(grouping)) {\n if (i < insertIndex) {\n insertIndex -= 1;\n }\n return false;\n }\n return true;\n });\n groupings.splice(insertIndex, 0, ...newGroupings);\n return groupings;\n }\n\n static isGroupable(column: dh.Column): boolean {\n return (\n !TableUtils.isBigDecimalType(column.type) &&\n !TableUtils.isBigIntegerType(column.type)\n );\n }\n\n constructor(props: RollupRowsProps) {\n super(props);\n\n this.handleDeleteClicked = this.handleDeleteClicked.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUngroupedSelect = this.handleUngroupedSelect.bind(this);\n this.handleUngroupedSelectionChange =\n this.handleUngroupedSelectionChange.bind(this);\n this.handleDragStart = this.handleDragStart.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.handleGroupedSelectionChange =\n this.handleGroupedSelectionChange.bind(this);\n this.handleShowConstituentsChange =\n this.handleShowConstituentsChange.bind(this);\n this.handleShowNonAggregatedColumnsChange =\n this.handleShowNonAggregatedColumnsChange.bind(this);\n this.handleSortAscending = this.handleSortAscending.bind(this);\n this.handleSortDescending = this.handleSortDescending.bind(this);\n this.renderGroupedItem = this.renderGroupedItem.bind(this);\n\n this.ungroupedList = React.createRef();\n this.groupedList = React.createRef();\n\n const { config } = props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n\n this.state = {\n ungroupedSelectedRanges: [],\n columns,\n groupedSelectedRanges: [],\n searchFilter: '',\n showConstituents,\n showNonAggregatedColumns,\n dragSource: null,\n sort: null,\n };\n }\n\n componentDidUpdate(\n prevProps: RollupRowsProps,\n prevState: RollupRowsState\n ): void {\n const { config } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n if (config !== prevProps.config) {\n this.updateFromConfig();\n } else if (\n columns !== prevState.columns ||\n showConstituents !== prevState.showConstituents ||\n showNonAggregatedColumns !== prevState.showNonAggregatedColumns\n ) {\n if (\n config == null ||\n columns !== config.columns ||\n showConstituents !== config.showConstituents ||\n showNonAggregatedColumns !== config.showNonAggregatedColumns\n ) {\n this.sendChange();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.search.cancel();\n }\n\n ungroupedList: RefObject<DraggableItemList<dh.Column>>;\n\n groupedList: RefObject<DraggableItemList<string>>;\n\n handleSearchChange(event: ChangeEvent<HTMLInputElement>): void {\n const searchFilter = event.target.value;\n this.setState({ searchFilter });\n if (!searchFilter) {\n this.search.cancel();\n this.resetSelection();\n return;\n }\n this.search(searchFilter);\n }\n\n handleSortAscending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.ASCENDING ? null : RollupRows.SORT.ASCENDING,\n }));\n }\n\n handleSortDescending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.DESCENDING ? null : RollupRows.SORT.DESCENDING,\n }));\n }\n\n resetSelection(): void {\n this.setState({ ungroupedSelectedRanges: [], groupedSelectedRanges: [] });\n }\n\n search = debounce((searchFilter: string) => {\n const columns = this.getSortedUngroupedColumns();\n const selectedRanges = [] as Range[];\n let focusIndex = null;\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n if (column.name.toLowerCase().includes(searchFilter.toLowerCase())) {\n if (focusIndex == null) {\n focusIndex = i;\n }\n selectedRanges.push([i, i]);\n }\n }\n assertNotNull(focusIndex);\n this.setState({ ungroupedSelectedRanges: selectedRanges });\n\n if (selectedRanges.length > 0 && this.ungroupedList.current) {\n this.ungroupedList.current.scrollToItem(focusIndex);\n }\n }, DEBOUNCE_SEARCH);\n\n handleDragStart(e: DragStart): void {\n log.debug('handleDragStart', e);\n\n document.documentElement.classList.add('drag-pointer-events-none');\n\n this.setState({ dragSource: e.source });\n }\n\n handleDragEnd(e: DropResult): void {\n log.debug('handleDragEnd', e);\n\n document.documentElement.classList.remove('drag-pointer-events-none');\n\n this.setState({ dragSource: null });\n\n const { destination, source } = e;\n if (destination == null || source == null) {\n return;\n }\n\n // We don't allow dragging within the ungrouped list, so if we're dragging into the ungrouped list,\n // it must have came from the grouped list. Remove those grouped columns.\n if (destination.droppableId === UNGROUPED_LIST_ID) {\n this.setState(({ groupedSelectedRanges, columns }) => {\n const newColumns = [...columns];\n DragUtils.reorder(newColumns, groupedSelectedRanges, [], 0);\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n };\n });\n return;\n }\n\n // Otherwise, it must be dropping into the grouped list, so we just need to check the source\n const isSameList = source.droppableId === GROUPED_LIST_ID;\n let destinationIndex = destination.index;\n if (isSameList && source.index < destination.index) {\n // @hello-pangea/dnd adjusts the index when dragging within a list already, however that only supports single selection\n // We need to change it back to the index we actually want it to drop at before adjusting for the removed source index, as\n // we adjust the index based on all the selected ranges, not just the source.index.\n destinationIndex += 1;\n }\n this.setState(\n ({ columns, ungroupedSelectedRanges, groupedSelectedRanges }) => {\n const newColumns = [...columns];\n const sourceItems = isSameList\n ? newColumns\n : this.getSortedUngroupedColumns().map(c => c.name);\n const sourceRanges = isSameList\n ? groupedSelectedRanges\n : ungroupedSelectedRanges;\n const draggedItems = DragUtils.reorder(\n sourceItems,\n sourceRanges,\n newColumns,\n destinationIndex\n );\n\n // Select the newly dropped items\n const insertIndex = isSameList\n ? DragUtils.adjustDestinationIndex(\n destinationIndex,\n groupedSelectedRanges\n )\n : destinationIndex;\n const newSelectedRanges = [\n [insertIndex, insertIndex + draggedItems.length - 1] as Range,\n ];\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [] as Range[],\n groupedSelectedRanges: newSelectedRanges,\n };\n }\n );\n this.resetSelection();\n }\n\n handleUngroupedSelect(itemIndex: number): void {\n log.debug('handleUngroupedSelect');\n\n this.setState(({ columns }) => ({\n columns: RollupRows.addGroupings(columns, [\n this.getSortedUngroupedColumns()[itemIndex].name,\n ]),\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n }));\n }\n\n handleUngroupedSelectionChange(\n ungroupedSelectedRanges: readonly Range[]\n ): void {\n log.debug2('handleUngroupedSelectionChange', ungroupedSelectedRanges);\n this.setState(\n ({ ungroupedSelectedRanges: stateUngroupedSelectedRanges }) => {\n if (ungroupedSelectedRanges === stateUngroupedSelectedRanges) {\n return null;\n }\n\n return { ungroupedSelectedRanges, groupedSelectedRanges: [] };\n }\n );\n }\n\n handleGroupedSelectionChange(groupedSelectedRanges: readonly Range[]): void {\n log.debug2('handleGroupedSelectedRanges', groupedSelectedRanges);\n this.setState(({ groupedSelectedRanges: stateGroupedSelectedRanges }) => {\n if (groupedSelectedRanges === stateGroupedSelectedRanges) {\n return null;\n }\n\n return { groupedSelectedRanges, ungroupedSelectedRanges: [] };\n });\n }\n\n handleDeleteClicked(index: number): void {\n this.setState(({ columns }) => {\n const newColumns = columns.slice();\n newColumns.splice(index, 1);\n return { columns: newColumns };\n });\n }\n\n handleShowConstituentsChange(): void {\n this.setState(({ showConstituents }) => ({\n showConstituents: !showConstituents,\n }));\n }\n\n handleShowNonAggregatedColumnsChange(): void {\n this.setState(({ showNonAggregatedColumns }) => ({\n showNonAggregatedColumns: !showNonAggregatedColumns,\n }));\n }\n\n updateFromConfig(): void {\n const { config } = this.props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n this.setState({ columns, showConstituents, showNonAggregatedColumns });\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n onChange({\n columns,\n showConstituents,\n showNonAggregatedColumns,\n } as UIRollupConfig);\n }\n\n getCachedUngroupedColumns = memoize(\n (\n columns: readonly dh.Column[],\n groupedColumns: readonly ColumnName[]\n ): readonly dh.Column[] =>\n columns.filter(\n column =>\n RollupRows.isGroupable(column) &&\n groupedColumns.find(name => name === column.name) == null\n ),\n { max: 100 }\n );\n\n getCachedSortedColumns = memoize(\n (\n columns: readonly dh.Column[],\n sort?: SortDirection\n ): readonly dh.Column[] =>\n sort == null\n ? [...columns]\n : TableUtils.sortColumns(columns, sort === RollupRows.SORT.ASCENDING),\n { max: 100 }\n );\n\n getUngroupedColumns(): readonly dh.Column[] {\n const { model } = this.props;\n const { columns } = this.state;\n const { originalColumns } = model;\n\n return this.getCachedUngroupedColumns(originalColumns, columns);\n }\n\n getSortedUngroupedColumns(): readonly dh.Column[] {\n const { sort } = this.state;\n const columns = this.getUngroupedColumns();\n return this.getCachedSortedColumns(columns, sort);\n }\n\n renderGroupedItem({\n item,\n itemIndex,\n isClone,\n selectedCount,\n }: RenderItemProps<string> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const indent =\n isClone !== undefined && isClone ? '' : '\\u00A0\\u00A0'.repeat(itemIndex);\n const text = `${indent}${item}`;\n const badgeText =\n isClone !== undefined && isClone ? `${selectedCount}` : undefined;\n const className =\n isClone !== undefined && isClone ? 'item-list-item-clone' : '';\n return (\n <>\n {DraggableItemList.renderTextItem({ text, badgeText, className })}\n {(isClone === undefined || !isClone) && (\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon btn-delete-grouping float-right\"\n onClick={() => this.handleDeleteClicked(itemIndex)}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </Button>\n )}\n </>\n );\n }\n\n render(): ReactElement {\n const {\n columns,\n dragSource,\n searchFilter,\n groupedSelectedRanges,\n ungroupedSelectedRanges,\n showConstituents,\n showNonAggregatedColumns,\n sort,\n } = this.state;\n\n const ungroupedColumns = this.getSortedUngroupedColumns();\n let groupListHeight = columns.length * DraggableItemList.DEFAULT_ROW_HEIGHT;\n if (dragSource?.droppableId === UNGROUPED_LIST_ID) {\n groupListHeight += DraggableItemList.DEFAULT_ROW_HEIGHT;\n }\n const ungroupMaxListHeight =\n ungroupedColumns.length * DraggableItemList.DEFAULT_ROW_HEIGHT + 10;\n const ungroupMinListHeight = Math.min(\n 3 * DraggableItemList.DEFAULT_ROW_HEIGHT,\n ungroupMaxListHeight\n );\n\n return (\n <div\n role=\"menu\"\n className={classNames('rollup-rows', {\n 'is-dragging': dragSource != null,\n })}\n tabIndex={0}\n >\n <DragDropContext\n onDragEnd={this.handleDragEnd}\n onDragStart={this.handleDragStart}\n >\n <div className=\"rollup-rows-group-by\">\n <div className=\"section-title\">Group By</div>\n {columns.length === 0 && (\n <Droppable droppableId=\"placeholder\">\n {(provided, snapshot) => (\n <div\n className={classNames('placeholder', 'text-muted', {\n 'is-dragging-from-this': snapshot.draggingFromThisWith,\n 'is-dragging-over': snapshot.isDraggingOver,\n 'is-dropping': snapshot.draggingOverWith,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n >\n To create a rollup, drag columns from the list below and\n drop them into this area.\n </div>\n )}\n </Droppable>\n )}\n {columns.length > 0 && (\n <DraggableItemList\n draggingItemClassName=\"rollup-rows-dragging-grouped-item\"\n draggablePrefix={GROUPED_LIST_ID}\n droppableId={GROUPED_LIST_ID}\n itemCount={columns.length}\n items={columns}\n offset={0}\n onSelectionChange={this.handleGroupedSelectionChange}\n ref={this.groupedList}\n renderItem={this.renderGroupedItem}\n selectedRanges={groupedSelectedRanges}\n style={{ height: groupListHeight }}\n isMultiSelect\n />\n )}\n </div>\n <div className=\"rollup-rows-available-columns\">\n <div className=\"section-title\">Available Grouping Columns</div>\n <div className=\"top-menu\">\n <SearchInput\n className=\"w-100\"\n value={searchFilter}\n matchCount={\n searchFilter ? ungroupedSelectedRanges.length : undefined\n }\n placeholder=\"Find column...\"\n onChange={this.handleSearchChange}\n />\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.ASCENDING,\n })}\n onClick={this.handleSortAscending}\n >\n <FontAwesomeIcon icon={dhSortAlphaDown} />\n <Tooltip>Sort ascending</Tooltip>\n </Button>\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.DESCENDING,\n })}\n onClick={this.handleSortDescending}\n >\n <FontAwesomeIcon icon={dhSortAlphaUp} />\n <Tooltip>Sort descending</Tooltip>\n </Button>\n </div>\n <DraggableItemList\n className=\"rollup-available-grouping-columns\"\n draggablePrefix={UNGROUPED_LIST_ID}\n droppableId={UNGROUPED_LIST_ID}\n itemCount={ungroupedColumns.length}\n items={ungroupedColumns}\n renderItem={RollupRows.renderColumn}\n offset={0}\n onSelect={this.handleUngroupedSelect}\n onSelectionChange={this.handleUngroupedSelectionChange}\n ref={this.ungroupedList}\n selectedRanges={ungroupedSelectedRanges}\n style={{\n maxHeight: ungroupMaxListHeight,\n minHeight: ungroupMinListHeight,\n }}\n isDropDisabled={dragSource?.droppableId !== GROUPED_LIST_ID}\n isMultiSelect\n />\n <div className=\"bottom-menu\">\n <div className=\"label\">Show:</div>\n <Checkbox\n checked={showConstituents}\n onChange={this.handleShowConstituentsChange}\n >\n Constituents\n </Checkbox>\n <Checkbox\n checked={showNonAggregatedColumns}\n onChange={this.handleShowNonAggregatedColumnsChange}\n >\n Non-Aggregated Columns\n </Checkbox>\n </div>\n </div>\n </DragDropContext>\n </div>\n );\n }\n}\n\nexport default RollupRows;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"RollupRows.js","names":["React","Component","classNames","FontAwesomeIcon","DragDropContext","Droppable","Checkbox","DraggableItemList","DragUtils","SearchInput","Tooltip","Button","vsTrash","dhSortAlphaDown","dhSortAlphaUp","TableUtils","memoize","debounce","Log","assertNotNull","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","log","module","DEBOUNCE_SEARCH","GROUPED_LIST_ID","UNGROUPED_LIST_ID","RollupRows","renderColumn","_ref","item","isClone","selectedCount","text","name","badgeText","undefined","concat","className","renderTextItem","addGroupings","currentGroupings","newGroupings","index","arguments","length","insertIndex","groupings","filter","grouping","i","includes","splice","isGroupable","column","isBigDecimalType","type","isBigIntegerType","constructor","props","_defineProperty","searchFilter","columns","getSortedUngroupedColumns","selectedRanges","focusIndex","toLowerCase","push","setState","ungroupedSelectedRanges","ungroupedList","current","scrollToItem","groupedColumns","find","max","sort","sortColumns","SORT","ASCENDING","handleDeleteClicked","bind","handleSearchChange","handleUngroupedSelect","handleUngroupedSelectionChange","handleDragStart","handleDragEnd","handleGroupedSelectionChange","handleShowConstituentsChange","handleShowNonAggregatedColumnsChange","handleSortAscending","handleSortDescending","renderGroupedItem","createRef","groupedList","config","showConstituents","showNonAggregatedColumns","state","groupedSelectedRanges","dragSource","componentDidUpdate","prevProps","prevState","updateFromConfig","sendChange","componentWillUnmount","search","cancel","event","target","value","resetSelection","_ref2","_ref3","DESCENDING","e","debug","document","documentElement","classList","add","source","remove","destination","droppableId","_ref4","newColumns","reorder","isSameList","destinationIndex","_ref5","sourceItems","map","c","sourceRanges","draggedItems","adjustDestinationIndex","newSelectedRanges","itemIndex","_ref6","debug2","_ref7","stateUngroupedSelectedRanges","_ref8","stateGroupedSelectedRanges","_ref9","slice","_ref0","_ref1","onChange","getUngroupedColumns","model","originalColumns","getCachedUngroupedColumns","getCachedSortedColumns","_ref10","indent","repeat","children","kind","onClick","icon","render","ungroupedColumns","groupListHeight","DEFAULT_ROW_HEIGHT","ungroupMaxListHeight","ungroupMinListHeight","Math","min","role","tabIndex","onDragEnd","onDragStart","provided","snapshot","_objectSpread","draggingFromThisWith","isDraggingOver","draggingOverWith","ref","innerRef","droppableProps","draggingItemClassName","draggablePrefix","itemCount","items","offset","onSelectionChange","renderItem","style","isMultiSelect","hasPlaceholder","matchCount","placeholder","active","onSelect","maxHeight","minHeight","isDropDisabled","checked","Object","freeze"],"sources":["../../src/sidebar/RollupRows.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, {\n type ChangeEvent,\n Component,\n type ReactElement,\n type RefObject,\n} from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n DragDropContext,\n type DraggableLocation,\n type DragStart,\n Droppable,\n type DropResult,\n} from '@hello-pangea/dnd';\nimport {\n Checkbox,\n DraggableItemList,\n DragUtils,\n SearchInput,\n Tooltip,\n type Range,\n type RenderItemProps,\n Button,\n} from '@deephaven/components';\nimport { vsTrash, dhSortAlphaDown, dhSortAlphaUp } from '@deephaven/icons';\nimport { TableUtils, type SortDirection } from '@deephaven/jsapi-utils';\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { assertNotNull } from '@deephaven/utils';\nimport './RollupRows.scss';\nimport type { dh } from '@deephaven/jsapi-types';\nimport type IrisGridModel from '../IrisGridModel';\nimport { type ColumnName } from '../CommonTypes';\n\nconst log = Log.module('RollupRows');\nconst DEBOUNCE_SEARCH = 150;\nconst GROUPED_LIST_ID = 'grouped-rollup-rows';\nconst UNGROUPED_LIST_ID = 'ungrouped-rollup-rows';\n\nexport interface UIRollupConfig {\n columns: ColumnName[];\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n includeDescriptions: true;\n}\n\ninterface RollupRowsProps {\n model: IrisGridModel;\n onChange: (rollupConfig: UIRollupConfig) => void;\n config: UIRollupConfig | null;\n}\n\ninterface RollupRowsState {\n ungroupedSelectedRanges: readonly Range[];\n columns: ColumnName[];\n groupedSelectedRanges: readonly Range[];\n searchFilter: string;\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n dragSource: DraggableLocation | null;\n sort: SortDirection;\n}\n\nclass RollupRows extends Component<RollupRowsProps, RollupRowsState> {\n static SORT = Object.freeze({\n ASCENDING: 'ASC',\n DESCENDING: 'DESC',\n });\n\n static defaultProps = {\n config: null,\n onChange: (): void => undefined,\n };\n\n static renderColumn({\n item,\n isClone,\n selectedCount,\n }: RenderItemProps<dh.Column> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const text = item?.name;\n const badgeText =\n isClone !== undefined && isClone ? `${selectedCount}` : undefined;\n const className =\n isClone !== undefined && isClone ? 'item-list-item-clone' : '';\n return DraggableItemList.renderTextItem({ text, badgeText, className });\n }\n\n static addGroupings(\n currentGroupings: string[],\n newGroupings: string[],\n index: number = currentGroupings.length\n ): string[] {\n if (newGroupings == null || newGroupings.length === 0) {\n return currentGroupings;\n }\n\n let insertIndex = index;\n const groupings = currentGroupings.filter((grouping, i) => {\n if (newGroupings.includes(grouping)) {\n if (i < insertIndex) {\n insertIndex -= 1;\n }\n return false;\n }\n return true;\n });\n groupings.splice(insertIndex, 0, ...newGroupings);\n return groupings;\n }\n\n static isGroupable(column: dh.Column): boolean {\n return (\n !TableUtils.isBigDecimalType(column.type) &&\n !TableUtils.isBigIntegerType(column.type)\n );\n }\n\n constructor(props: RollupRowsProps) {\n super(props);\n\n this.handleDeleteClicked = this.handleDeleteClicked.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUngroupedSelect = this.handleUngroupedSelect.bind(this);\n this.handleUngroupedSelectionChange =\n this.handleUngroupedSelectionChange.bind(this);\n this.handleDragStart = this.handleDragStart.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.handleGroupedSelectionChange =\n this.handleGroupedSelectionChange.bind(this);\n this.handleShowConstituentsChange =\n this.handleShowConstituentsChange.bind(this);\n this.handleShowNonAggregatedColumnsChange =\n this.handleShowNonAggregatedColumnsChange.bind(this);\n this.handleSortAscending = this.handleSortAscending.bind(this);\n this.handleSortDescending = this.handleSortDescending.bind(this);\n this.renderGroupedItem = this.renderGroupedItem.bind(this);\n\n this.ungroupedList = React.createRef();\n this.groupedList = React.createRef();\n\n const { config } = props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n\n this.state = {\n ungroupedSelectedRanges: [],\n columns,\n groupedSelectedRanges: [],\n searchFilter: '',\n showConstituents,\n showNonAggregatedColumns,\n dragSource: null,\n sort: null,\n };\n }\n\n componentDidUpdate(\n prevProps: RollupRowsProps,\n prevState: RollupRowsState\n ): void {\n const { config } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n if (config !== prevProps.config) {\n this.updateFromConfig();\n } else if (\n columns !== prevState.columns ||\n showConstituents !== prevState.showConstituents ||\n showNonAggregatedColumns !== prevState.showNonAggregatedColumns\n ) {\n if (\n config == null ||\n columns !== config.columns ||\n showConstituents !== config.showConstituents ||\n showNonAggregatedColumns !== config.showNonAggregatedColumns\n ) {\n this.sendChange();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.search.cancel();\n }\n\n ungroupedList: RefObject<DraggableItemList<dh.Column>>;\n\n groupedList: RefObject<DraggableItemList<string>>;\n\n handleSearchChange(event: ChangeEvent<HTMLInputElement>): void {\n const searchFilter = event.target.value;\n this.setState({ searchFilter });\n if (!searchFilter) {\n this.search.cancel();\n this.resetSelection();\n return;\n }\n this.search(searchFilter);\n }\n\n handleSortAscending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.ASCENDING ? null : RollupRows.SORT.ASCENDING,\n }));\n }\n\n handleSortDescending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.DESCENDING ? null : RollupRows.SORT.DESCENDING,\n }));\n }\n\n resetSelection(): void {\n this.setState({ ungroupedSelectedRanges: [], groupedSelectedRanges: [] });\n }\n\n search = debounce((searchFilter: string) => {\n const columns = this.getSortedUngroupedColumns();\n const selectedRanges = [] as Range[];\n let focusIndex = null;\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n if (column.name.toLowerCase().includes(searchFilter.toLowerCase())) {\n if (focusIndex == null) {\n focusIndex = i;\n }\n selectedRanges.push([i, i]);\n }\n }\n assertNotNull(focusIndex);\n this.setState({ ungroupedSelectedRanges: selectedRanges });\n\n if (selectedRanges.length > 0 && this.ungroupedList.current) {\n this.ungroupedList.current.scrollToItem(focusIndex);\n }\n }, DEBOUNCE_SEARCH);\n\n handleDragStart(e: DragStart): void {\n log.debug('handleDragStart', e);\n\n document.documentElement.classList.add('drag-pointer-events-none');\n\n this.setState({ dragSource: e.source });\n }\n\n handleDragEnd(e: DropResult): void {\n log.debug('handleDragEnd', e);\n\n document.documentElement.classList.remove('drag-pointer-events-none');\n\n this.setState({ dragSource: null });\n\n const { destination, source } = e;\n if (destination == null || source == null) {\n return;\n }\n\n // We don't allow dragging within the ungrouped list, so if we're dragging into the ungrouped list,\n // it must have came from the grouped list. Remove those grouped columns.\n if (destination.droppableId === UNGROUPED_LIST_ID) {\n this.setState(({ groupedSelectedRanges, columns }) => {\n const newColumns = [...columns];\n DragUtils.reorder(newColumns, groupedSelectedRanges, [], 0);\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n };\n });\n return;\n }\n\n // Otherwise, it must be dropping into the grouped list, so we just need to check the source\n const isSameList = source.droppableId === GROUPED_LIST_ID;\n let destinationIndex = destination.index;\n if (isSameList && source.index < destination.index) {\n // @hello-pangea/dnd adjusts the index when dragging within a list already, however that only supports single selection\n // We need to change it back to the index we actually want it to drop at before adjusting for the removed source index, as\n // we adjust the index based on all the selected ranges, not just the source.index.\n destinationIndex += 1;\n }\n this.setState(\n ({ columns, ungroupedSelectedRanges, groupedSelectedRanges }) => {\n const newColumns = [...columns];\n const sourceItems = isSameList\n ? newColumns\n : this.getSortedUngroupedColumns().map(c => c.name);\n const sourceRanges = isSameList\n ? groupedSelectedRanges\n : ungroupedSelectedRanges;\n const draggedItems = DragUtils.reorder(\n sourceItems,\n sourceRanges,\n newColumns,\n destinationIndex\n );\n\n // Select the newly dropped items\n const insertIndex = isSameList\n ? DragUtils.adjustDestinationIndex(\n destinationIndex,\n groupedSelectedRanges\n )\n : destinationIndex;\n const newSelectedRanges = [\n [insertIndex, insertIndex + draggedItems.length - 1] as Range,\n ];\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [] as Range[],\n groupedSelectedRanges: newSelectedRanges,\n };\n }\n );\n this.resetSelection();\n }\n\n handleUngroupedSelect(itemIndex: number): void {\n log.debug('handleUngroupedSelect');\n\n this.setState(({ columns }) => ({\n columns: RollupRows.addGroupings(columns, [\n this.getSortedUngroupedColumns()[itemIndex].name,\n ]),\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n }));\n }\n\n handleUngroupedSelectionChange(\n ungroupedSelectedRanges: readonly Range[]\n ): void {\n log.debug2('handleUngroupedSelectionChange', ungroupedSelectedRanges);\n this.setState(\n ({ ungroupedSelectedRanges: stateUngroupedSelectedRanges }) => {\n if (ungroupedSelectedRanges === stateUngroupedSelectedRanges) {\n return null;\n }\n\n return { ungroupedSelectedRanges, groupedSelectedRanges: [] };\n }\n );\n }\n\n handleGroupedSelectionChange(groupedSelectedRanges: readonly Range[]): void {\n log.debug2('handleGroupedSelectedRanges', groupedSelectedRanges);\n this.setState(({ groupedSelectedRanges: stateGroupedSelectedRanges }) => {\n if (groupedSelectedRanges === stateGroupedSelectedRanges) {\n return null;\n }\n\n return { groupedSelectedRanges, ungroupedSelectedRanges: [] };\n });\n }\n\n handleDeleteClicked(index: number): void {\n this.setState(({ columns }) => {\n const newColumns = columns.slice();\n newColumns.splice(index, 1);\n return { columns: newColumns };\n });\n }\n\n handleShowConstituentsChange(): void {\n this.setState(({ showConstituents }) => ({\n showConstituents: !showConstituents,\n }));\n }\n\n handleShowNonAggregatedColumnsChange(): void {\n this.setState(({ showNonAggregatedColumns }) => ({\n showNonAggregatedColumns: !showNonAggregatedColumns,\n }));\n }\n\n updateFromConfig(): void {\n const { config } = this.props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n this.setState({ columns, showConstituents, showNonAggregatedColumns });\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n onChange({\n columns,\n showConstituents,\n showNonAggregatedColumns,\n } as UIRollupConfig);\n }\n\n getCachedUngroupedColumns = memoize(\n (\n columns: readonly dh.Column[],\n groupedColumns: readonly ColumnName[]\n ): readonly dh.Column[] =>\n columns.filter(\n column =>\n RollupRows.isGroupable(column) &&\n groupedColumns.find(name => name === column.name) == null\n ),\n { max: 100 }\n );\n\n getCachedSortedColumns = memoize(\n (\n columns: readonly dh.Column[],\n sort?: SortDirection\n ): readonly dh.Column[] =>\n sort == null\n ? [...columns]\n : TableUtils.sortColumns(columns, sort === RollupRows.SORT.ASCENDING),\n { max: 100 }\n );\n\n getUngroupedColumns(): readonly dh.Column[] {\n const { model } = this.props;\n const { columns } = this.state;\n const { originalColumns } = model;\n\n return this.getCachedUngroupedColumns(originalColumns, columns);\n }\n\n getSortedUngroupedColumns(): readonly dh.Column[] {\n const { sort } = this.state;\n const columns = this.getUngroupedColumns();\n return this.getCachedSortedColumns(columns, sort);\n }\n\n renderGroupedItem({\n item,\n itemIndex,\n isClone,\n selectedCount,\n }: RenderItemProps<string> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const indent =\n isClone !== undefined && isClone ? '' : '\\u00A0\\u00A0'.repeat(itemIndex);\n const text = `${indent}${item}`;\n const badgeText =\n isClone !== undefined && isClone ? `${selectedCount}` : undefined;\n const className =\n isClone !== undefined && isClone ? 'item-list-item-clone' : '';\n return (\n <>\n {DraggableItemList.renderTextItem({ text, badgeText, className })}\n {(isClone === undefined || !isClone) && (\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon btn-delete-grouping float-right\"\n onClick={() => this.handleDeleteClicked(itemIndex)}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </Button>\n )}\n </>\n );\n }\n\n render(): ReactElement {\n const {\n columns,\n dragSource,\n searchFilter,\n groupedSelectedRanges,\n ungroupedSelectedRanges,\n showConstituents,\n showNonAggregatedColumns,\n sort,\n } = this.state;\n\n const ungroupedColumns = this.getSortedUngroupedColumns();\n const groupListHeight =\n columns.length * DraggableItemList.DEFAULT_ROW_HEIGHT;\n const ungroupMaxListHeight =\n ungroupedColumns.length * DraggableItemList.DEFAULT_ROW_HEIGHT + 10;\n const ungroupMinListHeight = Math.min(\n 3 * DraggableItemList.DEFAULT_ROW_HEIGHT,\n ungroupMaxListHeight\n );\n\n return (\n <div\n role=\"menu\"\n className={classNames('rollup-rows', {\n 'is-dragging': dragSource != null,\n })}\n tabIndex={0}\n >\n <DragDropContext\n onDragEnd={this.handleDragEnd}\n onDragStart={this.handleDragStart}\n >\n <div className=\"rollup-rows-group-by\">\n <div className=\"section-title\">Group By</div>\n {columns.length === 0 && (\n <Droppable droppableId=\"placeholder\">\n {(provided, snapshot) => (\n <div\n className={classNames('placeholder', 'text-muted', {\n 'is-dragging-from-this': snapshot.draggingFromThisWith,\n 'is-dragging-over': snapshot.isDraggingOver,\n 'is-dropping': snapshot.draggingOverWith,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n >\n To create a rollup, drag columns from the list below and\n drop them into this area.\n </div>\n )}\n </Droppable>\n )}\n {columns.length > 0 && (\n <DraggableItemList\n draggingItemClassName=\"rollup-rows-dragging-grouped-item\"\n draggablePrefix={GROUPED_LIST_ID}\n droppableId={GROUPED_LIST_ID}\n itemCount={columns.length}\n items={columns}\n offset={0}\n onSelectionChange={this.handleGroupedSelectionChange}\n ref={this.groupedList}\n renderItem={this.renderGroupedItem}\n selectedRanges={groupedSelectedRanges}\n style={\n {\n '--group-list-height': `${groupListHeight}px`,\n '--row-height': `${DraggableItemList.DEFAULT_ROW_HEIGHT}px`,\n } as React.CSSProperties\n }\n isMultiSelect\n hasPlaceholder\n />\n )}\n </div>\n <div className=\"rollup-rows-available-columns\">\n <div className=\"section-title\">Available Grouping Columns</div>\n <div className=\"top-menu\">\n <SearchInput\n className=\"w-100\"\n value={searchFilter}\n matchCount={\n searchFilter ? ungroupedSelectedRanges.length : undefined\n }\n placeholder=\"Find column...\"\n onChange={this.handleSearchChange}\n />\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.ASCENDING,\n })}\n onClick={this.handleSortAscending}\n >\n <FontAwesomeIcon icon={dhSortAlphaDown} />\n <Tooltip>Sort ascending</Tooltip>\n </Button>\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.DESCENDING,\n })}\n onClick={this.handleSortDescending}\n >\n <FontAwesomeIcon icon={dhSortAlphaUp} />\n <Tooltip>Sort descending</Tooltip>\n </Button>\n </div>\n <DraggableItemList\n className=\"rollup-available-grouping-columns\"\n draggablePrefix={UNGROUPED_LIST_ID}\n droppableId={UNGROUPED_LIST_ID}\n itemCount={ungroupedColumns.length}\n items={ungroupedColumns}\n renderItem={RollupRows.renderColumn}\n offset={0}\n onSelect={this.handleUngroupedSelect}\n onSelectionChange={this.handleUngroupedSelectionChange}\n ref={this.ungroupedList}\n selectedRanges={ungroupedSelectedRanges}\n style={{\n maxHeight: ungroupMaxListHeight,\n minHeight: ungroupMinListHeight,\n }}\n isDropDisabled={dragSource?.droppableId !== GROUPED_LIST_ID}\n isMultiSelect\n />\n <div className=\"bottom-menu\">\n <div className=\"label\">Show:</div>\n <Checkbox\n checked={showConstituents}\n onChange={this.handleShowConstituentsChange}\n >\n Constituents\n </Checkbox>\n <Checkbox\n checked={showNonAggregatedColumns}\n onChange={this.handleShowNonAggregatedColumnsChange}\n >\n Non-Aggregated Columns\n </Checkbox>\n </div>\n </div>\n </DragDropContext>\n </div>\n );\n }\n}\n\nexport default RollupRows;\n"],"mappings":"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","ignoreList":[]}
@@ -3,8 +3,8 @@ import { type FlattenedIrisGridTreeItem } from './sortable-tree/utilities';
3
3
  type SearchItemProps = {
4
4
  value: string;
5
5
  item: FlattenedIrisGridTreeItem;
6
- onClick: (name: string, event: React.MouseEvent<HTMLElement>) => void;
7
- onKeyDown: (name: string, event: React.KeyboardEvent<HTMLElement>) => void;
6
+ onClick: (item: FlattenedIrisGridTreeItem, event: React.MouseEvent<HTMLElement>) => void;
7
+ onKeyDown: (item: FlattenedIrisGridTreeItem, event: React.KeyboardEvent<HTMLElement>) => void;
8
8
  handleProps?: Record<string, unknown>;
9
9
  };
10
10
  declare const MemoizedSearchItem: React.MemoExoticComponent<React.ForwardRefExoticComponent<SearchItemProps & React.RefAttributes<HTMLDivElement>>>;
@@ -1 +1 @@
1
- {"version":3,"file":"SearchItem.d.ts","sourceRoot":"","sources":["../../../src/sidebar/visibility-ordering-builder/SearchItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAK7D,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAE3E,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACtE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC,CAAC;AA6CF,QAAA,MAAM,kBAAkB,mHAAmB,CAAC;AAE5C,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"SearchItem.d.ts","sourceRoot":"","sources":["../../../src/sidebar/visibility-ordering-builder/SearchItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAK7D,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAE3E,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,CACP,IAAI,EAAE,yBAAyB,EAC/B,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KACjC,IAAI,CAAC;IACV,SAAS,EAAE,CACT,IAAI,EAAE,yBAAyB,EAC/B,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,KACpC,IAAI,CAAC;IACV,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC,CAAC;AA6CF,QAAA,MAAM,kBAAkB,mHAAmB,CAAC;AAE5C,eAAe,kBAAkB,CAAC"}
@@ -18,11 +18,11 @@ var SearchItem = /*#__PURE__*/forwardRef(function SearchItem(props, ref) {
18
18
  handleProps
19
19
  } = props;
20
20
  var handleClick = useCallback(event => {
21
- onClick(value, event);
22
- }, [onClick, value]);
21
+ onClick(item, event);
22
+ }, [onClick, item]);
23
23
  var handleKeyDown = useCallback(event => {
24
- onKeyDown(value, event);
25
- }, [onKeyDown, value]);
24
+ onKeyDown(item, event);
25
+ }, [onKeyDown, item]);
26
26
  return (
27
27
  /*#__PURE__*/
28
28
  // eslint-disable-next-line jsx-a11y/no-static-element-interactions
@@ -1 +1 @@
1
- {"version":3,"file":"SearchItem.js","names":["React","forwardRef","memo","useCallback","classNames","FontAwesomeIcon","vsGripper","Tooltip","jsx","_jsx","jsxs","_jsxs","SearchItem","props","ref","value","item","onClick","onKeyDown","handleProps","handleClick","event","handleKeyDown","_objectSpread","className","isSelected","selected","onKeyDownCapture","index","children","title","icon","MemoizedSearchItem"],"sources":["../../../src/sidebar/visibility-ordering-builder/SearchItem.tsx"],"sourcesContent":["import React, { forwardRef, memo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGripper } from '@deephaven/icons';\nimport { Tooltip } from '@deephaven/components';\nimport { type FlattenedIrisGridTreeItem } from './sortable-tree/utilities';\n\ntype SearchItemProps = {\n value: string;\n item: FlattenedIrisGridTreeItem;\n onClick: (name: string, event: React.MouseEvent<HTMLElement>) => void;\n onKeyDown: (name: string, event: React.KeyboardEvent<HTMLElement>) => void;\n handleProps?: Record<string, unknown>;\n};\n\nconst SearchItem = forwardRef<HTMLDivElement, SearchItemProps>(\n function SearchItem(props, ref) {\n const { value, item, onClick, onKeyDown, handleProps } = props;\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n onClick(value, event);\n },\n [onClick, value]\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n onKeyDown(value, event);\n },\n [onKeyDown, value]\n );\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n ref={ref}\n className={classNames('tree-item', {\n isSelected: item.selected,\n })}\n onClick={handleClick}\n onKeyDownCapture={handleKeyDown}\n data-index={item.index}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...handleProps}\n >\n <span title={value} className={classNames('column-name')}>\n {value}\n </span>\n <div>\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </div>\n </div>\n );\n }\n);\n\nconst MemoizedSearchItem = memo(SearchItem);\n\nexport default MemoizedSearchItem;\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,IAAI,EAAEC,WAAW,QAAQ,OAAO;AAC5D,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,OAAO,QAAQ,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAWhD,IAAMC,UAAU,gBAAGX,UAAU,CAC3B,SAASW,UAAUA,CAACC,KAAK,EAAEC,GAAG,EAAE;EAC9B,IAAM;IAAEC,KAAK;IAAEC,IAAI;IAAEC,OAAO;IAAEC,SAAS;IAAEC;EAAY,CAAC,GAAGN,KAAK;EAE9D,IAAMO,WAAW,GAAGjB,WAAW,CAC5BkB,KAAoC,IAAK;IACxCJ,OAAO,CAACF,KAAK,EAAEM,KAAK,CAAC;EACvB,CAAC,EACD,CAACJ,OAAO,EAAEF,KAAK,CACjB,CAAC;EAED,IAAMO,aAAa,GAAGnB,WAAW,CAC9BkB,KAAuC,IAAK;IAC3CH,SAAS,CAACH,KAAK,EAAEM,KAAK,CAAC;EACzB,CAAC,EACD,CAACH,SAAS,EAAEH,KAAK,CACnB,CAAC;EAED;IAAA;IACE;IACAJ,KAAA,QAAAY,aAAA,CAAAA,aAAA;MACET,GAAG,EAAEA,GAAI;MACTU,SAAS,EAAEpB,UAAU,CAAC,WAAW,EAAE;QACjCqB,UAAU,EAAET,IAAI,CAACU;MACnB,CAAC,CAAE;MACHT,OAAO,EAAEG,WAAY;MACrBO,gBAAgB,EAAEL,aAAc;MAChC,cAAYN,IAAI,CAACY;MACjB;IAAA,GACIT,WAAW;MAAAU,QAAA,gBAEfpB,IAAA;QAAMqB,KAAK,EAAEf,KAAM;QAACS,SAAS,EAAEpB,UAAU,CAAC,aAAa,CAAE;QAAAyB,QAAA,EACtDd;MAAK,CACF,CAAC,eACPJ,KAAA;QAAAkB,QAAA,gBACEpB,IAAA,CAACF,OAAO;UAAAsB,QAAA,EAAC;QAAgB,CAAS,CAAC,eACnCpB,IAAA,CAACJ,eAAe;UAAC0B,IAAI,EAAEzB;QAAU,CAAE,CAAC;MAAA,CACjC,CAAC;IAAA,EACH;EAAC;AAEV,CACF,CAAC;AAED,IAAM0B,kBAAkB,gBAAG9B,IAAI,CAACU,UAAU,CAAC;AAE3C,eAAeoB,kBAAkB","ignoreList":[]}
1
+ {"version":3,"file":"SearchItem.js","names":["React","forwardRef","memo","useCallback","classNames","FontAwesomeIcon","vsGripper","Tooltip","jsx","_jsx","jsxs","_jsxs","SearchItem","props","ref","value","item","onClick","onKeyDown","handleProps","handleClick","event","handleKeyDown","_objectSpread","className","isSelected","selected","onKeyDownCapture","index","children","title","icon","MemoizedSearchItem"],"sources":["../../../src/sidebar/visibility-ordering-builder/SearchItem.tsx"],"sourcesContent":["import React, { forwardRef, memo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGripper } from '@deephaven/icons';\nimport { Tooltip } from '@deephaven/components';\nimport { type FlattenedIrisGridTreeItem } from './sortable-tree/utilities';\n\ntype SearchItemProps = {\n value: string;\n item: FlattenedIrisGridTreeItem;\n onClick: (\n item: FlattenedIrisGridTreeItem,\n event: React.MouseEvent<HTMLElement>\n ) => void;\n onKeyDown: (\n item: FlattenedIrisGridTreeItem,\n event: React.KeyboardEvent<HTMLElement>\n ) => void;\n handleProps?: Record<string, unknown>;\n};\n\nconst SearchItem = forwardRef<HTMLDivElement, SearchItemProps>(\n function SearchItem(props, ref) {\n const { value, item, onClick, onKeyDown, handleProps } = props;\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n onClick(item, event);\n },\n [onClick, item]\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n onKeyDown(item, event);\n },\n [onKeyDown, item]\n );\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n ref={ref}\n className={classNames('tree-item', {\n isSelected: item.selected,\n })}\n onClick={handleClick}\n onKeyDownCapture={handleKeyDown}\n data-index={item.index}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...handleProps}\n >\n <span title={value} className={classNames('column-name')}>\n {value}\n </span>\n <div>\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </div>\n </div>\n );\n }\n);\n\nconst MemoizedSearchItem = memo(SearchItem);\n\nexport default MemoizedSearchItem;\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,IAAI,EAAEC,WAAW,QAAQ,OAAO;AAC5D,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,OAAO,QAAQ,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAiBhD,IAAMC,UAAU,gBAAGX,UAAU,CAC3B,SAASW,UAAUA,CAACC,KAAK,EAAEC,GAAG,EAAE;EAC9B,IAAM;IAAEC,KAAK;IAAEC,IAAI;IAAEC,OAAO;IAAEC,SAAS;IAAEC;EAAY,CAAC,GAAGN,KAAK;EAE9D,IAAMO,WAAW,GAAGjB,WAAW,CAC5BkB,KAAoC,IAAK;IACxCJ,OAAO,CAACD,IAAI,EAAEK,KAAK,CAAC;EACtB,CAAC,EACD,CAACJ,OAAO,EAAED,IAAI,CAChB,CAAC;EAED,IAAMM,aAAa,GAAGnB,WAAW,CAC9BkB,KAAuC,IAAK;IAC3CH,SAAS,CAACF,IAAI,EAAEK,KAAK,CAAC;EACxB,CAAC,EACD,CAACH,SAAS,EAAEF,IAAI,CAClB,CAAC;EAED;IAAA;IACE;IACAL,KAAA,QAAAY,aAAA,CAAAA,aAAA;MACET,GAAG,EAAEA,GAAI;MACTU,SAAS,EAAEpB,UAAU,CAAC,WAAW,EAAE;QACjCqB,UAAU,EAAET,IAAI,CAACU;MACnB,CAAC,CAAE;MACHT,OAAO,EAAEG,WAAY;MACrBO,gBAAgB,EAAEL,aAAc;MAChC,cAAYN,IAAI,CAACY;MACjB;IAAA,GACIT,WAAW;MAAAU,QAAA,gBAEfpB,IAAA;QAAMqB,KAAK,EAAEf,KAAM;QAACS,SAAS,EAAEpB,UAAU,CAAC,aAAa,CAAE;QAAAyB,QAAA,EACtDd;MAAK,CACF,CAAC,eACPJ,KAAA;QAAAkB,QAAA,gBACEpB,IAAA,CAACF,OAAO;UAAAsB,QAAA,EAAC;QAAgB,CAAS,CAAC,eACnCpB,IAAA,CAACJ,eAAe;UAAC0B,IAAI,EAAEzB;QAAU,CAAE,CAAC;MAAA,CACjC,CAAC;IAAA,EACH;EAAC;AAEV,CACF,CAAC;AAED,IAAM0B,kBAAkB,gBAAG9B,IAAI,CAACU,UAAU,CAAC;AAE3C,eAAeoB,kBAAkB","ignoreList":[]}
@@ -386,8 +386,13 @@
386
386
  flex-direction: column;
387
387
  max-height: inherit;
388
388
  }
389
- .visibility-search-list-inner .tree-container {
390
- max-height: inherit;
389
+ .visibility-search-list-inner .search-tree-container {
390
+ /**
391
+ * Prevents the virtualized list from rendering all items
392
+ * and then popper limiting the height to a reasonable amount
393
+ * since popper needs to know the internal height to limit the container after
394
+ */
395
+ max-height: 100vh;
391
396
  padding: 0.25rem;
392
397
  overflow: auto;
393
398
  flex-grow: 1;