@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.78",
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
- return {
61
- ...header,
62
- show: fields.includes(header.field),
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
- // debugger
74
- updateShownHeaders([...newHeaders, ...customFieldHeaders]);
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
- const reorderedHeaders = [];
189
+ isReorderingColumn.value = true;
179
190
 
180
- orderedFields.forEach(field => {
181
- const header = getHeaderByField(field);
182
- if (header) {
183
- reorderedHeaders.push(header);
184
- }
185
- });
191
+ const reordered = setHeaderOrder(orderedFields);
192
+ updateShownHeaders(reordered);
186
193
 
187
- updateShownHeaders(reorderedHeaders);
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 }: {