@webitel/ui-sdk 25.4.37 → 25.4.39
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/CHANGELOG.md +391 -238
- package/dist/ui-sdk.css +1 -1
- package/dist/ui-sdk.js +8737 -8361
- package/dist/ui-sdk.umd.cjs +20 -17
- package/package.json +42 -37
- package/src/api/clients/casePriorities/casePriorities.js +13 -3
- package/src/api/clients/caseSources/caseSources.js +13 -24
- package/src/api/clients/slas/slas.js +16 -26
- package/src/api/clients//321/201ontacts/contacts.js +1 -0
- package/src/api/transformers/skipIf/skipIf.ts +8 -3
- package/src/api/websocket/WebSocketClientController.js +21 -14
- package/src/api/websocket/config.js +5 -4
- package/src/components/on-demand/wt-navigation-menu/components/_internals/nav-menu-lvl-1.vue +2 -2
- package/src/components/on-demand/wt-navigation-menu/components/_internals/nav-menu-lvl-2.vue +4 -4
- package/src/components/on-demand/wt-navigation-menu/components/wt-navigation-menu.vue +5 -5
- package/src/components/on-demand/wt-navigation-menu/css/_nav-menu.scss +5 -5
- package/src/components/on-demand/wt-save-failed-popup/wt-save-failed-popup.vue +1 -1
- package/src/components/on-demand/wt-selection-popup/wt-selection-popup.vue +3 -3
- package/src/components/on-demand/wt-start-page/components/start-page-card.vue +6 -6
- package/src/components/on-demand/wt-start-page/components/start-page-logo.vue +1 -1
- package/src/components/on-demand/wt-start-page/components/wt-start-page.vue +2 -2
- package/src/components/transitions/wt-expand-transition.vue +1 -1
- package/src/components/wt-action-bar/wt-action-bar.vue +1 -1
- package/src/components/wt-app-header/wt-app-header.vue +4 -4
- package/src/components/wt-app-header/wt-app-navigator.vue +14 -14
- package/src/components/wt-app-header/wt-header-actions.vue +19 -14
- package/src/components/wt-avatar/wt-avatar.vue +4 -4
- package/src/components/wt-badge/wt-badge.vue +1 -1
- package/src/components/wt-button/wt-button.vue +18 -18
- package/src/components/wt-button-select/wt-button-select.vue +4 -4
- package/src/components/wt-checkbox/wt-checkbox.vue +4 -4
- package/src/components/wt-chip/wt-chip.scss +9 -9
- package/src/components/wt-confirm-dialog/wt-confirm-dialog.vue +2 -2
- package/src/components/wt-context-menu/wt-context-menu.vue +4 -4
- package/src/components/wt-datepicker/wt-datepicker.vue +4 -4
- package/src/components/wt-divider/wt-divider.vue +11 -11
- package/src/components/wt-dual-panel/wt-dual-panel.vue +11 -11
- package/src/components/wt-dummy/wt-dummy.vue +2 -2
- package/src/components/wt-empty/wt-empty.vue +9 -9
- package/src/components/wt-error-page/wt-error-page.vue +4 -4
- package/src/components/wt-expansion-panel/wt-expansion-panel.vue +4 -4
- package/src/components/wt-headline/wt-headline.vue +4 -4
- package/src/components/wt-headline-nav/wt-headline-nav.vue +4 -4
- package/src/components/wt-icon/wt-icon.vue +2 -2
- package/src/components/wt-icon-action/wt-icon-action.vue +1 -1
- package/src/components/wt-icon-btn/wt-icon-btn.vue +1 -1
- package/src/components/wt-image/wt-image.vue +1 -1
- package/src/components/wt-indicator/wt-indicator.vue +2 -2
- package/src/components/wt-input/wt-input.vue +10 -10
- package/src/components/wt-input-info/wt-input-info.vue +1 -1
- package/src/components/wt-item-link/wt-item-link.vue +1 -1
- package/src/components/wt-label/wt-label.vue +1 -1
- package/src/components/wt-load-bar/wt-load-bar.vue +5 -5
- package/src/components/wt-loader/_internals/wt-loader--md.vue +5 -5
- package/src/components/wt-loader/_internals/wt-loader--sm.vue +1 -1
- package/src/components/wt-logo/wt-logo.vue +13 -4
- package/src/components/wt-navigation-bar/types/WtNavigationBar.d.ts +8 -9
- package/src/components/wt-navigation-bar/wt-navigation-bar.vue +17 -17
- package/src/components/wt-notification/wt-notification.vue +7 -7
- package/src/components/wt-notifications-bar/wt-notifications-bar.vue +2 -2
- package/src/components/wt-page-wrapper/wt-page-wrapper.vue +4 -4
- package/src/components/wt-player/wt-player.vue +6 -6
- package/src/components/wt-popup/wt-popup.vue +18 -18
- package/src/components/wt-progress-bar/wt-progress-bar.vue +6 -6
- package/src/components/wt-radio/wt-radio.vue +3 -3
- package/src/components/wt-rounded-action/wt-rounded-action.vue +3 -3
- package/src/components/wt-search-bar/wt-search-bar.vue +9 -9
- package/src/components/wt-select/_multiselect.scss +18 -18
- package/src/components/wt-select/wt-select.vue +3 -3
- package/src/components/wt-slider/wt-slider.vue +12 -12
- package/src/components/wt-status-select/wt-status-select.vue +4 -4
- package/src/components/wt-stepper/wt-stepper.vue +2 -2
- package/src/components/wt-switcher/wt-switcher.vue +8 -8
- package/src/components/wt-table/wt-table.vue +5 -5
- package/src/components/wt-table-actions/wt-table-actions.vue +1 -1
- package/src/components/wt-table-column-select/wt-table-column-select.vue +4 -4
- package/src/components/wt-tabs/wt-tabs.vue +9 -9
- package/src/components/wt-tags-input/wt-tags-input.vue +8 -8
- package/src/components/wt-textarea/wt-textarea.vue +11 -11
- package/src/components/wt-time-input/wt-time-input.vue +6 -6
- package/src/components/wt-timepicker/wt-timepicker.vue +1 -1
- package/src/components/wt-tooltip/wt-tooltip.vue +4 -4
- package/src/components/wt-tree/types/WtTreeMode.js +2 -2
- package/src/components/wt-tree/wt-tree.vue +9 -9
- package/src/components/wt-tree-line/_variables.scss +0 -1
- package/src/components/wt-tree-line/types/wt-tree-nested-icons.ts +3 -3
- package/src/components/wt-tree-line/wt-tree-line.vue +2 -2
- package/src/components/wt-tree-table/wt-tree-table.vue +3 -3
- package/src/components/wt-tree-table-row/wt-tree-table-row.vue +1 -1
- package/src/composables/useAccessControl/v2/createUserAccessControl.ts +7 -4
- package/src/composables/useAccessControl/v2/types/CreateUserAccessControl.d.ts +6 -4
- package/src/composables/useWtTable/useWtTable.js +20 -19
- package/src/css/main.scss +6 -6
- package/src/css/pages/card-page.scss +6 -6
- package/src/css/pages/table-page.scss +5 -5
- package/src/enums/ComponentSize/ComponentSize.js +9 -9
- package/src/enums/CrudAction/CrudAction.js +4 -4
- package/src/enums/WebitelApplications/AdminSections.js +37 -37
- package/src/enums/WebitelApplications/AuditorSections.js +1 -1
- package/src/enums/WebitelApplications/CrmSections.enum.js +2 -1
- package/src/enums/WebitelApplications/CrmSections.js +12 -12
- package/src/enums/WebitelApplications/CrmSections.ts +13 -13
- package/src/enums/WebitelApplications/SupervisorSections.js +3 -3
- package/src/enums/WebitelApplications/WtApplication.js +7 -7
- package/src/enums/index.js +17 -1
- package/src/locale/ru/ru.js +2 -1
- package/src/locale/ua/ua.js +2 -1
- package/src/mixins/validationMixin/useValidation.js +3 -1
- package/src/modules/AgentStatusSelect/components/_internals/wt-cc-pause-cause-popup.vue +1 -1
- package/src/modules/AgentStatusSelect/components/_internals/wt-cc-status-select-error-popup.vue +1 -1
- package/src/modules/AuditForm/components/audit-form-question-read-wrapper.vue +3 -3
- package/src/modules/AuditForm/components/audit-form-question-write-wrapper.vue +4 -4
- package/src/modules/AuditForm/components/audit-form-question.vue +2 -2
- package/src/modules/AuditForm/components/questions/score/audit-form-question-score.vue +1 -1
- package/src/modules/DeleteConfirmationPopup/components/delete-confirmation-popup.vue +1 -1
- package/src/modules/Filters/v2/filter-presets/components/_shared/input-fields/preset-description-field.vue +3 -7
- package/src/modules/Filters/v2/filter-presets/components/_shared/input-fields/preset-name-field.vue +3 -6
- package/src/modules/Filters/v2/filter-presets/components/_shared/preset-filters-preview.vue +8 -15
- package/src/modules/Filters/v2/filter-presets/components/apply-preset/apply-preset-action.vue +55 -49
- package/src/modules/Filters/v2/filter-presets/components/apply-preset/preset-preview.vue +39 -27
- package/src/modules/Filters/v2/filter-presets/components/save-preset/overwrite-preset-popup.vue +3 -1
- package/src/modules/Filters/v2/filter-presets/components/save-preset/save-preset-action.vue +40 -24
- package/src/modules/Filters/v2/filter-presets/components/save-preset/save-preset-popup.vue +2 -2
- package/src/modules/Filters/v2/filter-presets/index.ts +3 -8
- package/src/modules/Filters/v2/filter-presets/stores/createFilterPresetsStore.ts +11 -9
- package/src/modules/Filters/v2/filter-presets/stores/headers/headers.ts +21 -21
- package/src/modules/Filters/v2/filters/components/config/dynamic-filter-config-form.vue +2 -2
- package/src/modules/Filters/v2/filters/components/dynamic-filter-add-action.vue +3 -3
- package/src/modules/Filters/v2/filters/components/dynamic-filter-panel-wrapper.vue +10 -7
- package/src/modules/Filters/v2/filters/components/filter-options/_shared/composables/booleanFilterToolkit.ts +30 -24
- package/src/modules/Filters/v2/filters/components/filter-options/_shared/composables/useFromToSecToPreviewTime.ts +28 -28
- package/src/modules/Filters/v2/filters/components/filter-options/_shared/date-time-filter/date-time-filter-value-field.vue +9 -6
- package/src/modules/Filters/v2/filters/components/filter-options/_shared/has-options/has-option-filter-value-field.vue +2 -2
- package/src/modules/Filters/v2/filters/components/filter-options/agent/agent-filter-value-preview.vue +4 -6
- package/src/modules/Filters/v2/filters/components/filter-options/amd-result/amd-result-filter-value-preview.vue +0 -2
- package/src/modules/Filters/v2/filters/components/filter-options/assignee/assignee-filter-value-preview.vue +8 -13
- package/src/modules/Filters/v2/filters/components/filter-options/author/author-filter-value-preview.vue +4 -6
- package/src/modules/Filters/v2/filters/components/filter-options/cause/cause-filter-value-preview.vue +0 -1
- package/src/modules/Filters/v2/filters/components/filter-options/close-reason-groups-case/close-reason-groups-case-filter-value-field.vue +7 -4
- package/src/modules/Filters/v2/filters/components/filter-options/close-reason-groups-case/close-reason-groups-case-filter-value-preview.vue +6 -7
- package/src/modules/Filters/v2/filters/components/filter-options/close-reason-groups-case/config.js +2 -1
- package/src/modules/Filters/v2/filters/components/filter-options/contact/contact-filter-value-preview.vue +4 -6
- package/src/modules/Filters/v2/filters/components/filter-options/contact-group/contact-group-filter-value-preview.vue +5 -10
- package/src/modules/Filters/v2/filters/components/filter-options/created-at-from/created-at-from-filter-value-preview.vue +1 -1
- package/src/modules/Filters/v2/filters/components/filter-options/created-at-to/created-at-to-filter-value-preview.vue +1 -1
- package/src/modules/Filters/v2/filters/components/filter-options/direction/direction-filter-value-preview.vue +1 -1
- package/src/modules/Filters/v2/filters/components/filter-options/gateway/gateway-filter-value-preview.vue +4 -6
- package/src/modules/Filters/v2/filters/components/filter-options/grantee/grantee-filter-value-preview.vue +4 -6
- package/src/modules/Filters/v2/filters/components/filter-options/has-attachment/has-attachment-filter-value-preview.vue +3 -1
- package/src/modules/Filters/v2/filters/components/filter-options/has-file/has-file-filter-value-field.vue +1 -1
- package/src/modules/Filters/v2/filters/components/filter-options/has-file/has-file-filter-value-preview.vue +2 -4
- package/src/modules/Filters/v2/filters/components/filter-options/has-rating/has-rating-filter-value-field.vue +2 -2
- package/src/modules/Filters/v2/filters/components/filter-options/has-rating/has-rating-filter-value-preview.vue +2 -4
- package/src/modules/Filters/v2/filters/components/filter-options/has-transcription/has-transcription-filter-value-field.vue +2 -3
- package/src/modules/Filters/v2/filters/components/filter-options/has-transcription/has-transcription-filter-value-preview.vue +2 -4
- package/src/modules/Filters/v2/filters/components/filter-options/impacted/impacted-filter-value-preview.vue +4 -6
- package/src/modules/Filters/v2/filters/components/filter-options/index.ts +48 -44
- package/src/modules/Filters/v2/filters/components/filter-options/priority-case/config.js +1 -2
- package/src/modules/Filters/v2/filters/components/filter-options/priority-case/priority-case-filter-value-preview.vue +4 -6
- package/src/modules/Filters/v2/filters/components/filter-options/queue/queue-filter-value-preview.vue +4 -6
- package/src/modules/Filters/v2/filters/components/filter-options/rated-by/rated-by-filter-value-preview.vue +4 -6
- package/src/modules/Filters/v2/filters/components/filter-options/reporter/reporter-filter-value-preview.vue +4 -6
- package/src/modules/Filters/v2/filters/components/filter-options/score/score-from-to-filter-value-field.vue +1 -1
- package/src/modules/Filters/v2/filters/components/filter-options/service-case/service-case-filter-value-field.vue +5 -5
- package/src/modules/Filters/v2/filters/components/filter-options/sla/sla-filter-value-preview.vue +4 -6
- package/src/modules/Filters/v2/filters/components/filter-options/source-case/config.js +1 -2
- package/src/modules/Filters/v2/filters/components/filter-options/source-case/source-case-filter-value-preview.vue +4 -6
- package/src/modules/Filters/v2/filters/components/filter-options/status-case/config.js +2 -1
- package/src/modules/Filters/v2/filters/components/filter-options/status-case/status-case-filter-value-field.vue +7 -4
- package/src/modules/Filters/v2/filters/components/filter-options/talk-duration/TalkDurationFilter.d.ts +2 -2
- package/src/modules/Filters/v2/filters/components/filter-options/team/team-filter-value-preview.vue +4 -6
- package/src/modules/Filters/v2/filters/components/filter-options/total-duration/TotalDurationFilter.d.ts +2 -2
- package/src/modules/Filters/v2/filters/components/filter-options/user/user-filter-value-preview.vue +4 -6
- package/src/modules/Filters/v2/filters/components/filter-options/variable/variable-filter-value-field.vue +1 -2
- package/src/modules/Filters/v2/filters/components/preview/dynamic-filter-preview.vue +4 -6
- package/src/modules/Filters/v2/filters/enums/FilterOption.ts +40 -40
- package/src/modules/ObjectPermissions/_internals/components/permissions-role-row.vue +1 -1
- package/src/modules/ObjectPermissions/components/permissions-tab.vue +56 -57
- package/src/modules/TableComponentModule/composables/useTableEmpty.js +1 -1
- package/src/modules/Userinfo/v2/stores/__tests__/accessStore.spec.ts +16 -16
- package/src/scripts/compareSize.js +9 -9
- package/src/scripts/prettifyFileSize.js +0 -1
package/package.json
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webitel/ui-sdk",
|
|
3
|
-
"version": "25.4.
|
|
3
|
+
"version": "25.4.39",
|
|
4
4
|
"private": false,
|
|
5
5
|
"scripts": {
|
|
6
6
|
"dev": "vite",
|
|
7
7
|
"build": "vite build",
|
|
8
8
|
"serve": "vite preview",
|
|
9
9
|
"test:unit": "vitest",
|
|
10
|
-
"lint:
|
|
11
|
-
"lint:prettier": "prettier --check .",
|
|
12
|
-
"lint": "npm run lint:js && npm run lint:prettier",
|
|
13
|
-
"lint:fix": "prettier --write --list-different . && npm run lint:js --fix",
|
|
10
|
+
"lint:fix": "prettier --write --check . && eslint --fix",
|
|
14
11
|
"publish-lib": "npm run test:unit && npm run build && npm publish --access public",
|
|
15
12
|
"publish-lib:testless": "npm run build && npm publish --access public",
|
|
16
13
|
"docs:dev": "vitepress dev docs --port 8080",
|
|
@@ -21,7 +18,8 @@
|
|
|
21
18
|
"update-node": "nvm install --lts && nvm alias default node",
|
|
22
19
|
"i": "npm install",
|
|
23
20
|
"lint:package": "publint",
|
|
24
|
-
"orval": "orval"
|
|
21
|
+
"orval": "orval",
|
|
22
|
+
"prepare": "husky && husky install"
|
|
25
23
|
},
|
|
26
24
|
"main": "./dist/ui-sdk.js",
|
|
27
25
|
"type": "module",
|
|
@@ -108,15 +106,15 @@
|
|
|
108
106
|
"CHANGELOG.md"
|
|
109
107
|
],
|
|
110
108
|
"dependencies": {
|
|
111
|
-
"@floating-ui/vue": "^1.1.
|
|
109
|
+
"@floating-ui/vue": "^1.1.6",
|
|
112
110
|
"@morev/vue-transitions": "^3.0.5",
|
|
113
111
|
"@vuelidate/core": "^2.0.3",
|
|
114
112
|
"@vuelidate/validators": "^2.0.4",
|
|
115
113
|
"@vuepic/vue-datepicker": "^4.5.1",
|
|
116
|
-
"@vueuse/components": "^
|
|
114
|
+
"@vueuse/components": "^13.0.0",
|
|
117
115
|
"@webitel/styleguide": "^24.12.26",
|
|
118
116
|
"autosize": "^6.0.1",
|
|
119
|
-
"axios": "^1.
|
|
117
|
+
"axios": "^1.8.3",
|
|
120
118
|
"clipboard-copy": "^4.0.1",
|
|
121
119
|
"csv-stringify": "^5.5.3",
|
|
122
120
|
"date-fns": "^4.1.0",
|
|
@@ -129,71 +127,78 @@
|
|
|
129
127
|
"jszip": "^3.10.1",
|
|
130
128
|
"jszip-utils": "^0.1.0",
|
|
131
129
|
"lodash-es": "^4.17.21",
|
|
132
|
-
"mitt": "3.0.1",
|
|
130
|
+
"mitt": "^3.0.1",
|
|
133
131
|
"path-browserify": "^1.0.1",
|
|
134
132
|
"plyr": "^3.7.8",
|
|
135
133
|
"query-string": "^9.1.1",
|
|
136
134
|
"sortablejs": "^1.15.3",
|
|
137
|
-
"vue-i18n": "^11.
|
|
135
|
+
"vue-i18n": "^11.1.2",
|
|
138
136
|
"vue-multiselect": "^3.1.0",
|
|
139
137
|
"vue-observe-visibility": "^2.0.0-alpha.1",
|
|
140
|
-
"vue-router": "^4.
|
|
141
|
-
"webitel-sdk": "^
|
|
142
|
-
"xlsx": "
|
|
138
|
+
"vue-router": "^4.5.0",
|
|
139
|
+
"webitel-sdk": "^25.2.11",
|
|
140
|
+
"xlsx": "0.18.5",
|
|
143
141
|
"zod": "^3.24.2"
|
|
144
142
|
},
|
|
145
143
|
"devDependencies": {
|
|
146
|
-
"@eslint/js": "^9.
|
|
144
|
+
"@eslint/js": "^9.22.0",
|
|
147
145
|
"@tsconfig/node22": "^22.0.0",
|
|
148
|
-
"@types/node": "^22.
|
|
149
|
-
"@vitejs/plugin-vue": "^5.2.
|
|
150
|
-
"@vitest/coverage-v8": "^3.0.6",
|
|
146
|
+
"@types/node": "^22.13.10",
|
|
147
|
+
"@vitejs/plugin-vue": "^5.2.3",
|
|
151
148
|
"@vue/compat": "^3.5.13",
|
|
152
149
|
"@vue/compiler-sfc": "^3.5.13",
|
|
153
150
|
"@vue/test-utils": "^2.4.6",
|
|
154
151
|
"@vue/tsconfig": "^0.7.0",
|
|
155
|
-
"eslint": "^9.
|
|
156
|
-
"eslint-config-prettier": "^
|
|
152
|
+
"eslint": "^9.22.0",
|
|
153
|
+
"eslint-config-prettier": "^10.1.1",
|
|
157
154
|
"eslint-plugin-simple-import-sort": "^12.1.1",
|
|
158
|
-
"eslint-plugin-vue": "^
|
|
159
|
-
"globals": "^
|
|
160
|
-
"globby": "^14.0
|
|
161
|
-
"happy-dom": "^
|
|
155
|
+
"eslint-plugin-vue": "^10.0.0",
|
|
156
|
+
"globals": "^16.0.0",
|
|
157
|
+
"globby": "^14.1.0",
|
|
158
|
+
"happy-dom": "^17.4.4",
|
|
159
|
+
"husky": "^9.1.7",
|
|
160
|
+
"lint-staged": "^15.5.0",
|
|
162
161
|
"markdown-it": "^14.1.0",
|
|
163
162
|
"markdown-table": "^3.0.4",
|
|
164
163
|
"orval": "^7.6.0",
|
|
165
164
|
"path": "^0.12.7",
|
|
166
|
-
"pinia": "^
|
|
167
|
-
"postcss": "^8.
|
|
165
|
+
"pinia": "^3.0.1",
|
|
166
|
+
"postcss": "^8.5.3",
|
|
168
167
|
"postcss-prefix-selector": "^2.1.0",
|
|
169
|
-
"prettier": "^3.
|
|
170
|
-
"
|
|
171
|
-
"
|
|
172
|
-
"
|
|
173
|
-
"
|
|
174
|
-
"typescript
|
|
168
|
+
"prettier": "^3.5.3",
|
|
169
|
+
"prettier-plugin-css-order": "^2.1.2",
|
|
170
|
+
"prismjs": "^1.30.0",
|
|
171
|
+
"publint": "^0.3.9",
|
|
172
|
+
"sass": "^1.85.1",
|
|
173
|
+
"typescript": "5.8.2",
|
|
174
|
+
"typescript-eslint": "^8.26.1",
|
|
175
175
|
"typescript-plugin-css-modules": "^5.1.0",
|
|
176
|
-
"
|
|
176
|
+
"unplugin-auto-import": "^19.1.1",
|
|
177
|
+
"vite": "^6.2.2",
|
|
177
178
|
"vite-plugin-checker": "^0.9.0",
|
|
178
179
|
"vite-plugin-node-polyfills": "^0.23.0",
|
|
179
|
-
"vite-plugin-static-copy": "^2.
|
|
180
|
+
"vite-plugin-static-copy": "^2.3.0",
|
|
180
181
|
"vite-plugin-svg-sprite": "=0.5",
|
|
181
182
|
"vite-plugin-vue-docgen": "^0.3.4",
|
|
182
183
|
"vitepress": "1.6.3",
|
|
183
|
-
"vitest": "^3.0.
|
|
184
|
+
"vitest": "^3.0.9",
|
|
184
185
|
"vue": "^3.5.13",
|
|
185
|
-
"vue-tsc": "^2.
|
|
186
|
+
"vue-tsc": "^2.2.8",
|
|
186
187
|
"vuex": "^4.1.0"
|
|
187
188
|
},
|
|
188
189
|
"optionalDependencies": {
|
|
189
190
|
"@rollup/rollup-linux-x64-gnu": "4.9.5"
|
|
190
191
|
},
|
|
191
192
|
"overrides": {
|
|
192
|
-
"vite": "^6.
|
|
193
|
+
"vite": "^6.2.2",
|
|
193
194
|
"date-fns": "^4.1.0"
|
|
194
195
|
},
|
|
195
196
|
"engines": {
|
|
196
197
|
"npm": "10",
|
|
197
198
|
"node": "v22"
|
|
199
|
+
},
|
|
200
|
+
"lint-staged": {
|
|
201
|
+
"*.js": "eslint --cache --fix",
|
|
202
|
+
"*.{js,css,md}": "prettier --write"
|
|
198
203
|
}
|
|
199
204
|
}
|
|
@@ -12,7 +12,7 @@ import applyTransform, {
|
|
|
12
12
|
snakeToCamel,
|
|
13
13
|
starToSearch,
|
|
14
14
|
} from '../../transformers/index.js';
|
|
15
|
-
import {PrioritiesApiFactory} from 'webitel-sdk';
|
|
15
|
+
import { PrioritiesApiFactory } from 'webitel-sdk';
|
|
16
16
|
|
|
17
17
|
const instance = getDefaultInstance();
|
|
18
18
|
const configuration = getDefaultOpenAPIConfig();
|
|
@@ -22,7 +22,17 @@ const priorityService = new PrioritiesApiFactory(configuration, '', instance);
|
|
|
22
22
|
const fieldsToSend = ['name', 'description', 'color'];
|
|
23
23
|
|
|
24
24
|
const getPrioritiesList = async (params) => {
|
|
25
|
-
const fieldsToSend = [
|
|
25
|
+
const fieldsToSend = [
|
|
26
|
+
'page',
|
|
27
|
+
'size',
|
|
28
|
+
'q',
|
|
29
|
+
'sort',
|
|
30
|
+
'fields',
|
|
31
|
+
'id',
|
|
32
|
+
'notInSla',
|
|
33
|
+
'inSla',
|
|
34
|
+
'inSlaCond',
|
|
35
|
+
];
|
|
26
36
|
const {
|
|
27
37
|
page,
|
|
28
38
|
size,
|
|
@@ -125,6 +135,6 @@ const CasePrioritiesAPI = {
|
|
|
125
135
|
getLookup: getConditionsLookup,
|
|
126
136
|
delete: deletePriority,
|
|
127
137
|
add: addPriority,
|
|
128
|
-
}
|
|
138
|
+
};
|
|
129
139
|
|
|
130
140
|
export default CasePrioritiesAPI;
|
|
@@ -32,15 +32,7 @@ const getSourcesList = async (params) => {
|
|
|
32
32
|
}));
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
-
const {
|
|
36
|
-
page,
|
|
37
|
-
size,
|
|
38
|
-
fields,
|
|
39
|
-
sort,
|
|
40
|
-
id,
|
|
41
|
-
q,
|
|
42
|
-
type,
|
|
43
|
-
} = applyTransform(params, [
|
|
35
|
+
const { page, size, fields, sort, id, q, type } = applyTransform(params, [
|
|
44
36
|
merge(getDefaultGetParams()),
|
|
45
37
|
starToSearch('search'),
|
|
46
38
|
(params) => ({ ...params, q: params.search }),
|
|
@@ -57,7 +49,7 @@ const getSourcesList = async (params) => {
|
|
|
57
49
|
id,
|
|
58
50
|
q,
|
|
59
51
|
type,
|
|
60
|
-
)
|
|
52
|
+
);
|
|
61
53
|
const { items, next } = applyTransform(response.data, [
|
|
62
54
|
merge(getDefaultGetListResponse()),
|
|
63
55
|
]);
|
|
@@ -75,10 +67,7 @@ const getSource = async ({ itemId: id }) => {
|
|
|
75
67
|
|
|
76
68
|
try {
|
|
77
69
|
const response = await sourceService.locateSource(id);
|
|
78
|
-
return applyTransform(response.data, [
|
|
79
|
-
snakeToCamel(),
|
|
80
|
-
itemResponseHandler,
|
|
81
|
-
]);
|
|
70
|
+
return applyTransform(response.data, [snakeToCamel(), itemResponseHandler]);
|
|
82
71
|
} catch (err) {
|
|
83
72
|
throw applyTransform(err, [notify]);
|
|
84
73
|
}
|
|
@@ -91,9 +80,7 @@ const addSource = async ({ itemInstance }) => {
|
|
|
91
80
|
]);
|
|
92
81
|
try {
|
|
93
82
|
const response = await sourceService.createSource(item);
|
|
94
|
-
return applyTransform(response.data, [
|
|
95
|
-
snakeToCamel()
|
|
96
|
-
]);
|
|
83
|
+
return applyTransform(response.data, [snakeToCamel()]);
|
|
97
84
|
} catch (err) {
|
|
98
85
|
throw applyTransform(err, [notify]);
|
|
99
86
|
}
|
|
@@ -102,7 +89,8 @@ const addSource = async ({ itemInstance }) => {
|
|
|
102
89
|
const updateSource = async ({ itemInstance, itemId: id }) => {
|
|
103
90
|
const item = applyTransform(itemInstance, [
|
|
104
91
|
camelToSnake(),
|
|
105
|
-
sanitize(fieldsToSend)
|
|
92
|
+
sanitize(fieldsToSend),
|
|
93
|
+
]);
|
|
106
94
|
|
|
107
95
|
try {
|
|
108
96
|
const response = await sourceService.updateSource(id, item);
|
|
@@ -121,10 +109,11 @@ const deleteSource = async ({ id }) => {
|
|
|
121
109
|
}
|
|
122
110
|
};
|
|
123
111
|
|
|
124
|
-
const getLookup = (params) =>
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
112
|
+
const getLookup = (params) =>
|
|
113
|
+
getSourcesList({
|
|
114
|
+
...params,
|
|
115
|
+
fields: params.fields || ['id', 'name', 'type'],
|
|
116
|
+
});
|
|
128
117
|
|
|
129
118
|
const CaseSourcesAPI = {
|
|
130
119
|
getList: getSourcesList,
|
|
@@ -132,7 +121,7 @@ const CaseSourcesAPI = {
|
|
|
132
121
|
add: addSource,
|
|
133
122
|
update: updateSource,
|
|
134
123
|
delete: deleteSource,
|
|
135
|
-
getLookup
|
|
136
|
-
}
|
|
124
|
+
getLookup,
|
|
125
|
+
};
|
|
137
126
|
|
|
138
127
|
export default CaseSourcesAPI;
|
|
@@ -19,19 +19,20 @@ const configuration = getDefaultOpenAPIConfig();
|
|
|
19
19
|
|
|
20
20
|
const slaService = new SLAsApiFactory(configuration, '', instance);
|
|
21
21
|
|
|
22
|
-
const fieldsToSend = [
|
|
22
|
+
const fieldsToSend = [
|
|
23
|
+
'name',
|
|
24
|
+
'description',
|
|
25
|
+
'valid_from',
|
|
26
|
+
'valid_to',
|
|
27
|
+
'calendar',
|
|
28
|
+
'reaction_time',
|
|
29
|
+
'resolution_time',
|
|
30
|
+
];
|
|
23
31
|
|
|
24
32
|
const getSlasList = async (params) => {
|
|
25
33
|
const fieldsToSend = ['page', 'size', 'q', 'sort', 'fields', 'id'];
|
|
26
34
|
|
|
27
|
-
const {
|
|
28
|
-
page,
|
|
29
|
-
size,
|
|
30
|
-
fields,
|
|
31
|
-
sort,
|
|
32
|
-
id,
|
|
33
|
-
q,
|
|
34
|
-
} = applyTransform(params, [
|
|
35
|
+
const { page, size, fields, sort, id, q } = applyTransform(params, [
|
|
35
36
|
merge(getDefaultGetParams()),
|
|
36
37
|
starToSearch('search'),
|
|
37
38
|
(params) => ({ ...params, q: params.search }),
|
|
@@ -39,14 +40,7 @@ const getSlasList = async (params) => {
|
|
|
39
40
|
camelToSnake(),
|
|
40
41
|
]);
|
|
41
42
|
try {
|
|
42
|
-
const response = await slaService.listSLAs(
|
|
43
|
-
page,
|
|
44
|
-
size,
|
|
45
|
-
fields,
|
|
46
|
-
sort,
|
|
47
|
-
id,
|
|
48
|
-
q,
|
|
49
|
-
);
|
|
43
|
+
const response = await slaService.listSLAs(page, size, fields, sort, id, q);
|
|
50
44
|
const { items, next } = applyTransform(response.data, [
|
|
51
45
|
merge(getDefaultGetListResponse()),
|
|
52
46
|
]);
|
|
@@ -66,10 +60,7 @@ const getSla = async ({ itemId: id }) => {
|
|
|
66
60
|
|
|
67
61
|
try {
|
|
68
62
|
const response = await slaService.locateSLA(id, fieldsToSend);
|
|
69
|
-
return applyTransform(response.data, [
|
|
70
|
-
snakeToCamel(),
|
|
71
|
-
itemResponseHandler,
|
|
72
|
-
]);
|
|
63
|
+
return applyTransform(response.data, [snakeToCamel(), itemResponseHandler]);
|
|
73
64
|
} catch (err) {
|
|
74
65
|
throw applyTransform(err, [notify]);
|
|
75
66
|
}
|
|
@@ -82,9 +73,7 @@ const addSla = async ({ itemInstance }) => {
|
|
|
82
73
|
]);
|
|
83
74
|
try {
|
|
84
75
|
const response = await slaService.createSLA(item);
|
|
85
|
-
return applyTransform(response.data, [
|
|
86
|
-
snakeToCamel()
|
|
87
|
-
]);
|
|
76
|
+
return applyTransform(response.data, [snakeToCamel()]);
|
|
88
77
|
} catch (err) {
|
|
89
78
|
throw applyTransform(err, [notify]);
|
|
90
79
|
}
|
|
@@ -93,7 +82,8 @@ const addSla = async ({ itemInstance }) => {
|
|
|
93
82
|
const updateSla = async ({ itemInstance, itemId: id }) => {
|
|
94
83
|
const item = applyTransform(itemInstance, [
|
|
95
84
|
camelToSnake(),
|
|
96
|
-
sanitize(fieldsToSend)
|
|
85
|
+
sanitize(fieldsToSend),
|
|
86
|
+
]);
|
|
97
87
|
try {
|
|
98
88
|
const response = await slaService.updateSLA(id, item);
|
|
99
89
|
return applyTransform(response.data, [snakeToCamel()]);
|
|
@@ -124,6 +114,6 @@ const SlasAPI = {
|
|
|
124
114
|
add: addSla,
|
|
125
115
|
update: updateSla,
|
|
126
116
|
delete: deleteSla,
|
|
127
|
-
}
|
|
117
|
+
};
|
|
128
118
|
|
|
129
119
|
export default SlasAPI;
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
export const skipIf =
|
|
1
|
+
export const skipIf =
|
|
2
|
+
(
|
|
3
|
+
transformer: (...payload: unknown[]) => unknown,
|
|
4
|
+
ifFn: boolean | ((...payload: unknown[]) => boolean),
|
|
5
|
+
) =>
|
|
6
|
+
(payload: unknown) => {
|
|
2
7
|
if (typeof ifFn === 'function' ? ifFn(payload) : ifFn) {
|
|
3
|
-
|
|
8
|
+
return payload;
|
|
4
9
|
}
|
|
5
10
|
return transformer(payload);
|
|
6
|
-
};
|
|
11
|
+
};
|
|
@@ -34,7 +34,8 @@ class WebSocketClientController {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
addEventListener(event, callback) {
|
|
37
|
-
if (Array.isArray(callback))
|
|
37
|
+
if (Array.isArray(callback))
|
|
38
|
+
this._on[event] = this._on[event].concat(callback);
|
|
38
39
|
else this._on[event].push(callback);
|
|
39
40
|
}
|
|
40
41
|
|
|
@@ -62,12 +63,16 @@ class WebSocketClientController {
|
|
|
62
63
|
cli.callStore = reactive(cli.callStore);
|
|
63
64
|
|
|
64
65
|
this._on[WebSocketClientEvent.AFTER_AUTH].forEach((callback) => callback());
|
|
65
|
-
this._on[WebSocketClientEvent.ERROR].forEach((callback) =>
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
this._on[WebSocketClientEvent.ERROR].forEach((callback) =>
|
|
67
|
+
cli.on('error', callback),
|
|
68
|
+
);
|
|
69
|
+
cli.on(`show_message`, (e) =>
|
|
70
|
+
eventBus.$emit('notification', {
|
|
71
|
+
type: e.type,
|
|
72
|
+
text: e.message,
|
|
73
|
+
timeout: e.timeout,
|
|
74
|
+
}),
|
|
75
|
+
);
|
|
71
76
|
|
|
72
77
|
await cli.connect();
|
|
73
78
|
|
|
@@ -84,23 +89,25 @@ class WebSocketClientController {
|
|
|
84
89
|
resolve();
|
|
85
90
|
}, 5000);
|
|
86
91
|
|
|
87
|
-
const markUa = () =>
|
|
92
|
+
const markUa = () =>
|
|
93
|
+
cli.phone?.ua && (cli.phone.ua = markRaw(cli.phone.ua));
|
|
88
94
|
|
|
89
95
|
if (cli.phone?.ua) {
|
|
90
96
|
markUa();
|
|
91
97
|
clearTimeout(timeout);
|
|
92
98
|
resolve();
|
|
93
|
-
} else
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
99
|
+
} else
|
|
100
|
+
cli.on('phone_connected', () => {
|
|
101
|
+
markUa();
|
|
102
|
+
clearTimeout(timeout);
|
|
103
|
+
resolve();
|
|
104
|
+
});
|
|
98
105
|
});
|
|
99
106
|
|
|
100
107
|
window.cli = cli;
|
|
101
108
|
return cli;
|
|
102
109
|
};
|
|
103
|
-
}
|
|
110
|
+
}
|
|
104
111
|
|
|
105
112
|
const webSocketClientController = new WebSocketClientController();
|
|
106
113
|
|
|
@@ -8,8 +8,9 @@ export const getConfig = () => {
|
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
const { hostname, protocol } = window.location;
|
|
11
|
-
const origin =
|
|
11
|
+
const origin = `${protocol}//${hostname}`.replace(/^http/, 'ws');
|
|
12
12
|
|
|
13
|
-
export const endpoint =
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
export const endpoint =
|
|
14
|
+
import.meta.env.MODE === 'production'
|
|
15
|
+
? `${origin}/ws`
|
|
16
|
+
: 'wss://dev.webitel.com/ws';
|
package/src/components/on-demand/wt-navigation-menu/components/_internals/nav-menu-lvl-1.vue
CHANGED
|
@@ -63,12 +63,12 @@ function select(category) {
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
&--selected {
|
|
66
|
-
color: var(--primary-on-color);
|
|
67
66
|
background: var(--primary-color);
|
|
67
|
+
color: var(--primary-on-color);
|
|
68
68
|
|
|
69
69
|
&:hover {
|
|
70
|
-
color: var(--primary-on-color);
|
|
71
70
|
background: var(--primary-color);
|
|
71
|
+
color: var(--primary-on-color);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
}
|
package/src/components/on-demand/wt-navigation-menu/components/_internals/nav-menu-lvl-2.vue
CHANGED
|
@@ -36,8 +36,8 @@ const props = defineProps({
|
|
|
36
36
|
overflow-y: auto;
|
|
37
37
|
|
|
38
38
|
.nav-menu-lvl-2__indicator {
|
|
39
|
-
position: relative;
|
|
40
39
|
display: block;
|
|
40
|
+
position: relative;
|
|
41
41
|
width: var(--spacing-md);
|
|
42
42
|
height: var(--spacing-md);
|
|
43
43
|
|
|
@@ -45,12 +45,12 @@ const props = defineProps({
|
|
|
45
45
|
position: absolute;
|
|
46
46
|
top: 50%;
|
|
47
47
|
left: 50%;
|
|
48
|
-
width: var(--spacing-2xs);
|
|
49
|
-
height: var(--spacing-2xs);
|
|
50
|
-
content: '';
|
|
51
48
|
transform: translate(-50%, -50%);
|
|
52
49
|
border-radius: 50%;
|
|
53
50
|
background: var(--text-main-color);
|
|
51
|
+
width: var(--spacing-2xs);
|
|
52
|
+
height: var(--spacing-2xs);
|
|
53
|
+
content: '';
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -87,9 +87,9 @@ function select(category) {
|
|
|
87
87
|
|
|
88
88
|
.wt-navigation-menu {
|
|
89
89
|
display: flex;
|
|
90
|
-
align-items: center;
|
|
91
90
|
flex-grow: 1;
|
|
92
91
|
justify-content: center;
|
|
92
|
+
align-items: center;
|
|
93
93
|
height: 100%;
|
|
94
94
|
|
|
95
95
|
--button-min-height: 60px;
|
|
@@ -111,14 +111,14 @@ function select(category) {
|
|
|
111
111
|
&__wrapper {
|
|
112
112
|
@extend %wt-scrollbar;
|
|
113
113
|
display: grid;
|
|
114
|
+
grid-template-columns: repeat(2, 1fr);
|
|
114
115
|
box-sizing: border-box;
|
|
115
|
-
width: var(--wrapper-width);
|
|
116
|
-
height: var(--wrapper-height);
|
|
117
116
|
margin: auto;
|
|
118
|
-
padding: var(--spacing-sm);
|
|
119
117
|
border-radius: var(--spacing-xs);
|
|
120
118
|
background: var(--content-wrapper-color);
|
|
121
|
-
|
|
119
|
+
padding: var(--spacing-sm);
|
|
120
|
+
width: var(--wrapper-width);
|
|
121
|
+
height: var(--wrapper-height);
|
|
122
122
|
grid-gap: var(--spacing-sm);
|
|
123
123
|
|
|
124
124
|
@media only screen and (max-width: $viewport-xs) {
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
.nav-menu {
|
|
4
4
|
&__category {
|
|
5
|
-
height: 100%;
|
|
6
5
|
border-radius: var(--border-radius);
|
|
6
|
+
height: 100%;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
&__option {
|
|
@@ -16,14 +16,14 @@
|
|
|
16
16
|
@extend %typo-body-1;
|
|
17
17
|
display: flex;
|
|
18
18
|
align-items: center;
|
|
19
|
+
transition: var(--transition);
|
|
19
20
|
box-sizing: border-box;
|
|
21
|
+
border-radius: var(--border-radius);
|
|
22
|
+
padding: 18px 20px;
|
|
20
23
|
width: 100%;
|
|
21
24
|
min-height: var(--button-min-height);
|
|
22
|
-
padding: 18px 20px;
|
|
23
|
-
transition: var(--transition);
|
|
24
|
-
text-align: left;
|
|
25
25
|
color: var(--text-main-color);
|
|
26
|
-
|
|
26
|
+
text-align: left;
|
|
27
27
|
|
|
28
28
|
.wt-icon {
|
|
29
29
|
margin-right: var(--spacing-xs);
|
|
@@ -128,14 +128,14 @@ function selectOption(option) {
|
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
&__item-wrapper {
|
|
131
|
-
position: relative;
|
|
132
131
|
display: flex;
|
|
132
|
+
position: relative;
|
|
133
133
|
align-items: center;
|
|
134
|
-
padding: var(--spacing-xs);
|
|
135
|
-
cursor: pointer;
|
|
136
134
|
transition: var(--transition);
|
|
135
|
+
cursor: pointer;
|
|
137
136
|
border: 1px solid var(--text-main-color);
|
|
138
137
|
border-radius: var(--border-radius);
|
|
138
|
+
padding: var(--spacing-xs);
|
|
139
139
|
|
|
140
140
|
&:hover,
|
|
141
141
|
&.active {
|
|
@@ -52,25 +52,25 @@ const open = () => {
|
|
|
52
52
|
.start-page-card {
|
|
53
53
|
display: flex;
|
|
54
54
|
flex-direction: column;
|
|
55
|
-
|
|
56
|
-
padding: var(--spacing-xs);
|
|
57
|
-
color: var(--text-main-color);
|
|
55
|
+
gap: var(--spacing-xs);
|
|
58
56
|
border-radius: var(--border-radius);
|
|
59
57
|
background-color: var(--content-wrapper-color);
|
|
60
|
-
|
|
58
|
+
padding: var(--spacing-xs);
|
|
59
|
+
width: 264px;
|
|
60
|
+
color: var(--text-main-color);
|
|
61
61
|
|
|
62
62
|
&__header {
|
|
63
63
|
@extend %typo-heading-4;
|
|
64
64
|
display: flex;
|
|
65
|
-
align-items: center;
|
|
66
65
|
justify-content: center;
|
|
66
|
+
align-items: center;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
&__description {
|
|
70
70
|
@extend %typo-body-1;
|
|
71
71
|
display: -webkit-box;
|
|
72
|
-
overflow: hidden;
|
|
73
72
|
height: 78px; //in order to cut text after 3rd line:
|
|
73
|
+
overflow: hidden;
|
|
74
74
|
text-align: center;
|
|
75
75
|
text-overflow: ellipsis;
|
|
76
76
|
-webkit-line-clamp: 3;
|
|
@@ -52,11 +52,11 @@ const navCards = computed(() => {
|
|
|
52
52
|
<style scoped>
|
|
53
53
|
.wt-start-page__wrapper {
|
|
54
54
|
display: grid;
|
|
55
|
+
grid-template-columns: repeat(auto-fit, 264px);
|
|
55
56
|
justify-content: center;
|
|
56
57
|
box-sizing: border-box;
|
|
57
|
-
min-width: 264px;
|
|
58
58
|
padding: var(--spacing-sm);
|
|
59
|
-
|
|
59
|
+
min-width: 264px;
|
|
60
60
|
grid-gap: var(--spacing-sm);
|
|
61
61
|
}
|
|
62
62
|
</style>
|