@vuu-ui/vuu-table-extras 0.13.8 → 0.13.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/cjs/cell-edit-validators/CaseValidator.js +25 -0
  2. package/cjs/cell-edit-validators/CaseValidator.js.map +1 -0
  3. package/cjs/cell-edit-validators/PatternValidator.js +31 -0
  4. package/cjs/cell-edit-validators/PatternValidator.js.map +1 -0
  5. package/cjs/cell-renderers/background-cell/BackgroundCell.css.js +6 -0
  6. package/cjs/cell-renderers/background-cell/BackgroundCell.css.js.map +1 -0
  7. package/cjs/cell-renderers/background-cell/BackgroundCell.js +76 -0
  8. package/cjs/cell-renderers/background-cell/BackgroundCell.js.map +1 -0
  9. package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js +6 -0
  10. package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js.map +1 -0
  11. package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js +67 -0
  12. package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js.map +1 -0
  13. package/cjs/cell-renderers/background-cell/BackgroundKeyframes.css.js +6 -0
  14. package/cjs/cell-renderers/background-cell/BackgroundKeyframes.css.js.map +1 -0
  15. package/cjs/cell-renderers/background-cell/useDirection.js +20 -0
  16. package/cjs/cell-renderers/background-cell/useDirection.js.map +1 -0
  17. package/cjs/cell-renderers/dropdown-cell/DropdownCell.css.js +6 -0
  18. package/cjs/cell-renderers/dropdown-cell/DropdownCell.css.js.map +1 -0
  19. package/cjs/cell-renderers/dropdown-cell/DropdownCell.js +94 -0
  20. package/cjs/cell-renderers/dropdown-cell/DropdownCell.js.map +1 -0
  21. package/cjs/cell-renderers/lookup-cell/LookupCell.js +23 -0
  22. package/cjs/cell-renderers/lookup-cell/LookupCell.js.map +1 -0
  23. package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.css.js +6 -0
  24. package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.css.js.map +1 -0
  25. package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.js +62 -0
  26. package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.js.map +1 -0
  27. package/cjs/cell-renderers/progress-cell/ProgressCell.css.js +6 -0
  28. package/cjs/cell-renderers/progress-cell/ProgressCell.css.js.map +1 -0
  29. package/cjs/cell-renderers/progress-cell/ProgressCell.js +69 -0
  30. package/cjs/cell-renderers/progress-cell/ProgressCell.js.map +1 -0
  31. package/cjs/column-expression-input/ColumnExpressionInput.css.js +6 -0
  32. package/cjs/column-expression-input/ColumnExpressionInput.css.js.map +1 -0
  33. package/cjs/column-expression-input/ColumnExpressionInput.js +39 -0
  34. package/cjs/column-expression-input/ColumnExpressionInput.js.map +1 -0
  35. package/cjs/column-expression-input/column-function-descriptors.js +307 -0
  36. package/cjs/column-expression-input/column-function-descriptors.js.map +1 -0
  37. package/cjs/column-expression-input/column-language-parser/ColumnExpressionLanguage.js +28 -0
  38. package/cjs/column-expression-input/column-language-parser/ColumnExpressionLanguage.js.map +1 -0
  39. package/cjs/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js +465 -0
  40. package/cjs/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map +1 -0
  41. package/cjs/column-expression-input/column-language-parser/column-expression-parse-utils.js +61 -0
  42. package/cjs/column-expression-input/column-language-parser/column-expression-parse-utils.js.map +1 -0
  43. package/cjs/column-expression-input/column-language-parser/generated/column-parser.js +21 -0
  44. package/cjs/column-expression-input/column-language-parser/generated/column-parser.js.map +1 -0
  45. package/cjs/column-expression-input/functionDocInfo.js +39 -0
  46. package/cjs/column-expression-input/functionDocInfo.js.map +1 -0
  47. package/cjs/column-expression-input/highlighting.js +16 -0
  48. package/cjs/column-expression-input/highlighting.js.map +1 -0
  49. package/cjs/column-expression-input/theme.js +63 -0
  50. package/cjs/column-expression-input/theme.js.map +1 -0
  51. package/cjs/column-expression-input/useColumnAutoComplete.js +358 -0
  52. package/cjs/column-expression-input/useColumnAutoComplete.js.map +1 -0
  53. package/cjs/column-expression-input/useColumnExpressionEditor.js +131 -0
  54. package/cjs/column-expression-input/useColumnExpressionEditor.js.map +1 -0
  55. package/cjs/column-expression-input/useColumnExpressionSuggestionProvider.js +213 -0
  56. package/cjs/column-expression-input/useColumnExpressionSuggestionProvider.js.map +1 -0
  57. package/cjs/column-expression-panel/ColumnExpressionPanel.js +85 -0
  58. package/cjs/column-expression-panel/ColumnExpressionPanel.js.map +1 -0
  59. package/cjs/column-expression-panel/useColumnExpression.js +69 -0
  60. package/cjs/column-expression-panel/useColumnExpression.js.map +1 -0
  61. package/cjs/column-formatting-settings/BaseNumericFormattingSettings.js +97 -0
  62. package/cjs/column-formatting-settings/BaseNumericFormattingSettings.js.map +1 -0
  63. package/cjs/column-formatting-settings/ColumnFormattingPanel.js +104 -0
  64. package/cjs/column-formatting-settings/ColumnFormattingPanel.js.map +1 -0
  65. package/cjs/column-formatting-settings/DateTimeFormattingSettings.js +99 -0
  66. package/cjs/column-formatting-settings/DateTimeFormattingSettings.js.map +1 -0
  67. package/cjs/column-formatting-settings/LongTypeFormattingSettings.css.js +6 -0
  68. package/cjs/column-formatting-settings/LongTypeFormattingSettings.css.js.map +1 -0
  69. package/cjs/column-formatting-settings/LongTypeFormattingSettings.js +49 -0
  70. package/cjs/column-formatting-settings/LongTypeFormattingSettings.js.map +1 -0
  71. package/cjs/column-list/ColumnList.css.js +6 -0
  72. package/cjs/column-list/ColumnList.css.js.map +1 -0
  73. package/cjs/column-list/ColumnList.js +172 -0
  74. package/cjs/column-list/ColumnList.js.map +1 -0
  75. package/cjs/column-menu/ColumnMenu.css.js +6 -0
  76. package/cjs/column-menu/ColumnMenu.css.js.map +1 -0
  77. package/cjs/column-menu/ColumnMenu.js +116 -0
  78. package/cjs/column-menu/ColumnMenu.js.map +1 -0
  79. package/cjs/column-menu/column-menu-utils.js +489 -0
  80. package/cjs/column-menu/column-menu-utils.js.map +1 -0
  81. package/cjs/column-menu/useColumnActions.js +75 -0
  82. package/cjs/column-menu/useColumnActions.js.map +1 -0
  83. package/cjs/datasource-stats/DatasourceStats.css.js +6 -0
  84. package/cjs/datasource-stats/DatasourceStats.css.js.map +1 -0
  85. package/cjs/datasource-stats/DatasourceStats.js +52 -0
  86. package/cjs/datasource-stats/DatasourceStats.js.map +1 -0
  87. package/cjs/index.js +65 -4254
  88. package/cjs/index.js.map +1 -1
  89. package/cjs/table-column-settings/ColumnNameLabel.css.js +6 -0
  90. package/cjs/table-column-settings/ColumnNameLabel.css.js.map +1 -0
  91. package/cjs/table-column-settings/ColumnNameLabel.js +45 -0
  92. package/cjs/table-column-settings/ColumnNameLabel.js.map +1 -0
  93. package/cjs/table-column-settings/ColumnSettingsPanel.css.js +6 -0
  94. package/cjs/table-column-settings/ColumnSettingsPanel.css.js.map +1 -0
  95. package/cjs/table-column-settings/ColumnSettingsPanel.js +202 -0
  96. package/cjs/table-column-settings/ColumnSettingsPanel.js.map +1 -0
  97. package/cjs/table-column-settings/TableSettingsPanel.css.js +6 -0
  98. package/cjs/table-column-settings/TableSettingsPanel.css.js.map +1 -0
  99. package/cjs/table-column-settings/TableSettingsPanel.js +139 -0
  100. package/cjs/table-column-settings/TableSettingsPanel.js.map +1 -0
  101. package/cjs/table-column-settings/useColumnSettings.js +224 -0
  102. package/cjs/table-column-settings/useColumnSettings.js.map +1 -0
  103. package/cjs/table-column-settings/useTableAndColumnSettings.js +126 -0
  104. package/cjs/table-column-settings/useTableAndColumnSettings.js.map +1 -0
  105. package/cjs/table-column-settings/useTableSettings.js +172 -0
  106. package/cjs/table-column-settings/useTableSettings.js.map +1 -0
  107. package/cjs/table-provider/TableProvider.js +48 -0
  108. package/cjs/table-provider/TableProvider.js.map +1 -0
  109. package/esm/cell-edit-validators/CaseValidator.js +23 -0
  110. package/esm/cell-edit-validators/CaseValidator.js.map +1 -0
  111. package/esm/cell-edit-validators/PatternValidator.js +29 -0
  112. package/esm/cell-edit-validators/PatternValidator.js.map +1 -0
  113. package/esm/cell-renderers/background-cell/BackgroundCell.css.js +4 -0
  114. package/esm/cell-renderers/background-cell/BackgroundCell.css.js.map +1 -0
  115. package/esm/cell-renderers/background-cell/BackgroundCell.js +74 -0
  116. package/esm/cell-renderers/background-cell/BackgroundCell.js.map +1 -0
  117. package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js +4 -0
  118. package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js.map +1 -0
  119. package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js +65 -0
  120. package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js.map +1 -0
  121. package/esm/cell-renderers/background-cell/BackgroundKeyframes.css.js +4 -0
  122. package/esm/cell-renderers/background-cell/BackgroundKeyframes.css.js.map +1 -0
  123. package/esm/cell-renderers/background-cell/useDirection.js +18 -0
  124. package/esm/cell-renderers/background-cell/useDirection.js.map +1 -0
  125. package/esm/cell-renderers/dropdown-cell/DropdownCell.css.js +4 -0
  126. package/esm/cell-renderers/dropdown-cell/DropdownCell.css.js.map +1 -0
  127. package/esm/cell-renderers/dropdown-cell/DropdownCell.js +92 -0
  128. package/esm/cell-renderers/dropdown-cell/DropdownCell.js.map +1 -0
  129. package/esm/cell-renderers/lookup-cell/LookupCell.js +21 -0
  130. package/esm/cell-renderers/lookup-cell/LookupCell.js.map +1 -0
  131. package/esm/cell-renderers/pct-progress-cell/PctProgressCell.css.js +4 -0
  132. package/esm/cell-renderers/pct-progress-cell/PctProgressCell.css.js.map +1 -0
  133. package/esm/cell-renderers/pct-progress-cell/PctProgressCell.js +60 -0
  134. package/esm/cell-renderers/pct-progress-cell/PctProgressCell.js.map +1 -0
  135. package/esm/cell-renderers/progress-cell/ProgressCell.css.js +4 -0
  136. package/esm/cell-renderers/progress-cell/ProgressCell.css.js.map +1 -0
  137. package/esm/cell-renderers/progress-cell/ProgressCell.js +67 -0
  138. package/esm/cell-renderers/progress-cell/ProgressCell.js.map +1 -0
  139. package/esm/column-expression-input/ColumnExpressionInput.css.js +4 -0
  140. package/esm/column-expression-input/ColumnExpressionInput.css.js.map +1 -0
  141. package/esm/column-expression-input/ColumnExpressionInput.js +37 -0
  142. package/esm/column-expression-input/ColumnExpressionInput.js.map +1 -0
  143. package/esm/column-expression-input/column-function-descriptors.js +305 -0
  144. package/esm/column-expression-input/column-function-descriptors.js.map +1 -0
  145. package/esm/column-expression-input/column-language-parser/ColumnExpressionLanguage.js +26 -0
  146. package/esm/column-expression-input/column-language-parser/ColumnExpressionLanguage.js.map +1 -0
  147. package/esm/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js +463 -0
  148. package/esm/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map +1 -0
  149. package/esm/column-expression-input/column-language-parser/column-expression-parse-utils.js +56 -0
  150. package/esm/column-expression-input/column-language-parser/column-expression-parse-utils.js.map +1 -0
  151. package/esm/column-expression-input/column-language-parser/generated/column-parser.js +19 -0
  152. package/esm/column-expression-input/column-language-parser/generated/column-parser.js.map +1 -0
  153. package/esm/column-expression-input/functionDocInfo.js +37 -0
  154. package/esm/column-expression-input/functionDocInfo.js.map +1 -0
  155. package/esm/column-expression-input/highlighting.js +14 -0
  156. package/esm/column-expression-input/highlighting.js.map +1 -0
  157. package/esm/column-expression-input/theme.js +61 -0
  158. package/esm/column-expression-input/theme.js.map +1 -0
  159. package/esm/column-expression-input/useColumnAutoComplete.js +356 -0
  160. package/esm/column-expression-input/useColumnAutoComplete.js.map +1 -0
  161. package/esm/column-expression-input/useColumnExpressionEditor.js +129 -0
  162. package/esm/column-expression-input/useColumnExpressionEditor.js.map +1 -0
  163. package/esm/column-expression-input/useColumnExpressionSuggestionProvider.js +211 -0
  164. package/esm/column-expression-input/useColumnExpressionSuggestionProvider.js.map +1 -0
  165. package/esm/column-expression-panel/ColumnExpressionPanel.js +83 -0
  166. package/esm/column-expression-panel/ColumnExpressionPanel.js.map +1 -0
  167. package/esm/column-expression-panel/useColumnExpression.js +67 -0
  168. package/esm/column-expression-panel/useColumnExpression.js.map +1 -0
  169. package/esm/column-formatting-settings/BaseNumericFormattingSettings.js +95 -0
  170. package/esm/column-formatting-settings/BaseNumericFormattingSettings.js.map +1 -0
  171. package/esm/column-formatting-settings/ColumnFormattingPanel.js +102 -0
  172. package/esm/column-formatting-settings/ColumnFormattingPanel.js.map +1 -0
  173. package/esm/column-formatting-settings/DateTimeFormattingSettings.js +97 -0
  174. package/esm/column-formatting-settings/DateTimeFormattingSettings.js.map +1 -0
  175. package/esm/column-formatting-settings/LongTypeFormattingSettings.css.js +4 -0
  176. package/esm/column-formatting-settings/LongTypeFormattingSettings.css.js.map +1 -0
  177. package/esm/column-formatting-settings/LongTypeFormattingSettings.js +47 -0
  178. package/esm/column-formatting-settings/LongTypeFormattingSettings.js.map +1 -0
  179. package/esm/column-list/ColumnList.css.js +4 -0
  180. package/esm/column-list/ColumnList.css.js.map +1 -0
  181. package/esm/column-list/ColumnList.js +170 -0
  182. package/esm/column-list/ColumnList.js.map +1 -0
  183. package/esm/column-menu/ColumnMenu.css.js +4 -0
  184. package/esm/column-menu/ColumnMenu.css.js.map +1 -0
  185. package/esm/column-menu/ColumnMenu.js +114 -0
  186. package/esm/column-menu/ColumnMenu.js.map +1 -0
  187. package/esm/column-menu/column-menu-utils.js +480 -0
  188. package/esm/column-menu/column-menu-utils.js.map +1 -0
  189. package/esm/column-menu/useColumnActions.js +73 -0
  190. package/esm/column-menu/useColumnActions.js.map +1 -0
  191. package/esm/datasource-stats/DatasourceStats.css.js +4 -0
  192. package/esm/datasource-stats/DatasourceStats.css.js.map +1 -0
  193. package/esm/datasource-stats/DatasourceStats.js +50 -0
  194. package/esm/datasource-stats/DatasourceStats.js.map +1 -0
  195. package/esm/index.js +28 -4221
  196. package/esm/index.js.map +1 -1
  197. package/esm/table-column-settings/ColumnNameLabel.css.js +4 -0
  198. package/esm/table-column-settings/ColumnNameLabel.css.js.map +1 -0
  199. package/esm/table-column-settings/ColumnNameLabel.js +43 -0
  200. package/esm/table-column-settings/ColumnNameLabel.js.map +1 -0
  201. package/esm/table-column-settings/ColumnSettingsPanel.css.js +4 -0
  202. package/esm/table-column-settings/ColumnSettingsPanel.css.js.map +1 -0
  203. package/esm/table-column-settings/ColumnSettingsPanel.js +200 -0
  204. package/esm/table-column-settings/ColumnSettingsPanel.js.map +1 -0
  205. package/esm/table-column-settings/TableSettingsPanel.css.js +4 -0
  206. package/esm/table-column-settings/TableSettingsPanel.css.js.map +1 -0
  207. package/esm/table-column-settings/TableSettingsPanel.js +136 -0
  208. package/esm/table-column-settings/TableSettingsPanel.js.map +1 -0
  209. package/esm/table-column-settings/useColumnSettings.js +222 -0
  210. package/esm/table-column-settings/useColumnSettings.js.map +1 -0
  211. package/esm/table-column-settings/useTableAndColumnSettings.js +122 -0
  212. package/esm/table-column-settings/useTableAndColumnSettings.js.map +1 -0
  213. package/esm/table-column-settings/useTableSettings.js +170 -0
  214. package/esm/table-column-settings/useTableSettings.js.map +1 -0
  215. package/esm/table-provider/TableProvider.js +44 -0
  216. package/esm/table-provider/TableProvider.js.map +1 -0
  217. package/package.json +11 -11
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var columnMenuCss = ".vuuMenuItem {\n --vuu-svg-cog: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M12.9533 8.65331C12.98 8.43998 13 8.22665 13 7.99998C13 7.77331 12.98 7.55998 12.9533 7.34665L14.36 6.24665C14.4867 6.14665 14.52 5.96665 14.44 5.81998L13.1067 3.51331C13.0267 3.36665 12.8467 3.31331 12.7 3.36665L11.04 4.03331C10.6933 3.76665 10.32 3.54665 9.91333 3.37998L9.66 1.61331C9.64 1.45331 9.5 1.33331 9.33333 1.33331H6.66667C6.5 1.33331 6.36 1.45331 6.34 1.61331L6.08667 3.37998C5.68 3.54665 5.30667 3.77331 4.96 4.03331L3.3 3.36665C3.14667 3.30665 2.97333 3.36665 2.89333 3.51331L1.56 5.81998C1.47333 5.96665 1.51333 6.14665 1.64 6.24665L3.04667 7.34665C3.02 7.55998 3 7.77998 3 7.99998C3 8.21998 3.02 8.43998 3.04667 8.65331L1.64 9.75331C1.51333 9.85331 1.48 10.0333 1.56 10.18L2.89333 12.4866C2.97333 12.6333 3.15333 12.6866 3.3 12.6333L4.96 11.9666C5.30667 12.2333 5.68 12.4533 6.08667 12.62L6.34 14.3866C6.36 14.5466 6.5 14.6666 6.66667 14.6666H9.33333C9.5 14.6666 9.64 14.5466 9.66 14.3866L9.91333 12.62C10.32 12.4533 10.6933 12.2266 11.04 11.9666L12.7 12.6333C12.8533 12.6933 13.0267 12.6333 13.1067 12.4866L14.44 10.18C14.52 10.0333 14.4867 9.85331 14.36 9.75331L12.9533 8.65331V8.65331ZM8 10.3333C6.71333 10.3333 5.66667 9.28665 5.66667 7.99998C5.66667 6.71331 6.71333 5.66665 8 5.66665C9.28667 5.66665 10.3333 6.71331 10.3333 7.99998C10.3333 9.28665 9.28667 10.3333 8 10.3333Z\"/></svg>');\n}\n.vuuColumnMenu {\n --menu-button-size: calc(var(--salt-size-base) - var(--salt-spacing-100));\n --saltButton-padding: var(--salt-spacing-50);\n --saltButton-minWidth: var(--menu-button-size);\n --saltButton-height: var(--menu-button-size);\n --saltButton-width: var(--menu-button-size);\n\n --vuu-icon-height: var(--menu-button-size);\n --vuu-icon-left: 0px;\n --vuu-icon-top: 0px;\n --vuu-icon-width: var(--menu-button-size);\n\n border: none;\n border-radius: 4px;\n flex: 0 0 var(--menu-button-size);\n margin: var(--vuuTable-columnMenu-margin, 0);\n padding: 0;\n}\n";
4
+
5
+ module.exports = columnMenuCss;
6
+ //# sourceMappingURL=ColumnMenu.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnMenu.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,116 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var core = require('@salt-ds/core');
5
+ var styles = require('@salt-ds/styles');
6
+ var window = require('@salt-ds/window');
7
+ var vuuUiControls = require('@vuu-ui/vuu-ui-controls');
8
+ var TableProvider = require('../table-provider/TableProvider.js');
9
+ var cx = require('clsx');
10
+ var react = require('react');
11
+ var ColumnMenu$1 = require('./ColumnMenu.css.js');
12
+ var columnMenuUtils = require('./column-menu-utils.js');
13
+ var TableSettingsPanel = require('../table-column-settings/TableSettingsPanel.js');
14
+
15
+ const classBase = "vuuColumnMenu";
16
+ const defaultColumnMenuPermissions = {
17
+ allowSort: true,
18
+ allowGroup: true,
19
+ allowAggregation: true,
20
+ allowHide: true,
21
+ allowPin: true,
22
+ allowColumnSettings: true,
23
+ allowTableSettings: TableSettingsPanel.defaultTableSettingsPermissions
24
+ };
25
+ const ColumnMenu = ({
26
+ className,
27
+ column,
28
+ menuActionHandler: menuActionHandlerProp,
29
+ menuPermissions: {
30
+ allowSort,
31
+ allowGroup,
32
+ allowAggregation,
33
+ allowHide,
34
+ allowPin,
35
+ allowColumnSettings,
36
+ allowTableSettings
37
+ } = defaultColumnMenuPermissions
38
+ }) => {
39
+ const targetWindow = window.useWindow();
40
+ styles.useComponentCssInjection({
41
+ testId: "vuu-column-menu",
42
+ css: ColumnMenu$1,
43
+ window: targetWindow
44
+ });
45
+ const { dataSource, menuActionHandler } = TableProvider.useTableContext(true);
46
+ const menuActionClickHandler = react.useCallback(
47
+ (evt) => {
48
+ const columnMenuActionType = columnMenuUtils.getColumnMenuActionType(evt.target);
49
+ if (menuActionHandlerProp?.(columnMenuActionType, column) !== true) {
50
+ return menuActionHandler(columnMenuActionType, column);
51
+ }
52
+ },
53
+ [column, menuActionHandler, menuActionHandlerProp]
54
+ );
55
+ const sortMenu = columnMenuUtils.buildSortMenu(
56
+ column,
57
+ dataSource,
58
+ menuActionClickHandler,
59
+ allowSort
60
+ );
61
+ const groupMenu = columnMenuUtils.buildGroupMenu(
62
+ column,
63
+ dataSource,
64
+ menuActionClickHandler,
65
+ allowGroup
66
+ );
67
+ const aggregationMenu = columnMenuUtils.buildAggregationMenuItems(
68
+ column,
69
+ dataSource,
70
+ menuActionClickHandler,
71
+ allowAggregation
72
+ );
73
+ const visibilityMenuItems = columnMenuUtils.buildVisibilityMenuItems(
74
+ column,
75
+ menuActionClickHandler,
76
+ allowHide
77
+ );
78
+ const pinMenu = columnMenuUtils.buildPinMenuItems(column, menuActionClickHandler, allowPin);
79
+ const settingsMenuItems = columnMenuUtils.buildSettingsMenuItems(
80
+ column,
81
+ menuActionClickHandler,
82
+ allowColumnSettings,
83
+ allowTableSettings
84
+ );
85
+ const handleClick = react.useCallback(
86
+ (evt) => {
87
+ evt.stopPropagation();
88
+ },
89
+ []
90
+ );
91
+ return /* @__PURE__ */ jsxRuntime.jsxs(core.Menu, { children: [
92
+ /* @__PURE__ */ jsxRuntime.jsx(core.MenuTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
93
+ vuuUiControls.IconButton,
94
+ {
95
+ appearance: "transparent",
96
+ className: cx(classBase, className),
97
+ "data-embedded": true,
98
+ icon: "more-vert",
99
+ sentiment: "neutral",
100
+ "aria-label": "Open Column Menu",
101
+ onClick: handleClick
102
+ }
103
+ ) }),
104
+ /* @__PURE__ */ jsxRuntime.jsxs(core.MenuPanel, { children: [
105
+ sortMenu,
106
+ groupMenu,
107
+ aggregationMenu,
108
+ visibilityMenuItems,
109
+ pinMenu,
110
+ settingsMenuItems
111
+ ] })
112
+ ] });
113
+ };
114
+
115
+ exports.ColumnMenu = ColumnMenu;
116
+ //# sourceMappingURL=ColumnMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnMenu.js","sources":["../../src/column-menu/ColumnMenu.tsx"],"sourcesContent":["import { Menu, MenuPanel, MenuTrigger } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport {\n ColumnDescriptor,\n ColumnMenuPermissions,\n} from \"@vuu-ui/vuu-table-types\";\nimport { IconButton } from \"@vuu-ui/vuu-ui-controls\";\nimport { useTableContext } from \"../table-provider/TableProvider\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, MouseEventHandler, useCallback } from \"react\";\n\nimport columnMenuCss from \"./ColumnMenu.css\";\nimport {\n buildAggregationMenuItems,\n buildPinMenuItems,\n buildGroupMenu,\n buildSortMenu,\n buildVisibilityMenuItems,\n ColumnMenuActionType,\n getColumnMenuActionType,\n type MenuItemClickHandler,\n buildSettingsMenuItems,\n} from \"./column-menu-utils\";\nimport { MenuActionHandler } from \"@vuu-ui/vuu-context-menu\";\nimport { defaultTableSettingsPermissions } from \"../table-column-settings/TableSettingsPanel\";\n\nconst classBase = \"vuuColumnMenu\";\n\nconst defaultColumnMenuPermissions: Readonly<ColumnMenuPermissions> = {\n allowSort: true,\n allowGroup: true,\n allowAggregation: true,\n allowHide: true,\n allowPin: true,\n allowColumnSettings: true,\n allowTableSettings: defaultTableSettingsPermissions,\n};\n\nexport interface ColumnMenuProps extends HTMLAttributes<HTMLSpanElement> {\n column: ColumnDescriptor;\n menuActionHandler?: MenuActionHandler<ColumnMenuActionType, ColumnDescriptor>;\n menuPermissions?: ColumnMenuPermissions;\n}\n\nexport const ColumnMenu = ({\n className,\n column,\n menuActionHandler: menuActionHandlerProp,\n menuPermissions: {\n allowSort,\n allowGroup,\n allowAggregation,\n allowHide,\n allowPin,\n allowColumnSettings,\n allowTableSettings,\n } = defaultColumnMenuPermissions,\n}: ColumnMenuProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-column-menu\",\n css: columnMenuCss,\n window: targetWindow,\n });\n\n const { dataSource, menuActionHandler } = useTableContext(true);\n\n const menuActionClickHandler = useCallback<MenuItemClickHandler>(\n (evt) => {\n const columnMenuActionType = getColumnMenuActionType(evt.target);\n if (menuActionHandlerProp?.(columnMenuActionType, column) !== true) {\n return menuActionHandler(columnMenuActionType, column);\n }\n },\n [column, menuActionHandler, menuActionHandlerProp],\n );\n\n const sortMenu = buildSortMenu(\n column,\n dataSource,\n menuActionClickHandler,\n allowSort,\n );\n const groupMenu = buildGroupMenu(\n column,\n dataSource,\n menuActionClickHandler,\n allowGroup,\n );\n const aggregationMenu = buildAggregationMenuItems(\n column,\n dataSource,\n menuActionClickHandler,\n allowAggregation,\n );\n const visibilityMenuItems = buildVisibilityMenuItems(\n column,\n menuActionClickHandler,\n allowHide,\n );\n const pinMenu = buildPinMenuItems(column, menuActionClickHandler, allowPin);\n const settingsMenuItems = buildSettingsMenuItems(\n column,\n menuActionClickHandler,\n allowColumnSettings,\n allowTableSettings,\n );\n\n const handleClick = useCallback<MouseEventHandler<HTMLButtonElement>>(\n (evt) => {\n // Prevent sort from triggering if the click were to bubble.\n evt.stopPropagation();\n },\n [],\n );\n\n return (\n <Menu>\n <MenuTrigger>\n <IconButton\n appearance=\"transparent\"\n className={cx(classBase, className)}\n data-embedded\n icon=\"more-vert\"\n sentiment=\"neutral\"\n aria-label=\"Open Column Menu\"\n onClick={handleClick}\n />\n </MenuTrigger>\n <MenuPanel>\n {sortMenu}\n {groupMenu}\n {aggregationMenu}\n {visibilityMenuItems}\n {pinMenu}\n {settingsMenuItems}\n </MenuPanel>\n </Menu>\n );\n};\n"],"names":["defaultTableSettingsPermissions","useWindow","useComponentCssInjection","columnMenuCss","useTableContext","useCallback","getColumnMenuActionType","buildSortMenu","buildGroupMenu","buildAggregationMenuItems","buildVisibilityMenuItems","buildPinMenuItems","buildSettingsMenuItems","Menu","jsx","MenuTrigger","IconButton","MenuPanel"],"mappings":"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"}
@@ -0,0 +1,489 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var core = require('@salt-ds/core');
5
+ var vuuUtils = require('@vuu-ui/vuu-utils');
6
+
7
+ const isColumnMenuActionType = (value) => value !== void 0 && [
8
+ "agg-count",
9
+ "agg-distinct",
10
+ "agg-sum",
11
+ "agg-avg",
12
+ "agg-high",
13
+ "agg-low",
14
+ "sort-asc",
15
+ "sort-dsc",
16
+ "sort-add-asc",
17
+ "sort-add-dsc",
18
+ "remove-sort",
19
+ "group-column",
20
+ "remove-group",
21
+ "add-to-group",
22
+ "remove-from-group",
23
+ "pin-column-left",
24
+ "pin-column-right",
25
+ "pin-column-floating",
26
+ "unpin-column",
27
+ "hide-column",
28
+ "remove-column",
29
+ "column-settings",
30
+ "table-settings"
31
+ ].includes(value);
32
+ const getColumnMenuActionType = (target) => {
33
+ const { menuActionId } = target.dataset;
34
+ if (isColumnMenuActionType(menuActionId)) {
35
+ return menuActionId;
36
+ } else {
37
+ throw Error(
38
+ "[vuu-table-extras] column-menu-utils target element is not a valid Column MenuItem"
39
+ );
40
+ }
41
+ };
42
+ function buildSortMenu(column, dataSource, menuActionClickHandler, isAllowed = true) {
43
+ if (!isAllowed || column.sortable === false) {
44
+ return null;
45
+ } else {
46
+ const { name, label = name } = column;
47
+ const menuItems = [];
48
+ const columnSortStatus = vuuUtils.getSortStatus(column.name, dataSource.sort);
49
+ switch (columnSortStatus) {
50
+ case "no-sort":
51
+ menuItems.push(
52
+ /* @__PURE__ */ jsxRuntime.jsx(
53
+ core.MenuItem,
54
+ {
55
+ "data-menu-action-id": "sort-asc",
56
+ onClick: menuActionClickHandler,
57
+ children: "Sort ascending"
58
+ },
59
+ "sort-asc"
60
+ )
61
+ );
62
+ menuItems.push(
63
+ /* @__PURE__ */ jsxRuntime.jsx(
64
+ core.MenuItem,
65
+ {
66
+ "data-menu-action-id": "sort-dsc",
67
+ onClick: menuActionClickHandler,
68
+ children: "Sort descending"
69
+ },
70
+ "sort-dsc"
71
+ )
72
+ );
73
+ break;
74
+ case "single-sort-asc":
75
+ menuItems.push(
76
+ /* @__PURE__ */ jsxRuntime.jsx(
77
+ core.MenuItem,
78
+ {
79
+ "data-menu-action-id": "sort-dsc",
80
+ onClick: menuActionClickHandler,
81
+ children: "Reverse Sort (DSC)"
82
+ },
83
+ "sort-dsc"
84
+ ),
85
+ /* @__PURE__ */ jsxRuntime.jsx(
86
+ core.MenuItem,
87
+ {
88
+ "data-menu-action-id": "remove-sort",
89
+ onClick: menuActionClickHandler,
90
+ children: "Remove Sort"
91
+ },
92
+ "remove-sort"
93
+ )
94
+ );
95
+ break;
96
+ case "single-sort-desc":
97
+ menuItems.push(
98
+ /* @__PURE__ */ jsxRuntime.jsx(
99
+ core.MenuItem,
100
+ {
101
+ "data-menu-action-id": "sort-asc",
102
+ onClick: menuActionClickHandler,
103
+ children: "Reverse Sort (ASC)"
104
+ },
105
+ "sort-asc"
106
+ ),
107
+ /* @__PURE__ */ jsxRuntime.jsx(
108
+ core.MenuItem,
109
+ {
110
+ "data-menu-action-id": "remove-sort",
111
+ onClick: menuActionClickHandler,
112
+ children: "Remove Sort"
113
+ },
114
+ "remove-sort"
115
+ )
116
+ );
117
+ break;
118
+ case "sort-other-column":
119
+ menuItems.push(
120
+ /* @__PURE__ */ jsxRuntime.jsx(
121
+ core.MenuItem,
122
+ {
123
+ "data-menu-action-id": "sort-add-asc",
124
+ onClick: menuActionClickHandler,
125
+ children: "Add to sort ASC"
126
+ },
127
+ "sort-add-asc"
128
+ )
129
+ );
130
+ menuItems.push(
131
+ /* @__PURE__ */ jsxRuntime.jsx(
132
+ core.MenuItem,
133
+ {
134
+ "data-menu-action-id": "sort-add-dsc",
135
+ onClick: menuActionClickHandler,
136
+ children: "Add to sort DSC"
137
+ },
138
+ "sort-add-dsc"
139
+ )
140
+ );
141
+ menuItems.push(
142
+ /* @__PURE__ */ jsxRuntime.jsx(
143
+ core.MenuItem,
144
+ {
145
+ "data-menu-action-id": "sort-asc",
146
+ onClick: menuActionClickHandler,
147
+ children: "Ascending"
148
+ },
149
+ "sort-asc"
150
+ )
151
+ );
152
+ menuItems.push(
153
+ /* @__PURE__ */ jsxRuntime.jsx(
154
+ core.MenuItem,
155
+ {
156
+ "data-menu-action-id": "sort-dsc",
157
+ onClick: menuActionClickHandler,
158
+ children: "Descending"
159
+ },
160
+ "sort-dsc"
161
+ )
162
+ );
163
+ break;
164
+ case "multi-sort-includes-column-asc":
165
+ case "multi-sort-includes-column-desc":
166
+ break;
167
+ default:
168
+ vuuUtils.logUnhandledMessage(
169
+ columnSortStatus,
170
+ "[vuu-table-extras] column-menu-utils buildSortMenu"
171
+ );
172
+ }
173
+ return /* @__PURE__ */ jsxRuntime.jsxs(core.Menu, { children: [
174
+ /* @__PURE__ */ jsxRuntime.jsx(core.MenuTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(core.MenuItem, { children: `Sort by ${label}` }) }),
175
+ /* @__PURE__ */ jsxRuntime.jsx(core.MenuPanel, { children: menuItems })
176
+ ] }, "sort-menu");
177
+ }
178
+ }
179
+ function buildGroupMenu(column, dataSource, menuActionClickHandler, isAllowed = true) {
180
+ if (!isAllowed || column.groupable === false) {
181
+ return null;
182
+ } else {
183
+ const menuItems = [];
184
+ const columnGroupStatus = vuuUtils.getGroupStatus(column.name, dataSource.groupBy);
185
+ const { name, label = name } = column;
186
+ switch (columnGroupStatus) {
187
+ case "no-groupby":
188
+ case "single-groupby-other-column":
189
+ return /* @__PURE__ */ jsxRuntime.jsx(
190
+ core.MenuItem,
191
+ {
192
+ "data-menu-action-id": "group-column",
193
+ onClick: menuActionClickHandler,
194
+ children: `Group by ${label}`
195
+ },
196
+ "group-column"
197
+ );
198
+ case "single-groupby":
199
+ menuItems.push(
200
+ /* @__PURE__ */ jsxRuntime.jsx(
201
+ core.MenuItem,
202
+ {
203
+ "data-menu-action-id": "remove-group",
204
+ onClick: menuActionClickHandler,
205
+ children: "Remove Grouping"
206
+ },
207
+ "remove-group"
208
+ )
209
+ );
210
+ break;
211
+ case "multi-groupby-other-columns":
212
+ menuItems.push(
213
+ /* @__PURE__ */ jsxRuntime.jsx(
214
+ core.MenuItem,
215
+ {
216
+ "data-menu-action-id": "add-to-group",
217
+ onClick: menuActionClickHandler,
218
+ children: "Add to grouping"
219
+ },
220
+ "add-to-group"
221
+ )
222
+ );
223
+ break;
224
+ case "multi-groupby-includes-column":
225
+ menuItems.push(
226
+ /* @__PURE__ */ jsxRuntime.jsx(
227
+ core.MenuItem,
228
+ {
229
+ "data-menu-action-id": "remove-from-group",
230
+ onClick: menuActionClickHandler,
231
+ children: "Remove from grouping"
232
+ },
233
+ "remove-from-group"
234
+ )
235
+ );
236
+ break;
237
+ default:
238
+ vuuUtils.logUnhandledMessage(
239
+ columnGroupStatus,
240
+ "[vuu-table-extras] column-menu-utils buildGroupMenu"
241
+ );
242
+ }
243
+ return /* @__PURE__ */ jsxRuntime.jsxs(core.Menu, { children: [
244
+ /* @__PURE__ */ jsxRuntime.jsx(core.MenuTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(core.MenuItem, { children: "Group data" }) }),
245
+ /* @__PURE__ */ jsxRuntime.jsx(core.MenuPanel, { children: menuItems })
246
+ ] }, "group-menu");
247
+ }
248
+ }
249
+ const buildVisibilityMenuItems = (column, menuActionClickHandler, isAllowed = true) => {
250
+ if (!isAllowed) {
251
+ return null;
252
+ }
253
+ const menuItems = [];
254
+ const { name, label = name } = column;
255
+ menuItems.push(
256
+ /* @__PURE__ */ jsxRuntime.jsx(
257
+ core.MenuItem,
258
+ {
259
+ "data-menu-action-id": "hide-column",
260
+ onClick: menuActionClickHandler,
261
+ children: `Hide ${label} column`
262
+ },
263
+ "hide-column"
264
+ )
265
+ );
266
+ menuItems.push(
267
+ /* @__PURE__ */ jsxRuntime.jsx(
268
+ core.MenuItem,
269
+ {
270
+ "data-menu-action-id": "remove-column",
271
+ onClick: menuActionClickHandler,
272
+ children: `Remove ${label} column`
273
+ },
274
+ "remove-column"
275
+ )
276
+ );
277
+ return menuItems;
278
+ };
279
+ const buildPinMenuItems = (column, menuActionClickHandler, isAllowed = true) => {
280
+ if (!isAllowed || column === void 0) {
281
+ return [];
282
+ }
283
+ const { pin } = column;
284
+ const menuItems = [];
285
+ const pinLeft = /* @__PURE__ */ jsxRuntime.jsx(
286
+ core.MenuItem,
287
+ {
288
+ "data-menu-action-id": "pin-column-left",
289
+ onClick: menuActionClickHandler,
290
+ children: "Pin left"
291
+ },
292
+ "pin-column-left"
293
+ );
294
+ const pinFloating = /* @__PURE__ */ jsxRuntime.jsx(
295
+ core.MenuItem,
296
+ {
297
+ "data-menu-action-id": "pin-column-floating",
298
+ onClick: menuActionClickHandler,
299
+ children: "Pin floating"
300
+ },
301
+ "pin-column-floating"
302
+ );
303
+ const pinRight = /* @__PURE__ */ jsxRuntime.jsx(
304
+ core.MenuItem,
305
+ {
306
+ "data-menu-action-id": "pin-column-right",
307
+ onClick: menuActionClickHandler,
308
+ children: "Pin right"
309
+ },
310
+ "pin-column-right"
311
+ );
312
+ if (pin === void 0) {
313
+ menuItems.push(
314
+ /* @__PURE__ */ jsxRuntime.jsxs(core.Menu, { children: [
315
+ /* @__PURE__ */ jsxRuntime.jsx(core.MenuTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(core.MenuItem, { children: "Pin Column" }) }),
316
+ /* @__PURE__ */ jsxRuntime.jsxs(core.MenuPanel, { children: [
317
+ pinLeft,
318
+ pinFloating,
319
+ pinRight
320
+ ] })
321
+ ] }, "pin-menu")
322
+ );
323
+ } else {
324
+ menuItems.push(
325
+ /* @__PURE__ */ jsxRuntime.jsx(
326
+ core.MenuItem,
327
+ {
328
+ "data-menu-action-id": "unpin-column",
329
+ onClick: menuActionClickHandler,
330
+ children: "Unpin"
331
+ },
332
+ "unpin-column"
333
+ )
334
+ );
335
+ if (pin === "left") {
336
+ menuItems.push(
337
+ /* @__PURE__ */ jsxRuntime.jsxs(core.Menu, { children: [
338
+ /* @__PURE__ */ jsxRuntime.jsx(core.MenuTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(core.MenuItem, { children: "Pin Column" }) }),
339
+ /* @__PURE__ */ jsxRuntime.jsxs(core.MenuPanel, { children: [
340
+ pinFloating,
341
+ pinRight
342
+ ] })
343
+ ] }, "pin-menu")
344
+ );
345
+ } else if (pin === "floating") {
346
+ menuItems.push(
347
+ /* @__PURE__ */ jsxRuntime.jsxs(core.Menu, { children: [
348
+ /* @__PURE__ */ jsxRuntime.jsx(core.MenuTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(core.MenuItem, { children: "Pin Column" }) }),
349
+ /* @__PURE__ */ jsxRuntime.jsxs(core.MenuPanel, { children: [
350
+ pinLeft,
351
+ pinRight
352
+ ] })
353
+ ] }, "pin-menu")
354
+ );
355
+ } else {
356
+ menuItems.push(
357
+ /* @__PURE__ */ jsxRuntime.jsxs(core.Menu, { children: [
358
+ /* @__PURE__ */ jsxRuntime.jsx(core.MenuTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(core.MenuItem, { children: "Pin Column" }) }),
359
+ /* @__PURE__ */ jsxRuntime.jsxs(core.MenuPanel, { children: [
360
+ pinFloating,
361
+ pinRight
362
+ ] })
363
+ ] }, "pin-menu")
364
+ );
365
+ }
366
+ }
367
+ return menuItems;
368
+ };
369
+ const buildSettingsMenuItems = (_, menuActionClickHandler, allowColumnSettings = true, allowTableSettings = true) => {
370
+ if (!allowColumnSettings && !allowTableSettings) {
371
+ return null;
372
+ }
373
+ const menuItems = [];
374
+ if (allowColumnSettings) {
375
+ menuItems.push(
376
+ /* @__PURE__ */ jsxRuntime.jsx(
377
+ core.MenuItem,
378
+ {
379
+ "data-icon": "settings",
380
+ "data-menu-action-id": "column-settings",
381
+ onClick: menuActionClickHandler,
382
+ children: "Column settings ..."
383
+ },
384
+ "column-settings"
385
+ )
386
+ );
387
+ }
388
+ if (allowTableSettings) {
389
+ menuItems.push(
390
+ /* @__PURE__ */ jsxRuntime.jsx(
391
+ core.MenuItem,
392
+ {
393
+ "data-icon": "settings",
394
+ "data-menu-action-id": "table-settings",
395
+ onClick: menuActionClickHandler,
396
+ children: "Table settings ..."
397
+ },
398
+ "table-settings"
399
+ )
400
+ );
401
+ }
402
+ return menuItems;
403
+ };
404
+ function buildAggregationMenuItems(column, dataSource, menuActionClickHandler, isAllowed = true) {
405
+ if (!isAllowed) {
406
+ return null;
407
+ }
408
+ const { name, label = name } = column;
409
+ if (dataSource.groupBy?.length === 0) {
410
+ return [];
411
+ } else {
412
+ const menuItems = [
413
+ /* @__PURE__ */ jsxRuntime.jsx(
414
+ core.MenuItem,
415
+ {
416
+ "data-menu-action-id": "agg-count",
417
+ onClick: menuActionClickHandler,
418
+ children: "Count"
419
+ },
420
+ "agg-count"
421
+ ),
422
+ /* @__PURE__ */ jsxRuntime.jsx(
423
+ core.MenuItem,
424
+ {
425
+ "data-menu-action-id": "agg-distinct",
426
+ onClick: menuActionClickHandler,
427
+ children: "Distinct"
428
+ },
429
+ "agg-distinct"
430
+ )
431
+ ];
432
+ if (vuuUtils.isNumericColumn(column)) {
433
+ menuItems.push(
434
+ /* @__PURE__ */ jsxRuntime.jsx(
435
+ core.MenuItem,
436
+ {
437
+ "data-menu-action-id": "agg-sum",
438
+ onClick: menuActionClickHandler,
439
+ children: "Sum"
440
+ },
441
+ "agg-sum"
442
+ ),
443
+ /* @__PURE__ */ jsxRuntime.jsx(
444
+ core.MenuItem,
445
+ {
446
+ "data-menu-action-id": "agg-avg",
447
+ onClick: menuActionClickHandler,
448
+ children: "Average"
449
+ },
450
+ "agg-avg"
451
+ ),
452
+ /* @__PURE__ */ jsxRuntime.jsx(
453
+ core.MenuItem,
454
+ {
455
+ "data-menu-action-id": "agg-high",
456
+ onClick: menuActionClickHandler,
457
+ children: "High"
458
+ },
459
+ "agg-high"
460
+ ),
461
+ /* @__PURE__ */ jsxRuntime.jsx(
462
+ core.MenuItem,
463
+ {
464
+ "data-menu-action-id": "agg-low",
465
+ onClick: menuActionClickHandler,
466
+ children: "Low"
467
+ },
468
+ "agg-low"
469
+ )
470
+ );
471
+ }
472
+ return [
473
+ /* @__PURE__ */ jsxRuntime.jsxs(core.Menu, { children: [
474
+ /* @__PURE__ */ jsxRuntime.jsx(core.MenuTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(core.MenuItem, { children: `Aggregate ${label}` }) }),
475
+ /* @__PURE__ */ jsxRuntime.jsx(core.MenuPanel, { children: menuItems })
476
+ ] }, "aggregate-menu")
477
+ ];
478
+ }
479
+ }
480
+
481
+ exports.buildAggregationMenuItems = buildAggregationMenuItems;
482
+ exports.buildGroupMenu = buildGroupMenu;
483
+ exports.buildPinMenuItems = buildPinMenuItems;
484
+ exports.buildSettingsMenuItems = buildSettingsMenuItems;
485
+ exports.buildSortMenu = buildSortMenu;
486
+ exports.buildVisibilityMenuItems = buildVisibilityMenuItems;
487
+ exports.getColumnMenuActionType = getColumnMenuActionType;
488
+ exports.isColumnMenuActionType = isColumnMenuActionType;
489
+ //# sourceMappingURL=column-menu-utils.js.map