@webitel/ui-datalist 1.0.78 → 1.0.79
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webitel/ui-datalist",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.79",
|
|
4
4
|
"description": "Toolkit for building data lists in webitel ui system",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"make-all": "npm version patch --git-tag-version false && ( npm run lint:fix || true) && (npm run build:types || true) && npm run utils:publish",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { WtTableHeader } from '@webitel/ui-sdk/components/wt-table/types/WtTable';
|
|
2
2
|
import { sortToQueryAdapter } from '@webitel/ui-sdk/scripts';
|
|
3
3
|
import { SortSymbols } from '@webitel/ui-sdk/scripts/sortQueryAdapters';
|
|
4
|
-
import { computed, ref } from 'vue';
|
|
4
|
+
import { computed, ref, nextTick } from 'vue';
|
|
5
5
|
|
|
6
6
|
import { createDatalistStore } from '../_shared/createDatalistStore';
|
|
7
7
|
import { PersistedStorageType } from '../persist/PersistedStorage.types';
|
|
@@ -18,6 +18,7 @@ export const tableHeadersStoreBody = ({
|
|
|
18
18
|
id,
|
|
19
19
|
}: TableHeadersStoreBodyParams) => {
|
|
20
20
|
const headers = ref<WtTableHeader[]>(rawHeaders);
|
|
21
|
+
const isReorderingColumn = ref(false);
|
|
21
22
|
|
|
22
23
|
const shownHeaders = computed(() => {
|
|
23
24
|
return headers.value.filter((header) => header.show);
|
|
@@ -55,23 +56,33 @@ export const tableHeadersStoreBody = ({
|
|
|
55
56
|
headers.value = value;
|
|
56
57
|
};
|
|
57
58
|
|
|
59
|
+
const setHeaderOrder = (orderedFields: string[]) => {
|
|
60
|
+
const arrayFieldOrder = new Map<string, number>();
|
|
61
|
+
headers.value.forEach((header, idx) => arrayFieldOrder.set(header.field, idx));
|
|
62
|
+
|
|
63
|
+
const newOrder = orderedFields.map(field => arrayFieldOrder.get(field));
|
|
64
|
+
|
|
65
|
+
return newOrder.map(idx => headers.value[idx]);
|
|
66
|
+
};
|
|
67
|
+
|
|
58
68
|
const updateFields = (fields: string[]) => {
|
|
59
|
-
const newHeaders = headers.value.map((header: WtTableHeader) => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
};
|
|
64
|
-
});
|
|
69
|
+
const newHeaders = headers.value.map((header: WtTableHeader) => ({
|
|
70
|
+
...header,
|
|
71
|
+
show: fields.includes(header.field),
|
|
72
|
+
}));
|
|
65
73
|
|
|
66
74
|
const customFields = fields.filter((field) => !headers.value.some((header) => header.field === field));
|
|
67
|
-
// debugger
|
|
68
75
|
const customFieldHeaders = customFields.map((field) => ({
|
|
69
76
|
show: true,
|
|
70
77
|
field,
|
|
71
78
|
shouldBeInitialized: true,
|
|
72
79
|
}));
|
|
73
|
-
|
|
74
|
-
|
|
80
|
+
|
|
81
|
+
const mergedHeaders = [...newHeaders, ...customFieldHeaders];
|
|
82
|
+
const orderedFields = fields.filter(field => mergedHeaders.some(header => header.field === field));
|
|
83
|
+
const reordered = setHeaderOrder(orderedFields);
|
|
84
|
+
|
|
85
|
+
updateShownHeaders(reordered);
|
|
75
86
|
};
|
|
76
87
|
|
|
77
88
|
const updateSort = (column) => {
|
|
@@ -175,16 +186,14 @@ export const tableHeadersStoreBody = ({
|
|
|
175
186
|
};
|
|
176
187
|
|
|
177
188
|
const columnReorder = (orderedFields: string[]) => {
|
|
178
|
-
|
|
189
|
+
isReorderingColumn.value = true;
|
|
179
190
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
if (header) {
|
|
183
|
-
reorderedHeaders.push(header);
|
|
184
|
-
}
|
|
185
|
-
});
|
|
191
|
+
const reordered = setHeaderOrder(orderedFields);
|
|
192
|
+
updateShownHeaders(reordered);
|
|
186
193
|
|
|
187
|
-
|
|
194
|
+
nextTick(() => {
|
|
195
|
+
isReorderingColumn.value = false;
|
|
196
|
+
});
|
|
188
197
|
};
|
|
189
198
|
|
|
190
199
|
return {
|
|
@@ -193,6 +202,7 @@ export const tableHeadersStoreBody = ({
|
|
|
193
202
|
fields,
|
|
194
203
|
sort,
|
|
195
204
|
columnWidths,
|
|
205
|
+
isReorderingColumn,
|
|
196
206
|
|
|
197
207
|
updateShownHeaders,
|
|
198
208
|
updateSort,
|
|
@@ -46,7 +46,7 @@ export const tableStoreBody = <Entity extends { id: string; etag?: string }>(
|
|
|
46
46
|
} = paginationStore;
|
|
47
47
|
|
|
48
48
|
const headersStore = useHeadersStore();
|
|
49
|
-
const { headers, shownHeaders, fields, sort, columnWidths } = makeThisToRefs<
|
|
49
|
+
const { headers, shownHeaders, fields, sort, columnWidths, isReorderingColumn } = makeThisToRefs<
|
|
50
50
|
typeof headersStore
|
|
51
51
|
>(headersStore, storeType);
|
|
52
52
|
const {
|
|
@@ -202,6 +202,13 @@ export const tableStoreBody = <Entity extends { id: string; etag?: string }>(
|
|
|
202
202
|
watch(
|
|
203
203
|
[() => filtersManager.value.getAllValues(), sort, fields, size],
|
|
204
204
|
async () => {
|
|
205
|
+
/*
|
|
206
|
+
* @author @Lera24
|
|
207
|
+
* https://webitel.atlassian.net/browse/WTEL-7597?focusedCommentId=697115
|
|
208
|
+
* */
|
|
209
|
+
if (isReorderingColumn.value) {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
205
212
|
loadingAfterFiltersChange = true;
|
|
206
213
|
updatePage(1);
|
|
207
214
|
await loadDataList();
|
|
@@ -10,6 +10,7 @@ export declare const tableHeadersStoreBody: ({ rawHeaders, id, }: TableHeadersSt
|
|
|
10
10
|
fields: import("vue").ComputedRef<any>;
|
|
11
11
|
sort: import("vue").ComputedRef<string>;
|
|
12
12
|
columnWidths: import("vue").ComputedRef<any>;
|
|
13
|
+
isReorderingColumn: import("vue").Ref<boolean, boolean>;
|
|
13
14
|
updateShownHeaders: (value: any) => void;
|
|
14
15
|
updateSort: (column: any) => void;
|
|
15
16
|
columnResize: ({ columnName, columnWidth }: {
|
|
@@ -28,6 +29,7 @@ export declare const createTableHeadersStore: <Entity>(namespace: string, config
|
|
|
28
29
|
fields: import("vue").ComputedRef<any>;
|
|
29
30
|
sort: import("vue").ComputedRef<string>;
|
|
30
31
|
columnWidths: import("vue").ComputedRef<any>;
|
|
32
|
+
isReorderingColumn: import("vue").Ref<boolean, boolean>;
|
|
31
33
|
updateShownHeaders: (value: any) => void;
|
|
32
34
|
updateSort: (column: any) => void;
|
|
33
35
|
columnResize: ({ columnName, columnWidth }: {
|