@vuu-ui/vuu-table-extras 1.0.3 → 2.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) 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 +2 -3
  12. package/cjs/column-menu/ColumnMenu.js.map +1 -1
  13. package/cjs/column-menu/column-menu-utils.js +3 -18
  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 +2 -1
  25. package/cjs/column-picker/useColumnPicker.js.map +1 -1
  26. package/cjs/column-picker/useTableColumnPicker.js +35 -0
  27. package/cjs/column-picker/useTableColumnPicker.js.map +1 -0
  28. package/cjs/column-settings-panel/ColumnNameLabel.js.map +1 -0
  29. package/cjs/{table-column-settings → column-settings-panel}/ColumnSettingsPanel.css.js +1 -1
  30. package/cjs/column-settings-panel/ColumnSettingsPanel.js +161 -0
  31. package/cjs/column-settings-panel/ColumnSettingsPanel.js.map +1 -0
  32. package/cjs/{table-column-settings → column-settings-panel}/useColumnSettings.js +42 -79
  33. package/cjs/column-settings-panel/useColumnSettings.js.map +1 -0
  34. package/cjs/column-settings-panel/useTableAndColumnSettings.js +37 -0
  35. package/cjs/column-settings-panel/useTableAndColumnSettings.js.map +1 -0
  36. package/cjs/datasource-stats/DatasourceStats.css.js +1 -1
  37. package/cjs/index.js +22 -17
  38. package/cjs/index.js.map +1 -1
  39. package/cjs/tabbed-table-config-panel/TabbedTableConfigPanel.css.js +6 -0
  40. package/cjs/tabbed-table-config-panel/TabbedTableConfigPanel.css.js.map +1 -0
  41. package/cjs/tabbed-table-config-panel/TabbedTableConfigPanel.js +90 -0
  42. package/cjs/tabbed-table-config-panel/TabbedTableConfigPanel.js.map +1 -0
  43. package/cjs/tabbed-table-config-panel/TabbedTableSettingsAction.js +44 -0
  44. package/cjs/tabbed-table-config-panel/TabbedTableSettingsAction.js.map +1 -0
  45. package/cjs/tabbed-table-config-panel/useTabbedTableConfigPanel.js +49 -0
  46. package/cjs/tabbed-table-config-panel/useTabbedTableConfigPanel.js.map +1 -0
  47. package/cjs/table-footer/TableFooter.css.js +6 -0
  48. package/cjs/table-footer/TableFooter.css.js.map +1 -0
  49. package/cjs/table-footer/TableFooter.js +47 -0
  50. package/cjs/table-footer/TableFooter.js.map +1 -0
  51. package/cjs/{table-column-settings → table-settings-panel}/TableSettingsPanel.css.js +1 -1
  52. package/cjs/{table-column-settings → table-settings-panel}/TableSettingsPanel.js +12 -47
  53. package/cjs/table-settings-panel/TableSettingsPanel.js.map +1 -0
  54. package/cjs/table-settings-panel/useTableSettings.js +60 -0
  55. package/cjs/table-settings-panel/useTableSettings.js.map +1 -0
  56. package/esm/{column-expression-panel/ColumnExpressionPanel.js → calculated-column/CalculatedColumnPanel.js} +13 -13
  57. package/esm/calculated-column/CalculatedColumnPanel.js.map +1 -0
  58. package/esm/{column-expression-panel/useColumnExpression.js → calculated-column/useCalculatedColumnPanel.js} +12 -10
  59. package/esm/calculated-column/useCalculatedColumnPanel.js.map +1 -0
  60. package/esm/calculated-column/useEditCalculatedColumn.js +136 -0
  61. package/esm/calculated-column/useEditCalculatedColumn.js.map +1 -0
  62. package/esm/column-formatting-settings/BaseNumericFormattingSettings.js +1 -0
  63. package/esm/column-formatting-settings/BaseNumericFormattingSettings.js.map +1 -1
  64. package/esm/column-formatting-settings/ColumnFormattingPanel.js +1 -0
  65. package/esm/column-formatting-settings/ColumnFormattingPanel.js.map +1 -1
  66. package/esm/column-menu/ColumnMenu.js +2 -3
  67. package/esm/column-menu/ColumnMenu.js.map +1 -1
  68. package/esm/column-menu/column-menu-utils.js +3 -18
  69. package/esm/column-menu/column-menu-utils.js.map +1 -1
  70. package/esm/column-menu/useColumnActions.js +0 -2
  71. package/esm/column-menu/useColumnActions.js.map +1 -1
  72. package/esm/column-picker/ColumnModel.js +58 -0
  73. package/esm/column-picker/ColumnModel.js.map +1 -1
  74. package/esm/column-picker/ColumnPicker.css.js +1 -1
  75. package/esm/column-picker/ColumnPicker.js +39 -16
  76. package/esm/column-picker/ColumnPicker.js.map +1 -1
  77. package/esm/column-picker/ColumnPickerAction.js +32 -0
  78. package/esm/column-picker/ColumnPickerAction.js.map +1 -0
  79. package/esm/column-picker/useColumnPicker.js +2 -1
  80. package/esm/column-picker/useColumnPicker.js.map +1 -1
  81. package/esm/column-picker/useTableColumnPicker.js +33 -0
  82. package/esm/column-picker/useTableColumnPicker.js.map +1 -0
  83. package/esm/column-settings-panel/ColumnNameLabel.js.map +1 -0
  84. package/esm/{table-column-settings → column-settings-panel}/ColumnSettingsPanel.css.js +1 -1
  85. package/esm/column-settings-panel/ColumnSettingsPanel.js +159 -0
  86. package/esm/column-settings-panel/ColumnSettingsPanel.js.map +1 -0
  87. package/esm/{table-column-settings → column-settings-panel}/useColumnSettings.js +44 -81
  88. package/esm/column-settings-panel/useColumnSettings.js.map +1 -0
  89. package/esm/column-settings-panel/useTableAndColumnSettings.js +33 -0
  90. package/esm/column-settings-panel/useTableAndColumnSettings.js.map +1 -0
  91. package/esm/datasource-stats/DatasourceStats.css.js +1 -1
  92. package/esm/index.js +10 -7
  93. package/esm/index.js.map +1 -1
  94. package/esm/tabbed-table-config-panel/TabbedTableConfigPanel.css.js +4 -0
  95. package/esm/tabbed-table-config-panel/TabbedTableConfigPanel.css.js.map +1 -0
  96. package/esm/tabbed-table-config-panel/TabbedTableConfigPanel.js +88 -0
  97. package/esm/tabbed-table-config-panel/TabbedTableConfigPanel.js.map +1 -0
  98. package/esm/tabbed-table-config-panel/TabbedTableSettingsAction.js +42 -0
  99. package/esm/tabbed-table-config-panel/TabbedTableSettingsAction.js.map +1 -0
  100. package/esm/tabbed-table-config-panel/useTabbedTableConfigPanel.js +47 -0
  101. package/esm/tabbed-table-config-panel/useTabbedTableConfigPanel.js.map +1 -0
  102. package/esm/table-footer/TableFooter.css.js +4 -0
  103. package/esm/table-footer/TableFooter.css.js.map +1 -0
  104. package/esm/table-footer/TableFooter.js +44 -0
  105. package/esm/table-footer/TableFooter.js.map +1 -0
  106. package/esm/{table-column-settings → table-settings-panel}/TableSettingsPanel.css.js +1 -1
  107. package/esm/{table-column-settings → table-settings-panel}/TableSettingsPanel.js +13 -48
  108. package/esm/table-settings-panel/TableSettingsPanel.js.map +1 -0
  109. package/esm/table-settings-panel/useTableSettings.js +58 -0
  110. package/esm/table-settings-panel/useTableSettings.js.map +1 -0
  111. package/package.json +12 -11
  112. package/types/calculated-column/CalculatedColumnPanel.d.ts +12 -0
  113. package/types/calculated-column/useCalculatedColumnPanel.d.ts +10 -0
  114. package/types/calculated-column/useEditCalculatedColumn.d.ts +13 -0
  115. package/types/column-menu/column-action-types.d.ts +1 -4
  116. package/types/column-menu/column-menu-utils.d.ts +4 -4
  117. package/types/column-picker/ColumnModel.d.ts +26 -3
  118. package/types/column-picker/ColumnPicker.d.ts +7 -3
  119. package/types/column-picker/ColumnPickerAction.d.ts +5 -0
  120. package/types/column-picker/useColumnPicker.d.ts +5 -4
  121. package/types/column-picker/useTableColumnPicker.d.ts +7 -0
  122. package/types/column-picker/useTableColumnPickerDeprecated.d.ts +14 -0
  123. package/types/{table-column-settings → column-settings-panel}/ColumnNameLabel.d.ts +1 -1
  124. package/types/column-settings-panel/ColumnSettingsPanel.d.ts +5 -0
  125. package/types/{table-column-settings → column-settings-panel}/useColumnSettings.d.ts +14 -7
  126. package/types/column-settings-panel/useTableAndColumnSettings.d.ts +13 -0
  127. package/types/index.d.ts +11 -9
  128. package/types/tabbed-table-config-panel/TabbedTableConfigPanel.d.ts +17 -0
  129. package/types/tabbed-table-config-panel/TabbedTableSettingsAction.d.ts +7 -0
  130. package/types/tabbed-table-config-panel/useTabbedTableConfigPanel.d.ts +13 -0
  131. package/types/table-footer/TableFooter.d.ts +9 -0
  132. package/types/table-settings-panel/TableSettingsPanel.d.ts +22 -0
  133. package/types/table-settings-panel/useTableSettings.d.ts +14 -0
  134. package/cjs/column-expression-panel/ColumnExpressionPanel.js.map +0 -1
  135. package/cjs/column-expression-panel/useColumnExpression.js.map +0 -1
  136. package/cjs/column-list/ColumnList.css.js +0 -6
  137. package/cjs/column-list/ColumnList.css.js.map +0 -1
  138. package/cjs/column-list/ColumnList.js +0 -218
  139. package/cjs/column-list/ColumnList.js.map +0 -1
  140. package/cjs/column-list/useColumnList.js +0 -66
  141. package/cjs/column-list/useColumnList.js.map +0 -1
  142. package/cjs/table-column-settings/ColumnNameLabel.js.map +0 -1
  143. package/cjs/table-column-settings/ColumnSettingsPanel.js +0 -202
  144. package/cjs/table-column-settings/ColumnSettingsPanel.js.map +0 -1
  145. package/cjs/table-column-settings/TableSettingsPanel.js.map +0 -1
  146. package/cjs/table-column-settings/useColumnSettings.js.map +0 -1
  147. package/cjs/table-column-settings/useTableAndColumnSettings.js +0 -129
  148. package/cjs/table-column-settings/useTableAndColumnSettings.js.map +0 -1
  149. package/cjs/table-column-settings/useTableSettings.js +0 -176
  150. package/cjs/table-column-settings/useTableSettings.js.map +0 -1
  151. package/esm/column-expression-panel/ColumnExpressionPanel.js.map +0 -1
  152. package/esm/column-expression-panel/useColumnExpression.js.map +0 -1
  153. package/esm/column-list/ColumnList.css.js +0 -4
  154. package/esm/column-list/ColumnList.css.js.map +0 -1
  155. package/esm/column-list/ColumnList.js +0 -214
  156. package/esm/column-list/ColumnList.js.map +0 -1
  157. package/esm/column-list/useColumnList.js +0 -64
  158. package/esm/column-list/useColumnList.js.map +0 -1
  159. package/esm/table-column-settings/ColumnNameLabel.js.map +0 -1
  160. package/esm/table-column-settings/ColumnSettingsPanel.js +0 -200
  161. package/esm/table-column-settings/ColumnSettingsPanel.js.map +0 -1
  162. package/esm/table-column-settings/TableSettingsPanel.js.map +0 -1
  163. package/esm/table-column-settings/useColumnSettings.js.map +0 -1
  164. package/esm/table-column-settings/useTableAndColumnSettings.js +0 -125
  165. package/esm/table-column-settings/useTableAndColumnSettings.js.map +0 -1
  166. package/esm/table-column-settings/useTableSettings.js +0 -174
  167. package/esm/table-column-settings/useTableSettings.js.map +0 -1
  168. package/types/column-expression-panel/ColumnExpressionPanel.d.ts +0 -13
  169. package/types/column-expression-panel/index.d.ts +0 -1
  170. package/types/column-expression-panel/useColumnExpression.d.ts +0 -10
  171. package/types/column-list/ColumnList.d.ts +0 -11
  172. package/types/column-list/index.d.ts +0 -2
  173. package/types/column-list/useColumnList.d.ts +0 -22
  174. package/types/table-column-settings/ColumnSettingsPanel.d.ts +0 -2
  175. package/types/table-column-settings/TableSettingsPanel.d.ts +0 -9
  176. package/types/table-column-settings/useTableAndColumnSettings.d.ts +0 -18
  177. package/types/table-column-settings/useTableSettings.d.ts +0 -18
  178. /package/cjs/{table-column-settings → column-settings-panel}/ColumnNameLabel.css.js +0 -0
  179. /package/cjs/{table-column-settings → column-settings-panel}/ColumnNameLabel.css.js.map +0 -0
  180. /package/cjs/{table-column-settings → column-settings-panel}/ColumnNameLabel.js +0 -0
  181. /package/cjs/{table-column-settings → column-settings-panel}/ColumnSettingsPanel.css.js.map +0 -0
  182. /package/cjs/{table-column-settings → table-settings-panel}/TableSettingsPanel.css.js.map +0 -0
  183. /package/esm/{table-column-settings → column-settings-panel}/ColumnNameLabel.css.js +0 -0
  184. /package/esm/{table-column-settings → column-settings-panel}/ColumnNameLabel.css.js.map +0 -0
  185. /package/esm/{table-column-settings → column-settings-panel}/ColumnNameLabel.js +0 -0
  186. /package/esm/{table-column-settings → column-settings-panel}/ColumnSettingsPanel.css.js.map +0 -0
  187. /package/esm/{table-column-settings → table-settings-panel}/TableSettingsPanel.css.js.map +0 -0
@@ -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":["useState","useCallback","queryClosest","useLayoutEffectSkipFirst"],"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,GACtDA,eAAiC,0BAA0B,CAAA;AAE7D,EAAM,MAAA,wBAAA,GAA2BC,iBAAY,CAAA,CAAC,GAAwB,KAAA;AACpE,IAAA,MAAM,MAAS,GAAAC,qBAAA,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,GAAAD,iBAAA;AAAA,IACjC,CAAC,GAAuC,KAAA;AACtC,MAAA,MAAM,MAAS,GAAAC,qBAAA,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,GAAAD,iBAAA,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,EAAAE,iCAAA,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;;;;"}
@@ -1,7 +1,8 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { getCalculatedColumnDetails } from '@vuu-ui/vuu-utils';
3
2
  import { FormField, FormFieldLabel, Input, Dropdown, Option } from '@salt-ds/core';
3
+ import { useCalculatedColumnPanel } from './useCalculatedColumnPanel.js';
4
4
  import { useRef, useCallback } from 'react';
5
+ import { getCalculatedColumnDetails } from '@vuu-ui/vuu-utils';
5
6
  import { ColumnExpressionInput } from '../column-expression-input/ColumnExpressionInput.js';
6
7
  import '../column-expression-input/column-language-parser/ColumnExpressionLanguage.js';
7
8
  import '../column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js';
@@ -10,27 +11,26 @@ import '@vuu-ui/vuu-codemirror';
10
11
  import '../column-expression-input/highlighting.js';
11
12
  import '../column-expression-input/theme.js';
12
13
  import { useColumnExpressionSuggestionProvider } from '../column-expression-input/useColumnExpressionSuggestionProvider.js';
13
- import { useColumnExpression } from './useColumnExpression.js';
14
14
 
15
- const classBase = "vuuColumnExpressionPanel";
16
- const ColumnExpressionPanel = ({
15
+ const classBase = "vuuCalculatedColumnPanel";
16
+ const CalculatedColumnPanel = ({
17
17
  column: columnProp,
18
- onChangeName: onChangeNameProp,
18
+ columnModel,
19
+ onChangeColumn,
19
20
  onChangeServerDataType: onChangeServerDataTypeProp,
20
- tableConfig,
21
21
  vuuTable
22
22
  }) => {
23
23
  const typeRef = useRef(null);
24
- const { column, onChangeExpression, onChangeName, onChangeServerDataType } = useColumnExpression({
24
+ const { column, onChangeExpression, onChangeName, onChangeServerDataType } = useCalculatedColumnPanel({
25
25
  column: columnProp,
26
- onChangeName: onChangeNameProp,
26
+ onChangeColumn,
27
27
  onChangeServerDataType: onChangeServerDataTypeProp
28
28
  });
29
29
  const initialExpressionRef = useRef(
30
30
  getCalculatedColumnDetails(column).expression ?? ""
31
31
  );
32
32
  const suggestionProvider = useColumnExpressionSuggestionProvider({
33
- columns: tableConfig.columns,
33
+ columns: columnModel.selectedColumns,
34
34
  table: vuuTable
35
35
  });
36
36
  const handleSubmitExpression = useCallback(() => {
@@ -40,9 +40,9 @@ const ColumnExpressionPanel = ({
40
40
  }, []);
41
41
  const { name, serverDataType } = getCalculatedColumnDetails(column);
42
42
  return /* @__PURE__ */ jsxs("div", { className: classBase, children: [
43
- /* @__PURE__ */ jsx("div", { className: "vuuColumnSettingsPanel-header", children: /* @__PURE__ */ jsx("span", { children: "Calculation" }) }),
43
+ /* @__PURE__ */ jsx("div", { children: column.name }),
44
44
  /* @__PURE__ */ jsxs(FormField, { "data-field": "column-name", children: [
45
- /* @__PURE__ */ jsx(FormFieldLabel, { children: "Column Name" }),
45
+ /* @__PURE__ */ jsx(FormFieldLabel, { children: "Column Label" }),
46
46
  /* @__PURE__ */ jsx(Input, { className: "vuuInput", onChange: onChangeName, value: name })
47
47
  ] }),
48
48
  /* @__PURE__ */ jsxs(FormField, { "data-field": "column-expression", children: [
@@ -79,5 +79,5 @@ const ColumnExpressionPanel = ({
79
79
  ] });
80
80
  };
81
81
 
82
- export { ColumnExpressionPanel };
83
- //# sourceMappingURL=ColumnExpressionPanel.js.map
82
+ export { CalculatedColumnPanel };
83
+ //# sourceMappingURL=CalculatedColumnPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CalculatedColumnPanel.js","sources":["../../../../packages/vuu-table-extras/src/calculated-column/CalculatedColumnPanel.tsx"],"sourcesContent":["import {\n Dropdown,\n FormField,\n FormFieldLabel,\n Input,\n Option,\n} from \"@salt-ds/core\";\nimport { useCalculatedColumnPanel } from \"./useCalculatedColumnPanel\";\nimport { HTMLAttributes, useCallback, useRef } from \"react\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { VuuColumnDataType, VuuTable } from \"@vuu-ui/vuu-protocol-types\";\nimport { getCalculatedColumnDetails } from \"@vuu-ui/vuu-utils\";\nimport {\n ColumnExpressionInput,\n ColumnExpressionSubmitHandler,\n useColumnExpressionSuggestionProvider,\n} from \"../column-expression-input\";\nimport { ColumnModel } from \"../column-picker/ColumnModel\";\n\nconst classBase = \"vuuCalculatedColumnPanel\";\n\nexport interface CalculatedColumnPanelProps\n extends HTMLAttributes<HTMLDivElement> {\n column: ColumnDescriptor;\n columnModel: ColumnModel;\n onChangeColumn: (column: ColumnDescriptor) => void;\n onChangeServerDataType?: (name: VuuColumnDataType) => void;\n vuuTable: VuuTable;\n}\n\nexport const CalculatedColumnPanel = ({\n column: columnProp,\n columnModel,\n onChangeColumn,\n onChangeServerDataType: onChangeServerDataTypeProp,\n vuuTable,\n}: CalculatedColumnPanelProps) => {\n const typeRef = useRef<HTMLButtonElement>(null);\n\n const { column, onChangeExpression, onChangeName, onChangeServerDataType } =\n useCalculatedColumnPanel({\n column: columnProp,\n onChangeColumn,\n onChangeServerDataType: onChangeServerDataTypeProp,\n });\n // The initial value to pass into the Expression Input. That is a\n // CodeMirror editor and will manage its own state once initialised.\n const initialExpressionRef = useRef<string>(\n getCalculatedColumnDetails(column).expression ?? \"\",\n );\n\n const suggestionProvider = useColumnExpressionSuggestionProvider({\n columns: columnModel.selectedColumns,\n table: vuuTable,\n });\n\n const handleSubmitExpression =\n useCallback<ColumnExpressionSubmitHandler>(() => {\n if (typeRef.current) {\n (\n typeRef.current?.querySelector(\"button\") as HTMLButtonElement\n )?.focus();\n }\n }, []);\n\n const { name, serverDataType } = getCalculatedColumnDetails(column);\n\n return (\n <div className={classBase}>\n <div>{column.name}</div>\n\n <FormField data-field=\"column-name\">\n <FormFieldLabel>Column Label</FormFieldLabel>\n <Input className=\"vuuInput\" onChange={onChangeName} value={name} />\n </FormField>\n\n <FormField data-field=\"column-expression\">\n <FormFieldLabel>Expression</FormFieldLabel>\n <ColumnExpressionInput\n onChange={onChangeExpression}\n onSubmitExpression={handleSubmitExpression}\n source={initialExpressionRef.current}\n suggestionProvider={suggestionProvider}\n />\n </FormField>\n <FormField data-field=\"type\">\n <FormFieldLabel>Column type</FormFieldLabel>\n <Dropdown\n className={`${classBase}-type`}\n onSelectionChange={onChangeServerDataType}\n ref={typeRef}\n selected={serverDataType ? [serverDataType] : []}\n value={serverDataType}\n >\n <Option value=\"boolean\">Boolean</Option>\n <Option value=\"double\">Double</Option>\n <Option value=\"long\">Long</Option>\n <Option value=\"string\">String</Option>\n </Dropdown>\n </FormField>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -12,9 +12,9 @@ const applyDefaults = (column) => {
12
12
  return column;
13
13
  }
14
14
  };
15
- const useColumnExpression = ({
15
+ const useCalculatedColumnPanel = ({
16
16
  column: columnProp,
17
- onChangeName: onChangeNameProp,
17
+ onChangeColumn,
18
18
  onChangeServerDataType: onChangeServerDataTypeProp
19
19
  }) => {
20
20
  const [column, _setColumn] = useState(
@@ -29,31 +29,33 @@ const useColumnExpression = ({
29
29
  (evt) => {
30
30
  const { value } = evt.target;
31
31
  const newColumn = setCalculatedColumnName(column, value);
32
+ console.log(`name = ${newColumn.name}`);
32
33
  setColumn(newColumn);
33
- onChangeNameProp?.(newColumn.name);
34
+ onChangeColumn(newColumn);
34
35
  },
35
- [column, onChangeNameProp, setColumn]
36
+ [column, onChangeColumn, setColumn]
36
37
  );
37
38
  const onChangeExpression = useCallback(
38
39
  (value) => {
40
+ console.log(`expression = ${value}`);
39
41
  const expression = value.trim();
40
42
  const { current: column2 } = columnRef;
41
43
  const newColumn = setCalculatedColumnExpression(column2, expression);
42
44
  setColumn(newColumn);
43
- onChangeNameProp?.(newColumn.name);
45
+ onChangeColumn(newColumn);
44
46
  },
45
- [onChangeNameProp, setColumn]
47
+ [onChangeColumn, setColumn]
46
48
  );
47
49
  const onChangeServerDataType = useCallback(
48
50
  (_e, [serverDataType]) => {
49
51
  if (isVuuColumnDataType(serverDataType)) {
50
52
  const newColumn = setCalculatedColumnType(column, serverDataType);
51
53
  setColumn(newColumn);
52
- onChangeNameProp?.(newColumn.name);
53
54
  onChangeServerDataTypeProp?.(serverDataType);
55
+ onChangeColumn(newColumn);
54
56
  }
55
57
  },
56
- [column, onChangeNameProp, onChangeServerDataTypeProp, setColumn]
58
+ [column, onChangeColumn, onChangeServerDataTypeProp, setColumn]
57
59
  );
58
60
  return {
59
61
  column,
@@ -63,5 +65,5 @@ const useColumnExpression = ({
63
65
  };
64
66
  };
65
67
 
66
- export { useColumnExpression };
67
- //# sourceMappingURL=useColumnExpression.js.map
68
+ export { useCalculatedColumnPanel };
69
+ //# sourceMappingURL=useCalculatedColumnPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCalculatedColumnPanel.js","sources":["../../../../packages/vuu-table-extras/src/calculated-column/useCalculatedColumnPanel.ts"],"sourcesContent":["import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport {\n getCalculatedColumnDetails,\n isVuuColumnDataType,\n setCalculatedColumnExpression,\n setCalculatedColumnName,\n setCalculatedColumnType,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n FormEventHandler,\n SyntheticEvent,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport { CalculatedColumnPanelProps } from \"./CalculatedColumnPanel\";\n\nexport type ColumnExpressionHookProps = Pick<\n CalculatedColumnPanelProps,\n \"column\" | \"onChangeColumn\" | \"onChangeServerDataType\"\n>;\n\nconst applyDefaults = (column: ColumnDescriptor) => {\n const { name, expression, serverDataType } =\n getCalculatedColumnDetails(column);\n if (serverDataType === undefined) {\n return {\n ...column,\n name: `${name}:string:${expression}`,\n };\n } else {\n return column;\n }\n};\n\nexport const useCalculatedColumnPanel = ({\n column: columnProp,\n onChangeColumn,\n onChangeServerDataType: onChangeServerDataTypeProp,\n}: ColumnExpressionHookProps) => {\n const [column, _setColumn] = useState<ColumnDescriptor>(\n applyDefaults(columnProp),\n );\n const columnRef = useRef<ColumnDescriptor>(columnProp);\n const setColumn = useCallback((column: ColumnDescriptor) => {\n columnRef.current = column;\n _setColumn(column);\n }, []);\n\n // We need to track column name in a ref because ColunExpressionInput\n // is not a pure React component, it hosts a CodeMirror editor. We\n // do not want to cause it to render mid-edit. Therefore it uses memo\n // and only renders on initial load. onChangeExpression must be stable.\n // const columnNameRef = useRef<string>(column.name);\n // const expressionRef = useRef(getCalculatedColumnDetails(column)[1]);\n const onChangeName = useCallback<FormEventHandler>(\n (evt) => {\n const { value } = evt.target as HTMLInputElement;\n const newColumn = setCalculatedColumnName(column, value);\n // columnNameRef.current = newColumn.name;\n console.log(`name = ${newColumn.name}`);\n setColumn(newColumn);\n onChangeColumn(newColumn);\n },\n [column, onChangeColumn, setColumn],\n );\n\n const onChangeExpression = useCallback(\n (value: string) => {\n console.log(`expression = ${value}`);\n // we do not set state when this changes as the codemirror editor\n // manages state of the expression for us until complete\n const expression = value.trim();\n // expressionRef.current = expression;\n // const [name, , type] = column.name.split(\":\");\n // columnNameRef.current = `${name}:${expression}:${type}`;\n\n const { current: column } = columnRef;\n const newColumn = setCalculatedColumnExpression(column, expression);\n setColumn(newColumn);\n\n onChangeColumn(newColumn);\n },\n [onChangeColumn, setColumn],\n );\n\n const onChangeServerDataType = useCallback(\n (_e: SyntheticEvent, [serverDataType]: string[]) => {\n if (isVuuColumnDataType(serverDataType)) {\n const newColumn = setCalculatedColumnType(column, serverDataType);\n setColumn(newColumn);\n onChangeServerDataTypeProp?.(serverDataType);\n onChangeColumn(newColumn);\n }\n },\n [column, onChangeColumn, onChangeServerDataTypeProp, setColumn],\n );\n\n return {\n column,\n onChangeExpression,\n onChangeName,\n onChangeServerDataType,\n };\n};\n"],"names":["column"],"mappings":";;;AAsBA,MAAM,aAAA,GAAgB,CAAC,MAA6B,KAAA;AAClD,EAAA,MAAM,EAAE,IAAM,EAAA,UAAA,EAAY,cAAe,EAAA,GACvC,2BAA2B,MAAM,CAAA;AACnC,EAAA,IAAI,mBAAmB,KAAW,CAAA,EAAA;AAChC,IAAO,OAAA;AAAA,MACL,GAAG,MAAA;AAAA,MACH,IAAM,EAAA,CAAA,EAAG,IAAI,CAAA,QAAA,EAAW,UAAU,CAAA;AAAA,KACpC;AAAA,GACK,MAAA;AACL,IAAO,OAAA,MAAA;AAAA;AAEX,CAAA;AAEO,MAAM,2BAA2B,CAAC;AAAA,EACvC,MAAQ,EAAA,UAAA;AAAA,EACR,cAAA;AAAA,EACA,sBAAwB,EAAA;AAC1B,CAAiC,KAAA;AAC/B,EAAM,MAAA,CAAC,MAAQ,EAAA,UAAU,CAAI,GAAA,QAAA;AAAA,IAC3B,cAAc,UAAU;AAAA,GAC1B;AACA,EAAM,MAAA,SAAA,GAAY,OAAyB,UAAU,CAAA;AACrD,EAAM,MAAA,SAAA,GAAY,WAAY,CAAA,CAACA,OAA6B,KAAA;AAC1D,IAAA,SAAA,CAAU,OAAUA,GAAAA,OAAAA;AACpB,IAAA,UAAA,CAAWA,OAAM,CAAA;AAAA,GACnB,EAAG,EAAE,CAAA;AAQL,EAAA,MAAM,YAAe,GAAA,WAAA;AAAA,IACnB,CAAC,GAAQ,KAAA;AACP,MAAM,MAAA,EAAE,KAAM,EAAA,GAAI,GAAI,CAAA,MAAA;AACtB,MAAM,MAAA,SAAA,GAAY,uBAAwB,CAAA,MAAA,EAAQ,KAAK,CAAA;AAEvD,MAAA,OAAA,CAAQ,GAAI,CAAA,CAAA,OAAA,EAAU,SAAU,CAAA,IAAI,CAAE,CAAA,CAAA;AACtC,MAAA,SAAA,CAAU,SAAS,CAAA;AACnB,MAAA,cAAA,CAAe,SAAS,CAAA;AAAA,KAC1B;AAAA,IACA,CAAC,MAAQ,EAAA,cAAA,EAAgB,SAAS;AAAA,GACpC;AAEA,EAAA,MAAM,kBAAqB,GAAA,WAAA;AAAA,IACzB,CAAC,KAAkB,KAAA;AACjB,MAAQ,OAAA,CAAA,GAAA,CAAI,CAAgB,aAAA,EAAA,KAAK,CAAE,CAAA,CAAA;AAGnC,MAAM,MAAA,UAAA,GAAa,MAAM,IAAK,EAAA;AAK9B,MAAM,MAAA,EAAE,OAASA,EAAAA,OAAAA,EAAW,GAAA,SAAA;AAC5B,MAAM,MAAA,SAAA,GAAY,6BAA8BA,CAAAA,OAAAA,EAAQ,UAAU,CAAA;AAClE,MAAA,SAAA,CAAU,SAAS,CAAA;AAEnB,MAAA,cAAA,CAAe,SAAS,CAAA;AAAA,KAC1B;AAAA,IACA,CAAC,gBAAgB,SAAS;AAAA,GAC5B;AAEA,EAAA,MAAM,sBAAyB,GAAA,WAAA;AAAA,IAC7B,CAAC,EAAA,EAAoB,CAAC,cAAc,CAAgB,KAAA;AAClD,MAAI,IAAA,mBAAA,CAAoB,cAAc,CAAG,EAAA;AACvC,QAAM,MAAA,SAAA,GAAY,uBAAwB,CAAA,MAAA,EAAQ,cAAc,CAAA;AAChE,QAAA,SAAA,CAAU,SAAS,CAAA;AACnB,QAAA,0BAAA,GAA6B,cAAc,CAAA;AAC3C,QAAA,cAAA,CAAe,SAAS,CAAA;AAAA;AAC1B,KACF;AAAA,IACA,CAAC,MAAA,EAAQ,cAAgB,EAAA,0BAAA,EAA4B,SAAS;AAAA,GAChE;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,kBAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -0,0 +1,136 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useModal } from '@vuu-ui/vuu-ui-controls';
3
+ import { useRef, useCallback } from 'react';
4
+ import { CalculatedColumnPanel } from './CalculatedColumnPanel.js';
5
+
6
+ const useEditCalculatedColumn = ({
7
+ calculatedColumn,
8
+ columnModel,
9
+ onSaveColumn,
10
+ vuuTable
11
+ }) => {
12
+ if (vuuTable === void 0) {
13
+ throw Error(
14
+ `[useEditCalculatedColumn] vuuTable must be provided to create or edit a calculated column`
15
+ );
16
+ }
17
+ const { showPrompt } = useModal();
18
+ const calculatedColumnRef = useRef(
19
+ void 0
20
+ );
21
+ const handleChangeNewCalculatedColumn = useCallback(
22
+ (column) => {
23
+ if (calculatedColumnRef.current) {
24
+ calculatedColumnRef.current.newColumn = column;
25
+ } else {
26
+ throw Error(`[TabbedTableConfigPanel] handleChangeNewCalculatedColumn`);
27
+ }
28
+ },
29
+ []
30
+ );
31
+ const handleSaveNewCalculatedColumn = useCallback(() => {
32
+ if (calculatedColumnRef.current) {
33
+ const {
34
+ current: { newColumn: calculatedColumn3 }
35
+ } = calculatedColumnRef;
36
+ columnModel.addColumn(calculatedColumn3, true);
37
+ calculatedColumnRef.current = void 0;
38
+ onSaveColumn?.(calculatedColumn3);
39
+ }
40
+ const { current: calculatedColumn2 } = calculatedColumnRef;
41
+ if (calculatedColumn2) {
42
+ columnModel.addColumn(calculatedColumn2, true);
43
+ calculatedColumnRef.current = void 0;
44
+ onSaveColumn?.(calculatedColumn2);
45
+ }
46
+ }, [columnModel, onSaveColumn]);
47
+ const handleCreateCalculatedColumn = useCallback(() => {
48
+ if (vuuTable) {
49
+ const newColumn = {
50
+ name: "::",
51
+ serverDataType: "string"
52
+ };
53
+ calculatedColumnRef.current = { newColumn };
54
+ showPrompt(
55
+ /* @__PURE__ */ jsx(
56
+ CalculatedColumnPanel,
57
+ {
58
+ column: newColumn,
59
+ columnModel,
60
+ onChangeColumn: handleChangeNewCalculatedColumn,
61
+ vuuTable
62
+ }
63
+ ),
64
+ {
65
+ confirmButtonLabel: "Save column",
66
+ onConfirm: handleSaveNewCalculatedColumn,
67
+ title: "Calculated column"
68
+ }
69
+ );
70
+ }
71
+ }, [
72
+ columnModel,
73
+ handleChangeNewCalculatedColumn,
74
+ handleSaveNewCalculatedColumn,
75
+ showPrompt,
76
+ vuuTable
77
+ ]);
78
+ const handleSaveColumnEdits = useCallback(() => {
79
+ if (calculatedColumnRef.current) {
80
+ const { originalColumn, newColumn } = calculatedColumnRef.current;
81
+ if (originalColumn) {
82
+ calculatedColumnRef.current = void 0;
83
+ onSaveColumn?.(newColumn);
84
+ columnModel.updateColumn(originalColumn, newColumn);
85
+ }
86
+ }
87
+ }, [columnModel, onSaveColumn]);
88
+ const handleUpdateCalculatedColumn = useCallback(
89
+ (column) => {
90
+ if (calculatedColumnRef.current) {
91
+ calculatedColumnRef.current.newColumn = column;
92
+ } else {
93
+ throw Error("[TabbedTableConfigPanel] handleUpdateCalculatedColumn`");
94
+ }
95
+ },
96
+ []
97
+ );
98
+ const handleEditCalculatedColumn = useCallback(() => {
99
+ if (calculatedColumn && vuuTable) {
100
+ calculatedColumnRef.current = {
101
+ originalColumn: calculatedColumn,
102
+ newColumn: calculatedColumn
103
+ };
104
+ showPrompt(
105
+ /* @__PURE__ */ jsx(
106
+ CalculatedColumnPanel,
107
+ {
108
+ column: calculatedColumn,
109
+ columnModel,
110
+ onChangeColumn: handleUpdateCalculatedColumn,
111
+ vuuTable
112
+ }
113
+ ),
114
+ {
115
+ confirmButtonLabel: "Save column",
116
+ onConfirm: handleSaveColumnEdits,
117
+ title: "Calculated column"
118
+ }
119
+ );
120
+ }
121
+ }, [
122
+ calculatedColumn,
123
+ columnModel,
124
+ handleSaveColumnEdits,
125
+ handleUpdateCalculatedColumn,
126
+ showPrompt,
127
+ vuuTable
128
+ ]);
129
+ return {
130
+ onCreateCalculatedColumn: handleCreateCalculatedColumn,
131
+ onEditCalculatedColumn: handleEditCalculatedColumn
132
+ };
133
+ };
134
+
135
+ export { useEditCalculatedColumn };
136
+ //# sourceMappingURL=useEditCalculatedColumn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEditCalculatedColumn.js","sources":["../../../../packages/vuu-table-extras/src/calculated-column/useEditCalculatedColumn.tsx"],"sourcesContent":["import { VuuTable } from \"@vuu-ui/vuu-protocol-types\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { useModal } from \"@vuu-ui/vuu-ui-controls\";\nimport { useCallback, useRef } from \"react\";\nimport { ColumnModel } from \"../column-picker/ColumnModel\";\nimport { CalculatedColumnPanel } from \"./CalculatedColumnPanel\";\n\ntype CalculatedColumnState = {\n originalColumn?: ColumnDescriptor;\n newColumn: ColumnDescriptor;\n};\n\nexport interface EditCalculatedColumnProps {\n calculatedColumn?: ColumnDescriptor;\n columnModel: ColumnModel;\n onSaveColumn?: (caclulatedColumn: ColumnDescriptor) => void;\n vuuTable?: VuuTable;\n}\n\nexport const useEditCalculatedColumn = ({\n calculatedColumn,\n columnModel,\n onSaveColumn,\n vuuTable,\n}: EditCalculatedColumnProps) => {\n if (vuuTable === undefined) {\n throw Error(\n `[useEditCalculatedColumn] vuuTable must be provided to create or edit a calculated column`,\n );\n }\n const { showPrompt } = useModal();\n\n const calculatedColumnRef = useRef<CalculatedColumnState | undefined>(\n undefined,\n );\n\n const handleChangeNewCalculatedColumn = useCallback(\n (column: ColumnDescriptor) => {\n if (calculatedColumnRef.current) {\n calculatedColumnRef.current.newColumn = column;\n } else {\n throw Error(`[TabbedTableConfigPanel] handleChangeNewCalculatedColumn`);\n }\n },\n [],\n );\n\n const handleSaveNewCalculatedColumn = useCallback(() => {\n if (calculatedColumnRef.current) {\n const {\n current: { newColumn: calculatedColumn },\n } = calculatedColumnRef;\n columnModel.addColumn(calculatedColumn, true);\n calculatedColumnRef.current = undefined;\n onSaveColumn?.(calculatedColumn);\n }\n const { current: calculatedColumn } = calculatedColumnRef;\n if (calculatedColumn) {\n columnModel.addColumn(calculatedColumn, true);\n calculatedColumnRef.current = undefined;\n onSaveColumn?.(calculatedColumn);\n }\n }, [columnModel, onSaveColumn]);\n\n const handleCreateCalculatedColumn = useCallback(() => {\n if (vuuTable) {\n const newColumn: ColumnDescriptor = {\n name: \"::\",\n serverDataType: \"string\",\n };\n calculatedColumnRef.current = { newColumn };\n // TODO load this dynamically\n showPrompt(\n <CalculatedColumnPanel\n column={newColumn}\n columnModel={columnModel}\n onChangeColumn={handleChangeNewCalculatedColumn}\n vuuTable={vuuTable}\n />,\n {\n confirmButtonLabel: \"Save column\",\n onConfirm: handleSaveNewCalculatedColumn,\n title: \"Calculated column\",\n },\n );\n }\n }, [\n columnModel,\n handleChangeNewCalculatedColumn,\n handleSaveNewCalculatedColumn,\n showPrompt,\n vuuTable,\n ]);\n\n const handleSaveColumnEdits = useCallback(() => {\n if (calculatedColumnRef.current) {\n const { originalColumn, newColumn } = calculatedColumnRef.current;\n if (originalColumn) {\n calculatedColumnRef.current = undefined;\n onSaveColumn?.(newColumn);\n\n columnModel.updateColumn(originalColumn, newColumn);\n }\n }\n }, [columnModel, onSaveColumn]);\n\n const handleUpdateCalculatedColumn = useCallback(\n (column: ColumnDescriptor) => {\n if (calculatedColumnRef.current) {\n calculatedColumnRef.current.newColumn = column;\n } else {\n throw Error(\"[TabbedTableConfigPanel] handleUpdateCalculatedColumn`\");\n }\n },\n [],\n );\n\n const handleEditCalculatedColumn = useCallback(() => {\n if (calculatedColumn && vuuTable) {\n calculatedColumnRef.current = {\n originalColumn: calculatedColumn,\n newColumn: calculatedColumn,\n };\n // TODO load this dynamically\n showPrompt(\n <CalculatedColumnPanel\n column={calculatedColumn}\n columnModel={columnModel}\n onChangeColumn={handleUpdateCalculatedColumn}\n vuuTable={vuuTable}\n />,\n {\n confirmButtonLabel: \"Save column\",\n onConfirm: handleSaveColumnEdits,\n title: \"Calculated column\",\n },\n );\n }\n }, [\n calculatedColumn,\n columnModel,\n handleSaveColumnEdits,\n handleUpdateCalculatedColumn,\n showPrompt,\n vuuTable,\n ]);\n\n return {\n onCreateCalculatedColumn: handleCreateCalculatedColumn,\n onEditCalculatedColumn: handleEditCalculatedColumn,\n };\n};\n"],"names":["calculatedColumn"],"mappings":"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"}
@@ -59,6 +59,7 @@ const BaseNumericFormattingSettings = ({
59
59
  /* @__PURE__ */ jsx(
60
60
  Input,
61
61
  {
62
+ bordered: true,
62
63
  className: "vuuInput",
63
64
  onChange: handleChangeDecimals,
64
65
  onKeyDown: handleInputKeyDown,
@@ -1 +1 @@
1
- {"version":3,"file":"BaseNumericFormattingSettings.js","sources":["../../../../packages/vuu-table-extras/src/column-formatting-settings/BaseNumericFormattingSettings.tsx"],"sourcesContent":["import { FormField, FormFieldLabel, Input, Switch } from \"@salt-ds/core\";\nimport {\n ColumnTypeFormatting,\n FormattingSettingsProps,\n} from \"@vuu-ui/vuu-table-types\";\nimport { getTypeFormattingFromColumn } from \"@vuu-ui/vuu-utils\";\nimport {\n ChangeEvent,\n KeyboardEvent,\n SyntheticEvent,\n useCallback,\n useState,\n} from \"react\";\n\nconst classBase = \"vuuFormattingSettings\";\n\nexport const BaseNumericFormattingSettings = ({\n column,\n onChangeFormatting: onChange,\n}: FormattingSettingsProps) => {\n const [formattingSettings, setFormattingSettings] =\n useState<ColumnTypeFormatting>(getTypeFormattingFromColumn(column));\n\n const handleInputKeyDown = useCallback(\n (evt: KeyboardEvent<HTMLInputElement>) => {\n if (evt.key === \"Enter\" || evt.key === \"Tab\") {\n onChange(formattingSettings);\n }\n },\n [formattingSettings, onChange],\n );\n\n const handleChangeDecimals = useCallback(\n (evt: SyntheticEvent) => {\n const { value } = evt.target as HTMLFormElement;\n const numericValue: number | undefined =\n value === \"\"\n ? undefined\n : isNaN(parseInt(value))\n ? undefined\n : parseInt(value);\n\n const newFormattingSettings = {\n ...formattingSettings,\n decimals: numericValue,\n };\n setFormattingSettings(newFormattingSettings);\n },\n [formattingSettings],\n );\n\n const handleChangeAlignDecimals = useCallback(\n (evt: ChangeEvent<HTMLInputElement>) => {\n const { checked } = evt.target as HTMLInputElement;\n const newFormattingSettings = {\n ...formattingSettings,\n alignOnDecimals: checked,\n };\n setFormattingSettings(newFormattingSettings);\n onChange(newFormattingSettings);\n },\n [formattingSettings, onChange],\n );\n\n const handleChangeZeroPad = useCallback(\n (evt: ChangeEvent<HTMLInputElement>) => {\n const { checked } = evt.target as HTMLInputElement;\n const newFormattingSettings = {\n ...formattingSettings,\n zeroPad: checked,\n };\n setFormattingSettings(newFormattingSettings);\n onChange(newFormattingSettings);\n },\n [formattingSettings, onChange],\n );\n\n return (\n <div className={classBase}>\n <FormField data-field=\"decimals\">\n <FormFieldLabel>Number of decimals</FormFieldLabel>\n <Input\n className=\"vuuInput\"\n onChange={handleChangeDecimals}\n onKeyDown={handleInputKeyDown}\n value={formattingSettings.decimals ?? \"\"}\n />\n </FormField>\n\n <FormField labelPlacement=\"left\">\n <FormFieldLabel>Align on decimals</FormFieldLabel>\n <Switch\n checked={formattingSettings.alignOnDecimals ?? false}\n onChange={handleChangeAlignDecimals}\n value=\"align-decimals\"\n />\n </FormField>\n <FormField labelPlacement=\"left\">\n <FormFieldLabel>Zero pad decimals</FormFieldLabel>\n <Switch\n checked={formattingSettings.zeroPad ?? false}\n onChange={handleChangeZeroPad}\n value=\"zero-pad\"\n />\n </FormField>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseNumericFormattingSettings.js","sources":["../../../../packages/vuu-table-extras/src/column-formatting-settings/BaseNumericFormattingSettings.tsx"],"sourcesContent":["import { FormField, FormFieldLabel, Input, Switch } from \"@salt-ds/core\";\nimport {\n ColumnTypeFormatting,\n FormattingSettingsProps,\n} from \"@vuu-ui/vuu-table-types\";\nimport { getTypeFormattingFromColumn } from \"@vuu-ui/vuu-utils\";\nimport {\n ChangeEvent,\n KeyboardEvent,\n SyntheticEvent,\n useCallback,\n useState,\n} from \"react\";\n\nconst classBase = \"vuuFormattingSettings\";\n\nexport const BaseNumericFormattingSettings = ({\n column,\n onChangeFormatting: onChange,\n}: FormattingSettingsProps) => {\n const [formattingSettings, setFormattingSettings] =\n useState<ColumnTypeFormatting>(getTypeFormattingFromColumn(column));\n\n const handleInputKeyDown = useCallback(\n (evt: KeyboardEvent<HTMLInputElement>) => {\n if (evt.key === \"Enter\" || evt.key === \"Tab\") {\n onChange(formattingSettings);\n }\n },\n [formattingSettings, onChange],\n );\n\n const handleChangeDecimals = useCallback(\n (evt: SyntheticEvent) => {\n const { value } = evt.target as HTMLFormElement;\n const numericValue: number | undefined =\n value === \"\"\n ? undefined\n : isNaN(parseInt(value))\n ? undefined\n : parseInt(value);\n\n const newFormattingSettings = {\n ...formattingSettings,\n decimals: numericValue,\n };\n setFormattingSettings(newFormattingSettings);\n },\n [formattingSettings],\n );\n\n const handleChangeAlignDecimals = useCallback(\n (evt: ChangeEvent<HTMLInputElement>) => {\n const { checked } = evt.target as HTMLInputElement;\n const newFormattingSettings = {\n ...formattingSettings,\n alignOnDecimals: checked,\n };\n setFormattingSettings(newFormattingSettings);\n onChange(newFormattingSettings);\n },\n [formattingSettings, onChange],\n );\n\n const handleChangeZeroPad = useCallback(\n (evt: ChangeEvent<HTMLInputElement>) => {\n const { checked } = evt.target as HTMLInputElement;\n const newFormattingSettings = {\n ...formattingSettings,\n zeroPad: checked,\n };\n setFormattingSettings(newFormattingSettings);\n onChange(newFormattingSettings);\n },\n [formattingSettings, onChange],\n );\n\n return (\n <div className={classBase}>\n <FormField data-field=\"decimals\">\n <FormFieldLabel>Number of decimals</FormFieldLabel>\n <Input\n bordered\n className=\"vuuInput\"\n onChange={handleChangeDecimals}\n onKeyDown={handleInputKeyDown}\n value={formattingSettings.decimals ?? \"\"}\n />\n </FormField>\n\n <FormField labelPlacement=\"left\">\n <FormFieldLabel>Align on decimals</FormFieldLabel>\n <Switch\n checked={formattingSettings.alignOnDecimals ?? false}\n onChange={handleChangeAlignDecimals}\n value=\"align-decimals\"\n />\n </FormField>\n <FormField labelPlacement=\"left\">\n <FormFieldLabel>Zero pad decimals</FormFieldLabel>\n <Switch\n checked={formattingSettings.zeroPad ?? false}\n onChange={handleChangeZeroPad}\n value=\"zero-pad\"\n />\n </FormField>\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;AAcA,MAAM,SAAY,GAAA,uBAAA;AAEX,MAAM,gCAAgC,CAAC;AAAA,EAC5C,MAAA;AAAA,EACA,kBAAoB,EAAA;AACtB,CAA+B,KAAA;AAC7B,EAAA,MAAM,CAAC,kBAAoB,EAAA,qBAAqB,IAC9C,QAA+B,CAAA,2BAAA,CAA4B,MAAM,CAAC,CAAA;AAEpE,EAAA,MAAM,kBAAqB,GAAA,WAAA;AAAA,IACzB,CAAC,GAAyC,KAAA;AACxC,MAAA,IAAI,GAAI,CAAA,GAAA,KAAQ,OAAW,IAAA,GAAA,CAAI,QAAQ,KAAO,EAAA;AAC5C,QAAA,QAAA,CAAS,kBAAkB,CAAA;AAAA;AAC7B,KACF;AAAA,IACA,CAAC,oBAAoB,QAAQ;AAAA,GAC/B;AAEA,EAAA,MAAM,oBAAuB,GAAA,WAAA;AAAA,IAC3B,CAAC,GAAwB,KAAA;AACvB,MAAM,MAAA,EAAE,KAAM,EAAA,GAAI,GAAI,CAAA,MAAA;AACtB,MAAM,MAAA,YAAA,GACJ,KAAU,KAAA,EAAA,GACN,KACA,CAAA,GAAA,KAAA,CAAM,QAAS,CAAA,KAAK,CAAC,CAAA,GACnB,KACA,CAAA,GAAA,QAAA,CAAS,KAAK,CAAA;AAEtB,MAAA,MAAM,qBAAwB,GAAA;AAAA,QAC5B,GAAG,kBAAA;AAAA,QACH,QAAU,EAAA;AAAA,OACZ;AACA,MAAA,qBAAA,CAAsB,qBAAqB,CAAA;AAAA,KAC7C;AAAA,IACA,CAAC,kBAAkB;AAAA,GACrB;AAEA,EAAA,MAAM,yBAA4B,GAAA,WAAA;AAAA,IAChC,CAAC,GAAuC,KAAA;AACtC,MAAM,MAAA,EAAE,OAAQ,EAAA,GAAI,GAAI,CAAA,MAAA;AACxB,MAAA,MAAM,qBAAwB,GAAA;AAAA,QAC5B,GAAG,kBAAA;AAAA,QACH,eAAiB,EAAA;AAAA,OACnB;AACA,MAAA,qBAAA,CAAsB,qBAAqB,CAAA;AAC3C,MAAA,QAAA,CAAS,qBAAqB,CAAA;AAAA,KAChC;AAAA,IACA,CAAC,oBAAoB,QAAQ;AAAA,GAC/B;AAEA,EAAA,MAAM,mBAAsB,GAAA,WAAA;AAAA,IAC1B,CAAC,GAAuC,KAAA;AACtC,MAAM,MAAA,EAAE,OAAQ,EAAA,GAAI,GAAI,CAAA,MAAA;AACxB,MAAA,MAAM,qBAAwB,GAAA;AAAA,QAC5B,GAAG,kBAAA;AAAA,QACH,OAAS,EAAA;AAAA,OACX;AACA,MAAA,qBAAA,CAAsB,qBAAqB,CAAA;AAC3C,MAAA,QAAA,CAAS,qBAAqB,CAAA;AAAA,KAChC;AAAA,IACA,CAAC,oBAAoB,QAAQ;AAAA,GAC/B;AAEA,EACE,uBAAA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,SACd,EAAA,QAAA,EAAA;AAAA,oBAAC,IAAA,CAAA,SAAA,EAAA,EAAU,cAAW,UACpB,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,kBAAe,QAAkB,EAAA,oBAAA,EAAA,CAAA;AAAA,sBAClC,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,QAAQ,EAAA,IAAA;AAAA,UACR,SAAU,EAAA,UAAA;AAAA,UACV,QAAU,EAAA,oBAAA;AAAA,UACV,SAAW,EAAA,kBAAA;AAAA,UACX,KAAA,EAAO,mBAAmB,QAAY,IAAA;AAAA;AAAA;AACxC,KACF,EAAA,CAAA;AAAA,oBAEA,IAAA,CAAC,SAAU,EAAA,EAAA,cAAA,EAAe,MACxB,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,kBAAe,QAAiB,EAAA,mBAAA,EAAA,CAAA;AAAA,sBACjC,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,mBAAmB,eAAmB,IAAA,KAAA;AAAA,UAC/C,QAAU,EAAA,yBAAA;AAAA,UACV,KAAM,EAAA;AAAA;AAAA;AACR,KACF,EAAA,CAAA;AAAA,oBACA,IAAA,CAAC,SAAU,EAAA,EAAA,cAAA,EAAe,MACxB,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,kBAAe,QAAiB,EAAA,mBAAA,EAAA,CAAA;AAAA,sBACjC,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,mBAAmB,OAAW,IAAA,KAAA;AAAA,UACvC,QAAU,EAAA,mBAAA;AAAA,UACV,KAAM,EAAA;AAAA;AAAA;AACR,KACF,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
@@ -59,6 +59,7 @@ const ColumnFormattingPanel = ({
59
59
  /* @__PURE__ */ jsx(
60
60
  Dropdown,
61
61
  {
62
+ bordered: true,
62
63
  className: cx(`${classBase}-renderer`),
63
64
  onSelectionChange: handleChangeRenderer,
64
65
  selected: selectedCellRenderer ? [selectedCellRenderer] : [],
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnFormattingPanel.js","sources":["../../../../packages/vuu-table-extras/src/column-formatting-settings/ColumnFormattingPanel.tsx"],"sourcesContent":["import {\n ColumnDescriptor,\n ColumnDescriptorCustomRenderer,\n ColumnTypeRendering,\n FormattingSettingsProps,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n CellRendererDescriptor,\n ConfigurationEditorProps,\n getCellRendererOptions,\n getConfigurationEditor,\n isColumnTypeRenderer,\n isTypeDescriptor,\n} from \"@vuu-ui/vuu-utils\";\nimport { Dropdown, FormField, FormFieldLabel, Option } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, SyntheticEvent, useCallback, useMemo } from \"react\";\nimport { BaseNumericFormattingSettings } from \"./BaseNumericFormattingSettings\";\nimport { LongTypeFormattingSettings } from \"./LongTypeFormattingSettings\";\nimport { DateTimeFormattingSettings } from \"./DateTimeFormattingSettings\";\n\nconst classBase = \"vuuColumnFormattingPanel\";\n\nexport interface ColumnFormattingPanelProps\n extends HTMLAttributes<HTMLDivElement>,\n FormattingSettingsProps {\n availableRenderers: CellRendererDescriptor[];\n column: ColumnDescriptor;\n onChangeRendering: (renderProps: ColumnTypeRendering) => void;\n}\n\nexport const ColumnFormattingPanel = ({\n availableRenderers,\n className,\n column,\n onChangeFormatting,\n onChangeColumnType,\n onChangeRendering,\n ...htmlAttributes\n}: ColumnFormattingPanelProps) => {\n const formattingSettingsComponent = useMemo(\n () =>\n getFormattingSettingsComponent({\n column,\n onChangeFormatting,\n onChangeColumnType,\n }),\n [column, onChangeColumnType, onChangeFormatting],\n );\n\n const ConfigEditor = useMemo<\n React.FC<ConfigurationEditorProps> | undefined\n >(() => {\n const { type } = column;\n if (isTypeDescriptor(type) && isColumnTypeRenderer(type.renderer)) {\n const cellRendererOptions = getCellRendererOptions(type.renderer.name);\n return getConfigurationEditor(cellRendererOptions?.configEditor);\n }\n return undefined;\n }, [column]);\n\n const selectedCellRenderer = useMemo(() => {\n const { type } = column;\n const [defaultRenderer] = availableRenderers;\n const rendererName =\n isTypeDescriptor(type) && isColumnTypeRenderer(type.renderer)\n ? type.renderer.name\n : undefined;\n const configuredRenderer = availableRenderers.find(\n (renderer) => renderer.name === rendererName,\n );\n return configuredRenderer ?? defaultRenderer;\n }, [availableRenderers, column]);\n\n const handleChangeRenderer = useCallback(\n (\n _e: SyntheticEvent,\n [cellRendererDescriptor]: CellRendererDescriptor[],\n ) => {\n const renderProps: ColumnTypeRendering = {\n name: cellRendererDescriptor.name,\n };\n onChangeRendering?.(renderProps);\n },\n [onChangeRendering],\n );\n\n const { serverDataType = \"string\" } = column;\n\n return (\n <div {...htmlAttributes} className={`vuuColumnSettingsPanel-header`}>\n <div>Formatting</div>\n\n <FormField>\n <FormFieldLabel>\n {`Renderer (data type ${column.serverDataType})`}\n </FormFieldLabel>\n <Dropdown<CellRendererDescriptor>\n className={cx(`${classBase}-renderer`)}\n onSelectionChange={handleChangeRenderer}\n selected={selectedCellRenderer ? [selectedCellRenderer] : []}\n value={selectedCellRenderer?.label ?? selectedCellRenderer?.name}\n >\n {availableRenderers.map((cellRenderer, i) => (\n <Option key={i} value={cellRenderer}>\n {cellRenderer.label ?? cellRenderer.name}\n </Option>\n ))}\n </Dropdown>\n </FormField>\n <div\n className={cx(classBase, className, `${classBase}-${serverDataType}`)}\n >\n {formattingSettingsComponent}\n {ConfigEditor ? (\n <ConfigEditor\n column={column as ColumnDescriptorCustomRenderer}\n onChangeRendering={onChangeRendering}\n />\n ) : null}\n </div>\n </div>\n );\n};\n\nfunction getFormattingSettingsComponent(props: FormattingSettingsProps) {\n const { column } = props;\n\n switch (column.serverDataType) {\n case \"double\":\n case \"scaleddecimal2\":\n case \"scaleddecimal4\":\n case \"scaleddecimal6\":\n case \"scaleddecimal8\":\n case \"int\":\n return <BaseNumericFormattingSettings {...props} />;\n case \"long\":\n return <LongTypeFormattingSettings {...props} />;\n case \"epochtimestamp\":\n return <DateTimeFormattingSettings {...props} />;\n default:\n return null;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ColumnFormattingPanel.js","sources":["../../../../packages/vuu-table-extras/src/column-formatting-settings/ColumnFormattingPanel.tsx"],"sourcesContent":["import {\n ColumnDescriptor,\n ColumnDescriptorCustomRenderer,\n ColumnTypeRendering,\n FormattingSettingsProps,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n CellRendererDescriptor,\n ConfigurationEditorProps,\n getCellRendererOptions,\n getConfigurationEditor,\n isColumnTypeRenderer,\n isTypeDescriptor,\n} from \"@vuu-ui/vuu-utils\";\nimport { Dropdown, FormField, FormFieldLabel, Option } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, SyntheticEvent, useCallback, useMemo } from \"react\";\nimport { BaseNumericFormattingSettings } from \"./BaseNumericFormattingSettings\";\nimport { LongTypeFormattingSettings } from \"./LongTypeFormattingSettings\";\nimport { DateTimeFormattingSettings } from \"./DateTimeFormattingSettings\";\n\nconst classBase = \"vuuColumnFormattingPanel\";\n\nexport interface ColumnFormattingPanelProps\n extends HTMLAttributes<HTMLDivElement>,\n FormattingSettingsProps {\n availableRenderers: CellRendererDescriptor[];\n column: ColumnDescriptor;\n onChangeRendering: (renderProps: ColumnTypeRendering) => void;\n}\n\nexport const ColumnFormattingPanel = ({\n availableRenderers,\n className,\n column,\n onChangeFormatting,\n onChangeColumnType,\n onChangeRendering,\n ...htmlAttributes\n}: ColumnFormattingPanelProps) => {\n const formattingSettingsComponent = useMemo(\n () =>\n getFormattingSettingsComponent({\n column,\n onChangeFormatting,\n onChangeColumnType,\n }),\n [column, onChangeColumnType, onChangeFormatting],\n );\n\n const ConfigEditor = useMemo<\n React.FC<ConfigurationEditorProps> | undefined\n >(() => {\n const { type } = column;\n if (isTypeDescriptor(type) && isColumnTypeRenderer(type.renderer)) {\n const cellRendererOptions = getCellRendererOptions(type.renderer.name);\n return getConfigurationEditor(cellRendererOptions?.configEditor);\n }\n return undefined;\n }, [column]);\n\n const selectedCellRenderer = useMemo(() => {\n const { type } = column;\n const [defaultRenderer] = availableRenderers;\n const rendererName =\n isTypeDescriptor(type) && isColumnTypeRenderer(type.renderer)\n ? type.renderer.name\n : undefined;\n const configuredRenderer = availableRenderers.find(\n (renderer) => renderer.name === rendererName,\n );\n return configuredRenderer ?? defaultRenderer;\n }, [availableRenderers, column]);\n\n const handleChangeRenderer = useCallback(\n (\n _e: SyntheticEvent,\n [cellRendererDescriptor]: CellRendererDescriptor[],\n ) => {\n const renderProps: ColumnTypeRendering = {\n name: cellRendererDescriptor.name,\n };\n onChangeRendering?.(renderProps);\n },\n [onChangeRendering],\n );\n\n const { serverDataType = \"string\" } = column;\n\n return (\n <div {...htmlAttributes} className={`vuuColumnSettingsPanel-header`}>\n <div>Formatting</div>\n\n <FormField>\n <FormFieldLabel>\n {`Renderer (data type ${column.serverDataType})`}\n </FormFieldLabel>\n <Dropdown<CellRendererDescriptor>\n bordered\n className={cx(`${classBase}-renderer`)}\n onSelectionChange={handleChangeRenderer}\n selected={selectedCellRenderer ? [selectedCellRenderer] : []}\n value={selectedCellRenderer?.label ?? selectedCellRenderer?.name}\n >\n {availableRenderers.map((cellRenderer, i) => (\n <Option key={i} value={cellRenderer}>\n {cellRenderer.label ?? cellRenderer.name}\n </Option>\n ))}\n </Dropdown>\n </FormField>\n <div\n className={cx(classBase, className, `${classBase}-${serverDataType}`)}\n >\n {formattingSettingsComponent}\n {ConfigEditor ? (\n <ConfigEditor\n column={column as ColumnDescriptorCustomRenderer}\n onChangeRendering={onChangeRendering}\n />\n ) : null}\n </div>\n </div>\n );\n};\n\nfunction getFormattingSettingsComponent(props: FormattingSettingsProps) {\n const { column } = props;\n\n switch (column.serverDataType) {\n case \"double\":\n case \"scaleddecimal2\":\n case \"scaleddecimal4\":\n case \"scaleddecimal6\":\n case \"scaleddecimal8\":\n case \"int\":\n return <BaseNumericFormattingSettings {...props} />;\n case \"long\":\n return <LongTypeFormattingSettings {...props} />;\n case \"epochtimestamp\":\n return <DateTimeFormattingSettings {...props} />;\n default:\n return null;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { useWindow } from '@salt-ds/window';
5
5
  import { IconButton } from '@vuu-ui/vuu-ui-controls';
6
6
  import cx from 'clsx';
7
7
  import { useCallback } from 'react';
8
- import { defaultTableSettingsPermissions } from '../table-column-settings/TableSettingsPanel.js';
8
+ import { defaultTableSettingsPermissions } from '../table-settings-panel/TableSettingsPanel.js';
9
9
  import { useTableContext } from '../table-provider/TableProvider.js';
10
10
  import { getColumnMenuActionType, buildSortMenu, buildGroupMenu, buildAggregationMenuItems, buildVisibilityMenuItems, buildPinMenuItems, buildSettingsMenuItems } from './column-menu-utils.js';
11
11
  import columnMenuCss from './ColumnMenu.css.js';
@@ -80,8 +80,7 @@ const ColumnMenu = ({
80
80
  const settingsMenuItems = buildSettingsMenuItems(
81
81
  column,
82
82
  menuActionClickHandler,
83
- allowColumnSettings,
84
- allowTableSettings
83
+ allowColumnSettings
85
84
  );
86
85
  const handleClick = useCallback(
87
86
  (evt) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnMenu.js","sources":["../../../../packages/vuu-table-extras/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 { MenuActionHandler } from \"@vuu-ui/vuu-context-menu\";\nimport {\n ColumnDescriptor,\n ColumnMenuPermissions,\n} from \"@vuu-ui/vuu-table-types\";\nimport { IconButton } from \"@vuu-ui/vuu-ui-controls\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, MouseEventHandler, useCallback } from \"react\";\nimport { defaultTableSettingsPermissions } from \"../table-column-settings/TableSettingsPanel\";\nimport { useTableContext } from \"../table-provider/TableProvider\";\nimport {\n buildAggregationMenuItems,\n buildGroupMenu,\n buildPinMenuItems,\n buildSettingsMenuItems,\n buildSortMenu,\n buildVisibilityMenuItems,\n ColumnMenuActionType,\n getColumnMenuActionType,\n type MenuItemClickHandler,\n} from \"./column-menu-utils\";\n\nimport columnMenuCss from \"./ColumnMenu.css\";\n\nconst classBase = \"vuuColumnMenu\";\n\nconst defaultColumnMenuPermissions: Readonly<ColumnMenuPermissions> = {\n allowSort: true,\n allowGroup: true,\n allowAggregation: true,\n allowHide: true,\n allowRemove: 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 allowRemove,\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 allowRemove,\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":[],"mappings":"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"}
1
+ {"version":3,"file":"ColumnMenu.js","sources":["../../../../packages/vuu-table-extras/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 { MenuActionHandler } from \"@vuu-ui/vuu-context-menu\";\nimport {\n ColumnDescriptor,\n ColumnMenuPermissions,\n} from \"@vuu-ui/vuu-table-types\";\nimport { IconButton } from \"@vuu-ui/vuu-ui-controls\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, MouseEventHandler, useCallback } from \"react\";\nimport { defaultTableSettingsPermissions } from \"../table-settings-panel/TableSettingsPanel\";\nimport { useTableContext } from \"../table-provider/TableProvider\";\nimport {\n buildAggregationMenuItems,\n buildGroupMenu,\n buildPinMenuItems,\n buildSettingsMenuItems,\n buildSortMenu,\n buildVisibilityMenuItems,\n ColumnMenuActionType,\n getColumnMenuActionType,\n type MenuItemClickHandler,\n} from \"./column-menu-utils\";\n\nimport columnMenuCss from \"./ColumnMenu.css\";\n\nconst classBase = \"vuuColumnMenu\";\n\nconst defaultColumnMenuPermissions: Readonly<ColumnMenuPermissions> = {\n allowSort: true,\n allowGroup: true,\n allowAggregation: true,\n allowHide: true,\n allowRemove: 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 allowRemove,\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 allowRemove,\n );\n const pinMenu = buildPinMenuItems(column, menuActionClickHandler, allowPin);\n const settingsMenuItems = buildSettingsMenuItems(\n column,\n menuActionClickHandler,\n allowColumnSettings,\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":[],"mappings":"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"}
@@ -23,8 +23,7 @@ const isColumnMenuActionType = (value) => value !== void 0 && [
23
23
  "unpin-column",
24
24
  "hide-column",
25
25
  "remove-column",
26
- "column-settings",
27
- "table-settings"
26
+ "column-settings"
28
27
  ].includes(value);
29
28
  const getColumnMenuActionType = (target) => {
30
29
  const { menuActionId } = target.dataset;
@@ -372,8 +371,8 @@ const buildPinMenuItems = (column, menuActionClickHandler, isAllowed = true) =>
372
371
  }
373
372
  return menuItems;
374
373
  };
375
- const buildSettingsMenuItems = (_, menuActionClickHandler, allowColumnSettings = true, allowTableSettings = true) => {
376
- if (!allowColumnSettings && !allowTableSettings) {
374
+ const buildSettingsMenuItems = (_, menuActionClickHandler, allowColumnSettings = true) => {
375
+ if (!allowColumnSettings) {
377
376
  return null;
378
377
  }
379
378
  const menuItems = [];
@@ -391,20 +390,6 @@ const buildSettingsMenuItems = (_, menuActionClickHandler, allowColumnSettings =
391
390
  )
392
391
  );
393
392
  }
394
- if (allowTableSettings) {
395
- menuItems.push(
396
- /* @__PURE__ */ jsx(
397
- MenuItem,
398
- {
399
- "data-icon": "settings",
400
- "data-menu-action-id": "table-settings",
401
- onClick: menuActionClickHandler,
402
- children: "Table settings ..."
403
- },
404
- "table-settings"
405
- )
406
- );
407
- }
408
393
  return menuItems;
409
394
  };
410
395
  function buildAggregationMenuItems(column, dataSource, menuActionClickHandler, isAllowed = true) {