@webitel/ui-datalist 1.0.54 → 1.0.56

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.54",
3
+ "version": "1.0.56",
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",
@@ -10,7 +10,7 @@ import { CardItemId, CardParentId } from '../types/CardStore.types';
10
10
 
11
11
  const defaultRegleValidationOptions: RegleSchemaBehaviourOptions &
12
12
  RegleBehaviourOptions = {
13
- autoDirty: false, // compute errors only on $validate() fn (btn click)
13
+ autoDirty: true, // compute errors only on $validate() fn (btn click)
14
14
  syncState: {
15
15
  onValidate: true, // make zod defaults fill state
16
16
  },
@@ -60,6 +60,15 @@ const getPresetList = async (params, config: GetPresetListRequestConfig) => {
60
60
  }
61
61
  };
62
62
 
63
+ const getPreset = async ({ id }) => {
64
+ try {
65
+ const response = await service.readPresetQuery(id);
66
+ return applyTransform(response.data, [snakeToCamel()]);
67
+ } catch (err) {
68
+ throw applyTransform(err, [notify]);
69
+ }
70
+ };
71
+
63
72
  const addPreset = async ({
64
73
  preset,
65
74
  namespace,
@@ -111,6 +120,7 @@ const deletePreset = async ({ id }) => {
111
120
 
112
121
  const PresetQueryAPI = {
113
122
  getList: getPresetList,
123
+ get: getPreset,
114
124
  add: addPreset,
115
125
  update: updatePreset,
116
126
  delete: deletePreset,
@@ -79,7 +79,7 @@ import {
79
79
  import { IconAction } from '@webitel/ui-sdk/enums';
80
80
  import { useTableEmpty } from '@webitel/ui-sdk/modules/TableComponentModule/composables/useTableEmpty';
81
81
  import { type Store, storeToRefs } from 'pinia';
82
- import { computed, inject, ref, watch } from 'vue';
82
+ import {computed, inject, onMounted, ref, watch} from 'vue';
83
83
  import { useI18n } from 'vue-i18n';
84
84
  import { EnginePresetQuery } from 'webitel-sdk';
85
85
 
@@ -107,10 +107,10 @@ const { t } = useI18n();
107
107
  const showPresetsList = ref(false);
108
108
 
109
109
  const presetsStore = props.usePresetsStore();
110
- const { dataList, error, isLoading, filtersManager } =
110
+ const { dataList, error, isLoading, filtersManager, presetId } =
111
111
  storeToRefs(presetsStore);
112
112
 
113
- const { loadDataList, initialize, updateSize, deleteEls } = presetsStore;
113
+ const { loadDataList, initialize, updateSize, deleteEls, setupPresetPersistence } = presetsStore;
114
114
 
115
115
  updateSize(1000);
116
116
  filtersManager.value.addFilter({
@@ -166,6 +166,7 @@ const applySelectedPreset = () => {
166
166
  const filtersSnapshot =
167
167
  selectedPreset.value.preset['filtersManager.toString'];
168
168
  emit('apply', filtersSnapshot);
169
+ presetId.value = selectedPreset.value.id
169
170
 
170
171
  selectedPreset.value = null;
171
172
  showPresetsList.value = false;
@@ -201,6 +202,19 @@ const deletePreset = async (preset: EnginePresetQuery) => {
201
202
  }),
202
203
  });
203
204
  };
205
+
206
+ const restorePresetById = async (id: number | null) => {
207
+ if (!id) return;
208
+ const presetData = await PresetQueryAPI.get({ id });
209
+ const filters = presetData?.preset?.['filtersManager.toString'];
210
+
211
+ if (filters) emit('apply', filters);
212
+ }
213
+
214
+ onMounted(async () => {
215
+ await setupPresetPersistence();
216
+ await restorePresetById(presetId.value)
217
+ })
204
218
  </script>
205
219
 
206
220
  <style lang="scss" scoped>
@@ -1,17 +1,51 @@
1
+ import { ref } from 'vue';
1
2
  import { EnginePresetQuery } from 'webitel-sdk';
2
3
 
3
- import { createTableStore } from '../../table/createTableStore.store.ts';
4
- import PresetQueryAPI from '../api/PresetQuery.ts';
5
- import { headers } from './headers/headers.ts';
4
+ import { PersistedStorageType } from '../../persist/PersistedStorage.types';
5
+ import { usePersistedStorage } from '../../persist/usePersistedStorage';
6
+ import { tableStoreBody } from '../../table/createTableStore.store';
7
+ import PresetQueryAPI from '../api/PresetQuery';
8
+ import { headers } from './headers/headers';
6
9
 
7
- export const createFilterPresetsStore = (namespace = 'presets') => {
10
+ export const filterPresetsStoreBody = (namespace = 'presets') => {
8
11
  const presetsNamespace = namespace.endsWith('presets')
9
12
  ? namespace
10
13
  : `${namespace}/presets`;
11
14
 
12
- return createTableStore<EnginePresetQuery>(presetsNamespace, {
15
+ const presetId = ref(null);
16
+
17
+ const setupPresetPersistence = async () => {
18
+ const { restore: restorePreset } = usePersistedStorage({
19
+ name: 'preset',
20
+ value: presetId,
21
+ storages: [PersistedStorageType.LocalStorage],
22
+ storagePath: presetsNamespace,
23
+ onStore: (save, { name }) => {
24
+ const value = presetId.value;
25
+ return save({ name, value });
26
+ },
27
+ onRestore: async (restore, name) => {
28
+ const value = await restore(name);
29
+ presetId.value = Number(value);
30
+ },
31
+ });
32
+ await restorePreset();
33
+ };
34
+
35
+ const tableStore = tableStoreBody<EnginePresetQuery>(presetsNamespace, {
13
36
  apiModule: PresetQueryAPI,
14
37
  headers,
15
38
  disablePersistence: true,
16
39
  });
40
+
41
+ return {
42
+ ...tableStore,
43
+
44
+ presetId,
45
+ setupPresetPersistence,
46
+ };
47
+ };
48
+
49
+ export const createFilterPresetsStore = (namespace: string) => {
50
+ return () => filterPresetsStoreBody(namespace);
17
51
  };
@@ -14,7 +14,7 @@
14
14
  :label="t('reusable.showUnassigned')"
15
15
  :selected="model?.unassigned"
16
16
  :v="v$.model.unassigned"
17
- @change="model.unassigned = $event"
17
+ @update:selected="model.unassigned = $event"
18
18
  />
19
19
  </template>
20
20
 
@@ -16,7 +16,7 @@
16
16
  :label="t('reusable.showUnassigned')"
17
17
  :selected="model?.unassigned"
18
18
  :v="!disableValidation && v$?.model?.unassigned"
19
- @change="model.unassigned = $event"
19
+ @update:selected="model.unassigned = $event"
20
20
  />
21
21
  </template>
22
22
 
@@ -22,7 +22,7 @@ export const tableStoreBody = <Entity extends { id: string; etag?: string }>(
22
22
  headers: rowHeaders,
23
23
  disablePersistence,
24
24
  storeType,
25
- isAppendDataList
25
+ isAppendDataList,
26
26
  } = config;
27
27
  const usePaginationStore = createTablePaginationStore(namespace, config);
28
28
  const useHeadersStore = createTableHeadersStore(namespace, config, {
@@ -25,6 +25,9 @@ declare const PresetQueryAPI: {
25
25
  items: any;
26
26
  next: any;
27
27
  }>;
28
+ get: ({ id }: {
29
+ id: any;
30
+ }) => Promise<any>;
28
31
  add: ({ preset, namespace, }: {
29
32
  preset: EngineCreatePresetQueryRequest;
30
33
  namespace: string;
@@ -1,4 +1,6 @@
1
- export declare const createFilterPresetsStore: (namespace?: string) => import("../../types/createDatalistStore.types.js").PatchableStoreFactory<{
1
+ export declare const filterPresetsStoreBody: (namespace?: string) => {
2
+ presetId: import("vue").Ref<any, any>;
3
+ setupPresetPersistence: () => Promise<void>;
2
4
  dataList: import("vue").Ref<EnginePresetQuery[], EnginePresetQuery[]>;
3
5
  selected: import("vue").Ref<EnginePresetQuery[], EnginePresetQuery[]>;
4
6
  error: import("vue").Ref<any, any>;
@@ -12,64 +14,64 @@ export declare const createFilterPresetsStore: (namespace?: string) => import(".
12
14
  sort: import("vue").ComputedRef<string>;
13
15
  filtersManager: import("vue").Ref<{
14
16
  filters: Map<string, {
15
- name: import("../../filters/index.js").FilterName;
16
- value: import("../../filters/index.js").FilterValue;
17
- label?: import("../../filters/index.js").FilterLabel;
18
- set: (data: import("../../filters/classes/Filter.js").FilterData) => import("../../filters/index.js").IFilter;
19
- }> & Omit<Map<string, import("../../filters/index.js").IFilter>, keyof Map<any, any>>;
20
- hasFilter: (name: import("../../filters/index.js").FilterName) => boolean;
21
- getFilter: (name: import("../../filters/index.js").FilterName) => import("../../filters/index.js").IFilter;
22
- addFilter: (params: import("../../filters/index.js").FilterInitParams, payload?: object, config?: import("../../filters/index.js").FilterInstanceConfig) => import("../../filters/index.js").IFilter;
17
+ name: import("../../filters").FilterName;
18
+ value: import("../../filters").FilterValue;
19
+ label?: import("../../filters").FilterLabel;
20
+ set: (data: import("../../filters/classes/Filter").FilterData) => import("../../filters").IFilter;
21
+ }> & Omit<Map<string, import("../../filters").IFilter>, keyof Map<any, any>>;
22
+ hasFilter: (name: import("../../filters").FilterName) => boolean;
23
+ getFilter: (name: import("../../filters").FilterName) => import("../../filters").IFilter;
24
+ addFilter: (params: import("../../filters").FilterInitParams, payload?: object, config?: import("../../filters").FilterInstanceConfig) => import("../../filters").IFilter;
23
25
  updateFilter: ({ name, }: {
24
- name: import("../../filters/index.js").FilterName;
25
- value?: import("../../filters/index.js").FilterValue;
26
- label?: import("../../filters/index.js").FilterLabel;
27
- }) => import("../../filters/index.js").IFilter;
28
- deleteFilter: (name: import("../../filters/index.js").FilterName) => import("../../filters/index.js").IFilter;
26
+ name: import("../../filters").FilterName;
27
+ value?: import("../../filters").FilterValue;
28
+ label?: import("../../filters").FilterLabel;
29
+ }) => import("../../filters").IFilter;
30
+ deleteFilter: (name: import("../../filters").FilterName) => import("../../filters").IFilter;
29
31
  toString: () => string;
30
32
  fromString: (snapshotStr: string) => void;
31
33
  reset: ({ include, exclude, }?: {
32
- include?: import("../../filters/index.js").FilterName[];
33
- exclude?: import("../../filters/index.js").FilterName[];
34
+ include?: import("../../filters").FilterName[];
35
+ exclude?: import("../../filters").FilterName[];
34
36
  }) => void;
35
- getAllKeys: () => import("../../filters/index.js").FilterName[];
37
+ getAllKeys: () => import("../../filters").FilterName[];
36
38
  getAllValues: () => {
37
- [name: import("../../filters/index.js").FilterName]: import("../../filters/index.js").FilterValue;
39
+ [name: import("../../filters").FilterName]: import("../../filters").FilterValue;
38
40
  };
39
41
  getFiltersList: ({ include, exclude, }?: {
40
- include?: import("../../filters/index.js").FilterName[];
41
- exclude?: import("../../filters/index.js").FilterName[];
42
- }) => import("../../filters/index.js").IFilter[];
42
+ include?: import("../../filters").FilterName[];
43
+ exclude?: import("../../filters").FilterName[];
44
+ }) => import("../../filters").IFilter[];
43
45
  }, {
44
46
  filters: Map<string, {
45
- name: import("../../filters/index.js").FilterName;
46
- value: import("../../filters/index.js").FilterValue;
47
- label?: import("../../filters/index.js").FilterLabel;
48
- set: (data: import("../../filters/classes/Filter.js").FilterData) => import("../../filters/index.js").IFilter;
49
- }> & Omit<Map<string, import("../../filters/index.js").IFilter>, keyof Map<any, any>>;
50
- hasFilter: (name: import("../../filters/index.js").FilterName) => boolean;
51
- getFilter: (name: import("../../filters/index.js").FilterName) => import("../../filters/index.js").IFilter;
52
- addFilter: (params: import("../../filters/index.js").FilterInitParams, payload?: object, config?: import("../../filters/index.js").FilterInstanceConfig) => import("../../filters/index.js").IFilter;
47
+ name: import("../../filters").FilterName;
48
+ value: import("../../filters").FilterValue;
49
+ label?: import("../../filters").FilterLabel;
50
+ set: (data: import("../../filters/classes/Filter").FilterData) => import("../../filters").IFilter;
51
+ }> & Omit<Map<string, import("../../filters").IFilter>, keyof Map<any, any>>;
52
+ hasFilter: (name: import("../../filters").FilterName) => boolean;
53
+ getFilter: (name: import("../../filters").FilterName) => import("../../filters").IFilter;
54
+ addFilter: (params: import("../../filters").FilterInitParams, payload?: object, config?: import("../../filters").FilterInstanceConfig) => import("../../filters").IFilter;
53
55
  updateFilter: ({ name, }: {
54
- name: import("../../filters/index.js").FilterName;
55
- value?: import("../../filters/index.js").FilterValue;
56
- label?: import("../../filters/index.js").FilterLabel;
57
- }) => import("../../filters/index.js").IFilter;
58
- deleteFilter: (name: import("../../filters/index.js").FilterName) => import("../../filters/index.js").IFilter;
56
+ name: import("../../filters").FilterName;
57
+ value?: import("../../filters").FilterValue;
58
+ label?: import("../../filters").FilterLabel;
59
+ }) => import("../../filters").IFilter;
60
+ deleteFilter: (name: import("../../filters").FilterName) => import("../../filters").IFilter;
59
61
  toString: () => string;
60
62
  fromString: (snapshotStr: string) => void;
61
63
  reset: ({ include, exclude, }?: {
62
- include?: import("../../filters/index.js").FilterName[];
63
- exclude?: import("../../filters/index.js").FilterName[];
64
+ include?: import("../../filters").FilterName[];
65
+ exclude?: import("../../filters").FilterName[];
64
66
  }) => void;
65
- getAllKeys: () => import("../../filters/index.js").FilterName[];
67
+ getAllKeys: () => import("../../filters").FilterName[];
66
68
  getAllValues: () => {
67
- [name: import("../../filters/index.js").FilterName]: import("../../filters/index.js").FilterValue;
69
+ [name: import("../../filters").FilterName]: import("../../filters").FilterValue;
68
70
  };
69
71
  getFiltersList: ({ include, exclude, }?: {
70
- include?: import("../../filters/index.js").FilterName[];
71
- exclude?: import("../../filters/index.js").FilterName[];
72
- }) => import("../../filters/index.js").IFilter[];
72
+ include?: import("../../filters").FilterName[];
73
+ exclude?: import("../../filters").FilterName[];
74
+ }) => import("../../filters").IFilter[];
73
75
  }>;
74
76
  isFiltersRestoring: import("vue").Ref<boolean, boolean>;
75
77
  initialize: ({ parentId: storeParentId, }?: {
@@ -78,7 +80,7 @@ export declare const createFilterPresetsStore: (namespace?: string) => import(".
78
80
  loadDataList: () => Promise<void>;
79
81
  appendToDataList: () => Promise<void>;
80
82
  updateSelected: (value: EnginePresetQuery[]) => void;
81
- patchItemProperty: ({ index, path, value, }: import("../../types/tableStore.types.js").PatchItemPropertyParams) => Promise<void>;
83
+ patchItemProperty: ({ index, path, value, }: import("../../types/tableStore.types").PatchItemPropertyParams) => Promise<void>;
82
84
  deleteEls: (_els: EnginePresetQuery[]) => Promise<void>;
83
85
  updatePage: (newPage: number) => void;
84
86
  updateSize: (newSize: number) => void;
@@ -88,4 +90,97 @@ export declare const createFilterPresetsStore: (namespace?: string) => import(".
88
90
  addFilter: any;
89
91
  updateFilter: any;
90
92
  deleteFilter: any;
91
- }>;
93
+ };
94
+ export declare const createFilterPresetsStore: (namespace: string) => () => {
95
+ presetId: import("vue").Ref<any, any>;
96
+ setupPresetPersistence: () => Promise<void>;
97
+ dataList: import("vue").Ref<EnginePresetQuery[], EnginePresetQuery[]>;
98
+ selected: import("vue").Ref<EnginePresetQuery[], EnginePresetQuery[]>;
99
+ error: import("vue").Ref<any, any>;
100
+ isLoading: import("vue").Ref<boolean, boolean>;
101
+ page: import("vue").Ref<number, number>;
102
+ size: import("vue").Ref<number, number>;
103
+ next: import("vue").Ref<boolean, boolean>;
104
+ headers: import("vue").Ref<any, any>;
105
+ shownHeaders: import("vue").ComputedRef<any>;
106
+ fields: import("vue").ComputedRef<any>;
107
+ sort: import("vue").ComputedRef<string>;
108
+ filtersManager: import("vue").Ref<{
109
+ filters: Map<string, {
110
+ name: import("../../filters").FilterName;
111
+ value: import("../../filters").FilterValue;
112
+ label?: import("../../filters").FilterLabel;
113
+ set: (data: import("../../filters/classes/Filter").FilterData) => import("../../filters").IFilter;
114
+ }> & Omit<Map<string, import("../../filters").IFilter>, keyof Map<any, any>>;
115
+ hasFilter: (name: import("../../filters").FilterName) => boolean;
116
+ getFilter: (name: import("../../filters").FilterName) => import("../../filters").IFilter;
117
+ addFilter: (params: import("../../filters").FilterInitParams, payload?: object, config?: import("../../filters").FilterInstanceConfig) => import("../../filters").IFilter;
118
+ updateFilter: ({ name, }: {
119
+ name: import("../../filters").FilterName;
120
+ value?: import("../../filters").FilterValue;
121
+ label?: import("../../filters").FilterLabel;
122
+ }) => import("../../filters").IFilter;
123
+ deleteFilter: (name: import("../../filters").FilterName) => import("../../filters").IFilter;
124
+ toString: () => string;
125
+ fromString: (snapshotStr: string) => void;
126
+ reset: ({ include, exclude, }?: {
127
+ include?: import("../../filters").FilterName[];
128
+ exclude?: import("../../filters").FilterName[];
129
+ }) => void;
130
+ getAllKeys: () => import("../../filters").FilterName[];
131
+ getAllValues: () => {
132
+ [name: import("../../filters").FilterName]: import("../../filters").FilterValue;
133
+ };
134
+ getFiltersList: ({ include, exclude, }?: {
135
+ include?: import("../../filters").FilterName[];
136
+ exclude?: import("../../filters").FilterName[];
137
+ }) => import("../../filters").IFilter[];
138
+ }, {
139
+ filters: Map<string, {
140
+ name: import("../../filters").FilterName;
141
+ value: import("../../filters").FilterValue;
142
+ label?: import("../../filters").FilterLabel;
143
+ set: (data: import("../../filters/classes/Filter").FilterData) => import("../../filters").IFilter;
144
+ }> & Omit<Map<string, import("../../filters").IFilter>, keyof Map<any, any>>;
145
+ hasFilter: (name: import("../../filters").FilterName) => boolean;
146
+ getFilter: (name: import("../../filters").FilterName) => import("../../filters").IFilter;
147
+ addFilter: (params: import("../../filters").FilterInitParams, payload?: object, config?: import("../../filters").FilterInstanceConfig) => import("../../filters").IFilter;
148
+ updateFilter: ({ name, }: {
149
+ name: import("../../filters").FilterName;
150
+ value?: import("../../filters").FilterValue;
151
+ label?: import("../../filters").FilterLabel;
152
+ }) => import("../../filters").IFilter;
153
+ deleteFilter: (name: import("../../filters").FilterName) => import("../../filters").IFilter;
154
+ toString: () => string;
155
+ fromString: (snapshotStr: string) => void;
156
+ reset: ({ include, exclude, }?: {
157
+ include?: import("../../filters").FilterName[];
158
+ exclude?: import("../../filters").FilterName[];
159
+ }) => void;
160
+ getAllKeys: () => import("../../filters").FilterName[];
161
+ getAllValues: () => {
162
+ [name: import("../../filters").FilterName]: import("../../filters").FilterValue;
163
+ };
164
+ getFiltersList: ({ include, exclude, }?: {
165
+ include?: import("../../filters").FilterName[];
166
+ exclude?: import("../../filters").FilterName[];
167
+ }) => import("../../filters").IFilter[];
168
+ }>;
169
+ isFiltersRestoring: import("vue").Ref<boolean, boolean>;
170
+ initialize: ({ parentId: storeParentId, }?: {
171
+ parentId?: string | number;
172
+ }) => Promise<void>;
173
+ loadDataList: () => Promise<void>;
174
+ appendToDataList: () => Promise<void>;
175
+ updateSelected: (value: EnginePresetQuery[]) => void;
176
+ patchItemProperty: ({ index, path, value, }: import("../../types/tableStore.types").PatchItemPropertyParams) => Promise<void>;
177
+ deleteEls: (_els: EnginePresetQuery[]) => Promise<void>;
178
+ updatePage: (newPage: number) => void;
179
+ updateSize: (newSize: number) => void;
180
+ updateSort: (column: any) => void;
181
+ updateShownHeaders: (value: any) => void;
182
+ hasFilter: any;
183
+ addFilter: any;
184
+ updateFilter: any;
185
+ deleteFilter: any;
186
+ };