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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/cjs/cell-edit-validators/CaseValidator.js +25 -0
  2. package/cjs/cell-edit-validators/CaseValidator.js.map +1 -0
  3. package/cjs/cell-edit-validators/PatternValidator.js +31 -0
  4. package/cjs/cell-edit-validators/PatternValidator.js.map +1 -0
  5. package/cjs/cell-renderers/background-cell/BackgroundCell.css.js +6 -0
  6. package/cjs/cell-renderers/background-cell/BackgroundCell.css.js.map +1 -0
  7. package/cjs/cell-renderers/background-cell/BackgroundCell.js +76 -0
  8. package/cjs/cell-renderers/background-cell/BackgroundCell.js.map +1 -0
  9. package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js +6 -0
  10. package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js.map +1 -0
  11. package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js +67 -0
  12. package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js.map +1 -0
  13. package/cjs/cell-renderers/background-cell/BackgroundKeyframes.css.js +6 -0
  14. package/cjs/cell-renderers/background-cell/BackgroundKeyframes.css.js.map +1 -0
  15. package/cjs/cell-renderers/background-cell/useDirection.js +20 -0
  16. package/cjs/cell-renderers/background-cell/useDirection.js.map +1 -0
  17. package/cjs/cell-renderers/dropdown-cell/DropdownCell.css.js +6 -0
  18. package/cjs/cell-renderers/dropdown-cell/DropdownCell.css.js.map +1 -0
  19. package/cjs/cell-renderers/dropdown-cell/DropdownCell.js +94 -0
  20. package/cjs/cell-renderers/dropdown-cell/DropdownCell.js.map +1 -0
  21. package/cjs/cell-renderers/lookup-cell/LookupCell.js +23 -0
  22. package/cjs/cell-renderers/lookup-cell/LookupCell.js.map +1 -0
  23. package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.css.js +6 -0
  24. package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.css.js.map +1 -0
  25. package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.js +62 -0
  26. package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.js.map +1 -0
  27. package/cjs/cell-renderers/progress-cell/ProgressCell.css.js +6 -0
  28. package/cjs/cell-renderers/progress-cell/ProgressCell.css.js.map +1 -0
  29. package/cjs/cell-renderers/progress-cell/ProgressCell.js +69 -0
  30. package/cjs/cell-renderers/progress-cell/ProgressCell.js.map +1 -0
  31. package/cjs/column-expression-input/ColumnExpressionInput.css.js +6 -0
  32. package/cjs/column-expression-input/ColumnExpressionInput.css.js.map +1 -0
  33. package/cjs/column-expression-input/ColumnExpressionInput.js +39 -0
  34. package/cjs/column-expression-input/ColumnExpressionInput.js.map +1 -0
  35. package/cjs/column-expression-input/column-function-descriptors.js +307 -0
  36. package/cjs/column-expression-input/column-function-descriptors.js.map +1 -0
  37. package/cjs/column-expression-input/column-language-parser/ColumnExpressionLanguage.js +28 -0
  38. package/cjs/column-expression-input/column-language-parser/ColumnExpressionLanguage.js.map +1 -0
  39. package/cjs/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js +465 -0
  40. package/cjs/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map +1 -0
  41. package/cjs/column-expression-input/column-language-parser/column-expression-parse-utils.js +61 -0
  42. package/cjs/column-expression-input/column-language-parser/column-expression-parse-utils.js.map +1 -0
  43. package/cjs/column-expression-input/column-language-parser/generated/column-parser.js +21 -0
  44. package/cjs/column-expression-input/column-language-parser/generated/column-parser.js.map +1 -0
  45. package/cjs/column-expression-input/functionDocInfo.js +39 -0
  46. package/cjs/column-expression-input/functionDocInfo.js.map +1 -0
  47. package/cjs/column-expression-input/highlighting.js +16 -0
  48. package/cjs/column-expression-input/highlighting.js.map +1 -0
  49. package/cjs/column-expression-input/theme.js +63 -0
  50. package/cjs/column-expression-input/theme.js.map +1 -0
  51. package/cjs/column-expression-input/useColumnAutoComplete.js +358 -0
  52. package/cjs/column-expression-input/useColumnAutoComplete.js.map +1 -0
  53. package/cjs/column-expression-input/useColumnExpressionEditor.js +131 -0
  54. package/cjs/column-expression-input/useColumnExpressionEditor.js.map +1 -0
  55. package/cjs/column-expression-input/useColumnExpressionSuggestionProvider.js +213 -0
  56. package/cjs/column-expression-input/useColumnExpressionSuggestionProvider.js.map +1 -0
  57. package/cjs/column-expression-panel/ColumnExpressionPanel.js +85 -0
  58. package/cjs/column-expression-panel/ColumnExpressionPanel.js.map +1 -0
  59. package/cjs/column-expression-panel/useColumnExpression.js +69 -0
  60. package/cjs/column-expression-panel/useColumnExpression.js.map +1 -0
  61. package/cjs/column-formatting-settings/BaseNumericFormattingSettings.js +97 -0
  62. package/cjs/column-formatting-settings/BaseNumericFormattingSettings.js.map +1 -0
  63. package/cjs/column-formatting-settings/ColumnFormattingPanel.js +104 -0
  64. package/cjs/column-formatting-settings/ColumnFormattingPanel.js.map +1 -0
  65. package/cjs/column-formatting-settings/DateTimeFormattingSettings.js +99 -0
  66. package/cjs/column-formatting-settings/DateTimeFormattingSettings.js.map +1 -0
  67. package/cjs/column-formatting-settings/LongTypeFormattingSettings.css.js +6 -0
  68. package/cjs/column-formatting-settings/LongTypeFormattingSettings.css.js.map +1 -0
  69. package/cjs/column-formatting-settings/LongTypeFormattingSettings.js +49 -0
  70. package/cjs/column-formatting-settings/LongTypeFormattingSettings.js.map +1 -0
  71. package/cjs/column-list/ColumnList.css.js +6 -0
  72. package/cjs/column-list/ColumnList.css.js.map +1 -0
  73. package/cjs/column-list/ColumnList.js +172 -0
  74. package/cjs/column-list/ColumnList.js.map +1 -0
  75. package/cjs/column-menu/ColumnMenu.css.js +6 -0
  76. package/cjs/column-menu/ColumnMenu.css.js.map +1 -0
  77. package/cjs/column-menu/ColumnMenu.js +116 -0
  78. package/cjs/column-menu/ColumnMenu.js.map +1 -0
  79. package/cjs/column-menu/column-menu-utils.js +489 -0
  80. package/cjs/column-menu/column-menu-utils.js.map +1 -0
  81. package/cjs/column-menu/useColumnActions.js +75 -0
  82. package/cjs/column-menu/useColumnActions.js.map +1 -0
  83. package/cjs/datasource-stats/DatasourceStats.css.js +6 -0
  84. package/cjs/datasource-stats/DatasourceStats.css.js.map +1 -0
  85. package/cjs/datasource-stats/DatasourceStats.js +52 -0
  86. package/cjs/datasource-stats/DatasourceStats.js.map +1 -0
  87. package/cjs/index.js +65 -4254
  88. package/cjs/index.js.map +1 -1
  89. package/cjs/table-column-settings/ColumnNameLabel.css.js +6 -0
  90. package/cjs/table-column-settings/ColumnNameLabel.css.js.map +1 -0
  91. package/cjs/table-column-settings/ColumnNameLabel.js +45 -0
  92. package/cjs/table-column-settings/ColumnNameLabel.js.map +1 -0
  93. package/cjs/table-column-settings/ColumnSettingsPanel.css.js +6 -0
  94. package/cjs/table-column-settings/ColumnSettingsPanel.css.js.map +1 -0
  95. package/cjs/table-column-settings/ColumnSettingsPanel.js +202 -0
  96. package/cjs/table-column-settings/ColumnSettingsPanel.js.map +1 -0
  97. package/cjs/table-column-settings/TableSettingsPanel.css.js +6 -0
  98. package/cjs/table-column-settings/TableSettingsPanel.css.js.map +1 -0
  99. package/cjs/table-column-settings/TableSettingsPanel.js +139 -0
  100. package/cjs/table-column-settings/TableSettingsPanel.js.map +1 -0
  101. package/cjs/table-column-settings/useColumnSettings.js +224 -0
  102. package/cjs/table-column-settings/useColumnSettings.js.map +1 -0
  103. package/cjs/table-column-settings/useTableAndColumnSettings.js +126 -0
  104. package/cjs/table-column-settings/useTableAndColumnSettings.js.map +1 -0
  105. package/cjs/table-column-settings/useTableSettings.js +172 -0
  106. package/cjs/table-column-settings/useTableSettings.js.map +1 -0
  107. package/cjs/table-provider/TableProvider.js +48 -0
  108. package/cjs/table-provider/TableProvider.js.map +1 -0
  109. package/esm/cell-edit-validators/CaseValidator.js +23 -0
  110. package/esm/cell-edit-validators/CaseValidator.js.map +1 -0
  111. package/esm/cell-edit-validators/PatternValidator.js +29 -0
  112. package/esm/cell-edit-validators/PatternValidator.js.map +1 -0
  113. package/esm/cell-renderers/background-cell/BackgroundCell.css.js +4 -0
  114. package/esm/cell-renderers/background-cell/BackgroundCell.css.js.map +1 -0
  115. package/esm/cell-renderers/background-cell/BackgroundCell.js +74 -0
  116. package/esm/cell-renderers/background-cell/BackgroundCell.js.map +1 -0
  117. package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js +4 -0
  118. package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js.map +1 -0
  119. package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js +65 -0
  120. package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js.map +1 -0
  121. package/esm/cell-renderers/background-cell/BackgroundKeyframes.css.js +4 -0
  122. package/esm/cell-renderers/background-cell/BackgroundKeyframes.css.js.map +1 -0
  123. package/esm/cell-renderers/background-cell/useDirection.js +18 -0
  124. package/esm/cell-renderers/background-cell/useDirection.js.map +1 -0
  125. package/esm/cell-renderers/dropdown-cell/DropdownCell.css.js +4 -0
  126. package/esm/cell-renderers/dropdown-cell/DropdownCell.css.js.map +1 -0
  127. package/esm/cell-renderers/dropdown-cell/DropdownCell.js +92 -0
  128. package/esm/cell-renderers/dropdown-cell/DropdownCell.js.map +1 -0
  129. package/esm/cell-renderers/lookup-cell/LookupCell.js +21 -0
  130. package/esm/cell-renderers/lookup-cell/LookupCell.js.map +1 -0
  131. package/esm/cell-renderers/pct-progress-cell/PctProgressCell.css.js +4 -0
  132. package/esm/cell-renderers/pct-progress-cell/PctProgressCell.css.js.map +1 -0
  133. package/esm/cell-renderers/pct-progress-cell/PctProgressCell.js +60 -0
  134. package/esm/cell-renderers/pct-progress-cell/PctProgressCell.js.map +1 -0
  135. package/esm/cell-renderers/progress-cell/ProgressCell.css.js +4 -0
  136. package/esm/cell-renderers/progress-cell/ProgressCell.css.js.map +1 -0
  137. package/esm/cell-renderers/progress-cell/ProgressCell.js +67 -0
  138. package/esm/cell-renderers/progress-cell/ProgressCell.js.map +1 -0
  139. package/esm/column-expression-input/ColumnExpressionInput.css.js +4 -0
  140. package/esm/column-expression-input/ColumnExpressionInput.css.js.map +1 -0
  141. package/esm/column-expression-input/ColumnExpressionInput.js +37 -0
  142. package/esm/column-expression-input/ColumnExpressionInput.js.map +1 -0
  143. package/esm/column-expression-input/column-function-descriptors.js +305 -0
  144. package/esm/column-expression-input/column-function-descriptors.js.map +1 -0
  145. package/esm/column-expression-input/column-language-parser/ColumnExpressionLanguage.js +26 -0
  146. package/esm/column-expression-input/column-language-parser/ColumnExpressionLanguage.js.map +1 -0
  147. package/esm/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js +463 -0
  148. package/esm/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map +1 -0
  149. package/esm/column-expression-input/column-language-parser/column-expression-parse-utils.js +56 -0
  150. package/esm/column-expression-input/column-language-parser/column-expression-parse-utils.js.map +1 -0
  151. package/esm/column-expression-input/column-language-parser/generated/column-parser.js +19 -0
  152. package/esm/column-expression-input/column-language-parser/generated/column-parser.js.map +1 -0
  153. package/esm/column-expression-input/functionDocInfo.js +37 -0
  154. package/esm/column-expression-input/functionDocInfo.js.map +1 -0
  155. package/esm/column-expression-input/highlighting.js +14 -0
  156. package/esm/column-expression-input/highlighting.js.map +1 -0
  157. package/esm/column-expression-input/theme.js +61 -0
  158. package/esm/column-expression-input/theme.js.map +1 -0
  159. package/esm/column-expression-input/useColumnAutoComplete.js +356 -0
  160. package/esm/column-expression-input/useColumnAutoComplete.js.map +1 -0
  161. package/esm/column-expression-input/useColumnExpressionEditor.js +129 -0
  162. package/esm/column-expression-input/useColumnExpressionEditor.js.map +1 -0
  163. package/esm/column-expression-input/useColumnExpressionSuggestionProvider.js +211 -0
  164. package/esm/column-expression-input/useColumnExpressionSuggestionProvider.js.map +1 -0
  165. package/esm/column-expression-panel/ColumnExpressionPanel.js +83 -0
  166. package/esm/column-expression-panel/ColumnExpressionPanel.js.map +1 -0
  167. package/esm/column-expression-panel/useColumnExpression.js +67 -0
  168. package/esm/column-expression-panel/useColumnExpression.js.map +1 -0
  169. package/esm/column-formatting-settings/BaseNumericFormattingSettings.js +95 -0
  170. package/esm/column-formatting-settings/BaseNumericFormattingSettings.js.map +1 -0
  171. package/esm/column-formatting-settings/ColumnFormattingPanel.js +102 -0
  172. package/esm/column-formatting-settings/ColumnFormattingPanel.js.map +1 -0
  173. package/esm/column-formatting-settings/DateTimeFormattingSettings.js +97 -0
  174. package/esm/column-formatting-settings/DateTimeFormattingSettings.js.map +1 -0
  175. package/esm/column-formatting-settings/LongTypeFormattingSettings.css.js +4 -0
  176. package/esm/column-formatting-settings/LongTypeFormattingSettings.css.js.map +1 -0
  177. package/esm/column-formatting-settings/LongTypeFormattingSettings.js +47 -0
  178. package/esm/column-formatting-settings/LongTypeFormattingSettings.js.map +1 -0
  179. package/esm/column-list/ColumnList.css.js +4 -0
  180. package/esm/column-list/ColumnList.css.js.map +1 -0
  181. package/esm/column-list/ColumnList.js +170 -0
  182. package/esm/column-list/ColumnList.js.map +1 -0
  183. package/esm/column-menu/ColumnMenu.css.js +4 -0
  184. package/esm/column-menu/ColumnMenu.css.js.map +1 -0
  185. package/esm/column-menu/ColumnMenu.js +114 -0
  186. package/esm/column-menu/ColumnMenu.js.map +1 -0
  187. package/esm/column-menu/column-menu-utils.js +480 -0
  188. package/esm/column-menu/column-menu-utils.js.map +1 -0
  189. package/esm/column-menu/useColumnActions.js +73 -0
  190. package/esm/column-menu/useColumnActions.js.map +1 -0
  191. package/esm/datasource-stats/DatasourceStats.css.js +4 -0
  192. package/esm/datasource-stats/DatasourceStats.css.js.map +1 -0
  193. package/esm/datasource-stats/DatasourceStats.js +50 -0
  194. package/esm/datasource-stats/DatasourceStats.js.map +1 -0
  195. package/esm/index.js +28 -4221
  196. package/esm/index.js.map +1 -1
  197. package/esm/table-column-settings/ColumnNameLabel.css.js +4 -0
  198. package/esm/table-column-settings/ColumnNameLabel.css.js.map +1 -0
  199. package/esm/table-column-settings/ColumnNameLabel.js +43 -0
  200. package/esm/table-column-settings/ColumnNameLabel.js.map +1 -0
  201. package/esm/table-column-settings/ColumnSettingsPanel.css.js +4 -0
  202. package/esm/table-column-settings/ColumnSettingsPanel.css.js.map +1 -0
  203. package/esm/table-column-settings/ColumnSettingsPanel.js +200 -0
  204. package/esm/table-column-settings/ColumnSettingsPanel.js.map +1 -0
  205. package/esm/table-column-settings/TableSettingsPanel.css.js +4 -0
  206. package/esm/table-column-settings/TableSettingsPanel.css.js.map +1 -0
  207. package/esm/table-column-settings/TableSettingsPanel.js +136 -0
  208. package/esm/table-column-settings/TableSettingsPanel.js.map +1 -0
  209. package/esm/table-column-settings/useColumnSettings.js +222 -0
  210. package/esm/table-column-settings/useColumnSettings.js.map +1 -0
  211. package/esm/table-column-settings/useTableAndColumnSettings.js +122 -0
  212. package/esm/table-column-settings/useTableAndColumnSettings.js.map +1 -0
  213. package/esm/table-column-settings/useTableSettings.js +170 -0
  214. package/esm/table-column-settings/useTableSettings.js.map +1 -0
  215. package/esm/table-provider/TableProvider.js +44 -0
  216. package/esm/table-provider/TableProvider.js.map +1 -0
  217. package/package.json +11 -11
@@ -0,0 +1,4 @@
1
+ var columnNameLabelCss = ".vuuColumnNameLabel-calculated {\n cursor: pointer;\n display: flex;\n gap: 2px;\n}\n\n.vuuColumnNameLabel-edit {\n margin-left: auto;\n}\n\n.vuuColumnNameLabel-placeholder {\n color: var(--vuu-color-gray-35);\n}";
2
+
3
+ export { columnNameLabelCss as default };
4
+ //# sourceMappingURL=ColumnNameLabel.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnNameLabel.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,43 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import cx from 'clsx';
3
+ import { useComponentCssInjection } from '@salt-ds/styles';
4
+ import { useWindow } from '@salt-ds/window';
5
+ import { isCalculatedColumn, getCalculatedColumnDetails } from '@vuu-ui/vuu-utils';
6
+ import columnNameLabelCss from './ColumnNameLabel.css.js';
7
+
8
+ const classBase = "vuuColumnNameLabel";
9
+ const ColumnNameLabel = ({ column, onClick }) => {
10
+ const targetWindow = useWindow();
11
+ useComponentCssInjection({
12
+ testId: "vuu-column-label",
13
+ css: columnNameLabelCss,
14
+ window: targetWindow
15
+ });
16
+ if (isCalculatedColumn(column.name)) {
17
+ const { name, serverDataType, expression } = getCalculatedColumnDetails(column);
18
+ const displayName = name || "name";
19
+ const displayExpression = "=expression";
20
+ const nameClass = displayName === "name" ? `${classBase}-placeholder` : void 0;
21
+ const expressionClass = expression === "" ? `${classBase}-placeholder` : void 0;
22
+ return /* @__PURE__ */ jsxs(
23
+ "div",
24
+ {
25
+ className: cx(classBase, `${classBase}-calculated`),
26
+ onClick,
27
+ children: [
28
+ /* @__PURE__ */ jsx("span", { className: nameClass, children: displayName }),
29
+ /* @__PURE__ */ jsx("span", { children: ":" }),
30
+ /* @__PURE__ */ jsx("span", { children: serverDataType || "string" }),
31
+ /* @__PURE__ */ jsx("span", { children: ":" }),
32
+ /* @__PURE__ */ jsx("span", { className: expressionClass, children: displayExpression }),
33
+ /* @__PURE__ */ jsx("span", { className: `${classBase}-edit`, "data-icon": "edit" })
34
+ ]
35
+ }
36
+ );
37
+ } else {
38
+ return /* @__PURE__ */ jsx("div", { className: classBase, children: column.name });
39
+ }
40
+ };
41
+
42
+ export { ColumnNameLabel };
43
+ //# sourceMappingURL=ColumnNameLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnNameLabel.js","sources":["../../src/table-column-settings/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;;;;"}
@@ -0,0 +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";
2
+
3
+ export { colunSettingsPanelCss as default };
4
+ //# sourceMappingURL=ColumnSettingsPanel.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnSettingsPanel.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,200 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { VuuInput, Icon } from '@vuu-ui/vuu-ui-controls';
3
+ import { getDefaultAlignment, isCalculatedColumn, getCalculatedColumnDetails } from '@vuu-ui/vuu-utils';
4
+ import { FormField, FormFieldLabel, ToggleButtonGroup, ToggleButton, Button } from '@salt-ds/core';
5
+ import { useComponentCssInjection } from '@salt-ds/styles';
6
+ import { useWindow } from '@salt-ds/window';
7
+ import cx from 'clsx';
8
+ import { ColumnExpressionPanel } from '../column-expression-panel/ColumnExpressionPanel.js';
9
+ import { ColumnFormattingPanel } from '../column-formatting-settings/ColumnFormattingPanel.js';
10
+ import 'react';
11
+ import { ColumnNameLabel } from './ColumnNameLabel.js';
12
+ import { useColumnSettings } from './useColumnSettings.js';
13
+ import colunSettingsPanelCss from './ColumnSettingsPanel.css.js';
14
+
15
+ const classBase = "vuuColumnSettingsPanel";
16
+ const getColumnLabel = (column) => {
17
+ const { name, label } = column;
18
+ if (isCalculatedColumn(name)) {
19
+ return label ?? getCalculatedColumnDetails(column).name;
20
+ } else {
21
+ return label ?? name;
22
+ }
23
+ };
24
+ const ColumnSettingsPanel = ({
25
+ column: columnProp,
26
+ onCancelCreateColumn,
27
+ onConfigChange,
28
+ onCreateCalculatedColumn,
29
+ tableConfig,
30
+ vuuTable
31
+ }) => {
32
+ const targetWindow = useWindow();
33
+ useComponentCssInjection({
34
+ testId: "vuu-column-settings-panel",
35
+ css: colunSettingsPanelCss,
36
+ window: targetWindow
37
+ });
38
+ const isNewCalculatedColumn = columnProp.name === "::";
39
+ const {
40
+ availableRenderers,
41
+ editCalculatedColumn,
42
+ column,
43
+ navigateNextColumn,
44
+ navigatePrevColumn,
45
+ onCancel,
46
+ onChange,
47
+ onChangeCalculatedColumnName,
48
+ onChangeFormatting,
49
+ onChangeRendering,
50
+ onChangeServerDataType,
51
+ onChangeToggleButton,
52
+ onChangeType,
53
+ onEditCalculatedColumn,
54
+ onInputCommit,
55
+ onSave
56
+ } = useColumnSettings({
57
+ column: columnProp,
58
+ onCancelCreateColumn,
59
+ onConfigChange,
60
+ onCreateCalculatedColumn,
61
+ tableConfig
62
+ });
63
+ const {
64
+ serverDataType,
65
+ align = getDefaultAlignment(serverDataType),
66
+ pin,
67
+ width
68
+ } = column;
69
+ return /* @__PURE__ */ jsxs(
70
+ "div",
71
+ {
72
+ className: cx(classBase, {
73
+ [`${classBase}-editing`]: editCalculatedColumn
74
+ }),
75
+ children: [
76
+ /* @__PURE__ */ jsx("div", { className: `${classBase}-header`, children: /* @__PURE__ */ jsx(ColumnNameLabel, { column, onClick: onEditCalculatedColumn }) }),
77
+ editCalculatedColumn ? /* @__PURE__ */ jsx(
78
+ ColumnExpressionPanel,
79
+ {
80
+ column,
81
+ onChangeName: onChangeCalculatedColumnName,
82
+ onChangeServerDataType,
83
+ tableConfig,
84
+ vuuTable
85
+ }
86
+ ) : null,
87
+ /* @__PURE__ */ jsxs(FormField, { "data-field": "column-label", children: [
88
+ /* @__PURE__ */ jsx(FormFieldLabel, { children: "Column Label" }),
89
+ /* @__PURE__ */ jsx(
90
+ VuuInput,
91
+ {
92
+ className: "vuuInput",
93
+ "data-embedded": true,
94
+ onChange,
95
+ onCommit: onInputCommit,
96
+ value: getColumnLabel(column)
97
+ }
98
+ )
99
+ ] }),
100
+ /* @__PURE__ */ jsxs(FormField, { "data-field": "column-width", children: [
101
+ /* @__PURE__ */ jsx(FormFieldLabel, { children: "Column Width" }),
102
+ /* @__PURE__ */ jsx(
103
+ VuuInput,
104
+ {
105
+ className: "vuuInput",
106
+ "data-embedded": true,
107
+ onChange,
108
+ value: width,
109
+ onCommit: onInputCommit
110
+ }
111
+ )
112
+ ] }),
113
+ /* @__PURE__ */ jsxs(FormField, { "data-field": "column-alignment", children: [
114
+ /* @__PURE__ */ jsx(FormFieldLabel, { children: "Alignment" }),
115
+ /* @__PURE__ */ jsxs(ToggleButtonGroup, { onChange: onChangeToggleButton, value: align, children: [
116
+ /* @__PURE__ */ jsx(ToggleButton, { value: "left", children: /* @__PURE__ */ jsx(Icon, { name: "align-left", size: 16 }) }),
117
+ /* @__PURE__ */ jsx(ToggleButton, { value: "right", children: /* @__PURE__ */ jsx(Icon, { name: "align-right", size: 16 }) })
118
+ ] })
119
+ ] }),
120
+ /* @__PURE__ */ jsxs(FormField, { "data-field": "column-pin", children: [
121
+ /* @__PURE__ */ jsx(FormFieldLabel, { children: "Pin Column" }),
122
+ /* @__PURE__ */ jsxs(
123
+ ToggleButtonGroup,
124
+ {
125
+ onChange: onChangeToggleButton,
126
+ value: pin || "false",
127
+ children: [
128
+ /* @__PURE__ */ jsx(ToggleButton, { value: "left", children: /* @__PURE__ */ jsx(Icon, { name: "pin-left", size: 16 }) }),
129
+ /* @__PURE__ */ jsx(ToggleButton, { value: "floating", children: /* @__PURE__ */ jsx(Icon, { name: "pin-float", size: 16 }) }),
130
+ /* @__PURE__ */ jsx(ToggleButton, { value: "right", children: /* @__PURE__ */ jsx(Icon, { name: "pin-right", size: 16 }) }),
131
+ /* @__PURE__ */ jsx(ToggleButton, { value: "", children: /* @__PURE__ */ jsx(Icon, { name: "cross-circle", size: 16 }) })
132
+ ]
133
+ }
134
+ )
135
+ ] }),
136
+ /* @__PURE__ */ jsx(
137
+ ColumnFormattingPanel,
138
+ {
139
+ availableRenderers,
140
+ column,
141
+ onChangeFormatting,
142
+ onChangeRendering,
143
+ onChangeColumnType: onChangeType
144
+ }
145
+ ),
146
+ editCalculatedColumn ? /* @__PURE__ */ jsxs("div", { className: "vuuColumnSettingsPanel-buttonBar", "data-align": "right", children: [
147
+ /* @__PURE__ */ jsx(
148
+ Button,
149
+ {
150
+ className: `${classBase}-buttonCancel`,
151
+ onClick: onCancel,
152
+ tabIndex: -1,
153
+ children: "cancel"
154
+ }
155
+ ),
156
+ /* @__PURE__ */ jsx(
157
+ Button,
158
+ {
159
+ className: `${classBase}-buttonSave`,
160
+ onClick: onSave,
161
+ variant: "cta",
162
+ children: "save"
163
+ }
164
+ )
165
+ ] }) : /* @__PURE__ */ jsxs(
166
+ "div",
167
+ {
168
+ className: `${classBase}-buttonBar`,
169
+ "data-align": isNewCalculatedColumn ? "right" : void 0,
170
+ children: [
171
+ /* @__PURE__ */ jsx(
172
+ Button,
173
+ {
174
+ className: `${classBase}-buttonNavPrev`,
175
+ variant: "secondary",
176
+ "data-icon": "arrow-left",
177
+ onClick: navigatePrevColumn,
178
+ children: "PREVIOUS"
179
+ }
180
+ ),
181
+ /* @__PURE__ */ jsx(
182
+ Button,
183
+ {
184
+ className: `${classBase}-buttonNavNext`,
185
+ variant: "secondary",
186
+ "data-icon": "arrow-right",
187
+ onClick: navigateNextColumn,
188
+ children: "NEXT"
189
+ }
190
+ )
191
+ ]
192
+ }
193
+ )
194
+ ]
195
+ }
196
+ );
197
+ };
198
+
199
+ export { ColumnSettingsPanel };
200
+ //# sourceMappingURL=ColumnSettingsPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnSettingsPanel.js","sources":["../../src/table-column-settings/ColumnSettingsPanel.tsx"],"sourcesContent":["import { ColumnDescriptor, ColumnSettingsProps } 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 {\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 cx from \"clsx\";\nimport { ColumnExpressionPanel } from \"../column-expression-panel\";\nimport { ColumnFormattingPanel } from \"../column-formatting-settings\";\nimport { ColumnNameLabel } from \"./ColumnNameLabel\";\nimport { 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 const ColumnSettingsPanel = ({\n column: columnProp,\n onCancelCreateColumn,\n onConfigChange,\n onCreateCalculatedColumn,\n tableConfig,\n vuuTable,\n}: ColumnSettingsProps) => {\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 editCalculatedColumn,\n column,\n navigateNextColumn,\n navigatePrevColumn,\n onCancel,\n onChange,\n onChangeCalculatedColumnName,\n onChangeFormatting,\n onChangeRendering,\n onChangeServerDataType,\n onChangeToggleButton,\n onChangeType,\n onEditCalculatedColumn,\n onInputCommit,\n onSave,\n } = useColumnSettings({\n column: columnProp,\n onCancelCreateColumn,\n onConfigChange,\n onCreateCalculatedColumn,\n tableConfig,\n });\n\n const {\n serverDataType,\n align = getDefaultAlignment(serverDataType),\n pin,\n width,\n } = column;\n\n return (\n <div\n className={cx(classBase, {\n [`${classBase}-editing`]: editCalculatedColumn,\n })}\n >\n <div className={`${classBase}-header`}>\n <ColumnNameLabel column={column} onClick={onEditCalculatedColumn} />\n </div>\n\n {editCalculatedColumn ? (\n <ColumnExpressionPanel\n column={column}\n onChangeName={onChangeCalculatedColumnName}\n onChangeServerDataType={onChangeServerDataType}\n tableConfig={tableConfig}\n vuuTable={vuuTable}\n />\n ) : null}\n\n <FormField data-field=\"column-label\">\n <FormFieldLabel>Column Label</FormFieldLabel>\n <VuuInput\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 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 {editCalculatedColumn ? (\n <div className=\"vuuColumnSettingsPanel-buttonBar\" data-align=\"right\">\n <Button\n className={`${classBase}-buttonCancel`}\n onClick={onCancel}\n tabIndex={-1}\n >\n cancel\n </Button>\n <Button\n className={`${classBase}-buttonSave`}\n onClick={onSave}\n variant=\"cta\"\n >\n save\n </Button>\n </div>\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 )}\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var tableSettingsPanelCss = ".vuuTableSettingsPanel {\n --vuu-svg-text-strikethrough: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 24\"><path d=\"M28.3333 9.33334C28.8867 9.33334 29.3333 8.88668 29.3333 8.33334C29.3333 7.78001 28.8867 7.33334 28.3333 7.33334H20.26L22.26 9.33334H23.48L23.1133 10.1867L24.5067 11.58L25.4733 9.33334H28.3333ZM27.6267 16.5867L18.7467 7.70668C18.4867 7.44668 18.0667 7.44668 17.8067 7.70668C17.5467 7.96668 17.5467 8.38668 17.8067 8.64668L21.98 12.82L20.88 15.38C20.62 15.9933 21.0667 16.6667 21.7267 16.6667C22.0933 16.6667 22.4267 16.4467 22.5733 16.1067L23.38 14.22L26.68 17.52C26.94 17.78 27.36 17.78 27.62 17.52C27.8867 17.2667 27.8867 16.8467 27.6267 16.5867Z\"/></svg>');\n --vuu-svg-text-Tt: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 24\"><path d=\"M17.6667 7.66666C17.6667 8.21999 18.1133 8.66666 18.6667 8.66666H21V15.6667C21 16.22 21.4467 16.6667 22 16.6667C22.5533 16.6667 23 16.22 23 15.6667V8.66666H25.3333C25.8867 8.66666 26.3333 8.21999 26.3333 7.66666C26.3333 7.11332 25.8867 6.66666 25.3333 6.66666H18.6667C18.1133 6.66666 17.6667 7.11332 17.6667 7.66666ZM29.3333 9.99999H25.3333C24.78 9.99999 24.3333 10.4467 24.3333 11C24.3333 11.5533 24.78 12 25.3333 12H26.3333V15.6667C26.3333 16.22 26.78 16.6667 27.3333 16.6667C27.8867 16.6667 28.3333 16.22 28.3333 15.6667V12H29.3333C29.8867 12 30.3333 11.5533 30.3333 11C30.3333 10.4467 29.8867 9.99999 29.3333 9.99999Z\" /></svg>');\n --vuu-svg-text-T: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 24\"><path d=\"M19.3333 7.66666C19.3333 8.21999 19.78 8.66666 20.3333 8.66666H23V15.6667C23 16.22 23.4467 16.6667 24 16.6667C24.5533 16.6667 25 16.22 25 15.6667V8.66666H27.6667C28.22 8.66666 28.6667 8.21999 28.6667 7.66666C28.6667 7.11332 28.22 6.66666 27.6667 6.66666H20.3333C19.78 6.66666 19.3333 7.11332 19.3333 7.66666Z\"/></svg>');\n --vuu-svg-stripes: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><rect x=\"2\" y=\"2\" width=\"12\" height=\"2\" rx=\"0.3\"/><rect x=\"2\" y=\"5\" width=\"12\" height=\"2\" rx=\"0.3\"/><rect x=\"2\" y=\"8\" width=\"12\" height=\"2\" rx=\"0.3\"/><rect x=\"2\" y=\"11\" width=\"12\" height=\"2\" rx=\"0.3\"/></svg>');\n --vuu-svg-row-lines: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><rect x=\"2\" y=\"3\" width=\"12\" height=\"1\" rx=\"0.3\" /><rect x=\"2\" y=\"6\" width=\"12\" height=\"1\" rx=\"0.3\" /><rect x=\"2\" y=\"9\" width=\"12\" height=\"1\" rx=\"0.3\" /><rect x=\"2\" y=\"12\" width=\"12\" height=\"1\" rx=\"0.3\"/></svg>');\n --vuu-svg-col-lines: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><rect x=\"3\" y=\"14\" width=\"12\" height=\"1\" rx=\"0.3\" transform=\"rotate(-90 3 14)\"/><rect x=\"6\" y=\"14\" width=\"12\" height=\"1\" rx=\"0.3\" transform=\"rotate(-90 6 14)\"/><rect x=\"9\" y=\"14\" width=\"12\" height=\"1\" rx=\"0.3\" transform=\"rotate(-90 9 14)\"/><rect x=\"12\" y=\"14\" width=\"12\" height=\"1\" rx=\"0.3\" transform=\"rotate(-90 12 14)\"/></svg>');\n\n display: flex;\n flex-direction: column;\n gap: 24px;\n height: 100%;\n max-width: 254px;\n padding: 24px 2px 0 2px;\n}\n\n\n.vuuTableSettingsPanel [data-icon=\"text-strikethrough\"]{\n --vuu-icon-svg: var(--vuu-svg-text-strikethrough);\n}\n.vuuTableSettingsPanel [data-icon=\"text-Tt\"]{\n --vuu-icon-svg: var(--vuu-svg-text-Tt);\n}\n.vuuTableSettingsPanel [data-icon=\"text-T\"]{\n --vuu-icon-svg: var(--vuu-svg-text-T);\n}\n.vuuTableSettingsPanel [data-icon=\"col-lines\"]{\n --vuu-icon-svg: var(--vuu-svg-col-lines);\n}\n.vuuTableSettingsPanel [data-icon=\"row-lines\"]{\n --vuu-icon-svg: var(--vuu-svg-row-lines);\n}\n.vuuTableSettingsPanel [data-icon=\"row-striping\"]{\n --vuu-icon-svg: var(--vuu-svg-stripes);\n}\n\n.vuuTableSettingsPanel-header {\n border-top: solid 2px var(--vuu-color-gray-30);\n font-size: 14px;\n font-weight: 600;\n padding-top: 24px;\n}\n\n.vuuTableSettingsPanel .vuuColumnList {\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: 0;\n}\n\n.vuuTableSettingsPanel-calculatedButtonbar {\n --vuu-icon-size: 16px;\n --saltButton-height: 24px;\n --saltButton-width: 24px;\n align-items: center;\n display: flex;\n flex: 0 0 32px;\n gap: 12px;\n}\n\n\n\n\n\n\n";
2
+
3
+ export { tableSettingsPanelCss as default };
4
+ //# sourceMappingURL=TableSettingsPanel.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableSettingsPanel.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,136 @@
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 { ColumnList } from '../column-list/ColumnList.js';
6
+ import { useTableSettings } from './useTableSettings.js';
7
+ import { VuuInput, Icon } from '@vuu-ui/vuu-ui-controls';
8
+ import tableSettingsPanelCss from './TableSettingsPanel.css.js';
9
+
10
+ const classBase = "vuuTableSettingsPanel";
11
+ const defaultTableSettingsPermissions = {
12
+ allowColumnLabelCase: true,
13
+ allowColumnDefaultWidth: true,
14
+ allowGridSeparators: true,
15
+ allowReorderColumns: true,
16
+ allowRemoveColumns: true,
17
+ allowHideColumns: true,
18
+ allowCalculatedColumns: true
19
+ };
20
+ const TableSettingsPanel = ({
21
+ availableColumns,
22
+ onAddCalculatedColumn,
23
+ onConfigChange,
24
+ onDataSourceConfigChange,
25
+ onNavigateToColumn,
26
+ tableConfig: tableConfigProp,
27
+ permissions = defaultTableSettingsPermissions
28
+ }) => {
29
+ const targetWindow = useWindow();
30
+ useComponentCssInjection({
31
+ testId: "vuu-table-settings-panel",
32
+ css: tableSettingsPanelCss,
33
+ window: targetWindow
34
+ });
35
+ const {
36
+ columnItems,
37
+ columnLabelsValue,
38
+ onChangeColumnLabels,
39
+ onChangeTableAttribute,
40
+ onReorderColumnItems,
41
+ onColumnChange,
42
+ onCommitColumnWidth,
43
+ tableConfig
44
+ } = useTableSettings({
45
+ availableColumns,
46
+ onConfigChange,
47
+ onDataSourceConfigChange,
48
+ tableConfig: tableConfigProp
49
+ });
50
+ const {
51
+ allowColumnLabelCase = true,
52
+ allowColumnDefaultWidth = true,
53
+ allowGridSeparators = true,
54
+ allowCalculatedColumns,
55
+ ...columnListPermissions
56
+ } = permissions;
57
+ return /* @__PURE__ */ jsxs("div", { className: classBase, children: [
58
+ allowColumnLabelCase || allowColumnDefaultWidth || allowGridSeparators ? /* @__PURE__ */ jsx("div", { className: `${classBase}-header`, children: /* @__PURE__ */ jsx("span", { children: "Column Settings" }) }) : null,
59
+ allowColumnDefaultWidth ? /* @__PURE__ */ jsxs(FormField, { children: [
60
+ /* @__PURE__ */ jsx(FormFieldLabel, { children: "Column Width" }),
61
+ /* @__PURE__ */ jsx(
62
+ VuuInput,
63
+ {
64
+ className: "vuuInput",
65
+ "data-embedded": true,
66
+ onCommit: onCommitColumnWidth
67
+ }
68
+ )
69
+ ] }) : null,
70
+ allowColumnLabelCase ? /* @__PURE__ */ jsxs(FormField, { children: [
71
+ /* @__PURE__ */ jsx(FormFieldLabel, { children: "Column Labels" }),
72
+ /* @__PURE__ */ jsxs(
73
+ ToggleButtonGroup,
74
+ {
75
+ className: "vuuToggleButtonGroup",
76
+ onChange: onChangeColumnLabels,
77
+ value: columnLabelsValue,
78
+ children: [
79
+ /* @__PURE__ */ jsx(ToggleButton, { className: "vuuIconToggleButton", value: 0, children: /* @__PURE__ */ jsx(Icon, { name: "text-strikethrough", size: 48 }) }),
80
+ /* @__PURE__ */ jsx(ToggleButton, { className: "vuuIconToggleButton", value: 1, children: /* @__PURE__ */ jsx(Icon, { name: "text-Tt", size: 48 }) }),
81
+ /* @__PURE__ */ jsx(ToggleButton, { className: "vuuIconToggleButton", value: 2, children: /* @__PURE__ */ jsx(Icon, { name: "text-T", size: 48 }) })
82
+ ]
83
+ }
84
+ )
85
+ ] }) : null,
86
+ allowGridSeparators ? /* @__PURE__ */ jsxs(FormField, { children: [
87
+ /* @__PURE__ */ jsx(FormFieldLabel, { children: "Grid separators" }),
88
+ /* @__PURE__ */ jsxs("div", { className: "saltToggleButtonGroup vuuStateButtonGroup saltToggleButtonGroup-horizontal", children: [
89
+ /* @__PURE__ */ jsx(
90
+ ToggleButton,
91
+ {
92
+ selected: tableConfig.zebraStripes ?? false,
93
+ onChange: onChangeTableAttribute,
94
+ value: "zebraStripes",
95
+ children: /* @__PURE__ */ jsx(Icon, { name: "row-striping", size: 16 })
96
+ }
97
+ ),
98
+ /* @__PURE__ */ jsx(
99
+ ToggleButton,
100
+ {
101
+ selected: tableConfig.rowSeparators ?? false,
102
+ onChange: onChangeTableAttribute,
103
+ value: "rowSeparators",
104
+ children: /* @__PURE__ */ jsx(Icon, { name: "row-lines", size: 16 })
105
+ }
106
+ ),
107
+ /* @__PURE__ */ jsx(
108
+ ToggleButton,
109
+ {
110
+ selected: tableConfig.columnSeparators ?? false,
111
+ onChange: onChangeTableAttribute,
112
+ value: "columnSeparators",
113
+ children: /* @__PURE__ */ jsx(Icon, { name: "col-lines", size: 16 })
114
+ }
115
+ )
116
+ ] })
117
+ ] }) : null,
118
+ /* @__PURE__ */ jsx(
119
+ ColumnList,
120
+ {
121
+ columnItems,
122
+ permissions: columnListPermissions,
123
+ onChange: onColumnChange,
124
+ onNavigateToColumn,
125
+ onReorderColumnItems
126
+ }
127
+ ),
128
+ allowCalculatedColumns ? /* @__PURE__ */ jsxs("div", { className: `${classBase}-calculatedButtonbar`, children: [
129
+ /* @__PURE__ */ jsx(Button, { "data-icon": "plus", onClick: onAddCalculatedColumn }),
130
+ /* @__PURE__ */ jsx("span", { className: `${classBase}-calculatedLabel`, children: "Add calculated column" })
131
+ ] }) : null
132
+ ] });
133
+ };
134
+
135
+ export { TableSettingsPanel, defaultTableSettingsPermissions };
136
+ //# sourceMappingURL=TableSettingsPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableSettingsPanel.js","sources":["../../src/table-column-settings/TableSettingsPanel.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 {\n TableSettingsPermissions,\n TableSettingsProps,\n} from \"@vuu-ui/vuu-table-types\";\nimport { ColumnList } from \"../column-list\";\nimport { useTableSettings } from \"./useTableSettings\";\nimport { Icon } from \"@vuu-ui/vuu-ui-controls\";\nimport { VuuInput } from \"@vuu-ui/vuu-ui-controls\";\n\nimport tableSettingsPanelCss from \"./TableSettingsPanel.css\";\n\nconst classBase = \"vuuTableSettingsPanel\";\n\nexport const defaultTableSettingsPermissions: Readonly<TableSettingsPermissions> =\n {\n allowColumnLabelCase: true,\n allowColumnDefaultWidth: true,\n allowGridSeparators: true,\n allowReorderColumns: true,\n allowRemoveColumns: true,\n allowHideColumns: true,\n allowCalculatedColumns: true,\n };\n\n/**\n The TableSettingsPanel assumes 'ownership' of the tableSettings.\n It updates the settings in state locally and notifies caller of\n every change via onChange callback\n */\nexport const TableSettingsPanel = ({\n availableColumns,\n onAddCalculatedColumn,\n onConfigChange,\n onDataSourceConfigChange,\n onNavigateToColumn,\n tableConfig: tableConfigProp,\n permissions = defaultTableSettingsPermissions,\n}: TableSettingsProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-table-settings-panel\",\n css: tableSettingsPanelCss,\n window: targetWindow,\n });\n\n const {\n columnItems,\n columnLabelsValue,\n onChangeColumnLabels,\n onChangeTableAttribute,\n onReorderColumnItems,\n onColumnChange,\n onCommitColumnWidth,\n tableConfig,\n } = useTableSettings({\n availableColumns,\n onConfigChange,\n onDataSourceConfigChange,\n tableConfig: tableConfigProp,\n });\n\n const {\n allowColumnLabelCase = true,\n allowColumnDefaultWidth = true,\n allowGridSeparators = true,\n allowCalculatedColumns,\n ...columnListPermissions\n } = permissions;\n\n return (\n <div className={classBase}>\n {allowColumnLabelCase ||\n allowColumnDefaultWidth ||\n allowGridSeparators ? (\n <div className={`${classBase}-header`}>\n <span>Column Settings</span>\n </div>\n ) : null}\n\n {allowColumnDefaultWidth ? (\n <FormField>\n <FormFieldLabel>Column Width</FormFieldLabel>\n <VuuInput\n className=\"vuuInput\"\n data-embedded\n onCommit={onCommitColumnWidth}\n />\n </FormField>\n ) : null}\n\n {allowColumnLabelCase ? (\n <FormField>\n <FormFieldLabel>Column Labels</FormFieldLabel>\n <ToggleButtonGroup\n className=\"vuuToggleButtonGroup\"\n onChange={onChangeColumnLabels}\n value={columnLabelsValue}\n >\n <ToggleButton className=\"vuuIconToggleButton\" value={0}>\n <Icon name=\"text-strikethrough\" size={48} />\n </ToggleButton>\n <ToggleButton className=\"vuuIconToggleButton\" value={1}>\n <Icon name=\"text-Tt\" size={48} />\n </ToggleButton>\n <ToggleButton className=\"vuuIconToggleButton\" value={2}>\n <Icon name=\"text-T\" size={48} />\n </ToggleButton>\n </ToggleButtonGroup>\n </FormField>\n ) : null}\n\n {allowGridSeparators ? (\n <FormField>\n <FormFieldLabel>Grid separators</FormFieldLabel>\n <div className=\"saltToggleButtonGroup vuuStateButtonGroup saltToggleButtonGroup-horizontal\">\n <ToggleButton\n selected={tableConfig.zebraStripes ?? false}\n onChange={onChangeTableAttribute}\n value=\"zebraStripes\"\n >\n <Icon name=\"row-striping\" size={16} />\n </ToggleButton>\n <ToggleButton\n selected={tableConfig.rowSeparators ?? false}\n onChange={onChangeTableAttribute}\n value=\"rowSeparators\"\n >\n <Icon name=\"row-lines\" size={16} />\n </ToggleButton>\n <ToggleButton\n selected={tableConfig.columnSeparators ?? false}\n onChange={onChangeTableAttribute}\n value=\"columnSeparators\"\n >\n <Icon name=\"col-lines\" size={16} />\n </ToggleButton>\n </div>\n </FormField>\n ) : null}\n\n <ColumnList\n columnItems={columnItems}\n permissions={columnListPermissions}\n onChange={onColumnChange}\n onNavigateToColumn={onNavigateToColumn}\n onReorderColumnItems={onReorderColumnItems}\n />\n\n {allowCalculatedColumns ? (\n <div className={`${classBase}-calculatedButtonbar`}>\n <Button data-icon=\"plus\" onClick={onAddCalculatedColumn} />\n <span className={`${classBase}-calculatedLabel`}>\n Add calculated column\n </span>\n </div>\n ) : null}\n </div>\n );\n};\n"],"names":[],"mappings":"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"}