@vuu-ui/vuu-table-extras 1.0.2 → 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,33 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useContextPanel, useHideContextPanel } from '@vuu-ui/vuu-ui-controls';
3
+ import { useRef, useCallback, useEffect } from 'react';
4
+ import { ColumnPicker } from './ColumnPicker.js';
5
+
6
+ const useTableColumnPicker = ({
7
+ columnModel
8
+ }) => {
9
+ const showContextPanel = useContextPanel();
10
+ const hideContextPanel = useHideContextPanel();
11
+ const contextPanelShowing = useRef(false);
12
+ const showColumnPicker = useCallback(
13
+ (title = "Column Picker") => {
14
+ contextPanelShowing.current = true;
15
+ showContextPanel(/* @__PURE__ */ jsx(ColumnPicker, { columnModel }), title);
16
+ },
17
+ [columnModel, showContextPanel]
18
+ );
19
+ useEffect(
20
+ () => () => {
21
+ if (contextPanelShowing.current) {
22
+ hideContextPanel?.();
23
+ }
24
+ },
25
+ [hideContextPanel]
26
+ );
27
+ return {
28
+ showColumnPicker
29
+ };
30
+ };
31
+
32
+ export { useTableColumnPicker };
33
+ //# sourceMappingURL=useTableColumnPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTableColumnPicker.js","sources":["../../../../packages/vuu-table-extras/src/column-picker/useTableColumnPicker.tsx"],"sourcesContent":["import { useContextPanel, useHideContextPanel } from \"@vuu-ui/vuu-ui-controls\";\nimport { useCallback, useEffect, useRef } from \"react\";\nimport { ColumnPicker } from \"./ColumnPicker\";\nimport { ColumnModel } from \"./ColumnModel\";\n\nexport interface TableColumnPickerHookProps {\n columnModel: ColumnModel;\n}\n\nexport const useTableColumnPicker = ({\n columnModel,\n}: TableColumnPickerHookProps) => {\n const showContextPanel = useContextPanel();\n const hideContextPanel = useHideContextPanel();\n const contextPanelShowing = useRef(false);\n\n const showColumnPicker = useCallback(\n (title = \"Column Picker\") => {\n contextPanelShowing.current = true;\n showContextPanel(<ColumnPicker columnModel={columnModel} />, title);\n },\n [columnModel, showContextPanel],\n );\n\n // TODO what's this for ?\n useEffect(\n () => () => {\n if (contextPanelShowing.current) {\n // It might already be closed, but this won't do any harm\n hideContextPanel?.();\n }\n },\n [hideContextPanel],\n );\n\n return {\n showColumnPicker,\n };\n};\n"],"names":[],"mappings":";;;;;AASO,MAAM,uBAAuB,CAAC;AAAA,EACnC;AACF,CAAkC,KAAA;AAChC,EAAA,MAAM,mBAAmB,eAAgB,EAAA;AACzC,EAAA,MAAM,mBAAmB,mBAAoB,EAAA;AAC7C,EAAM,MAAA,mBAAA,GAAsB,OAAO,KAAK,CAAA;AAExC,EAAA,MAAM,gBAAmB,GAAA,WAAA;AAAA,IACvB,CAAC,QAAQ,eAAoB,KAAA;AAC3B,MAAA,mBAAA,CAAoB,OAAU,GAAA,IAAA;AAC9B,MAAA,gBAAA,iBAAkB,GAAA,CAAA,YAAA,EAAA,EAAa,WAA0B,EAAA,CAAA,EAAI,KAAK,CAAA;AAAA,KACpE;AAAA,IACA,CAAC,aAAa,gBAAgB;AAAA,GAChC;AAGA,EAAA,SAAA;AAAA,IACE,MAAM,MAAM;AACV,MAAA,IAAI,oBAAoB,OAAS,EAAA;AAE/B,QAAmB,gBAAA,IAAA;AAAA;AACrB,KACF;AAAA,IACA,CAAC,gBAAgB;AAAA,GACnB;AAEA,EAAO,OAAA;AAAA,IACL;AAAA,GACF;AACF;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnNameLabel.js","sources":["../../../../packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.tsx"],"sourcesContent":["import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport cx from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport {\n getCalculatedColumnDetails,\n isCalculatedColumn,\n} from \"@vuu-ui/vuu-utils\";\nimport { MouseEventHandler } from \"react\";\n\nimport columnNameLabelCss from \"./ColumnNameLabel.css\";\n\nconst classBase = \"vuuColumnNameLabel\";\n\nexport interface ColumnNameLabelProps {\n column: ColumnDescriptor;\n onClick?: MouseEventHandler;\n}\n\nexport const ColumnNameLabel = ({ column, onClick }: ColumnNameLabelProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-column-label\",\n css: columnNameLabelCss,\n window: targetWindow,\n });\n\n if (isCalculatedColumn(column.name)) {\n const { name, serverDataType, expression } =\n getCalculatedColumnDetails(column);\n const displayName = name || \"name\";\n const displayExpression = \"=expression\";\n\n const nameClass =\n displayName === \"name\" ? `${classBase}-placeholder` : undefined;\n const expressionClass =\n expression === \"\" ? `${classBase}-placeholder` : undefined;\n return (\n <div\n className={cx(classBase, `${classBase}-calculated`)}\n onClick={onClick}\n >\n <span className={nameClass}>{displayName}</span>\n <span>:</span>\n <span>{serverDataType || \"string\"}</span>\n <span>:</span>\n <span className={expressionClass}>{displayExpression}</span>\n <span className={`${classBase}-edit`} data-icon=\"edit\" />\n </div>\n );\n } else {\n return <div className={classBase}>{column.name}</div>;\n }\n};\n"],"names":[],"mappings":";;;;;;;AAYA,MAAM,SAAY,GAAA,oBAAA;AAOX,MAAM,eAAkB,GAAA,CAAC,EAAE,MAAA,EAAQ,SAAoC,KAAA;AAC5E,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,kBAAA;AAAA,IACR,GAAK,EAAA,kBAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAI,IAAA,kBAAA,CAAmB,MAAO,CAAA,IAAI,CAAG,EAAA;AACnC,IAAA,MAAM,EAAE,IAAM,EAAA,cAAA,EAAgB,UAAW,EAAA,GACvC,2BAA2B,MAAM,CAAA;AACnC,IAAA,MAAM,cAAc,IAAQ,IAAA,MAAA;AAC5B,IAAA,MAAM,iBAAoB,GAAA,aAAA;AAE1B,IAAA,MAAM,SACJ,GAAA,WAAA,KAAgB,MAAS,GAAA,CAAA,EAAG,SAAS,CAAiB,YAAA,CAAA,GAAA,KAAA,CAAA;AACxD,IAAA,MAAM,eACJ,GAAA,UAAA,KAAe,EAAK,GAAA,CAAA,EAAG,SAAS,CAAiB,YAAA,CAAA,GAAA,KAAA,CAAA;AACnD,IACE,uBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAA,EAAA,CAAG,SAAW,EAAA,CAAA,EAAG,SAAS,CAAa,WAAA,CAAA,CAAA;AAAA,QAClD,OAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAC,GAAA,CAAA,MAAA,EAAA,EAAK,SAAW,EAAA,SAAA,EAAY,QAAY,EAAA,WAAA,EAAA,CAAA;AAAA,0BACzC,GAAA,CAAC,UAAK,QAAC,EAAA,GAAA,EAAA,CAAA;AAAA,0BACP,GAAA,CAAC,MAAM,EAAA,EAAA,QAAA,EAAA,cAAA,IAAkB,QAAS,EAAA,CAAA;AAAA,0BAClC,GAAA,CAAC,UAAK,QAAC,EAAA,GAAA,EAAA,CAAA;AAAA,0BACN,GAAA,CAAA,MAAA,EAAA,EAAK,SAAW,EAAA,eAAA,EAAkB,QAAkB,EAAA,iBAAA,EAAA,CAAA;AAAA,8BACpD,MAAK,EAAA,EAAA,SAAA,EAAW,GAAG,SAAS,CAAA,KAAA,CAAA,EAAS,aAAU,MAAO,EAAA;AAAA;AAAA;AAAA,KACzD;AAAA,GAEG,MAAA;AACL,IAAA,uBAAQ,GAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,SAAA,EAAY,iBAAO,IAAK,EAAA,CAAA;AAAA;AAEnD;;;;"}
@@ -1,4 +1,4 @@
1
- var colunSettingsPanelCss = ".vuuColumnSettingsPanel {\n --vuu-svg-align-left: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M9.33333 10H2.66667C2.3 10 2 10.3 2 10.6667C2 11.0333 2.3 11.3333 2.66667 11.3333H9.33333C9.7 11.3333 10 11.0333 10 10.6667C10 10.3 9.7 10 9.33333 10ZM9.33333 4.66667H2.66667C2.3 4.66667 2 4.96667 2 5.33333C2 5.7 2.3 6 2.66667 6H9.33333C9.7 6 10 5.7 10 5.33333C10 4.96667 9.7 4.66667 9.33333 4.66667ZM2.66667 8.66667H13.3333C13.7 8.66667 14 8.36667 14 8C14 7.63333 13.7 7.33333 13.3333 7.33333H2.66667C2.3 7.33333 2 7.63333 2 8C2 8.36667 2.3 8.66667 2.66667 8.66667ZM2.66667 14H13.3333C13.7 14 14 13.7 14 13.3333C14 12.9667 13.7 12.6667 13.3333 12.6667H2.66667C2.3 12.6667 2 12.9667 2 13.3333C2 13.7 2.3 14 2.66667 14ZM2 2.66667C2 3.03333 2.3 3.33333 2.66667 3.33333H13.3333C13.7 3.33333 14 3.03333 14 2.66667C14 2.3 13.7 2 13.3333 2H2.66667C2.3 2 2 2.3 2 2.66667Z\" /></svg>');\n --vuu-svg-align-right: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M2.66667 14H13.3333C13.7 14 14 13.7 14 13.3333C14 12.9667 13.7 12.6667 13.3333 12.6667H2.66667C2.3 12.6667 2 12.9667 2 13.3333C2 13.7 2.3 14 2.66667 14ZM6.66667 11.3333H13.3333C13.7 11.3333 14 11.0333 14 10.6667C14 10.3 13.7 10 13.3333 10H6.66667C6.3 10 6 10.3 6 10.6667C6 11.0333 6.3 11.3333 6.66667 11.3333ZM2.66667 8.66667H13.3333C13.7 8.66667 14 8.36667 14 8C14 7.63333 13.7 7.33333 13.3333 7.33333H2.66667C2.3 7.33333 2 7.63333 2 8C2 8.36667 2.3 8.66667 2.66667 8.66667ZM6.66667 6H13.3333C13.7 6 14 5.7 14 5.33333C14 4.96667 13.7 4.66667 13.3333 4.66667H6.66667C6.3 4.66667 6 4.96667 6 5.33333C6 5.7 6.3 6 6.66667 6ZM2 2.66667C2 3.03333 2.3 3.33333 2.66667 3.33333H13.3333C13.7 3.33333 14 3.03333 14 2.66667C14 2.3 13.7 2 13.3333 2H2.66667C2.3 2 2 2.3 2 2.66667Z\" /></svg>');\n --vuu-svg-pin-left: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M7.33333 9.86V8.66666H13.3333C13.7 8.66666 14 8.36666 14 8C14 7.63333 13.7 7.33333 13.3333 7.33333L7.33333 7.33333V6.14C7.33333 5.84 6.97333 5.69333 6.76667 5.90666L4.90667 7.76666C4.77333 7.89999 4.77333 8.10666 4.90667 8.24L6.76667 10.1C6.97333 10.3067 7.33333 10.16 7.33333 9.86ZM2.66667 13.3333C3.03333 13.3333 3.33333 13.0333 3.33333 12.6667L3.33333 3.33333C3.33333 2.96666 3.03333 2.66666 2.66667 2.66666C2.3 2.66666 2 2.96666 2 3.33333L2 12.6667C2 13.0333 2.3 13.3333 2.66667 13.3333Z\" /></svg>');\n --vuu-svg-pin-float: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M6 4.66667H4.66667V6H6V4.66667ZM6 7.33333H4.66667V8.66667H6V7.33333ZM6 2C5.26 2 4.66667 2.6 4.66667 3.33333H6V2ZM8.66667 10H7.33333V11.3333H8.66667V10ZM12.6667 2V3.33333H14C14 2.6 13.4 2 12.6667 2ZM8.66667 2H7.33333V3.33333H8.66667V2ZM6 11.3333V10H4.66667C4.66667 10.7333 5.26 11.3333 6 11.3333ZM12.6667 8.66667H14V7.33333H12.6667V8.66667ZM12.6667 6H14V4.66667H12.6667V6ZM12.6667 11.3333C13.4 11.3333 14 10.7333 14 10H12.6667V11.3333ZM2.66667 4.66667C2.3 4.66667 2 4.96667 2 5.33333V12.6667C2 13.4 2.6 14 3.33333 14H10.6667C11.0333 14 11.3333 13.7 11.3333 13.3333C11.3333 12.9667 11.0333 12.6667 10.6667 12.6667H4C3.63333 12.6667 3.33333 12.3667 3.33333 12V5.33333C3.33333 4.96667 3.03333 4.66667 2.66667 4.66667ZM10 3.33333H11.3333V2H10V3.33333ZM10 11.3333H11.3333V10H10V11.3333Z\" /></svg>');\n --vuu-svg-pin-right: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8.66667 6.14V7.33333H2.66667C2.3 7.33333 2 7.63333 2 8C2 8.36666 2.3 8.66666 2.66667 8.66666H8.66667V9.86C8.66667 10.16 9.02667 10.3067 9.23333 10.0933L11.0933 8.23333C11.2267 8.1 11.2267 7.89333 11.0933 7.76L9.23333 5.9C9.02667 5.69333 8.66667 5.84 8.66667 6.14ZM13.3333 13.3333C13.7 13.3333 14 13.0333 14 12.6667V3.33333C14 2.96666 13.7 2.66666 13.3333 2.66666C12.9667 2.66666 12.6667 2.96666 12.6667 3.33333V12.6667C12.6667 13.0333 12.9667 13.3333 13.3333 13.3333Z\"/></svg>');\n --vuuDropdown-height: 24px;\n --vuuDropdown-width: 100%;\n \n display: flex;\n flex-direction: column;\n gap: 24px;\n height: 100%;\n padding-top: 24px;\n}\n\n.vuuColumnSettingsPanel-header {\n border-top: solid 2px var(--vuu-color-gray-30);\n font-size: 14px;\n font-weight: 600;\n padding: 24px 2px 0 2px;\n}\n\n\n.vuuColumnSettingsPanel-buttonBar {\n align-items: center;\n display: flex;\n justify-content: space-between;\n margin-top: auto;\n}\n\n.vuuColumnSettingsPanel-buttonBar[data-align=\"right\"]{\n gap: 6px;\n justify-content: flex-end;\n}\n\n.vuuColumnSettingsPanel-buttonNavPrev {\n --vuu-icon-left: 6px;\n padding-left: 24px\n}\n\n.vuuColumnSettingsPanel-buttonNavNext {\n --vuu-icon-left: calc(100% - 18px);\n padding-right: 24px\n}\n\n\n\n[data-icon='align-left'] {\n --vuu-icon-svg: var(--vuu-svg-align-left);\n }\n\n [data-icon='align-right'] {\n --vuu-icon-svg: var(--vuu-svg-align-right);\n }\n\n [data-icon='pin-left'] {\n --vuu-icon-svg: var(--vuu-svg-pin-left);\n }\n [data-icon='pin-float'] {\n --vuu-icon-svg: var(--vuu-svg-pin-float);\n }\n [data-icon='pin-right'] {\n --vuu-icon-svg: var(--vuu-svg-pin-right);\n }\n\n .vuuColumnSettingsPanel-editing .vuuColumnNameLabel-edit {\n display: none;\n }\n \n\n\n \n \n \n \n \n";
1
+ var colunSettingsPanelCss = ".vuuColumnSettingsPanel {\n --vuu-svg-align-left: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M9.33333 10H2.66667C2.3 10 2 10.3 2 10.6667C2 11.0333 2.3 11.3333 2.66667 11.3333H9.33333C9.7 11.3333 10 11.0333 10 10.6667C10 10.3 9.7 10 9.33333 10ZM9.33333 4.66667H2.66667C2.3 4.66667 2 4.96667 2 5.33333C2 5.7 2.3 6 2.66667 6H9.33333C9.7 6 10 5.7 10 5.33333C10 4.96667 9.7 4.66667 9.33333 4.66667ZM2.66667 8.66667H13.3333C13.7 8.66667 14 8.36667 14 8C14 7.63333 13.7 7.33333 13.3333 7.33333H2.66667C2.3 7.33333 2 7.63333 2 8C2 8.36667 2.3 8.66667 2.66667 8.66667ZM2.66667 14H13.3333C13.7 14 14 13.7 14 13.3333C14 12.9667 13.7 12.6667 13.3333 12.6667H2.66667C2.3 12.6667 2 12.9667 2 13.3333C2 13.7 2.3 14 2.66667 14ZM2 2.66667C2 3.03333 2.3 3.33333 2.66667 3.33333H13.3333C13.7 3.33333 14 3.03333 14 2.66667C14 2.3 13.7 2 13.3333 2H2.66667C2.3 2 2 2.3 2 2.66667Z\" /></svg>');\n --vuu-svg-align-right: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M2.66667 14H13.3333C13.7 14 14 13.7 14 13.3333C14 12.9667 13.7 12.6667 13.3333 12.6667H2.66667C2.3 12.6667 2 12.9667 2 13.3333C2 13.7 2.3 14 2.66667 14ZM6.66667 11.3333H13.3333C13.7 11.3333 14 11.0333 14 10.6667C14 10.3 13.7 10 13.3333 10H6.66667C6.3 10 6 10.3 6 10.6667C6 11.0333 6.3 11.3333 6.66667 11.3333ZM2.66667 8.66667H13.3333C13.7 8.66667 14 8.36667 14 8C14 7.63333 13.7 7.33333 13.3333 7.33333H2.66667C2.3 7.33333 2 7.63333 2 8C2 8.36667 2.3 8.66667 2.66667 8.66667ZM6.66667 6H13.3333C13.7 6 14 5.7 14 5.33333C14 4.96667 13.7 4.66667 13.3333 4.66667H6.66667C6.3 4.66667 6 4.96667 6 5.33333C6 5.7 6.3 6 6.66667 6ZM2 2.66667C2 3.03333 2.3 3.33333 2.66667 3.33333H13.3333C13.7 3.33333 14 3.03333 14 2.66667C14 2.3 13.7 2 13.3333 2H2.66667C2.3 2 2 2.3 2 2.66667Z\" /></svg>');\n --vuu-svg-pin-left: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M7.33333 9.86V8.66666H13.3333C13.7 8.66666 14 8.36666 14 8C14 7.63333 13.7 7.33333 13.3333 7.33333L7.33333 7.33333V6.14C7.33333 5.84 6.97333 5.69333 6.76667 5.90666L4.90667 7.76666C4.77333 7.89999 4.77333 8.10666 4.90667 8.24L6.76667 10.1C6.97333 10.3067 7.33333 10.16 7.33333 9.86ZM2.66667 13.3333C3.03333 13.3333 3.33333 13.0333 3.33333 12.6667L3.33333 3.33333C3.33333 2.96666 3.03333 2.66666 2.66667 2.66666C2.3 2.66666 2 2.96666 2 3.33333L2 12.6667C2 13.0333 2.3 13.3333 2.66667 13.3333Z\" /></svg>');\n --vuu-svg-pin-float: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M6 4.66667H4.66667V6H6V4.66667ZM6 7.33333H4.66667V8.66667H6V7.33333ZM6 2C5.26 2 4.66667 2.6 4.66667 3.33333H6V2ZM8.66667 10H7.33333V11.3333H8.66667V10ZM12.6667 2V3.33333H14C14 2.6 13.4 2 12.6667 2ZM8.66667 2H7.33333V3.33333H8.66667V2ZM6 11.3333V10H4.66667C4.66667 10.7333 5.26 11.3333 6 11.3333ZM12.6667 8.66667H14V7.33333H12.6667V8.66667ZM12.6667 6H14V4.66667H12.6667V6ZM12.6667 11.3333C13.4 11.3333 14 10.7333 14 10H12.6667V11.3333ZM2.66667 4.66667C2.3 4.66667 2 4.96667 2 5.33333V12.6667C2 13.4 2.6 14 3.33333 14H10.6667C11.0333 14 11.3333 13.7 11.3333 13.3333C11.3333 12.9667 11.0333 12.6667 10.6667 12.6667H4C3.63333 12.6667 3.33333 12.3667 3.33333 12V5.33333C3.33333 4.96667 3.03333 4.66667 2.66667 4.66667ZM10 3.33333H11.3333V2H10V3.33333ZM10 11.3333H11.3333V10H10V11.3333Z\" /></svg>');\n --vuu-svg-pin-right: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8.66667 6.14V7.33333H2.66667C2.3 7.33333 2 7.63333 2 8C2 8.36666 2.3 8.66666 2.66667 8.66666H8.66667V9.86C8.66667 10.16 9.02667 10.3067 9.23333 10.0933L11.0933 8.23333C11.2267 8.1 11.2267 7.89333 11.0933 7.76L9.23333 5.9C9.02667 5.69333 8.66667 5.84 8.66667 6.14ZM13.3333 13.3333C13.7 13.3333 14 13.0333 14 12.6667V3.33333C14 2.96666 13.7 2.66666 13.3333 2.66666C12.9667 2.66666 12.6667 2.96666 12.6667 3.33333V12.6667C12.6667 13.0333 12.9667 13.3333 13.3333 13.3333Z\"/></svg>');\n --vuuDropdown-height: 24px;\n --vuuDropdown-width: 100%;\n \n display: flex;\n flex-direction: column;\n gap: 24px;\n height: 100%;\n}\n\n.vuuColumnSettingsPanel-header {\n font-size: 14px;\n font-weight: 600;\n padding: 24px 2px 0 2px;\n}\n\n\n.vuuColumnSettingsPanel-buttonBar {\n align-items: center;\n display: flex;\n justify-content: space-between;\n margin-top: auto;\n}\n\n.vuuColumnSettingsPanel-buttonBar[data-align=\"right\"]{\n gap: 6px;\n justify-content: flex-end;\n}\n\n.vuuColumnSettingsPanel-buttonNavPrev {\n --vuu-icon-left: 6px;\n padding-left: 24px\n}\n\n.vuuColumnSettingsPanel-buttonNavNext {\n --vuu-icon-left: calc(100% - 18px);\n padding-right: 24px\n}\n\n\n\n[data-icon='align-left'] {\n --vuu-icon-svg: var(--vuu-svg-align-left);\n }\n\n [data-icon='align-right'] {\n --vuu-icon-svg: var(--vuu-svg-align-right);\n }\n\n [data-icon='pin-left'] {\n --vuu-icon-svg: var(--vuu-svg-pin-left);\n }\n [data-icon='pin-float'] {\n --vuu-icon-svg: var(--vuu-svg-pin-float);\n }\n [data-icon='pin-right'] {\n --vuu-icon-svg: var(--vuu-svg-pin-right);\n }\n\n .vuuColumnSettingsPanel-editing .vuuColumnNameLabel-edit {\n display: none;\n }\n \n\n\n \n \n \n \n \n";
2
2
 
3
3
  export { colunSettingsPanelCss as default };
4
4
  //# sourceMappingURL=ColumnSettingsPanel.css.js.map
@@ -0,0 +1,159 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { FormField, FormFieldLabel, ToggleButtonGroup, ToggleButton, Button } from '@salt-ds/core';
3
+ import { useComponentCssInjection } from '@salt-ds/styles';
4
+ import { useWindow } from '@salt-ds/window';
5
+ import { VuuInput, Icon } from '@vuu-ui/vuu-ui-controls';
6
+ import { getDefaultAlignment, isCalculatedColumn, getCalculatedColumnDetails } from '@vuu-ui/vuu-utils';
7
+ import { ColumnFormattingPanel } from '../column-formatting-settings/ColumnFormattingPanel.js';
8
+ import 'react';
9
+ import { ColumnNameLabel } from './ColumnNameLabel.js';
10
+ import { useColumnSettings } from './useColumnSettings.js';
11
+ import colunSettingsPanelCss from './ColumnSettingsPanel.css.js';
12
+
13
+ const classBase = "vuuColumnSettingsPanel";
14
+ const getColumnLabel = (column) => {
15
+ const { name, label } = column;
16
+ if (isCalculatedColumn(name)) {
17
+ return label ?? getCalculatedColumnDetails(column).name;
18
+ } else {
19
+ return label ?? name;
20
+ }
21
+ };
22
+ const ColumnSettingsPanel = ({
23
+ column: columnProp,
24
+ columnModel,
25
+ onClickEditCalculatedColumn,
26
+ onConfigChange
27
+ }) => {
28
+ const targetWindow = useWindow();
29
+ useComponentCssInjection({
30
+ testId: "vuu-column-settings-panel",
31
+ css: colunSettingsPanelCss,
32
+ window: targetWindow
33
+ });
34
+ const isNewCalculatedColumn = columnProp.name === "::";
35
+ const {
36
+ availableRenderers,
37
+ column,
38
+ navigateNextColumn,
39
+ navigatePrevColumn,
40
+ onChange,
41
+ onChangeFormatting,
42
+ onChangeRendering,
43
+ onChangeToggleButton,
44
+ onChangeType,
45
+ onInputCommit
46
+ } = useColumnSettings({
47
+ column: columnProp,
48
+ columnModel,
49
+ onConfigChange
50
+ });
51
+ const {
52
+ serverDataType,
53
+ align = getDefaultAlignment(serverDataType),
54
+ pin,
55
+ width = ""
56
+ } = column;
57
+ return /* @__PURE__ */ jsxs("div", { className: classBase, children: [
58
+ /* @__PURE__ */ jsx("div", { className: `${classBase}-header`, children: /* @__PURE__ */ jsx(
59
+ ColumnNameLabel,
60
+ {
61
+ column,
62
+ onClick: onClickEditCalculatedColumn
63
+ }
64
+ ) }),
65
+ /* @__PURE__ */ jsxs(FormField, { "data-field": "column-label", children: [
66
+ /* @__PURE__ */ jsx(FormFieldLabel, { children: "Column Label" }),
67
+ /* @__PURE__ */ jsx(
68
+ VuuInput,
69
+ {
70
+ bordered: true,
71
+ className: "vuuInput",
72
+ "data-embedded": true,
73
+ onChange,
74
+ onCommit: onInputCommit,
75
+ value: getColumnLabel(column)
76
+ }
77
+ )
78
+ ] }),
79
+ /* @__PURE__ */ jsxs(FormField, { "data-field": "column-width", children: [
80
+ /* @__PURE__ */ jsx(FormFieldLabel, { children: "Column Width" }),
81
+ /* @__PURE__ */ jsx(
82
+ VuuInput,
83
+ {
84
+ bordered: true,
85
+ className: "vuuInput",
86
+ "data-embedded": true,
87
+ onChange,
88
+ value: width,
89
+ onCommit: onInputCommit
90
+ }
91
+ )
92
+ ] }),
93
+ /* @__PURE__ */ jsxs(FormField, { "data-field": "column-alignment", children: [
94
+ /* @__PURE__ */ jsx(FormFieldLabel, { children: "Alignment" }),
95
+ /* @__PURE__ */ jsxs(ToggleButtonGroup, { onChange: onChangeToggleButton, value: align, children: [
96
+ /* @__PURE__ */ jsx(ToggleButton, { value: "left", children: /* @__PURE__ */ jsx(Icon, { name: "align-left", size: 16 }) }),
97
+ /* @__PURE__ */ jsx(ToggleButton, { value: "right", children: /* @__PURE__ */ jsx(Icon, { name: "align-right", size: 16 }) })
98
+ ] })
99
+ ] }),
100
+ /* @__PURE__ */ jsxs(FormField, { "data-field": "column-pin", children: [
101
+ /* @__PURE__ */ jsx(FormFieldLabel, { children: "Pin Column" }),
102
+ /* @__PURE__ */ jsxs(
103
+ ToggleButtonGroup,
104
+ {
105
+ onChange: onChangeToggleButton,
106
+ value: pin || "false",
107
+ children: [
108
+ /* @__PURE__ */ jsx(ToggleButton, { value: "left", children: /* @__PURE__ */ jsx(Icon, { name: "pin-left", size: 16 }) }),
109
+ /* @__PURE__ */ jsx(ToggleButton, { value: "floating", children: /* @__PURE__ */ jsx(Icon, { name: "pin-float", size: 16 }) }),
110
+ /* @__PURE__ */ jsx(ToggleButton, { value: "right", children: /* @__PURE__ */ jsx(Icon, { name: "pin-right", size: 16 }) }),
111
+ /* @__PURE__ */ jsx(ToggleButton, { value: "", children: /* @__PURE__ */ jsx(Icon, { name: "cross-circle", size: 16 }) })
112
+ ]
113
+ }
114
+ )
115
+ ] }),
116
+ /* @__PURE__ */ jsx(
117
+ ColumnFormattingPanel,
118
+ {
119
+ availableRenderers,
120
+ column,
121
+ onChangeFormatting,
122
+ onChangeRendering,
123
+ onChangeColumnType: onChangeType
124
+ }
125
+ ),
126
+ /* @__PURE__ */ jsxs(
127
+ "div",
128
+ {
129
+ className: `${classBase}-buttonBar`,
130
+ "data-align": isNewCalculatedColumn ? "right" : void 0,
131
+ children: [
132
+ /* @__PURE__ */ jsx(
133
+ Button,
134
+ {
135
+ className: `${classBase}-buttonNavPrev`,
136
+ variant: "secondary",
137
+ "data-icon": "arrow-left",
138
+ onClick: navigatePrevColumn,
139
+ children: "PREVIOUS"
140
+ }
141
+ ),
142
+ /* @__PURE__ */ jsx(
143
+ Button,
144
+ {
145
+ className: `${classBase}-buttonNavNext`,
146
+ variant: "secondary",
147
+ "data-icon": "arrow-right",
148
+ onClick: navigateNextColumn,
149
+ children: "NEXT"
150
+ }
151
+ )
152
+ ]
153
+ }
154
+ )
155
+ ] });
156
+ };
157
+
158
+ export { ColumnSettingsPanel };
159
+ //# sourceMappingURL=ColumnSettingsPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnSettingsPanel.js","sources":["../../../../packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.tsx"],"sourcesContent":["import {\n Button,\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 { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { Icon, VuuInput } from \"@vuu-ui/vuu-ui-controls\";\nimport {\n getCalculatedColumnDetails,\n getDefaultAlignment,\n isCalculatedColumn,\n} from \"@vuu-ui/vuu-utils\";\nimport { ColumnFormattingPanel } from \"../column-formatting-settings\";\nimport { ColumnNameLabel } from \"./ColumnNameLabel\";\nimport { ColumnSettingsProps, useColumnSettings } from \"./useColumnSettings\";\n\nimport colunSettingsPanelCss from \"./ColumnSettingsPanel.css\";\n\nconst classBase = \"vuuColumnSettingsPanel\";\n\nconst getColumnLabel = (column: ColumnDescriptor) => {\n const { name, label } = column;\n if (isCalculatedColumn(name)) {\n return label ?? getCalculatedColumnDetails(column).name;\n } else {\n return label ?? name;\n }\n};\n\nexport interface ColumnSettinsPanelProps extends ColumnSettingsProps {\n onClickEditCalculatedColumn?: () => void;\n}\n\nexport const ColumnSettingsPanel = ({\n column: columnProp,\n columnModel,\n onClickEditCalculatedColumn,\n onConfigChange,\n}: ColumnSettinsPanelProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-column-settings-panel\",\n css: colunSettingsPanelCss,\n window: targetWindow,\n });\n\n const isNewCalculatedColumn = columnProp.name === \"::\";\n const {\n availableRenderers,\n column,\n navigateNextColumn,\n navigatePrevColumn,\n onChange,\n onChangeFormatting,\n onChangeRendering,\n onChangeToggleButton,\n onChangeType,\n onInputCommit,\n } = useColumnSettings({\n column: columnProp,\n columnModel,\n onConfigChange,\n });\n\n const {\n serverDataType,\n align = getDefaultAlignment(serverDataType),\n pin,\n width = \"\",\n } = column;\n\n return (\n <div className={classBase}>\n <div className={`${classBase}-header`}>\n <ColumnNameLabel\n column={column}\n onClick={onClickEditCalculatedColumn}\n />\n </div>\n\n <FormField data-field=\"column-label\">\n <FormFieldLabel>Column Label</FormFieldLabel>\n <VuuInput\n bordered\n className=\"vuuInput\"\n data-embedded\n onChange={onChange}\n onCommit={onInputCommit}\n value={getColumnLabel(column)}\n />\n </FormField>\n\n <FormField data-field=\"column-width\">\n <FormFieldLabel>Column Width</FormFieldLabel>\n <VuuInput\n bordered\n className=\"vuuInput\"\n data-embedded\n onChange={onChange}\n value={width}\n onCommit={onInputCommit}\n />\n </FormField>\n <FormField data-field=\"column-alignment\">\n <FormFieldLabel>Alignment</FormFieldLabel>\n <ToggleButtonGroup onChange={onChangeToggleButton} value={align}>\n <ToggleButton value=\"left\">\n <Icon name=\"align-left\" size={16} />\n </ToggleButton>\n <ToggleButton value=\"right\">\n <Icon name=\"align-right\" size={16} />\n </ToggleButton>\n </ToggleButtonGroup>\n </FormField>\n <FormField data-field=\"column-pin\">\n <FormFieldLabel>Pin Column</FormFieldLabel>\n <ToggleButtonGroup\n onChange={onChangeToggleButton}\n value={pin || \"false\"}\n >\n <ToggleButton value=\"left\">\n <Icon name=\"pin-left\" size={16} />\n </ToggleButton>\n <ToggleButton value=\"floating\">\n <Icon name=\"pin-float\" size={16} />\n </ToggleButton>\n <ToggleButton value=\"right\">\n <Icon name=\"pin-right\" size={16} />\n </ToggleButton>\n <ToggleButton value=\"\">\n <Icon name=\"cross-circle\" size={16} />\n </ToggleButton>\n </ToggleButtonGroup>\n </FormField>\n <ColumnFormattingPanel\n availableRenderers={availableRenderers}\n column={column}\n onChangeFormatting={onChangeFormatting}\n onChangeRendering={onChangeRendering}\n onChangeColumnType={onChangeType}\n />\n\n <div\n className={`${classBase}-buttonBar`}\n data-align={isNewCalculatedColumn ? \"right\" : undefined}\n >\n <Button\n className={`${classBase}-buttonNavPrev`}\n variant=\"secondary\"\n data-icon=\"arrow-left\"\n onClick={navigatePrevColumn}\n >\n PREVIOUS\n </Button>\n <Button\n className={`${classBase}-buttonNavNext`}\n variant=\"secondary\"\n data-icon=\"arrow-right\"\n onClick={navigateNextColumn}\n >\n NEXT\n </Button>\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { queryClosest, getFieldName, isValidPinLocation, isValidColumnAlignment, setCalculatedColumnName, updateColumnFormatting, updateColumnType, updateColumnRenderProps, getRegisteredCellRenderers } from '@vuu-ui/vuu-utils';
2
- import { useState, useRef, useCallback, useEffect, useMemo } from 'react';
1
+ import { queryClosest, getFieldName, isValidPinLocation, isValidColumnAlignment, setCalculatedColumnName, updateColumnRenderProps, updateColumnFormatting, updateColumnType, getServerDataType, getRegisteredCellRenderers } from '@vuu-ui/vuu-utils';
2
+ import { useState, useEffect, useMemo, useCallback } from 'react';
3
3
 
4
4
  const integerCellRenderers = [
5
5
  {
@@ -31,7 +31,8 @@ const stringCellRenderers = [
31
31
  ];
32
32
  const booleanCellRenderers = [];
33
33
  const getAvailableCellRenderers = (column) => {
34
- switch (column.serverDataType) {
34
+ const serverDataType = getServerDataType(column);
35
+ switch (serverDataType) {
35
36
  case "char":
36
37
  case "string":
37
38
  return stringCellRenderers.concat(getRegisteredCellRenderers("string"));
@@ -55,49 +56,19 @@ const getAvailableCellRenderers = (column) => {
55
56
  return stringCellRenderers;
56
57
  }
57
58
  };
58
- const getColumn = (columns, column) => {
59
- if (column.name === "::") {
60
- return column;
61
- } else {
62
- const col = columns.find((col2) => col2.name === column.name);
63
- if (col) {
64
- return col;
65
- }
66
- throw Error(`columns does not contain column ${name}`);
67
- }
68
- };
69
- const replaceColumn = (tableConfig, column) => ({
70
- ...tableConfig,
71
- columns: tableConfig.columns.map(
72
- (col) => col.name === column.name ? column : col
73
- )
74
- });
75
59
  const useColumnSettings = ({
76
60
  column: columnProp,
77
- onCancelCreateColumn,
78
- onConfigChange,
79
- onCreateCalculatedColumn,
80
- tableConfig
61
+ columnModel
81
62
  }) => {
82
63
  const [column, setColumn] = useState(
83
- getColumn(tableConfig.columns, columnProp)
64
+ columnModel.getColumn(columnProp.name)
84
65
  );
85
- const columnRef = useRef(column);
86
- const [inEditMode, setEditMode] = useState(column.name === "::");
87
- const handleEditCalculatedcolumn = useCallback(() => {
88
- columnRef.current = column;
89
- setEditMode(true);
90
- }, [column]);
91
66
  useEffect(() => {
92
67
  setColumn(columnProp);
93
- setEditMode(columnProp.name === "::");
94
68
  }, [columnProp]);
95
69
  const availableRenderers = useMemo(() => {
96
70
  return getAvailableCellRenderers(column);
97
71
  }, [column]);
98
- const handleInputCommit = useCallback(() => {
99
- onConfigChange(replaceColumn(tableConfig, column));
100
- }, [column, onConfigChange, tableConfig]);
101
72
  const handleChangeToggleButton = useCallback(
102
73
  (evt) => {
103
74
  const button = queryClosest(evt.target, "button");
@@ -109,10 +80,10 @@ const useColumnSettings = ({
109
80
  if (isValidColumnAlignment(value)) {
110
81
  const newColumn = {
111
82
  ...column,
112
- align: value || void 0
83
+ align: value
113
84
  };
114
85
  setColumn(newColumn);
115
- onConfigChange(replaceColumn(tableConfig, newColumn));
86
+ columnModel.updateColumn(newColumn);
116
87
  }
117
88
  break;
118
89
  case "column-pin":
@@ -122,13 +93,13 @@ const useColumnSettings = ({
122
93
  pin: value || void 0
123
94
  };
124
95
  setColumn(newColumn);
125
- onConfigChange(replaceColumn(tableConfig, newColumn));
96
+ columnModel.updateColumn(newColumn);
126
97
  break;
127
98
  }
128
99
  }
129
100
  }
130
101
  },
131
- [column, onConfigChange, tableConfig]
102
+ [column, columnModel]
132
103
  );
133
104
  const handleChange = useCallback((evt) => {
134
105
  const input = evt.target;
@@ -142,28 +113,51 @@ const useColumnSettings = ({
142
113
  setColumn((state) => setCalculatedColumnName(state, value));
143
114
  break;
144
115
  case "column-width":
145
- setColumn((state) => ({ ...state, width: parseInt(value) }));
116
+ {
117
+ const numericValue = parseInt(value, 10);
118
+ if (isNaN(numericValue)) {
119
+ setColumn((state) => ({ ...state, width: void 0 }));
120
+ } else {
121
+ setColumn((state) => ({ ...state, width: numericValue }));
122
+ }
123
+ }
146
124
  break;
147
125
  }
148
126
  }, []);
149
- const handleChangeCalculatedColumnName = useCallback((name2) => {
150
- setColumn((state) => ({ ...state, name: name2 }));
127
+ const handleInputCommit = useCallback(() => {
128
+ columnModel.updateColumn(column);
129
+ }, [column, columnModel]);
130
+ const handleChangeCalculatedColumnName = useCallback((name) => {
131
+ setColumn((state) => ({ ...state, name }));
151
132
  }, []);
133
+ const handleChangeRendering = useCallback(
134
+ (renderProps) => {
135
+ if (renderProps) {
136
+ const newColumn = updateColumnRenderProps(
137
+ column,
138
+ renderProps
139
+ );
140
+ setColumn(newColumn);
141
+ columnModel.updateColumn(newColumn);
142
+ }
143
+ },
144
+ [column, columnModel]
145
+ );
152
146
  const handleChangeFormatting = useCallback(
153
147
  (formatting) => {
154
148
  const newColumn = updateColumnFormatting(column, formatting);
155
149
  setColumn(newColumn);
156
- onConfigChange(replaceColumn(tableConfig, newColumn));
150
+ columnModel.updateColumn(newColumn);
157
151
  },
158
- [column, onConfigChange, tableConfig]
152
+ [column, columnModel]
159
153
  );
160
154
  const handleChangeType = useCallback(
161
155
  (type) => {
162
156
  const updatedColumn = updateColumnType(column, type);
163
157
  setColumn(updatedColumn);
164
- onConfigChange(replaceColumn(tableConfig, updatedColumn));
158
+ columnModel.updateColumn(updatedColumn);
165
159
  },
166
- [column, onConfigChange, tableConfig]
160
+ [column, columnModel]
167
161
  );
168
162
  const handleChangeServerDataType = useCallback(
169
163
  (serverDataType) => {
@@ -171,29 +165,15 @@ const useColumnSettings = ({
171
165
  },
172
166
  []
173
167
  );
174
- const handleChangeRendering = useCallback(
175
- (renderProps) => {
176
- if (renderProps) {
177
- const newColumn = updateColumnRenderProps(
178
- column,
179
- renderProps
180
- );
181
- setColumn(newColumn);
182
- onConfigChange(replaceColumn(tableConfig, newColumn));
183
- }
184
- },
185
- [column, onConfigChange, tableConfig]
186
- );
187
168
  const navigateColumn = useCallback(
188
169
  ({ moveBy }) => {
189
- const { columns } = tableConfig;
190
- const index = columns.indexOf(column) + moveBy;
191
- const newColumn = columns[index];
170
+ const index = columnModel.selectedColumns.indexOf(column) + moveBy;
171
+ const newColumn = columnModel.selectedColumns[index];
192
172
  if (newColumn) {
193
173
  setColumn(newColumn);
194
174
  }
195
175
  },
196
- [column, tableConfig]
176
+ [column, columnModel]
197
177
  );
198
178
  const navigateNextColumn = useCallback(() => {
199
179
  navigateColumn({ moveBy: 1 });
@@ -201,26 +181,11 @@ const useColumnSettings = ({
201
181
  const navigatePrevColumn = useCallback(() => {
202
182
  navigateColumn({ moveBy: -1 });
203
183
  }, [navigateColumn]);
204
- const handleSaveCalculatedColumn = useCallback(() => {
205
- onCreateCalculatedColumn(column);
206
- }, [column, onCreateCalculatedColumn]);
207
- const handleCancelEdit = useCallback(() => {
208
- if (columnProp.name === "::") {
209
- onCancelCreateColumn();
210
- } else {
211
- if (columnRef.current !== void 0 && columnRef.current !== column) {
212
- setColumn(columnRef.current);
213
- }
214
- setEditMode(false);
215
- }
216
- }, [column, columnProp.name, onCancelCreateColumn]);
217
184
  return {
218
185
  availableRenderers,
219
- editCalculatedColumn: inEditMode,
220
186
  column,
221
187
  navigateNextColumn,
222
188
  navigatePrevColumn,
223
- onCancel: handleCancelEdit,
224
189
  onChange: handleChange,
225
190
  onChangeCalculatedColumnName: handleChangeCalculatedColumnName,
226
191
  onChangeFormatting: handleChangeFormatting,
@@ -228,9 +193,7 @@ const useColumnSettings = ({
228
193
  onChangeServerDataType: handleChangeServerDataType,
229
194
  onChangeToggleButton: handleChangeToggleButton,
230
195
  onChangeType: handleChangeType,
231
- onEditCalculatedColumn: handleEditCalculatedcolumn,
232
- onInputCommit: handleInputCommit,
233
- onSave: handleSaveCalculatedColumn
196
+ onInputCommit: handleInputCommit
234
197
  };
235
198
  };
236
199
 
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnSettings.js","sources":["../../../../packages/vuu-table-extras/src/column-settings-panel/useColumnSettings.ts"],"sourcesContent":["import {\n ColumnDescriptor,\n TableConfig,\n ColumnTypeFormatting,\n} from \"@vuu-ui/vuu-table-types\";\n\nimport {\n CellRendererDescriptor,\n ColumnRenderPropsChangeHandler,\n getFieldName,\n getRegisteredCellRenderers,\n isValidColumnAlignment,\n isValidPinLocation,\n setCalculatedColumnName,\n updateColumnRenderProps,\n updateColumnFormatting,\n updateColumnType,\n queryClosest,\n isCalculatedColumn,\n getCalculatedColumnDetails,\n getServerDataType,\n} from \"@vuu-ui/vuu-utils\";\nimport { VuuColumnDataType, VuuTable } from \"@vuu-ui/vuu-protocol-types\";\nimport {\n FormEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { DataValueTypeSimple } from \"@vuu-ui/vuu-data-types\";\nimport { ColumnModel } from \"../column-picker/ColumnModel\";\n\n/**\n * Describes the props for a Column Configuration Editor, for which\n * an implementation is provided in vuu-table-extras\n */\nexport interface ColumnSettingsProps {\n column: ColumnDescriptor;\n columnModel: ColumnModel;\n onConfigChange?: (config: TableConfig) => void;\n vuuTable?: VuuTable;\n}\n\nconst integerCellRenderers: CellRendererDescriptor[] = [\n {\n description: \"Default formatter for columns with data type integer\",\n label: \"Default Renderer (int, long)\",\n name: \"default-int\",\n },\n];\nconst doubleCellRenderers: CellRendererDescriptor[] = [\n {\n description: \"Default formatter for columns with data type double\",\n label: \"Default Renderer (double)\",\n name: \"default-double\",\n },\n];\nconst decimalCellRenderers: CellRendererDescriptor[] = [\n {\n description:\n \"Default formatter for columns with data type decimal (2,4,6 or 8)\",\n label: \"Default Renderer (decimal)\",\n name: \"default-decimal\",\n },\n];\n\nconst stringCellRenderers: CellRendererDescriptor[] = [\n {\n description: \"Default formatter for columns with data type string\",\n label: \"Default Renderer (string)\",\n name: \"default-string\",\n },\n];\n\nconst booleanCellRenderers: CellRendererDescriptor[] = [];\n\nconst getAvailableCellRenderers = (\n column: ColumnDescriptor,\n): CellRendererDescriptor[] => {\n const serverDataType = getServerDataType(column);\n switch (serverDataType) {\n case \"char\":\n case \"string\":\n return stringCellRenderers.concat(getRegisteredCellRenderers(\"string\"));\n case \"int\":\n case \"long\":\n return integerCellRenderers.concat(getRegisteredCellRenderers(\"int\"));\n case \"double\":\n return doubleCellRenderers.concat(\n getRegisteredCellRenderers(column.serverDataType),\n );\n case \"scaleddecimal2\":\n case \"scaleddecimal4\":\n case \"scaleddecimal6\":\n case \"scaleddecimal8\":\n return decimalCellRenderers.concat(\n getRegisteredCellRenderers(column.serverDataType),\n );\n case \"boolean\":\n return booleanCellRenderers.concat(getRegisteredCellRenderers(\"boolean\"));\n default:\n return stringCellRenderers;\n }\n};\n\nexport const useColumnSettings = ({\n column: columnProp,\n columnModel,\n}: Omit<ColumnSettingsProps, \"vuuTable\">) => {\n const [column, setColumn] = useState<ColumnDescriptor>(\n columnModel.getColumn(columnProp.name),\n );\n\n useEffect(() => {\n setColumn(columnProp);\n }, [columnProp]);\n\n const availableRenderers = useMemo(() => {\n return getAvailableCellRenderers(column);\n }, [column]);\n\n const handleChangeToggleButton = useCallback<FormEventHandler>(\n (evt) => {\n const button = queryClosest<HTMLButtonElement>(evt.target, \"button\");\n if (button) {\n const fieldName = getFieldName(button);\n const { value } = button;\n switch (fieldName) {\n case \"column-alignment\":\n if (isValidColumnAlignment(value)) {\n const newColumn: ColumnDescriptor = {\n ...column,\n align: value,\n };\n setColumn(newColumn);\n columnModel.updateColumn(newColumn);\n }\n break;\n case \"column-pin\":\n if (isValidPinLocation(value)) {\n const newColumn: ColumnDescriptor = {\n ...column,\n pin: value || undefined,\n };\n setColumn(newColumn);\n columnModel.updateColumn(newColumn);\n\n break;\n }\n }\n }\n },\n [column, columnModel],\n );\n\n const handleChange = useCallback<FormEventHandler>((evt) => {\n const input = evt.target as HTMLInputElement;\n const fieldName = getFieldName(input);\n const { value } = input;\n switch (fieldName) {\n case \"column-label\":\n setColumn((state) => ({ ...state, label: value }));\n break;\n case \"column-name\":\n setColumn((state) => setCalculatedColumnName(state, value));\n break;\n case \"column-width\":\n {\n const numericValue = parseInt(value, 10);\n if (isNaN(numericValue)) {\n setColumn((state) => ({ ...state, width: undefined }));\n } else {\n setColumn((state) => ({ ...state, width: numericValue }));\n }\n }\n break;\n }\n }, []);\n\n const handleInputCommit = useCallback(() => {\n columnModel.updateColumn(column);\n }, [column, columnModel]);\n\n const handleChangeCalculatedColumnName = useCallback((name: string) => {\n setColumn((state) => ({ ...state, name }));\n }, []);\n\n const handleChangeRendering = useCallback<ColumnRenderPropsChangeHandler>(\n (renderProps) => {\n if (renderProps) {\n const newColumn: ColumnDescriptor = updateColumnRenderProps(\n column,\n renderProps,\n );\n setColumn(newColumn);\n columnModel.updateColumn(newColumn);\n }\n },\n [column, columnModel],\n );\n\n const handleChangeFormatting = useCallback(\n (formatting: ColumnTypeFormatting) => {\n const newColumn = updateColumnFormatting(column, formatting);\n setColumn(newColumn);\n columnModel.updateColumn(newColumn);\n },\n [column, columnModel],\n );\n\n const handleChangeType = useCallback(\n (type: DataValueTypeSimple) => {\n const updatedColumn = updateColumnType(column, type);\n setColumn(updatedColumn);\n columnModel.updateColumn(updatedColumn);\n },\n [column, columnModel],\n );\n\n // Changing the server data type applies only to calculated columns\n const handleChangeServerDataType = useCallback(\n (serverDataType: VuuColumnDataType) => {\n setColumn((col) => ({ ...col, serverDataType }));\n },\n [],\n );\n\n const navigateColumn = useCallback(\n ({ moveBy }: { moveBy: number }) => {\n const index = columnModel.selectedColumns.indexOf(column) + moveBy;\n const newColumn = columnModel.selectedColumns[index];\n if (newColumn) {\n setColumn(newColumn);\n }\n },\n [column, columnModel],\n );\n const navigateNextColumn = useCallback(() => {\n navigateColumn({ moveBy: 1 });\n }, [navigateColumn]);\n\n const navigatePrevColumn = useCallback(() => {\n navigateColumn({ moveBy: -1 });\n }, [navigateColumn]);\n\n return {\n availableRenderers,\n column,\n navigateNextColumn,\n navigatePrevColumn,\n onChange: handleChange,\n onChangeCalculatedColumnName: handleChangeCalculatedColumnName,\n onChangeFormatting: handleChangeFormatting,\n onChangeRendering: handleChangeRendering,\n onChangeServerDataType: handleChangeServerDataType,\n onChangeToggleButton: handleChangeToggleButton,\n onChangeType: handleChangeType,\n onInputCommit: handleInputCommit,\n };\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { useRef, useCallback } from 'react';
2
+ import { useContextPanel } from '@vuu-ui/vuu-ui-controls';
3
+ import { defaultTableSettingsPermissions } from '../table-settings-panel/TableSettingsPanel.js';
4
+
5
+ const columnSettingsFromColumnMenuPermissions = (settings) => typeof settings === void 0 ? true : typeof settings === "boolean" ? settings : settings?.allowColumnSettings ?? true;
6
+ const tableSettingsFromColumnMenuPermissions = (settings) => typeof settings === void 0 ? defaultTableSettingsPermissions : typeof settings === "boolean" ? settings : settings?.allowTableSettings ?? defaultTableSettingsPermissions;
7
+ const useTableAndColumnSettings = ({
8
+ tableConfig
9
+ }) => {
10
+ const showTableSettingsRef = useRef(void 0);
11
+ const showContextPanel = useContextPanel();
12
+ const handleCancelCreateColumn = useCallback(() => {
13
+ requestAnimationFrame(() => {
14
+ showTableSettingsRef.current?.();
15
+ });
16
+ }, []);
17
+ const showColumnSettingsPanel = useCallback(
18
+ (action) => {
19
+ },
20
+ [
21
+ handleCancelCreateColumn,
22
+ // handleCreateCalculatedColumn,
23
+ showContextPanel,
24
+ tableConfig
25
+ ]
26
+ );
27
+ return {
28
+ showColumnSettingsPanel
29
+ };
30
+ };
31
+
32
+ export { columnSettingsFromColumnMenuPermissions, tableSettingsFromColumnMenuPermissions, useTableAndColumnSettings };
33
+ //# sourceMappingURL=useTableAndColumnSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTableAndColumnSettings.js","sources":["../../../../packages/vuu-table-extras/src/column-settings-panel/useTableAndColumnSettings.tsx"],"sourcesContent":["import { DataSourceConfig } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnMenuPermissions,\n SettingsPermissions,\n TableConfig,\n} from \"@vuu-ui/vuu-table-types\";\n// import { getCalculatedColumnDetails } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useRef } from \"react\";\nimport { DisplayColumnSettingsAction } from \"@vuu-ui/vuu-table-extras/src/column-menu/column-action-types\";\nimport { useContextPanel } from \"@vuu-ui/vuu-ui-controls\";\nimport { defaultTableSettingsPermissions } from \"../table-settings-panel/TableSettingsPanel\";\n\nexport interface TableAndColumnSettingsHookProps {\n // onCreateCalculatedColumn: (column: ColumnDescriptor) => void;\n onDataSourceConfigChange: (dataSourceConfig: DataSourceConfig) => void;\n settingsPermissions?: SettingsPermissions;\n tableConfig: TableConfig;\n}\n\nexport const columnSettingsFromColumnMenuPermissions = (\n settings?: boolean | ColumnMenuPermissions,\n) =>\n typeof settings === undefined\n ? true\n : typeof settings === \"boolean\"\n ? settings\n : (settings?.allowColumnSettings ?? true);\nexport const tableSettingsFromColumnMenuPermissions = (\n settings?: boolean | ColumnMenuPermissions,\n) =>\n typeof settings === undefined\n ? defaultTableSettingsPermissions\n : typeof settings === \"boolean\"\n ? settings\n : (settings?.allowTableSettings ?? defaultTableSettingsPermissions);\n\nexport const useTableAndColumnSettings = ({\n tableConfig,\n}: TableAndColumnSettingsHookProps) => {\n const showTableSettingsRef = useRef<() => void>(undefined);\n\n const showContextPanel = useContextPanel();\n\n const handleCancelCreateColumn = useCallback(() => {\n requestAnimationFrame(() => {\n showTableSettingsRef.current?.();\n });\n }, []);\n\n // const handleCreateCalculatedColumn = useCallback(\n // (column: ColumnDescriptor) => {\n // const { serverDataType } = getCalculatedColumnDetails(column);\n // if (serverDataType) {\n // const newAvailableColumns = availableColumns.concat({\n // name: column.name,\n // serverDataType,\n // });\n // setAvailableColumns(newAvailableColumns);\n // onAvailableColumnsChange?.(newAvailableColumns);\n // requestAnimationFrame(() => {\n // showTableSettingsRef.current?.();\n // });\n // onCreateCalculatedColumn(column);\n // } else {\n // throw Error(\n // \"Cannot create calculatec columns without valis serverDataType\",\n // );\n // }\n // },\n // [availableColumns, onAvailableColumnsChange, onCreateCalculatedColumn],\n // );\n\n const showColumnSettingsPanel = useCallback(\n (action: DisplayColumnSettingsAction) => {\n // showContextPanel(\"ColumnSettings\", \"Column Settings\", {\n // column: action.column,\n // onCancelCreateColumn: handleCancelCreateColumn,\n // onConfigChange,\n // // onCreateCalculatedColumn: handleCreateCalculatedColumn,\n // tableConfig,\n // vuuTable: action.vuuTable,\n // } as ColumnSettingsProps);\n },\n [\n handleCancelCreateColumn,\n // handleCreateCalculatedColumn,\n showContextPanel,\n tableConfig,\n ],\n );\n\n // const handleAddCalculatedColumn = useCallback(() => {\n // showColumnSettingsPanel({\n // column: {\n // name: \"::\",\n // serverDataType: \"string\",\n // },\n // type: \"column-settings\",\n // vuuTable: { module: \"SIMUL\", table: \"instruments\" },\n // });\n // }, [showColumnSettingsPanel]);\n\n // const handleNavigateToColumn = useCallback(\n // (columnName: string) => {\n // const column = tableConfig.columns.find((c) => c.name === columnName);\n // if (column) {\n // showColumnSettingsPanel({\n // type: \"column-settings\",\n // column,\n // //TODO where do we get this from\n // vuuTable: { module: \"SIMUL\", table: \"instruments\" },\n // });\n // }\n // },\n // [showColumnSettingsPanel, tableConfig.columns],\n // );\n\n return {\n showColumnSettingsPanel,\n };\n};\n"],"names":[],"mappings":";;;;AAmBO,MAAM,uCAA0C,GAAA,CACrD,QAEA,KAAA,OAAO,QAAa,KAAA,KAAA,CAAA,GAChB,IACA,GAAA,OAAO,QAAa,KAAA,SAAA,GAClB,QACC,GAAA,QAAA,EAAU,mBAAuB,IAAA;AACnC,MAAM,sCAAyC,GAAA,CACpD,QAEA,KAAA,OAAO,QAAa,KAAA,KAAA,CAAA,GAChB,+BACA,GAAA,OAAO,QAAa,KAAA,SAAA,GAClB,QACC,GAAA,QAAA,EAAU,kBAAsB,IAAA;AAElC,MAAM,4BAA4B,CAAC;AAAA,EACxC;AACF,CAAuC,KAAA;AACrC,EAAM,MAAA,oBAAA,GAAuB,OAAmB,KAAS,CAAA,CAAA;AAEzD,EAAA,MAAM,mBAAmB,eAAgB,EAAA;AAEzC,EAAM,MAAA,wBAAA,GAA2B,YAAY,MAAM;AACjD,IAAA,qBAAA,CAAsB,MAAM;AAC1B,MAAA,oBAAA,CAAqB,OAAU,IAAA;AAAA,KAChC,CAAA;AAAA,GACH,EAAG,EAAE,CAAA;AAyBL,EAAA,MAAM,uBAA0B,GAAA,WAAA;AAAA,IAC9B,CAAC,MAAwC,KAAA;AAAA,KASzC;AAAA,IACA;AAAA,MACE,wBAAA;AAAA;AAAA,MAEA,gBAAA;AAAA,MACA;AAAA;AACF,GACF;AA4BA,EAAO,OAAA;AAAA,IACL;AAAA,GACF;AACF;;;;"}
@@ -1,4 +1,4 @@
1
- var dataSourceStats = ".vuuDatasourceStats {\n --datasourceStats-background: var(--vuuDatasourceStats-background);\n align-items: center;\n background: var(--datasourceStats-background, var(--salt-container-secondary-background));\n display: grid;\n font-size: var(--vuuDatasourceStats-fontSize, 10px);\n gap: var(--vuuDatasourceStats-gap, var(--salt-spacing-100));\n grid-template-areas: \"panel-start panel-center panel-end\";\n grid-template-columns: 1fr 1fr 1fr;\n grid-template-rows: auto;\n height: var(--vuuDatasourceStats-height, 100%);\n padding: 0 var(--salt-spacing-200);\n\n &.vuuDatasourceStats-withSelection {\n --datasourceStats-background: var(--vuuDatasourceStats-withSelection-background, var(--vuuDatasourceStats-background));\n }\n\n .vuuDatasourceStats-statsPanel {\n align-items: center;\n display: flex;\n gap: var(--salt-spacing-100);\n width: fit-content;\n }\n\n .vuuDatasourceStats-rowStats {\n justify-self: flex-start;\n grid-area: panel-start;\n }\n .vuuDatasourceStats-selected {\n margin-left: var(--salt-spacing-100);\n }\n\n .vuuDatasourceStats-range {\n white-space: nowrap;\n }\n\n .vuuDatasourceStats-label {\n color: var(--salt-content-secondary-foreground);\n white-space: nowrap;\n }\n\n .vuuDatasourceStats-selectionActions {\n grid-area: panel-center;\n justify-self: center;\n }\n\n .vuuDatasourceStats-value {\n color: var(--salt-content-primary-foreground);\n }\n .vuuDatasourceStats-tooltray {\n justify-self: end;;\n margin: 0 var(--salt-spacing-200);\n grid-area: panel-end;\n }\n\n}\n\n";
1
+ var dataSourceStats = ".vuuDatasourceStats {\n --datasourceStats-background: var(--vuuDatasourceStats-background);\n align-items: center;\n background: var(--datasourceStats-background, var(--salt-container-secondary-background));\n display: grid;\n font-size: var(--vuuDatasourceStats-fontSize, 10px);\n gap: var(--vuuDatasourceStats-gap, var(--salt-spacing-100));\n grid-template-areas: \"panel-start panel-center panel-end\";\n grid-template-columns: 1fr 1fr 1fr;\n grid-template-rows: auto;\n height: var(--vuuDatasourceStats-height, 100%);\n padding: 0 var(--salt-spacing-200);\n\n &.vuuDatasourceStats-withSelection {\n --datasourceStats-background: var(--vuuDatasourceStats-withSelection-background, var(--vuuDatasourceStats-background));\n }\n\n .vuuDatasourceStats-statsPanel {\n align-items: center;\n display: flex;\n gap: var(--salt-spacing-100);\n width: fit-content;\n }\n\n .vuuDatasourceStats-rowStats {\n justify-self: flex-start;\n grid-area: panel-start;\n }\n .vuuDatasourceStats-selected {\n margin-left: var(--salt-spacing-100);\n }\n\n .vuuDatasourceStats-range {\n white-space: nowrap;\n }\n\n .vuuDatasourceStats-label {\n color: var(--salt-content-secondary-foreground);\n white-space: nowrap;\n }\n .vuuDatasourceStats-range {\n white-space: nowrap;\n }\n\n .vuuDatasourceStats-value {\n color: var(--salt-content-primary-foreground);\n }\n .vuuDatasourceStats-tooltray {\n justify-self: end;;\n margin: 0 var(--salt-spacing-200);\n grid-area: panel-end;\n }\n\n}\n\n";
2
2
 
3
3
  export { dataSourceStats as default };
4
4
  //# sourceMappingURL=DatasourceStats.css.js.map
package/esm/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ export { CalculatedColumnPanel } from './calculated-column/CalculatedColumnPanel.js';
1
2
  export { CaseValidator } from './cell-edit-validators/CaseValidator.js';
2
3
  export { PatternValidator } from './cell-edit-validators/PatternValidator.js';
3
4
  export { BackgroundCell } from './cell-renderers/background-cell/BackgroundCell.js';
@@ -13,22 +14,24 @@ export { walkTree } from './column-expression-input/column-language-parser/Colum
13
14
  export { ColumnNamedTerms, isCompleteExpression, isCompleteRelationalExpression, lastNamedChild } from './column-expression-input/column-language-parser/column-expression-parse-utils.js';
14
15
  export { useColumnExpressionEditor } from './column-expression-input/useColumnExpressionEditor.js';
15
16
  export { useColumnExpressionSuggestionProvider } from './column-expression-input/useColumnExpressionSuggestionProvider.js';
16
- export { ColumnExpressionPanel } from './column-expression-panel/ColumnExpressionPanel.js';
17
17
  export { ColumnFormattingPanel } from './column-formatting-settings/ColumnFormattingPanel.js';
18
18
  export { BaseNumericFormattingSettings } from './column-formatting-settings/BaseNumericFormattingSettings.js';
19
19
  export { DateTimeFormattingSettings } from './column-formatting-settings/DateTimeFormattingSettings.js';
20
- export { ColumnList, classBase, classBaseListItem } from './column-list/ColumnList.js';
21
20
  export { ColumnMenu } from './column-menu/ColumnMenu.js';
22
21
  export { useColumnActions } from './column-menu/useColumnActions.js';
23
22
  export { ColumnChangeSource, ColumnModel, SelectedColumnChangeType, isColumnAdded, isColumnRemoved, isColumnsReordered } from './column-picker/ColumnModel.js';
24
23
  export { ColumnPicker } from './column-picker/ColumnPicker.js';
24
+ export { ColumnPickerAction } from './column-picker/ColumnPickerAction.js';
25
+ export { useTableColumnPicker } from './column-picker/useTableColumnPicker.js';
26
+ export { ColumnSettingsPanel } from './column-settings-panel/ColumnSettingsPanel.js';
27
+ export { useColumnSettings } from './column-settings-panel/useColumnSettings.js';
28
+ export { columnSettingsFromColumnMenuPermissions, tableSettingsFromColumnMenuPermissions, useTableAndColumnSettings } from './column-settings-panel/useTableAndColumnSettings.js';
25
29
  export { DataSourceStats } from './datasource-stats/DatasourceStats.js';
26
30
  export { FreezeControl } from './freeze-control/FreezeControl.js';
27
31
  export { FrozenBanner } from './freeze-control/FrozenBanner.js';
28
- export { ColumnSettingsPanel } from './table-column-settings/ColumnSettingsPanel.js';
29
- export { TableSettingsPanel, defaultTableSettingsPermissions } from './table-column-settings/TableSettingsPanel.js';
30
- export { useColumnSettings } from './table-column-settings/useColumnSettings.js';
31
- export { columnSettingsFromColumnMenuPermissions, tableSettingsFromColumnMenuPermissions, useTableAndColumnSettings } from './table-column-settings/useTableAndColumnSettings.js';
32
- export { useTableSettings } from './table-column-settings/useTableSettings.js';
32
+ export { TabbedTableConfigPanel } from './tabbed-table-config-panel/TabbedTableConfigPanel.js';
33
+ export { TabbedTableSettingsAction } from './tabbed-table-config-panel/TabbedTableSettingsAction.js';
34
+ export { TableFooter, TableFooterTray } from './table-footer/TableFooter.js';
33
35
  export { TableProvider, useTableContext } from './table-provider/TableProvider.js';
36
+ export { TableSettingsPanel, defaultTableSettingsPermissions } from './table-settings-panel/TableSettingsPanel.js';
34
37
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,4 @@
1
+ var css = ".vuuTabbedTableConfigPanel {\n\n --tabs-height: 25px;\n\n inset: 0;\n position: absolute;\n .saltTabsNext {\n height: 100%;\n .saltTabListNext {\n border-bottom: solid var(--salt-separable-secondary-borderColor) 1px;\n height: var(--tabs-height);\n }\n\n .saltTabNextPanel {\n height: calc(100% - var(--tabs-height));\n }\n }\n}";
2
+
3
+ export { css as default };
4
+ //# sourceMappingURL=TabbedTableConfigPanel.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabbedTableConfigPanel.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}