@webitel/ui-sdk 25.8.74 → 25.10.2

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-sdk",
3
- "version": "25.8.74",
3
+ "version": "25.10.2",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "make-all": "npm version patch --git-tag-version false && npm run build && (npm run build:types || true) && (npm run lint:fix || true) && npm run publish-lib",
@@ -55,7 +55,7 @@
55
55
  "@vuelidate/validators": "^2.0.4",
56
56
  "@vuepic/vue-datepicker": "^4.5.1",
57
57
  "@vueuse/components": "^13.0.0",
58
- "@webitel/api-services": "^0.0.33",
58
+ "@webitel/api-services": "^0.0.42",
59
59
  "@webitel/styleguide": "^24.12.59",
60
60
  "autosize": "^6.0.1",
61
61
  "axios": "^1.8.3",
@@ -1,7 +1,5 @@
1
- import deepCopy from 'deep-copy';
2
1
  import { RolesApiFactory } from 'webitel-sdk';
3
2
 
4
- import ApplicationsAccess from '../../../modules/Userinfo/classes/ApplicationsAccess.js';
5
3
  import {
6
4
  getDefaultGetListResponse,
7
5
  getDefaultGetParams,
@@ -25,12 +23,6 @@ const rolesApiFactory = RolesApiFactory(configuration, '', instance);
25
23
 
26
24
  const fieldsToSend = ['name', 'description', 'permissions', 'metadata'];
27
25
 
28
- const preRequestHandler = (item) => {
29
- const copy = deepCopy(item);
30
- copy.metadata.access = ApplicationsAccess.minify(copy.metadata.access);
31
- return copy;
32
- };
33
-
34
26
  const getRoleList = async (params) => {
35
27
  const fieldsToSend = ['page', 'size', 'q', 'sort', 'fields', 'id'];
36
28
 
@@ -79,20 +71,11 @@ const getRole = async ({ itemId: id }) => {
79
71
  metadata: {},
80
72
  };
81
73
 
82
- const itemResponseHandler = (response) => {
83
- const copy = deepCopy(response);
84
- copy.metadata.access = new ApplicationsAccess({
85
- access: copy.metadata.access,
86
- }).getAccess();
87
- return copy;
88
- };
89
-
90
74
  try {
91
75
  const response = await rolesApiFactory.readRole(id, fieldsToSend);
92
76
  return applyTransform(response.data, [
93
77
  // snakeToCamel(), // prevent role "access" custom lookups from being converted to camelCase
94
78
  merge(defaultObject),
95
- itemResponseHandler,
96
79
  ]);
97
80
  } catch (err) {
98
81
  throw applyTransform(err, [notify]);
@@ -101,7 +84,6 @@ const getRole = async ({ itemId: id }) => {
101
84
 
102
85
  const addRole = async ({ itemInstance }) => {
103
86
  const item = applyTransform(itemInstance, [
104
- preRequestHandler,
105
87
  sanitize(fieldsToSend),
106
88
  camelToSnake(),
107
89
  ]);
@@ -117,7 +99,6 @@ const addRole = async ({ itemInstance }) => {
117
99
 
118
100
  const updateRole = async ({ itemInstance, itemId: id }) => {
119
101
  const item = applyTransform(itemInstance, [
120
- preRequestHandler,
121
102
  sanitize(fieldsToSend),
122
103
  camelToSnake(),
123
104
  ]);
@@ -6,28 +6,28 @@
6
6
  {{ displayText(firstItemName) }}
7
7
  </slot>
8
8
 
9
- <wt-popover>
10
- <template #activator="{ toggle }">
11
- <slot name="activator" :toggle="toggle">
12
- <div v-if="displayList.length" @click="toggle">
13
- <wt-chip>
14
- +{{ displayList.length }}
15
- </wt-chip>
16
- </div>
17
- </slot>
18
- </template>
9
+ <wt-popover>
10
+ <template #activator="{ toggle }">
11
+ <slot name="activator" :toggle="toggle">
12
+ <div v-if="displayList.length" @click="toggle">
13
+ <wt-chip>
14
+ +{{ displayList.length }}
15
+ </wt-chip>
16
+ </div>
17
+ </slot>
18
+ </template>
19
19
 
20
- <template #default>
21
- <slot name="items" :items="displayList">
22
- <div
23
- v-for="({ name, id }) of displayList"
24
- :key="id"
25
- >
26
- {{ name }}
27
- </div>
28
- </slot>
29
- </template>
30
- </wt-popover>
20
+ <template #default>
21
+ <slot name="items" :items="displayList">
22
+ <div
23
+ v-for="({ name, id }) of displayList"
24
+ :key="id"
25
+ >
26
+ {{ name }}
27
+ </div>
28
+ </slot>
29
+ </template>
30
+ </wt-popover>
31
31
  </div>
32
32
  </template>
33
33
 
@@ -3,6 +3,7 @@
3
3
  <wt-popover
4
4
  :visible="visible"
5
5
  :disabled="disabled"
6
+ :pt="pt"
6
7
  unstyled
7
8
  placement="bottom-end"
8
9
  class="wt-context-menu__floating-wrapper"
@@ -71,6 +72,10 @@ const props = defineProps({
71
72
  type: Boolean,
72
73
  default: false,
73
74
  },
75
+ pt: {
76
+ type: Object,
77
+ default: () => null,
78
+ },
74
79
  tooltipTriggers: {
75
80
  type: Array,
76
81
  default: () => ['click', 'touch'],
@@ -27,7 +27,6 @@ import { defineExpose, useAttrs, useTemplateRef } from 'vue';
27
27
 
28
28
  const attrs = useAttrs();
29
29
  const innerPopover = useTemplateRef('innerPopover');
30
-
31
30
  withDefaults(defineProps<PopoverProps>(), {
32
31
  appendTo: 'body',
33
32
  baseZIndex: 0,
@@ -1,3 +1,4 @@
1
+ import { AdjunctTypesAPI as CustomTypesAPI } from '@webitel/api-services/api';
1
2
  import deepCopy from 'deep-copy';
2
3
  import deepmerge from 'deepmerge';
3
4
 
@@ -16,242 +17,182 @@ import WebitelApplications from '../../../enums/WebitelApplications/WebitelAppli
16
17
  const applicationsAccess = (value = true) => ({
17
18
  [WebitelApplications.AGENT]: {
18
19
  _enabled: value,
19
- _locale: `WebitelApplications.${WebitelApplications.AGENT}.name`,
20
20
  },
21
21
  [WebitelApplications.HISTORY]: {
22
22
  _enabled: value,
23
- _locale: `WebitelApplications.${WebitelApplications.HISTORY}.name`,
24
23
  },
25
24
  [WebitelApplications.ANALYTICS]: {
26
25
  _enabled: value,
27
- _locale: `WebitelApplications.${WebitelApplications.ANALYTICS}.name`,
28
26
  },
29
27
  [WebitelApplications.SUPERVISOR]: {
30
28
  _enabled: value,
31
- _locale: `WebitelApplications.${WebitelApplications.SUPERVISOR}.name`,
32
29
  [SupervisorSections.QUEUES]: {
33
30
  _enabled: value,
34
- _locale: `WebitelApplications.${WebitelApplications.SUPERVISOR}.sections.${SupervisorSectionsNew.Queues}`,
35
31
  },
36
32
  [SupervisorSections.AGENTS]: {
37
33
  _enabled: value,
38
- _locale: `WebitelApplications.${WebitelApplications.SUPERVISOR}.sections.${SupervisorSectionsNew.Agents}`,
39
34
  },
40
35
  [SupervisorSections.ACTIVE_CALLS]: {
41
36
  _enabled: value,
42
- _locale: `WebitelApplications.${WebitelApplications.SUPERVISOR}.sections.${SupervisorSectionsNew.ActiveCalls}`,
43
37
  },
44
38
  },
45
39
  [WebitelApplications.ADMIN]: {
46
40
  _enabled: value,
47
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.name`,
48
41
  [AdminSections.LICENSE]: {
49
42
  _enabled: value,
50
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.License}`,
51
43
  },
52
44
  [AdminSections.USERS]: {
53
45
  _enabled: value,
54
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Users}`,
55
46
  },
56
47
  [AdminSections.DEVICES]: {
57
48
  _enabled: value,
58
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Devices}`,
59
49
  },
60
50
  [AdminSections.FLOW]: {
61
51
  _enabled: value,
62
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Flow}`,
63
52
  },
64
53
  [AdminSections.DIALPLAN]: {
65
54
  _enabled: value,
66
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Dialplan}`,
67
55
  },
68
56
  [AdminSections.GATEWAYS]: {
69
57
  _enabled: value,
70
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Gateways}`,
71
58
  },
72
59
  [AdminSections.CHATPLAN]: {
73
60
  _enabled: value,
74
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Chatplan}`,
75
61
  },
76
62
  [AdminSections.CHAT_GATEWAYS]: {
77
63
  _enabled: value,
78
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.ChatGateways}`,
79
64
  },
80
65
  [AdminSections.SKILLS]: {
81
66
  _enabled: value,
82
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Skills}`,
83
67
  },
84
68
  [AdminSections.BUCKETS]: {
85
69
  _enabled: value,
86
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Buckets}`,
87
70
  },
88
71
  [AdminSections.BLACKLIST]: {
89
72
  _enabled: value,
90
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Blacklist}`,
91
73
  },
92
74
  [AdminSections.REGIONS]: {
93
75
  _enabled: value,
94
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Regions}`,
95
76
  },
96
77
  [AdminSections.CALENDARS]: {
97
78
  _enabled: value,
98
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Calendars}`,
99
79
  },
100
80
  [AdminSections.COMMUNICATIONS]: {
101
81
  _enabled: value,
102
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Communications}`,
103
82
  },
104
83
  [AdminSections.PAUSE_CAUSE]: {
105
84
  _enabled: value,
106
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.PauseCause}`,
107
85
  },
108
86
  [AdminSections.MEDIA]: {
109
87
  _enabled: value,
110
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Media}`,
111
88
  },
112
89
  [AdminSections.SHIFT_TEMPLATES]: {
113
90
  _enabled: value,
114
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.ShiftTemplates}`,
115
91
  },
116
92
  [AdminSections.PAUSE_TEMPLATES]: {
117
93
  _enabled: value,
118
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.PauseTemplates}`,
119
94
  },
120
95
  [AdminSections.WORKING_CONDITIONS]: {
121
96
  _enabled: value,
122
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.WorkingConditions}`,
123
97
  },
124
98
  [AdminSections.QUICK_REPLIES]: {
125
99
  _enabled: value,
126
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.QuickReplies}`,
127
100
  },
128
101
  [AdminSections.AGENTS]: {
129
102
  _enabled: value,
130
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Agents}`,
131
103
  },
132
104
  [AdminSections.TEAMS]: {
133
105
  _enabled: value,
134
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Teams}`,
135
106
  },
136
107
  [AdminSections.RESOURCES]: {
137
108
  _enabled: value,
138
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Resources}`,
139
109
  },
140
110
  [AdminSections.RESOURCE_GROUPS]: {
141
111
  _enabled: value,
142
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.ResourceGroups}`,
143
112
  },
144
113
  [AdminSections.QUEUES]: {
145
114
  _enabled: value,
146
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Queues}`,
147
115
  },
148
116
  [AdminSections.STORAGE]: {
149
117
  _enabled: value,
150
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Storage}`,
151
118
  },
152
119
  [AdminSections.STORAGE_POLICIES]: {
153
120
  _enabled: value,
154
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.StoragePolicies}`,
155
121
  },
156
122
  [AdminSections.COGNITIVE_PROFILES]: {
157
123
  _enabled: value,
158
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.CognitiveProfiles}`,
159
124
  },
160
125
  [AdminSections.EMAIL_PROFILES]: {
161
126
  _enabled: value,
162
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.EmailProfiles}`,
163
127
  },
164
128
  [AdminSections.SINGLE_SIGN_ON]: {
165
129
  _enabled: value,
166
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.SingleSignOn}`,
167
130
  },
168
131
  [AdminSections.IMPORT_CSV]: {
169
132
  _enabled: value,
170
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.ImportCsv}`,
171
133
  },
172
134
  [AdminSections.TRIGGERS]: {
173
135
  _enabled: value,
174
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Triggers}`,
175
136
  },
176
137
  [AdminSections.ROLES]: {
177
138
  _enabled: value,
178
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Roles}`,
179
139
  },
180
140
  [AdminSections.OBJECTS]: {
181
141
  _enabled: value,
182
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Objects}`,
183
142
  },
184
143
  [AdminSections.CHANGELOGS]: {
185
144
  _enabled: value,
186
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Changelogs}`,
187
145
  },
188
146
  [AdminSections.CONFIGURATION]: {
189
147
  _enabled: value,
190
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Configuration}`,
191
148
  },
192
149
  [AdminSections.GLOBAL_VARIABLES]: {
193
150
  _enabled: value,
194
- _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.GlobalVariables}`,
195
151
  },
196
152
  },
197
153
  [WebitelApplications.AUDIT]: {
198
154
  _enabled: value,
199
- _locale: `WebitelApplications.${WebitelApplications.AUDIT}.name`,
200
155
  [AuditorSections.SCORECARDS]: {
201
156
  _enabled: value,
202
- _locale: `WebitelApplications.${WebitelApplications.AUDIT}.sections.${AuditorSectionsNew.Scorecards}`,
203
157
  },
204
158
  },
205
159
  [WebitelApplications.CRM]: {
206
160
  _enabled: value,
207
- _locale: `WebitelApplications.${WebitelApplications.CRM}.name`,
208
161
  [CrmSections.CONTACTS]: {
209
162
  _enabled: value,
210
- _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.Contacts}`,
211
163
  },
212
164
  [CrmSections.CASES]: {
213
165
  _enabled: value,
214
- _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.Cases}`,
215
166
  },
216
167
  [CrmSections.SLAS]: {
217
168
  _enabled: value,
218
- _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.Slas}`,
219
169
  },
220
170
  [CrmSections.SOURCES]: {
221
171
  _enabled: value,
222
- _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.Sources}`,
223
172
  },
224
173
  [CrmSections.SERVICE_CATALOGS]: {
225
174
  _enabled: value,
226
- _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.ServiceCatalogs}`,
227
175
  },
228
176
  [CrmSections.CLOSE_REASON_GROUPS]: {
229
177
  _enabled: value,
230
- _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.CloseReasonGroups}`,
231
178
  },
232
179
  [CrmSections.CONTACT_GROUPS]: {
233
180
  _enabled: value,
234
- _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.ContactGroups}`,
235
181
  },
236
182
  [CrmSections.PRIORITIES]: {
237
183
  _enabled: value,
238
- _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.Priorities}`,
239
184
  },
240
185
  [CrmSections.STATUSES]: {
241
186
  _enabled: value,
242
- _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.Statuses}`,
243
187
  },
244
188
  [CrmSectionsNew.CasesExtensions]: {
245
189
  _enabled: value,
246
- _locale: `WebitelApplications.overrideApplicationsAccess.${WebitelApplications.CRM}.sections.${CrmSectionsNew.CasesExtensions}`,
247
190
  },
248
191
  [CrmSectionsNew.ContactsExtensions]: {
249
192
  _enabled: value,
250
- _locale: `WebitelApplications.overrideApplicationsAccess.${WebitelApplications.CRM}.sections.${CrmSectionsNew.ContactsExtensions}`,
251
193
  },
252
194
  [CrmSectionsNew.CustomLookups]: {
253
195
  _enabled: value,
254
- _locale: `WebitelApplications.overrideApplicationsAccess.${WebitelApplications.CRM}.sections.${CrmSectionsNew.CustomLookups}`,
255
196
  },
256
197
  },
257
198
  });
@@ -285,9 +226,37 @@ export default class ApplicationsAccess {
285
226
  }
286
227
 
287
228
  // restore minified schema from API response
288
- static restore(access) {
289
- return deepmerge(applicationsAccess(false), access);
290
- // return deepmerge(access, applicationsAccess(false));
229
+ static async restore(access) {
230
+ const coreSectionsAccess = deepmerge(applicationsAccess(false), access);
231
+ const fullAccess = await ApplicationsAccess.appendCustomTypesToUiSectionsVisibilityAccess(coreSectionsAccess);
232
+ return fullAccess;
233
+ }
234
+
235
+ static async appendCustomTypesToUiSectionsVisibilityAccess(access) {
236
+ const targetApp = WebitelApplications.CRM;
237
+ const { items: customTypes } = await CustomTypesAPI.getList({ size: -1 }, { silent: true });
238
+
239
+ const customTypesAccess = customTypes
240
+ .filter((customType) => !access[targetApp]?.[customType.repo]) // already explicitly declared in access
241
+ .reduce((acc, customType) => {
242
+ const enabledValue = access[targetApp]?.[customType.repo]?._enabled;
243
+ const implicitlyEnabled = enabledValue === undefined;
244
+
245
+ acc[customType.repo] = {
246
+ name: customType.repo,
247
+ displayName: customType.name,
248
+ enabled: enabledValue || implicitlyEnabled,
249
+ };
250
+
251
+ return acc;
252
+ }, {});
253
+
254
+ access[targetApp] = {
255
+ ...access[targetApp],
256
+ ...customTypesAccess,
257
+ };
258
+
259
+ return access;
291
260
  }
292
261
 
293
262
  getAccess() {
@@ -118,9 +118,10 @@ export default class UserinfoStoreModule extends BaseStoreModule {
118
118
 
119
119
  await context.dispatch('SET_SESSION', session);
120
120
  const access = await userinfo.getUiVisibilityAccess();
121
+ const fullAccess = await ApplicationsAccess.restore(access);
121
122
  await context.dispatch(
122
123
  'SET_APPLICATIONS_ACCESS',
123
- new ApplicationsAccess({ access }).getAccess(),
124
+ fullAccess,
124
125
  );
125
126
  await context.dispatch('AFTER_OPEN_SESSION_HOOK');
126
127
  },
@@ -1,4 +1,5 @@
1
1
  import { defineStore } from 'pinia';
2
+ import { ref } from 'vue';
2
3
  import { NavigationGuard } from 'vue-router';
3
4
 
4
5
  import {
@@ -29,23 +30,23 @@ export const createUserAccessStore = ({
29
30
  namespace = 'userinfo',
30
31
  }: CreateUserAccessStoreConfig = {}) => {
31
32
  return defineStore(`${namespace}/access`, (): UserAccessStore => {
32
- let globalAccess: GlobalActionAccessMap = new Map();
33
+ const globalAccess = ref<GlobalActionAccessMap>(new Map());
33
34
 
34
- let scopeAccess: ScopeAccessMap = new Map();
35
+ const scopeAccess = ref<ScopeAccessMap>(new Map());
35
36
 
36
- let appVisibilityAccess: AppVisibilityMap = new Map();
37
+ const appVisibilityAccess = ref<AppVisibilityMap>(new Map());
37
38
 
38
- let sectionVisibilityAccess: SectionVisibilityMap = new Map();
39
+ const sectionVisibilityAccess = ref<SectionVisibilityMap>(new Map());
39
40
 
40
41
  const hasAccess = (
41
42
  action: CrudAction | SpecialGlobalAction,
42
43
  object?: WtObject,
43
44
  ) => {
44
- const allowGlobalAccess = globalAccess.get(action);
45
+ const allowGlobalAccess = globalAccess.value.get(action);
45
46
  if (allowGlobalAccess) return true;
46
47
 
47
48
  const allowScopeAccess =
48
- object && scopeAccess.get(object)?.get(action as CrudAction);
49
+ object && scopeAccess.value.get(object)?.get(action as CrudAction);
49
50
  if (allowScopeAccess) return true;
50
51
 
51
52
  return false;
@@ -68,14 +69,14 @@ export const createUserAccessStore = ({
68
69
  };
69
70
 
70
71
  const hasApplicationVisibility = (app: WtApplication) => {
71
- return appVisibilityAccess.get(app);
72
+ return appVisibilityAccess.value.get(app);
72
73
  };
73
74
 
74
75
  const hasSectionVisibility = (section: UiSection, object: WtObject) => {
75
76
  const appOfSection = getWtAppByUiSection(section);
76
77
  const objectOfSection = object; /*castUiSectionToWtObject(section)*/
77
78
  const hasSectionVisibilityAccess = (section: UiSection) => {
78
- return sectionVisibilityAccess.get(section);
79
+ return sectionVisibilityAccess.value.get(section);
79
80
  };
80
81
 
81
82
  const allowAppVisibility = hasApplicationVisibility(appOfSection);
@@ -95,14 +96,14 @@ export const createUserAccessStore = ({
95
96
  .toReversed()
96
97
  .find(({ meta }) => meta.UiSection)?.meta?.WtObject as WtObject | ((RouteLocationNormalized) => WtObject);
97
98
 
98
- // if, then compute fn
99
- if (typeof uiSection === 'function') {
100
- uiSection = uiSection(to);
101
- }
102
- // if, then compute fn
103
- if (typeof wtObject === 'function') {
104
- wtObject = wtObject(to);
105
- }
99
+ // if, then compute fn
100
+ if (typeof uiSection === 'function') {
101
+ uiSection = uiSection(to);
102
+ }
103
+ // if, then compute fn
104
+ if (typeof wtObject === 'function') {
105
+ wtObject = wtObject(to);
106
+ }
106
107
 
107
108
  if (uiSection && !hasSectionVisibility(uiSection, wtObject)) {
108
109
  // return false;
@@ -114,7 +115,7 @@ export const createUserAccessStore = ({
114
115
 
115
116
 
116
117
  const hasSpecialGlobalActionAccess = (id: SpecialGlobalAction): boolean => {
117
- return !!globalAccess.get(id);
118
+ return !!globalAccess.value.get(id);
118
119
  };
119
120
 
120
121
  const initialize = ({
@@ -122,10 +123,10 @@ export const createUserAccessStore = ({
122
123
  scope: rawScopeAccess,
123
124
  access: rawVisibilityAccess,
124
125
  }: CreateUserAccessStoreRawAccess) => {
125
- globalAccess = makeGlobalAccessMap(rawGlobalAccess);
126
- scopeAccess = makeScopeAccessMap(rawScopeAccess);
127
- appVisibilityAccess = makeAppVisibilityMap(rawVisibilityAccess);
128
- sectionVisibilityAccess = makeSectionVisibilityMap(rawVisibilityAccess);
126
+ globalAccess.value = makeGlobalAccessMap(rawGlobalAccess);
127
+ scopeAccess.value = makeScopeAccessMap(rawScopeAccess);
128
+ appVisibilityAccess.value = makeAppVisibilityMap(rawVisibilityAccess);
129
+ sectionVisibilityAccess.value = makeSectionVisibilityMap(rawVisibilityAccess);
129
130
  };
130
131
 
131
132
  return {
@@ -139,6 +140,15 @@ export const createUserAccessStore = ({
139
140
 
140
141
  routeAccessGuard,
141
142
  hasSpecialGlobalActionAccess,
143
+
144
+ /**
145
+ * @internal
146
+ * for pinia devtools debug
147
+ */
148
+ globalAccess,
149
+ scopeAccess,
150
+ appVisibilityAccess,
151
+ sectionVisibilityAccess,
142
152
  };
143
153
  });
144
154
  };
@@ -117,4 +117,28 @@ export interface UserAccessStore {
117
117
 
118
118
  // hasApplicationVisibility: (app: WtApplication) => boolean;
119
119
  hasSectionVisibility: (section: UiSection, object: WtObject) => boolean;
120
+
121
+ /**
122
+ * @internal
123
+ * for pinia devtools debug
124
+ */
125
+ globalAccess: GlobalActionAccessMap;
126
+
127
+ /**
128
+ * @internal
129
+ * for pinia devtools debug
130
+ */
131
+ scopeAccess: ScopeAccessMap;
132
+
133
+ /**
134
+ * @internal
135
+ * for pinia devtools debug
136
+ */
137
+ appVisibilityAccess: AppVisibilityMap;
138
+
139
+ /**
140
+ * @internal
141
+ * for pinia devtools debug
142
+ */
143
+ sectionVisibilityAccess: SectionVisibilityMap;
120
144
  }
@@ -1,3 +1,4 @@
1
1
  @use 'theme/components/tooltip/tooltip.scss' as *;
2
2
  @use 'theme/components/chip/chip.scss' as *;
3
3
  @use 'theme/components/breadcrumb/breadcrumb.scss' as *;
4
+ @use 'theme/components/popover/popover.scss' as *;
@@ -0,0 +1,5 @@
1
+ @use '@webitel/styleguide/typography' as *;
2
+
3
+ .p-popover-content {
4
+ @extend %typo-body-2;
5
+ }
@@ -12,6 +12,7 @@ declare const __VLS_component: import("vue").DefineComponent<{}, {
12
12
  width: string;
13
13
  minWidth: string;
14
14
  maxWidth: string;
15
+ pt?: Record<string, any>;
15
16
  $props: {
16
17
  readonly options?: unknown[];
17
18
  readonly disabled?: boolean;
@@ -20,6 +21,7 @@ declare const __VLS_component: import("vue").DefineComponent<{}, {
20
21
  readonly width?: string;
21
22
  readonly minWidth?: string;
22
23
  readonly maxWidth?: string;
24
+ readonly pt?: Record<string, any>;
23
25
  };
24
26
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
25
27
  type __VLS_Slots = {