@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.
- package/cjs/cell-edit-validators/CaseValidator.js +25 -0
- package/cjs/cell-edit-validators/CaseValidator.js.map +1 -0
- package/cjs/cell-edit-validators/PatternValidator.js +31 -0
- package/cjs/cell-edit-validators/PatternValidator.js.map +1 -0
- package/cjs/cell-renderers/background-cell/BackgroundCell.css.js +6 -0
- package/cjs/cell-renderers/background-cell/BackgroundCell.css.js.map +1 -0
- package/cjs/cell-renderers/background-cell/BackgroundCell.js +76 -0
- package/cjs/cell-renderers/background-cell/BackgroundCell.js.map +1 -0
- package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js +6 -0
- package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js.map +1 -0
- package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js +67 -0
- package/cjs/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js.map +1 -0
- package/cjs/cell-renderers/background-cell/BackgroundKeyframes.css.js +6 -0
- package/cjs/cell-renderers/background-cell/BackgroundKeyframes.css.js.map +1 -0
- package/cjs/cell-renderers/background-cell/useDirection.js +20 -0
- package/cjs/cell-renderers/background-cell/useDirection.js.map +1 -0
- package/cjs/cell-renderers/dropdown-cell/DropdownCell.css.js +6 -0
- package/cjs/cell-renderers/dropdown-cell/DropdownCell.css.js.map +1 -0
- package/cjs/cell-renderers/dropdown-cell/DropdownCell.js +94 -0
- package/cjs/cell-renderers/dropdown-cell/DropdownCell.js.map +1 -0
- package/cjs/cell-renderers/lookup-cell/LookupCell.js +23 -0
- package/cjs/cell-renderers/lookup-cell/LookupCell.js.map +1 -0
- package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.css.js +6 -0
- package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.css.js.map +1 -0
- package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.js +62 -0
- package/cjs/cell-renderers/pct-progress-cell/PctProgressCell.js.map +1 -0
- package/cjs/cell-renderers/progress-cell/ProgressCell.css.js +6 -0
- package/cjs/cell-renderers/progress-cell/ProgressCell.css.js.map +1 -0
- package/cjs/cell-renderers/progress-cell/ProgressCell.js +69 -0
- package/cjs/cell-renderers/progress-cell/ProgressCell.js.map +1 -0
- package/cjs/column-expression-input/ColumnExpressionInput.css.js +6 -0
- package/cjs/column-expression-input/ColumnExpressionInput.css.js.map +1 -0
- package/cjs/column-expression-input/ColumnExpressionInput.js +39 -0
- package/cjs/column-expression-input/ColumnExpressionInput.js.map +1 -0
- package/cjs/column-expression-input/column-function-descriptors.js +307 -0
- package/cjs/column-expression-input/column-function-descriptors.js.map +1 -0
- package/cjs/column-expression-input/column-language-parser/ColumnExpressionLanguage.js +28 -0
- package/cjs/column-expression-input/column-language-parser/ColumnExpressionLanguage.js.map +1 -0
- package/cjs/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js +465 -0
- package/cjs/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map +1 -0
- package/cjs/column-expression-input/column-language-parser/column-expression-parse-utils.js +61 -0
- package/cjs/column-expression-input/column-language-parser/column-expression-parse-utils.js.map +1 -0
- package/cjs/column-expression-input/column-language-parser/generated/column-parser.js +21 -0
- package/cjs/column-expression-input/column-language-parser/generated/column-parser.js.map +1 -0
- package/cjs/column-expression-input/functionDocInfo.js +39 -0
- package/cjs/column-expression-input/functionDocInfo.js.map +1 -0
- package/cjs/column-expression-input/highlighting.js +16 -0
- package/cjs/column-expression-input/highlighting.js.map +1 -0
- package/cjs/column-expression-input/theme.js +63 -0
- package/cjs/column-expression-input/theme.js.map +1 -0
- package/cjs/column-expression-input/useColumnAutoComplete.js +358 -0
- package/cjs/column-expression-input/useColumnAutoComplete.js.map +1 -0
- package/cjs/column-expression-input/useColumnExpressionEditor.js +131 -0
- package/cjs/column-expression-input/useColumnExpressionEditor.js.map +1 -0
- package/cjs/column-expression-input/useColumnExpressionSuggestionProvider.js +213 -0
- package/cjs/column-expression-input/useColumnExpressionSuggestionProvider.js.map +1 -0
- package/cjs/column-expression-panel/ColumnExpressionPanel.js +85 -0
- package/cjs/column-expression-panel/ColumnExpressionPanel.js.map +1 -0
- package/cjs/column-expression-panel/useColumnExpression.js +69 -0
- package/cjs/column-expression-panel/useColumnExpression.js.map +1 -0
- package/cjs/column-formatting-settings/BaseNumericFormattingSettings.js +97 -0
- package/cjs/column-formatting-settings/BaseNumericFormattingSettings.js.map +1 -0
- package/cjs/column-formatting-settings/ColumnFormattingPanel.js +104 -0
- package/cjs/column-formatting-settings/ColumnFormattingPanel.js.map +1 -0
- package/cjs/column-formatting-settings/DateTimeFormattingSettings.js +99 -0
- package/cjs/column-formatting-settings/DateTimeFormattingSettings.js.map +1 -0
- package/cjs/column-formatting-settings/LongTypeFormattingSettings.css.js +6 -0
- package/cjs/column-formatting-settings/LongTypeFormattingSettings.css.js.map +1 -0
- package/cjs/column-formatting-settings/LongTypeFormattingSettings.js +49 -0
- package/cjs/column-formatting-settings/LongTypeFormattingSettings.js.map +1 -0
- package/cjs/column-list/ColumnList.css.js +6 -0
- package/cjs/column-list/ColumnList.css.js.map +1 -0
- package/cjs/column-list/ColumnList.js +172 -0
- package/cjs/column-list/ColumnList.js.map +1 -0
- package/cjs/column-menu/ColumnMenu.css.js +6 -0
- package/cjs/column-menu/ColumnMenu.css.js.map +1 -0
- package/cjs/column-menu/ColumnMenu.js +116 -0
- package/cjs/column-menu/ColumnMenu.js.map +1 -0
- package/cjs/column-menu/column-menu-utils.js +489 -0
- package/cjs/column-menu/column-menu-utils.js.map +1 -0
- package/cjs/column-menu/useColumnActions.js +75 -0
- package/cjs/column-menu/useColumnActions.js.map +1 -0
- package/cjs/datasource-stats/DatasourceStats.css.js +6 -0
- package/cjs/datasource-stats/DatasourceStats.css.js.map +1 -0
- package/cjs/datasource-stats/DatasourceStats.js +52 -0
- package/cjs/datasource-stats/DatasourceStats.js.map +1 -0
- package/cjs/index.js +65 -4254
- package/cjs/index.js.map +1 -1
- package/cjs/table-column-settings/ColumnNameLabel.css.js +6 -0
- package/cjs/table-column-settings/ColumnNameLabel.css.js.map +1 -0
- package/cjs/table-column-settings/ColumnNameLabel.js +45 -0
- package/cjs/table-column-settings/ColumnNameLabel.js.map +1 -0
- package/cjs/table-column-settings/ColumnSettingsPanel.css.js +6 -0
- package/cjs/table-column-settings/ColumnSettingsPanel.css.js.map +1 -0
- package/cjs/table-column-settings/ColumnSettingsPanel.js +202 -0
- package/cjs/table-column-settings/ColumnSettingsPanel.js.map +1 -0
- package/cjs/table-column-settings/TableSettingsPanel.css.js +6 -0
- package/cjs/table-column-settings/TableSettingsPanel.css.js.map +1 -0
- package/cjs/table-column-settings/TableSettingsPanel.js +139 -0
- package/cjs/table-column-settings/TableSettingsPanel.js.map +1 -0
- package/cjs/table-column-settings/useColumnSettings.js +224 -0
- package/cjs/table-column-settings/useColumnSettings.js.map +1 -0
- package/cjs/table-column-settings/useTableAndColumnSettings.js +126 -0
- package/cjs/table-column-settings/useTableAndColumnSettings.js.map +1 -0
- package/cjs/table-column-settings/useTableSettings.js +172 -0
- package/cjs/table-column-settings/useTableSettings.js.map +1 -0
- package/cjs/table-provider/TableProvider.js +48 -0
- package/cjs/table-provider/TableProvider.js.map +1 -0
- package/esm/cell-edit-validators/CaseValidator.js +23 -0
- package/esm/cell-edit-validators/CaseValidator.js.map +1 -0
- package/esm/cell-edit-validators/PatternValidator.js +29 -0
- package/esm/cell-edit-validators/PatternValidator.js.map +1 -0
- package/esm/cell-renderers/background-cell/BackgroundCell.css.js +4 -0
- package/esm/cell-renderers/background-cell/BackgroundCell.css.js.map +1 -0
- package/esm/cell-renderers/background-cell/BackgroundCell.js +74 -0
- package/esm/cell-renderers/background-cell/BackgroundCell.js.map +1 -0
- package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js +4 -0
- package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js.map +1 -0
- package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js +65 -0
- package/esm/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js.map +1 -0
- package/esm/cell-renderers/background-cell/BackgroundKeyframes.css.js +4 -0
- package/esm/cell-renderers/background-cell/BackgroundKeyframes.css.js.map +1 -0
- package/esm/cell-renderers/background-cell/useDirection.js +18 -0
- package/esm/cell-renderers/background-cell/useDirection.js.map +1 -0
- package/esm/cell-renderers/dropdown-cell/DropdownCell.css.js +4 -0
- package/esm/cell-renderers/dropdown-cell/DropdownCell.css.js.map +1 -0
- package/esm/cell-renderers/dropdown-cell/DropdownCell.js +92 -0
- package/esm/cell-renderers/dropdown-cell/DropdownCell.js.map +1 -0
- package/esm/cell-renderers/lookup-cell/LookupCell.js +21 -0
- package/esm/cell-renderers/lookup-cell/LookupCell.js.map +1 -0
- package/esm/cell-renderers/pct-progress-cell/PctProgressCell.css.js +4 -0
- package/esm/cell-renderers/pct-progress-cell/PctProgressCell.css.js.map +1 -0
- package/esm/cell-renderers/pct-progress-cell/PctProgressCell.js +60 -0
- package/esm/cell-renderers/pct-progress-cell/PctProgressCell.js.map +1 -0
- package/esm/cell-renderers/progress-cell/ProgressCell.css.js +4 -0
- package/esm/cell-renderers/progress-cell/ProgressCell.css.js.map +1 -0
- package/esm/cell-renderers/progress-cell/ProgressCell.js +67 -0
- package/esm/cell-renderers/progress-cell/ProgressCell.js.map +1 -0
- package/esm/column-expression-input/ColumnExpressionInput.css.js +4 -0
- package/esm/column-expression-input/ColumnExpressionInput.css.js.map +1 -0
- package/esm/column-expression-input/ColumnExpressionInput.js +37 -0
- package/esm/column-expression-input/ColumnExpressionInput.js.map +1 -0
- package/esm/column-expression-input/column-function-descriptors.js +305 -0
- package/esm/column-expression-input/column-function-descriptors.js.map +1 -0
- package/esm/column-expression-input/column-language-parser/ColumnExpressionLanguage.js +26 -0
- package/esm/column-expression-input/column-language-parser/ColumnExpressionLanguage.js.map +1 -0
- package/esm/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js +463 -0
- package/esm/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map +1 -0
- package/esm/column-expression-input/column-language-parser/column-expression-parse-utils.js +56 -0
- package/esm/column-expression-input/column-language-parser/column-expression-parse-utils.js.map +1 -0
- package/esm/column-expression-input/column-language-parser/generated/column-parser.js +19 -0
- package/esm/column-expression-input/column-language-parser/generated/column-parser.js.map +1 -0
- package/esm/column-expression-input/functionDocInfo.js +37 -0
- package/esm/column-expression-input/functionDocInfo.js.map +1 -0
- package/esm/column-expression-input/highlighting.js +14 -0
- package/esm/column-expression-input/highlighting.js.map +1 -0
- package/esm/column-expression-input/theme.js +61 -0
- package/esm/column-expression-input/theme.js.map +1 -0
- package/esm/column-expression-input/useColumnAutoComplete.js +356 -0
- package/esm/column-expression-input/useColumnAutoComplete.js.map +1 -0
- package/esm/column-expression-input/useColumnExpressionEditor.js +129 -0
- package/esm/column-expression-input/useColumnExpressionEditor.js.map +1 -0
- package/esm/column-expression-input/useColumnExpressionSuggestionProvider.js +211 -0
- package/esm/column-expression-input/useColumnExpressionSuggestionProvider.js.map +1 -0
- package/esm/column-expression-panel/ColumnExpressionPanel.js +83 -0
- package/esm/column-expression-panel/ColumnExpressionPanel.js.map +1 -0
- package/esm/column-expression-panel/useColumnExpression.js +67 -0
- package/esm/column-expression-panel/useColumnExpression.js.map +1 -0
- package/esm/column-formatting-settings/BaseNumericFormattingSettings.js +95 -0
- package/esm/column-formatting-settings/BaseNumericFormattingSettings.js.map +1 -0
- package/esm/column-formatting-settings/ColumnFormattingPanel.js +102 -0
- package/esm/column-formatting-settings/ColumnFormattingPanel.js.map +1 -0
- package/esm/column-formatting-settings/DateTimeFormattingSettings.js +97 -0
- package/esm/column-formatting-settings/DateTimeFormattingSettings.js.map +1 -0
- package/esm/column-formatting-settings/LongTypeFormattingSettings.css.js +4 -0
- package/esm/column-formatting-settings/LongTypeFormattingSettings.css.js.map +1 -0
- package/esm/column-formatting-settings/LongTypeFormattingSettings.js +47 -0
- package/esm/column-formatting-settings/LongTypeFormattingSettings.js.map +1 -0
- package/esm/column-list/ColumnList.css.js +4 -0
- package/esm/column-list/ColumnList.css.js.map +1 -0
- package/esm/column-list/ColumnList.js +170 -0
- package/esm/column-list/ColumnList.js.map +1 -0
- package/esm/column-menu/ColumnMenu.css.js +4 -0
- package/esm/column-menu/ColumnMenu.css.js.map +1 -0
- package/esm/column-menu/ColumnMenu.js +114 -0
- package/esm/column-menu/ColumnMenu.js.map +1 -0
- package/esm/column-menu/column-menu-utils.js +480 -0
- package/esm/column-menu/column-menu-utils.js.map +1 -0
- package/esm/column-menu/useColumnActions.js +73 -0
- package/esm/column-menu/useColumnActions.js.map +1 -0
- package/esm/datasource-stats/DatasourceStats.css.js +4 -0
- package/esm/datasource-stats/DatasourceStats.css.js.map +1 -0
- package/esm/datasource-stats/DatasourceStats.js +50 -0
- package/esm/datasource-stats/DatasourceStats.js.map +1 -0
- package/esm/index.js +28 -4221
- package/esm/index.js.map +1 -1
- package/esm/table-column-settings/ColumnNameLabel.css.js +4 -0
- package/esm/table-column-settings/ColumnNameLabel.css.js.map +1 -0
- package/esm/table-column-settings/ColumnNameLabel.js +43 -0
- package/esm/table-column-settings/ColumnNameLabel.js.map +1 -0
- package/esm/table-column-settings/ColumnSettingsPanel.css.js +4 -0
- package/esm/table-column-settings/ColumnSettingsPanel.css.js.map +1 -0
- package/esm/table-column-settings/ColumnSettingsPanel.js +200 -0
- package/esm/table-column-settings/ColumnSettingsPanel.js.map +1 -0
- package/esm/table-column-settings/TableSettingsPanel.css.js +4 -0
- package/esm/table-column-settings/TableSettingsPanel.css.js.map +1 -0
- package/esm/table-column-settings/TableSettingsPanel.js +136 -0
- package/esm/table-column-settings/TableSettingsPanel.js.map +1 -0
- package/esm/table-column-settings/useColumnSettings.js +222 -0
- package/esm/table-column-settings/useColumnSettings.js.map +1 -0
- package/esm/table-column-settings/useTableAndColumnSettings.js +122 -0
- package/esm/table-column-settings/useTableAndColumnSettings.js.map +1 -0
- package/esm/table-column-settings/useTableSettings.js +170 -0
- package/esm/table-column-settings/useTableSettings.js.map +1 -0
- package/esm/table-provider/TableProvider.js +44 -0
- package/esm/table-provider/TableProvider.js.map +1 -0
- package/package.json +11 -11
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var core = require('@salt-ds/core');
|
|
5
|
+
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
|
|
8
|
+
const classBase = "vuuFormattingSettings";
|
|
9
|
+
const BaseNumericFormattingSettings = ({
|
|
10
|
+
column,
|
|
11
|
+
onChangeFormatting: onChange
|
|
12
|
+
}) => {
|
|
13
|
+
const [formattingSettings, setFormattingSettings] = react.useState(vuuUtils.getTypeFormattingFromColumn(column));
|
|
14
|
+
const handleInputKeyDown = react.useCallback(
|
|
15
|
+
(evt) => {
|
|
16
|
+
if (evt.key === "Enter" || evt.key === "Tab") {
|
|
17
|
+
onChange(formattingSettings);
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
[formattingSettings, onChange]
|
|
21
|
+
);
|
|
22
|
+
const handleChangeDecimals = react.useCallback(
|
|
23
|
+
(evt) => {
|
|
24
|
+
const { value } = evt.target;
|
|
25
|
+
const numericValue = value === "" ? void 0 : isNaN(parseInt(value)) ? void 0 : parseInt(value);
|
|
26
|
+
const newFormattingSettings = {
|
|
27
|
+
...formattingSettings,
|
|
28
|
+
decimals: numericValue
|
|
29
|
+
};
|
|
30
|
+
setFormattingSettings(newFormattingSettings);
|
|
31
|
+
},
|
|
32
|
+
[formattingSettings]
|
|
33
|
+
);
|
|
34
|
+
const handleChangeAlignDecimals = react.useCallback(
|
|
35
|
+
(evt) => {
|
|
36
|
+
const { checked } = evt.target;
|
|
37
|
+
const newFormattingSettings = {
|
|
38
|
+
...formattingSettings,
|
|
39
|
+
alignOnDecimals: checked
|
|
40
|
+
};
|
|
41
|
+
setFormattingSettings(newFormattingSettings);
|
|
42
|
+
onChange(newFormattingSettings);
|
|
43
|
+
},
|
|
44
|
+
[formattingSettings, onChange]
|
|
45
|
+
);
|
|
46
|
+
const handleChangeZeroPad = react.useCallback(
|
|
47
|
+
(evt) => {
|
|
48
|
+
const { checked } = evt.target;
|
|
49
|
+
const newFormattingSettings = {
|
|
50
|
+
...formattingSettings,
|
|
51
|
+
zeroPad: checked
|
|
52
|
+
};
|
|
53
|
+
setFormattingSettings(newFormattingSettings);
|
|
54
|
+
onChange(newFormattingSettings);
|
|
55
|
+
},
|
|
56
|
+
[formattingSettings, onChange]
|
|
57
|
+
);
|
|
58
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classBase, children: [
|
|
59
|
+
/* @__PURE__ */ jsxRuntime.jsxs(core.FormField, { "data-field": "decimals", children: [
|
|
60
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.FormFieldLabel, { children: "Number of decimals" }),
|
|
61
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62
|
+
core.Input,
|
|
63
|
+
{
|
|
64
|
+
className: "vuuInput",
|
|
65
|
+
onChange: handleChangeDecimals,
|
|
66
|
+
onKeyDown: handleInputKeyDown,
|
|
67
|
+
value: formattingSettings.decimals ?? ""
|
|
68
|
+
}
|
|
69
|
+
)
|
|
70
|
+
] }),
|
|
71
|
+
/* @__PURE__ */ jsxRuntime.jsxs(core.FormField, { labelPlacement: "left", children: [
|
|
72
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.FormFieldLabel, { children: "Align on decimals" }),
|
|
73
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
74
|
+
core.Switch,
|
|
75
|
+
{
|
|
76
|
+
checked: formattingSettings.alignOnDecimals ?? false,
|
|
77
|
+
onChange: handleChangeAlignDecimals,
|
|
78
|
+
value: "align-decimals"
|
|
79
|
+
}
|
|
80
|
+
)
|
|
81
|
+
] }),
|
|
82
|
+
/* @__PURE__ */ jsxRuntime.jsxs(core.FormField, { labelPlacement: "left", children: [
|
|
83
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.FormFieldLabel, { children: "Zero pad decimals" }),
|
|
84
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
85
|
+
core.Switch,
|
|
86
|
+
{
|
|
87
|
+
checked: formattingSettings.zeroPad ?? false,
|
|
88
|
+
onChange: handleChangeZeroPad,
|
|
89
|
+
value: "zero-pad"
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
] })
|
|
93
|
+
] });
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
exports.BaseNumericFormattingSettings = BaseNumericFormattingSettings;
|
|
97
|
+
//# sourceMappingURL=BaseNumericFormattingSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseNumericFormattingSettings.js","sources":["../../src/column-formatting-settings/BaseNumericFormattingSettings.tsx"],"sourcesContent":["import { FormField, FormFieldLabel, Input, Switch } from \"@salt-ds/core\";\nimport {\n ColumnTypeFormatting,\n FormattingSettingsProps,\n} from \"@vuu-ui/vuu-table-types\";\nimport { getTypeFormattingFromColumn } from \"@vuu-ui/vuu-utils\";\nimport {\n ChangeEvent,\n KeyboardEvent,\n SyntheticEvent,\n useCallback,\n useState,\n} from \"react\";\n\nconst classBase = \"vuuFormattingSettings\";\n\nexport const BaseNumericFormattingSettings = ({\n column,\n onChangeFormatting: onChange,\n}: FormattingSettingsProps) => {\n const [formattingSettings, setFormattingSettings] =\n useState<ColumnTypeFormatting>(getTypeFormattingFromColumn(column));\n\n const handleInputKeyDown = useCallback(\n (evt: KeyboardEvent<HTMLInputElement>) => {\n if (evt.key === \"Enter\" || evt.key === \"Tab\") {\n onChange(formattingSettings);\n }\n },\n [formattingSettings, onChange],\n );\n\n const handleChangeDecimals = useCallback(\n (evt: SyntheticEvent) => {\n const { value } = evt.target as HTMLFormElement;\n const numericValue: number | undefined =\n value === \"\"\n ? undefined\n : isNaN(parseInt(value))\n ? undefined\n : parseInt(value);\n\n const newFormattingSettings = {\n ...formattingSettings,\n decimals: numericValue,\n };\n setFormattingSettings(newFormattingSettings);\n },\n [formattingSettings],\n );\n\n const handleChangeAlignDecimals = useCallback(\n (evt: ChangeEvent<HTMLInputElement>) => {\n const { checked } = evt.target as HTMLInputElement;\n const newFormattingSettings = {\n ...formattingSettings,\n alignOnDecimals: checked,\n };\n setFormattingSettings(newFormattingSettings);\n onChange(newFormattingSettings);\n },\n [formattingSettings, onChange],\n );\n\n const handleChangeZeroPad = useCallback(\n (evt: ChangeEvent<HTMLInputElement>) => {\n const { checked } = evt.target as HTMLInputElement;\n const newFormattingSettings = {\n ...formattingSettings,\n zeroPad: checked,\n };\n setFormattingSettings(newFormattingSettings);\n onChange(newFormattingSettings);\n },\n [formattingSettings, onChange],\n );\n\n return (\n <div className={classBase}>\n <FormField data-field=\"decimals\">\n <FormFieldLabel>Number of decimals</FormFieldLabel>\n <Input\n className=\"vuuInput\"\n onChange={handleChangeDecimals}\n onKeyDown={handleInputKeyDown}\n value={formattingSettings.decimals ?? \"\"}\n />\n </FormField>\n\n <FormField labelPlacement=\"left\">\n <FormFieldLabel>Align on decimals</FormFieldLabel>\n <Switch\n checked={formattingSettings.alignOnDecimals ?? false}\n onChange={handleChangeAlignDecimals}\n value=\"align-decimals\"\n />\n </FormField>\n <FormField labelPlacement=\"left\">\n <FormFieldLabel>Zero pad decimals</FormFieldLabel>\n <Switch\n checked={formattingSettings.zeroPad ?? false}\n onChange={handleChangeZeroPad}\n value=\"zero-pad\"\n />\n </FormField>\n </div>\n );\n};\n"],"names":["useState","getTypeFormattingFromColumn","useCallback","jsxs","FormField","jsx","FormFieldLabel","Input","Switch"],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
5
|
+
var core = require('@salt-ds/core');
|
|
6
|
+
var cx = require('clsx');
|
|
7
|
+
var react = require('react');
|
|
8
|
+
var BaseNumericFormattingSettings = require('./BaseNumericFormattingSettings.js');
|
|
9
|
+
var LongTypeFormattingSettings = require('./LongTypeFormattingSettings.js');
|
|
10
|
+
|
|
11
|
+
const classBase = "vuuColumnFormattingPanel";
|
|
12
|
+
const ColumnFormattingPanel = ({
|
|
13
|
+
availableRenderers,
|
|
14
|
+
className,
|
|
15
|
+
column,
|
|
16
|
+
onChangeFormatting,
|
|
17
|
+
onChangeColumnType,
|
|
18
|
+
onChangeRendering,
|
|
19
|
+
...htmlAttributes
|
|
20
|
+
}) => {
|
|
21
|
+
const formattingSettingsComponent = react.useMemo(
|
|
22
|
+
() => getFormattingSettingsComponent({
|
|
23
|
+
column,
|
|
24
|
+
onChangeFormatting,
|
|
25
|
+
onChangeColumnType
|
|
26
|
+
}),
|
|
27
|
+
[column, onChangeColumnType, onChangeFormatting]
|
|
28
|
+
);
|
|
29
|
+
console.log({ formattingSettingsComponent });
|
|
30
|
+
const ConfigEditor = react.useMemo(() => {
|
|
31
|
+
const { type } = column;
|
|
32
|
+
if (vuuUtils.isTypeDescriptor(type) && vuuUtils.isColumnTypeRenderer(type.renderer)) {
|
|
33
|
+
const cellRendererOptions = vuuUtils.getCellRendererOptions(type.renderer.name);
|
|
34
|
+
return vuuUtils.getConfigurationEditor(cellRendererOptions?.configEditor);
|
|
35
|
+
}
|
|
36
|
+
return void 0;
|
|
37
|
+
}, [column]);
|
|
38
|
+
const selectedCellRenderer = react.useMemo(() => {
|
|
39
|
+
const { type } = column;
|
|
40
|
+
const [defaultRenderer] = availableRenderers;
|
|
41
|
+
const rendererName = vuuUtils.isTypeDescriptor(type) && vuuUtils.isColumnTypeRenderer(type.renderer) ? type.renderer.name : void 0;
|
|
42
|
+
const configuredRenderer = availableRenderers.find(
|
|
43
|
+
(renderer) => renderer.name === rendererName
|
|
44
|
+
);
|
|
45
|
+
return configuredRenderer ?? defaultRenderer;
|
|
46
|
+
}, [availableRenderers, column]);
|
|
47
|
+
const handleChangeRenderer = react.useCallback(
|
|
48
|
+
(_e, [cellRendererDescriptor]) => {
|
|
49
|
+
const renderProps = {
|
|
50
|
+
name: cellRendererDescriptor.name
|
|
51
|
+
};
|
|
52
|
+
onChangeRendering?.(renderProps);
|
|
53
|
+
},
|
|
54
|
+
[onChangeRendering]
|
|
55
|
+
);
|
|
56
|
+
const { serverDataType = "string" } = column;
|
|
57
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ...htmlAttributes, className: `vuuColumnSettingsPanel-header`, children: [
|
|
58
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { children: "Formatting" }),
|
|
59
|
+
/* @__PURE__ */ jsxRuntime.jsxs(core.FormField, { children: [
|
|
60
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.FormFieldLabel, { children: `Renderer (data type ${column.serverDataType})` }),
|
|
61
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
62
|
+
core.Dropdown,
|
|
63
|
+
{
|
|
64
|
+
className: cx(`${classBase}-renderer`),
|
|
65
|
+
onSelectionChange: handleChangeRenderer,
|
|
66
|
+
selected: selectedCellRenderer ? [selectedCellRenderer] : [],
|
|
67
|
+
value: selectedCellRenderer?.label ?? selectedCellRenderer?.name,
|
|
68
|
+
children: availableRenderers.map((cellRenderer, i) => /* @__PURE__ */ jsxRuntime.jsx(core.Option, { value: cellRenderer, children: cellRenderer.label ?? cellRenderer.name }, i))
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
] }),
|
|
72
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
73
|
+
"div",
|
|
74
|
+
{
|
|
75
|
+
className: cx(classBase, className, `${classBase}-${serverDataType}`),
|
|
76
|
+
children: [
|
|
77
|
+
formattingSettingsComponent,
|
|
78
|
+
ConfigEditor ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
79
|
+
ConfigEditor,
|
|
80
|
+
{
|
|
81
|
+
column,
|
|
82
|
+
onChangeRendering
|
|
83
|
+
}
|
|
84
|
+
) : null
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
)
|
|
88
|
+
] });
|
|
89
|
+
};
|
|
90
|
+
function getFormattingSettingsComponent(props) {
|
|
91
|
+
const { column } = props;
|
|
92
|
+
switch (column.serverDataType) {
|
|
93
|
+
case "double":
|
|
94
|
+
case "int":
|
|
95
|
+
return /* @__PURE__ */ jsxRuntime.jsx(BaseNumericFormattingSettings.BaseNumericFormattingSettings, { ...props });
|
|
96
|
+
case "long":
|
|
97
|
+
return /* @__PURE__ */ jsxRuntime.jsx(LongTypeFormattingSettings.LongTypeFormattingSettings, { ...props });
|
|
98
|
+
default:
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
exports.ColumnFormattingPanel = ColumnFormattingPanel;
|
|
104
|
+
//# sourceMappingURL=ColumnFormattingPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnFormattingPanel.js","sources":["../../src/column-formatting-settings/ColumnFormattingPanel.tsx"],"sourcesContent":["import {\n ColumnDescriptor,\n ColumnDescriptorCustomRenderer,\n ColumnTypeRendering,\n FormattingSettingsProps,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n CellRendererDescriptor,\n ConfigurationEditorProps,\n getCellRendererOptions,\n getConfigurationEditor,\n isColumnTypeRenderer,\n isTypeDescriptor,\n} from \"@vuu-ui/vuu-utils\";\nimport { Dropdown, FormField, FormFieldLabel, Option } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, SyntheticEvent, useCallback, useMemo } from \"react\";\nimport { BaseNumericFormattingSettings } from \"./BaseNumericFormattingSettings\";\nimport { LongTypeFormattingSettings } from \"./LongTypeFormattingSettings\";\n\nconst classBase = \"vuuColumnFormattingPanel\";\n\nexport interface ColumnFormattingPanelProps\n extends HTMLAttributes<HTMLDivElement>,\n FormattingSettingsProps {\n availableRenderers: CellRendererDescriptor[];\n column: ColumnDescriptor;\n onChangeRendering: (renderProps: ColumnTypeRendering) => void;\n}\n\nexport const ColumnFormattingPanel = ({\n availableRenderers,\n className,\n column,\n onChangeFormatting,\n onChangeColumnType,\n onChangeRendering,\n ...htmlAttributes\n}: ColumnFormattingPanelProps) => {\n const formattingSettingsComponent = useMemo(\n () =>\n getFormattingSettingsComponent({\n column,\n onChangeFormatting,\n onChangeColumnType,\n }),\n [column, onChangeColumnType, onChangeFormatting],\n );\n\n console.log({ formattingSettingsComponent });\n\n const ConfigEditor = useMemo<\n React.FC<ConfigurationEditorProps> | undefined\n >(() => {\n const { type } = column;\n if (isTypeDescriptor(type) && isColumnTypeRenderer(type.renderer)) {\n const cellRendererOptions = getCellRendererOptions(type.renderer.name);\n return getConfigurationEditor(cellRendererOptions?.configEditor);\n }\n return undefined;\n }, [column]);\n\n const selectedCellRenderer = useMemo(() => {\n const { type } = column;\n const [defaultRenderer] = availableRenderers;\n const rendererName =\n isTypeDescriptor(type) && isColumnTypeRenderer(type.renderer)\n ? type.renderer.name\n : undefined;\n const configuredRenderer = availableRenderers.find(\n (renderer) => renderer.name === rendererName,\n );\n return configuredRenderer ?? defaultRenderer;\n }, [availableRenderers, column]);\n\n const handleChangeRenderer = useCallback(\n (\n _e: SyntheticEvent,\n [cellRendererDescriptor]: CellRendererDescriptor[],\n ) => {\n const renderProps: ColumnTypeRendering = {\n name: cellRendererDescriptor.name,\n };\n onChangeRendering?.(renderProps);\n },\n [onChangeRendering],\n );\n\n const { serverDataType = \"string\" } = column;\n\n return (\n <div {...htmlAttributes} className={`vuuColumnSettingsPanel-header`}>\n <div>Formatting</div>\n\n <FormField>\n <FormFieldLabel>\n {`Renderer (data type ${column.serverDataType})`}\n </FormFieldLabel>\n <Dropdown<CellRendererDescriptor>\n className={cx(`${classBase}-renderer`)}\n onSelectionChange={handleChangeRenderer}\n selected={selectedCellRenderer ? [selectedCellRenderer] : []}\n value={selectedCellRenderer?.label ?? selectedCellRenderer?.name}\n >\n {availableRenderers.map((cellRenderer, i) => (\n <Option key={i} value={cellRenderer}>\n {cellRenderer.label ?? cellRenderer.name}\n </Option>\n ))}\n </Dropdown>\n </FormField>\n <div\n className={cx(classBase, className, `${classBase}-${serverDataType}`)}\n >\n {formattingSettingsComponent}\n {ConfigEditor ? (\n <ConfigEditor\n column={column as ColumnDescriptorCustomRenderer}\n onChangeRendering={onChangeRendering}\n />\n ) : null}\n </div>\n </div>\n );\n};\n\nfunction getFormattingSettingsComponent(props: FormattingSettingsProps) {\n const { column } = props;\n\n switch (column.serverDataType) {\n case \"double\":\n case \"int\":\n return <BaseNumericFormattingSettings {...props} />;\n case \"long\":\n return <LongTypeFormattingSettings {...props} />;\n default:\n return null;\n }\n}\n"],"names":["useMemo","isTypeDescriptor","isColumnTypeRenderer","getCellRendererOptions","getConfigurationEditor","useCallback","jsxs","jsx","FormField","FormFieldLabel","Dropdown","Option","BaseNumericFormattingSettings","LongTypeFormattingSettings"],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
5
|
+
var core = require('@salt-ds/core');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
|
|
8
|
+
const toggleValues = ["date", "time", "both"];
|
|
9
|
+
function getToggleValue(pattern) {
|
|
10
|
+
return !pattern.time ? "date" : !pattern.date ? "time" : "both";
|
|
11
|
+
}
|
|
12
|
+
const getSelectedPattern = (pattern) => {
|
|
13
|
+
if (vuuUtils.isDatePattern(pattern)) {
|
|
14
|
+
return [pattern];
|
|
15
|
+
} else if (vuuUtils.isTimePattern(pattern)) {
|
|
16
|
+
return [pattern];
|
|
17
|
+
} else {
|
|
18
|
+
return void 0;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const DateTimeFormattingSettings = ({ column, onChangeFormatting: onChange }) => {
|
|
22
|
+
const formatting = vuuUtils.getTypeFormattingFromColumn(column);
|
|
23
|
+
const { pattern = vuuUtils.fallbackDateTimePattern } = formatting;
|
|
24
|
+
const toggleValue = react.useMemo(() => getToggleValue(pattern), [pattern]);
|
|
25
|
+
const [fallbackState, setFallbackState] = react.useState(
|
|
26
|
+
{
|
|
27
|
+
time: pattern.time ?? vuuUtils.defaultPatternsByType.time,
|
|
28
|
+
date: pattern.date ?? vuuUtils.defaultPatternsByType.date
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
const onPatternChange = react.useCallback(
|
|
32
|
+
(pattern2) => onChange({ ...formatting, pattern: pattern2 }),
|
|
33
|
+
[onChange, formatting]
|
|
34
|
+
);
|
|
35
|
+
const onDropdownChange = react.useCallback(
|
|
36
|
+
(dateTime) => (_, [selectedPattern]) => {
|
|
37
|
+
const updatedPattern = {
|
|
38
|
+
...pattern ?? {},
|
|
39
|
+
[dateTime]: selectedPattern
|
|
40
|
+
};
|
|
41
|
+
setFallbackState((s) => ({
|
|
42
|
+
time: updatedPattern.time ?? s.time,
|
|
43
|
+
date: updatedPattern.date ?? s.date
|
|
44
|
+
}));
|
|
45
|
+
onPatternChange(updatedPattern);
|
|
46
|
+
},
|
|
47
|
+
[onPatternChange, pattern]
|
|
48
|
+
);
|
|
49
|
+
const onToggleChange = react.useCallback(
|
|
50
|
+
(evnt) => {
|
|
51
|
+
const value = evnt.currentTarget.value;
|
|
52
|
+
switch (value) {
|
|
53
|
+
case "time":
|
|
54
|
+
return onPatternChange({
|
|
55
|
+
[value]: pattern[value] ?? fallbackState[value]
|
|
56
|
+
});
|
|
57
|
+
case "date":
|
|
58
|
+
return onPatternChange({
|
|
59
|
+
[value]: pattern[value] ?? fallbackState[value]
|
|
60
|
+
});
|
|
61
|
+
case "both":
|
|
62
|
+
return onPatternChange({
|
|
63
|
+
time: pattern.time ?? fallbackState.time,
|
|
64
|
+
date: pattern.date ?? fallbackState.date
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
[onPatternChange, pattern, fallbackState]
|
|
69
|
+
);
|
|
70
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
71
|
+
/* @__PURE__ */ jsxRuntime.jsxs(core.FormField, { labelPlacement: "top", children: [
|
|
72
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.FormFieldLabel, { children: "Display" }),
|
|
73
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
74
|
+
core.ToggleButtonGroup,
|
|
75
|
+
{
|
|
76
|
+
className: "vuuToggleButtonGroup",
|
|
77
|
+
onChange: onToggleChange,
|
|
78
|
+
value: toggleValue,
|
|
79
|
+
"data-variant": "primary",
|
|
80
|
+
children: toggleValues.map((v) => /* @__PURE__ */ jsxRuntime.jsx(core.ToggleButton, { value: v, children: v.toUpperCase() }, v))
|
|
81
|
+
}
|
|
82
|
+
)
|
|
83
|
+
] }),
|
|
84
|
+
["date", "time"].filter((v) => !!pattern[v]).map((v) => /* @__PURE__ */ jsxRuntime.jsxs(core.FormField, { labelPlacement: "top", children: [
|
|
85
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.FormFieldLabel, { children: `${vuuUtils.dateTimeLabelByType[v]} pattern` }),
|
|
86
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
87
|
+
core.Dropdown,
|
|
88
|
+
{
|
|
89
|
+
onSelectionChange: onDropdownChange(v),
|
|
90
|
+
selected: getSelectedPattern(pattern[v]),
|
|
91
|
+
children: vuuUtils.supportedDateTimePatterns[v].map((pattern2, i) => /* @__PURE__ */ jsxRuntime.jsx(core.Option, { value: pattern2, children: pattern2 }, i))
|
|
92
|
+
}
|
|
93
|
+
)
|
|
94
|
+
] }, v))
|
|
95
|
+
] });
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
exports.DateTimeFormattingSettings = DateTimeFormattingSettings;
|
|
99
|
+
//# sourceMappingURL=DateTimeFormattingSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateTimeFormattingSettings.js","sources":["../../src/column-formatting-settings/DateTimeFormattingSettings.tsx"],"sourcesContent":["import { DateTimeDataValueDescriptor } from \"@vuu-ui/vuu-data-types\";\nimport { FormattingSettingsProps } from \"@vuu-ui/vuu-table-types\";\nimport {\n DatePattern,\n DateTimePattern,\n TimePattern,\n dateTimeLabelByType,\n defaultPatternsByType,\n fallbackDateTimePattern,\n getTypeFormattingFromColumn,\n isDatePattern,\n isTimePattern,\n supportedDateTimePatterns,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n Dropdown,\n FormField,\n FormFieldLabel,\n Option,\n ToggleButton,\n ToggleButtonGroup,\n} from \"@salt-ds/core\";\nimport React, { SyntheticEvent, useCallback, useMemo, useState } from \"react\";\n\nconst toggleValues = [\"date\", \"time\", \"both\"] as const;\ntype ToggleValue = (typeof toggleValues)[number];\n\nfunction getToggleValue(pattern: DateTimePattern): ToggleValue {\n return !pattern.time ? \"date\" : !pattern.date ? \"time\" : \"both\";\n}\n\ntype DateTime = keyof DateTimePattern;\n\nconst getSelectedPattern = (\n pattern?: DatePattern | TimePattern,\n): DatePattern[] | TimePattern[] | undefined => {\n if (isDatePattern(pattern)) {\n return [pattern] as DatePattern[];\n } else if (isTimePattern(pattern)) {\n return [pattern] as TimePattern[];\n } else {\n return undefined;\n }\n};\n\nexport const DateTimeFormattingSettings: React.FC<\n FormattingSettingsProps<DateTimeDataValueDescriptor>\n> = ({ column, onChangeFormatting: onChange }) => {\n const formatting = getTypeFormattingFromColumn(column);\n const { pattern = fallbackDateTimePattern } = formatting;\n const toggleValue = useMemo(() => getToggleValue(pattern), [pattern]);\n\n const [fallbackState, setFallbackState] = useState<Required<DateTimePattern>>(\n {\n time: pattern.time ?? defaultPatternsByType.time,\n date: pattern.date ?? defaultPatternsByType.date,\n },\n );\n\n const onPatternChange = useCallback(\n (pattern: DateTimePattern) => onChange({ ...formatting, pattern }),\n [onChange, formatting],\n );\n\n const onDropdownChange = useCallback<\n <T extends DateTime>(\n dateTime: T,\n ) => (\n e: SyntheticEvent,\n newSelected: Array<Required<DateTimePattern>[T]>,\n ) => void\n >(\n (dateTime) =>\n (_, [selectedPattern]) => {\n const updatedPattern = {\n ...(pattern ?? {}),\n [dateTime]: selectedPattern,\n };\n setFallbackState((s) => ({\n time: updatedPattern.time ?? s.time,\n date: updatedPattern.date ?? s.date,\n }));\n onPatternChange(updatedPattern);\n },\n [onPatternChange, pattern],\n );\n\n const onToggleChange = useCallback(\n (evnt: SyntheticEvent<HTMLButtonElement, Event>) => {\n const value = evnt.currentTarget.value as ToggleValue;\n switch (value) {\n case \"time\":\n return onPatternChange({\n [value]: pattern[value] ?? fallbackState[value],\n });\n case \"date\":\n return onPatternChange({\n [value]: pattern[value] ?? fallbackState[value],\n });\n case \"both\":\n return onPatternChange({\n time: pattern.time ?? fallbackState.time,\n date: pattern.date ?? fallbackState.date,\n });\n }\n },\n [onPatternChange, pattern, fallbackState],\n );\n\n return (\n <>\n <FormField labelPlacement=\"top\">\n <FormFieldLabel>{\"Display\"}</FormFieldLabel>\n <ToggleButtonGroup\n className=\"vuuToggleButtonGroup\"\n onChange={onToggleChange}\n value={toggleValue}\n data-variant=\"primary\"\n >\n {toggleValues.map((v) => (\n <ToggleButton key={v} value={v}>\n {v.toUpperCase()}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n </FormField>\n\n {([\"date\", \"time\"] as const)\n .filter((v) => !!pattern[v])\n .map((v) => (\n <FormField labelPlacement=\"top\" key={v}>\n <FormFieldLabel>{`${dateTimeLabelByType[v]} pattern`}</FormFieldLabel>\n <Dropdown<Required<DateTimePattern>[typeof v]>\n onSelectionChange={onDropdownChange(v)}\n selected={getSelectedPattern(pattern[v])}\n >\n {supportedDateTimePatterns[v].map((pattern, i) => (\n <Option key={i} value={pattern}>\n {pattern}\n </Option>\n ))}\n </Dropdown>\n </FormField>\n ))}\n </>\n );\n};\n"],"names":["isDatePattern","isTimePattern","getTypeFormattingFromColumn","fallbackDateTimePattern","useMemo","useState","defaultPatternsByType","useCallback","pattern","jsxs","Fragment","FormField","jsx","FormFieldLabel","ToggleButtonGroup","ToggleButton","dateTimeLabelByType","Dropdown","supportedDateTimePatterns","Option"],"mappings":";;;;;;;AAwBA,MAAM,YAAe,GAAA,CAAC,MAAQ,EAAA,MAAA,EAAQ,MAAM,CAAA;AAG5C,SAAS,eAAe,OAAuC,EAAA;AAC7D,EAAA,OAAO,CAAC,OAAQ,CAAA,IAAA,GAAO,SAAS,CAAC,OAAA,CAAQ,OAAO,MAAS,GAAA,MAAA;AAC3D;AAIA,MAAM,kBAAA,GAAqB,CACzB,OAC8C,KAAA;AAC9C,EAAI,IAAAA,sBAAA,CAAc,OAAO,CAAG,EAAA;AAC1B,IAAA,OAAO,CAAC,OAAO,CAAA;AAAA,GACjB,MAAA,IAAWC,sBAAc,CAAA,OAAO,CAAG,EAAA;AACjC,IAAA,OAAO,CAAC,OAAO,CAAA;AAAA,GACV,MAAA;AACL,IAAO,OAAA,KAAA,CAAA;AAAA;AAEX,CAAA;AAEO,MAAM,6BAET,CAAC,EAAE,MAAQ,EAAA,kBAAA,EAAoB,UAAe,KAAA;AAChD,EAAM,MAAA,UAAA,GAAaC,qCAA4B,MAAM,CAAA;AACrD,EAAM,MAAA,EAAE,OAAU,GAAAC,gCAAA,EAA4B,GAAA,UAAA;AAC9C,EAAM,MAAA,WAAA,GAAcC,cAAQ,MAAM,cAAA,CAAe,OAAO,CAAG,EAAA,CAAC,OAAO,CAAC,CAAA;AAEpE,EAAM,MAAA,CAAC,aAAe,EAAA,gBAAgB,CAAI,GAAAC,cAAA;AAAA,IACxC;AAAA,MACE,IAAA,EAAM,OAAQ,CAAA,IAAA,IAAQC,8BAAsB,CAAA,IAAA;AAAA,MAC5C,IAAA,EAAM,OAAQ,CAAA,IAAA,IAAQA,8BAAsB,CAAA;AAAA;AAC9C,GACF;AAEA,EAAA,MAAM,eAAkB,GAAAC,iBAAA;AAAA,IACtB,CAACC,aAA6B,QAAS,CAAA,EAAE,GAAG,UAAY,EAAA,OAAA,EAAAA,UAAS,CAAA;AAAA,IACjE,CAAC,UAAU,UAAU;AAAA,GACvB;AAEA,EAAA,MAAM,gBAAmB,GAAAD,iBAAA;AAAA,IAQvB,CAAC,QACC,KAAA,CAAC,CAAG,EAAA,CAAC,eAAe,CAAM,KAAA;AACxB,MAAA,MAAM,cAAiB,GAAA;AAAA,QACrB,GAAI,WAAW,EAAC;AAAA,QAChB,CAAC,QAAQ,GAAG;AAAA,OACd;AACA,MAAA,gBAAA,CAAiB,CAAC,CAAO,MAAA;AAAA,QACvB,IAAA,EAAM,cAAe,CAAA,IAAA,IAAQ,CAAE,CAAA,IAAA;AAAA,QAC/B,IAAA,EAAM,cAAe,CAAA,IAAA,IAAQ,CAAE,CAAA;AAAA,OAC/B,CAAA,CAAA;AACF,MAAA,eAAA,CAAgB,cAAc,CAAA;AAAA,KAChC;AAAA,IACF,CAAC,iBAAiB,OAAO;AAAA,GAC3B;AAEA,EAAA,MAAM,cAAiB,GAAAA,iBAAA;AAAA,IACrB,CAAC,IAAmD,KAAA;AAClD,MAAM,MAAA,KAAA,GAAQ,KAAK,aAAc,CAAA,KAAA;AACjC,MAAA,QAAQ,KAAO;AAAA,QACb,KAAK,MAAA;AACH,UAAA,OAAO,eAAgB,CAAA;AAAA,YACrB,CAAC,KAAK,GAAG,QAAQ,KAAK,CAAA,IAAK,cAAc,KAAK;AAAA,WAC/C,CAAA;AAAA,QACH,KAAK,MAAA;AACH,UAAA,OAAO,eAAgB,CAAA;AAAA,YACrB,CAAC,KAAK,GAAG,QAAQ,KAAK,CAAA,IAAK,cAAc,KAAK;AAAA,WAC/C,CAAA;AAAA,QACH,KAAK,MAAA;AACH,UAAA,OAAO,eAAgB,CAAA;AAAA,YACrB,IAAA,EAAM,OAAQ,CAAA,IAAA,IAAQ,aAAc,CAAA,IAAA;AAAA,YACpC,IAAA,EAAM,OAAQ,CAAA,IAAA,IAAQ,aAAc,CAAA;AAAA,WACrC,CAAA;AAAA;AACL,KACF;AAAA,IACA,CAAC,eAAiB,EAAA,OAAA,EAAS,aAAa;AAAA,GAC1C;AAEA,EAAA,uBAEIE,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAACD,eAAA,CAAAE,cAAA,EAAA,EAAU,gBAAe,KACxB,EAAA,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAACC,uBAAgB,QAAU,EAAA,SAAA,EAAA,CAAA;AAAA,sBAC3BD,cAAA;AAAA,QAACE,sBAAA;AAAA,QAAA;AAAA,UACC,SAAU,EAAA,sBAAA;AAAA,UACV,QAAU,EAAA,cAAA;AAAA,UACV,KAAO,EAAA,WAAA;AAAA,UACP,cAAa,EAAA,SAAA;AAAA,UAEZ,QAAa,EAAA,YAAA,CAAA,GAAA,CAAI,CAAC,CAAA,qBAChBF,cAAA,CAAAG,iBAAA,EAAA,EAAqB,KAAO,EAAA,CAAA,EAC1B,QAAE,EAAA,CAAA,CAAA,WAAA,EADc,EAAA,EAAA,CAEnB,CACD;AAAA;AAAA;AACH,KACF,EAAA,CAAA;AAAA,IAEE,CAAC,MAAQ,EAAA,MAAM,EACd,MAAO,CAAA,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAC1B,GAAI,CAAA,CAAC,sBACHN,eAAA,CAAAE,cAAA,EAAA,EAAU,gBAAe,KACxB,EAAA,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAACC,mBAAgB,EAAA,EAAA,QAAA,EAAA,CAAA,EAAGG,4BAAoB,CAAA,CAAC,CAAC,CAAW,QAAA,CAAA,EAAA,CAAA;AAAA,sBACrDJ,cAAA;AAAA,QAACK,aAAA;AAAA,QAAA;AAAA,UACC,iBAAA,EAAmB,iBAAiB,CAAC,CAAA;AAAA,UACrC,QAAU,EAAA,kBAAA,CAAmB,OAAQ,CAAA,CAAC,CAAC,CAAA;AAAA,UAEtC,QAA0B,EAAAC,kCAAA,CAAA,CAAC,CAAE,CAAA,GAAA,CAAI,CAACV,QAAS,EAAA,CAAA,qBACzCI,cAAA,CAAAO,WAAA,EAAA,EAAe,KAAOX,EAAAA,QAAAA,EACpB,QAAAA,EAAAA,QAAAA,EAAAA,EADU,CAEb,CACD;AAAA;AAAA;AACH,KAAA,EAAA,EAXmC,CAYrC,CACD;AAAA,GACL,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var longTypeFormattingSettingsCss = ".vuuLongColumnFormattingSettings {\n display: flex;\n flex-direction: column;\n gap: var(--salt-spacing-200);\n padding-top: 6px;\n}\n";
|
|
4
|
+
|
|
5
|
+
module.exports = longTypeFormattingSettingsCss;
|
|
6
|
+
//# sourceMappingURL=LongTypeFormattingSettings.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LongTypeFormattingSettings.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var core = require('@salt-ds/core');
|
|
6
|
+
var styles = require('@salt-ds/styles');
|
|
7
|
+
var window = require('@salt-ds/window');
|
|
8
|
+
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
9
|
+
var DateTimeFormattingSettings = require('./DateTimeFormattingSettings.js');
|
|
10
|
+
var BaseNumericFormattingSettings = require('./BaseNumericFormattingSettings.js');
|
|
11
|
+
var LongTypeFormattingSettings$1 = require('./LongTypeFormattingSettings.css.js');
|
|
12
|
+
|
|
13
|
+
const classBase = "vuuLongColumnFormattingSettings";
|
|
14
|
+
const LongTypeFormattingSettings = (props) => {
|
|
15
|
+
const targetWindow = window.useWindow();
|
|
16
|
+
styles.useComponentCssInjection({
|
|
17
|
+
testId: "vuu-long-formatting-settings",
|
|
18
|
+
css: LongTypeFormattingSettings$1,
|
|
19
|
+
window: targetWindow
|
|
20
|
+
});
|
|
21
|
+
const { column, onChangeColumnType: onChangeType } = props;
|
|
22
|
+
const type = vuuUtils.isTypeDescriptor(column.type) ? column.type.name : column.type;
|
|
23
|
+
const handleToggleChange = react.useCallback(
|
|
24
|
+
(event) => {
|
|
25
|
+
const value = event.currentTarget.value;
|
|
26
|
+
onChangeType(value);
|
|
27
|
+
},
|
|
28
|
+
[onChangeType]
|
|
29
|
+
);
|
|
30
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classBase, children: [
|
|
31
|
+
/* @__PURE__ */ jsxRuntime.jsxs(core.FormField, { children: [
|
|
32
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.FormFieldLabel, { children: "Type inferred as" }),
|
|
33
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
34
|
+
core.ToggleButtonGroup,
|
|
35
|
+
{
|
|
36
|
+
className: "vuuToggleButtonGroup",
|
|
37
|
+
onChange: handleToggleChange,
|
|
38
|
+
value: type ?? "number",
|
|
39
|
+
children: toggleValues.map((v) => /* @__PURE__ */ jsxRuntime.jsx(core.ToggleButton, { value: v, children: v.toUpperCase() }, v))
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
] }),
|
|
43
|
+
vuuUtils.isDateTimeDataValue(column) ? /* @__PURE__ */ jsxRuntime.jsx(DateTimeFormattingSettings.DateTimeFormattingSettings, { ...props, column }) : /* @__PURE__ */ jsxRuntime.jsx(BaseNumericFormattingSettings.BaseNumericFormattingSettings, { ...props })
|
|
44
|
+
] });
|
|
45
|
+
};
|
|
46
|
+
const toggleValues = ["number", "date/time"];
|
|
47
|
+
|
|
48
|
+
exports.LongTypeFormattingSettings = LongTypeFormattingSettings;
|
|
49
|
+
//# sourceMappingURL=LongTypeFormattingSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LongTypeFormattingSettings.js","sources":["../../src/column-formatting-settings/LongTypeFormattingSettings.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport {\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 { isDateTimeDataValue, isTypeDescriptor } from \"@vuu-ui/vuu-utils\";\nimport { DateTimeFormattingSettings } from \"./DateTimeFormattingSettings\";\nimport { BaseNumericFormattingSettings } from \"./BaseNumericFormattingSettings\";\nimport { FormattingSettingsProps } from \"@vuu-ui/vuu-table-types\";\n\nimport longTypeFormattingSettingsCss from \"./LongTypeFormattingSettings.css\";\n\nconst classBase = \"vuuLongColumnFormattingSettings\";\n\nexport const LongTypeFormattingSettings = (props: FormattingSettingsProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-long-formatting-settings\",\n css: longTypeFormattingSettingsCss,\n window: targetWindow,\n });\n\n const { column, onChangeColumnType: onChangeType } = props;\n const type = isTypeDescriptor(column.type) ? column.type.name : column.type;\n\n const handleToggleChange = useCallback(\n (event: React.SyntheticEvent<HTMLButtonElement, Event>) => {\n const value = event.currentTarget.value as ToggleValue;\n onChangeType(value);\n },\n [onChangeType],\n );\n\n return (\n <div className={classBase}>\n <FormField>\n <FormFieldLabel>{\"Type inferred as\"}</FormFieldLabel>\n <ToggleButtonGroup\n className=\"vuuToggleButtonGroup\"\n onChange={handleToggleChange}\n value={type ?? \"number\"}\n >\n {toggleValues.map((v) => (\n <ToggleButton key={v} value={v}>\n {v.toUpperCase()}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n </FormField>\n\n {isDateTimeDataValue(column) ? (\n <DateTimeFormattingSettings {...props} column={column} />\n ) : (\n <BaseNumericFormattingSettings {...props} />\n )}\n </div>\n );\n};\n\nconst toggleValues = [\"number\", \"date/time\"] as const;\ntype ToggleValue = (typeof toggleValues)[number];\n"],"names":["useWindow","useComponentCssInjection","longTypeFormattingSettingsCss","isTypeDescriptor","useCallback","jsxs","FormField","jsx","FormFieldLabel","ToggleButtonGroup","ToggleButton","isDateTimeDataValue","DateTimeFormattingSettings","BaseNumericFormattingSettings"],"mappings":";;;;;;;;;;;;AAgBA,MAAM,SAAY,GAAA,iCAAA;AAEL,MAAA,0BAAA,GAA6B,CAAC,KAAmC,KAAA;AAC5E,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,8BAAA;AAAA,IACR,GAAK,EAAAC,4BAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,EAAE,MAAA,EAAQ,kBAAoB,EAAA,YAAA,EAAiB,GAAA,KAAA;AACrD,EAAM,MAAA,IAAA,GAAOC,0BAAiB,MAAO,CAAA,IAAI,IAAI,MAAO,CAAA,IAAA,CAAK,OAAO,MAAO,CAAA,IAAA;AAEvE,EAAA,MAAM,kBAAqB,GAAAC,iBAAA;AAAA,IACzB,CAAC,KAA0D,KAAA;AACzD,MAAM,MAAA,KAAA,GAAQ,MAAM,aAAc,CAAA,KAAA;AAClC,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,KACpB;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EACE,uBAAAC,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,SACd,EAAA,QAAA,EAAA;AAAA,oBAAAA,eAAA,CAACC,cACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAACC,uBAAgB,QAAmB,EAAA,kBAAA,EAAA,CAAA;AAAA,sBACpCD,cAAA;AAAA,QAACE,sBAAA;AAAA,QAAA;AAAA,UACC,SAAU,EAAA,sBAAA;AAAA,UACV,QAAU,EAAA,kBAAA;AAAA,UACV,OAAO,IAAQ,IAAA,QAAA;AAAA,UAEd,QAAa,EAAA,YAAA,CAAA,GAAA,CAAI,CAAC,CAAA,qBAChBF,cAAA,CAAAG,iBAAA,EAAA,EAAqB,KAAO,EAAA,CAAA,EAC1B,QAAE,EAAA,CAAA,CAAA,WAAA,EADc,EAAA,EAAA,CAEnB,CACD;AAAA;AAAA;AACH,KACF,EAAA,CAAA;AAAA,IAECC,4BAAoB,CAAA,MAAM,CACzB,mBAAAJ,cAAA,CAACK,qDAA4B,EAAA,EAAA,GAAG,KAAO,EAAA,MAAA,EAAgB,CAEvD,mBAAAL,cAAA,CAACM,2DAA+B,EAAA,EAAA,GAAG,KAAO,EAAA;AAAA,GAE9C,EAAA,CAAA;AAEJ;AAEA,MAAM,YAAA,GAAe,CAAC,QAAA,EAAU,WAAW,CAAA;;;;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var columnList = ".vuuColumnList {\n --vuuMeasuredContainer-flex: 1 1 1px;\n --vuu-svg-function: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 14 14\"><path d=\"M5.8625 10.5V9.625H6.72291L8.4875 7.59792L6.72291 5.54167H5.64375L4.60833 10.8792C4.53055 11.3167 4.36527 11.6545 4.1125 11.8927C3.85972 12.1309 3.53402 12.25 3.13541 12.25C2.7368 12.25 2.40382 12.1333 2.13645 11.9C1.86909 11.6667 1.73541 11.375 1.73541 11.025C1.73541 10.7625 1.80833 10.551 1.95416 10.3906C2.1 10.2302 2.28958 10.15 2.52291 10.15C2.72708 10.15 2.89479 10.2083 3.02604 10.325C3.15729 10.4417 3.22291 10.5972 3.22291 10.7917C3.22291 10.8986 3.20104 10.9983 3.15729 11.0906C3.11354 11.183 3.05277 11.2583 2.975 11.3167C3.01388 11.3361 3.0552 11.3507 3.09895 11.3604C3.1427 11.3701 3.18888 11.375 3.2375 11.375C3.36388 11.375 3.47083 11.3142 3.55833 11.1927C3.64583 11.0712 3.70902 10.9132 3.74791 10.7188L4.75416 5.54167H2.91666V4.66667H4.91458L5.22083 3.12083C5.30833 2.68333 5.48333 2.34549 5.74583 2.10729C6.00833 1.8691 6.33402 1.75 6.72291 1.75C7.12152 1.75 7.44965 1.86667 7.70729 2.1C7.96493 2.33333 8.09375 2.625 8.09375 2.975C8.09375 3.2375 8.02083 3.44896 7.875 3.60938C7.72916 3.76979 7.53958 3.85 7.30625 3.85C7.1118 3.85 6.94652 3.7941 6.81041 3.68229C6.6743 3.57049 6.60625 3.42222 6.60625 3.2375C6.60625 3.14028 6.62569 3.04549 6.66458 2.95312C6.70347 2.86076 6.75208 2.78542 6.81041 2.72708C6.79097 2.70764 6.7618 2.69063 6.72291 2.67604C6.68402 2.66146 6.64513 2.65417 6.60625 2.65417C6.47986 2.65417 6.37048 2.7125 6.27812 2.82917C6.18576 2.94583 6.12013 3.09653 6.08125 3.28125L5.81875 4.66667H8.575V5.54167H7.88958L9.1 6.94167L10.2375 5.54167H9.5375V4.66667H12.25V5.54167H11.4042L9.65416 7.59792L11.4042 9.625H12.25V10.5H9.5375V9.625H10.2375L9.07083 8.26875L7.875 9.625H8.575V10.5H5.8625Z\"/></svg>');\n --vuuList-borderStyle: none;\n --vuuListItem-padding: 0;\n display: flex;\n flex-direction: column;\n\n\n .saltOption {\n align-items: center;\n background-color: var(--salt-container-primary-background);\n border-bottom: var(--vuuColumnListItem-border, solid) 1px\n var(--salt-separable-tertiary-borderColor);\n gap: var(--salt-spacing-200);\n padding: var(--salt=spacin-100) 0;\n\n .vuuIcon {\n --vuu-icon-color: var(--salt-content-secondary-foreground);\n }\n }\n\n .vuuColumnList-text {\n flex: 1 1 auto;\n }\n\n}\n\n[data-icon=\"function\"] {\n --vuu-icon-svg: var(--vuu-svg-function);\n}\n\n\n\n.vuuColumnList-withColumnNavgation {\n .vuuColumnList-text:hover {\n font-weight: 600;\n text-decoration: underline;\n }\n}\n\n.vuuColumnList-header {\n border-top: solid 2px var(--vuu-color-gray-30);\n flex: 0 0 40px;\n font-size: 14px;\n font-weight: 600;\n padding-top: 24px;\n}\n\n.vuuColumnList-colHeadings {\n border-bottom: solid 2px var(--vuu-color-gray-30);\n color: var(--vuu-color-gray-50);\n display: flex;\n flex: 0 0 24px;\n font-size: 10px;\n justify-content: space-between;\n margin-top: 16px;\n padding-bottom: 8px;\n}\n";
|
|
4
|
+
|
|
5
|
+
module.exports = columnList;
|
|
6
|
+
//# sourceMappingURL=ColumnList.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnList.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
5
|
+
var core = require('@salt-ds/core');
|
|
6
|
+
var styles = require('@salt-ds/styles');
|
|
7
|
+
var window = require('@salt-ds/window');
|
|
8
|
+
var vuuUiControls = require('@vuu-ui/vuu-ui-controls');
|
|
9
|
+
var cx = require('clsx');
|
|
10
|
+
var react = require('react');
|
|
11
|
+
var ColumnList$1 = require('./ColumnList.css.js');
|
|
12
|
+
|
|
13
|
+
const classBase = "vuuColumnList";
|
|
14
|
+
const classBaseListItem = "vuuColumnListItem";
|
|
15
|
+
const useSorting = (id, index, allowSort = true) => {
|
|
16
|
+
const { handleRef: sortableHandleRef, ref: sortableRef } = vuuUtils.useSortable({
|
|
17
|
+
id,
|
|
18
|
+
index
|
|
19
|
+
});
|
|
20
|
+
const noopRef = react.useCallback(() => {
|
|
21
|
+
}, []);
|
|
22
|
+
const [handleRef, ref] = react.useMemo(() => {
|
|
23
|
+
return allowSort ? [sortableHandleRef, sortableRef] : [noopRef, noopRef];
|
|
24
|
+
}, [allowSort, noopRef, sortableHandleRef, sortableRef]);
|
|
25
|
+
return {
|
|
26
|
+
handleRef,
|
|
27
|
+
ref
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
const ColumnListItem = ({
|
|
31
|
+
className: classNameProp,
|
|
32
|
+
index,
|
|
33
|
+
item,
|
|
34
|
+
permissions: { allowHideColumns, allowRemoveColumns, allowReorderColumns },
|
|
35
|
+
...optionProps
|
|
36
|
+
}) => {
|
|
37
|
+
const { handleRef, ref } = useSorting(item.name, index, allowReorderColumns);
|
|
38
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
39
|
+
core.Option,
|
|
40
|
+
{
|
|
41
|
+
...optionProps,
|
|
42
|
+
className: cx(classNameProp, classBaseListItem),
|
|
43
|
+
"data-name": item.name,
|
|
44
|
+
id: item.name,
|
|
45
|
+
ref,
|
|
46
|
+
children: [
|
|
47
|
+
allowReorderColumns ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
48
|
+
vuuUiControls.IconButton,
|
|
49
|
+
{
|
|
50
|
+
"data-embedded": true,
|
|
51
|
+
appearance: "transparent",
|
|
52
|
+
icon: "draggable",
|
|
53
|
+
ref: handleRef,
|
|
54
|
+
size: 16
|
|
55
|
+
}
|
|
56
|
+
) : null,
|
|
57
|
+
item?.isCalculated ? /* @__PURE__ */ jsxRuntime.jsx(vuuUiControls.Icon, { name: "function" }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
58
|
+
core.Checkbox,
|
|
59
|
+
{
|
|
60
|
+
className: `${classBase}-checkBox`,
|
|
61
|
+
checked: item?.subscribed,
|
|
62
|
+
readOnly: allowRemoveColumns === false
|
|
63
|
+
}
|
|
64
|
+
),
|
|
65
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `${classBase}-text`, children: vuuUtils.getColumnLabel(item) }),
|
|
66
|
+
allowHideColumns !== false ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
67
|
+
core.Switch,
|
|
68
|
+
{
|
|
69
|
+
className: `${classBase}-switch`,
|
|
70
|
+
checked: item?.hidden !== true,
|
|
71
|
+
disabled: item?.subscribed !== true
|
|
72
|
+
}
|
|
73
|
+
) : null
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
};
|
|
78
|
+
const defaultPermissions = {
|
|
79
|
+
allowHideColumns: true,
|
|
80
|
+
allowRemoveColumns: true,
|
|
81
|
+
allowReorderColumns: true
|
|
82
|
+
};
|
|
83
|
+
const ColumnList = ({
|
|
84
|
+
className,
|
|
85
|
+
columnItems,
|
|
86
|
+
onChange,
|
|
87
|
+
onNavigateToColumn,
|
|
88
|
+
onReorderColumnItems,
|
|
89
|
+
permissions = defaultPermissions,
|
|
90
|
+
...htmlAttributes
|
|
91
|
+
}) => {
|
|
92
|
+
const targetWindow = window.useWindow();
|
|
93
|
+
styles.useComponentCssInjection({
|
|
94
|
+
testId: "vuu-column-list",
|
|
95
|
+
css: ColumnList$1,
|
|
96
|
+
window: targetWindow
|
|
97
|
+
});
|
|
98
|
+
const listRef = react.useRef(null);
|
|
99
|
+
const handleChange = react.useCallback(
|
|
100
|
+
({ target }) => {
|
|
101
|
+
const input = target;
|
|
102
|
+
const listItem = vuuUtils.queryClosest(target, `.${classBaseListItem}`);
|
|
103
|
+
if (listItem) {
|
|
104
|
+
const {
|
|
105
|
+
dataset: { name }
|
|
106
|
+
} = listItem;
|
|
107
|
+
if (name) {
|
|
108
|
+
const saltCheckbox = vuuUtils.queryClosest(target, `.${classBase}-checkBox`);
|
|
109
|
+
const saltSwitch = vuuUtils.queryClosest(target, `.${classBase}-switch`);
|
|
110
|
+
if (saltCheckbox) {
|
|
111
|
+
onChange(name, "subscribed", input.checked);
|
|
112
|
+
} else if (saltSwitch) {
|
|
113
|
+
onChange(name, "hidden", input.checked === false);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
[onChange]
|
|
119
|
+
);
|
|
120
|
+
const handleClick = react.useCallback(
|
|
121
|
+
(evt) => {
|
|
122
|
+
const targetEl = evt.target;
|
|
123
|
+
if (targetEl.classList.contains("vuuColumnList-text")) {
|
|
124
|
+
const listItemEl = targetEl.closest(".vuuListItem");
|
|
125
|
+
if (listItemEl?.dataset.name) {
|
|
126
|
+
onNavigateToColumn?.(listItemEl.dataset.name);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
[onNavigateToColumn]
|
|
131
|
+
);
|
|
132
|
+
const handleDragEnd = react.useCallback(() => {
|
|
133
|
+
setTimeout(() => {
|
|
134
|
+
const listItems = listRef.current?.querySelectorAll(".saltOption");
|
|
135
|
+
if (listItems) {
|
|
136
|
+
const orderedIds = Array.from(listItems).map(({ id }) => id);
|
|
137
|
+
onReorderColumnItems?.(vuuUtils.reorderColumnItems(columnItems, orderedIds));
|
|
138
|
+
}
|
|
139
|
+
}, 300);
|
|
140
|
+
}, [columnItems, onReorderColumnItems]);
|
|
141
|
+
return /* @__PURE__ */ jsxRuntime.jsx(vuuUtils.DragDropProvider, { onDragEnd: handleDragEnd, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
142
|
+
"div",
|
|
143
|
+
{
|
|
144
|
+
...htmlAttributes,
|
|
145
|
+
className: cx(classBase, className, {
|
|
146
|
+
[`${classBase}-withColumnNavigation`]: typeof onNavigateToColumn === "function"
|
|
147
|
+
}),
|
|
148
|
+
children: [
|
|
149
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: `${classBase}-header`, children: /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Column Selection" }) }),
|
|
150
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${classBase}-colHeadings`, children: [
|
|
151
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Column subscription" }),
|
|
152
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Visibility" })
|
|
153
|
+
] }),
|
|
154
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.ListBox, { ref: listRef, children: columnItems.map((columnItem, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
155
|
+
ColumnListItem,
|
|
156
|
+
{
|
|
157
|
+
item: columnItem,
|
|
158
|
+
index,
|
|
159
|
+
onChange: handleChange,
|
|
160
|
+
onClick: handleClick,
|
|
161
|
+
permissions,
|
|
162
|
+
value: columnItem
|
|
163
|
+
},
|
|
164
|
+
columnItem.name
|
|
165
|
+
)) })
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
) });
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
exports.ColumnList = ColumnList;
|
|
172
|
+
//# sourceMappingURL=ColumnList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnList.js","sources":["../../src/column-list/ColumnList.tsx"],"sourcesContent":["import { DragDropProvider, useSortable } from \"@vuu-ui/vuu-utils\";\nimport { Checkbox, ListBox, Option, OptionProps, Switch } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport {\n ColumnDescriptor,\n ColumnListPermissions,\n} from \"@vuu-ui/vuu-table-types\";\nimport { Icon, IconButton } from \"@vuu-ui/vuu-ui-controls\";\nimport {\n getColumnLabel,\n queryClosest,\n reorderColumnItems,\n} from \"@vuu-ui/vuu-utils\";\nimport cx from \"clsx\";\nimport {\n HTMLAttributes,\n MouseEventHandler,\n SyntheticEvent,\n useCallback,\n useMemo,\n useRef,\n} from \"react\";\nimport { ColumnItem } from \"../table-column-settings/useTableSettings\";\n\nimport columnList from \"./ColumnList.css\";\n\nconst classBase = \"vuuColumnList\";\nconst classBaseListItem = \"vuuColumnListItem\";\n\nconst useSorting = (id: string, index: number, allowSort = true) => {\n const { handleRef: sortableHandleRef, ref: sortableRef } = useSortable({\n id,\n index,\n });\n\n const noopRef = useCallback(() => {\n // do nothing\n }, []);\n\n const [handleRef, ref] = useMemo(() => {\n return allowSort ? [sortableHandleRef, sortableRef] : [noopRef, noopRef];\n }, [allowSort, noopRef, sortableHandleRef, sortableRef]);\n\n return {\n handleRef,\n ref,\n };\n};\n\nexport type ColumnChangeHandler = (\n columnName: string,\n propertyName: keyof ColumnDescriptor | \"subscribed\",\n value: string | number | boolean,\n) => void;\n\nexport interface ColumnListProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n columnItems: ColumnItem[];\n onChange: ColumnChangeHandler;\n onNavigateToColumn?: (columnName: string) => void;\n onReorderColumnItems?: (columnItems: ColumnItem[]) => void;\n permissions?: ColumnListPermissions;\n}\n\nconst ColumnListItem = ({\n className: classNameProp,\n index,\n item,\n permissions: { allowHideColumns, allowRemoveColumns, allowReorderColumns },\n ...optionProps\n}: OptionProps & {\n index: number;\n item: ColumnItem;\n permissions: ColumnListPermissions;\n}) => {\n const { handleRef, ref } = useSorting(item.name, index, allowReorderColumns);\n return (\n <Option\n {...optionProps}\n className={cx(classNameProp, classBaseListItem)}\n data-name={item.name}\n id={item.name}\n ref={ref}\n >\n {allowReorderColumns ? (\n <IconButton\n data-embedded\n appearance=\"transparent\"\n icon=\"draggable\"\n ref={handleRef}\n size={16}\n />\n ) : null}\n {item?.isCalculated ? (\n <Icon name=\"function\" />\n ) : (\n <Checkbox\n className={`${classBase}-checkBox`}\n checked={item?.subscribed}\n readOnly={allowRemoveColumns === false}\n />\n )}\n <span className={`${classBase}-text`}>\n {getColumnLabel(item as ColumnDescriptor)}\n </span>\n {allowHideColumns !== false ? (\n <Switch\n className={`${classBase}-switch`}\n checked={item?.hidden !== true}\n disabled={item?.subscribed !== true}\n />\n ) : null}\n </Option>\n );\n};\n\nconst defaultPermissions: ColumnListPermissions = {\n allowHideColumns: true,\n allowRemoveColumns: true,\n allowReorderColumns: true,\n};\n\nexport const ColumnList = ({\n className,\n columnItems,\n onChange,\n onNavigateToColumn,\n onReorderColumnItems,\n permissions = defaultPermissions,\n ...htmlAttributes\n}: ColumnListProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-column-list\",\n css: columnList,\n window: targetWindow,\n });\n const listRef = useRef<HTMLDivElement>(null);\n\n const handleChange = useCallback(\n ({ target }: SyntheticEvent) => {\n const input = target as HTMLInputElement;\n const listItem = queryClosest(target, `.${classBaseListItem}`);\n if (listItem) {\n const {\n dataset: { name },\n } = listItem;\n if (name) {\n const saltCheckbox = queryClosest(target, `.${classBase}-checkBox`);\n const saltSwitch = queryClosest(target, `.${classBase}-switch`);\n\n if (saltCheckbox) {\n onChange(name, \"subscribed\", input.checked);\n } else if (saltSwitch) {\n onChange(name, \"hidden\", input.checked === false);\n }\n }\n }\n },\n [onChange],\n );\n\n const handleClick = useCallback<MouseEventHandler>(\n (evt) => {\n const targetEl = evt.target as HTMLElement;\n if (targetEl.classList.contains(\"vuuColumnList-text\")) {\n const listItemEl = targetEl.closest(\".vuuListItem\") as HTMLElement;\n if (listItemEl?.dataset.name) {\n onNavigateToColumn?.(listItemEl.dataset.name);\n }\n }\n },\n [onNavigateToColumn],\n );\n\n const handleDragEnd = useCallback(() => {\n setTimeout(() => {\n const listItems =\n listRef.current?.querySelectorAll<HTMLDivElement>(\".saltOption\");\n if (listItems) {\n const orderedIds = Array.from(listItems).map(({ id }) => id);\n onReorderColumnItems?.(reorderColumnItems(columnItems, orderedIds));\n }\n }, 300);\n }, [columnItems, onReorderColumnItems]);\n\n return (\n <DragDropProvider onDragEnd={handleDragEnd}>\n <div\n {...htmlAttributes}\n className={cx(classBase, className, {\n [`${classBase}-withColumnNavigation`]:\n typeof onNavigateToColumn === \"function\",\n })}\n >\n <div className={`${classBase}-header`}>\n <span>Column Selection</span>\n </div>\n <div className={`${classBase}-colHeadings`}>\n <span>Column subscription</span>\n <span>Visibility</span>\n </div>\n <ListBox ref={listRef}>\n {columnItems.map((columnItem, index) => (\n <ColumnListItem\n item={columnItem}\n index={index}\n key={columnItem.name}\n onChange={handleChange}\n onClick={handleClick}\n permissions={permissions}\n value={columnItem}\n />\n ))}\n </ListBox>\n </div>\n </DragDropProvider>\n );\n};\n"],"names":["useSortable","useCallback","useMemo","jsxs","Option","jsx","IconButton","Icon","Checkbox","getColumnLabel","Switch","useWindow","useComponentCssInjection","columnList","useRef","queryClosest","reorderColumnItems","DragDropProvider","ListBox"],"mappings":"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"}
|