@webitel/ui-sdk 24.12.96 → 24.12.97
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/CHANGELOG.md +7 -0
- package/dist/ui-sdk.js +2577 -2583
- package/dist/ui-sdk.umd.cjs +14 -14
- package/package.json +1 -1
- package/src/modules/Filters/v2/headers/createTableHeadersStore.ts +127 -78
- package/src/modules/Filters/v2/persist/usePersistedStorage.ts +0 -5
- package/src/modules/Filters/v2/table/createTableStore.store.ts +3 -2
package/package.json
CHANGED
|
@@ -1,89 +1,138 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import {
|
|
1
|
+
import { defineStore } from "pinia";
|
|
2
|
+
import { computed, ref } from "vue";
|
|
3
|
+
|
|
4
|
+
import {WtTableHeader} from "../../../../components/wt-table/types/WtTable";
|
|
5
|
+
import { sortToQueryAdapter } from "../../../../scripts";
|
|
6
|
+
import { SortSymbols } from "../../../../scripts/sortQueryAdapters";
|
|
7
|
+
import { usePersistedStorage } from "../persist/usePersistedStorage.ts";
|
|
5
8
|
|
|
6
9
|
export const createTableHeadersStore = (
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
namespace: string,
|
|
11
|
+
{ headers: rawHeaders },
|
|
9
12
|
) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
13
|
+
const id = `${namespace}/headers`;
|
|
14
|
+
|
|
15
|
+
return defineStore(id, () => {
|
|
16
|
+
const headers = ref(rawHeaders);
|
|
17
|
+
|
|
18
|
+
const shownHeaders = computed(() => {
|
|
19
|
+
return headers.value.filter((header) => header.show);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const fields = computed(() => {
|
|
23
|
+
return shownHeaders.value.map((header) => header.field);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const sort = computed(() => {
|
|
27
|
+
const encodeSortQuery = ({ column, order }) =>
|
|
28
|
+
`${sortToQueryAdapter(order)}${column.field}`;
|
|
29
|
+
|
|
30
|
+
const sortedCol = headers.value.find((header) => header.sort);
|
|
31
|
+
|
|
32
|
+
return sortedCol
|
|
33
|
+
? encodeSortQuery({ column: sortedCol, order: sortedCol.sort })
|
|
34
|
+
: null;
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
const $reset = () => {
|
|
38
|
+
headers.value = rawHeaders;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const updateShownHeaders = (value) => {
|
|
42
|
+
headers.value = value;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const updateFields = (fields: string[]) => {
|
|
46
|
+
const newHeaders = headers.value.map((header: WtTableHeader) => {
|
|
47
|
+
return {
|
|
48
|
+
...header,
|
|
49
|
+
show: fields.includes(header.field),
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
updateShownHeaders(newHeaders);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const updateSort = (column) => {
|
|
56
|
+
const getNextSortOrder = (sort) => {
|
|
57
|
+
switch (sort) {
|
|
58
|
+
case SortSymbols.NONE:
|
|
59
|
+
return SortSymbols.ASC;
|
|
60
|
+
case SortSymbols.ASC:
|
|
61
|
+
return SortSymbols.DESC;
|
|
62
|
+
case SortSymbols.DESC:
|
|
63
|
+
return SortSymbols.NONE;
|
|
64
|
+
default:
|
|
65
|
+
return SortSymbols.ASC;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const changeHeadersSort = ({ headers, sortedHeader, order }) => {
|
|
70
|
+
return headers.map((header) => {
|
|
71
|
+
if (header.sort === undefined) return header;
|
|
72
|
+
|
|
73
|
+
// reset all headers by default
|
|
74
|
+
let newSort = null;
|
|
75
|
+
|
|
76
|
+
if (header.field === sortedHeader.field) {
|
|
77
|
+
newSort = order;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return {
|
|
81
|
+
...header,
|
|
82
|
+
sort: newSort,
|
|
83
|
+
};
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const order = getNextSortOrder(column.sort);
|
|
88
|
+
|
|
89
|
+
const newHeaders = changeHeadersSort({
|
|
90
|
+
headers: headers.value,
|
|
91
|
+
sortedHeader: column,
|
|
92
|
+
order,
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
headers.value = newHeaders;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
const setupPersistence = async () => {
|
|
99
|
+
const { restore: restoreFields } = usePersistedStorage({
|
|
100
|
+
name: "fields",
|
|
101
|
+
value: fields,
|
|
102
|
+
onStore: (save, { name }) => {
|
|
103
|
+
const value = fields.value.join(',');
|
|
104
|
+
return save({ name, value })
|
|
105
|
+
},
|
|
106
|
+
onRestore: async (restore, name) => {
|
|
107
|
+
const value = await restore(name) as string;
|
|
108
|
+
if (value) {
|
|
109
|
+
return updateFields(value.split(','));
|
|
110
|
+
}
|
|
59
111
|
}
|
|
60
|
-
|
|
61
|
-
return {
|
|
62
|
-
...header,
|
|
63
|
-
sort: newSort,
|
|
64
|
-
};
|
|
65
112
|
});
|
|
66
|
-
};
|
|
67
113
|
|
|
68
|
-
|
|
114
|
+
const { restore: restoreSort } = usePersistedStorage({
|
|
115
|
+
name: "sort",
|
|
116
|
+
value: sort,
|
|
117
|
+
});
|
|
69
118
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
119
|
+
return Promise.allSettled([
|
|
120
|
+
restoreFields(),
|
|
121
|
+
restoreSort(),
|
|
122
|
+
]);
|
|
123
|
+
};
|
|
75
124
|
|
|
76
|
-
|
|
77
|
-
|
|
125
|
+
return {
|
|
126
|
+
headers,
|
|
127
|
+
shownHeaders,
|
|
128
|
+
fields,
|
|
129
|
+
sort,
|
|
78
130
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
shownHeaders,
|
|
82
|
-
fields,
|
|
83
|
-
sort,
|
|
131
|
+
updateShownHeaders,
|
|
132
|
+
updateSort,
|
|
84
133
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
134
|
+
setupPersistence,
|
|
135
|
+
$reset,
|
|
136
|
+
};
|
|
137
|
+
});
|
|
89
138
|
};
|
|
@@ -72,11 +72,6 @@ export const usePersistedStorage = ({
|
|
|
72
72
|
so that onStore is called only once on each value change
|
|
73
73
|
*/
|
|
74
74
|
const save = async ({ name, value: storedValue }) => {
|
|
75
|
-
// await Promise.allSettled(
|
|
76
|
-
// setItemFns.map((setItem) => {
|
|
77
|
-
// return setItem({ name, value: storedValue });
|
|
78
|
-
// }),
|
|
79
|
-
// );
|
|
80
75
|
setItemFns.forEach((setter) => {
|
|
81
76
|
setter(name, storedValue);
|
|
82
77
|
});
|
|
@@ -32,7 +32,7 @@ export const createTableStore = <Entity extends { id: string; etag?: string }>(
|
|
|
32
32
|
|
|
33
33
|
const headersStore = useHeadersStore();
|
|
34
34
|
const { headers, shownHeaders, fields, sort } = storeToRefs(headersStore);
|
|
35
|
-
const { updateSort, updateShownHeaders } = headersStore;
|
|
35
|
+
const { updateSort, updateShownHeaders, setupPersistence: setupHeadersPersistence } = headersStore;
|
|
36
36
|
|
|
37
37
|
const filtersStore = useFiltersStore();
|
|
38
38
|
const { filtersManager, isRestoring: isFiltersRestoring } =
|
|
@@ -116,12 +116,13 @@ export const createTableStore = <Entity extends { id: string; etag?: string }>(
|
|
|
116
116
|
await Promise.allSettled([
|
|
117
117
|
setupPaginationPersistence(),
|
|
118
118
|
setupFiltersPersistence(),
|
|
119
|
+
setupHeadersPersistence(),
|
|
119
120
|
]);
|
|
120
121
|
|
|
121
122
|
let loadingAfterFiltersChange = false;
|
|
122
123
|
|
|
123
124
|
watch(
|
|
124
|
-
[() => filtersManager.value.getAllValues(), sort, size],
|
|
125
|
+
[() => filtersManager.value.getAllValues(), sort, fields, size],
|
|
125
126
|
async () => {
|
|
126
127
|
loadingAfterFiltersChange = true;
|
|
127
128
|
updatePage(1);
|