@vuu-ui/vuu-datatable 2.1.19-beta.2 → 2.1.19-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/cjs/filter-table/FilterTable.js +41 -0
  2. package/cjs/filter-table/FilterTable.js.map +1 -0
  3. package/cjs/filter-table/useFilterTable.js +33 -0
  4. package/cjs/filter-table/useFilterTable.js.map +1 -0
  5. package/cjs/filter-table/usePersistFilterState.js +156 -0
  6. package/cjs/filter-table/usePersistFilterState.js.map +1 -0
  7. package/cjs/index.js +16 -0
  8. package/cjs/index.js.map +1 -0
  9. package/cjs/json-table/JsonCell.css.js +6 -0
  10. package/cjs/json-table/JsonCell.css.js.map +1 -0
  11. package/cjs/json-table/JsonCell.js +42 -0
  12. package/cjs/json-table/JsonCell.js.map +1 -0
  13. package/cjs/json-table/JsonTable.js +52 -0
  14. package/cjs/json-table/JsonTable.js.map +1 -0
  15. package/cjs/linked-table-view/LinkedTableView.css.js +6 -0
  16. package/cjs/linked-table-view/LinkedTableView.css.js.map +1 -0
  17. package/cjs/linked-table-view/LinkedTableView.js +168 -0
  18. package/cjs/linked-table-view/LinkedTableView.js.map +1 -0
  19. package/cjs/linked-table-view/TableLayoutToggleButton.js +31 -0
  20. package/cjs/linked-table-view/TableLayoutToggleButton.js.map +1 -0
  21. package/cjs/linked-table-view/useLinkedTableView.js +210 -0
  22. package/cjs/linked-table-view/useLinkedTableView.js.map +1 -0
  23. package/cjs/tree-table/TreeTable.js +55 -0
  24. package/cjs/tree-table/TreeTable.js.map +1 -0
  25. package/esm/filter-table/FilterTable.js +39 -0
  26. package/esm/filter-table/FilterTable.js.map +1 -0
  27. package/esm/filter-table/useFilterTable.js +31 -0
  28. package/esm/filter-table/useFilterTable.js.map +1 -0
  29. package/esm/filter-table/usePersistFilterState.js +154 -0
  30. package/esm/filter-table/usePersistFilterState.js.map +1 -0
  31. package/esm/index.js +6 -0
  32. package/esm/index.js.map +1 -0
  33. package/esm/json-table/JsonCell.css.js +4 -0
  34. package/esm/json-table/JsonCell.css.js.map +1 -0
  35. package/esm/json-table/JsonCell.js +40 -0
  36. package/esm/json-table/JsonCell.js.map +1 -0
  37. package/esm/json-table/JsonTable.js +50 -0
  38. package/esm/json-table/JsonTable.js.map +1 -0
  39. package/esm/linked-table-view/LinkedTableView.css.js +4 -0
  40. package/esm/linked-table-view/LinkedTableView.css.js.map +1 -0
  41. package/esm/linked-table-view/LinkedTableView.js +166 -0
  42. package/esm/linked-table-view/LinkedTableView.js.map +1 -0
  43. package/esm/linked-table-view/TableLayoutToggleButton.js +29 -0
  44. package/esm/linked-table-view/TableLayoutToggleButton.js.map +1 -0
  45. package/esm/linked-table-view/useLinkedTableView.js +208 -0
  46. package/esm/linked-table-view/useLinkedTableView.js.map +1 -0
  47. package/esm/tree-table/TreeTable.js +53 -0
  48. package/esm/tree-table/TreeTable.js.map +1 -0
  49. package/package.json +18 -15
  50. package/src/filter-table/FilterTable.js +0 -40
  51. package/src/filter-table/index.js +0 -2
  52. package/src/filter-table/useFilterTable.js +0 -23
  53. package/src/filter-table/usePersistFilterState.js +0 -139
  54. package/src/index.js +0 -4
  55. package/src/json-table/JsonCell.css.js +0 -21
  56. package/src/json-table/JsonCell.js +0 -40
  57. package/src/json-table/JsonTable.js +0 -38
  58. package/src/json-table/index.js +0 -1
  59. package/src/linked-table-view/LinkedTableView.css.js +0 -24
  60. package/src/linked-table-view/LinkedTableView.js +0 -186
  61. package/src/linked-table-view/TableLayoutToggleButton.js +0 -27
  62. package/src/linked-table-view/useLinkedTableView.js +0 -205
  63. package/src/tree-table/TreeTable.js +0 -42
  64. package/src/tree-table/index.js +0 -1
@@ -1,205 +0,0 @@
1
- import { useData } from "@vuu-ui/vuu-utils";
2
- import { useCallback, useMemo, useState } from "react";
3
- const getSchema = (schemas, { module, table })=>{
4
- const schema = schemas.find(({ table: t })=>t.module === module && t.table === table);
5
- if (schema) return schema;
6
- throw Error(`No schema for table ${module} ${table}`);
7
- };
8
- const getTable = (ds)=>{
9
- if (ds.table) return ds.table;
10
- throw Error("No datasource table specified");
11
- };
12
- const getTables = (linkedDataSources)=>{
13
- const { 1: linked1, 2: linked2, 3: linked3 } = linkedDataSources;
14
- const tables = [];
15
- tables.push(getTable(linked1.dataSource));
16
- if (Array.isArray(linked2)) linked2.forEach(({ dataSource })=>{
17
- tables.push(getTable(dataSource));
18
- });
19
- else tables.push(getTable(linked2.dataSource));
20
- if (Array.isArray(linked3)) linked3.forEach(({ dataSource })=>{
21
- tables.push(getTable(dataSource));
22
- });
23
- else if (linked3) tables.push(getTable(linked3.dataSource));
24
- return tables;
25
- };
26
- const useLinkedTableView = ({ linkedDataSources })=>{
27
- const { VuuDataSource, getServerAPI } = useData();
28
- const [tableConfig, setTableConfig] = useState();
29
- const [activeTabs, setActiveTab] = useState([
30
- 0,
31
- 0,
32
- 0
33
- ]);
34
- const [collapsed, setCollapsed] = useState([
35
- false,
36
- false
37
- ]);
38
- const [tabbedView, setTabbedView] = useState([
39
- 1,
40
- 1
41
- ]);
42
- useMemo(async ()=>{
43
- const tables = getTables(linkedDataSources);
44
- const serverAPI = await getServerAPI();
45
- const schemas = await Promise.all(tables.map(serverAPI.getTableSchema));
46
- const isDataSource = (ds)=>typeof ds === typeof VuuDataSource;
47
- const getDataSource = (ds)=>{
48
- if (isDataSource(ds)) return ds;
49
- return new VuuDataSource(ds);
50
- };
51
- const createVisualLink = (vuuLink, parentDs)=>{
52
- if (parentDs && parentDs.table) {
53
- const parentVpId = parentDs.viewport;
54
- const toTable = vuuLink.toTable ?? parentDs.table?.table;
55
- return {
56
- link: {
57
- ...vuuLink,
58
- toTable
59
- },
60
- parentClientVpId: parentVpId,
61
- parentVpId
62
- };
63
- }
64
- throw Error("visual link cannot be created without parent vp id");
65
- };
66
- const getLinkedDataSource = (ds, vuuLink, parentDs)=>{
67
- if (isDataSource(ds)) return ds;
68
- return new VuuDataSource({
69
- ...ds,
70
- visualLink: createVisualLink(vuuLink, parentDs)
71
- });
72
- };
73
- const getTableConfig = (ds)=>{
74
- const schema = getSchema(schemas, getTable(ds));
75
- return {
76
- columns: schema.columns
77
- };
78
- };
79
- const getRootConfig = ({ dataSource: ds, title })=>({
80
- config: getTableConfig(ds),
81
- dataSource: getDataSource(ds),
82
- title
83
- });
84
- const getLinkedConfig = ({ dataSource: ds, vuuLink, title }, parentDataSource)=>({
85
- config: getTableConfig(ds),
86
- dataSource: getLinkedDataSource(ds, vuuLink, parentDataSource),
87
- title
88
- });
89
- const getLinkedConfigs = (linkedTableConfig, parentDataSource)=>{
90
- if (Array.isArray(linkedTableConfig)) return linkedTableConfig.map((config)=>getLinkedConfig(config, parentDataSource));
91
- return getLinkedConfig(linkedTableConfig, parentDataSource);
92
- };
93
- const { 1: level1, 2: level2, 3: level3 } = linkedDataSources;
94
- const configLevel1 = getRootConfig(level1);
95
- const configLevel2 = getLinkedConfigs(level2, configLevel1.dataSource);
96
- const dsLevel2 = Array.isArray(configLevel2) ? void 0 : configLevel2.dataSource;
97
- const configLevel3 = level3 ? getLinkedConfigs(level3, dsLevel2) : void 0;
98
- const results = {
99
- 1: configLevel1,
100
- 2: configLevel2,
101
- 3: configLevel3
102
- };
103
- setTableConfig(results);
104
- }, [
105
- VuuDataSource,
106
- getServerAPI,
107
- linkedDataSources
108
- ]);
109
- const handleTabChangeLevel1 = useCallback((tabIndex)=>{
110
- setActiveTab(([, v2, v3])=>[
111
- tabIndex,
112
- v2,
113
- v3
114
- ]);
115
- }, []);
116
- const handleTabChangeLevel2 = useCallback((tabIndex)=>{
117
- setActiveTab(([v1, , v3])=>[
118
- v1,
119
- tabIndex,
120
- v3
121
- ]);
122
- }, []);
123
- const handleTabChangeLevel3 = useCallback((tabIndex)=>{
124
- setActiveTab(([v1, v2])=>[
125
- v1,
126
- v2,
127
- tabIndex
128
- ]);
129
- }, []);
130
- const handleCollapseLevel2 = useCallback(()=>{
131
- setCollapsed(([, val])=>[
132
- true,
133
- val
134
- ]);
135
- }, []);
136
- const handleExpandLevel2 = useCallback(()=>{
137
- setCollapsed(([, val])=>[
138
- false,
139
- val
140
- ]);
141
- }, []);
142
- const handleCollapseLevel3 = useCallback(()=>{
143
- setCollapsed(([val])=>[
144
- val,
145
- true
146
- ]);
147
- }, []);
148
- const handleExpandLevel3 = useCallback(()=>{
149
- setCollapsed(([val])=>[
150
- val,
151
- false
152
- ]);
153
- }, []);
154
- const handleChangeTabbedView2 = useCallback((evt)=>{
155
- const target = evt.target;
156
- const button = target?.closest("button");
157
- if (button) {
158
- const value = parseInt(button.value);
159
- setTabbedView(([, val])=>[
160
- value,
161
- val
162
- ]);
163
- }
164
- }, []);
165
- const handleChangeTabbedView3 = useCallback((evt)=>{
166
- const target = evt.target;
167
- const button = target?.closest("button");
168
- if (button) {
169
- const value = parseInt(button.value);
170
- setTabbedView(([val])=>[
171
- val,
172
- value
173
- ]);
174
- }
175
- }, []);
176
- return {
177
- level1: {
178
- activeTab: activeTabs[0],
179
- key: "level1",
180
- onTabChange: handleTabChangeLevel1
181
- },
182
- level2: {
183
- activeTab: activeTabs[1],
184
- collapsed: collapsed[0],
185
- key: "level2",
186
- onChangeTabbedView: handleChangeTabbedView2,
187
- onCollapse: handleCollapseLevel2,
188
- onExpand: handleExpandLevel2,
189
- onTabChange: handleTabChangeLevel2,
190
- tabbedView: tabbedView[0]
191
- },
192
- level3: {
193
- activeTab: activeTabs[2],
194
- collapsed: collapsed[1],
195
- key: "level3",
196
- onChangeTabbedView: handleChangeTabbedView3,
197
- onCollapse: handleCollapseLevel3,
198
- onExpand: handleExpandLevel3,
199
- onTabChange: handleTabChangeLevel3,
200
- tabbedView: tabbedView[1]
201
- },
202
- tableConfig
203
- };
204
- };
205
- export { useLinkedTableView };
@@ -1,42 +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 { useMemo, useRef } from "react";
5
- const TreeTable = ({ config, dataSource, source, ...tableProps })=>{
6
- const dataSourceRef = useRef(void 0);
7
- useMemo(()=>{
8
- if (dataSource) dataSourceRef.current = dataSource;
9
- else if (source) dataSourceRef.current = new TreeDataSource({
10
- data: source
11
- });
12
- else throw Error("TreeTable either source or dataSource must be provided");
13
- }, [
14
- dataSource,
15
- source
16
- ]);
17
- const tableConfig = useMemo(()=>({
18
- ...config,
19
- columns: dataSourceRef.current?.columnDescriptors ?? [],
20
- columnSeparators: false,
21
- selectionBookendWidth: 0,
22
- rowSeparators: false
23
- }), [
24
- config
25
- ]);
26
- console.log({
27
- tableConfig,
28
- dataSource: dataSourceRef.current
29
- });
30
- if (void 0 === dataSourceRef.current) return null;
31
- return /*#__PURE__*/ jsx(Table, {
32
- ...tableProps,
33
- className: "vuuTreeTable",
34
- config: tableConfig,
35
- dataSource: dataSourceRef.current,
36
- groupToggleTarget: "toggle-icon",
37
- navigationStyle: "tree",
38
- showColumnHeaderMenus: false,
39
- selectionModel: "single"
40
- });
41
- };
42
- export { TreeTable };
@@ -1 +0,0 @@
1
- export * from "./TreeTable.js";