@deephaven/iris-grid 0.57.2-beta.0 → 0.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/AdvancedFilterCreator.css.map +1 -1
  2. package/dist/AdvancedFilterCreatorFilterItem.css.map +1 -1
  3. package/dist/AdvancedFilterCreatorSelectValue.css.map +1 -1
  4. package/dist/ColumnStatistics.css.map +1 -1
  5. package/dist/ColumnStatistics.d.ts +4 -4
  6. package/dist/ColumnStatistics.d.ts.map +1 -1
  7. package/dist/ColumnStatistics.js +4 -2
  8. package/dist/ColumnStatistics.js.map +1 -1
  9. package/dist/CrossColumnSearch.d.ts +2 -1
  10. package/dist/CrossColumnSearch.d.ts.map +1 -1
  11. package/dist/CrossColumnSearch.js +11 -8
  12. package/dist/CrossColumnSearch.js.map +1 -1
  13. package/dist/FilterInputField.css +11 -8
  14. package/dist/FilterInputField.css.map +1 -1
  15. package/dist/GotoRow.css.map +1 -1
  16. package/dist/IrisGrid.css +9 -6
  17. package/dist/IrisGrid.css.map +1 -1
  18. package/dist/IrisGrid.d.ts +6 -2
  19. package/dist/IrisGrid.d.ts.map +1 -1
  20. package/dist/IrisGrid.js +45 -8
  21. package/dist/IrisGrid.js.map +1 -1
  22. package/dist/IrisGridBottomBar.css +2 -3
  23. package/dist/IrisGridBottomBar.css.map +1 -1
  24. package/dist/IrisGridCellOverflowModal.js +1 -1
  25. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  26. package/dist/IrisGridCopyHandler.css +1 -2
  27. package/dist/IrisGridCopyHandler.css.map +1 -1
  28. package/dist/IrisGridCopyHandler.d.ts +12 -4
  29. package/dist/IrisGridCopyHandler.d.ts.map +1 -1
  30. package/dist/IrisGridCopyHandler.js +72 -32
  31. package/dist/IrisGridCopyHandler.js.map +1 -1
  32. package/dist/IrisGridModel.d.ts +41 -13
  33. package/dist/IrisGridModel.d.ts.map +1 -1
  34. package/dist/IrisGridModel.js +47 -7
  35. package/dist/IrisGridModel.js.map +1 -1
  36. package/dist/IrisGridPartitionSelector.css.map +1 -1
  37. package/dist/IrisGridProxyModel.d.ts +2 -0
  38. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  39. package/dist/IrisGridProxyModel.js +6 -0
  40. package/dist/IrisGridProxyModel.js.map +1 -1
  41. package/dist/IrisGridRenderer.js +1 -1
  42. package/dist/IrisGridRenderer.js.map +1 -1
  43. package/dist/IrisGridTableModelTemplate.d.ts +10 -12
  44. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  45. package/dist/IrisGridTableModelTemplate.js +35 -34
  46. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  47. package/dist/IrisGridTheme.d.ts.map +1 -1
  48. package/dist/IrisGridTheme.js +1 -0
  49. package/dist/IrisGridTheme.js.map +1 -1
  50. package/dist/IrisGridTheme.module.css +1 -0
  51. package/dist/IrisGridTheme.module.css.map +1 -1
  52. package/dist/IrisGridTreeTableModel.d.ts +14 -4
  53. package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
  54. package/dist/IrisGridTreeTableModel.js +89 -10
  55. package/dist/IrisGridTreeTableModel.js.map +1 -1
  56. package/dist/PartitionSelectorSearch.css +2 -2
  57. package/dist/PartitionSelectorSearch.css.map +1 -1
  58. package/dist/PendingDataBottomBar.css +1 -8
  59. package/dist/PendingDataBottomBar.css.map +1 -1
  60. package/dist/format-context-menus/CustomFormatAction.css +1 -1
  61. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts.map +1 -1
  62. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +1 -1
  63. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  64. package/dist/mousehandlers/IrisGridContextMenuHandler.css +2 -2
  65. package/dist/mousehandlers/IrisGridContextMenuHandler.css.map +1 -1
  66. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +1 -1
  67. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
  68. package/dist/mousehandlers/IrisGridContextMenuHandler.js +57 -43
  69. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  70. package/dist/mousehandlers/IrisGridCopyCellMouseHandler.d.ts +10 -0
  71. package/dist/mousehandlers/IrisGridCopyCellMouseHandler.d.ts.map +1 -0
  72. package/dist/mousehandlers/IrisGridCopyCellMouseHandler.js +34 -0
  73. package/dist/mousehandlers/IrisGridCopyCellMouseHandler.js.map +1 -0
  74. package/dist/mousehandlers/index.d.ts +1 -0
  75. package/dist/mousehandlers/index.d.ts.map +1 -1
  76. package/dist/mousehandlers/index.js +1 -0
  77. package/dist/mousehandlers/index.js.map +1 -1
  78. package/dist/sidebar/ChartBuilder.css.map +1 -1
  79. package/dist/sidebar/CustomColumnBuilder.css +3 -3
  80. package/dist/sidebar/CustomColumnBuilder.css.map +1 -1
  81. package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
  82. package/dist/sidebar/CustomColumnBuilder.js +2 -5
  83. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  84. package/dist/sidebar/InputEditor.css.map +1 -1
  85. package/dist/sidebar/RollupRows.css +3 -2
  86. package/dist/sidebar/RollupRows.css.map +1 -1
  87. package/dist/sidebar/SelectDistinctBuilder.css.map +1 -1
  88. package/dist/sidebar/TableCsvExporter.css.map +1 -1
  89. package/dist/sidebar/aggregations/AggregationEdit.css.map +1 -1
  90. package/dist/sidebar/aggregations/AggregationEdit.d.ts +2 -2
  91. package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
  92. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  93. package/dist/sidebar/aggregations/AggregationUtils.d.ts +5 -5
  94. package/dist/sidebar/aggregations/AggregationUtils.d.ts.map +1 -1
  95. package/dist/sidebar/aggregations/AggregationUtils.js +1 -1
  96. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  97. package/dist/sidebar/aggregations/Aggregations.css.map +1 -1
  98. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css +1 -1
  99. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css.map +1 -1
  100. package/dist/sidebar/conditional-formatting/StyleEditor.css +1 -1
  101. package/dist/sidebar/conditional-formatting/StyleEditor.css.map +1 -1
  102. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css +4 -2
  103. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css.map +1 -1
  104. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +3 -2
  105. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
  106. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +13 -3
  107. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  108. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css +4 -4
  109. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css.map +1 -1
  110. package/package.json +15 -15
@@ -1,9 +1,9 @@
1
1
  /* stylelint-disable scss/at-import-no-partial-leading-underscore */
2
2
  .iris-grid-filter-menu-item-value {
3
3
  user-select: none;
4
- background: var(--dh-color-content-bg, #2d2a2e);
4
+ background: var(--dh-color-surface-bg);
5
5
  border-radius: 4px 4px 0 0;
6
- padding: 0.375rem 2rem;
6
+ padding: 0.4214rem 2rem;
7
7
  text-overflow: ellipsis;
8
8
  overflow: hidden;
9
9
  }
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../src/mousehandlers/IrisGridContextMenuHandler.scss","../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACIA;EACE;EACA,YC0BW;EDzBX;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE","file":"IrisGridContextMenuHandler.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n$padding-x: 2rem;\n\n.iris-grid-filter-menu-item-value {\n user-select: none;\n background: $content-bg;\n border-radius: $border-radius $border-radius 0 0;\n padding: $input-btn-padding-y $padding-x;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.advanced-filter-button-container {\n transition: $transition opacity;\n}\n\n.advanced-filter-button-container.hidden {\n opacity: 0;\n}\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//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);\n$foreground: var(--dh-color-fg);\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$primary-light: var(--dh-color-accent-1100);\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-light': $primary-light,\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 hsla(var(--dh-color-black-hsl), 0.45); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem hsla(var(--dh-color-true-black-hsl), 0.45); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition:\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\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: hsla(var(--dh-color-accent-hsl), 0.35);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-active-bg: var(--dh-color-accent-1100);\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n// 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-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: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\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: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: hsla(var(--dh-color-accent-hsl), 0.5);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: $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"]}
1
+ {"version":3,"sourceRoot":"","sources":["../../../../node_modules/@deephaven/components/scss/custom.scss","../../src/mousehandlers/IrisGridContextMenuHandler.scss"],"names":[],"mappings":"AAAA;ACIA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE","file":"IrisGridContextMenuHandler.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n$padding-x: 2rem;\n\n.iris-grid-filter-menu-item-value {\n user-select: none;\n background: var(--dh-color-surface-bg);\n border-radius: $border-radius $border-radius 0 0;\n padding: $input-btn-padding-y $padding-x;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.advanced-filter-button-container {\n transition: $transition opacity;\n}\n\n.advanced-filter-button-container.hidden {\n opacity: 0;\n}\n"]}
@@ -51,7 +51,7 @@ declare class IrisGridContextMenuHandler extends GridMouseHandler {
51
51
  componentWillUnmount(): void;
52
52
  dh: DhType;
53
53
  getHeaderActions(modelIndex: ModelIndex, gridPoint: GridPoint): ContextAction[];
54
- getCellActions(modelColumn: number | undefined | null, grid: Grid, gridPoint: GridPoint): ContextAction[];
54
+ getCellActions(modelColumn: ModelIndex, grid: Grid, gridPoint: GridPoint): ContextAction[];
55
55
  /**
56
56
  * Gets an equality filter for the provided numeric value
57
57
  * @param column The column to make the filter for
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":[],"mappings":"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"}
@@ -231,6 +231,7 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
231
231
  actions.push({
232
232
  title: 'Copy Column Name',
233
233
  group: IrisGridContextMenuHandler.GROUP_COPY,
234
+ shortcutText: ContextActionUtils.isMacPlatform() ? '⌥Click' : 'Alt+Click',
234
235
  action: () => {
235
236
  var _model$textForColumnH;
236
237
  copyToClipboard((_model$textForColumnH = model.textForColumnHeader(modelIndex)) !== null && _model$textForColumnH !== void 0 ? _model$textForColumnH : '').catch(e => log.error('Unable to copy header', e));
@@ -253,7 +254,6 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
253
254
  return actions;
254
255
  }
255
256
  getCellActions(modelColumn, grid, gridPoint) {
256
- assertNotNull(modelColumn);
257
257
  var {
258
258
  dh,
259
259
  irisGrid
@@ -271,9 +271,14 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
271
271
  } = model;
272
272
  var modelRow = irisGrid.getModelRow(rowIndex);
273
273
  assertNotNull(modelRow);
274
- var value = model.valueForCell(modelColumn, modelRow);
275
- var valueText = model.textForCell(modelColumn, modelRow);
276
- var column = columns[modelColumn];
274
+ var sourceCell = model.sourceForCell(modelColumn, modelRow);
275
+ var {
276
+ column: sourceColumn,
277
+ row: sourceRow
278
+ } = sourceCell;
279
+ var value = model.valueForCell(sourceColumn, sourceRow);
280
+ var valueText = model.textForCell(sourceColumn, sourceRow);
281
+ var column = columns[sourceColumn];
277
282
  var actions = [];
278
283
  var {
279
284
  quickFilters
@@ -300,7 +305,7 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
300
305
  if (column == null || rowIndex == null) return actions;
301
306
 
302
307
  // grid data area context menu options
303
- if (model.isFilterable(modelColumn)) {
308
+ if (model.isFilterable(sourceColumn)) {
304
309
  // cell data area contextmenu options
305
310
  var filterMenu = {
306
311
  title: 'Filter by Value',
@@ -312,10 +317,10 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
312
317
  };
313
318
  if (value == null) {
314
319
  // null gets a special menu
315
- if (quickFilters.get(modelColumn)) {
320
+ if (quickFilters.get(sourceColumn)) {
316
321
  filterMenu.actions.push({
317
322
  title: 'And',
318
- actions: this.nullFilterActions(column, quickFilters.get(modelColumn), '&&'),
323
+ actions: this.nullFilterActions(column, quickFilters.get(sourceColumn), '&&'),
319
324
  order: 2,
320
325
  group: ContextActions.groups.high
321
326
  });
@@ -323,10 +328,10 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
323
328
  filterMenu.actions.push(...this.nullFilterActions(column));
324
329
  } else if (value === '') {
325
330
  // empty string gets a special menu
326
- if (quickFilters.get(modelColumn)) {
331
+ if (quickFilters.get(sourceColumn)) {
327
332
  filterMenu.actions.push({
328
333
  title: 'And',
329
- actions: this.emptyStringFilterActions(column, quickFilters.get(modelColumn), '&&'),
334
+ actions: this.emptyStringFilterActions(column, quickFilters.get(sourceColumn), '&&'),
330
335
  order: 2,
331
336
  group: ContextActions.groups.high
332
337
  });
@@ -334,10 +339,10 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
334
339
  filterMenu.actions.push(...this.emptyStringFilterActions(column));
335
340
  } else if (TableUtils.isBooleanType(column.type)) {
336
341
  // boolean should have OR condition, and handles it's own null menu options
337
- if (quickFilters.get(modelColumn)) {
342
+ if (quickFilters.get(sourceColumn)) {
338
343
  filterMenu.actions.push({
339
344
  title: 'Or',
340
- actions: this.booleanFilterActions(column, valueText, quickFilters.get(modelColumn), '||'),
345
+ actions: this.booleanFilterActions(column, valueText, quickFilters.get(sourceColumn), '||'),
341
346
  order: 2,
342
347
  group: ContextActions.groups.high
343
348
  });
@@ -345,36 +350,36 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
345
350
  filterMenu.actions.push(...this.booleanFilterActions(column, valueText));
346
351
  } else if (TableUtils.isNumberType(column.type) || TableUtils.isCharType(column.type)) {
347
352
  // Chars get treated like numbers in terms of which filters are available
348
- assertNotNull(modelColumn);
353
+ assertNotNull(sourceColumn);
349
354
  // We want to show the full unformatted value if it's a number, so user knows which value they are matching
350
355
  // If it's a Char we just show the char
351
356
  var numberValueText = TableUtils.isCharType(column.type) ? String.fromCharCode(value) : "".concat(value);
352
- if (quickFilters.get(modelColumn)) {
357
+ if (quickFilters.get(sourceColumn)) {
353
358
  filterMenu.actions.push({
354
359
  title: 'And',
355
- actions: this.numberFilterActions(column, numberValueText, value, quickFilters.get(modelColumn), '&&'),
360
+ actions: this.numberFilterActions(column, numberValueText, value, quickFilters.get(sourceColumn), '&&'),
356
361
  order: 2,
357
362
  group: ContextActions.groups.high
358
363
  });
359
364
  }
360
- filterMenu.actions.push(...this.numberFilterActions(column, numberValueText, value, quickFilters.get(modelColumn)));
365
+ filterMenu.actions.push(...this.numberFilterActions(column, numberValueText, value, quickFilters.get(sourceColumn)));
361
366
  } else if (TableUtils.isDateType(column.type)) {
362
367
  var dateValueText = dateFilterFormatter.format(value);
363
368
  var previewValue = previewFilterFormatter.format(value);
364
- if (quickFilters.get(modelColumn)) {
369
+ if (quickFilters.get(sourceColumn)) {
365
370
  filterMenu.actions.push({
366
371
  title: 'And',
367
- actions: this.dateFilterActions(column, dateValueText, previewValue, value, quickFilters.get(modelColumn), '&&'),
372
+ actions: this.dateFilterActions(column, dateValueText, previewValue, value, quickFilters.get(sourceColumn), '&&'),
368
373
  order: 2,
369
374
  group: ContextActions.groups.high
370
375
  });
371
376
  }
372
- filterMenu.actions.push(...this.dateFilterActions(column, dateValueText, previewValue, value, quickFilters.get(modelColumn)));
377
+ filterMenu.actions.push(...this.dateFilterActions(column, dateValueText, previewValue, value, quickFilters.get(sourceColumn)));
373
378
  } else {
374
- if (quickFilters.get(modelColumn)) {
379
+ if (quickFilters.get(sourceColumn)) {
375
380
  filterMenu.actions.push({
376
381
  title: 'And',
377
- actions: this.stringFilterActions(column, valueText, value, quickFilters.get(modelColumn), '&&'),
382
+ actions: this.stringFilterActions(column, valueText, value, quickFilters.get(sourceColumn), '&&'),
378
383
  order: 2,
379
384
  group: ContextActions.groups.high
380
385
  });
@@ -387,18 +392,18 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
387
392
  }
388
393
 
389
394
  // Expand/Collapse options
390
- if (isExpandableGridModel(model) && model.isRowExpandable(modelRow)) {
395
+ if (isExpandableGridModel(model) && model.isRowExpandable(sourceRow)) {
391
396
  // If there are grouped columns, then it is a rollup
392
- // For rollups, the column number will be the depth minus one
393
- var expandingColumn = model.groupedColumns.length > 0 ? model.depthForRow(modelRow) - 1 : 0;
394
- var cellValue = model.valueForCell(expandingColumn, modelRow);
395
- var cellText = cellValue == null ? 'null' : model.textForCell(expandingColumn, modelRow);
397
+ // The first column will be the "group" column with the value that should be expanded
398
+ var expandingColumn = 0;
399
+ var cellValue = model.valueForCell(expandingColumn, sourceRow);
400
+ var cellText = cellValue == null ? 'null' : model.textForCell(expandingColumn, sourceRow);
396
401
  actions.push({
397
- title: IrisGridContextMenuHandler.getRowOptionFormatted(model.isRowExpanded(modelRow) ? 'Collapse' : 'Expand', cellText),
402
+ title: IrisGridContextMenuHandler.getRowOptionFormatted(model.isRowExpanded(sourceRow) ? 'Collapse' : 'Expand', cellText),
398
403
  group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,
399
404
  order: 10,
400
405
  action: () => {
401
- model.setRowExpanded(modelRow, !model.isRowExpanded(modelRow));
406
+ model.setRowExpanded(sourceRow, !model.isRowExpanded(sourceRow));
402
407
  }
403
408
  });
404
409
  if (model.isExpandAllAvailable === true) {
@@ -407,7 +412,7 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
407
412
  group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,
408
413
  order: 20,
409
414
  action: () => {
410
- model.setRowExpanded(modelRow, true, true);
415
+ model.setRowExpanded(sourceRow, true, true);
411
416
  }
412
417
  });
413
418
  }
@@ -443,6 +448,7 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
443
448
  actions.push({
444
449
  title: 'Copy Cell',
445
450
  group: IrisGridContextMenuHandler.GROUP_COPY,
451
+ shortcutText: ContextActionUtils.isMacPlatform() ? '⌥Click' : 'Alt+Click',
446
452
  order: 10,
447
453
  action: () => {
448
454
  irisGrid.copyCell(columnIndex, rowIndex);
@@ -533,9 +539,14 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
533
539
  } = metrics;
534
540
  var actions = [];
535
541
  if (modelColumn != null && modelRow != null) {
536
- var value = model.valueForCell(modelColumn, modelRow);
537
- var valueText = model.textForCell(modelColumn, modelRow);
538
- var column = columns[modelColumn];
542
+ var sourceCell = model.sourceForCell(modelColumn, modelRow !== null && modelRow !== void 0 ? modelRow : 0);
543
+ var {
544
+ column: sourceColumn,
545
+ row: sourceRow
546
+ } = sourceCell;
547
+ var value = model.valueForCell(sourceColumn, sourceRow);
548
+ var valueText = model.textForCell(sourceColumn, sourceRow);
549
+ var column = columns[sourceColumn];
539
550
  var {
540
551
  onContextMenu
541
552
  } = irisGrid.props;
@@ -552,18 +563,21 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
552
563
  }));
553
564
  }
554
565
  }
555
- if (modelColumn != null && model.isFilterable(modelColumn)) {
556
- // Clear column filter should still be available after last row
557
- // And should be available in both header and body context menus
558
- actions.push({
559
- title: 'Clear Column Filter',
560
- group: IrisGridContextMenuHandler.GROUP_FILTER,
561
- order: 30,
562
- action: () => {
563
- this.irisGrid.removeColumnFilter(modelColumn);
564
- },
565
- disabled: !(quickFilters.has(modelColumn) || advancedFilters.has(modelColumn))
566
- });
566
+ if (modelColumn != null) {
567
+ var clearFilterRange = model.getClearFilterRange(modelColumn);
568
+ if (clearFilterRange != null && clearFilterRange.length > 0) {
569
+ // Clear column filter should still be available after last row
570
+ // And should be available in both header and body context menus
571
+ actions.push({
572
+ title: clearFilterRange[1] - clearFilterRange[0] > 0 ? 'Clear Group Filter' : 'Clear Column Filter',
573
+ group: IrisGridContextMenuHandler.GROUP_FILTER,
574
+ order: 30,
575
+ action: () => {
576
+ this.irisGrid.removeColumnFilter(clearFilterRange);
577
+ },
578
+ disabled: !Array.from(quickFilters.keys()).some(col => col >= clearFilterRange[0] && col <= clearFilterRange[1]) && !Array.from(advancedFilters.keys()).some(col => col >= clearFilterRange[0] && col <= clearFilterRange[1])
579
+ });
580
+ }
567
581
  }
568
582
  if (isFilterBarShown ? y <= gridY : y <= columnHeaderHeight * columnHeaderMaxDepth && columnHeaderDepth === 0) {
569
583
  // grid header context menu options