@deephaven/iris-grid 0.15.1-beta.1 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/GotoRow.css +17 -22
- package/dist/GotoRow.css.map +1 -1
- package/dist/GotoRow.d.ts +6 -3
- package/dist/GotoRow.d.ts.map +1 -1
- package/dist/GotoRow.js +38 -33
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.css +1 -0
- package/dist/IrisGrid.css.map +1 -1
- package/dist/IrisGrid.d.ts +7 -3
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +89 -9
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridTheme.d.ts.map +1 -1
- package/dist/IrisGridTheme.js +2 -0
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTheme.module.css +1 -0
- package/dist/IrisGridTheme.module.css.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +2 -4
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/package.json +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridTheme.d.ts","sourceRoot":"","sources":["../src/IrisGridTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAG7E,oBAAY,iBAAiB,GAAG,aAAa,GAAG;IAC9C,wBAAwB,EAAE,MAAM,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,SAAS,CAAC;IAChC,wBAAwB,EAAE,SAAS,CAAC;IACpC,2BAA2B,EAAE,SAAS,CAAC;IACvC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,SAAS,CAAC;IAC3B,gBAAgB,EAAE,SAAS,CAAC;IAC5B,SAAS,EAAE,SAAS,CAAC;IACrB,mBAAmB,EAAE,SAAS,CAAC;IAC/B,mBAAmB,EAAE,SAAS,CAAC;IAC/B,eAAe,EAAE,SAAS,CAAC;IAC3B,cAAc,EAAE,SAAS,CAAC;IAC1B,yBAAyB,EAAE,SAAS,CAAC;IACrC,gCAAgC,EAAE,SAAS,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,SAAS,CAAC;IACtB,qBAAqB,EAAE,SAAS,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,SAAS,CAAC;IAC9B,oBAAoB,EAAE,SAAS,CAAC;IAChC,sCAAsC,EAAE,SAAS,CAAC;IAClD,gCAAgC,EAAE,SAAS,CAAC;IAC5C,uBAAuB,EAAE,SAAS,CAAC;IACnC,0CAA0C,EAAE,SAAS,CAAC;IACtD,mBAAmB,EAAE,SAAS,CAAC;IAC/B,0BAA0B,EAAE,MAAM,CAAC;IACnC,8BAA8B,EAAE,SAAS,CAAC;IAC1C,mBAAmB,EAAE,SAAS,CAAC;IAC/B,wBAAwB,EAAE,SAAS,CAAC;IACpC,oBAAoB,EAAE,iBAAiB,CAAC;CACzC,CAAC;AAEF,QAAA,MAAM,KAAK,EAAE,OAAO,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"IrisGridTheme.d.ts","sourceRoot":"","sources":["../src/IrisGridTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAG7E,oBAAY,iBAAiB,GAAG,aAAa,GAAG;IAC9C,wBAAwB,EAAE,MAAM,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,SAAS,CAAC;IAChC,wBAAwB,EAAE,SAAS,CAAC;IACpC,2BAA2B,EAAE,SAAS,CAAC;IACvC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,SAAS,CAAC;IAC3B,gBAAgB,EAAE,SAAS,CAAC;IAC5B,SAAS,EAAE,SAAS,CAAC;IACrB,mBAAmB,EAAE,SAAS,CAAC;IAC/B,mBAAmB,EAAE,SAAS,CAAC;IAC/B,eAAe,EAAE,SAAS,CAAC;IAC3B,cAAc,EAAE,SAAS,CAAC;IAC1B,yBAAyB,EAAE,SAAS,CAAC;IACrC,gCAAgC,EAAE,SAAS,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,SAAS,CAAC;IACtB,qBAAqB,EAAE,SAAS,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,SAAS,CAAC;IAC9B,oBAAoB,EAAE,SAAS,CAAC;IAChC,sCAAsC,EAAE,SAAS,CAAC;IAClD,gCAAgC,EAAE,SAAS,CAAC;IAC5C,uBAAuB,EAAE,SAAS,CAAC;IACnC,0CAA0C,EAAE,SAAS,CAAC;IACtD,mBAAmB,EAAE,SAAS,CAAC;IAC/B,0BAA0B,EAAE,MAAM,CAAC;IACnC,8BAA8B,EAAE,SAAS,CAAC;IAC1C,mBAAmB,EAAE,SAAS,CAAC;IAC/B,wBAAwB,EAAE,SAAS,CAAC;IACpC,oBAAoB,EAAE,iBAAiB,CAAC;CACzC,CAAC;AAEF,QAAA,MAAM,KAAK,EAAE,OAAO,CAAC,iBAAiB,CA6FpC,CAAC;AAEH,eAAe,KAAK,CAAC"}
|
package/dist/IrisGridTheme.js
CHANGED
|
@@ -24,6 +24,8 @@ var theme = Object.freeze({
|
|
|
24
24
|
scrollBarColor: IrisGridTheme['scroll-bar-color'],
|
|
25
25
|
scrollBarHoverColor: IrisGridTheme['scroll-bar-hover-color'],
|
|
26
26
|
scrollBarActiveColor: IrisGridTheme['scroll-bar-active-color'],
|
|
27
|
+
scrollBarSelectionTickColor: IrisGridTheme['selected-row-hover-bg'],
|
|
28
|
+
scrollBarActiveSelectionTickColor: IrisGridTheme['scroll-bar-active-selection-tick-color'],
|
|
27
29
|
textColor: IrisGridTheme['text-color'],
|
|
28
30
|
positiveNumberColor: IrisGridTheme['positive-number-color'],
|
|
29
31
|
negativeNumberColor: IrisGridTheme['negative-number-color'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/IrisGridTheme.ts"],"names":["IrisGridTheme","theme","Object","freeze","backgroundColor","font","headerBackgroundColor","headerColor","headerSeparatorColor","headerSeparatorHoverColor","headerHiddenSeparatorHoverColor","headerSortBarColor","headerReverseBarColor","headerBarCasingColor","headerFont","rowBackgroundColors","rowHoverBackgroundColor","selectionColor","selectionOutlineColor","selectionOutlineCasingColor","selectedRowHoverBackgroundColor","scrollBarBackgroundColor","scrollBarHoverBackgroundColor","scrollBarCasingColor","scrollBarCornerColor","scrollBarColor","scrollBarHoverColor","scrollBarActiveColor","textColor","positiveNumberColor","negativeNumberColor","zeroNumberColor","dateColor","pendingTextColor","errorTextColor","nullStringColor","filterBarActiveBackgroundColor","filterBarExpandedBackgroundColor","filterBarExpandedActiveBackgroundColor","filterBarExpandedActiveCellBackgroundColor","filterBarSeparatorColor","filterBarActiveColor","filterBarErrorColor","filterIconColor","scrimColor","contextMenuSortIconColor","contextMenuReverseIconColor","allowRowResize","autoSelectRow","gridColumnColor","gridRowColor","groupedColumnDividerColor","columnHoverBackgroundColor","headerHorizontalPadding","scrollBarSize","scrollBarHoverSize","minScrollHandleSize","rowHeight","parseInt","columnWidth","rowHeaderWidth","rowFooterWidth","columnHeaderHeight","filterBarHeight","filterBarCollapsedHeight","sortHeaderBarHeight","reverseHeaderBarHeight","filterBarHorizontalPadding","scrimBlurSize","minScrimTransitionTime","maxScrimTransitionTime","scrollSnapToRow","linkerColumnHoverBackgroundColor","treeLineColor","treeMarkerColor","treeMarkerHoverColor","floatingGridColumnColor","floatingGridRowColor","floatingRowBackgroundColors","floatingDividerInnerColor","floatingDividerOuterColor","overflowButtonColor","overflowButtonHoverColor"],"mappings":"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","sourcesContent":["import type { GridThemeType } from '@deephaven/grid';\nimport { GridColor, NullableGridColor } from '@deephaven/grid/src/GridTheme';\nimport IrisGridTheme from './IrisGridTheme.module.scss';\n\nexport type IrisGridThemeType = GridThemeType & {\n filterBarCollapsedHeight: number;\n filterBarHeight: number;\n reverseHeaderBarHeight: number;\n filterIconColor: string;\n filterBarActiveColor: GridColor;\n contextMenuSortIconColor: GridColor;\n contextMenuReverseIconColor: GridColor;\n minScrimTransitionTime: number;\n maxScrimTransitionTime: number;\n nullStringColor: GridColor;\n pendingTextColor: GridColor;\n dateColor: GridColor;\n positiveNumberColor: GridColor;\n negativeNumberColor: GridColor;\n zeroNumberColor: GridColor;\n errorTextColor: GridColor;\n groupedColumnDividerColor: GridColor;\n linkerColumnHoverBackgroundColor: GridColor;\n scrimBlurSize: number;\n scrimColor: GridColor;\n headerReverseBarColor: GridColor;\n sortHeaderBarHeight: number;\n headerSortBarColor: GridColor;\n headerBarCasingColor: GridColor;\n filterBarExpandedActiveBackgroundColor: GridColor;\n filterBarExpandedBackgroundColor: GridColor;\n filterBarSeparatorColor: GridColor;\n filterBarExpandedActiveCellBackgroundColor: GridColor;\n filterBarErrorColor: GridColor;\n filterBarHorizontalPadding: number;\n filterBarActiveBackgroundColor: GridColor;\n overflowButtonColor: GridColor;\n overflowButtonHoverColor: GridColor;\n floatingGridRowColor: NullableGridColor;\n};\n\nconst theme: Partial<IrisGridThemeType> = Object.freeze({\n backgroundColor: IrisGridTheme['grid-bg'],\n font: IrisGridTheme.font,\n headerBackgroundColor: IrisGridTheme['header-bg'],\n headerColor: IrisGridTheme['header-color'],\n headerSeparatorColor: IrisGridTheme['header-separator-color'],\n headerSeparatorHoverColor: IrisGridTheme['header-separator-hover-color'],\n headerHiddenSeparatorHoverColor:\n IrisGridTheme['header-hidden-separator-hover-color'],\n headerSortBarColor: IrisGridTheme['header-sort-bar-color'],\n headerReverseBarColor: IrisGridTheme['header-reverse-bar-color'],\n headerBarCasingColor: IrisGridTheme['header-bar-casing-color'],\n headerFont: IrisGridTheme['header-font'],\n rowBackgroundColors: IrisGridTheme['row-background-colors'],\n rowHoverBackgroundColor: IrisGridTheme['row-hover-bg'],\n selectionColor: IrisGridTheme['selection-color'],\n selectionOutlineColor: IrisGridTheme['selection-outline-color'],\n selectionOutlineCasingColor: IrisGridTheme['selection-outline-casing-color'],\n selectedRowHoverBackgroundColor: IrisGridTheme['selected-row-hover-bg'],\n scrollBarBackgroundColor: IrisGridTheme['scroll-bar-bg'],\n scrollBarHoverBackgroundColor: IrisGridTheme['scroll-bar-hover-bg'],\n scrollBarCasingColor: IrisGridTheme['scroll-bar-casing-color'],\n scrollBarCornerColor: IrisGridTheme['scroll-bar-corner-color'],\n scrollBarColor: IrisGridTheme['scroll-bar-color'],\n scrollBarHoverColor: IrisGridTheme['scroll-bar-hover-color'],\n scrollBarActiveColor: IrisGridTheme['scroll-bar-active-color'],\n textColor: IrisGridTheme['text-color'],\n positiveNumberColor: IrisGridTheme['positive-number-color'],\n negativeNumberColor: IrisGridTheme['negative-number-color'],\n zeroNumberColor: IrisGridTheme['zero-number-color'],\n dateColor: IrisGridTheme['date-color'],\n pendingTextColor: IrisGridTheme['pending-text-color'],\n errorTextColor: IrisGridTheme['error-text-color'],\n nullStringColor: IrisGridTheme['null-string-color'],\n filterBarActiveBackgroundColor: IrisGridTheme['filter-bar-active-bg'],\n filterBarExpandedBackgroundColor: IrisGridTheme['filter-bar-expanded-bg'],\n filterBarExpandedActiveBackgroundColor:\n IrisGridTheme['filter-bar-expanded-active-bg'],\n filterBarExpandedActiveCellBackgroundColor:\n IrisGridTheme['filter-bar-expanded-active-cell-bg'],\n filterBarSeparatorColor: IrisGridTheme['filter-bar-separator-color'],\n filterBarActiveColor: IrisGridTheme['filter-bar-active-color'],\n filterBarErrorColor: IrisGridTheme['filter-bar-error-color'],\n filterIconColor: IrisGridTheme['filter-icon-color'],\n scrimColor: IrisGridTheme['scrim-color'],\n contextMenuSortIconColor: IrisGridTheme['context-menu-sort-icon-color'],\n contextMenuReverseIconColor: IrisGridTheme['context-menu-reverse-icon-color'],\n\n allowRowResize: false,\n autoSelectRow: true,\n gridColumnColor: null,\n gridRowColor: null,\n groupedColumnDividerColor: IrisGridTheme['grouped-column-divider-color'],\n columnHoverBackgroundColor: null,\n headerHorizontalPadding: 12,\n scrollBarSize: 13,\n scrollBarHoverSize: 16, // system default scrollbar width is 17\n minScrollHandleSize: 24,\n rowHeight: parseInt(IrisGridTheme['row-height'], 10) || 19, // IrisGrid test breaks without the fallback value\n columnWidth: 100,\n rowHeaderWidth: 0,\n rowFooterWidth: 60,\n columnHeaderHeight: 30,\n filterBarHeight: 30, // includes 1px casing at bottom\n filterBarCollapsedHeight: 5, // includes 1px casing at bottom\n sortHeaderBarHeight: 2,\n reverseHeaderBarHeight: 4,\n filterBarHorizontalPadding: 4,\n\n // Amount of blur to apply to the bottom of the scrim while animating in\n scrimBlurSize: 25,\n minScrimTransitionTime: 150,\n maxScrimTransitionTime: 350,\n\n scrollSnapToRow: true,\n\n linkerColumnHoverBackgroundColor: IrisGridTheme['linker-column-hover-bg'],\n\n treeLineColor: IrisGridTheme['tree-line-color'],\n treeMarkerColor: IrisGridTheme['tree-marker-color'],\n treeMarkerHoverColor: IrisGridTheme['tree-marker-hover-color'],\n\n floatingGridColumnColor: null,\n floatingGridRowColor: IrisGridTheme['floating-grid-row-color'],\n floatingRowBackgroundColors: IrisGridTheme['floating-row-background-colors'],\n floatingDividerInnerColor: IrisGridTheme['floating-divider-inner-color'],\n floatingDividerOuterColor: IrisGridTheme['floating-divider-outer-color'],\n\n overflowButtonColor: IrisGridTheme['overflow-button-color'],\n overflowButtonHoverColor: IrisGridTheme['overflow-button-hover-color'],\n});\n\nexport default theme;\n"],"file":"IrisGridTheme.js"}
|
|
1
|
+
{"version":3,"sources":["../src/IrisGridTheme.ts"],"names":["IrisGridTheme","theme","Object","freeze","backgroundColor","font","headerBackgroundColor","headerColor","headerSeparatorColor","headerSeparatorHoverColor","headerHiddenSeparatorHoverColor","headerSortBarColor","headerReverseBarColor","headerBarCasingColor","headerFont","rowBackgroundColors","rowHoverBackgroundColor","selectionColor","selectionOutlineColor","selectionOutlineCasingColor","selectedRowHoverBackgroundColor","scrollBarBackgroundColor","scrollBarHoverBackgroundColor","scrollBarCasingColor","scrollBarCornerColor","scrollBarColor","scrollBarHoverColor","scrollBarActiveColor","scrollBarSelectionTickColor","scrollBarActiveSelectionTickColor","textColor","positiveNumberColor","negativeNumberColor","zeroNumberColor","dateColor","pendingTextColor","errorTextColor","nullStringColor","filterBarActiveBackgroundColor","filterBarExpandedBackgroundColor","filterBarExpandedActiveBackgroundColor","filterBarExpandedActiveCellBackgroundColor","filterBarSeparatorColor","filterBarActiveColor","filterBarErrorColor","filterIconColor","scrimColor","contextMenuSortIconColor","contextMenuReverseIconColor","allowRowResize","autoSelectRow","gridColumnColor","gridRowColor","groupedColumnDividerColor","columnHoverBackgroundColor","headerHorizontalPadding","scrollBarSize","scrollBarHoverSize","minScrollHandleSize","rowHeight","parseInt","columnWidth","rowHeaderWidth","rowFooterWidth","columnHeaderHeight","filterBarHeight","filterBarCollapsedHeight","sortHeaderBarHeight","reverseHeaderBarHeight","filterBarHorizontalPadding","scrimBlurSize","minScrimTransitionTime","maxScrimTransitionTime","scrollSnapToRow","linkerColumnHoverBackgroundColor","treeLineColor","treeMarkerColor","treeMarkerHoverColor","floatingGridColumnColor","floatingGridRowColor","floatingRowBackgroundColors","floatingDividerInnerColor","floatingDividerOuterColor","overflowButtonColor","overflowButtonHoverColor"],"mappings":"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","sourcesContent":["import type { GridThemeType } from '@deephaven/grid';\nimport { GridColor, NullableGridColor } from '@deephaven/grid/src/GridTheme';\nimport IrisGridTheme from './IrisGridTheme.module.scss';\n\nexport type IrisGridThemeType = GridThemeType & {\n filterBarCollapsedHeight: number;\n filterBarHeight: number;\n reverseHeaderBarHeight: number;\n filterIconColor: string;\n filterBarActiveColor: GridColor;\n contextMenuSortIconColor: GridColor;\n contextMenuReverseIconColor: GridColor;\n minScrimTransitionTime: number;\n maxScrimTransitionTime: number;\n nullStringColor: GridColor;\n pendingTextColor: GridColor;\n dateColor: GridColor;\n positiveNumberColor: GridColor;\n negativeNumberColor: GridColor;\n zeroNumberColor: GridColor;\n errorTextColor: GridColor;\n groupedColumnDividerColor: GridColor;\n linkerColumnHoverBackgroundColor: GridColor;\n scrimBlurSize: number;\n scrimColor: GridColor;\n headerReverseBarColor: GridColor;\n sortHeaderBarHeight: number;\n headerSortBarColor: GridColor;\n headerBarCasingColor: GridColor;\n filterBarExpandedActiveBackgroundColor: GridColor;\n filterBarExpandedBackgroundColor: GridColor;\n filterBarSeparatorColor: GridColor;\n filterBarExpandedActiveCellBackgroundColor: GridColor;\n filterBarErrorColor: GridColor;\n filterBarHorizontalPadding: number;\n filterBarActiveBackgroundColor: GridColor;\n overflowButtonColor: GridColor;\n overflowButtonHoverColor: GridColor;\n floatingGridRowColor: NullableGridColor;\n};\n\nconst theme: Partial<IrisGridThemeType> = Object.freeze({\n backgroundColor: IrisGridTheme['grid-bg'],\n font: IrisGridTheme.font,\n headerBackgroundColor: IrisGridTheme['header-bg'],\n headerColor: IrisGridTheme['header-color'],\n headerSeparatorColor: IrisGridTheme['header-separator-color'],\n headerSeparatorHoverColor: IrisGridTheme['header-separator-hover-color'],\n headerHiddenSeparatorHoverColor:\n IrisGridTheme['header-hidden-separator-hover-color'],\n headerSortBarColor: IrisGridTheme['header-sort-bar-color'],\n headerReverseBarColor: IrisGridTheme['header-reverse-bar-color'],\n headerBarCasingColor: IrisGridTheme['header-bar-casing-color'],\n headerFont: IrisGridTheme['header-font'],\n rowBackgroundColors: IrisGridTheme['row-background-colors'],\n rowHoverBackgroundColor: IrisGridTheme['row-hover-bg'],\n selectionColor: IrisGridTheme['selection-color'],\n selectionOutlineColor: IrisGridTheme['selection-outline-color'],\n selectionOutlineCasingColor: IrisGridTheme['selection-outline-casing-color'],\n selectedRowHoverBackgroundColor: IrisGridTheme['selected-row-hover-bg'],\n scrollBarBackgroundColor: IrisGridTheme['scroll-bar-bg'],\n scrollBarHoverBackgroundColor: IrisGridTheme['scroll-bar-hover-bg'],\n scrollBarCasingColor: IrisGridTheme['scroll-bar-casing-color'],\n scrollBarCornerColor: IrisGridTheme['scroll-bar-corner-color'],\n scrollBarColor: IrisGridTheme['scroll-bar-color'],\n scrollBarHoverColor: IrisGridTheme['scroll-bar-hover-color'],\n scrollBarActiveColor: IrisGridTheme['scroll-bar-active-color'],\n scrollBarSelectionTickColor: IrisGridTheme['selected-row-hover-bg'],\n scrollBarActiveSelectionTickColor:\n IrisGridTheme['scroll-bar-active-selection-tick-color'],\n textColor: IrisGridTheme['text-color'],\n positiveNumberColor: IrisGridTheme['positive-number-color'],\n negativeNumberColor: IrisGridTheme['negative-number-color'],\n zeroNumberColor: IrisGridTheme['zero-number-color'],\n dateColor: IrisGridTheme['date-color'],\n pendingTextColor: IrisGridTheme['pending-text-color'],\n errorTextColor: IrisGridTheme['error-text-color'],\n nullStringColor: IrisGridTheme['null-string-color'],\n filterBarActiveBackgroundColor: IrisGridTheme['filter-bar-active-bg'],\n filterBarExpandedBackgroundColor: IrisGridTheme['filter-bar-expanded-bg'],\n filterBarExpandedActiveBackgroundColor:\n IrisGridTheme['filter-bar-expanded-active-bg'],\n filterBarExpandedActiveCellBackgroundColor:\n IrisGridTheme['filter-bar-expanded-active-cell-bg'],\n filterBarSeparatorColor: IrisGridTheme['filter-bar-separator-color'],\n filterBarActiveColor: IrisGridTheme['filter-bar-active-color'],\n filterBarErrorColor: IrisGridTheme['filter-bar-error-color'],\n filterIconColor: IrisGridTheme['filter-icon-color'],\n scrimColor: IrisGridTheme['scrim-color'],\n contextMenuSortIconColor: IrisGridTheme['context-menu-sort-icon-color'],\n contextMenuReverseIconColor: IrisGridTheme['context-menu-reverse-icon-color'],\n\n allowRowResize: false,\n autoSelectRow: true,\n gridColumnColor: null,\n gridRowColor: null,\n groupedColumnDividerColor: IrisGridTheme['grouped-column-divider-color'],\n columnHoverBackgroundColor: null,\n headerHorizontalPadding: 12,\n scrollBarSize: 13,\n scrollBarHoverSize: 16, // system default scrollbar width is 17\n minScrollHandleSize: 24,\n rowHeight: parseInt(IrisGridTheme['row-height'], 10) || 19, // IrisGrid test breaks without the fallback value\n columnWidth: 100,\n rowHeaderWidth: 0,\n rowFooterWidth: 60,\n columnHeaderHeight: 30,\n filterBarHeight: 30, // includes 1px casing at bottom\n filterBarCollapsedHeight: 5, // includes 1px casing at bottom\n sortHeaderBarHeight: 2,\n reverseHeaderBarHeight: 4,\n filterBarHorizontalPadding: 4,\n\n // Amount of blur to apply to the bottom of the scrim while animating in\n scrimBlurSize: 25,\n minScrimTransitionTime: 150,\n maxScrimTransitionTime: 350,\n\n scrollSnapToRow: true,\n\n linkerColumnHoverBackgroundColor: IrisGridTheme['linker-column-hover-bg'],\n\n treeLineColor: IrisGridTheme['tree-line-color'],\n treeMarkerColor: IrisGridTheme['tree-marker-color'],\n treeMarkerHoverColor: IrisGridTheme['tree-marker-hover-color'],\n\n floatingGridColumnColor: null,\n floatingGridRowColor: IrisGridTheme['floating-grid-row-color'],\n floatingRowBackgroundColors: IrisGridTheme['floating-row-background-colors'],\n floatingDividerInnerColor: IrisGridTheme['floating-divider-inner-color'],\n floatingDividerOuterColor: IrisGridTheme['floating-divider-outer-color'],\n\n overflowButtonColor: IrisGridTheme['overflow-button-color'],\n overflowButtonHoverColor: IrisGridTheme['overflow-button-hover-color'],\n});\n\nexport default theme;\n"],"file":"IrisGridTheme.js"}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
selection-outline-casing-color: #211f22;
|
|
19
19
|
row-hover-bg: #4b494c;
|
|
20
20
|
selected-row-hover-bg: rgba(118, 217, 228, 0.25);
|
|
21
|
+
scroll-bar-active-selection-tick-color: rgba(118, 217, 228, 0.5);
|
|
21
22
|
scroll-bar-bg: #322f33;
|
|
22
23
|
scroll-bar-hover-bg: #373438;
|
|
23
24
|
scroll-bar-casing-color: #555356;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../src/IrisGridTheme.module.scss","../../components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;AAUA;EACE,SCgBS;EDfT;EACA,WCFc;EDGd,cCDe;EDEf,wBCYS;EDXT,8BCKS;EDJT,qCCLc;EDMd,uBCVO;EDWP,0BCiDW;EDhDX,yBCOS;EDNT;EACA,YAfW;EAgBX;EACA,iBArBgB;EAsBhB,yBClBK;EDmBL,gCCCS;EDAT,cAnBa;EAoBb;EAEA,
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../src/IrisGridTheme.module.scss","../../components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;AAUA;EACE,SCgBS;EDfT;EACA,WCFc;EDGd,cCDe;EDEf,wBCYS;EDXT,8BCKS;EDJT,qCCLc;EDMd,uBCVO;EDWP,0BCiDW;EDhDX,yBCOS;EDNT;EACA,YAfW;EAgBX;EACA,iBArBgB;EAsBhB,yBClBK;EDmBL,gCCCS;EDAT,cAnBa;EAoBb;EACA;EAEA,eCLS;EDMT,qBCPS;EDQT,yBCVS;EDWT,yBCRS;EDST,kBCbS;EDcT,wBCfS;EDgBT,yBCjBS;EDmBT,YC1Be;ED2Bf,uBClCM;EDmCN,uBCtCI;EDuCJ,mBCrCO;EDsCP,YCtCO;EDuCP;EACA,kBC1CI;ED2CJ,mBCzBS;ED4BT;EAKA,yBC1Cc;ED2Cd,wBC9BS;ED+BT;EAKA;EAKA,4BC7CS;ED8CT,wBChEI;EDiEJ,mBCxDc;ED0Dd,aChDS;EDiDT,8BC/DO;EDgEP,iCCJW;EDKX;EACA,iBCpDS;EDqDT,mBCvDS;EDwDT,yBC1DS;ED2DT,8BC/De;EDiEf,yBCxDS;EDyDT,gCCxDS;EDyDT,8BCzDS;ED0DT,8BCvDS;EDyDT,uBChES;EDiET,6BCnES","file":"IrisGridTheme.module.css"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
7
7
|
/* eslint class-methods-use-this: "off" */
|
|
8
8
|
import React from 'react';
|
|
9
9
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
10
|
-
import { dhFilterFilled, vsRemove, vsCheck, vsFilter
|
|
10
|
+
import { dhFilterFilled, vsRemove, vsCheck, vsFilter } from '@deephaven/icons';
|
|
11
11
|
import debounce from 'lodash.debounce';
|
|
12
12
|
import { ContextActions, ContextActionUtils, GLOBAL_SHORTCUTS } from '@deephaven/components';
|
|
13
13
|
import { GridMouseHandler, isEditableGridModel } from '@deephaven/grid';
|
|
@@ -343,12 +343,10 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
|
|
|
343
343
|
};
|
|
344
344
|
var gotoRow = {
|
|
345
345
|
title: 'Go to',
|
|
346
|
-
icon: vsReply,
|
|
347
|
-
iconColor: filterIconColor,
|
|
348
346
|
shortcut: SHORTCUTS.TABLE.GOTO_ROW,
|
|
349
347
|
group: IrisGridContextMenuHandler.GROUP_GOTO,
|
|
350
348
|
order: 10,
|
|
351
|
-
action: () => this.irisGrid.
|
|
349
|
+
action: () => this.irisGrid.toggleGotoRow("".concat(rowIndex + 1))
|
|
352
350
|
};
|
|
353
351
|
|
|
354
352
|
if (value != null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":["React","FontAwesomeIcon","dhFilterFilled","vsRemove","vsCheck","vsFilter","vsReply","debounce","ContextActions","ContextActionUtils","GLOBAL_SHORTCUTS","GridMouseHandler","isEditableGridModel","dh","TableColumnFormatter","DateTimeColumnFormatter","TableUtils","Log","assertNotNull","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu","SHORTCUTS","log","module","DEBOUNCE_UPDATE_FORMAT","CONTEXT_MENU_DATE_FORMAT","IrisGridContextMenuHandler","getQuickFilterCondition","columnFilter","newColumnFilter","additive","and","getQuickFilterText","filterText","newFilterText","getNumberValueEqualsFilter","column","value","filter","Number","POSITIVE_INFINITY","FilterCondition","invoke","greaterThan","FilterValue","ofNumber","NEGATIVE_INFINITY","lessThan","isNaN","filterValue","getFilterValueForNumberOrChar","type","eq","columnType","isCharType","ofString","String","fromCharCode","constructor","irisGrid","debouncedUpdateCustomFormat","handleFormatSelection","componentWillUnmount","flush","getHeaderActions","modelColumn","gridPoint","columnIndex","model","props","columns","actions","metrics","reverseType","quickFilters","advancedFilters","searchFilter","state","theme","getTheme","filterIconColor","filterBarActiveColor","contextMenuSortIconColor","contextMenuReverseIconColor","modelSort","sort","columnSort","getSortForColumn","hasReverse","REVERSE_TYPE","NONE","userColumnWidths","isColumnHidden","values","some","columnWidth","isColumnFrozen","push","title","group","GROUP_HIDE_COLUMNS","action","hideColumnByVisibleIndex","unFreezeColumnByColumnName","name","freezeColumnByColumnName","order","showAllColumns","disabled","icon","iconColor","shortcut","TABLE","TOGGLE_QUICK_FILTER","GROUP_FILTER","toggleFilterBar","get","handleAdvancedMenuOpened","CLEAR_FILTERS","clearAllFilters","size","GROUP_SORT","sortByActions","length","additionalSortActions","sortColumn","COLUMN_SORT_DIRECTION","none","isReversible","REVERSE","reverse","POST_SORT","GROUP_COPY","copyToClipboard","textForColumnHeader","catch","e","error","isDateType","GROUP_FORMAT","dateFormatActions","isNumberType","numberFormatActions","undefined","getCellActions","grid","row","rowIndex","canCopy","modelRow","getModelRow","valueForCell","valueText","textForCell","settings","dateFilterFormatter","timeZone","showTimeZone","showTSeparator","defaultDateTimeFormatString","previewFilterFormatter","isFilterable","filterMenu","andFilterMenu","gotoRow","GOTO_ROW","GROUP_GOTO","handleGotoRowOpened","numberValueText","numberFilterActions","isBooleanType","booleanFilterActions","dateValueText","format","previewValue","dateFilterActions","stringFilterActions","nullFilterActions","copyCell","selectedRanges","COPY","copyRanges","isEditable","GROUP_EDIT","deleteRanges","onContextMenu","event","y","getModelColumn","isFilterBarShown","columnHeaderHeight","gridY","removeColumnFilter","has","gridWrapper","triggerMenu","pageX","pageY","formatter","selectedFormat","getColumnFormat","formatOptions","getOptions","i","description","isSelected","modelIndex","getColumnIndexByName","isDecimalType","isIntegerType","TYPE_CONTEXT_CUSTOM","quickFilter","newQuickFilter","text","menuElement","setQuickFilter","notEq","contains","not","isFinite","valueFilter","greaterThanOrEqualTo","lessThanOrEqualTo","isTrue","isFalse","isNull","sortActions","ascending","checkColumnSort","descending","color","isMacPlatform","direction","isAbs","groups","high"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhFilterFilled,\n vsRemove,\n vsCheck,\n vsFilter,\n vsReply,\n IconDefinition,\n} from '@deephaven/icons';\nimport debounce from 'lodash.debounce';\nimport {\n ContextAction,\n ContextActions,\n ContextActionUtils,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport {\n EventHandlerResult,\n Grid,\n GridMouseHandler,\n GridPoint,\n isEditableGridModel,\n ModelIndex,\n VisibleIndex,\n} from '@deephaven/grid';\nimport dh, {\n Column,\n FilterCondition,\n FilterValue,\n Sort,\n} from '@deephaven/jsapi-shim';\nimport {\n TableColumnFormatter,\n DateTimeColumnFormatter,\n TableUtils,\n TableColumnFormat,\n IntegerColumnFormat,\n SortDirection,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport type { DebouncedFunc } from 'lodash';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n DateTimeFormatContextMenu,\n DecimalFormatContextMenu,\n IntegerFormatContextMenu,\n} from '../format-context-menus';\nimport './IrisGridContextMenuHandler.scss';\nimport SHORTCUTS from '../IrisGridShortcuts';\nimport IrisGrid from '../IrisGrid';\nimport { QuickFilter } from '../CommonTypes';\n\nconst log = Log.module('IrisGridContextMenuHandler');\n\nconst DEBOUNCE_UPDATE_FORMAT = 150;\nconst CONTEXT_MENU_DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSSSSS';\n\n/**\n * Used to eat the mouse event in the bottom right corner of the scroll bar\n */\nclass IrisGridContextMenuHandler extends GridMouseHandler {\n static GROUP_EDIT = ContextActions.groups.high + 10;\n\n static GROUP_HIDE_COLUMNS = ContextActions.groups.high + 25;\n\n static GROUP_FILTER = ContextActions.groups.high + 50;\n\n static GROUP_GOTO = ContextActions.groups.high + 51;\n\n static GROUP_SORT = ContextActions.groups.high + 75;\n\n static GROUP_COPY = ContextActions.groups.high + 100;\n\n static GROUP_FORMAT = ContextActions.groups.high + 150;\n\n static COLUMN_SORT_DIRECTION = {\n ascending: 'ASC',\n descending: 'DESC',\n none: null,\n } as const;\n\n /**\n * Get filter condition for quick filter with existed column filter and the new filter to be applied,\n * returns new filter if filters are not additive.\n * if filters are additive, returns filter conditions combined with 'and'.\n * @param columnFilter\n * @param newColumnFilter\n * @param additive\n */\n static getQuickFilterCondition(\n columnFilter: FilterCondition | null | undefined,\n newColumnFilter: FilterCondition,\n additive = false\n ): FilterCondition {\n if (!additive || !columnFilter) {\n return newColumnFilter;\n }\n return columnFilter.and(newColumnFilter);\n }\n\n /**\n * combines filter text with '&&' if filters are additive\n * @param filterText\n * @param newFilterText\n * @param additive\n */\n static getQuickFilterText(\n filterText: string | null | undefined,\n newFilterText: string,\n additive = false\n ): string {\n return additive && filterText\n ? `${filterText} && ${newFilterText}`\n : newFilterText;\n }\n\n /**\n * Gets an equality filter for the provided numeric value\n * @param column The column to make the filter for\n * @param value The value to get the equality filter for\n */\n static getNumberValueEqualsFilter(\n column: Column,\n value: number\n ): FilterCondition {\n const columnFilter = column.filter();\n if (value === Number.POSITIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.greaterThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (value === Number.NEGATIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.lessThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (Number.isNaN(value)) {\n return dh.FilterCondition.invoke('isNaN', columnFilter);\n }\n\n const filterValue = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n value\n );\n return columnFilter.eq(filterValue);\n }\n\n static getFilterValueForNumberOrChar(\n columnType: string,\n value: unknown\n ): FilterValue {\n return TableUtils.isCharType(columnType)\n ? dh.FilterValue.ofString(String.fromCharCode(value as number))\n : dh.FilterValue.ofNumber(value);\n }\n\n irisGrid: IrisGrid;\n\n debouncedUpdateCustomFormat: DebouncedFunc<\n (modelIndex: number, selectedFormat: TableColumnFormat | null) => void\n >;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.debouncedUpdateCustomFormat = debounce(\n irisGrid.handleFormatSelection,\n DEBOUNCE_UPDATE_FORMAT\n );\n\n this.irisGrid = irisGrid;\n }\n\n componentWillUnmount(): void {\n this.debouncedUpdateCustomFormat.flush();\n }\n\n getHeaderActions(modelColumn: number, gridPoint: GridPoint): ContextAction[] {\n const { irisGrid } = this;\n const { column: columnIndex } = gridPoint;\n assertNotNull(columnIndex);\n const { model } = irisGrid.props;\n const { columns } = model;\n const column = columns[modelColumn];\n\n const actions = [] as ContextAction[];\n\n const {\n metrics,\n reverseType,\n quickFilters,\n advancedFilters,\n searchFilter,\n } = irisGrid.state;\n const theme = irisGrid.getTheme();\n assertNotNull(metrics);\n const {\n filterIconColor,\n filterBarActiveColor,\n contextMenuSortIconColor,\n contextMenuReverseIconColor,\n } = theme;\n\n const modelSort = model.sort;\n const columnSort = TableUtils.getSortForColumn(modelSort, modelColumn);\n const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\n const { userColumnWidths } = metrics;\n const isColumnHidden = [...userColumnWidths.values()].some(\n columnWidth => columnWidth === 0\n );\n const isColumnFrozen = model.isColumnFrozen(columnIndex as VisibleIndex);\n actions.push({\n title: 'Hide Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.hideColumnByVisibleIndex(columnIndex as VisibleIndex);\n },\n });\n actions.push({\n title: isColumnFrozen ? 'Unfreeze Column' : 'Freeze Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n if (isColumnFrozen) {\n this.irisGrid.unFreezeColumnByColumnName(column.name);\n } else {\n this.irisGrid.freezeColumnByColumnName(column.name);\n }\n },\n order: 10,\n });\n actions.push({\n title: 'Show All Columns',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.showAllColumns();\n },\n disabled: !isColumnHidden,\n });\n actions.push({\n title: 'Quick Filters',\n icon: vsRemove,\n iconColor: filterBarActiveColor,\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n action: () => {\n this.irisGrid.toggleFilterBar(columnIndex);\n },\n });\n actions.push({\n title: 'Advanced Filters',\n icon: advancedFilters.get(modelColumn) ? dhFilterFilled : vsFilter,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n action: () => {\n this.irisGrid.handleAdvancedMenuOpened(columnIndex);\n },\n });\n actions.push({\n title: 'Clear Table Filters',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 40,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.CLEAR_FILTERS,\n action: () => {\n this.irisGrid.clearAllFilters();\n },\n disabled: !(\n quickFilters.size > 0 ||\n advancedFilters.size > 0 ||\n searchFilter !== null\n ),\n });\n actions.push({\n title: 'Sort by',\n icon: vsRemove,\n iconColor: contextMenuSortIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 10,\n actions: this.sortByActions(column, modelColumn, columnSort),\n });\n actions.push({\n title: 'Add Additional Sort',\n /**\n * disable conditions:\n * 1. table is sorted only by this column\n * 2. table is only reversed\n * 3. 1 & 2 combined\n * 4. table has no sort\n * reverse is a type of sort, so needs to be accounted for in exclusions\n * */\n disabled:\n (columnSort && modelSort.length === 1) ||\n (hasReverse && modelSort.length === 1) ||\n (columnSort && hasReverse && modelSort.length === 2) ||\n modelSort.length === 0,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 20,\n actions: this.additionalSortActions(column, modelColumn),\n });\n actions.push({\n title: 'Clear Table Sorting',\n disabled:\n // reverse is a type of sort, but special and needs to be exluded despite being part of model.sort\n modelSort.length === 0 || (hasReverse && modelSort.length === 1),\n group: IrisGridContextMenuHandler.GROUP_SORT,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none\n );\n },\n order: 30,\n });\n actions.push({\n title:\n reverseType === TableUtils.REVERSE_TYPE.NONE\n ? 'Reverse Table'\n : 'Clear Reverse Table',\n icon: vsRemove,\n iconColor: contextMenuReverseIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 40,\n disabled: !model.isReversible,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.REVERSE,\n action: () => {\n if (reverseType === TableUtils.REVERSE_TYPE.NONE) {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.POST_SORT);\n } else {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.NONE);\n }\n },\n });\n actions.push({\n title: 'Copy Column Name',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n action: () => {\n ContextActionUtils.copyToClipboard(\n model.textForColumnHeader(modelColumn)\n ).catch(e => log.error('Unable to copy header', e));\n },\n });\n\n if (TableUtils.isDateType(column.type)) {\n actions.push({\n title: 'Date/Time Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.dateFormatActions(column),\n });\n } else if (TableUtils.isNumberType(column.type)) {\n actions.push({\n title: 'Number Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.numberFormatActions(column) ?? undefined,\n });\n }\n return actions;\n }\n\n getCellActions(\n modelColumn: number | undefined | null,\n grid: Grid,\n gridPoint: GridPoint\n ): ContextAction[] {\n assertNotNull(modelColumn);\n const { irisGrid } = this;\n const { column: columnIndex, row: rowIndex } = gridPoint;\n const { model, canCopy } = irisGrid.props;\n const { columns } = model;\n const modelRow = irisGrid.getModelRow(rowIndex);\n assertNotNull(modelRow);\n const value = model.valueForCell(modelColumn, modelRow);\n\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const actions = [] as ContextAction[];\n\n const { quickFilters } = irisGrid.state;\n const theme = irisGrid.getTheme();\n const { filterIconColor } = theme;\n const { settings } = irisGrid.props;\n\n const dateFilterFormatter = new DateTimeColumnFormatter({\n timeZone: settings?.timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n const previewFilterFormatter = new DateTimeColumnFormatter({\n timeZone: settings?.timeZone,\n showTimeZone: settings?.showTimeZone,\n showTSeparator: settings?.showTSeparator,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n\n // grid data area context menu options\n if (column != null && rowIndex != null) {\n if (model.isFilterable(modelColumn)) {\n // cell data area contextmenu options\n const filterMenu = {\n title: 'Filter By Value',\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n actions: [],\n } as {\n title: string;\n icon: IconDefinition;\n iconColor: string;\n group: number;\n order: number;\n actions: ContextAction[];\n };\n\n const andFilterMenu = {\n title: 'Add Filter By Value',\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n actions: [],\n disabled: !quickFilters.get(modelColumn),\n } as {\n title: string;\n icon: IconDefinition;\n iconColor: string;\n group: number;\n order: number;\n actions: ContextAction[];\n disabled: boolean;\n };\n\n const gotoRow = {\n title: 'Go to',\n icon: vsReply,\n iconColor: filterIconColor,\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n group: IrisGridContextMenuHandler.GROUP_GOTO,\n order: 10,\n action: () => this.irisGrid.handleGotoRowOpened(),\n };\n\n if (value != null) {\n // Chars get treated like numbers in terms of which filters are available\n if (\n TableUtils.isNumberType(column.type) ||\n TableUtils.isCharType(column.type)\n ) {\n assertNotNull(modelColumn);\n // We want to show the full unformatted value if it's a number, so user knows which value they are matching\n // If it's a Char we just show the char\n const numberValueText = TableUtils.isCharType(column.type)\n ? String.fromCharCode(value as number)\n : `${value}`;\n filterMenu.actions = this.numberFilterActions(\n column,\n numberValueText,\n value,\n quickFilters.get(modelColumn)\n );\n andFilterMenu.actions = this.numberFilterActions(\n column,\n numberValueText,\n value,\n quickFilters.get(modelColumn),\n true\n );\n } else if (TableUtils.isBooleanType(column.type)) {\n filterMenu.actions = this.booleanFilterActions(column, valueText);\n andFilterMenu.actions = this.booleanFilterActions(\n column,\n valueText,\n quickFilters.get(modelColumn),\n true\n );\n } else if (TableUtils.isDateType(column.type)) {\n const dateValueText = dateFilterFormatter.format(value as Date);\n const previewValue = previewFilterFormatter.format(value as Date);\n filterMenu.actions = this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value\n );\n andFilterMenu.actions = this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value,\n quickFilters.get(modelColumn),\n true\n );\n } else {\n filterMenu.actions = this.stringFilterActions(\n column,\n valueText,\n value\n );\n andFilterMenu.actions = this.stringFilterActions(\n column,\n valueText,\n value,\n quickFilters.get(modelColumn),\n true\n );\n }\n } else {\n filterMenu.actions = this.nullFilterActions(column);\n andFilterMenu.actions = this.nullFilterActions(\n column,\n quickFilters.get(modelColumn),\n true\n );\n }\n\n if (filterMenu.actions != null && filterMenu.actions.length > 0) {\n actions.push(filterMenu);\n }\n if (andFilterMenu.actions != null && andFilterMenu.actions.length > 0) {\n actions.push(andFilterMenu);\n }\n\n actions.push(gotoRow);\n }\n\n if (canCopy) {\n actions.push({\n title: 'Copy Cell',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 10,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex);\n },\n });\n\n actions.push({\n title: 'Copy Cell Unformatted',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 20,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex, true);\n },\n });\n }\n }\n\n // data area, including blank space context menu options\n const { selectedRanges } = grid.state;\n if (selectedRanges.length > 0) {\n if (canCopy) {\n actions.push({\n title: 'Copy Selection',\n shortcut: GLOBAL_SHORTCUTS.COPY,\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 30,\n action: () => {\n irisGrid.copyRanges(selectedRanges);\n },\n });\n\n actions.push({\n title: 'Copy Selection w/ Headers',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 40,\n action: () => {\n irisGrid.copyRanges(selectedRanges, true);\n },\n });\n }\n\n if (isEditableGridModel(model) && model.isEditable) {\n actions.push({\n title: 'Delete Selected Rows',\n group: IrisGridContextMenuHandler.GROUP_EDIT,\n order: 50,\n action: () => {\n this.irisGrid.deleteRanges(selectedRanges);\n },\n });\n }\n }\n return actions;\n }\n\n onContextMenu(\n gridPoint: GridPoint,\n grid: Grid,\n event: React.MouseEvent<Element, MouseEvent>\n ): EventHandlerResult {\n const { irisGrid } = this;\n const { y, column: columnIndex, row: rowIndex } = gridPoint;\n const modelColumn = irisGrid.getModelColumn(columnIndex);\n const modelRow = irisGrid.getModelRow(rowIndex);\n\n const { model } = irisGrid.props;\n const { columns } = model;\n\n const {\n metrics,\n isFilterBarShown,\n quickFilters,\n advancedFilters,\n } = irisGrid.state;\n\n assertNotNull(metrics);\n\n const { columnHeaderHeight, gridY } = metrics;\n\n const actions = [] as ContextAction[];\n\n if (modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const { onContextMenu } = irisGrid.props;\n\n if (column != null) {\n actions.push(\n onContextMenu({\n model,\n value,\n valueText,\n column,\n rowIndex,\n columnIndex,\n modelRow,\n modelColumn,\n })\n );\n }\n\n if (\n modelColumn != null &&\n column != null &&\n model.isFilterable(modelColumn)\n ) {\n actions.push({\n title: 'Clear Column Filter',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 30,\n action: () => {\n this.irisGrid.removeColumnFilter(modelColumn);\n },\n disabled: !(\n quickFilters.has(modelColumn) || advancedFilters.has(modelColumn)\n ),\n });\n }\n }\n\n if (modelColumn != null) {\n const column = columns[modelColumn];\n\n if (isFilterBarShown ? y <= gridY : y <= columnHeaderHeight) {\n // grid header context menu options\n if (column != null) {\n actions.push(...this.getHeaderActions(modelColumn, gridPoint));\n }\n } else {\n actions.push(...this.getCellActions(modelColumn, grid, gridPoint));\n }\n }\n\n if (actions.length === 0) {\n return false;\n }\n\n assertNotNull(irisGrid.gridWrapper);\n\n ContextActions.triggerMenu(\n irisGrid.gridWrapper,\n event.pageX,\n event.pageY,\n actions\n );\n return true;\n }\n\n dateFormatActions(column: Column): ContextAction[] {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\n assertNotNull(selectedFormat);\n const formatOptions = DateTimeFormatContextMenu.getOptions(\n formatter,\n selectedFormat\n );\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { description, format, group, isSelected, title } = formatOptions[\n i\n ];\n actions.push({\n title,\n description,\n icon: isSelected ? vsCheck : undefined,\n group,\n order: i,\n action: () => {\n const modelIndex = model.getColumnIndexByName(column.name);\n assertNotNull(modelIndex);\n this.irisGrid.handleFormatSelection(modelIndex, format);\n },\n });\n }\n return actions;\n }\n\n numberFormatActions(column: Column): ContextAction[] | null {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(\n column.type,\n column.name\n ) as IntegerColumnFormat;\n let formatOptions;\n\n const columnIndex = model.getColumnIndexByName(column.name);\n if (TableUtils.isDecimalType(column.type)) {\n formatOptions = DecimalFormatContextMenu.getOptions(\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else if (TableUtils.isIntegerType(column.type)) {\n formatOptions = IntegerFormatContextMenu.getOptions(\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else {\n log.error('Invalid column type in numberFormatActions');\n return null;\n }\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { format, isSelected } = formatOptions[i];\n actions.push({\n ...formatOptions[i],\n icon: isSelected ? vsCheck : undefined,\n order: i,\n action: () => {\n if (\n !columnIndex &&\n format &&\n format.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n ) {\n return;\n }\n assertNotNull(columnIndex);\n this.irisGrid.handleFormatSelection(columnIndex, format);\n },\n });\n }\n return actions;\n }\n\n stringFilterActions(\n column: Column,\n valueText: string | null,\n value?: unknown,\n quickFilter?: QuickFilter,\n additive = false\n ): ContextAction[] {\n const filterValue = dh.FilterValue.ofString(value);\n let newQuickFilter:\n | {\n filter: null | FilterCondition | undefined;\n text: string | null;\n }\n | undefined\n | null = quickFilter;\n if (!newQuickFilter) {\n newQuickFilter = { filter: null, text: null };\n }\n const { filter, text: filterText } = newQuickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n "{valueText}"\n </div>\n ),\n order: 1,\n });\n\n actions.push({\n title: 'text is exactly',\n description: `Show only rows where ${column.name} is ${value} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'text is not exactly',\n description: `Show only rows where ${column.name} is not ${valueText} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\n });\n actions.push({\n title: `text contains`,\n description: `Show only rows where ${column.name} contains ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().contains(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `~${valueText}`,\n additive\n )\n );\n },\n order: 30,\n });\n actions.push({\n title: 'text does not contain',\n description: `Show only rows where ${column.name} does not contain ${value}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().contains(filterValue).not(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!~${valueText}`,\n additive\n )\n );\n },\n order: 40,\n });\n actions.push({\n title: 'text starts with',\n description: `Show only rows where ${column.name} starts with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().invoke('startsWith', filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `${valueText}*`,\n additive\n )\n );\n },\n order: 50,\n });\n actions.push({\n title: 'text ends with',\n description: `Show only rows where ${column.name} ends with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().invoke('endsWith', filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `*${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n return actions;\n }\n\n numberFilterActions(\n column: Column,\n valueText: string,\n value: unknown,\n quickFilter?: QuickFilter | null,\n additive = false\n ): ContextAction[] {\n const filterValue = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n value\n );\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const isFinite =\n value !== Number.POSITIVE_INFINITY &&\n value !== Number.NEGATIVE_INFINITY &&\n !Number.isNaN(value);\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"{valueText}"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'is equal to',\n description: `Show only rows where ${column.name} is ${valueText}`,\n action: () => {\n const valueFilter = IrisGridContextMenuHandler.getNumberValueEqualsFilter(\n column,\n value as number\n );\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'is not equal to',\n description: `Show only rows where ${column.name} is not ${valueText}`,\n action: () => {\n const valueFilter = IrisGridContextMenuHandler.getNumberValueEqualsFilter(\n column,\n value as number\n ).not();\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\n });\n\n // IDS-6092 Less/greater than filters don't make sense for Infinite/NaN\n // TODO (DH-11799): These char filters should work in Bard, with the merge for DH-11040: https://gitlab.eng.illumon.com/illumon/iris/merge_requests/5801\n // They do not work in Powell though, so disable them.\n if (isFinite && !TableUtils.isCharType(column.type)) {\n actions.push({\n title: 'greater than',\n description: `Show only rows where ${column.name} is greater than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n additive\n )\n );\n },\n order: 30,\n });\n actions.push({\n title: 'greater than or equal to',\n description: `Show only rows where ${column.name} is greater than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n additive\n )\n );\n },\n order: 40,\n });\n actions.push({\n title: 'less than',\n description: `Show only rows where ${column.name} is less than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n additive\n )\n );\n },\n order: 50,\n });\n actions.push({\n title: 'less than or equal to',\n description: `Show only rows where ${column.name} is less than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n }\n return actions;\n }\n\n booleanFilterActions(\n column: Column,\n valueText: string | null,\n quickFilter?: QuickFilter | null,\n additive = false\n ): ContextAction[] {\n const actions: ContextAction[] = [];\n if (quickFilter == null) {\n return actions;\n }\n const { filter, text: filterText } = quickFilter;\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? 'AND ' : ''}"{valueText}"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'true',\n description: `Show only rows where ${column.name} is true`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isTrue(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'true',\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'false',\n description: `Show only rows where ${column.name} is false`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isFalse(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'false',\n additive\n )\n );\n },\n order: 20,\n });\n actions.push({\n title: 'null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n additive\n )\n );\n },\n order: 30,\n });\n\n return actions;\n }\n\n dateFilterActions(\n column: Column,\n valueText: string,\n previewValue: unknown,\n value: unknown,\n quickFilter?: QuickFilter | null,\n additive = false\n ): ContextAction[] {\n const filterValue = dh.FilterValue.ofNumber(value);\n\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"{previewValue}"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'date is',\n description: `Show only rows where ${column.name} is ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'date is not',\n description: `Show only rows where ${column.name} is not ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\n });\n actions.push({\n title: 'date is before',\n description: `Show only rows where ${column.name} is before ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n additive\n )\n );\n },\n order: 30,\n });\n actions.push({\n title: 'date is before or equal',\n description: `Show only rows where ${column.name} is before or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n additive\n )\n );\n },\n order: 40,\n });\n actions.push({\n title: 'date is after',\n description: `Show only rows where ${column.name} is greater than ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n additive\n )\n );\n },\n order: 50,\n });\n actions.push({\n title: 'date is after or equal',\n description: `Show only rows where ${column.name} is after or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n return actions;\n }\n\n nullFilterActions(\n column: Column,\n quickFilter?: QuickFilter,\n additive = false\n ): ContextAction[] {\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"null"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'equals null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'not equals null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n additive\n )\n );\n },\n order: 20,\n });\n\n return actions;\n }\n\n sortByActions(\n column: Column,\n modelColumn: ModelIndex,\n columnSort: Sort | null\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const sortActions = [\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `Remove Sort`,\n order: 50,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none,\n false,\n true\n );\n },\n disabled: !columnSort,\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n sortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n sortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n }\n return sortActions;\n }\n\n additionalSortActions(\n column: Column,\n columnIndex: ModelIndex\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const additionalSortActions = [\n {\n title: 'Add Sort By',\n menuElement: (\n <div className=\"btn-context-menu menu-title\">\n <span className=\"icon\">\n <FontAwesomeIcon\n icon={vsRemove}\n style={{ color: contextMenuSortIconColor ?? undefined }}\n />\n </span>\n <span className=\"title\">Add Additional Sort</span>\n <span className=\"shortcut\">\n {ContextActionUtils.isMacPlatform() ? '⌘Click' : '^Click'}\n </span>\n </div>\n ),\n order: 1,\n },\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n false,\n true\n );\n },\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n false,\n true\n );\n },\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n additionalSortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true,\n true\n );\n },\n });\n additionalSortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true,\n true\n );\n },\n });\n }\n return additionalSortActions;\n }\n\n checkColumnSort(\n columnSort?: Sort | null,\n direction: SortDirection = null,\n isAbs = false\n ): boolean {\n if (!columnSort) {\n return false;\n }\n return columnSort.direction === direction && columnSort.isAbs === isAbs;\n }\n}\n\nexport default IrisGridContextMenuHandler;\n"],"file":"IrisGridContextMenuHandler.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":["React","FontAwesomeIcon","dhFilterFilled","vsRemove","vsCheck","vsFilter","debounce","ContextActions","ContextActionUtils","GLOBAL_SHORTCUTS","GridMouseHandler","isEditableGridModel","dh","TableColumnFormatter","DateTimeColumnFormatter","TableUtils","Log","assertNotNull","DateTimeFormatContextMenu","DecimalFormatContextMenu","IntegerFormatContextMenu","SHORTCUTS","log","module","DEBOUNCE_UPDATE_FORMAT","CONTEXT_MENU_DATE_FORMAT","IrisGridContextMenuHandler","getQuickFilterCondition","columnFilter","newColumnFilter","additive","and","getQuickFilterText","filterText","newFilterText","getNumberValueEqualsFilter","column","value","filter","Number","POSITIVE_INFINITY","FilterCondition","invoke","greaterThan","FilterValue","ofNumber","NEGATIVE_INFINITY","lessThan","isNaN","filterValue","getFilterValueForNumberOrChar","type","eq","columnType","isCharType","ofString","String","fromCharCode","constructor","irisGrid","debouncedUpdateCustomFormat","handleFormatSelection","componentWillUnmount","flush","getHeaderActions","modelColumn","gridPoint","columnIndex","model","props","columns","actions","metrics","reverseType","quickFilters","advancedFilters","searchFilter","state","theme","getTheme","filterIconColor","filterBarActiveColor","contextMenuSortIconColor","contextMenuReverseIconColor","modelSort","sort","columnSort","getSortForColumn","hasReverse","REVERSE_TYPE","NONE","userColumnWidths","isColumnHidden","values","some","columnWidth","isColumnFrozen","push","title","group","GROUP_HIDE_COLUMNS","action","hideColumnByVisibleIndex","unFreezeColumnByColumnName","name","freezeColumnByColumnName","order","showAllColumns","disabled","icon","iconColor","shortcut","TABLE","TOGGLE_QUICK_FILTER","GROUP_FILTER","toggleFilterBar","get","handleAdvancedMenuOpened","CLEAR_FILTERS","clearAllFilters","size","GROUP_SORT","sortByActions","length","additionalSortActions","sortColumn","COLUMN_SORT_DIRECTION","none","isReversible","REVERSE","reverse","POST_SORT","GROUP_COPY","copyToClipboard","textForColumnHeader","catch","e","error","isDateType","GROUP_FORMAT","dateFormatActions","isNumberType","numberFormatActions","undefined","getCellActions","grid","row","rowIndex","canCopy","modelRow","getModelRow","valueForCell","valueText","textForCell","settings","dateFilterFormatter","timeZone","showTimeZone","showTSeparator","defaultDateTimeFormatString","previewFilterFormatter","isFilterable","filterMenu","andFilterMenu","gotoRow","GOTO_ROW","GROUP_GOTO","toggleGotoRow","numberValueText","numberFilterActions","isBooleanType","booleanFilterActions","dateValueText","format","previewValue","dateFilterActions","stringFilterActions","nullFilterActions","copyCell","selectedRanges","COPY","copyRanges","isEditable","GROUP_EDIT","deleteRanges","onContextMenu","event","y","getModelColumn","isFilterBarShown","columnHeaderHeight","gridY","removeColumnFilter","has","gridWrapper","triggerMenu","pageX","pageY","formatter","selectedFormat","getColumnFormat","formatOptions","getOptions","i","description","isSelected","modelIndex","getColumnIndexByName","isDecimalType","isIntegerType","TYPE_CONTEXT_CUSTOM","quickFilter","newQuickFilter","text","menuElement","setQuickFilter","notEq","contains","not","isFinite","valueFilter","greaterThanOrEqualTo","lessThanOrEqualTo","isTrue","isFalse","isNull","sortActions","ascending","checkColumnSort","descending","color","isMacPlatform","direction","isAbs","groups","high"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n dhFilterFilled,\n vsRemove,\n vsCheck,\n vsFilter,\n IconDefinition,\n} from '@deephaven/icons';\nimport debounce from 'lodash.debounce';\nimport {\n ContextAction,\n ContextActions,\n ContextActionUtils,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport {\n EventHandlerResult,\n Grid,\n GridMouseHandler,\n GridPoint,\n isEditableGridModel,\n ModelIndex,\n VisibleIndex,\n} from '@deephaven/grid';\nimport dh, {\n Column,\n FilterCondition,\n FilterValue,\n Sort,\n} from '@deephaven/jsapi-shim';\nimport {\n TableColumnFormatter,\n DateTimeColumnFormatter,\n TableUtils,\n TableColumnFormat,\n IntegerColumnFormat,\n SortDirection,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport type { DebouncedFunc } from 'lodash';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n DateTimeFormatContextMenu,\n DecimalFormatContextMenu,\n IntegerFormatContextMenu,\n} from '../format-context-menus';\nimport './IrisGridContextMenuHandler.scss';\nimport SHORTCUTS from '../IrisGridShortcuts';\nimport IrisGrid from '../IrisGrid';\nimport { QuickFilter } from '../CommonTypes';\n\nconst log = Log.module('IrisGridContextMenuHandler');\n\nconst DEBOUNCE_UPDATE_FORMAT = 150;\nconst CONTEXT_MENU_DATE_FORMAT = 'yyyy-MM-dd HH:mm:ss.SSSSSSSSS';\n\n/**\n * Used to eat the mouse event in the bottom right corner of the scroll bar\n */\nclass IrisGridContextMenuHandler extends GridMouseHandler {\n static GROUP_EDIT = ContextActions.groups.high + 10;\n\n static GROUP_HIDE_COLUMNS = ContextActions.groups.high + 25;\n\n static GROUP_FILTER = ContextActions.groups.high + 50;\n\n static GROUP_GOTO = ContextActions.groups.high + 51;\n\n static GROUP_SORT = ContextActions.groups.high + 75;\n\n static GROUP_COPY = ContextActions.groups.high + 100;\n\n static GROUP_FORMAT = ContextActions.groups.high + 150;\n\n static COLUMN_SORT_DIRECTION = {\n ascending: 'ASC',\n descending: 'DESC',\n none: null,\n } as const;\n\n /**\n * Get filter condition for quick filter with existed column filter and the new filter to be applied,\n * returns new filter if filters are not additive.\n * if filters are additive, returns filter conditions combined with 'and'.\n * @param columnFilter\n * @param newColumnFilter\n * @param additive\n */\n static getQuickFilterCondition(\n columnFilter: FilterCondition | null | undefined,\n newColumnFilter: FilterCondition,\n additive = false\n ): FilterCondition {\n if (!additive || !columnFilter) {\n return newColumnFilter;\n }\n return columnFilter.and(newColumnFilter);\n }\n\n /**\n * combines filter text with '&&' if filters are additive\n * @param filterText\n * @param newFilterText\n * @param additive\n */\n static getQuickFilterText(\n filterText: string | null | undefined,\n newFilterText: string,\n additive = false\n ): string {\n return additive && filterText\n ? `${filterText} && ${newFilterText}`\n : newFilterText;\n }\n\n /**\n * Gets an equality filter for the provided numeric value\n * @param column The column to make the filter for\n * @param value The value to get the equality filter for\n */\n static getNumberValueEqualsFilter(\n column: Column,\n value: number\n ): FilterCondition {\n const columnFilter = column.filter();\n if (value === Number.POSITIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.greaterThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (value === Number.NEGATIVE_INFINITY) {\n return dh.FilterCondition.invoke('isInf', columnFilter).and(\n columnFilter.lessThan(dh.FilterValue.ofNumber(0))\n );\n }\n if (Number.isNaN(value)) {\n return dh.FilterCondition.invoke('isNaN', columnFilter);\n }\n\n const filterValue = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n value\n );\n return columnFilter.eq(filterValue);\n }\n\n static getFilterValueForNumberOrChar(\n columnType: string,\n value: unknown\n ): FilterValue {\n return TableUtils.isCharType(columnType)\n ? dh.FilterValue.ofString(String.fromCharCode(value as number))\n : dh.FilterValue.ofNumber(value);\n }\n\n irisGrid: IrisGrid;\n\n debouncedUpdateCustomFormat: DebouncedFunc<\n (modelIndex: number, selectedFormat: TableColumnFormat | null) => void\n >;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.debouncedUpdateCustomFormat = debounce(\n irisGrid.handleFormatSelection,\n DEBOUNCE_UPDATE_FORMAT\n );\n\n this.irisGrid = irisGrid;\n }\n\n componentWillUnmount(): void {\n this.debouncedUpdateCustomFormat.flush();\n }\n\n getHeaderActions(modelColumn: number, gridPoint: GridPoint): ContextAction[] {\n const { irisGrid } = this;\n const { column: columnIndex } = gridPoint;\n assertNotNull(columnIndex);\n const { model } = irisGrid.props;\n const { columns } = model;\n const column = columns[modelColumn];\n\n const actions = [] as ContextAction[];\n\n const {\n metrics,\n reverseType,\n quickFilters,\n advancedFilters,\n searchFilter,\n } = irisGrid.state;\n const theme = irisGrid.getTheme();\n assertNotNull(metrics);\n const {\n filterIconColor,\n filterBarActiveColor,\n contextMenuSortIconColor,\n contextMenuReverseIconColor,\n } = theme;\n\n const modelSort = model.sort;\n const columnSort = TableUtils.getSortForColumn(modelSort, modelColumn);\n const hasReverse = reverseType !== TableUtils.REVERSE_TYPE.NONE;\n const { userColumnWidths } = metrics;\n const isColumnHidden = [...userColumnWidths.values()].some(\n columnWidth => columnWidth === 0\n );\n const isColumnFrozen = model.isColumnFrozen(columnIndex as VisibleIndex);\n actions.push({\n title: 'Hide Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.hideColumnByVisibleIndex(columnIndex as VisibleIndex);\n },\n });\n actions.push({\n title: isColumnFrozen ? 'Unfreeze Column' : 'Freeze Column',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n if (isColumnFrozen) {\n this.irisGrid.unFreezeColumnByColumnName(column.name);\n } else {\n this.irisGrid.freezeColumnByColumnName(column.name);\n }\n },\n order: 10,\n });\n actions.push({\n title: 'Show All Columns',\n group: IrisGridContextMenuHandler.GROUP_HIDE_COLUMNS,\n action: () => {\n this.irisGrid.showAllColumns();\n },\n disabled: !isColumnHidden,\n });\n actions.push({\n title: 'Quick Filters',\n icon: vsRemove,\n iconColor: filterBarActiveColor,\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n action: () => {\n this.irisGrid.toggleFilterBar(columnIndex);\n },\n });\n actions.push({\n title: 'Advanced Filters',\n icon: advancedFilters.get(modelColumn) ? dhFilterFilled : vsFilter,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n action: () => {\n this.irisGrid.handleAdvancedMenuOpened(columnIndex);\n },\n });\n actions.push({\n title: 'Clear Table Filters',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 40,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.CLEAR_FILTERS,\n action: () => {\n this.irisGrid.clearAllFilters();\n },\n disabled: !(\n quickFilters.size > 0 ||\n advancedFilters.size > 0 ||\n searchFilter !== null\n ),\n });\n actions.push({\n title: 'Sort by',\n icon: vsRemove,\n iconColor: contextMenuSortIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 10,\n actions: this.sortByActions(column, modelColumn, columnSort),\n });\n actions.push({\n title: 'Add Additional Sort',\n /**\n * disable conditions:\n * 1. table is sorted only by this column\n * 2. table is only reversed\n * 3. 1 & 2 combined\n * 4. table has no sort\n * reverse is a type of sort, so needs to be accounted for in exclusions\n * */\n disabled:\n (columnSort && modelSort.length === 1) ||\n (hasReverse && modelSort.length === 1) ||\n (columnSort && hasReverse && modelSort.length === 2) ||\n modelSort.length === 0,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 20,\n actions: this.additionalSortActions(column, modelColumn),\n });\n actions.push({\n title: 'Clear Table Sorting',\n disabled:\n // reverse is a type of sort, but special and needs to be exluded despite being part of model.sort\n modelSort.length === 0 || (hasReverse && modelSort.length === 1),\n group: IrisGridContextMenuHandler.GROUP_SORT,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none\n );\n },\n order: 30,\n });\n actions.push({\n title:\n reverseType === TableUtils.REVERSE_TYPE.NONE\n ? 'Reverse Table'\n : 'Clear Reverse Table',\n icon: vsRemove,\n iconColor: contextMenuReverseIconColor,\n group: IrisGridContextMenuHandler.GROUP_SORT,\n order: 40,\n disabled: !model.isReversible,\n // this just displays the shortcut, the actual listener is in irisgrid handleKeyDown\n shortcut: SHORTCUTS.TABLE.REVERSE,\n action: () => {\n if (reverseType === TableUtils.REVERSE_TYPE.NONE) {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.POST_SORT);\n } else {\n this.irisGrid.reverse(TableUtils.REVERSE_TYPE.NONE);\n }\n },\n });\n actions.push({\n title: 'Copy Column Name',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n action: () => {\n ContextActionUtils.copyToClipboard(\n model.textForColumnHeader(modelColumn)\n ).catch(e => log.error('Unable to copy header', e));\n },\n });\n\n if (TableUtils.isDateType(column.type)) {\n actions.push({\n title: 'Date/Time Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.dateFormatActions(column),\n });\n } else if (TableUtils.isNumberType(column.type)) {\n actions.push({\n title: 'Number Format',\n group: IrisGridContextMenuHandler.GROUP_FORMAT,\n actions: this.numberFormatActions(column) ?? undefined,\n });\n }\n return actions;\n }\n\n getCellActions(\n modelColumn: number | undefined | null,\n grid: Grid,\n gridPoint: GridPoint\n ): ContextAction[] {\n assertNotNull(modelColumn);\n const { irisGrid } = this;\n const { column: columnIndex, row: rowIndex } = gridPoint;\n const { model, canCopy } = irisGrid.props;\n const { columns } = model;\n const modelRow = irisGrid.getModelRow(rowIndex);\n assertNotNull(modelRow);\n const value = model.valueForCell(modelColumn, modelRow);\n\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const actions = [] as ContextAction[];\n\n const { quickFilters } = irisGrid.state;\n const theme = irisGrid.getTheme();\n const { filterIconColor } = theme;\n const { settings } = irisGrid.props;\n\n const dateFilterFormatter = new DateTimeColumnFormatter({\n timeZone: settings?.timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n const previewFilterFormatter = new DateTimeColumnFormatter({\n timeZone: settings?.timeZone,\n showTimeZone: settings?.showTimeZone,\n showTSeparator: settings?.showTSeparator,\n defaultDateTimeFormatString: CONTEXT_MENU_DATE_FORMAT,\n });\n\n // grid data area context menu options\n if (column != null && rowIndex != null) {\n if (model.isFilterable(modelColumn)) {\n // cell data area contextmenu options\n const filterMenu = {\n title: 'Filter By Value',\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 10,\n actions: [],\n } as {\n title: string;\n icon: IconDefinition;\n iconColor: string;\n group: number;\n order: number;\n actions: ContextAction[];\n };\n\n const andFilterMenu = {\n title: 'Add Filter By Value',\n icon: vsRemove,\n iconColor: filterIconColor,\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 20,\n actions: [],\n disabled: !quickFilters.get(modelColumn),\n } as {\n title: string;\n icon: IconDefinition;\n iconColor: string;\n group: number;\n order: number;\n actions: ContextAction[];\n disabled: boolean;\n };\n\n const gotoRow = {\n title: 'Go to',\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n group: IrisGridContextMenuHandler.GROUP_GOTO,\n order: 10,\n action: () => this.irisGrid.toggleGotoRow(`${rowIndex + 1}`),\n };\n\n if (value != null) {\n // Chars get treated like numbers in terms of which filters are available\n if (\n TableUtils.isNumberType(column.type) ||\n TableUtils.isCharType(column.type)\n ) {\n assertNotNull(modelColumn);\n // We want to show the full unformatted value if it's a number, so user knows which value they are matching\n // If it's a Char we just show the char\n const numberValueText = TableUtils.isCharType(column.type)\n ? String.fromCharCode(value as number)\n : `${value}`;\n filterMenu.actions = this.numberFilterActions(\n column,\n numberValueText,\n value,\n quickFilters.get(modelColumn)\n );\n andFilterMenu.actions = this.numberFilterActions(\n column,\n numberValueText,\n value,\n quickFilters.get(modelColumn),\n true\n );\n } else if (TableUtils.isBooleanType(column.type)) {\n filterMenu.actions = this.booleanFilterActions(column, valueText);\n andFilterMenu.actions = this.booleanFilterActions(\n column,\n valueText,\n quickFilters.get(modelColumn),\n true\n );\n } else if (TableUtils.isDateType(column.type)) {\n const dateValueText = dateFilterFormatter.format(value as Date);\n const previewValue = previewFilterFormatter.format(value as Date);\n filterMenu.actions = this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value\n );\n andFilterMenu.actions = this.dateFilterActions(\n column,\n dateValueText,\n previewValue,\n value,\n quickFilters.get(modelColumn),\n true\n );\n } else {\n filterMenu.actions = this.stringFilterActions(\n column,\n valueText,\n value\n );\n andFilterMenu.actions = this.stringFilterActions(\n column,\n valueText,\n value,\n quickFilters.get(modelColumn),\n true\n );\n }\n } else {\n filterMenu.actions = this.nullFilterActions(column);\n andFilterMenu.actions = this.nullFilterActions(\n column,\n quickFilters.get(modelColumn),\n true\n );\n }\n\n if (filterMenu.actions != null && filterMenu.actions.length > 0) {\n actions.push(filterMenu);\n }\n if (andFilterMenu.actions != null && andFilterMenu.actions.length > 0) {\n actions.push(andFilterMenu);\n }\n\n actions.push(gotoRow);\n }\n\n if (canCopy) {\n actions.push({\n title: 'Copy Cell',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 10,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex);\n },\n });\n\n actions.push({\n title: 'Copy Cell Unformatted',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 20,\n action: () => {\n irisGrid.copyCell(columnIndex, rowIndex, true);\n },\n });\n }\n }\n\n // data area, including blank space context menu options\n const { selectedRanges } = grid.state;\n if (selectedRanges.length > 0) {\n if (canCopy) {\n actions.push({\n title: 'Copy Selection',\n shortcut: GLOBAL_SHORTCUTS.COPY,\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 30,\n action: () => {\n irisGrid.copyRanges(selectedRanges);\n },\n });\n\n actions.push({\n title: 'Copy Selection w/ Headers',\n group: IrisGridContextMenuHandler.GROUP_COPY,\n order: 40,\n action: () => {\n irisGrid.copyRanges(selectedRanges, true);\n },\n });\n }\n\n if (isEditableGridModel(model) && model.isEditable) {\n actions.push({\n title: 'Delete Selected Rows',\n group: IrisGridContextMenuHandler.GROUP_EDIT,\n order: 50,\n action: () => {\n this.irisGrid.deleteRanges(selectedRanges);\n },\n });\n }\n }\n return actions;\n }\n\n onContextMenu(\n gridPoint: GridPoint,\n grid: Grid,\n event: React.MouseEvent<Element, MouseEvent>\n ): EventHandlerResult {\n const { irisGrid } = this;\n const { y, column: columnIndex, row: rowIndex } = gridPoint;\n const modelColumn = irisGrid.getModelColumn(columnIndex);\n const modelRow = irisGrid.getModelRow(rowIndex);\n\n const { model } = irisGrid.props;\n const { columns } = model;\n\n const {\n metrics,\n isFilterBarShown,\n quickFilters,\n advancedFilters,\n } = irisGrid.state;\n\n assertNotNull(metrics);\n\n const { columnHeaderHeight, gridY } = metrics;\n\n const actions = [] as ContextAction[];\n\n if (modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n\n const valueText = model.textForCell(modelColumn, modelRow);\n const column = columns[modelColumn];\n\n const { onContextMenu } = irisGrid.props;\n\n if (column != null) {\n actions.push(\n onContextMenu({\n model,\n value,\n valueText,\n column,\n rowIndex,\n columnIndex,\n modelRow,\n modelColumn,\n })\n );\n }\n\n if (\n modelColumn != null &&\n column != null &&\n model.isFilterable(modelColumn)\n ) {\n actions.push({\n title: 'Clear Column Filter',\n group: IrisGridContextMenuHandler.GROUP_FILTER,\n order: 30,\n action: () => {\n this.irisGrid.removeColumnFilter(modelColumn);\n },\n disabled: !(\n quickFilters.has(modelColumn) || advancedFilters.has(modelColumn)\n ),\n });\n }\n }\n\n if (modelColumn != null) {\n const column = columns[modelColumn];\n\n if (isFilterBarShown ? y <= gridY : y <= columnHeaderHeight) {\n // grid header context menu options\n if (column != null) {\n actions.push(...this.getHeaderActions(modelColumn, gridPoint));\n }\n } else {\n actions.push(...this.getCellActions(modelColumn, grid, gridPoint));\n }\n }\n\n if (actions.length === 0) {\n return false;\n }\n\n assertNotNull(irisGrid.gridWrapper);\n\n ContextActions.triggerMenu(\n irisGrid.gridWrapper,\n event.pageX,\n event.pageY,\n actions\n );\n return true;\n }\n\n dateFormatActions(column: Column): ContextAction[] {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(column.type, column.name);\n assertNotNull(selectedFormat);\n const formatOptions = DateTimeFormatContextMenu.getOptions(\n formatter,\n selectedFormat\n );\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { description, format, group, isSelected, title } = formatOptions[\n i\n ];\n actions.push({\n title,\n description,\n icon: isSelected ? vsCheck : undefined,\n group,\n order: i,\n action: () => {\n const modelIndex = model.getColumnIndexByName(column.name);\n assertNotNull(modelIndex);\n this.irisGrid.handleFormatSelection(modelIndex, format);\n },\n });\n }\n return actions;\n }\n\n numberFormatActions(column: Column): ContextAction[] | null {\n const { model } = this.irisGrid.props;\n const { formatter } = model;\n const selectedFormat = formatter.getColumnFormat(\n column.type,\n column.name\n ) as IntegerColumnFormat;\n let formatOptions;\n\n const columnIndex = model.getColumnIndexByName(column.name);\n if (TableUtils.isDecimalType(column.type)) {\n formatOptions = DecimalFormatContextMenu.getOptions(\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else if (TableUtils.isIntegerType(column.type)) {\n formatOptions = IntegerFormatContextMenu.getOptions(\n selectedFormat,\n format => {\n assertNotNull(columnIndex);\n this.debouncedUpdateCustomFormat(columnIndex, format);\n }\n );\n } else {\n log.error('Invalid column type in numberFormatActions');\n return null;\n }\n\n const actions = [];\n\n for (let i = 0; i < formatOptions.length; i += 1) {\n const { format, isSelected } = formatOptions[i];\n actions.push({\n ...formatOptions[i],\n icon: isSelected ? vsCheck : undefined,\n order: i,\n action: () => {\n if (\n !columnIndex &&\n format &&\n format.type === TableColumnFormatter.TYPE_CONTEXT_CUSTOM\n ) {\n return;\n }\n assertNotNull(columnIndex);\n this.irisGrid.handleFormatSelection(columnIndex, format);\n },\n });\n }\n return actions;\n }\n\n stringFilterActions(\n column: Column,\n valueText: string | null,\n value?: unknown,\n quickFilter?: QuickFilter,\n additive = false\n ): ContextAction[] {\n const filterValue = dh.FilterValue.ofString(value);\n let newQuickFilter:\n | {\n filter: null | FilterCondition | undefined;\n text: string | null;\n }\n | undefined\n | null = quickFilter;\n if (!newQuickFilter) {\n newQuickFilter = { filter: null, text: null };\n }\n const { filter, text: filterText } = newQuickFilter;\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n "{valueText}"\n </div>\n ),\n order: 1,\n });\n\n actions.push({\n title: 'text is exactly',\n description: `Show only rows where ${column.name} is ${value} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'text is not exactly',\n description: `Show only rows where ${column.name} is not ${valueText} (case sensitive)`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\n });\n actions.push({\n title: `text contains`,\n description: `Show only rows where ${column.name} contains ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().contains(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `~${valueText}`,\n additive\n )\n );\n },\n order: 30,\n });\n actions.push({\n title: 'text does not contain',\n description: `Show only rows where ${column.name} does not contain ${value}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().contains(filterValue).not(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!~${valueText}`,\n additive\n )\n );\n },\n order: 40,\n });\n actions.push({\n title: 'text starts with',\n description: `Show only rows where ${column.name} starts with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().invoke('startsWith', filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `${valueText}*`,\n additive\n )\n );\n },\n order: 50,\n });\n actions.push({\n title: 'text ends with',\n description: `Show only rows where ${column.name} ends with ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().invoke('endsWith', filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `*${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n return actions;\n }\n\n numberFilterActions(\n column: Column,\n valueText: string,\n value: unknown,\n quickFilter?: QuickFilter | null,\n additive = false\n ): ContextAction[] {\n const filterValue = IrisGridContextMenuHandler.getFilterValueForNumberOrChar(\n column.type,\n value\n );\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const isFinite =\n value !== Number.POSITIVE_INFINITY &&\n value !== Number.NEGATIVE_INFINITY &&\n !Number.isNaN(value);\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"{valueText}"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'is equal to',\n description: `Show only rows where ${column.name} is ${valueText}`,\n action: () => {\n const valueFilter = IrisGridContextMenuHandler.getNumberValueEqualsFilter(\n column,\n value as number\n );\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'is not equal to',\n description: `Show only rows where ${column.name} is not ${valueText}`,\n action: () => {\n const valueFilter = IrisGridContextMenuHandler.getNumberValueEqualsFilter(\n column,\n value as number\n ).not();\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n valueFilter,\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\n });\n\n // IDS-6092 Less/greater than filters don't make sense for Infinite/NaN\n // TODO (DH-11799): These char filters should work in Bard, with the merge for DH-11040: https://gitlab.eng.illumon.com/illumon/iris/merge_requests/5801\n // They do not work in Powell though, so disable them.\n if (isFinite && !TableUtils.isCharType(column.type)) {\n actions.push({\n title: 'greater than',\n description: `Show only rows where ${column.name} is greater than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n additive\n )\n );\n },\n order: 30,\n });\n actions.push({\n title: 'greater than or equal to',\n description: `Show only rows where ${column.name} is greater than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n additive\n )\n );\n },\n order: 40,\n });\n actions.push({\n title: 'less than',\n description: `Show only rows where ${column.name} is less than ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n additive\n )\n );\n },\n order: 50,\n });\n actions.push({\n title: 'less than or equal to',\n description: `Show only rows where ${column.name} is less than or equal to ${valueText}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n }\n return actions;\n }\n\n booleanFilterActions(\n column: Column,\n valueText: string | null,\n quickFilter?: QuickFilter | null,\n additive = false\n ): ContextAction[] {\n const actions: ContextAction[] = [];\n if (quickFilter == null) {\n return actions;\n }\n const { filter, text: filterText } = quickFilter;\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? 'AND ' : ''}"{valueText}"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'true',\n description: `Show only rows where ${column.name} is true`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isTrue(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'true',\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'false',\n description: `Show only rows where ${column.name} is false`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isFalse(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'false',\n additive\n )\n );\n },\n order: 20,\n });\n actions.push({\n title: 'null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n additive\n )\n );\n },\n order: 30,\n });\n\n return actions;\n }\n\n dateFilterActions(\n column: Column,\n valueText: string,\n previewValue: unknown,\n value: unknown,\n quickFilter?: QuickFilter | null,\n additive = false\n ): ContextAction[] {\n const filterValue = dh.FilterValue.ofNumber(value);\n\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n const actions = [];\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"{previewValue}"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'date is',\n description: `Show only rows where ${column.name} is ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().eq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `=${valueText}`,\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'date is not',\n description: `Show only rows where ${column.name} is not ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().notEq(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `!=${valueText}`,\n additive\n )\n );\n },\n order: 20,\n });\n actions.push({\n title: 'date is before',\n description: `Show only rows where ${column.name} is before ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<${valueText}`,\n additive\n )\n );\n },\n order: 30,\n });\n actions.push({\n title: 'date is before or equal',\n description: `Show only rows where ${column.name} is before or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().lessThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `<=${valueText}`,\n additive\n )\n );\n },\n order: 40,\n });\n actions.push({\n title: 'date is after',\n description: `Show only rows where ${column.name} is greater than ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThan(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>${valueText}`,\n additive\n )\n );\n },\n order: 50,\n });\n actions.push({\n title: 'date is after or equal',\n description: `Show only rows where ${column.name} is after or equal to ${previewValue}`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().greaterThanOrEqualTo(filterValue),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n `>=${valueText}`,\n additive\n )\n );\n },\n order: 60,\n });\n return actions;\n }\n\n nullFilterActions(\n column: Column,\n quickFilter?: QuickFilter,\n additive = false\n ): ContextAction[] {\n let filter: FilterCondition | null = null;\n let filterText: string | null = null;\n if (quickFilter) {\n filter = quickFilter.filter;\n filterText = quickFilter.text;\n }\n const actions = [];\n const { model } = this.irisGrid.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n\n actions.push({\n menuElement: (\n <div className=\"iris-grid-filter-menu-item-value\">\n {additive ? ' AND ' : ''}"null"\n </div>\n ),\n order: 1,\n });\n actions.push({\n title: 'equals null',\n description: `Show only rows where ${column.name} is null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n 'null',\n additive\n )\n );\n },\n order: 10,\n });\n actions.push({\n title: 'not equals null',\n description: `Show only rows where ${column.name} is not null`,\n action: () => {\n this.irisGrid.setQuickFilter(\n columnIndex,\n IrisGridContextMenuHandler.getQuickFilterCondition(\n filter,\n column.filter().isNull().not(),\n additive\n ),\n IrisGridContextMenuHandler.getQuickFilterText(\n filterText,\n '!null',\n additive\n )\n );\n },\n order: 20,\n });\n\n return actions;\n }\n\n sortByActions(\n column: Column,\n modelColumn: ModelIndex,\n columnSort: Sort | null\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const sortActions = [\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n },\n {\n title: `Remove Sort`,\n order: 50,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.none,\n false,\n true\n );\n },\n disabled: !columnSort,\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n sortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n sortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n modelColumn,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n );\n },\n icon: this.checkColumnSort(\n columnSort,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true\n )\n ? vsRemove\n : undefined,\n iconColor: contextMenuSortIconColor,\n });\n }\n return sortActions;\n }\n\n additionalSortActions(\n column: Column,\n columnIndex: ModelIndex\n ): ContextAction[] {\n const theme = this.irisGrid.getTheme();\n const { contextMenuSortIconColor } = theme;\n const additionalSortActions = [\n {\n title: 'Add Sort By',\n menuElement: (\n <div className=\"btn-context-menu menu-title\">\n <span className=\"icon\">\n <FontAwesomeIcon\n icon={vsRemove}\n style={{ color: contextMenuSortIconColor ?? undefined }}\n />\n </span>\n <span className=\"title\">Add Additional Sort</span>\n <span className=\"shortcut\">\n {ContextActionUtils.isMacPlatform() ? '⌘Click' : '^Click'}\n </span>\n </div>\n ),\n order: 1,\n },\n {\n title: `${column.name} Ascending`,\n order: 10,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n false,\n true\n );\n },\n },\n {\n title: `${column.name} Descending`,\n order: 20,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n false,\n true\n );\n },\n },\n ];\n if (TableUtils.isNumberType(column.type)) {\n additionalSortActions.push({\n title: `ABS(${column.name}) Ascending`,\n order: 30,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.ascending,\n true,\n true\n );\n },\n });\n additionalSortActions.push({\n title: `ABS(${column.name}) Descending`,\n order: 40,\n action: () => {\n this.irisGrid.sortColumn(\n columnIndex,\n IrisGridContextMenuHandler.COLUMN_SORT_DIRECTION.descending,\n true,\n true\n );\n },\n });\n }\n return additionalSortActions;\n }\n\n checkColumnSort(\n columnSort?: Sort | null,\n direction: SortDirection = null,\n isAbs = false\n ): boolean {\n if (!columnSort) {\n return false;\n }\n return columnSort.direction === direction && columnSort.isAbs === isAbs;\n }\n}\n\nexport default IrisGridContextMenuHandler;\n"],"file":"IrisGridContextMenuHandler.js"}
|