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