@webitel/ui-sdk 25.10.2 → 25.10.4

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.10.2",
3
+ "version": "25.10.4",
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",
@@ -1,5 +1,7 @@
1
+ import deepCopy from 'deep-copy';
1
2
  import { RolesApiFactory } from 'webitel-sdk';
2
3
 
4
+ import ApplicationsAccess from '../../../modules/Userinfo/classes/ApplicationsAccess.js';
3
5
  import {
4
6
  getDefaultGetListResponse,
5
7
  getDefaultGetParams,
@@ -23,6 +25,12 @@ const rolesApiFactory = RolesApiFactory(configuration, '', instance);
23
25
 
24
26
  const fieldsToSend = ['name', 'description', 'permissions', 'metadata'];
25
27
 
28
+ const preRequestHandler = (item) => {
29
+ const copy = deepCopy(item);
30
+ copy.metadata.access = ApplicationsAccess.minify(copy.metadata.access);
31
+ return copy;
32
+ };
33
+
26
34
  const getRoleList = async (params) => {
27
35
  const fieldsToSend = ['page', 'size', 'q', 'sort', 'fields', 'id'];
28
36
 
@@ -71,11 +79,20 @@ const getRole = async ({ itemId: id }) => {
71
79
  metadata: {},
72
80
  };
73
81
 
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
+
74
90
  try {
75
91
  const response = await rolesApiFactory.readRole(id, fieldsToSend);
76
92
  return applyTransform(response.data, [
77
93
  // snakeToCamel(), // prevent role "access" custom lookups from being converted to camelCase
78
94
  merge(defaultObject),
95
+ itemResponseHandler,
79
96
  ]);
80
97
  } catch (err) {
81
98
  throw applyTransform(err, [notify]);
@@ -84,6 +101,7 @@ const getRole = async ({ itemId: id }) => {
84
101
 
85
102
  const addRole = async ({ itemInstance }) => {
86
103
  const item = applyTransform(itemInstance, [
104
+ preRequestHandler,
87
105
  sanitize(fieldsToSend),
88
106
  camelToSnake(),
89
107
  ]);
@@ -99,6 +117,7 @@ const addRole = async ({ itemInstance }) => {
99
117
 
100
118
  const updateRole = async ({ itemInstance, itemId: id }) => {
101
119
  const item = applyTransform(itemInstance, [
120
+ preRequestHandler,
102
121
  sanitize(fieldsToSend),
103
122
  camelToSnake(),
104
123
  ]);
@@ -58,7 +58,7 @@ const model = defineModel<boolean | string[]>('selected', {required: true});
58
58
 
59
59
  const checkboxId = `checkbox-${Math.random().toString(36).slice(2, 11)}`;
60
60
 
61
- const isSingle = computed(() => typeof model.value === 'boolean');
61
+ const isSingle = computed(() => !Array.isArray(model.value));
62
62
 
63
63
  const isChecked = computed(() => {
64
64
  if (isSingle.value) {
@@ -0,0 +1,10 @@
1
+ export const ProcessingTableColumnType = {
2
+ TEXT: 'text',
3
+ NUMBER: 'number',
4
+ BOOL: 'bool',
5
+ DATETIME: 'datetime',
6
+ LINK: 'link',
7
+ } as const;
8
+
9
+ export type ProcessingTableColumnType =
10
+ (typeof ProcessingTableColumnType)[keyof typeof ProcessingTableColumnType];
@@ -7,6 +7,7 @@ import { ComponentSize } from './ComponentSize/ComponentSize';
7
7
  import { CrudAction } from './CrudAction/CrudAction';
8
8
  import IconAction from './IconAction/IconAction.enum.js';
9
9
  import { IconColor } from './IconColor/IconColor';
10
+ import { ProcessingTableColumnType } from './ProcessingTableColumnType/ProcessingTableColumnType';
10
11
  import QueueType from './QueueType/QueueType.enum.js';
11
12
  import { RelativeDatetimeValue } from './RelativeDatetimeValue/RelativeDatetimeValue';
12
13
  import TypesExportedSettings from './TypesExportedSettings/TypesExportedSettings.enum.js';
@@ -32,6 +33,7 @@ export {
32
33
  CrudAction,
33
34
  IconAction,
34
35
  IconColor,
36
+ ProcessingTableColumnType,
35
37
  QueueType,
36
38
  RelativeDatetimeValue,
37
39
  SupervisorSections,
@@ -17,182 +17,242 @@ import WebitelApplications from '../../../enums/WebitelApplications/WebitelAppli
17
17
  const applicationsAccess = (value = true) => ({
18
18
  [WebitelApplications.AGENT]: {
19
19
  _enabled: value,
20
+ _locale: `WebitelApplications.${WebitelApplications.AGENT}.name`,
20
21
  },
21
22
  [WebitelApplications.HISTORY]: {
22
23
  _enabled: value,
24
+ _locale: `WebitelApplications.${WebitelApplications.HISTORY}.name`,
23
25
  },
24
26
  [WebitelApplications.ANALYTICS]: {
25
27
  _enabled: value,
28
+ _locale: `WebitelApplications.${WebitelApplications.ANALYTICS}.name`,
26
29
  },
27
30
  [WebitelApplications.SUPERVISOR]: {
28
31
  _enabled: value,
32
+ _locale: `WebitelApplications.${WebitelApplications.SUPERVISOR}.name`,
29
33
  [SupervisorSections.QUEUES]: {
30
34
  _enabled: value,
35
+ _locale: `WebitelApplications.${WebitelApplications.SUPERVISOR}.sections.${SupervisorSectionsNew.Queues}`,
31
36
  },
32
37
  [SupervisorSections.AGENTS]: {
33
38
  _enabled: value,
39
+ _locale: `WebitelApplications.${WebitelApplications.SUPERVISOR}.sections.${SupervisorSectionsNew.Agents}`,
34
40
  },
35
41
  [SupervisorSections.ACTIVE_CALLS]: {
36
42
  _enabled: value,
43
+ _locale: `WebitelApplications.${WebitelApplications.SUPERVISOR}.sections.${SupervisorSectionsNew.ActiveCalls}`,
37
44
  },
38
45
  },
39
46
  [WebitelApplications.ADMIN]: {
40
47
  _enabled: value,
48
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.name`,
41
49
  [AdminSections.LICENSE]: {
42
50
  _enabled: value,
51
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.License}`,
43
52
  },
44
53
  [AdminSections.USERS]: {
45
54
  _enabled: value,
55
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Users}`,
46
56
  },
47
57
  [AdminSections.DEVICES]: {
48
58
  _enabled: value,
59
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Devices}`,
49
60
  },
50
61
  [AdminSections.FLOW]: {
51
62
  _enabled: value,
63
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Flow}`,
52
64
  },
53
65
  [AdminSections.DIALPLAN]: {
54
66
  _enabled: value,
67
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Dialplan}`,
55
68
  },
56
69
  [AdminSections.GATEWAYS]: {
57
70
  _enabled: value,
71
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Gateways}`,
58
72
  },
59
73
  [AdminSections.CHATPLAN]: {
60
74
  _enabled: value,
75
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Chatplan}`,
61
76
  },
62
77
  [AdminSections.CHAT_GATEWAYS]: {
63
78
  _enabled: value,
79
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.ChatGateways}`,
64
80
  },
65
81
  [AdminSections.SKILLS]: {
66
82
  _enabled: value,
83
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Skills}`,
67
84
  },
68
85
  [AdminSections.BUCKETS]: {
69
86
  _enabled: value,
87
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Buckets}`,
70
88
  },
71
89
  [AdminSections.BLACKLIST]: {
72
90
  _enabled: value,
91
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Blacklist}`,
73
92
  },
74
93
  [AdminSections.REGIONS]: {
75
94
  _enabled: value,
95
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Regions}`,
76
96
  },
77
97
  [AdminSections.CALENDARS]: {
78
98
  _enabled: value,
99
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Calendars}`,
79
100
  },
80
101
  [AdminSections.COMMUNICATIONS]: {
81
102
  _enabled: value,
103
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Communications}`,
82
104
  },
83
105
  [AdminSections.PAUSE_CAUSE]: {
84
106
  _enabled: value,
107
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.PauseCause}`,
85
108
  },
86
109
  [AdminSections.MEDIA]: {
87
110
  _enabled: value,
111
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Media}`,
88
112
  },
89
113
  [AdminSections.SHIFT_TEMPLATES]: {
90
114
  _enabled: value,
115
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.ShiftTemplates}`,
91
116
  },
92
117
  [AdminSections.PAUSE_TEMPLATES]: {
93
118
  _enabled: value,
119
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.PauseTemplates}`,
94
120
  },
95
121
  [AdminSections.WORKING_CONDITIONS]: {
96
122
  _enabled: value,
123
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.WorkingConditions}`,
97
124
  },
98
125
  [AdminSections.QUICK_REPLIES]: {
99
126
  _enabled: value,
127
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.QuickReplies}`,
100
128
  },
101
129
  [AdminSections.AGENTS]: {
102
130
  _enabled: value,
131
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Agents}`,
103
132
  },
104
133
  [AdminSections.TEAMS]: {
105
134
  _enabled: value,
135
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Teams}`,
106
136
  },
107
137
  [AdminSections.RESOURCES]: {
108
138
  _enabled: value,
139
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Resources}`,
109
140
  },
110
141
  [AdminSections.RESOURCE_GROUPS]: {
111
142
  _enabled: value,
143
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.ResourceGroups}`,
112
144
  },
113
145
  [AdminSections.QUEUES]: {
114
146
  _enabled: value,
147
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Queues}`,
115
148
  },
116
149
  [AdminSections.STORAGE]: {
117
150
  _enabled: value,
151
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Storage}`,
118
152
  },
119
153
  [AdminSections.STORAGE_POLICIES]: {
120
154
  _enabled: value,
155
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.StoragePolicies}`,
121
156
  },
122
157
  [AdminSections.COGNITIVE_PROFILES]: {
123
158
  _enabled: value,
159
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.CognitiveProfiles}`,
124
160
  },
125
161
  [AdminSections.EMAIL_PROFILES]: {
126
162
  _enabled: value,
163
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.EmailProfiles}`,
127
164
  },
128
165
  [AdminSections.SINGLE_SIGN_ON]: {
129
166
  _enabled: value,
167
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.SingleSignOn}`,
130
168
  },
131
169
  [AdminSections.IMPORT_CSV]: {
132
170
  _enabled: value,
171
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.ImportCsv}`,
133
172
  },
134
173
  [AdminSections.TRIGGERS]: {
135
174
  _enabled: value,
175
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Triggers}`,
136
176
  },
137
177
  [AdminSections.ROLES]: {
138
178
  _enabled: value,
179
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Roles}`,
139
180
  },
140
181
  [AdminSections.OBJECTS]: {
141
182
  _enabled: value,
183
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Objects}`,
142
184
  },
143
185
  [AdminSections.CHANGELOGS]: {
144
186
  _enabled: value,
187
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Changelogs}`,
145
188
  },
146
189
  [AdminSections.CONFIGURATION]: {
147
190
  _enabled: value,
191
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.Configuration}`,
148
192
  },
149
193
  [AdminSections.GLOBAL_VARIABLES]: {
150
194
  _enabled: value,
195
+ _locale: `WebitelApplications.${WebitelApplications.ADMIN}.sections.${AdminSectionsNew.GlobalVariables}`,
151
196
  },
152
197
  },
153
198
  [WebitelApplications.AUDIT]: {
154
199
  _enabled: value,
200
+ _locale: `WebitelApplications.${WebitelApplications.AUDIT}.name`,
155
201
  [AuditorSections.SCORECARDS]: {
156
202
  _enabled: value,
203
+ _locale: `WebitelApplications.${WebitelApplications.AUDIT}.sections.${AuditorSectionsNew.Scorecards}`,
157
204
  },
158
205
  },
159
206
  [WebitelApplications.CRM]: {
160
207
  _enabled: value,
208
+ _locale: `WebitelApplications.${WebitelApplications.CRM}.name`,
161
209
  [CrmSections.CONTACTS]: {
162
210
  _enabled: value,
211
+ _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.Contacts}`,
163
212
  },
164
213
  [CrmSections.CASES]: {
165
214
  _enabled: value,
215
+ _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.Cases}`,
166
216
  },
167
217
  [CrmSections.SLAS]: {
168
218
  _enabled: value,
219
+ _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.Slas}`,
169
220
  },
170
221
  [CrmSections.SOURCES]: {
171
222
  _enabled: value,
223
+ _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.Sources}`,
172
224
  },
173
225
  [CrmSections.SERVICE_CATALOGS]: {
174
226
  _enabled: value,
227
+ _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.ServiceCatalogs}`,
175
228
  },
176
229
  [CrmSections.CLOSE_REASON_GROUPS]: {
177
230
  _enabled: value,
231
+ _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.CloseReasonGroups}`,
178
232
  },
179
233
  [CrmSections.CONTACT_GROUPS]: {
180
234
  _enabled: value,
235
+ _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.ContactGroups}`,
181
236
  },
182
237
  [CrmSections.PRIORITIES]: {
183
238
  _enabled: value,
239
+ _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.Priorities}`,
184
240
  },
185
241
  [CrmSections.STATUSES]: {
186
242
  _enabled: value,
243
+ _locale: `WebitelApplications.${WebitelApplications.CRM}.sections.${CrmSectionsNew.Statuses}`,
187
244
  },
188
245
  [CrmSectionsNew.CasesExtensions]: {
189
246
  _enabled: value,
247
+ _locale: `WebitelApplications.overrideApplicationsAccess.${WebitelApplications.CRM}.sections.${CrmSectionsNew.CasesExtensions}`,
190
248
  },
191
249
  [CrmSectionsNew.ContactsExtensions]: {
192
250
  _enabled: value,
251
+ _locale: `WebitelApplications.overrideApplicationsAccess.${WebitelApplications.CRM}.sections.${CrmSectionsNew.ContactsExtensions}`,
193
252
  },
194
253
  [CrmSectionsNew.CustomLookups]: {
195
254
  _enabled: value,
255
+ _locale: `WebitelApplications.overrideApplicationsAccess.${WebitelApplications.CRM}.sections.${CrmSectionsNew.CustomLookups}`,
196
256
  },
197
257
  },
198
258
  });
@@ -226,37 +286,9 @@ export default class ApplicationsAccess {
226
286
  }
227
287
 
228
288
  // restore minified schema from API response
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;
289
+ static restore(access) {
290
+ return deepmerge(applicationsAccess(false), access);
291
+ // return deepmerge(access, applicationsAccess(false));
260
292
  }
261
293
 
262
294
  getAccess() {
@@ -118,10 +118,9 @@ 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);
122
121
  await context.dispatch(
123
122
  'SET_APPLICATIONS_ACCESS',
124
- fullAccess,
123
+ new ApplicationsAccess({ access }).getAccess(),
125
124
  );
126
125
  await context.dispatch('AFTER_OPEN_SESSION_HOOK');
127
126
  },
@@ -0,0 +1,8 @@
1
+ export declare const ProcessingTableColumnType: {
2
+ readonly TEXT: "text";
3
+ readonly NUMBER: "number";
4
+ readonly BOOL: "bool";
5
+ readonly DATETIME: "datetime";
6
+ readonly LINK: "link";
7
+ };
8
+ export type ProcessingTableColumnType = (typeof ProcessingTableColumnType)[keyof typeof ProcessingTableColumnType];
@@ -7,6 +7,7 @@ import { ComponentSize } from './ComponentSize/ComponentSize';
7
7
  import { CrudAction } from './CrudAction/CrudAction';
8
8
  import IconAction from './IconAction/IconAction.enum.js';
9
9
  import { IconColor } from './IconColor/IconColor';
10
+ import { ProcessingTableColumnType } from './ProcessingTableColumnType/ProcessingTableColumnType';
10
11
  import QueueType from './QueueType/QueueType.enum.js';
11
12
  import { RelativeDatetimeValue } from './RelativeDatetimeValue/RelativeDatetimeValue';
12
13
  import TypesExportedSettings from './TypesExportedSettings/TypesExportedSettings.enum.js';
@@ -18,4 +19,4 @@ import WebitelApplications from './WebitelApplications/WebitelApplications.enum.
18
19
  import { WtApplication } from './WebitelApplications/WtApplication';
19
20
  import { WtObject } from './WtObject/WtObject';
20
21
  import { WtTypeExtensionFieldKind } from './WtTypeExtensionFieldKind/WtTypeExtensionFieldKind';
21
- export { AbstractUserStatus, AdminSections, AgentStatus, AuditorSections, ButtonColor, ChatGatewayProvider, ChipColor, ComponentSize, CrmSections, CrudAction, IconAction, IconColor, QueueType, RelativeDatetimeValue, SupervisorSections, TypesExportedSettings, WebitelApplications, WtApplication, WtObject, WtTypeExtensionFieldKind, };
22
+ export { AbstractUserStatus, AdminSections, AgentStatus, AuditorSections, ButtonColor, ChatGatewayProvider, ChipColor, ComponentSize, CrmSections, CrudAction, IconAction, IconColor, ProcessingTableColumnType, QueueType, RelativeDatetimeValue, SupervisorSections, TypesExportedSettings, WebitelApplications, WtApplication, WtObject, WtTypeExtensionFieldKind, };