@webitel/ui-datalist 1.1.67 → 1.1.69
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 +1 -1
- package/src/modules/filters/__tests__/createTableFiltersStore.spec.ts +14 -0
- package/src/modules/filters/createTableFiltersStore.ts +2 -0
- package/src/modules/headers/__tests__/createTableHeadersStore.spec.ts +144 -1
- package/src/modules/headers/createTableHeadersStore.ts +23 -5
- package/src/modules/persist/PersistedStorage.types.ts +1 -0
- package/src/modules/persist/__tests__/usePersistedStorage.spec.ts +162 -3
- package/src/modules/persist/__tests__/useWebStoragePersistedStorage.spec.ts +107 -0
- package/src/modules/persist/useLocalStoragePersistedStorage.ts +5 -26
- package/src/modules/persist/usePersistedStorage.ts +27 -12
- package/src/modules/persist/useSessionStoragePersistedStorage.ts +13 -0
- package/src/modules/persist/useWebStoragePersistedStorage.ts +37 -0
- package/src/modules/types/tableStore.types.ts +7 -0
- package/types/.tsbuildinfo +1 -1
- package/types/modules/filter-presets/stores/createFilterPresetsStore.d.ts +3 -0
- package/types/modules/headers/createTableHeadersStore.d.ts +6 -0
- package/types/modules/permissions-page/stores/createPermissionsStore.d.ts +6 -0
- package/types/modules/persist/PersistedStorage.types.d.ts +2 -1
- package/types/modules/persist/useSessionStoragePersistedStorage.d.ts +4 -0
- package/types/modules/persist/useWebStoragePersistedStorage.d.ts +5 -0
- package/types/modules/table/createTableStore.store.d.ts +6 -0
- package/types/modules/types/tableStore.types.d.ts +7 -0
- package/src/modules/persist/__tests__/useLocalStoragePersistedStorage.spec.ts +0 -66
|
@@ -20,6 +20,7 @@ export declare const filterPresetsStoreBody: (namespace?: string) => {
|
|
|
20
20
|
sort?: (import("@webitel/ui-sdk/src/components/wt-table/types/WtTable").WtTableSortOrder | boolean) | undefined;
|
|
21
21
|
show?: boolean | undefined;
|
|
22
22
|
shouldBeInitialized?: boolean | undefined;
|
|
23
|
+
access?: (() => boolean | import("vue").Ref<boolean>) | undefined;
|
|
23
24
|
}[], import("../../..").DatalistTableHeader[] | {
|
|
24
25
|
value: string;
|
|
25
26
|
locale?: string | (string | number | Record<string, unknown>)[] | undefined;
|
|
@@ -29,6 +30,7 @@ export declare const filterPresetsStoreBody: (namespace?: string) => {
|
|
|
29
30
|
sort?: (import("@webitel/ui-sdk/src/components/wt-table/types/WtTable").WtTableSortOrder | boolean) | undefined;
|
|
30
31
|
show?: boolean | undefined;
|
|
31
32
|
shouldBeInitialized?: boolean | undefined;
|
|
33
|
+
access?: (() => boolean | import("vue").Ref<boolean>) | undefined;
|
|
32
34
|
}[]>;
|
|
33
35
|
shownHeaders: import("vue").ComputedRef<{
|
|
34
36
|
value: string;
|
|
@@ -39,6 +41,7 @@ export declare const filterPresetsStoreBody: (namespace?: string) => {
|
|
|
39
41
|
sort?: (import("@webitel/ui-sdk/src/components/wt-table/types/WtTable").WtTableSortOrder | boolean) | undefined;
|
|
40
42
|
show?: boolean | undefined;
|
|
41
43
|
shouldBeInitialized?: boolean | undefined;
|
|
44
|
+
access?: (() => boolean | import("vue").Ref<boolean>) | undefined;
|
|
42
45
|
}[]>;
|
|
43
46
|
fields: import("vue").ComputedRef<string[]>;
|
|
44
47
|
sort: import("vue").ComputedRef<string | null>;
|
|
@@ -15,6 +15,7 @@ export declare const tableHeadersStoreBody: ({ rawHeaders, id, }: TableHeadersSt
|
|
|
15
15
|
sort?: (WtTableSortOrder | boolean) | undefined;
|
|
16
16
|
show?: boolean | undefined;
|
|
17
17
|
shouldBeInitialized?: boolean | undefined;
|
|
18
|
+
access?: (() => boolean | import("vue").Ref<boolean>) | undefined;
|
|
18
19
|
}[], DatalistTableHeader[] | {
|
|
19
20
|
value: string;
|
|
20
21
|
locale?: string | (string | number | Record<string, unknown>)[] | undefined;
|
|
@@ -24,6 +25,7 @@ export declare const tableHeadersStoreBody: ({ rawHeaders, id, }: TableHeadersSt
|
|
|
24
25
|
sort?: (WtTableSortOrder | boolean) | undefined;
|
|
25
26
|
show?: boolean | undefined;
|
|
26
27
|
shouldBeInitialized?: boolean | undefined;
|
|
28
|
+
access?: (() => boolean | import("vue").Ref<boolean>) | undefined;
|
|
27
29
|
}[]>;
|
|
28
30
|
shownHeaders: import("vue").ComputedRef<{
|
|
29
31
|
value: string;
|
|
@@ -34,6 +36,7 @@ export declare const tableHeadersStoreBody: ({ rawHeaders, id, }: TableHeadersSt
|
|
|
34
36
|
sort?: (WtTableSortOrder | boolean) | undefined;
|
|
35
37
|
show?: boolean | undefined;
|
|
36
38
|
shouldBeInitialized?: boolean | undefined;
|
|
39
|
+
access?: (() => boolean | import("vue").Ref<boolean>) | undefined;
|
|
37
40
|
}[]>;
|
|
38
41
|
fields: import("vue").ComputedRef<string[]>;
|
|
39
42
|
sort: import("vue").ComputedRef<string | null>;
|
|
@@ -64,6 +67,7 @@ export declare const createTableHeadersStore: <Entity extends Identifiable>(name
|
|
|
64
67
|
sort?: (WtTableSortOrder | boolean) | undefined;
|
|
65
68
|
show?: boolean | undefined;
|
|
66
69
|
shouldBeInitialized?: boolean | undefined;
|
|
70
|
+
access?: (() => boolean | import("vue").Ref<boolean>) | undefined;
|
|
67
71
|
}[], DatalistTableHeader[] | {
|
|
68
72
|
value: string;
|
|
69
73
|
locale?: string | (string | number | Record<string, unknown>)[] | undefined;
|
|
@@ -73,6 +77,7 @@ export declare const createTableHeadersStore: <Entity extends Identifiable>(name
|
|
|
73
77
|
sort?: (WtTableSortOrder | boolean) | undefined;
|
|
74
78
|
show?: boolean | undefined;
|
|
75
79
|
shouldBeInitialized?: boolean | undefined;
|
|
80
|
+
access?: (() => boolean | import("vue").Ref<boolean>) | undefined;
|
|
76
81
|
}[]>;
|
|
77
82
|
shownHeaders: import("vue").ComputedRef<{
|
|
78
83
|
value: string;
|
|
@@ -83,6 +88,7 @@ export declare const createTableHeadersStore: <Entity extends Identifiable>(name
|
|
|
83
88
|
sort?: (WtTableSortOrder | boolean) | undefined;
|
|
84
89
|
show?: boolean | undefined;
|
|
85
90
|
shouldBeInitialized?: boolean | undefined;
|
|
91
|
+
access?: (() => boolean | import("vue").Ref<boolean>) | undefined;
|
|
86
92
|
}[]>;
|
|
87
93
|
fields: import("vue").ComputedRef<string[]>;
|
|
88
94
|
sort: import("vue").ComputedRef<string | null>;
|
|
@@ -29,6 +29,7 @@ export declare const permissionsStoreBody: (namespace: string, config: useTableS
|
|
|
29
29
|
sort?: (import("@webitel/ui-sdk/src/components/wt-table/types/WtTable").WtTableSortOrder | boolean) | undefined;
|
|
30
30
|
show?: boolean | undefined;
|
|
31
31
|
shouldBeInitialized?: boolean | undefined;
|
|
32
|
+
access?: (() => boolean | import("vue").Ref<boolean>) | undefined;
|
|
32
33
|
}[], import("../../..").DatalistTableHeader[] | {
|
|
33
34
|
value: string;
|
|
34
35
|
locale?: string | (string | number | Record<string, unknown>)[] | undefined;
|
|
@@ -38,6 +39,7 @@ export declare const permissionsStoreBody: (namespace: string, config: useTableS
|
|
|
38
39
|
sort?: (import("@webitel/ui-sdk/src/components/wt-table/types/WtTable").WtTableSortOrder | boolean) | undefined;
|
|
39
40
|
show?: boolean | undefined;
|
|
40
41
|
shouldBeInitialized?: boolean | undefined;
|
|
42
|
+
access?: (() => boolean | import("vue").Ref<boolean>) | undefined;
|
|
41
43
|
}[]>;
|
|
42
44
|
shownHeaders: import("vue").ComputedRef<{
|
|
43
45
|
value: string;
|
|
@@ -48,6 +50,7 @@ export declare const permissionsStoreBody: (namespace: string, config: useTableS
|
|
|
48
50
|
sort?: (import("@webitel/ui-sdk/src/components/wt-table/types/WtTable").WtTableSortOrder | boolean) | undefined;
|
|
49
51
|
show?: boolean | undefined;
|
|
50
52
|
shouldBeInitialized?: boolean | undefined;
|
|
53
|
+
access?: (() => boolean | import("vue").Ref<boolean>) | undefined;
|
|
51
54
|
}[]>;
|
|
52
55
|
fields: import("vue").ComputedRef<string[]>;
|
|
53
56
|
sort: import("vue").ComputedRef<string | null>;
|
|
@@ -192,6 +195,7 @@ export declare const createPermissionsStore: (namespace: string, config: Omit<us
|
|
|
192
195
|
sort?: (import("@webitel/ui-sdk/src/components/wt-table/types/WtTable").WtTableSortOrder | boolean) | undefined;
|
|
193
196
|
show?: boolean | undefined;
|
|
194
197
|
shouldBeInitialized?: boolean | undefined;
|
|
198
|
+
access?: (() => boolean | import("vue").Ref<boolean>) | undefined;
|
|
195
199
|
}[], import("../../..").DatalistTableHeader[] | {
|
|
196
200
|
value: string;
|
|
197
201
|
locale?: string | (string | number | Record<string, unknown>)[] | undefined;
|
|
@@ -201,6 +205,7 @@ export declare const createPermissionsStore: (namespace: string, config: Omit<us
|
|
|
201
205
|
sort?: (import("@webitel/ui-sdk/src/components/wt-table/types/WtTable").WtTableSortOrder | boolean) | undefined;
|
|
202
206
|
show?: boolean | undefined;
|
|
203
207
|
shouldBeInitialized?: boolean | undefined;
|
|
208
|
+
access?: (() => boolean | import("vue").Ref<boolean>) | undefined;
|
|
204
209
|
}[]>;
|
|
205
210
|
shownHeaders: import("vue").ComputedRef<{
|
|
206
211
|
value: string;
|
|
@@ -211,6 +216,7 @@ export declare const createPermissionsStore: (namespace: string, config: Omit<us
|
|
|
211
216
|
sort?: (import("@webitel/ui-sdk/src/components/wt-table/types/WtTable").WtTableSortOrder | boolean) | undefined;
|
|
212
217
|
show?: boolean | undefined;
|
|
213
218
|
shouldBeInitialized?: boolean | undefined;
|
|
219
|
+
access?: (() => boolean | import("vue").Ref<boolean>) | undefined;
|
|
214
220
|
}[]>;
|
|
215
221
|
fields: import("vue").ComputedRef<string[]>;
|
|
216
222
|
sort: import("vue").ComputedRef<string | null>;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { Ref, WatchOptions } from 'vue';
|
|
2
2
|
export declare enum PersistedStorageType {
|
|
3
3
|
LocalStorage = "localStorage",
|
|
4
|
-
Route = "route"
|
|
4
|
+
Route = "route",
|
|
5
|
+
SessionStorage = "sessionStorage"
|
|
5
6
|
}
|
|
6
7
|
export type PersistStorableValue = string;
|
|
7
8
|
export type PersistableValue = PersistStorableValue | {
|
|
@@ -19,6 +19,7 @@ export declare const tableStoreBody: <Entity extends Identifiable>(namespace: st
|
|
|
19
19
|
sort?: (import("@webitel/ui-sdk/src/components/wt-table/types/WtTable").WtTableSortOrder | boolean) | undefined;
|
|
20
20
|
show?: boolean | undefined;
|
|
21
21
|
shouldBeInitialized?: boolean | undefined;
|
|
22
|
+
access?: (() => boolean | Ref<boolean>) | undefined;
|
|
22
23
|
}[], import("../..").DatalistTableHeader[] | {
|
|
23
24
|
value: string;
|
|
24
25
|
locale?: string | (string | number | Record<string, unknown>)[] | undefined;
|
|
@@ -28,6 +29,7 @@ export declare const tableStoreBody: <Entity extends Identifiable>(namespace: st
|
|
|
28
29
|
sort?: (import("@webitel/ui-sdk/src/components/wt-table/types/WtTable").WtTableSortOrder | boolean) | undefined;
|
|
29
30
|
show?: boolean | undefined;
|
|
30
31
|
shouldBeInitialized?: boolean | undefined;
|
|
32
|
+
access?: (() => boolean | Ref<boolean>) | undefined;
|
|
31
33
|
}[]>;
|
|
32
34
|
shownHeaders: import("vue").ComputedRef<{
|
|
33
35
|
value: string;
|
|
@@ -38,6 +40,7 @@ export declare const tableStoreBody: <Entity extends Identifiable>(namespace: st
|
|
|
38
40
|
sort?: (import("@webitel/ui-sdk/src/components/wt-table/types/WtTable").WtTableSortOrder | boolean) | undefined;
|
|
39
41
|
show?: boolean | undefined;
|
|
40
42
|
shouldBeInitialized?: boolean | undefined;
|
|
43
|
+
access?: (() => boolean | Ref<boolean>) | undefined;
|
|
41
44
|
}[]>;
|
|
42
45
|
fields: import("vue").ComputedRef<string[]>;
|
|
43
46
|
sort: import("vue").ComputedRef<string | null>;
|
|
@@ -173,6 +176,7 @@ export declare const createTableStore: <Entity extends Identifiable>(namespace:
|
|
|
173
176
|
sort?: (import("@webitel/ui-sdk/src/components/wt-table/types/WtTable").WtTableSortOrder | boolean) | undefined;
|
|
174
177
|
show?: boolean | undefined;
|
|
175
178
|
shouldBeInitialized?: boolean | undefined;
|
|
179
|
+
access?: (() => boolean | Ref<boolean>) | undefined;
|
|
176
180
|
}[], import("../..").DatalistTableHeader[] | {
|
|
177
181
|
value: string;
|
|
178
182
|
locale?: string | (string | number | Record<string, unknown>)[] | undefined;
|
|
@@ -182,6 +186,7 @@ export declare const createTableStore: <Entity extends Identifiable>(namespace:
|
|
|
182
186
|
sort?: (import("@webitel/ui-sdk/src/components/wt-table/types/WtTable").WtTableSortOrder | boolean) | undefined;
|
|
183
187
|
show?: boolean | undefined;
|
|
184
188
|
shouldBeInitialized?: boolean | undefined;
|
|
189
|
+
access?: (() => boolean | Ref<boolean>) | undefined;
|
|
185
190
|
}[]>;
|
|
186
191
|
shownHeaders: import("vue").ComputedRef<{
|
|
187
192
|
value: string;
|
|
@@ -192,6 +197,7 @@ export declare const createTableStore: <Entity extends Identifiable>(namespace:
|
|
|
192
197
|
sort?: (import("@webitel/ui-sdk/src/components/wt-table/types/WtTable").WtTableSortOrder | boolean) | undefined;
|
|
193
198
|
show?: boolean | undefined;
|
|
194
199
|
shouldBeInitialized?: boolean | undefined;
|
|
200
|
+
access?: (() => boolean | Ref<boolean>) | undefined;
|
|
195
201
|
}[]>;
|
|
196
202
|
fields: import("vue").ComputedRef<string[]>;
|
|
197
203
|
sort: import("vue").ComputedRef<string | null>;
|
|
@@ -11,6 +11,13 @@ import type { DatalistStoreProviderType } from './StoreProvider';
|
|
|
11
11
|
export type DatalistTableHeader = WtTableHeader & {
|
|
12
12
|
field: string;
|
|
13
13
|
shouldBeInitialized?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Access gate supplied by the consuming app, evaluated once when the headers
|
|
16
|
+
* store is created. Returning `false` drops the column completely: absent
|
|
17
|
+
* from the column picker, never rendered, never requested, and not
|
|
18
|
+
* restorable from persisted state. Omitted means allowed.
|
|
19
|
+
*/
|
|
20
|
+
access?: () => boolean | Ref<boolean>;
|
|
14
21
|
};
|
|
15
22
|
export type TrackSelectedRowBy<T> = (row: T) => T;
|
|
16
23
|
/**
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { beforeEach, describe, expect, it } from 'vitest';
|
|
2
|
-
|
|
3
|
-
import { useLocalStoragePersistedStorage } from '../useLocalStoragePersistedStorage';
|
|
4
|
-
|
|
5
|
-
describe('useLocalStoragePersistedStorage', () => {
|
|
6
|
-
beforeEach(() => {
|
|
7
|
-
localStorage.clear();
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
it('namespaces keys with the storagePath', async () => {
|
|
11
|
-
const storage = useLocalStoragePersistedStorage({
|
|
12
|
-
storagePath: 'cases/headers',
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
await storage.setItem('fields', 'name,subject');
|
|
16
|
-
|
|
17
|
-
expect(localStorage.getItem('cases/headers/fields')).toBe('name,subject');
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it('keeps stores with different paths apart', async () => {
|
|
21
|
-
const cases = useLocalStoragePersistedStorage({
|
|
22
|
-
storagePath: 'cases',
|
|
23
|
-
});
|
|
24
|
-
const contacts = useLocalStoragePersistedStorage({
|
|
25
|
-
storagePath: 'contacts',
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
await cases.setItem('fields', 'subject');
|
|
29
|
-
await contacts.setItem('fields', 'name');
|
|
30
|
-
|
|
31
|
-
expect(await cases.getItem('fields')).toBe('subject');
|
|
32
|
-
expect(await contacts.getItem('fields')).toBe('name');
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it('resolves null for a missing key', async () => {
|
|
36
|
-
const storage = useLocalStoragePersistedStorage({
|
|
37
|
-
storagePath: 'cases',
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
expect(await storage.getItem('fields')).toBeNull();
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it('stores an array as a comma-joined value', async () => {
|
|
44
|
-
const storage = useLocalStoragePersistedStorage({
|
|
45
|
-
storagePath: 'cases',
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
await storage.setItem('fields', [
|
|
49
|
-
'name',
|
|
50
|
-
'subject',
|
|
51
|
-
]);
|
|
52
|
-
|
|
53
|
-
expect(await storage.getItem('fields')).toBe('name,subject');
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
it('removes a key', async () => {
|
|
57
|
-
const storage = useLocalStoragePersistedStorage({
|
|
58
|
-
storagePath: 'cases',
|
|
59
|
-
});
|
|
60
|
-
await storage.setItem('fields', 'name');
|
|
61
|
-
|
|
62
|
-
await storage.removeItem('fields');
|
|
63
|
-
|
|
64
|
-
expect(await storage.getItem('fields')).toBeNull();
|
|
65
|
-
});
|
|
66
|
-
});
|