@vuu-ui/vuu-table-extras 1.0.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/cjs/{column-expression-panel/ColumnExpressionPanel.js → calculated-column/CalculatedColumnPanel.js} +13 -13
  2. package/cjs/calculated-column/CalculatedColumnPanel.js.map +1 -0
  3. package/cjs/{column-expression-panel/useColumnExpression.js → calculated-column/useCalculatedColumnPanel.js} +12 -10
  4. package/cjs/calculated-column/useCalculatedColumnPanel.js.map +1 -0
  5. package/cjs/calculated-column/useEditCalculatedColumn.js +138 -0
  6. package/cjs/calculated-column/useEditCalculatedColumn.js.map +1 -0
  7. package/cjs/column-formatting-settings/BaseNumericFormattingSettings.js +1 -0
  8. package/cjs/column-formatting-settings/BaseNumericFormattingSettings.js.map +1 -1
  9. package/cjs/column-formatting-settings/ColumnFormattingPanel.js +1 -0
  10. package/cjs/column-formatting-settings/ColumnFormattingPanel.js.map +1 -1
  11. package/cjs/column-menu/ColumnMenu.js +3 -15
  12. package/cjs/column-menu/ColumnMenu.js.map +1 -1
  13. package/cjs/column-menu/column-menu-utils.js +1 -38
  14. package/cjs/column-menu/column-menu-utils.js.map +1 -1
  15. package/cjs/column-menu/useColumnActions.js +0 -2
  16. package/cjs/column-menu/useColumnActions.js.map +1 -1
  17. package/cjs/column-picker/ColumnModel.js +58 -0
  18. package/cjs/column-picker/ColumnModel.js.map +1 -1
  19. package/cjs/column-picker/ColumnPicker.css.js +1 -1
  20. package/cjs/column-picker/ColumnPicker.js +37 -14
  21. package/cjs/column-picker/ColumnPicker.js.map +1 -1
  22. package/cjs/column-picker/ColumnPickerAction.js +34 -0
  23. package/cjs/column-picker/ColumnPickerAction.js.map +1 -0
  24. package/cjs/column-picker/useColumnPicker.js.map +1 -1
  25. package/cjs/column-picker/useTableColumnPicker.js +35 -0
  26. package/cjs/column-picker/useTableColumnPicker.js.map +1 -0
  27. package/cjs/column-settings-panel/ColumnNameLabel.js.map +1 -0
  28. package/cjs/{table-column-settings → column-settings-panel}/ColumnSettingsPanel.css.js +1 -1
  29. package/cjs/column-settings-panel/ColumnSettingsPanel.js +161 -0
  30. package/cjs/column-settings-panel/ColumnSettingsPanel.js.map +1 -0
  31. package/cjs/{table-column-settings → column-settings-panel}/useColumnSettings.js +42 -79
  32. package/cjs/column-settings-panel/useColumnSettings.js.map +1 -0
  33. package/cjs/datasource-stats/DatasourceStats.css.js +1 -1
  34. package/cjs/index.js +20 -19
  35. package/cjs/index.js.map +1 -1
  36. package/cjs/tabbed-table-config-panel/TabbedTableConfigPanel.css.js +6 -0
  37. package/cjs/tabbed-table-config-panel/TabbedTableConfigPanel.css.js.map +1 -0
  38. package/cjs/tabbed-table-config-panel/TabbedTableConfigPanel.js +90 -0
  39. package/cjs/tabbed-table-config-panel/TabbedTableConfigPanel.js.map +1 -0
  40. package/cjs/tabbed-table-config-panel/TabbedTableSettingsAction.js +44 -0
  41. package/cjs/tabbed-table-config-panel/TabbedTableSettingsAction.js.map +1 -0
  42. package/cjs/tabbed-table-config-panel/useTabbedTableConfigPanel.js +49 -0
  43. package/cjs/tabbed-table-config-panel/useTabbedTableConfigPanel.js.map +1 -0
  44. package/cjs/table-footer/TableFooter.css.js +6 -0
  45. package/cjs/table-footer/TableFooter.css.js.map +1 -0
  46. package/cjs/table-footer/TableFooter.js +34 -0
  47. package/cjs/table-footer/TableFooter.js.map +1 -0
  48. package/cjs/{table-column-settings → table-settings-panel}/TableSettingsPanel.css.js +1 -1
  49. package/cjs/{table-column-settings → table-settings-panel}/TableSettingsPanel.js +12 -47
  50. package/cjs/table-settings-panel/TableSettingsPanel.js.map +1 -0
  51. package/cjs/table-settings-panel/useTableSettings.js +60 -0
  52. package/cjs/table-settings-panel/useTableSettings.js.map +1 -0
  53. package/esm/{column-expression-panel/ColumnExpressionPanel.js → calculated-column/CalculatedColumnPanel.js} +13 -13
  54. package/esm/calculated-column/CalculatedColumnPanel.js.map +1 -0
  55. package/esm/{column-expression-panel/useColumnExpression.js → calculated-column/useCalculatedColumnPanel.js} +12 -10
  56. package/esm/calculated-column/useCalculatedColumnPanel.js.map +1 -0
  57. package/esm/calculated-column/useEditCalculatedColumn.js +136 -0
  58. package/esm/calculated-column/useEditCalculatedColumn.js.map +1 -0
  59. package/esm/column-formatting-settings/BaseNumericFormattingSettings.js +1 -0
  60. package/esm/column-formatting-settings/BaseNumericFormattingSettings.js.map +1 -1
  61. package/esm/column-formatting-settings/ColumnFormattingPanel.js +1 -0
  62. package/esm/column-formatting-settings/ColumnFormattingPanel.js.map +1 -1
  63. package/esm/column-menu/ColumnMenu.js +4 -16
  64. package/esm/column-menu/ColumnMenu.js.map +1 -1
  65. package/esm/column-menu/column-menu-utils.js +2 -38
  66. package/esm/column-menu/column-menu-utils.js.map +1 -1
  67. package/esm/column-menu/useColumnActions.js +0 -2
  68. package/esm/column-menu/useColumnActions.js.map +1 -1
  69. package/esm/column-picker/ColumnModel.js +58 -0
  70. package/esm/column-picker/ColumnModel.js.map +1 -1
  71. package/esm/column-picker/ColumnPicker.css.js +1 -1
  72. package/esm/column-picker/ColumnPicker.js +39 -16
  73. package/esm/column-picker/ColumnPicker.js.map +1 -1
  74. package/esm/column-picker/ColumnPickerAction.js +32 -0
  75. package/esm/column-picker/ColumnPickerAction.js.map +1 -0
  76. package/esm/column-picker/useColumnPicker.js.map +1 -1
  77. package/esm/column-picker/useTableColumnPicker.js +33 -0
  78. package/esm/column-picker/useTableColumnPicker.js.map +1 -0
  79. package/esm/column-settings-panel/ColumnNameLabel.js.map +1 -0
  80. package/esm/{table-column-settings → column-settings-panel}/ColumnSettingsPanel.css.js +1 -1
  81. package/esm/column-settings-panel/ColumnSettingsPanel.js +159 -0
  82. package/esm/column-settings-panel/ColumnSettingsPanel.js.map +1 -0
  83. package/esm/{table-column-settings → column-settings-panel}/useColumnSettings.js +44 -81
  84. package/esm/column-settings-panel/useColumnSettings.js.map +1 -0
  85. package/esm/datasource-stats/DatasourceStats.css.js +1 -1
  86. package/esm/index.js +9 -7
  87. package/esm/index.js.map +1 -1
  88. package/esm/tabbed-table-config-panel/TabbedTableConfigPanel.css.js +4 -0
  89. package/esm/tabbed-table-config-panel/TabbedTableConfigPanel.css.js.map +1 -0
  90. package/esm/tabbed-table-config-panel/TabbedTableConfigPanel.js +88 -0
  91. package/esm/tabbed-table-config-panel/TabbedTableConfigPanel.js.map +1 -0
  92. package/esm/tabbed-table-config-panel/TabbedTableSettingsAction.js +42 -0
  93. package/esm/tabbed-table-config-panel/TabbedTableSettingsAction.js.map +1 -0
  94. package/esm/tabbed-table-config-panel/useTabbedTableConfigPanel.js +47 -0
  95. package/esm/tabbed-table-config-panel/useTabbedTableConfigPanel.js.map +1 -0
  96. package/esm/table-footer/TableFooter.css.js +4 -0
  97. package/esm/table-footer/TableFooter.css.js.map +1 -0
  98. package/esm/table-footer/TableFooter.js +31 -0
  99. package/esm/table-footer/TableFooter.js.map +1 -0
  100. package/esm/{table-column-settings → table-settings-panel}/TableSettingsPanel.css.js +1 -1
  101. package/esm/{table-column-settings → table-settings-panel}/TableSettingsPanel.js +13 -48
  102. package/esm/table-settings-panel/TableSettingsPanel.js.map +1 -0
  103. package/esm/table-settings-panel/useTableSettings.js +58 -0
  104. package/esm/table-settings-panel/useTableSettings.js.map +1 -0
  105. package/package.json +12 -11
  106. package/types/calculated-column/CalculatedColumnPanel.d.ts +12 -0
  107. package/types/calculated-column/useCalculatedColumnPanel.d.ts +10 -0
  108. package/types/calculated-column/useEditCalculatedColumn.d.ts +13 -0
  109. package/types/column-menu/ColumnMenu.d.ts +1 -1
  110. package/types/column-menu/column-action-types.d.ts +1 -4
  111. package/types/column-menu/column-menu-utils.d.ts +3 -4
  112. package/types/column-picker/ColumnModel.d.ts +26 -3
  113. package/types/column-picker/ColumnPicker.d.ts +7 -3
  114. package/types/column-picker/ColumnPickerAction.d.ts +5 -0
  115. package/types/column-picker/useColumnPicker.d.ts +4 -4
  116. package/types/column-picker/useTableColumnPicker.d.ts +7 -0
  117. package/types/column-picker/useTableColumnPickerDeprecated.d.ts +14 -0
  118. package/types/{table-column-settings → column-settings-panel}/ColumnNameLabel.d.ts +1 -1
  119. package/types/column-settings-panel/ColumnSettingsPanel.d.ts +5 -0
  120. package/types/{table-column-settings → column-settings-panel}/useColumnSettings.d.ts +14 -7
  121. package/types/index.d.ts +10 -9
  122. package/types/tabbed-table-config-panel/TabbedTableConfigPanel.d.ts +17 -0
  123. package/types/tabbed-table-config-panel/TabbedTableSettingsAction.d.ts +7 -0
  124. package/types/tabbed-table-config-panel/useTabbedTableConfigPanel.d.ts +13 -0
  125. package/types/table-footer/TableFooter.d.ts +9 -0
  126. package/types/table-settings-panel/TableSettingsPanel.d.ts +22 -0
  127. package/types/table-settings-panel/useTableSettings.d.ts +14 -0
  128. package/cjs/column-expression-panel/ColumnExpressionPanel.js.map +0 -1
  129. package/cjs/column-expression-panel/useColumnExpression.js.map +0 -1
  130. package/cjs/column-list/ColumnList.css.js +0 -6
  131. package/cjs/column-list/ColumnList.css.js.map +0 -1
  132. package/cjs/column-list/ColumnList.js +0 -218
  133. package/cjs/column-list/ColumnList.js.map +0 -1
  134. package/cjs/column-list/useColumnList.js +0 -66
  135. package/cjs/column-list/useColumnList.js.map +0 -1
  136. package/cjs/table-column-settings/ColumnNameLabel.js.map +0 -1
  137. package/cjs/table-column-settings/ColumnSettingsPanel.js +0 -202
  138. package/cjs/table-column-settings/ColumnSettingsPanel.js.map +0 -1
  139. package/cjs/table-column-settings/TableSettingsPanel.js.map +0 -1
  140. package/cjs/table-column-settings/useColumnSettings.js.map +0 -1
  141. package/cjs/table-column-settings/useTableAndColumnSettings.js +0 -129
  142. package/cjs/table-column-settings/useTableAndColumnSettings.js.map +0 -1
  143. package/cjs/table-column-settings/useTableSettings.js +0 -176
  144. package/cjs/table-column-settings/useTableSettings.js.map +0 -1
  145. package/esm/column-expression-panel/ColumnExpressionPanel.js.map +0 -1
  146. package/esm/column-expression-panel/useColumnExpression.js.map +0 -1
  147. package/esm/column-list/ColumnList.css.js +0 -4
  148. package/esm/column-list/ColumnList.css.js.map +0 -1
  149. package/esm/column-list/ColumnList.js +0 -214
  150. package/esm/column-list/ColumnList.js.map +0 -1
  151. package/esm/column-list/useColumnList.js +0 -64
  152. package/esm/column-list/useColumnList.js.map +0 -1
  153. package/esm/table-column-settings/ColumnNameLabel.js.map +0 -1
  154. package/esm/table-column-settings/ColumnSettingsPanel.js +0 -200
  155. package/esm/table-column-settings/ColumnSettingsPanel.js.map +0 -1
  156. package/esm/table-column-settings/TableSettingsPanel.js.map +0 -1
  157. package/esm/table-column-settings/useColumnSettings.js.map +0 -1
  158. package/esm/table-column-settings/useTableAndColumnSettings.js +0 -125
  159. package/esm/table-column-settings/useTableAndColumnSettings.js.map +0 -1
  160. package/esm/table-column-settings/useTableSettings.js +0 -174
  161. package/esm/table-column-settings/useTableSettings.js.map +0 -1
  162. package/types/column-expression-panel/ColumnExpressionPanel.d.ts +0 -13
  163. package/types/column-expression-panel/index.d.ts +0 -1
  164. package/types/column-expression-panel/useColumnExpression.d.ts +0 -10
  165. package/types/column-list/ColumnList.d.ts +0 -11
  166. package/types/column-list/index.d.ts +0 -2
  167. package/types/column-list/useColumnList.d.ts +0 -22
  168. package/types/table-column-settings/ColumnSettingsPanel.d.ts +0 -2
  169. package/types/table-column-settings/TableSettingsPanel.d.ts +0 -9
  170. package/types/table-column-settings/useTableAndColumnSettings.d.ts +0 -18
  171. package/types/table-column-settings/useTableSettings.d.ts +0 -18
  172. /package/cjs/{table-column-settings → column-settings-panel}/ColumnNameLabel.css.js +0 -0
  173. /package/cjs/{table-column-settings → column-settings-panel}/ColumnNameLabel.css.js.map +0 -0
  174. /package/cjs/{table-column-settings → column-settings-panel}/ColumnNameLabel.js +0 -0
  175. /package/cjs/{table-column-settings → column-settings-panel}/ColumnSettingsPanel.css.js.map +0 -0
  176. /package/cjs/{table-column-settings → table-settings-panel}/TableSettingsPanel.css.js.map +0 -0
  177. /package/esm/{table-column-settings → column-settings-panel}/ColumnNameLabel.css.js +0 -0
  178. /package/esm/{table-column-settings → column-settings-panel}/ColumnNameLabel.css.js.map +0 -0
  179. /package/esm/{table-column-settings → column-settings-panel}/ColumnNameLabel.js +0 -0
  180. /package/esm/{table-column-settings → column-settings-panel}/ColumnSettingsPanel.css.js.map +0 -0
  181. /package/esm/{table-column-settings → table-settings-panel}/TableSettingsPanel.css.js.map +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabbedTableSettingsAction.js","sources":["../../../../packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableSettingsAction.tsx"],"sourcesContent":["import { IconButton, IconButtonProps } from \"@vuu-ui/vuu-ui-controls\";\nimport { useCallback } from \"react\";\nimport {\n TabbedTableConfigPanelHookProps,\n useTabbedTableConfigPanel,\n} from \"./useTabbedTableConfigPanel\";\nimport { TableDisplayAttributeChangeHandler } from \"../table-settings-panel/TableSettingsPanel\";\n\nexport interface TabbedTableSettingsActionProps\n extends Partial<IconButtonProps>,\n TabbedTableConfigPanelHookProps {\n onDisplayAttributeChange: TableDisplayAttributeChangeHandler;\n}\n\nexport const TabbedTableSettingsAction = ({\n allowCreateCalculatedColumn,\n appearance = \"transparent\",\n columnModel,\n config,\n icon = \"settings\",\n onDisplayAttributeChange,\n sentiment = \"neutral\",\n vuuTable,\n ...IconButtonProps\n}: TabbedTableSettingsActionProps) => {\n const { showTabbedTableConfigPanel } = useTabbedTableConfigPanel({\n allowCreateCalculatedColumn,\n columnModel,\n config,\n onDisplayAttributeChange,\n vuuTable,\n });\n\n const handleClick = useCallback(() => {\n showTabbedTableConfigPanel();\n }, [showTabbedTableConfigPanel]);\n\n return (\n <IconButton\n {...IconButtonProps}\n appearance={appearance}\n data-action=\"table-settings\"\n icon={icon}\n onClick={handleClick}\n sentiment={sentiment}\n size={20}\n />\n );\n};\n"],"names":["IconButtonProps"],"mappings":";;;;;AAcO,MAAM,4BAA4B,CAAC;AAAA,EACxC,2BAAA;AAAA,EACA,UAAa,GAAA,aAAA;AAAA,EACb,WAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAO,GAAA,UAAA;AAAA,EACP,wBAAA;AAAA,EACA,SAAY,GAAA,SAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAGA;AACL,CAAsC,KAAA;AACpC,EAAM,MAAA,EAAE,0BAA2B,EAAA,GAAI,yBAA0B,CAAA;AAAA,IAC/D,2BAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA;AAAA,IACA,wBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAM,MAAA,WAAA,GAAc,YAAY,MAAM;AACpC,IAA2B,0BAAA,EAAA;AAAA,GAC7B,EAAG,CAAC,0BAA0B,CAAC,CAAA;AAE/B,EACE,uBAAA,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACE,GAAGA,gBAAAA;AAAA,MACJ,UAAA;AAAA,MACA,aAAY,EAAA,gBAAA;AAAA,MACZ,IAAA;AAAA,MACA,OAAS,EAAA,WAAA;AAAA,MACT,SAAA;AAAA,MACA,IAAM,EAAA;AAAA;AAAA,GACR;AAEJ;;;;"}
@@ -0,0 +1,47 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useRef, useCallback } from 'react';
3
+ import { useContextPanel } from '@vuu-ui/vuu-ui-controls';
4
+ import { TabbedTableConfigPanel } from './TabbedTableConfigPanel.js';
5
+
6
+ const useTabbedTableConfigPanel = ({
7
+ allowCreateCalculatedColumn,
8
+ columnModel,
9
+ config,
10
+ onDisplayAttributeChange,
11
+ vuuTable
12
+ }) => {
13
+ const showContextPanel = useContextPanel();
14
+ const contextPanelShowing = useRef(false);
15
+ const showTabbedTableConfigPanel = useCallback(
16
+ (title = "Table settings") => {
17
+ contextPanelShowing.current = true;
18
+ showContextPanel(
19
+ /* @__PURE__ */ jsx(
20
+ TabbedTableConfigPanel,
21
+ {
22
+ allowCreateCalculatedColumn,
23
+ columnModel,
24
+ config,
25
+ onDisplayAttributeChange,
26
+ vuuTable
27
+ }
28
+ ),
29
+ title
30
+ );
31
+ },
32
+ [
33
+ allowCreateCalculatedColumn,
34
+ columnModel,
35
+ config,
36
+ onDisplayAttributeChange,
37
+ showContextPanel,
38
+ vuuTable
39
+ ]
40
+ );
41
+ return {
42
+ showTabbedTableConfigPanel
43
+ };
44
+ };
45
+
46
+ export { useTabbedTableConfigPanel };
47
+ //# sourceMappingURL=useTabbedTableConfigPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTabbedTableConfigPanel.js","sources":["../../../../packages/vuu-table-extras/src/tabbed-table-config-panel/useTabbedTableConfigPanel.tsx"],"sourcesContent":["import { useCallback, useRef } from \"react\";\nimport { useContextPanel } from \"@vuu-ui/vuu-ui-controls\";\nimport { TabbedTableConfigPanel } from \"./TabbedTableConfigPanel\";\nimport { TableSettingsPanelProps } from \"../table-settings-panel/TableSettingsPanel\";\nimport { TableProps } from \"@vuu-ui/vuu-table\";\nimport { ColumnPickerProps } from \"../column-picker/ColumnPicker\";\nimport { VuuTable } from \"@vuu-ui/vuu-protocol-types\";\n\nexport interface TabbedTableConfigPanelHookProps\n extends Pick<\n ColumnPickerProps,\n \"allowCreateCalculatedColumn\" | \"columnModel\"\n >,\n Pick<TableSettingsPanelProps, \"onDisplayAttributeChange\">,\n Pick<TableProps, \"config\"> {\n /**\n * only required for calculated columns\n */\n vuuTable?: VuuTable;\n}\n\nexport const useTabbedTableConfigPanel = ({\n allowCreateCalculatedColumn,\n columnModel,\n config,\n onDisplayAttributeChange,\n vuuTable,\n}: TabbedTableConfigPanelHookProps) => {\n const showContextPanel = useContextPanel();\n // const hideContextPanel = useHideContextPanel();\n const contextPanelShowing = useRef(false);\n\n const showTabbedTableConfigPanel = useCallback(\n (title = \"Table settings\") => {\n contextPanelShowing.current = true;\n showContextPanel(\n <TabbedTableConfigPanel\n allowCreateCalculatedColumn={allowCreateCalculatedColumn}\n columnModel={columnModel}\n config={config}\n onDisplayAttributeChange={onDisplayAttributeChange}\n vuuTable={vuuTable}\n />,\n title,\n );\n },\n [\n allowCreateCalculatedColumn,\n columnModel,\n config,\n onDisplayAttributeChange,\n showContextPanel,\n vuuTable,\n ],\n );\n\n return {\n showTabbedTableConfigPanel,\n };\n};\n"],"names":[],"mappings":";;;;;AAqBO,MAAM,4BAA4B,CAAC;AAAA,EACxC,2BAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,wBAAA;AAAA,EACA;AACF,CAAuC,KAAA;AACrC,EAAA,MAAM,mBAAmB,eAAgB,EAAA;AAEzC,EAAM,MAAA,mBAAA,GAAsB,OAAO,KAAK,CAAA;AAExC,EAAA,MAAM,0BAA6B,GAAA,WAAA;AAAA,IACjC,CAAC,QAAQ,gBAAqB,KAAA;AAC5B,MAAA,mBAAA,CAAoB,OAAU,GAAA,IAAA;AAC9B,MAAA,gBAAA;AAAA,wBACE,GAAA;AAAA,UAAC,sBAAA;AAAA,UAAA;AAAA,YACC,2BAAA;AAAA,YACA,WAAA;AAAA,YACA,MAAA;AAAA,YACA,wBAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,QACA;AAAA,OACF;AAAA,KACF;AAAA,IACA;AAAA,MACE,2BAAA;AAAA,MACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,wBAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAO,OAAA;AAAA,IACL;AAAA,GACF;AACF;;;;"}
@@ -0,0 +1,4 @@
1
+ var tableFooterCss = ".vuuTableFooter {\n background-color: var(--salt-container-secondary-background);\n display: grid;\n --table-footer-height: var(--vuuTableFooter-height, 32px);\n flex: 0 0 var(--table-footer-height);\n grid-template-areas: \"panel-start panel-center panel-end\";\n grid-template-columns: 1fr 1fr 1fr;\n grid-template-rows: auto;\n\n height: var(--table-footer-height);\n\n .vuuTableFooterTray {\n align-items: center;\n display: flex;\n justify-self: end;;\n margin: 0 var(--salt-spacing-200);\n grid-area: panel-end;\n }\n\n}\n";
2
+
3
+ export { tableFooterCss as default };
4
+ //# sourceMappingURL=TableFooter.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableFooter.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,31 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import cx from 'clsx';
3
+ import { useComponentCssInjection } from '@salt-ds/styles';
4
+ import { useWindow } from '@salt-ds/window';
5
+ import tableFooterCss from './TableFooter.css.js';
6
+
7
+ const classBase = "vuuTableFooter";
8
+ const TableFooterTray = ({ children }) => {
9
+ return /* @__PURE__ */ jsx("div", { className: `${classBase}Tray`, children });
10
+ };
11
+ const TableFooter = ({
12
+ children,
13
+ className,
14
+ onInvokeAction,
15
+ tooltrayActions,
16
+ ...htmlAttributes
17
+ }) => {
18
+ const targetWindow = useWindow();
19
+ useComponentCssInjection({
20
+ testId: "vuu-table-footer",
21
+ css: tableFooterCss,
22
+ window: targetWindow
23
+ });
24
+ return /* @__PURE__ */ jsxs("div", { ...htmlAttributes, className: cx(classBase, className), children: [
25
+ children,
26
+ tooltrayActions ? /* @__PURE__ */ jsx("div", { className: `${classBase}-tooltray`, children: tooltrayActions }) : null
27
+ ] });
28
+ };
29
+
30
+ export { TableFooter, TableFooterTray };
31
+ //# sourceMappingURL=TableFooter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableFooter.js","sources":["../../../../packages/vuu-table-extras/src/table-footer/TableFooter.tsx"],"sourcesContent":["import cx from \"clsx\";\nimport { HTMLAttributes, ReactNode } from \"react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport tableFooterCss from \"./TableFooter.css\";\n\nexport interface TableFooterProps extends HTMLAttributes<HTMLDivElement> {\n onInvokeAction?: (action: string) => void;\n tooltrayActions?: ReactNode;\n}\n\nconst classBase = \"vuuTableFooter\";\n\nexport const TableFooterTray = ({ children }: { children: ReactNode }) => {\n return <div className={`${classBase}Tray`}>{children}</div>;\n};\n\nexport const TableFooter = ({\n children,\n className,\n onInvokeAction,\n tooltrayActions,\n ...htmlAttributes\n}: TableFooterProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-table-footer\",\n css: tableFooterCss,\n window: targetWindow,\n });\n\n return (\n <div {...htmlAttributes} className={cx(classBase, className)}>\n {children}\n {tooltrayActions ? (\n <div className={`${classBase}-tooltray`}>{tooltrayActions}</div>\n ) : null}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;AAYA,MAAM,SAAY,GAAA,gBAAA;AAEX,MAAM,eAAkB,GAAA,CAAC,EAAE,QAAA,EAAwC,KAAA;AACxE,EAAA,2BAAQ,KAAI,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,QAAS,QAAS,EAAA,CAAA;AACvD;AAEO,MAAM,cAAc,CAAC;AAAA,EAC1B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,GAAG;AACL,CAAwB,KAAA;AACtB,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,kBAAA;AAAA,IACR,GAAK,EAAA,cAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EACE,uBAAA,IAAA,CAAC,SAAK,GAAG,cAAA,EAAgB,WAAW,EAAG,CAAA,SAAA,EAAW,SAAS,CACxD,EAAA,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,eAAA,uBACE,KAAI,EAAA,EAAA,SAAA,EAAW,GAAG,SAAS,CAAA,SAAA,CAAA,EAAc,2BAAgB,CACxD,GAAA;AAAA,GACN,EAAA,CAAA;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- var tableSettingsPanelCss = ".vuuTableSettingsPanel {\n --vuuScrollable-size: 6px;\n --vuu-svg-text-strikethrough: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 24\"><path d=\"M28.3333 9.33334C28.8867 9.33334 29.3333 8.88668 29.3333 8.33334C29.3333 7.78001 28.8867 7.33334 28.3333 7.33334H20.26L22.26 9.33334H23.48L23.1133 10.1867L24.5067 11.58L25.4733 9.33334H28.3333ZM27.6267 16.5867L18.7467 7.70668C18.4867 7.44668 18.0667 7.44668 17.8067 7.70668C17.5467 7.96668 17.5467 8.38668 17.8067 8.64668L21.98 12.82L20.88 15.38C20.62 15.9933 21.0667 16.6667 21.7267 16.6667C22.0933 16.6667 22.4267 16.4467 22.5733 16.1067L23.38 14.22L26.68 17.52C26.94 17.78 27.36 17.78 27.62 17.52C27.8867 17.2667 27.8867 16.8467 27.6267 16.5867Z\"/></svg>');\n --vuu-svg-text-Tt: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 24\"><path d=\"M17.6667 7.66666C17.6667 8.21999 18.1133 8.66666 18.6667 8.66666H21V15.6667C21 16.22 21.4467 16.6667 22 16.6667C22.5533 16.6667 23 16.22 23 15.6667V8.66666H25.3333C25.8867 8.66666 26.3333 8.21999 26.3333 7.66666C26.3333 7.11332 25.8867 6.66666 25.3333 6.66666H18.6667C18.1133 6.66666 17.6667 7.11332 17.6667 7.66666ZM29.3333 9.99999H25.3333C24.78 9.99999 24.3333 10.4467 24.3333 11C24.3333 11.5533 24.78 12 25.3333 12H26.3333V15.6667C26.3333 16.22 26.78 16.6667 27.3333 16.6667C27.8867 16.6667 28.3333 16.22 28.3333 15.6667V12H29.3333C29.8867 12 30.3333 11.5533 30.3333 11C30.3333 10.4467 29.8867 9.99999 29.3333 9.99999Z\" /></svg>');\n --vuu-svg-text-T: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 24\"><path d=\"M19.3333 7.66666C19.3333 8.21999 19.78 8.66666 20.3333 8.66666H23V15.6667C23 16.22 23.4467 16.6667 24 16.6667C24.5533 16.6667 25 16.22 25 15.6667V8.66666H27.6667C28.22 8.66666 28.6667 8.21999 28.6667 7.66666C28.6667 7.11332 28.22 6.66666 27.6667 6.66666H20.3333C19.78 6.66666 19.3333 7.11332 19.3333 7.66666Z\"/></svg>');\n --vuu-svg-stripes: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><rect x=\"2\" y=\"2\" width=\"12\" height=\"2\" rx=\"0.3\"/><rect x=\"2\" y=\"5\" width=\"12\" height=\"2\" rx=\"0.3\"/><rect x=\"2\" y=\"8\" width=\"12\" height=\"2\" rx=\"0.3\"/><rect x=\"2\" y=\"11\" width=\"12\" height=\"2\" rx=\"0.3\"/></svg>');\n --vuu-svg-row-lines: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><rect x=\"2\" y=\"3\" width=\"12\" height=\"1\" rx=\"0.3\" /><rect x=\"2\" y=\"6\" width=\"12\" height=\"1\" rx=\"0.3\" /><rect x=\"2\" y=\"9\" width=\"12\" height=\"1\" rx=\"0.3\" /><rect x=\"2\" y=\"12\" width=\"12\" height=\"1\" rx=\"0.3\"/></svg>');\n --vuu-svg-col-lines: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><rect x=\"3\" y=\"14\" width=\"12\" height=\"1\" rx=\"0.3\" transform=\"rotate(-90 3 14)\"/><rect x=\"6\" y=\"14\" width=\"12\" height=\"1\" rx=\"0.3\" transform=\"rotate(-90 6 14)\"/><rect x=\"9\" y=\"14\" width=\"12\" height=\"1\" rx=\"0.3\" transform=\"rotate(-90 9 14)\"/><rect x=\"12\" y=\"14\" width=\"12\" height=\"1\" rx=\"0.3\" transform=\"rotate(-90 12 14)\"/></svg>');\n\n display: flex;\n flex-direction: column;\n gap: 24px;\n height: 100%;\n max-width: 254px;\n padding: 12px 2px var(--salt-spacing-200) 2px;\n}\n\n\n.vuuTableSettingsPanel [data-icon=\"text-strikethrough\"]{\n --vuu-icon-svg: var(--vuu-svg-text-strikethrough);\n}\n.vuuTableSettingsPanel [data-icon=\"text-Tt\"]{\n --vuu-icon-svg: var(--vuu-svg-text-Tt);\n}\n.vuuTableSettingsPanel [data-icon=\"text-T\"]{\n --vuu-icon-svg: var(--vuu-svg-text-T);\n}\n.vuuTableSettingsPanel [data-icon=\"col-lines\"]{\n --vuu-icon-svg: var(--vuu-svg-col-lines);\n}\n.vuuTableSettingsPanel [data-icon=\"row-lines\"]{\n --vuu-icon-svg: var(--vuu-svg-row-lines);\n}\n.vuuTableSettingsPanel [data-icon=\"row-striping\"]{\n --vuu-icon-svg: var(--vuu-svg-stripes);\n}\n\n.vuuTableSettingsPanel-header {\n border-top: solid 2px var(--vuu-color-gray-30);\n font-size: 14px;\n font-weight: 600;\n padding-top: 24px;\n}\n\n.vuuTableSettingsPanel-columnListContainer {\n\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: 0;\n position: relative;\n overflow: auto;\n .vuuColumnList {\n height: 100%;\n }\n}\n\n.vuuTableSettingsPanel-calculatedButtonbar {\n --vuu-icon-size: 16px;\n --saltButton-height: 24px;\n --saltButton-width: 24px;\n align-items: center;\n display: flex;\n flex: 0 0 32px;\n gap: 12px;\n}\n\n\n\n\n\n\n";
1
+ var tableSettingsPanelCss = ".vuuTableSettingsPanel {\n --vuuScrollable-size: 6px;\n --vuu-svg-text-strikethrough: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 24\"><path d=\"M28.3333 9.33334C28.8867 9.33334 29.3333 8.88668 29.3333 8.33334C29.3333 7.78001 28.8867 7.33334 28.3333 7.33334H20.26L22.26 9.33334H23.48L23.1133 10.1867L24.5067 11.58L25.4733 9.33334H28.3333ZM27.6267 16.5867L18.7467 7.70668C18.4867 7.44668 18.0667 7.44668 17.8067 7.70668C17.5467 7.96668 17.5467 8.38668 17.8067 8.64668L21.98 12.82L20.88 15.38C20.62 15.9933 21.0667 16.6667 21.7267 16.6667C22.0933 16.6667 22.4267 16.4467 22.5733 16.1067L23.38 14.22L26.68 17.52C26.94 17.78 27.36 17.78 27.62 17.52C27.8867 17.2667 27.8867 16.8467 27.6267 16.5867Z\"/></svg>');\n --vuu-svg-text-Tt: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 24\"><path d=\"M17.6667 7.66666C17.6667 8.21999 18.1133 8.66666 18.6667 8.66666H21V15.6667C21 16.22 21.4467 16.6667 22 16.6667C22.5533 16.6667 23 16.22 23 15.6667V8.66666H25.3333C25.8867 8.66666 26.3333 8.21999 26.3333 7.66666C26.3333 7.11332 25.8867 6.66666 25.3333 6.66666H18.6667C18.1133 6.66666 17.6667 7.11332 17.6667 7.66666ZM29.3333 9.99999H25.3333C24.78 9.99999 24.3333 10.4467 24.3333 11C24.3333 11.5533 24.78 12 25.3333 12H26.3333V15.6667C26.3333 16.22 26.78 16.6667 27.3333 16.6667C27.8867 16.6667 28.3333 16.22 28.3333 15.6667V12H29.3333C29.8867 12 30.3333 11.5533 30.3333 11C30.3333 10.4467 29.8867 9.99999 29.3333 9.99999Z\" /></svg>');\n --vuu-svg-text-T: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 24\"><path d=\"M19.3333 7.66666C19.3333 8.21999 19.78 8.66666 20.3333 8.66666H23V15.6667C23 16.22 23.4467 16.6667 24 16.6667C24.5533 16.6667 25 16.22 25 15.6667V8.66666H27.6667C28.22 8.66666 28.6667 8.21999 28.6667 7.66666C28.6667 7.11332 28.22 6.66666 27.6667 6.66666H20.3333C19.78 6.66666 19.3333 7.11332 19.3333 7.66666Z\"/></svg>');\n --vuu-svg-stripes: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><rect x=\"2\" y=\"2\" width=\"12\" height=\"2\" rx=\"0.3\"/><rect x=\"2\" y=\"5\" width=\"12\" height=\"2\" rx=\"0.3\"/><rect x=\"2\" y=\"8\" width=\"12\" height=\"2\" rx=\"0.3\"/><rect x=\"2\" y=\"11\" width=\"12\" height=\"2\" rx=\"0.3\"/></svg>');\n --vuu-svg-row-lines: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><rect x=\"2\" y=\"3\" width=\"12\" height=\"1\" rx=\"0.3\" /><rect x=\"2\" y=\"6\" width=\"12\" height=\"1\" rx=\"0.3\" /><rect x=\"2\" y=\"9\" width=\"12\" height=\"1\" rx=\"0.3\" /><rect x=\"2\" y=\"12\" width=\"12\" height=\"1\" rx=\"0.3\"/></svg>');\n --vuu-svg-col-lines: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><rect x=\"3\" y=\"14\" width=\"12\" height=\"1\" rx=\"0.3\" transform=\"rotate(-90 3 14)\"/><rect x=\"6\" y=\"14\" width=\"12\" height=\"1\" rx=\"0.3\" transform=\"rotate(-90 6 14)\"/><rect x=\"9\" y=\"14\" width=\"12\" height=\"1\" rx=\"0.3\" transform=\"rotate(-90 9 14)\"/><rect x=\"12\" y=\"14\" width=\"12\" height=\"1\" rx=\"0.3\" transform=\"rotate(-90 12 14)\"/></svg>');\n\n display: flex;\n flex-direction: column;\n gap: 24px;\n height: 100%;\n max-width: 254px;\n padding: 12px 2px var(--salt-spacing-200) 2px;\n}\n\n\n.vuuTableSettingsPanel [data-icon=\"text-strikethrough\"]{\n --vuu-icon-svg: var(--vuu-svg-text-strikethrough);\n}\n.vuuTableSettingsPanel [data-icon=\"text-Tt\"]{\n --vuu-icon-svg: var(--vuu-svg-text-Tt);\n}\n.vuuTableSettingsPanel [data-icon=\"text-T\"]{\n --vuu-icon-svg: var(--vuu-svg-text-T);\n}\n.vuuTableSettingsPanel [data-icon=\"col-lines\"]{\n --vuu-icon-svg: var(--vuu-svg-col-lines);\n}\n.vuuTableSettingsPanel [data-icon=\"row-lines\"]{\n --vuu-icon-svg: var(--vuu-svg-row-lines);\n}\n.vuuTableSettingsPanel [data-icon=\"row-striping\"]{\n --vuu-icon-svg: var(--vuu-svg-stripes);\n}\n\n.vuuTableSettingsPanel-header {\n font-size: 14px;\n font-weight: 600;\n padding-top: 24px;\n}\n\n.vuuTableSettingsPanel-columnListContainer {\n\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: 0;\n position: relative;\n overflow: auto;\n .vuuColumnList {\n height: 100%;\n }\n}\n\n.vuuTableSettingsPanel-calculatedButtonbar {\n --vuu-icon-size: 16px;\n --saltButton-height: 24px;\n --saltButton-width: 24px;\n align-items: center;\n display: flex;\n flex: 0 0 32px;\n gap: 12px;\n}\n\n\n\n\n\n\n";
2
2
 
3
3
  export { tableSettingsPanelCss as default };
4
4
  //# sourceMappingURL=TableSettingsPanel.css.js.map
@@ -1,39 +1,25 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { FormField, FormFieldLabel, ToggleButtonGroup, ToggleButton, Button } from '@salt-ds/core';
2
+ import { FormField, FormFieldLabel, ToggleButtonGroup, ToggleButton } from '@salt-ds/core';
3
3
  import { useComponentCssInjection } from '@salt-ds/styles';
4
4
  import { useWindow } from '@salt-ds/window';
5
- import { ColumnList } from '../column-list/ColumnList.js';
6
5
  import { useTableSettings } from './useTableSettings.js';
7
6
  import { VuuInput, Icon } from '@vuu-ui/vuu-ui-controls';
8
- import cx from 'clsx';
9
7
  import tableSettingsPanelCss from './TableSettingsPanel.css.js';
10
8
 
11
9
  const classBase = "vuuTableSettingsPanel";
12
10
  const defaultTableSettingsPermissions = {
13
11
  allowColumnLabelCase: true,
14
12
  allowColumnDefaultWidth: true,
15
- allowGridSeparators: true,
16
- allowReorderColumns: true,
17
- allowRemoveColumns: true,
18
- allowHideColumns: true,
19
- allowCalculatedColumns: true
13
+ allowGridSeparators: true
20
14
  };
21
15
  const noTableSettingsPermissions = {
22
16
  allowColumnLabelCase: false,
23
17
  allowColumnDefaultWidth: false,
24
- allowGridSeparators: false,
25
- allowReorderColumns: false,
26
- allowRemoveColumns: false,
27
- allowHideColumns: false,
28
- allowCalculatedColumns: false
18
+ allowGridSeparators: false
29
19
  };
30
20
  const TableSettingsPanel = ({
31
- availableColumns,
32
- onAddCalculatedColumn,
33
- onConfigChange,
34
- onDataSourceConfigChange,
35
- onNavigateToColumn,
36
- tableConfig: tableConfigProp,
21
+ onDisplayAttributeChange,
22
+ tableDisplayAttributes: tableDisplayAttributesProp,
37
23
  permissions: permissionsProp
38
24
  }) => {
39
25
  const targetWindow = useWindow();
@@ -44,34 +30,27 @@ const TableSettingsPanel = ({
44
30
  });
45
31
  const permissions = permissionsProp === void 0 || permissionsProp === true ? defaultTableSettingsPermissions : permissionsProp === false ? noTableSettingsPermissions : permissionsProp;
46
32
  const {
47
- columnItems,
48
33
  columnLabelsValue,
49
34
  onChangeColumnLabels,
50
35
  onChangeTableAttribute,
51
- onReorderColumnItems,
52
- onColumnChange,
53
36
  onCommitColumnWidth,
54
- tableConfig
37
+ tableDisplayAttributes
55
38
  } = useTableSettings({
56
- availableColumns,
57
- onConfigChange,
58
- onDataSourceConfigChange,
59
- tableConfig: tableConfigProp
39
+ onDisplayAttributeChange,
40
+ tableDisplayAttributes: tableDisplayAttributesProp
60
41
  });
61
42
  const {
62
43
  allowColumnLabelCase = true,
63
44
  allowColumnDefaultWidth = true,
64
- allowGridSeparators = true,
65
- allowCalculatedColumns = true,
66
- ...columnListPermissions
45
+ allowGridSeparators = true
67
46
  } = permissions;
68
47
  return /* @__PURE__ */ jsxs("div", { className: classBase, children: [
69
- allowColumnLabelCase || allowColumnDefaultWidth || allowGridSeparators ? /* @__PURE__ */ jsx("div", { className: `${classBase}-header`, children: /* @__PURE__ */ jsx("span", { children: "Column Settings" }) }) : null,
70
48
  allowColumnDefaultWidth ? /* @__PURE__ */ jsxs(FormField, { children: [
71
49
  /* @__PURE__ */ jsx(FormFieldLabel, { children: "Column Width" }),
72
50
  /* @__PURE__ */ jsx(
73
51
  VuuInput,
74
52
  {
53
+ bordered: true,
75
54
  className: "vuuInput",
76
55
  "data-embedded": true,
77
56
  onCommit: onCommitColumnWidth
@@ -100,7 +79,7 @@ const TableSettingsPanel = ({
100
79
  /* @__PURE__ */ jsx(
101
80
  ToggleButton,
102
81
  {
103
- selected: tableConfig.zebraStripes ?? false,
82
+ selected: tableDisplayAttributes.zebraStripes ?? false,
104
83
  onChange: onChangeTableAttribute,
105
84
  value: "zebraStripes",
106
85
  children: /* @__PURE__ */ jsx(Icon, { name: "row-striping", size: 16 })
@@ -109,7 +88,7 @@ const TableSettingsPanel = ({
109
88
  /* @__PURE__ */ jsx(
110
89
  ToggleButton,
111
90
  {
112
- selected: tableConfig.rowSeparators ?? false,
91
+ selected: tableDisplayAttributes.rowSeparators ?? false,
113
92
  onChange: onChangeTableAttribute,
114
93
  value: "rowSeparators",
115
94
  children: /* @__PURE__ */ jsx(Icon, { name: "row-lines", size: 16 })
@@ -118,27 +97,13 @@ const TableSettingsPanel = ({
118
97
  /* @__PURE__ */ jsx(
119
98
  ToggleButton,
120
99
  {
121
- selected: tableConfig.columnSeparators ?? false,
100
+ selected: tableDisplayAttributes.columnSeparators ?? false,
122
101
  onChange: onChangeTableAttribute,
123
102
  value: "columnSeparators",
124
103
  children: /* @__PURE__ */ jsx(Icon, { name: "col-lines", size: 16 })
125
104
  }
126
105
  )
127
106
  ] })
128
- ] }) : null,
129
- /* @__PURE__ */ jsx("div", { className: cx(`${classBase}-columnListContainer`, "vuuScrollable"), children: /* @__PURE__ */ jsx(
130
- ColumnList,
131
- {
132
- columnItems,
133
- permissions: columnListPermissions,
134
- onChange: onColumnChange,
135
- onNavigateToColumn,
136
- onReorderColumnItems
137
- }
138
- ) }),
139
- allowCalculatedColumns ? /* @__PURE__ */ jsxs("div", { className: `${classBase}-calculatedButtonbar`, children: [
140
- /* @__PURE__ */ jsx(Button, { "data-icon": "plus", onClick: onAddCalculatedColumn }),
141
- /* @__PURE__ */ jsx("span", { className: `${classBase}-calculatedLabel`, children: "Add calculated column" })
142
107
  ] }) : null
143
108
  ] });
144
109
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableSettingsPanel.js","sources":["../../../../packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.tsx"],"sourcesContent":["import {\n FormField,\n FormFieldLabel,\n ToggleButton,\n ToggleButtonGroup,\n} from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport {\n TableDisplayAttributes,\n TableSettingsPermissions,\n} from \"@vuu-ui/vuu-table-types\";\nimport { useTableSettings } from \"./useTableSettings\";\nimport { Icon } from \"@vuu-ui/vuu-ui-controls\";\nimport { VuuInput } from \"@vuu-ui/vuu-ui-controls\";\n\nimport tableSettingsPanelCss from \"./TableSettingsPanel.css\";\n\nconst classBase = \"vuuTableSettingsPanel\";\n\nexport const defaultTableSettingsPermissions: Readonly<TableSettingsPermissions> =\n {\n allowColumnLabelCase: true,\n allowColumnDefaultWidth: true,\n allowGridSeparators: true,\n };\nexport const noTableSettingsPermissions: Readonly<TableSettingsPermissions> = {\n allowColumnLabelCase: false,\n allowColumnDefaultWidth: false,\n allowGridSeparators: false,\n};\n\nexport type TableDisplayAttributeChangeHandler = (\n displayAttributes: TableDisplayAttributes,\n) => void;\n\n/**\n * Describes the props for a Table Configuration Editor, for which\n * an implementation is provided in vuu-table-extras\n */\nexport interface TableSettingsPanelProps {\n allowColumnLabelCase?: boolean;\n allowColumnDefaultWidth?: boolean;\n allowGridRowStyling?: boolean;\n onDisplayAttributeChange: TableDisplayAttributeChangeHandler;\n tableDisplayAttributes: TableDisplayAttributes;\n permissions?: TableSettingsPermissions | boolean;\n}\n\n/**\n The TableSettingsPanel assumes 'ownership' of the tableSettings.\n It updates the settings in state locally and notifies caller of\n every change via onChange callback\n */\nexport const TableSettingsPanel = ({\n onDisplayAttributeChange,\n tableDisplayAttributes: tableDisplayAttributesProp,\n permissions: permissionsProp,\n}: TableSettingsPanelProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-table-settings-panel\",\n css: tableSettingsPanelCss,\n window: targetWindow,\n });\n\n const permissions =\n permissionsProp === undefined || permissionsProp === true\n ? defaultTableSettingsPermissions\n : permissionsProp === false\n ? noTableSettingsPermissions\n : permissionsProp;\n\n const {\n columnLabelsValue,\n onChangeColumnLabels,\n onChangeTableAttribute,\n onCommitColumnWidth,\n tableDisplayAttributes,\n } = useTableSettings({\n onDisplayAttributeChange,\n tableDisplayAttributes: tableDisplayAttributesProp,\n });\n\n const {\n allowColumnLabelCase = true,\n allowColumnDefaultWidth = true,\n allowGridSeparators = true,\n } = permissions;\n\n return (\n <div className={classBase}>\n {allowColumnDefaultWidth ? (\n <FormField>\n <FormFieldLabel>Column Width</FormFieldLabel>\n <VuuInput\n bordered\n className=\"vuuInput\"\n data-embedded\n onCommit={onCommitColumnWidth}\n />\n </FormField>\n ) : null}\n\n {allowColumnLabelCase ? (\n <FormField>\n <FormFieldLabel>Column Labels</FormFieldLabel>\n <ToggleButtonGroup\n className=\"vuuToggleButtonGroup\"\n onChange={onChangeColumnLabels}\n value={columnLabelsValue}\n >\n <ToggleButton className=\"vuuIconToggleButton\" value={0}>\n <Icon name=\"text-strikethrough\" size={48} />\n </ToggleButton>\n <ToggleButton className=\"vuuIconToggleButton\" value={1}>\n <Icon name=\"text-Tt\" size={48} />\n </ToggleButton>\n <ToggleButton className=\"vuuIconToggleButton\" value={2}>\n <Icon name=\"text-T\" size={48} />\n </ToggleButton>\n </ToggleButtonGroup>\n </FormField>\n ) : null}\n\n {allowGridSeparators ? (\n <FormField>\n <FormFieldLabel>Grid separators</FormFieldLabel>\n <div className=\"saltToggleButtonGroup vuuStateButtonGroup saltToggleButtonGroup-horizontal\">\n <ToggleButton\n selected={tableDisplayAttributes.zebraStripes ?? false}\n onChange={onChangeTableAttribute}\n value=\"zebraStripes\"\n >\n <Icon name=\"row-striping\" size={16} />\n </ToggleButton>\n <ToggleButton\n selected={tableDisplayAttributes.rowSeparators ?? false}\n onChange={onChangeTableAttribute}\n value=\"rowSeparators\"\n >\n <Icon name=\"row-lines\" size={16} />\n </ToggleButton>\n <ToggleButton\n selected={tableDisplayAttributes.columnSeparators ?? false}\n onChange={onChangeTableAttribute}\n value=\"columnSeparators\"\n >\n <Icon name=\"col-lines\" size={16} />\n </ToggleButton>\n </div>\n </FormField>\n ) : null}\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { queryClosest, useLayoutEffectSkipFirst } from '@vuu-ui/vuu-utils';
2
+ import { useState, useCallback } from 'react';
3
+
4
+ const useTableSettings = ({
5
+ onDisplayAttributeChange,
6
+ tableDisplayAttributes: tableDisplayAttributesProp
7
+ }) => {
8
+ const [tableDisplayAttributes, setDisplayTableAttributes] = useState(tableDisplayAttributesProp);
9
+ const handleChangeColumnLabels = useCallback((evt) => {
10
+ const button = queryClosest(evt.target, "button");
11
+ if (button) {
12
+ const value = parseInt(button.value);
13
+ const columnFormatHeader = value === 0 ? void 0 : value === 1 ? "capitalize" : "uppercase";
14
+ setDisplayTableAttributes((state) => ({
15
+ ...state,
16
+ columnFormatHeader
17
+ }));
18
+ }
19
+ }, []);
20
+ const handleChangeTableAttribute = useCallback(
21
+ (evt) => {
22
+ const button = queryClosest(evt.target, "button");
23
+ if (button) {
24
+ const { ariaPressed, value } = button;
25
+ setDisplayTableAttributes((state) => ({
26
+ ...state,
27
+ [value]: ariaPressed !== "true"
28
+ }));
29
+ }
30
+ },
31
+ []
32
+ );
33
+ const handleCommitColumnWidth = useCallback((_, value) => {
34
+ if (typeof value === "string") {
35
+ const columnDefaultWidth = parseInt(value);
36
+ if (!isNaN(columnDefaultWidth)) {
37
+ setDisplayTableAttributes((state) => ({
38
+ ...state,
39
+ columnDefaultWidth
40
+ }));
41
+ }
42
+ }
43
+ }, []);
44
+ useLayoutEffectSkipFirst(() => {
45
+ onDisplayAttributeChange?.(tableDisplayAttributes);
46
+ }, [onDisplayAttributeChange, tableDisplayAttributes]);
47
+ const columnLabelsValue = tableDisplayAttributes.columnFormatHeader === void 0 ? 0 : tableDisplayAttributes.columnFormatHeader === "capitalize" ? 1 : 2;
48
+ return {
49
+ columnLabelsValue,
50
+ onChangeColumnLabels: handleChangeColumnLabels,
51
+ onChangeTableAttribute: handleChangeTableAttribute,
52
+ onCommitColumnWidth: handleCommitColumnWidth,
53
+ tableDisplayAttributes
54
+ };
55
+ };
56
+
57
+ export { useTableSettings };
58
+ //# sourceMappingURL=useTableSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTableSettings.js","sources":["../../../../packages/vuu-table-extras/src/table-settings-panel/useTableSettings.ts"],"sourcesContent":["import { TableDisplayAttributes } from \"@vuu-ui/vuu-table-types\";\nimport {\n queryClosest,\n useLayoutEffectSkipFirst,\n CommitHandler,\n} from \"@vuu-ui/vuu-utils\";\nimport { MouseEvent, SyntheticEvent, useCallback, useState } from \"react\";\nimport { TableSettingsPanelProps } from \"./TableSettingsPanel\";\n\nexport type ColumnLike = {\n name: string;\n};\n\nexport const useTableSettings = ({\n onDisplayAttributeChange,\n tableDisplayAttributes: tableDisplayAttributesProp,\n}: TableSettingsPanelProps) => {\n const [tableDisplayAttributes, setDisplayTableAttributes] =\n useState<TableDisplayAttributes>(tableDisplayAttributesProp);\n\n const handleChangeColumnLabels = useCallback((evt: SyntheticEvent) => {\n const button = queryClosest<HTMLButtonElement>(evt.target, \"button\");\n if (button) {\n const value = parseInt(button.value);\n const columnFormatHeader =\n value === 0 ? undefined : value === 1 ? \"capitalize\" : \"uppercase\";\n setDisplayTableAttributes((state) => ({\n ...state,\n columnFormatHeader,\n }));\n }\n }, []);\n\n const handleChangeTableAttribute = useCallback(\n (evt: MouseEvent<HTMLButtonElement>) => {\n const button = queryClosest<HTMLButtonElement>(evt.target, \"button\");\n if (button) {\n const { ariaPressed, value } = button;\n setDisplayTableAttributes((state) => ({\n ...state,\n [value]: ariaPressed !== \"true\",\n }));\n }\n },\n [],\n );\n\n const handleCommitColumnWidth = useCallback<CommitHandler>((_, value) => {\n if (typeof value === \"string\") {\n const columnDefaultWidth = parseInt(value);\n if (!isNaN(columnDefaultWidth)) {\n setDisplayTableAttributes((state) => ({\n ...state,\n columnDefaultWidth,\n }));\n }\n }\n }, []);\n\n useLayoutEffectSkipFirst(() => {\n onDisplayAttributeChange?.(tableDisplayAttributes);\n }, [onDisplayAttributeChange, tableDisplayAttributes]);\n\n const columnLabelsValue =\n tableDisplayAttributes.columnFormatHeader === undefined\n ? 0\n : tableDisplayAttributes.columnFormatHeader === \"capitalize\"\n ? 1\n : 2;\n\n return {\n columnLabelsValue,\n onChangeColumnLabels: handleChangeColumnLabels,\n onChangeTableAttribute: handleChangeTableAttribute,\n onCommitColumnWidth: handleCommitColumnWidth,\n tableDisplayAttributes,\n };\n};\n"],"names":[],"mappings":";;;AAaO,MAAM,mBAAmB,CAAC;AAAA,EAC/B,wBAAA;AAAA,EACA,sBAAwB,EAAA;AAC1B,CAA+B,KAAA;AAC7B,EAAA,MAAM,CAAC,sBAAA,EAAwB,yBAAyB,CAAA,GACtD,SAAiC,0BAA0B,CAAA;AAE7D,EAAM,MAAA,wBAAA,GAA2B,WAAY,CAAA,CAAC,GAAwB,KAAA;AACpE,IAAA,MAAM,MAAS,GAAA,YAAA,CAAgC,GAAI,CAAA,MAAA,EAAQ,QAAQ,CAAA;AACnE,IAAA,IAAI,MAAQ,EAAA;AACV,MAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,MAAA,CAAO,KAAK,CAAA;AACnC,MAAA,MAAM,qBACJ,KAAU,KAAA,CAAA,GAAI,KAAY,CAAA,GAAA,KAAA,KAAU,IAAI,YAAe,GAAA,WAAA;AACzD,MAAA,yBAAA,CAA0B,CAAC,KAAW,MAAA;AAAA,QACpC,GAAG,KAAA;AAAA,QACH;AAAA,OACA,CAAA,CAAA;AAAA;AACJ,GACF,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,0BAA6B,GAAA,WAAA;AAAA,IACjC,CAAC,GAAuC,KAAA;AACtC,MAAA,MAAM,MAAS,GAAA,YAAA,CAAgC,GAAI,CAAA,MAAA,EAAQ,QAAQ,CAAA;AACnE,MAAA,IAAI,MAAQ,EAAA;AACV,QAAM,MAAA,EAAE,WAAa,EAAA,KAAA,EAAU,GAAA,MAAA;AAC/B,QAAA,yBAAA,CAA0B,CAAC,KAAW,MAAA;AAAA,UACpC,GAAG,KAAA;AAAA,UACH,CAAC,KAAK,GAAG,WAAgB,KAAA;AAAA,SACzB,CAAA,CAAA;AAAA;AACJ,KACF;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,uBAA0B,GAAA,WAAA,CAA2B,CAAC,CAAA,EAAG,KAAU,KAAA;AACvE,IAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,MAAM,MAAA,kBAAA,GAAqB,SAAS,KAAK,CAAA;AACzC,MAAI,IAAA,CAAC,KAAM,CAAA,kBAAkB,CAAG,EAAA;AAC9B,QAAA,yBAAA,CAA0B,CAAC,KAAW,MAAA;AAAA,UACpC,GAAG,KAAA;AAAA,UACH;AAAA,SACA,CAAA,CAAA;AAAA;AACJ;AACF,GACF,EAAG,EAAE,CAAA;AAEL,EAAA,wBAAA,CAAyB,MAAM;AAC7B,IAAA,wBAAA,GAA2B,sBAAsB,CAAA;AAAA,GAChD,EAAA,CAAC,wBAA0B,EAAA,sBAAsB,CAAC,CAAA;AAErD,EAAM,MAAA,iBAAA,GACJ,uBAAuB,kBAAuB,KAAA,KAAA,CAAA,GAC1C,IACA,sBAAuB,CAAA,kBAAA,KAAuB,eAC5C,CACA,GAAA,CAAA;AAER,EAAO,OAAA;AAAA,IACL,iBAAA;AAAA,IACA,oBAAsB,EAAA,wBAAA;AAAA,IACtB,sBAAwB,EAAA,0BAAA;AAAA,IACxB,mBAAqB,EAAA,uBAAA;AAAA,IACrB;AAAA,GACF;AACF;;;;"}
package/package.json CHANGED
@@ -1,22 +1,23 @@
1
1
  {
2
- "version": "1.0.3",
2
+ "version": "2.0.0",
3
3
  "author": "heswell",
4
4
  "license": "Apache-2.0",
5
5
  "devDependencies": {
6
- "@vuu-ui/vuu-filter-types": "1.0.3",
7
- "@vuu-ui/vuu-protocol-types": "1.0.3"
6
+ "@vuu-ui/vuu-filter-types": "2.0.0",
7
+ "@vuu-ui/vuu-protocol-types": "2.0.0"
8
8
  },
9
9
  "dependencies": {
10
- "@vuu-ui/vuu-codemirror": "1.0.3",
11
- "@vuu-ui/vuu-data-react": "1.0.3",
12
- "@vuu-ui/vuu-data-types": "1.0.3",
13
- "@vuu-ui/vuu-table-types": "1.0.3",
14
- "@vuu-ui/vuu-popups": "1.0.3",
15
- "@vuu-ui/vuu-table": "1.0.3",
16
- "@vuu-ui/vuu-utils": "1.0.3",
17
- "@vuu-ui/vuu-ui-controls": "1.0.3",
10
+ "@vuu-ui/vuu-codemirror": "2.0.0",
11
+ "@vuu-ui/vuu-data-react": "2.0.0",
12
+ "@vuu-ui/vuu-data-types": "2.0.0",
13
+ "@vuu-ui/vuu-table-types": "2.0.0",
14
+ "@vuu-ui/vuu-popups": "2.0.0",
15
+ "@vuu-ui/vuu-table": "2.0.0",
16
+ "@vuu-ui/vuu-utils": "2.0.0",
17
+ "@vuu-ui/vuu-ui-controls": "2.0.0",
18
18
  "@lezer/lr": "1.4.2",
19
19
  "@salt-ds/core": "1.54.1",
20
+ "@salt-ds/lab": "1.0.0-alpha.83",
20
21
  "@salt-ds/styles": "0.2.1",
21
22
  "@salt-ds/window": "0.1.1"
22
23
  },
@@ -0,0 +1,12 @@
1
+ import { HTMLAttributes } from "react";
2
+ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
3
+ import { VuuColumnDataType, VuuTable } from "@vuu-ui/vuu-protocol-types";
4
+ import { ColumnModel } from "../column-picker/ColumnModel";
5
+ export interface CalculatedColumnPanelProps extends HTMLAttributes<HTMLDivElement> {
6
+ column: ColumnDescriptor;
7
+ columnModel: ColumnModel;
8
+ onChangeColumn: (column: ColumnDescriptor) => void;
9
+ onChangeServerDataType?: (name: VuuColumnDataType) => void;
10
+ vuuTable: VuuTable;
11
+ }
12
+ export declare const CalculatedColumnPanel: ({ column: columnProp, columnModel, onChangeColumn, onChangeServerDataType: onChangeServerDataTypeProp, vuuTable, }: CalculatedColumnPanelProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
2
+ import { FormEventHandler, SyntheticEvent } from "react";
3
+ import { CalculatedColumnPanelProps } from "./CalculatedColumnPanel";
4
+ export type ColumnExpressionHookProps = Pick<CalculatedColumnPanelProps, "column" | "onChangeColumn" | "onChangeServerDataType">;
5
+ export declare const useCalculatedColumnPanel: ({ column: columnProp, onChangeColumn, onChangeServerDataType: onChangeServerDataTypeProp, }: ColumnExpressionHookProps) => {
6
+ column: ColumnDescriptor;
7
+ onChangeExpression: (value: string) => void;
8
+ onChangeName: FormEventHandler;
9
+ onChangeServerDataType: (_e: SyntheticEvent, [serverDataType]: string[]) => void;
10
+ };
@@ -0,0 +1,13 @@
1
+ import { VuuTable } from "@vuu-ui/vuu-protocol-types";
2
+ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
3
+ import { ColumnModel } from "../column-picker/ColumnModel";
4
+ export interface EditCalculatedColumnProps {
5
+ calculatedColumn?: ColumnDescriptor;
6
+ columnModel: ColumnModel;
7
+ onSaveColumn?: (caclulatedColumn: ColumnDescriptor) => void;
8
+ vuuTable?: VuuTable;
9
+ }
10
+ export declare const useEditCalculatedColumn: ({ calculatedColumn, columnModel, onSaveColumn, vuuTable, }: EditCalculatedColumnProps) => {
11
+ onCreateCalculatedColumn: () => void;
12
+ onEditCalculatedColumn: () => void;
13
+ };
@@ -7,4 +7,4 @@ export interface ColumnMenuProps extends HTMLAttributes<HTMLSpanElement> {
7
7
  menuActionHandler?: MenuActionHandler<ColumnMenuActionType, ColumnDescriptor>;
8
8
  menuPermissions?: ColumnMenuPermissions;
9
9
  }
10
- export declare const ColumnMenu: ({ className, column, menuActionHandler: menuActionHandlerProp, menuPermissions: { allowSort, allowGroup, allowAggregation, allowHide, allowRemove, allowPin, allowColumnSettings, allowTableSettings, }, }: ColumnMenuProps) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const ColumnMenu: ({ className, column, menuActionHandler: menuActionHandlerProp, menuPermissions: { allowSort, allowGroup, allowAggregation, allowHide, allowRemove, allowPin, }, }: ColumnMenuProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,14 +1,11 @@
1
1
  import { VuuTable } from "@vuu-ui/vuu-protocol-types";
2
2
  import { ColumnDescriptor, ColumnDisplayAction } from "@vuu-ui/vuu-table-types";
3
3
  export type ColumnDisplayActionHandler = (action: ColumnDisplayAction) => void;
4
- export type DisplayTableSettingsAction = {
5
- type: "table-settings";
6
- };
7
4
  export type DisplayColumnSettingsAction = {
8
5
  type: "column-settings";
9
6
  column: ColumnDescriptor;
10
7
  /** only for calculated columnn */
11
8
  vuuTable?: VuuTable;
12
9
  };
13
- export type DisplaySettingsAction = DisplayTableSettingsAction | DisplayColumnSettingsAction;
10
+ export type DisplaySettingsAction = DisplayColumnSettingsAction;
14
11
  export type TableSettingsActionHandler = (action: DisplaySettingsAction) => void;
@@ -1,6 +1,6 @@
1
1
  import { Menu, MenuItem, MenuItemProps, MenuProps } from "@salt-ds/core";
2
2
  import { DataSource } from "@vuu-ui/vuu-data-types";
3
- import { ColumnDescriptor, TableSettingsPermissions } from "@vuu-ui/vuu-table-types";
3
+ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
4
4
  import { MouseEventHandler, ReactElement } from "react";
5
5
  type MenuElement = ReactElement<MenuProps, typeof Menu>;
6
6
  type MenuItemElement = ReactElement<MenuItemProps, typeof MenuItem>;
@@ -8,14 +8,13 @@ type MenuElements = Array<MenuElement | MenuItemElement>;
8
8
  export type MenuItemClickHandler = MouseEventHandler<HTMLDivElement>;
9
9
  export type DataSourceColumnMenuActionType = "agg-count" | "agg-distinct" | "agg-sum" | "agg-avg" | "agg-high" | "agg-low" | "sort-asc" | "sort-dsc" | "sort-add-asc" | "sort-add-dsc" | "remove-sort" | "group-column" | "remove-group" | "add-to-group" | "remove-from-group" | "remove-column";
10
10
  export type ColumnDisplayColumnMenuActionType = "pin-column-left" | "pin-column-right" | "unpin-column" | "hide-column";
11
- export type TableSettingsActionType = "column-settings" | "table-settings";
12
- export type ColumnMenuActionType = DataSourceColumnMenuActionType | ColumnDisplayColumnMenuActionType | TableSettingsActionType;
11
+ export type ColumnSettingsActionType = "column-settings";
12
+ export type ColumnMenuActionType = DataSourceColumnMenuActionType | ColumnDisplayColumnMenuActionType | ColumnSettingsActionType;
13
13
  export declare const isColumnMenuActionType: (value?: string) => value is ColumnMenuActionType;
14
14
  export declare const getColumnMenuActionType: (target: EventTarget | HTMLElement) => ColumnMenuActionType;
15
15
  export declare function buildSortMenu(column: ColumnDescriptor, dataSource: DataSource, menuActionClickHandler: MenuItemClickHandler, isAllowed?: boolean): MenuElement | null;
16
16
  export declare function buildGroupMenu(column: ColumnDescriptor, dataSource: DataSource, menuActionClickHandler: MenuItemClickHandler, isAllowed?: boolean): MenuElement | null;
17
17
  export declare const buildVisibilityMenuItems: (column: ColumnDescriptor, menuActionClickHandler: MenuItemClickHandler, allowHide?: boolean, allowRemove?: boolean) => MenuElements | null;
18
18
  export declare const buildPinMenuItems: (column: ColumnDescriptor, menuActionClickHandler: MenuItemClickHandler, isAllowed?: boolean) => MenuElements;
19
- export declare const buildSettingsMenuItems: (_: ColumnDescriptor, menuActionClickHandler: MenuItemClickHandler, allowColumnSettings?: boolean, allowTableSettings?: boolean | TableSettingsPermissions) => MenuElements | null;
20
19
  export declare function buildAggregationMenuItems(column: ColumnDescriptor, dataSource: DataSource, menuActionClickHandler: MenuItemClickHandler, isAllowed?: boolean): MenuElements | null;
21
20
  export {};
@@ -2,12 +2,15 @@ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
2
2
  import { EventEmitter, ValueOf } from "@vuu-ui/vuu-utils";
3
3
  export declare const ColumnChangeSource: {
4
4
  readonly ColumnPicker: "column-picker";
5
+ readonly ColumnSettings: "column-settings";
5
6
  readonly Table: "table";
6
7
  };
7
8
  export type ColumnChangeSource = ValueOf<typeof ColumnChangeSource>;
8
9
  export declare const SelectedColumnChangeType: {
10
+ readonly CalculatedColumnAdded: "calculated-column-added";
9
11
  readonly ColumnAdded: "column-added";
10
12
  readonly ColumnRemoved: "column-removed";
13
+ readonly ColumnUpdated: "column-updated";
11
14
  readonly ColumnsReordered: "columns-reordered";
12
15
  };
13
16
  export type SelectedColumnChangeType = ValueOf<typeof SelectedColumnChangeType>;
@@ -15,6 +18,14 @@ export interface SelectedColumnChangeColumnAdded {
15
18
  type: Extract<SelectedColumnChangeType, "column-added">;
16
19
  column: ColumnDescriptor;
17
20
  }
21
+ export interface SelectedColumnChangeCalculatedColumnAdded {
22
+ type: Extract<SelectedColumnChangeType, "calculated-column-added">;
23
+ column: ColumnDescriptor;
24
+ }
25
+ export interface SelectedColumnChangeColumnUpdated {
26
+ type: Extract<SelectedColumnChangeType, "column-updated">;
27
+ column: ColumnDescriptor;
28
+ }
18
29
  export interface SelectedColumnChangeColumnRemoved {
19
30
  type: Extract<SelectedColumnChangeType, "column-removed">;
20
31
  column: ColumnDescriptor;
@@ -22,9 +33,10 @@ export interface SelectedColumnChangeColumnRemoved {
22
33
  export interface SelectedColumnChangeColumnsReordered {
23
34
  type: Extract<SelectedColumnChangeType, "columns-reordered">;
24
35
  }
25
- export type SelectedColumnChangeDescriptor = SelectedColumnChangeColumnAdded | SelectedColumnChangeColumnRemoved | SelectedColumnChangeColumnsReordered;
36
+ export type SelectedColumnChangeDescriptor = SelectedColumnChangeCalculatedColumnAdded | SelectedColumnChangeColumnAdded | SelectedColumnChangeColumnRemoved | SelectedColumnChangeColumnUpdated | SelectedColumnChangeColumnsReordered;
26
37
  export declare const isColumnAdded: (change?: SelectedColumnChangeDescriptor) => change is SelectedColumnChangeColumnAdded;
27
38
  export declare const isColumnRemoved: (change?: SelectedColumnChangeDescriptor) => change is SelectedColumnChangeColumnRemoved;
39
+ export declare const isColumnUpdated: (change?: SelectedColumnChangeDescriptor) => change is SelectedColumnChangeColumnUpdated;
28
40
  export declare const isColumnsReordered: (change?: SelectedColumnChangeDescriptor) => change is SelectedColumnChangeColumnsReordered;
29
41
  export type ColumnsChangeHandler = (columns: readonly ColumnDescriptor[], changeSource: ColumnChangeSource, changeDescriptor?: SelectedColumnChangeDescriptor) => void;
30
42
  export type ColumnEvents = {
@@ -36,7 +48,7 @@ export declare class ColumnModel extends EventEmitter<ColumnEvents> {
36
48
  /**
37
49
  * All available columns, including selected columns.
38
50
  */
39
- readonly allColumns: readonly ColumnDescriptor[];
51
+ allColumns: readonly ColumnDescriptor[];
40
52
  constructor(
41
53
  /**
42
54
  * All available columns, including selected columns.
@@ -45,14 +57,25 @@ export declare class ColumnModel extends EventEmitter<ColumnEvents> {
45
57
  /**
46
58
  * Columns already selected and rendered in Table.
47
59
  */
48
- selectedColumns: ColumnDescriptor[]);
60
+ selectedColumns: readonly ColumnDescriptor[]);
49
61
  get availableColumns(): ColumnDescriptor[];
50
62
  set searchPattern(pattern: string);
51
63
  get searchPattern(): string;
52
64
  get selectedColumns(): readonly ColumnDescriptor[];
53
65
  setSelectedColumns(selectedColumns: ColumnDescriptor[], source: ColumnChangeSource, changeDescriptor?: SelectedColumnChangeDescriptor): void;
66
+ getColumn(name: string): ColumnDescriptor;
54
67
  addItemToSelectedColumns(name: string, source: ColumnChangeSource): void;
55
68
  removeItemFromSelectedColumns(name: string, source: ColumnChangeSource): void;
56
69
  reorderSelectedColumns(orderedColumnNames: string[], source: ColumnChangeSource): void;
70
+ updateColumn(currentColumn: ColumnDescriptor, newColumn: ColumnDescriptor): void;
71
+ updateColumn(column: ColumnDescriptor): void;
72
+ /**
73
+ * Used when adding a calculated column
74
+ *
75
+ * @param column
76
+ *
77
+ * @param addToSelectedColumns
78
+ */
79
+ addColumn(column: ColumnDescriptor, addToSelectedColumns?: boolean): void;
57
80
  private notifyListeners;
58
81
  }
@@ -1,6 +1,10 @@
1
- import { HTMLAttributes } from "react";
2
- import { ColumPickerHookProps } from "./useColumnPicker";
1
+ import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
2
+ import { HTMLAttributes, MouseEventHandler } from "react";
3
+ import { ListBoxProps } from "@salt-ds/core";
4
+ import { ColumnPickerHookProps } from "./useColumnPicker";
3
5
  export declare const classBaseListItem = "vuuColumnPickerListItem";
4
- export interface ColumnPickerProps extends ColumPickerHookProps, HTMLAttributes<HTMLDivElement> {
6
+ export interface ColumnPickerProps extends ColumnPickerHookProps, Pick<ListBoxProps<ColumnDescriptor>, "selected" | "onSelectionChange">, HTMLAttributes<HTMLDivElement> {
7
+ allowCreateCalculatedColumn?: boolean;
8
+ onClickCreateCalculatedColumn?: MouseEventHandler<HTMLButtonElement>;
5
9
  }
6
10
  export declare const ColumnPicker: import("react").ForwardRefExoticComponent<ColumnPickerProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,5 @@
1
+ import { IconButtonProps } from "@vuu-ui/vuu-ui-controls";
2
+ import { ColumnPickerHookProps } from "./useColumnPicker";
3
+ export interface ColumnPickerActionProps extends Partial<IconButtonProps>, ColumnPickerHookProps {
4
+ }
5
+ export declare const ColumnPickerAction: ({ appearance, columnModel, icon, sentiment, ...IconButtonProps }: ColumnPickerActionProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,12 +1,12 @@
1
- import { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
1
+ import { ColumnDescriptor, TableSelectionModel } from "@vuu-ui/vuu-table-types";
2
2
  import { FormEventHandler, MouseEventHandler } from "react";
3
3
  import { ColumnModel, SelectedColumnChangeType } from "./ColumnModel";
4
- export type ColumnPickerAction = (column: ColumnDescriptor) => void;
4
+ export type ColumnSelectionModel = Extract<TableSelectionModel, "none" | "single">;
5
5
  export type SelectedColumnsChangeHandler = (columns: ColumnDescriptor[], changeType: SelectedColumnChangeType) => void;
6
- export interface ColumPickerHookProps {
6
+ export interface ColumnPickerHookProps {
7
7
  columnModel: ColumnModel;
8
8
  }
9
- export declare const useColumnPicker: ({ columnModel: model, }: ColumPickerHookProps) => {
9
+ export declare const useColumnPicker: ({ columnModel: model, }: ColumnPickerHookProps) => {
10
10
  availableColumns: ColumnDescriptor[];
11
11
  onAddItemToSelectedList: MouseEventHandler<HTMLButtonElement>;
12
12
  onRemoveItemFromSelectedList: MouseEventHandler<HTMLButtonElement>;
@@ -0,0 +1,7 @@
1
+ import { ColumnModel } from "./ColumnModel";
2
+ export interface TableColumnPickerHookProps {
3
+ columnModel: ColumnModel;
4
+ }
5
+ export declare const useTableColumnPicker: ({ columnModel, }: TableColumnPickerHookProps) => {
6
+ showColumnPicker: (title?: string) => void;
7
+ };