@webitel/ui-datalist 1.1.26 → 1.1.28

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/Readme.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  High level package. Contains neccessary tools for building datalists in Webitel frontend projects.
4
4
 
5
+ ## Build steps
6
+
7
+ 1. `npm ci` - install dependencies
8
+ 2. `npm version patch --git-tag-version false` - bump version
9
+ 3. `npm run lint:fix || true` - fix lint errors
10
+ 4. `(npm run build:types || true)` - build types
11
+ 5. `npm run lint:package` - lint package
12
+ 6. `npm run utils:publish` - publish library
13
+
5
14
  ## Deps:
6
15
 
7
16
  * `@webitel/ui-sdk`
package/package.json CHANGED
@@ -1,9 +1,8 @@
1
1
  {
2
2
  "name": "@webitel/ui-datalist",
3
- "version": "1.1.26",
3
+ "version": "1.1.28",
4
4
  "description": "Toolkit for building data lists in webitel ui system",
5
5
  "scripts": {
6
- "make-all": "npm version patch --git-tag-version false && ( npm run lint:fix || true) && (npm run build:types || true) && npm run lint:package && npm run utils:publish",
7
6
  "build:types": "vue-tsc -p ./tsconfig.build.json",
8
7
  "lint:fix": "npx biome check --write ./src",
9
8
  "biome:ci:gh": "biome ci ./src --reporter=github",
@@ -101,36 +101,48 @@ export const tableHeadersStoreBody = ({
101
101
  };
102
102
 
103
103
  const updateFields = (fields: string[]) => {
104
- const newHeaders = headers.value.map((header: WtTableHeader) => ({
104
+ const fieldsSet = new Set(fields);
105
+ const mainFieldNames = new Set(headers.value.map((header) => header.field));
106
+
107
+ const mainHeaders = headers.value.map((header: WtTableHeader) => ({
105
108
  ...header,
106
- show: fields.includes(header.field),
109
+ show: fieldsSet.has(header.field),
107
110
  }));
108
111
 
109
- const customFields = fields.filter(
110
- (field) => !headers.value.some((header) => header.field === field),
112
+ const customHeaders = fields
113
+ .filter((field) => !mainFieldNames.has(field))
114
+ .map((field) => ({
115
+ show: true,
116
+ field,
117
+ shouldBeInitialized: true,
118
+ }));
119
+
120
+ const headersByField = new Map(
121
+ [
122
+ ...mainHeaders,
123
+ ...customHeaders,
124
+ ].map((header) => [
125
+ header.field,
126
+ header,
127
+ ]),
111
128
  );
112
- const customFieldHeaders = customFields.map((field) => ({
113
- show: true,
114
- field,
115
- shouldBeInitialized: true,
116
- }));
117
129
 
118
- const mergedHeaders = [
119
- ...newHeaders,
120
- ...customFieldHeaders,
121
- ];
122
- const orderedFields = fields.filter((field) =>
123
- mergedHeaders.some((header) => header.field === field),
124
- );
125
- const reordered = setHeaderOrder(orderedFields);
130
+ const headersInPersistedOrder = fields.flatMap((field) => {
131
+ const header = headersByField.get(field);
132
+ if (!header) return [];
133
+ headersByField.delete(field);
134
+ return [
135
+ header,
136
+ ];
137
+ });
126
138
 
127
- const uniqueMerged = mergedHeaders.filter(
128
- (merged) => !reordered.some((r) => r.field === merged.field),
129
- );
139
+ const hiddenHeaders = [
140
+ ...headersByField.values(),
141
+ ];
130
142
 
131
143
  updateShownHeaders([
132
- ...reordered,
133
- ...uniqueMerged,
144
+ ...headersInPersistedOrder,
145
+ ...hiddenHeaders,
134
146
  ]);
135
147
  };
136
148