@vuu-ui/vuu-datatable 0.13.7 → 0.13.8
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/index.js +741 -10
- package/cjs/index.js.map +1 -1
- package/esm/index.js +740 -5
- package/esm/index.js.map +1 -1
- package/package.json +11 -11
- package/cjs/filter-table/FilterTable.css.js +0 -6
- package/cjs/filter-table/FilterTable.css.js.map +0 -1
- package/cjs/filter-table/FilterTable.js +0 -44
- package/cjs/filter-table/FilterTable.js.map +0 -1
- package/cjs/filter-table/useFilterTable.js +0 -29
- package/cjs/filter-table/useFilterTable.js.map +0 -1
- package/cjs/filter-table/usePersistFilterState.js +0 -156
- package/cjs/filter-table/usePersistFilterState.js.map +0 -1
- package/cjs/json-table/JsonCell.css.js +0 -6
- package/cjs/json-table/JsonCell.css.js.map +0 -1
- package/cjs/json-table/JsonCell.js +0 -45
- package/cjs/json-table/JsonCell.js.map +0 -1
- package/cjs/json-table/JsonTable.js +0 -52
- package/cjs/json-table/JsonTable.js.map +0 -1
- package/cjs/linked-table-view/LinkedTableView.css.js +0 -6
- package/cjs/linked-table-view/LinkedTableView.css.js.map +0 -1
- package/cjs/linked-table-view/LinkedTableView.js +0 -168
- package/cjs/linked-table-view/LinkedTableView.js.map +0 -1
- package/cjs/linked-table-view/TableLayoutToggleButton.js +0 -31
- package/cjs/linked-table-view/TableLayoutToggleButton.js.map +0 -1
- package/cjs/linked-table-view/useLinkedTableView.js +0 -210
- package/cjs/linked-table-view/useLinkedTableView.js.map +0 -1
- package/cjs/tree-table/TreeTable.js +0 -73
- package/cjs/tree-table/TreeTable.js.map +0 -1
- package/esm/filter-table/FilterTable.css.js +0 -4
- package/esm/filter-table/FilterTable.css.js.map +0 -1
- package/esm/filter-table/FilterTable.js +0 -42
- package/esm/filter-table/FilterTable.js.map +0 -1
- package/esm/filter-table/useFilterTable.js +0 -27
- package/esm/filter-table/useFilterTable.js.map +0 -1
- package/esm/filter-table/usePersistFilterState.js +0 -154
- package/esm/filter-table/usePersistFilterState.js.map +0 -1
- package/esm/json-table/JsonCell.css.js +0 -4
- package/esm/json-table/JsonCell.css.js.map +0 -1
- package/esm/json-table/JsonCell.js +0 -43
- package/esm/json-table/JsonCell.js.map +0 -1
- package/esm/json-table/JsonTable.js +0 -50
- package/esm/json-table/JsonTable.js.map +0 -1
- package/esm/linked-table-view/LinkedTableView.css.js +0 -4
- package/esm/linked-table-view/LinkedTableView.css.js.map +0 -1
- package/esm/linked-table-view/LinkedTableView.js +0 -166
- package/esm/linked-table-view/LinkedTableView.js.map +0 -1
- package/esm/linked-table-view/TableLayoutToggleButton.js +0 -29
- package/esm/linked-table-view/TableLayoutToggleButton.js.map +0 -1
- package/esm/linked-table-view/useLinkedTableView.js +0 -208
- package/esm/linked-table-view/useLinkedTableView.js.map +0 -1
- package/esm/tree-table/TreeTable.js +0 -71
- package/esm/tree-table/TreeTable.js.map +0 -1
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
import { useData } from '@vuu-ui/vuu-utils';
|
|
2
|
-
import { useState, useMemo, useCallback } from 'react';
|
|
3
|
-
|
|
4
|
-
const getSchema = (schemas, { module, table }) => {
|
|
5
|
-
const schema = schemas.find(
|
|
6
|
-
({ table: t }) => t.module === module && t.table === table
|
|
7
|
-
);
|
|
8
|
-
if (schema) {
|
|
9
|
-
return schema;
|
|
10
|
-
} else {
|
|
11
|
-
throw Error(`No schema for table ${module} ${table}`);
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
const getTable = (ds) => {
|
|
15
|
-
if (ds.table) {
|
|
16
|
-
return ds.table;
|
|
17
|
-
} else {
|
|
18
|
-
throw Error("No datasource table specified");
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
const getTables = (linkedDataSources) => {
|
|
22
|
-
const { "1": linked1, "2": linked2, "3": linked3 } = linkedDataSources;
|
|
23
|
-
const tables = [];
|
|
24
|
-
tables.push(getTable(linked1.dataSource));
|
|
25
|
-
if (Array.isArray(linked2)) {
|
|
26
|
-
linked2.forEach(({ dataSource }) => {
|
|
27
|
-
tables.push(getTable(dataSource));
|
|
28
|
-
});
|
|
29
|
-
} else {
|
|
30
|
-
tables.push(getTable(linked2.dataSource));
|
|
31
|
-
}
|
|
32
|
-
if (Array.isArray(linked3)) {
|
|
33
|
-
linked3.forEach(({ dataSource }) => {
|
|
34
|
-
tables.push(getTable(dataSource));
|
|
35
|
-
});
|
|
36
|
-
} else if (linked3) {
|
|
37
|
-
tables.push(getTable(linked3.dataSource));
|
|
38
|
-
}
|
|
39
|
-
return tables;
|
|
40
|
-
};
|
|
41
|
-
const useLinkedTableView = ({
|
|
42
|
-
linkedDataSources
|
|
43
|
-
}) => {
|
|
44
|
-
const { VuuDataSource, getServerAPI } = useData();
|
|
45
|
-
const [tableConfig, setTableConfig] = useState();
|
|
46
|
-
const [activeTabs, setActiveTab] = useState([
|
|
47
|
-
0,
|
|
48
|
-
0,
|
|
49
|
-
0
|
|
50
|
-
]);
|
|
51
|
-
const [collapsed, setCollapsed] = useState([
|
|
52
|
-
false,
|
|
53
|
-
false
|
|
54
|
-
]);
|
|
55
|
-
const [tabbedView, setTabbedView] = useState([1, 1]);
|
|
56
|
-
useMemo(async () => {
|
|
57
|
-
const tables = getTables(linkedDataSources);
|
|
58
|
-
const serverAPI = await getServerAPI();
|
|
59
|
-
const schemas = await Promise.all(tables.map(serverAPI.getTableSchema));
|
|
60
|
-
const isDataSource = (ds) => typeof ds === typeof VuuDataSource;
|
|
61
|
-
const getDataSource = (ds) => {
|
|
62
|
-
if (isDataSource(ds)) {
|
|
63
|
-
return ds;
|
|
64
|
-
} else {
|
|
65
|
-
return new VuuDataSource(ds);
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
const createVisualLink = (vuuLink, parentDs) => {
|
|
69
|
-
if (parentDs && parentDs.table) {
|
|
70
|
-
const parentVpId = parentDs.viewport;
|
|
71
|
-
const toTable = vuuLink.toTable ?? parentDs.table?.table;
|
|
72
|
-
return {
|
|
73
|
-
link: {
|
|
74
|
-
...vuuLink,
|
|
75
|
-
toTable
|
|
76
|
-
},
|
|
77
|
-
parentClientVpId: parentVpId,
|
|
78
|
-
parentVpId
|
|
79
|
-
};
|
|
80
|
-
} else {
|
|
81
|
-
throw Error("visual link cannot be created without parent vp id");
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
const getLinkedDataSource = (ds, vuuLink, parentDs) => {
|
|
85
|
-
if (isDataSource(ds)) {
|
|
86
|
-
return ds;
|
|
87
|
-
} else {
|
|
88
|
-
return new VuuDataSource({
|
|
89
|
-
...ds,
|
|
90
|
-
visualLink: createVisualLink(vuuLink, parentDs)
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
const getTableConfig = (ds) => {
|
|
95
|
-
const schema = getSchema(schemas, getTable(ds));
|
|
96
|
-
return {
|
|
97
|
-
columns: schema.columns
|
|
98
|
-
};
|
|
99
|
-
};
|
|
100
|
-
const getRootConfig = ({
|
|
101
|
-
dataSource: ds,
|
|
102
|
-
title
|
|
103
|
-
}) => ({
|
|
104
|
-
config: getTableConfig(ds),
|
|
105
|
-
dataSource: getDataSource(ds),
|
|
106
|
-
title
|
|
107
|
-
});
|
|
108
|
-
const getLinkedConfig = ({ dataSource: ds, vuuLink, title }, parentDataSource) => ({
|
|
109
|
-
config: getTableConfig(ds),
|
|
110
|
-
dataSource: getLinkedDataSource(ds, vuuLink, parentDataSource),
|
|
111
|
-
title
|
|
112
|
-
});
|
|
113
|
-
const getLinkedConfigs = (linkedTableConfig, parentDataSource) => {
|
|
114
|
-
if (Array.isArray(linkedTableConfig)) {
|
|
115
|
-
return linkedTableConfig.map(
|
|
116
|
-
(config) => getLinkedConfig(config, parentDataSource)
|
|
117
|
-
);
|
|
118
|
-
} else {
|
|
119
|
-
return getLinkedConfig(linkedTableConfig, parentDataSource);
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
|
-
const { "1": level1, "2": level2, "3": level3 } = linkedDataSources;
|
|
123
|
-
const configLevel1 = getRootConfig(level1);
|
|
124
|
-
const configLevel2 = getLinkedConfigs(level2, configLevel1.dataSource);
|
|
125
|
-
const dsLevel2 = Array.isArray(configLevel2) ? void 0 : configLevel2.dataSource;
|
|
126
|
-
const configLevel3 = level3 ? getLinkedConfigs(level3, dsLevel2) : void 0;
|
|
127
|
-
const results = {
|
|
128
|
-
"1": configLevel1,
|
|
129
|
-
"2": configLevel2,
|
|
130
|
-
"3": configLevel3
|
|
131
|
-
};
|
|
132
|
-
setTableConfig(results);
|
|
133
|
-
}, [VuuDataSource, getServerAPI, linkedDataSources]);
|
|
134
|
-
const handleTabChangeLevel1 = useCallback((tabIndex) => {
|
|
135
|
-
setActiveTab(([, v2, v3]) => [tabIndex, v2, v3]);
|
|
136
|
-
}, []);
|
|
137
|
-
const handleTabChangeLevel2 = useCallback((tabIndex) => {
|
|
138
|
-
setActiveTab(([v1, , v3]) => [v1, tabIndex, v3]);
|
|
139
|
-
}, []);
|
|
140
|
-
const handleTabChangeLevel3 = useCallback((tabIndex) => {
|
|
141
|
-
setActiveTab(([v1, v2]) => [v1, v2, tabIndex]);
|
|
142
|
-
}, []);
|
|
143
|
-
const handleCollapseLevel2 = useCallback(() => {
|
|
144
|
-
setCollapsed(([, val]) => [true, val]);
|
|
145
|
-
}, []);
|
|
146
|
-
const handleExpandLevel2 = useCallback(() => {
|
|
147
|
-
setCollapsed(([, val]) => [false, val]);
|
|
148
|
-
}, []);
|
|
149
|
-
const handleCollapseLevel3 = useCallback(() => {
|
|
150
|
-
setCollapsed(([val]) => [val, true]);
|
|
151
|
-
}, []);
|
|
152
|
-
const handleExpandLevel3 = useCallback(() => {
|
|
153
|
-
setCollapsed(([val]) => [val, false]);
|
|
154
|
-
}, []);
|
|
155
|
-
const handleChangeTabbedView2 = useCallback(
|
|
156
|
-
(evt) => {
|
|
157
|
-
const target = evt.target;
|
|
158
|
-
const button = target?.closest("button");
|
|
159
|
-
if (button) {
|
|
160
|
-
const value = parseInt(button.value);
|
|
161
|
-
setTabbedView(([, val]) => [value, val]);
|
|
162
|
-
}
|
|
163
|
-
},
|
|
164
|
-
[]
|
|
165
|
-
);
|
|
166
|
-
const handleChangeTabbedView3 = useCallback(
|
|
167
|
-
(evt) => {
|
|
168
|
-
const target = evt.target;
|
|
169
|
-
const button = target?.closest("button");
|
|
170
|
-
if (button) {
|
|
171
|
-
const value = parseInt(button.value);
|
|
172
|
-
setTabbedView(([val]) => [val, value]);
|
|
173
|
-
}
|
|
174
|
-
},
|
|
175
|
-
[]
|
|
176
|
-
);
|
|
177
|
-
return {
|
|
178
|
-
level1: {
|
|
179
|
-
activeTab: activeTabs[0],
|
|
180
|
-
key: "level1",
|
|
181
|
-
onTabChange: handleTabChangeLevel1
|
|
182
|
-
},
|
|
183
|
-
level2: {
|
|
184
|
-
activeTab: activeTabs[1],
|
|
185
|
-
collapsed: collapsed[0],
|
|
186
|
-
key: "level2",
|
|
187
|
-
onChangeTabbedView: handleChangeTabbedView2,
|
|
188
|
-
onCollapse: handleCollapseLevel2,
|
|
189
|
-
onExpand: handleExpandLevel2,
|
|
190
|
-
onTabChange: handleTabChangeLevel2,
|
|
191
|
-
tabbedView: tabbedView[0]
|
|
192
|
-
},
|
|
193
|
-
level3: {
|
|
194
|
-
activeTab: activeTabs[2],
|
|
195
|
-
collapsed: collapsed[1],
|
|
196
|
-
key: "level3",
|
|
197
|
-
onChangeTabbedView: handleChangeTabbedView3,
|
|
198
|
-
onCollapse: handleCollapseLevel3,
|
|
199
|
-
onExpand: handleExpandLevel3,
|
|
200
|
-
onTabChange: handleTabChangeLevel3,
|
|
201
|
-
tabbedView: tabbedView[1]
|
|
202
|
-
},
|
|
203
|
-
tableConfig
|
|
204
|
-
};
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
export { useLinkedTableView };
|
|
208
|
-
//# sourceMappingURL=useLinkedTableView.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useLinkedTableView.js","sources":["../../src/linked-table-view/useLinkedTableView.ts"],"sourcesContent":["import {\n DataSource,\n DataSourceConstructorProps,\n TableSchema,\n} from \"@vuu-ui/vuu-data-types\";\nimport { useData } from \"@vuu-ui/vuu-utils\";\nimport {\n LinkedDataSources,\n LinkedTableConfig,\n LinkedTableViewProps,\n LinkTableConfig,\n} from \"./LinkedTableView\";\nimport { SyntheticEvent, useCallback, useMemo, useState } from \"react\";\nimport { TableConfig } from \"@vuu-ui/vuu-table-types\";\nimport { LinkDescriptorWithLabel, VuuTable } from \"@vuu-ui/vuu-protocol-types\";\n// import { useViewContext } from \"@vuu-ui/vuu-layout\";\n\nexport type TableDataSourceConfig = {\n config: TableConfig;\n dataSource: DataSource;\n title: string;\n};\n\nexport type ResolvedTableConfig = {\n \"1\": TableDataSourceConfig;\n \"2\": TableDataSourceConfig | TableDataSourceConfig[];\n \"3\"?: TableDataSourceConfig | TableDataSourceConfig[];\n};\n\nexport type LinkedTableViewHookProps = Pick<\n LinkedTableViewProps,\n \"linkedDataSources\"\n>;\n\nconst getSchema = (schemas: TableSchema[], { module, table }: VuuTable) => {\n const schema = schemas.find(\n ({ table: t }) => t.module === module && t.table === table,\n );\n if (schema) {\n return schema;\n } else {\n throw Error(`No schema for table ${module} ${table}`);\n }\n};\n\nconst getTable = (ds: DataSource | DataSourceConstructorProps): VuuTable => {\n if (ds.table) {\n return ds.table;\n } else {\n throw Error(\"No datasource table specified\");\n }\n};\n\nconst getTables = (linkedDataSources: LinkedDataSources): VuuTable[] => {\n const { \"1\": linked1, \"2\": linked2, \"3\": linked3 } = linkedDataSources;\n\n const tables: VuuTable[] = [];\n\n tables.push(getTable(linked1.dataSource));\n\n if (Array.isArray(linked2)) {\n linked2.forEach(({ dataSource }) => {\n tables.push(getTable(dataSource));\n });\n } else {\n tables.push(getTable(linked2.dataSource));\n }\n\n if (Array.isArray(linked3)) {\n linked3.forEach(({ dataSource }) => {\n tables.push(getTable(dataSource));\n });\n } else if (linked3) {\n tables.push(getTable(linked3.dataSource));\n }\n\n return tables;\n};\n\nexport const useLinkedTableView = ({\n linkedDataSources,\n}: LinkedTableViewHookProps) => {\n const { VuuDataSource, getServerAPI } = useData();\n const [tableConfig, setTableConfig] = useState<\n ResolvedTableConfig | undefined\n >();\n // const { id } = useViewContext();\n const [activeTabs, setActiveTab] = useState<[number, number, number]>([\n 0, 0, 0,\n ]);\n const [collapsed, setCollapsed] = useState<[boolean, boolean]>([\n false,\n false,\n ]);\n const [tabbedView, setTabbedView] = useState<[0 | 1, 0 | 1]>([1, 1]);\n\n useMemo(async () => {\n const tables = getTables(linkedDataSources);\n const serverAPI = await getServerAPI();\n const schemas = await Promise.all(tables.map(serverAPI.getTableSchema));\n\n const isDataSource = (\n ds: DataSourceConstructorProps | DataSource,\n ): ds is DataSource => typeof ds === typeof VuuDataSource;\n\n const getDataSource = (\n ds: DataSourceConstructorProps | DataSource,\n ): DataSource => {\n if (isDataSource(ds)) {\n return ds;\n } else {\n return new VuuDataSource(ds);\n }\n };\n\n const createVisualLink = (\n vuuLink: LinkedTableConfig[\"vuuLink\"],\n parentDs?: DataSource,\n ) => {\n if (parentDs && parentDs.table) {\n const parentVpId = parentDs.viewport;\n const toTable = vuuLink.toTable ?? parentDs.table?.table;\n\n return {\n link: {\n ...vuuLink,\n toTable,\n },\n parentClientVpId: parentVpId,\n parentVpId,\n } as LinkDescriptorWithLabel;\n } else {\n throw Error(\"visual link cannot be created without parent vp id\");\n }\n };\n\n const getLinkedDataSource = (\n ds: DataSourceConstructorProps | DataSource,\n vuuLink: LinkedTableConfig[\"vuuLink\"],\n parentDs?: DataSource,\n ): DataSource => {\n if (isDataSource(ds)) {\n return ds;\n } else {\n return new VuuDataSource({\n ...ds,\n visualLink: createVisualLink(vuuLink, parentDs),\n });\n }\n };\n\n const getTableConfig = (ds: DataSourceConstructorProps | DataSource) => {\n const schema = getSchema(schemas, getTable(ds));\n return {\n columns: schema.columns,\n };\n };\n\n const getRootConfig = ({\n dataSource: ds,\n title,\n }: LinkTableConfig): TableDataSourceConfig => ({\n config: getTableConfig(ds),\n dataSource: getDataSource(ds),\n title,\n });\n\n const getLinkedConfig = (\n { dataSource: ds, vuuLink, title }: LinkedTableConfig,\n parentDataSource?: DataSource,\n ): TableDataSourceConfig => ({\n config: getTableConfig(ds),\n dataSource: getLinkedDataSource(ds, vuuLink, parentDataSource),\n title,\n });\n\n const getLinkedConfigs = (\n linkedTableConfig: LinkedTableConfig | LinkedTableConfig[],\n parentDataSource?: DataSource,\n ): TableDataSourceConfig | TableDataSourceConfig[] => {\n if (Array.isArray(linkedTableConfig)) {\n return linkedTableConfig.map((config) =>\n getLinkedConfig(config, parentDataSource),\n );\n } else {\n return getLinkedConfig(linkedTableConfig, parentDataSource);\n }\n };\n\n const { \"1\": level1, \"2\": level2, \"3\": level3 } = linkedDataSources;\n\n const configLevel1 = getRootConfig(level1);\n const configLevel2 = getLinkedConfigs(level2, configLevel1.dataSource);\n const dsLevel2 = Array.isArray(configLevel2)\n ? undefined\n : configLevel2.dataSource;\n const configLevel3 = level3\n ? getLinkedConfigs(level3, dsLevel2)\n : undefined;\n\n const results: ResolvedTableConfig = {\n \"1\": configLevel1,\n \"2\": configLevel2,\n \"3\": configLevel3,\n };\n setTableConfig(results);\n }, [VuuDataSource, getServerAPI, linkedDataSources]);\n\n const handleTabChangeLevel1 = useCallback((tabIndex: number) => {\n setActiveTab(([, v2, v3]) => [tabIndex, v2, v3]);\n }, []);\n const handleTabChangeLevel2 = useCallback((tabIndex: number) => {\n setActiveTab(([v1, , v3]) => [v1, tabIndex, v3]);\n }, []);\n const handleTabChangeLevel3 = useCallback((tabIndex: number) => {\n setActiveTab(([v1, v2]) => [v1, v2, tabIndex]);\n }, []);\n\n const handleCollapseLevel2 = useCallback(() => {\n setCollapsed(([, val]) => [true, val]);\n }, []);\n const handleExpandLevel2 = useCallback(() => {\n setCollapsed(([, val]) => [false, val]);\n }, []);\n const handleCollapseLevel3 = useCallback(() => {\n setCollapsed(([val]) => [val, true]);\n }, []);\n const handleExpandLevel3 = useCallback(() => {\n setCollapsed(([val]) => [val, false]);\n }, []);\n\n const handleChangeTabbedView2 = useCallback(\n (evt: SyntheticEvent<HTMLElement>) => {\n const target = evt.target as HTMLElement;\n const button = target?.closest(\"button\");\n if (button) {\n const value = parseInt(button.value) as 0 | 1;\n setTabbedView(([, val]) => [value, val]);\n }\n },\n [],\n );\n const handleChangeTabbedView3 = useCallback(\n (evt: SyntheticEvent<HTMLElement>) => {\n const target = evt.target as HTMLElement;\n const button = target?.closest(\"button\");\n if (button) {\n const value = parseInt(button.value) as 0 | 1;\n setTabbedView(([val]) => [val, value]);\n }\n },\n [],\n );\n\n return {\n level1: {\n activeTab: activeTabs[0],\n key: \"level1\",\n onTabChange: handleTabChangeLevel1,\n },\n level2: {\n activeTab: activeTabs[1],\n collapsed: collapsed[0],\n key: \"level2\",\n onChangeTabbedView: handleChangeTabbedView2,\n onCollapse: handleCollapseLevel2,\n onExpand: handleExpandLevel2,\n onTabChange: handleTabChangeLevel2,\n tabbedView: tabbedView[0],\n },\n level3: {\n activeTab: activeTabs[2],\n collapsed: collapsed[1],\n key: \"level3\",\n onChangeTabbedView: handleChangeTabbedView3,\n onCollapse: handleCollapseLevel3,\n onExpand: handleExpandLevel3,\n onTabChange: handleTabChangeLevel3,\n tabbedView: tabbedView[1],\n },\n tableConfig,\n };\n};\n\nexport type LevelsConfig = {\n level1: LevelConfig;\n level2: LevelConfig;\n level3: LevelConfig;\n};\n\nexport type LevelConfig = {\n activeTab: number;\n key: string;\n collapsed?: boolean;\n onChangeTabbedView?: (evt: SyntheticEvent<HTMLElement>) => void;\n onCollapse?: () => void;\n onTabChange?: (tabIndex: number) => void;\n onExpand?: () => void;\n tabbedView?: 0 | 1;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { Table } from '@vuu-ui/vuu-table';
|
|
3
|
-
import { TreeDataSource } from '@vuu-ui/vuu-data-local';
|
|
4
|
-
import { useRef, useMemo } from 'react';
|
|
5
|
-
import { isRowSelected, metadataKeys } from '@vuu-ui/vuu-utils';
|
|
6
|
-
|
|
7
|
-
const { DEPTH, IS_LEAF, KEY, IDX } = metadataKeys;
|
|
8
|
-
const rowToTreeNodeObject = (row, columnMap) => {
|
|
9
|
-
const { [IS_LEAF]: isLeaf, [KEY]: key, [IDX]: index, [DEPTH]: depth } = row;
|
|
10
|
-
const firstColIdx = columnMap.nodeData;
|
|
11
|
-
const labelColIdx = firstColIdx + depth;
|
|
12
|
-
return {
|
|
13
|
-
key,
|
|
14
|
-
index,
|
|
15
|
-
isGroupRow: !isLeaf,
|
|
16
|
-
isSelected: isRowSelected(row),
|
|
17
|
-
data: {
|
|
18
|
-
label: row[labelColIdx],
|
|
19
|
-
nodeData: row[firstColIdx]
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
const TreeTable = ({
|
|
24
|
-
config,
|
|
25
|
-
dataSource,
|
|
26
|
-
source,
|
|
27
|
-
...tableProps
|
|
28
|
-
}) => {
|
|
29
|
-
const dataSourceRef = useRef(void 0);
|
|
30
|
-
useMemo(() => {
|
|
31
|
-
if (dataSource) {
|
|
32
|
-
dataSourceRef.current = dataSource;
|
|
33
|
-
} else if (source) {
|
|
34
|
-
dataSourceRef.current = new TreeDataSource({
|
|
35
|
-
data: source
|
|
36
|
-
});
|
|
37
|
-
} else {
|
|
38
|
-
throw Error(`TreeTable either source or dataSource must be provided`);
|
|
39
|
-
}
|
|
40
|
-
}, [dataSource, source]);
|
|
41
|
-
const tableConfig = useMemo(() => {
|
|
42
|
-
return {
|
|
43
|
-
...config,
|
|
44
|
-
columns: dataSourceRef.current?.columnDescriptors ?? [],
|
|
45
|
-
columnSeparators: false,
|
|
46
|
-
rowSeparators: false
|
|
47
|
-
};
|
|
48
|
-
}, [config]);
|
|
49
|
-
console.log({ tableConfig, dataSource: dataSourceRef.current });
|
|
50
|
-
if (dataSourceRef.current === void 0) {
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
return /* @__PURE__ */ jsx(
|
|
54
|
-
Table,
|
|
55
|
-
{
|
|
56
|
-
...tableProps,
|
|
57
|
-
className: "vuuTreeTable",
|
|
58
|
-
config: tableConfig,
|
|
59
|
-
dataSource: dataSourceRef.current,
|
|
60
|
-
groupToggleTarget: "toggle-icon",
|
|
61
|
-
navigationStyle: "tree",
|
|
62
|
-
rowToObject: rowToTreeNodeObject,
|
|
63
|
-
showColumnHeaderMenus: false,
|
|
64
|
-
selectionModel: "single",
|
|
65
|
-
selectionBookendWidth: 0
|
|
66
|
-
}
|
|
67
|
-
);
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
export { TreeTable };
|
|
71
|
-
//# sourceMappingURL=TreeTable.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TreeTable.js","sources":["../../src/tree-table/TreeTable.tsx"],"sourcesContent":["import { TableProps } from \"@vuu-ui/vuu-table\";\nimport { Table } from \"@vuu-ui/vuu-table\";\nimport { TreeDataSource } from \"@vuu-ui/vuu-data-local\";\nimport { useMemo, useRef } from \"react\";\nimport { TableConfig } from \"@vuu-ui/vuu-table-types\";\nimport {\n isRowSelected,\n metadataKeys,\n type RowToObjectMapper,\n type TreeSourceNode,\n} from \"@vuu-ui/vuu-utils\";\n\nconst { DEPTH, IS_LEAF, KEY, IDX } = metadataKeys;\n\ninterface Props extends Omit<TableProps, \"config\" | \"dataSource\"> {\n config?: Pick<\n TableConfig,\n \"columnSeparators\" | \"rowSeparators\" | \"zebraStripes\"\n >;\n dataSource?: TreeDataSource;\n source?: TreeSourceNode[];\n}\n\nexport type TreeTableProps = Props &\n ({ dataSource: TreeDataSource } | { source: TreeSourceNode[] });\n\nconst rowToTreeNodeObject: RowToObjectMapper = (row, columnMap) => {\n const { [IS_LEAF]: isLeaf, [KEY]: key, [IDX]: index, [DEPTH]: depth } = row;\n const firstColIdx = columnMap.nodeData;\n const labelColIdx = firstColIdx + depth;\n\n return {\n key,\n index,\n isGroupRow: !isLeaf,\n isSelected: isRowSelected(row),\n data: {\n label: row[labelColIdx],\n nodeData: row[firstColIdx],\n },\n };\n};\n\nexport const TreeTable = ({\n config,\n dataSource,\n source,\n ...tableProps\n}: TreeTableProps) => {\n const dataSourceRef = useRef<TreeDataSource>(undefined);\n useMemo(() => {\n if (dataSource) {\n dataSourceRef.current = dataSource;\n } else if (source) {\n dataSourceRef.current = new TreeDataSource({\n data: source,\n });\n } else {\n throw Error(`TreeTable either source or dataSource must be provided`);\n }\n }, [dataSource, source]);\n\n const tableConfig = useMemo<TableConfig>(() => {\n return {\n ...config,\n columns: dataSourceRef.current?.columnDescriptors ?? [],\n columnSeparators: false,\n rowSeparators: false,\n };\n }, [config]);\n\n console.log({ tableConfig, dataSource: dataSourceRef.current });\n\n if (dataSourceRef.current === undefined) {\n return null;\n }\n\n return (\n <Table\n {...tableProps}\n className=\"vuuTreeTable\"\n config={tableConfig}\n dataSource={dataSourceRef.current}\n groupToggleTarget=\"toggle-icon\"\n navigationStyle=\"tree\"\n rowToObject={rowToTreeNodeObject}\n showColumnHeaderMenus={false}\n selectionModel=\"single\"\n selectionBookendWidth={0}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;AAYA,MAAM,EAAE,KAAA,EAAO,OAAS,EAAA,GAAA,EAAK,KAAQ,GAAA,YAAA;AAcrC,MAAM,mBAAA,GAAyC,CAAC,GAAA,EAAK,SAAc,KAAA;AACjE,EAAA,MAAM,EAAE,CAAC,OAAO,GAAG,MAAA,EAAQ,CAAC,GAAG,GAAG,GAAK,EAAA,CAAC,GAAG,GAAG,KAAA,EAAO,CAAC,KAAK,GAAG,OAAU,GAAA,GAAA;AACxE,EAAA,MAAM,cAAc,SAAU,CAAA,QAAA;AAC9B,EAAA,MAAM,cAAc,WAAc,GAAA,KAAA;AAElC,EAAO,OAAA;AAAA,IACL,GAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAY,CAAC,MAAA;AAAA,IACb,UAAA,EAAY,cAAc,GAAG,CAAA;AAAA,IAC7B,IAAM,EAAA;AAAA,MACJ,KAAA,EAAO,IAAI,WAAW,CAAA;AAAA,MACtB,QAAA,EAAU,IAAI,WAAW;AAAA;AAC3B,GACF;AACF,CAAA;AAEO,MAAM,YAAY,CAAC;AAAA,EACxB,MAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAG;AACL,CAAsB,KAAA;AACpB,EAAM,MAAA,aAAA,GAAgB,OAAuB,KAAS,CAAA,CAAA;AACtD,EAAA,OAAA,CAAQ,MAAM;AACZ,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,aAAA,CAAc,OAAU,GAAA,UAAA;AAAA,eACf,MAAQ,EAAA;AACjB,MAAc,aAAA,CAAA,OAAA,GAAU,IAAI,cAAe,CAAA;AAAA,QACzC,IAAM,EAAA;AAAA,OACP,CAAA;AAAA,KACI,MAAA;AACL,MAAA,MAAM,MAAM,CAAwD,sDAAA,CAAA,CAAA;AAAA;AACtE,GACC,EAAA,CAAC,UAAY,EAAA,MAAM,CAAC,CAAA;AAEvB,EAAM,MAAA,WAAA,GAAc,QAAqB,MAAM;AAC7C,IAAO,OAAA;AAAA,MACL,GAAG,MAAA;AAAA,MACH,OAAS,EAAA,aAAA,CAAc,OAAS,EAAA,iBAAA,IAAqB,EAAC;AAAA,MACtD,gBAAkB,EAAA,KAAA;AAAA,MAClB,aAAe,EAAA;AAAA,KACjB;AAAA,GACF,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,OAAA,CAAQ,IAAI,EAAE,WAAA,EAAa,UAAY,EAAA,aAAA,CAAc,SAAS,CAAA;AAE9D,EAAI,IAAA,aAAA,CAAc,YAAY,KAAW,CAAA,EAAA;AACvC,IAAO,OAAA,IAAA;AAAA;AAGT,EACE,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,UAAA;AAAA,MACJ,SAAU,EAAA,cAAA;AAAA,MACV,MAAQ,EAAA,WAAA;AAAA,MACR,YAAY,aAAc,CAAA,OAAA;AAAA,MAC1B,iBAAkB,EAAA,aAAA;AAAA,MAClB,eAAgB,EAAA,MAAA;AAAA,MAChB,WAAa,EAAA,mBAAA;AAAA,MACb,qBAAuB,EAAA,KAAA;AAAA,MACvB,cAAe,EAAA,QAAA;AAAA,MACf,qBAAuB,EAAA;AAAA;AAAA,GACzB;AAEJ;;;;"}
|