@webitel/ui-sdk 25.4.37 → 25.4.38
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 +376 -238
- package/dist/ui-sdk.css +1 -1
- package/dist/ui-sdk.js +8735 -8360
- 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 +13 -13
- 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
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
export const CrmSections = {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
Contacts: 'contacts',
|
|
3
|
+
Cases: 'cases',
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
// CONFIGURATION - LOOKUPS
|
|
6
|
+
Slas: 'slas',
|
|
7
|
+
ServiceCatalogs: 'service-catalogs',
|
|
8
|
+
Priorities: 'priorities',
|
|
9
|
+
Statuses: 'statuses',
|
|
10
|
+
Sources: 'sources',
|
|
11
|
+
CloseReasonGroups: 'close-reason-groups',
|
|
12
|
+
ContactGroups: 'contact-groups',
|
|
13
|
+
CaseSources: 'case-sources',
|
|
14
|
+
CustomLookups: 'custom-lookups',
|
|
15
15
|
} as const;
|
|
16
16
|
|
|
17
|
-
export type CrmSections = typeof CrmSections[keyof typeof CrmSections];
|
|
17
|
+
export type CrmSections = (typeof CrmSections)[keyof typeof CrmSections];
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export const WtApplication = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
Admin: 'admin',
|
|
3
|
+
Agent: 'agent',
|
|
4
|
+
Supervisor: 'supervisor',
|
|
5
|
+
History: 'history',
|
|
6
|
+
Audit: 'audit',
|
|
7
|
+
Analytics: 'grafana',
|
|
8
|
+
Crm: 'crm',
|
|
9
9
|
};
|
package/src/enums/index.js
CHANGED
|
@@ -13,4 +13,20 @@ import { SupervisorSections } from './WebitelApplications/SupervisorSections';
|
|
|
13
13
|
import WebitelApplications from './WebitelApplications/WebitelApplications.enum.js';
|
|
14
14
|
import { WtApplication } from './WebitelApplications/WtApplication';
|
|
15
15
|
import { WtObject } from './WtObject/WtObject';
|
|
16
|
-
export {
|
|
16
|
+
export {
|
|
17
|
+
AbstractUserStatus,
|
|
18
|
+
AdminSections,
|
|
19
|
+
AgentStatus,
|
|
20
|
+
AuditorSections,
|
|
21
|
+
ChatGatewayProvider,
|
|
22
|
+
ComponentSize,
|
|
23
|
+
CrmSections,
|
|
24
|
+
CrudAction,
|
|
25
|
+
IconAction,
|
|
26
|
+
QueueType,
|
|
27
|
+
SupervisorSections,
|
|
28
|
+
TypesExportedSettings,
|
|
29
|
+
WebitelApplications,
|
|
30
|
+
WtApplication,
|
|
31
|
+
WtObject,
|
|
32
|
+
};
|
package/src/locale/ru/ru.js
CHANGED
|
@@ -490,7 +490,8 @@ export default {
|
|
|
490
490
|
exportToJson: 'Экспортировать в JSON',
|
|
491
491
|
},
|
|
492
492
|
filters: {
|
|
493
|
-
predefinedLabels: {
|
|
493
|
+
predefinedLabels: {
|
|
494
|
+
/* https://webitel.atlassian.net/browse/WTEL-6308?focusedCommentId=657415 */
|
|
494
495
|
createdAt: {
|
|
495
496
|
startOfToday: 'С начала дня',
|
|
496
497
|
startOfMonth: 'С начала этого месяца',
|
package/src/locale/ua/ua.js
CHANGED
|
@@ -490,7 +490,8 @@ export default {
|
|
|
490
490
|
exportToJson: 'Експортувати в JSON',
|
|
491
491
|
},
|
|
492
492
|
filters: {
|
|
493
|
-
predefinedLabels: {
|
|
493
|
+
predefinedLabels: {
|
|
494
|
+
/* https://webitel.atlassian.net/browse/WTEL-6308?focusedCommentId=657415 */
|
|
494
495
|
createdAt: {
|
|
495
496
|
startOfToday: 'Від початку дня',
|
|
496
497
|
startOfMonth: 'Від початку місяця',
|
|
@@ -62,7 +62,7 @@ export function useValidation({
|
|
|
62
62
|
validationText =
|
|
63
63
|
v.value.regex?.$message ||
|
|
64
64
|
`${t('validation.isRegExpMatched')} ${v.value.regex?.$params?.regex}`;
|
|
65
|
-
else if (v.value.nameAlreadyInUse
|
|
65
|
+
else if (v.value.nameAlreadyInUse?.$invalid) {
|
|
66
66
|
validationText = t('validation.nameAlreadyInUse');
|
|
67
67
|
}
|
|
68
68
|
}
|
|
@@ -73,6 +73,8 @@ export function useValidation({
|
|
|
73
73
|
}
|
|
74
74
|
return validationText;
|
|
75
75
|
}
|
|
76
|
+
|
|
77
|
+
return validationText;
|
|
76
78
|
});
|
|
77
79
|
|
|
78
80
|
return {
|
|
@@ -106,8 +106,8 @@ function setPause() {
|
|
|
106
106
|
<style lang="scss" scoped>
|
|
107
107
|
.wt-cc-pause-cause-popup-option {
|
|
108
108
|
display: flex;
|
|
109
|
-
align-items: center;
|
|
110
109
|
justify-content: space-between;
|
|
110
|
+
align-items: center;
|
|
111
111
|
|
|
112
112
|
&:not(:last-child) {
|
|
113
113
|
margin-bottom: var(--spacing-sm);
|
package/src/modules/AgentStatusSelect/components/_internals/wt-cc-status-select-error-popup.vue
CHANGED
|
@@ -47,9 +47,9 @@ function close() {
|
|
|
47
47
|
<style lang="scss" scoped>
|
|
48
48
|
.wt-cc-status-select-error-popup__main-wrapper {
|
|
49
49
|
display: flex;
|
|
50
|
-
align-items: center;
|
|
51
50
|
flex-direction: column;
|
|
52
51
|
justify-content: center;
|
|
52
|
+
align-items: center;
|
|
53
53
|
gap: var(--spacing-sm);
|
|
54
54
|
}
|
|
55
55
|
</style>
|
|
@@ -88,12 +88,12 @@ const isResult = computed(() => !isEmpty(props.result));
|
|
|
88
88
|
|
|
89
89
|
<style lang="scss" scoped>
|
|
90
90
|
.audit-form-question-read {
|
|
91
|
-
position: relative;
|
|
92
91
|
display: flex;
|
|
92
|
+
position: relative;
|
|
93
93
|
flex-direction: column;
|
|
94
|
+
gap: var(--spacing-sm);
|
|
94
95
|
transition: var(--transition);
|
|
95
96
|
border: 1px solid transparent;
|
|
96
|
-
gap: var(--spacing-sm);
|
|
97
97
|
|
|
98
98
|
&:not(.audit-form-question-read--readonly) {
|
|
99
99
|
&:hover,
|
|
@@ -128,8 +128,8 @@ const isResult = computed(() => !isEmpty(props.result));
|
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
.audit-form-question--clear {
|
|
131
|
-
margin-top: var(--spacing-sm);
|
|
132
131
|
cursor: pointer;
|
|
132
|
+
margin-top: var(--spacing-sm);
|
|
133
133
|
color: var(--info-color);
|
|
134
134
|
}
|
|
135
135
|
</style>
|
|
@@ -134,14 +134,14 @@ function handleQuestionTypeChange(type) {
|
|
|
134
134
|
.audit-form-question.audit-form-question-write {
|
|
135
135
|
display: flex;
|
|
136
136
|
flex-direction: column;
|
|
137
|
-
box-shadow: var(--elevation-3);
|
|
138
137
|
gap: var(--spacing-sm);
|
|
138
|
+
box-shadow: var(--elevation-3);
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
.audit-form-question-write-header {
|
|
142
142
|
display: flex;
|
|
143
|
-
align-items: center;
|
|
144
143
|
justify-content: space-between;
|
|
144
|
+
align-items: center;
|
|
145
145
|
|
|
146
146
|
&__actions {
|
|
147
147
|
display: flex;
|
|
@@ -151,11 +151,11 @@ function handleQuestionTypeChange(type) {
|
|
|
151
151
|
|
|
152
152
|
.audit-form-question-write-content-question {
|
|
153
153
|
display: grid;
|
|
154
|
+
grid-template-columns: 3fr 1fr;
|
|
155
|
+
gap: var(--spacing-sm);
|
|
154
156
|
margin-right: calc(
|
|
155
157
|
24px + var(--spacing-sm)
|
|
156
158
|
); // delete icon action for type "options"
|
|
157
159
|
margin-bottom: var(--spacing-sm);
|
|
158
|
-
grid-template-columns: 3fr 1fr;
|
|
159
|
-
gap: var(--spacing-sm);
|
|
160
160
|
}
|
|
161
161
|
</style>
|
|
@@ -122,10 +122,10 @@ onMounted(() => {
|
|
|
122
122
|
|
|
123
123
|
<style lang="scss" scoped>
|
|
124
124
|
.audit-form-question {
|
|
125
|
-
|
|
125
|
+
box-shadow: var(--elevation-1);
|
|
126
126
|
border-radius: var(--border-radius);
|
|
127
127
|
background: var(--dp-22-surface-color);
|
|
128
|
-
|
|
128
|
+
padding: var(--spacing-sm);
|
|
129
129
|
|
|
130
130
|
// override audit-form-question-read-wrapper specificity for hover
|
|
131
131
|
&.audit-form-question--answered {
|
|
@@ -115,9 +115,9 @@ onMounted(() => v$.value.$touch());
|
|
|
115
115
|
<style lang="scss" scoped>
|
|
116
116
|
.audit-form-question-score-write {
|
|
117
117
|
display: grid;
|
|
118
|
-
margin-right: calc(var(--spacing-sm) + 24px); // icon offset
|
|
119
118
|
grid-template-columns: 100px 100px;
|
|
120
119
|
gap: var(--spacing-sm);
|
|
120
|
+
margin-right: calc(var(--spacing-sm) + 24px); // icon offset
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
.audit-form-question-score-read {
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
v-if="props.previewMode && model"
|
|
4
|
-
>
|
|
2
|
+
<div v-if="props.previewMode && model">
|
|
5
3
|
<wt-label>
|
|
6
4
|
{{ t('vocabulary.description') }}
|
|
7
5
|
</wt-label>
|
|
@@ -19,7 +17,7 @@
|
|
|
19
17
|
</template>
|
|
20
18
|
|
|
21
19
|
<script setup lang="ts">
|
|
22
|
-
import {useI18n} from
|
|
20
|
+
import { useI18n } from 'vue-i18n';
|
|
23
21
|
import { WtTextarea, WtLabel } from '../../../../../../../components/index';
|
|
24
22
|
|
|
25
23
|
const model = defineModel<string>();
|
|
@@ -31,6 +29,4 @@ const props = defineProps<{
|
|
|
31
29
|
const { t } = useI18n();
|
|
32
30
|
</script>
|
|
33
31
|
|
|
34
|
-
<style scoped lang="scss">
|
|
35
|
-
|
|
36
|
-
</style>
|
|
32
|
+
<style scoped lang="scss"></style>
|
package/src/modules/Filters/v2/filter-presets/components/_shared/input-fields/preset-name-field.vue
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
</template>
|
|
9
9
|
|
|
10
10
|
<script setup lang="ts">
|
|
11
|
-
import {useI18n} from
|
|
12
|
-
import {Validation} from '@vuelidate/core';
|
|
11
|
+
import { useI18n } from 'vue-i18n';
|
|
12
|
+
import { Validation } from '@vuelidate/core';
|
|
13
13
|
import { WtInput } from '../../../../../../../components/index';
|
|
14
14
|
|
|
15
15
|
type ModelValue = string;
|
|
@@ -23,9 +23,6 @@ type Props = {
|
|
|
23
23
|
const props = defineProps<Props>();
|
|
24
24
|
|
|
25
25
|
const { t } = useI18n();
|
|
26
|
-
|
|
27
26
|
</script>
|
|
28
27
|
|
|
29
|
-
<style scoped lang="scss">
|
|
30
|
-
|
|
31
|
-
</style>
|
|
28
|
+
<style scoped lang="scss"></style>
|
|
@@ -3,12 +3,10 @@
|
|
|
3
3
|
<wt-label>
|
|
4
4
|
{{ t('webitelUI.filters.filterName') }}
|
|
5
5
|
</wt-label>
|
|
6
|
-
<dynamic-filter-panel-wrapper
|
|
7
|
-
size="sm"
|
|
8
|
-
>
|
|
6
|
+
<dynamic-filter-panel-wrapper size="sm">
|
|
9
7
|
<template #filters>
|
|
10
8
|
<dynamic-filter-preview
|
|
11
|
-
v-for="
|
|
9
|
+
v-for="filter of props.filters"
|
|
12
10
|
:key="filter.name"
|
|
13
11
|
:filter="filter"
|
|
14
12
|
dummy
|
|
@@ -24,19 +22,16 @@
|
|
|
24
22
|
</template>
|
|
25
23
|
</dynamic-filter-panel-wrapper>
|
|
26
24
|
</div>
|
|
27
|
-
|
|
28
25
|
</template>
|
|
29
26
|
|
|
30
27
|
<script setup lang="ts">
|
|
31
|
-
import {useI18n} from
|
|
28
|
+
import { useI18n } from 'vue-i18n';
|
|
32
29
|
|
|
33
30
|
import { WtLabel } from '../../../../../../components/index';
|
|
34
|
-
import type {IFilter} from
|
|
35
|
-
import DynamicFilterPanelWrapper
|
|
36
|
-
|
|
37
|
-
import
|
|
38
|
-
import DynamicFilterPreview
|
|
39
|
-
from "../../../filters/components/preview/dynamic-filter-preview.vue";
|
|
31
|
+
import type { IFilter } from '../../../filters';
|
|
32
|
+
import DynamicFilterPanelWrapper from '../../../filters/components/dynamic-filter-panel-wrapper.vue';
|
|
33
|
+
import { FilterOptionToPreviewComponentMap } from '../../../filters/components/filter-options';
|
|
34
|
+
import DynamicFilterPreview from '../../../filters/components/preview/dynamic-filter-preview.vue';
|
|
40
35
|
|
|
41
36
|
type Props = {
|
|
42
37
|
filters: IFilter[];
|
|
@@ -45,8 +40,6 @@ type Props = {
|
|
|
45
40
|
const props = defineProps<Props>();
|
|
46
41
|
|
|
47
42
|
const { t } = useI18n();
|
|
48
|
-
|
|
49
43
|
</script>
|
|
50
44
|
|
|
51
|
-
<style scoped lang="scss">
|
|
52
|
-
</style>
|
|
45
|
+
<style scoped lang="scss"></style>
|
package/src/modules/Filters/v2/filter-presets/components/apply-preset/apply-preset-action.vue
CHANGED
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
@close="showPresetsList = false"
|
|
11
11
|
>
|
|
12
12
|
<template #title>
|
|
13
|
-
{{
|
|
13
|
+
{{
|
|
14
|
+
`${t('vocabulary.apply')} ${t('webitelUI.filters.presets.preset').toLowerCase()}`
|
|
15
|
+
}}
|
|
14
16
|
</template>
|
|
15
17
|
|
|
16
18
|
<template #main>
|
|
@@ -28,7 +30,7 @@
|
|
|
28
30
|
|
|
29
31
|
<section class="available-presets-list">
|
|
30
32
|
<preset-preview
|
|
31
|
-
v-for="
|
|
33
|
+
v-for="preset of dataList"
|
|
32
34
|
:key="preset.id"
|
|
33
35
|
collapsed
|
|
34
36
|
:is-selected="preset === selectedPreset"
|
|
@@ -38,12 +40,12 @@
|
|
|
38
40
|
@preset:delete="() => deletePreset(preset)"
|
|
39
41
|
/>
|
|
40
42
|
</section>
|
|
41
|
-
<!-- TODO: infinite scroll -->
|
|
42
|
-
<!-- <wt-intersection-observer-->
|
|
43
|
-
<!-- :loading="isLoading"-->
|
|
44
|
-
<!-- :next="false"-->
|
|
45
|
-
<!-- @next="updatePage(page + 1)"-->
|
|
46
|
-
<!-- />-->
|
|
43
|
+
<!-- TODO: infinite scroll -->
|
|
44
|
+
<!-- <wt-intersection-observer-->
|
|
45
|
+
<!-- :loading="isLoading"-->
|
|
46
|
+
<!-- :next="false"-->
|
|
47
|
+
<!-- @next="updatePage(page + 1)"-->
|
|
48
|
+
<!-- />-->
|
|
47
49
|
</section>
|
|
48
50
|
</template>
|
|
49
51
|
|
|
@@ -66,16 +68,22 @@
|
|
|
66
68
|
</template>
|
|
67
69
|
|
|
68
70
|
<script lang="ts" setup>
|
|
69
|
-
import {type StoreDefinition, storeToRefs } from
|
|
70
|
-
import {computed, inject, ref, watch, onUnmounted} from
|
|
71
|
-
import {useI18n} from
|
|
72
|
-
|
|
73
|
-
import {
|
|
74
|
-
|
|
75
|
-
|
|
71
|
+
import { type StoreDefinition, storeToRefs } from 'pinia';
|
|
72
|
+
import { computed, inject, ref, watch, onUnmounted } from 'vue';
|
|
73
|
+
import { useI18n } from 'vue-i18n';
|
|
74
|
+
|
|
75
|
+
import {
|
|
76
|
+
WtButton,
|
|
77
|
+
WtEmpty,
|
|
78
|
+
WtPopup,
|
|
79
|
+
WtSearchBar,
|
|
80
|
+
WtIconAction,
|
|
81
|
+
} from '../../../../../../components/index';
|
|
82
|
+
import { useTableEmpty } from '../../../../../TableComponentModule/composables/useTableEmpty';
|
|
83
|
+
import { IconAction } from '../../../../../../enums';
|
|
76
84
|
import PresetQueryAPI from '../../api/PresetQuery.api.ts';
|
|
77
|
-
import PresetPreview from
|
|
78
|
-
import {EnginePresetQuery} from
|
|
85
|
+
import PresetPreview from './preset-preview.vue';
|
|
86
|
+
import { EnginePresetQuery } from 'webitel-sdk';
|
|
79
87
|
|
|
80
88
|
const props = defineProps<{
|
|
81
89
|
/**
|
|
@@ -91,36 +99,29 @@ const emit = defineEmits<{
|
|
|
91
99
|
|
|
92
100
|
const eventBus = inject('$eventBus');
|
|
93
101
|
|
|
94
|
-
const {t} = useI18n();
|
|
102
|
+
const { t } = useI18n();
|
|
95
103
|
|
|
96
104
|
const showPresetsList = ref(false);
|
|
97
105
|
|
|
98
106
|
const presetsStore = props.usePresetsStore();
|
|
99
|
-
const {
|
|
100
|
-
|
|
101
|
-
error,
|
|
102
|
-
isLoading,
|
|
103
|
-
filtersManager,
|
|
104
|
-
page,
|
|
105
|
-
} = storeToRefs(presetsStore);
|
|
107
|
+
const { dataList, error, isLoading, filtersManager, page } =
|
|
108
|
+
storeToRefs(presetsStore);
|
|
106
109
|
|
|
107
|
-
const {
|
|
108
|
-
loadDataList,
|
|
109
|
-
initialize,
|
|
110
|
-
updateSize,
|
|
111
|
-
deleteEls,
|
|
112
|
-
} = presetsStore;
|
|
110
|
+
const { loadDataList, initialize, updateSize, deleteEls } = presetsStore;
|
|
113
111
|
|
|
114
112
|
updateSize(1000);
|
|
115
|
-
filtersManager.value.addFilter({
|
|
113
|
+
filtersManager.value.addFilter({
|
|
114
|
+
name: 'presetNamespace',
|
|
115
|
+
value: props.namespace,
|
|
116
|
+
});
|
|
116
117
|
|
|
117
118
|
const search = computed({
|
|
118
119
|
get: () => {
|
|
119
120
|
return filtersManager.value.getFilter('search')?.value || '';
|
|
120
121
|
},
|
|
121
122
|
set: (value) => {
|
|
122
|
-
filtersManager.value.addFilter({name: 'search', value});
|
|
123
|
-
}
|
|
123
|
+
filtersManager.value.addFilter({ name: 'search', value });
|
|
124
|
+
},
|
|
124
125
|
});
|
|
125
126
|
|
|
126
127
|
const {
|
|
@@ -138,31 +139,36 @@ const {
|
|
|
138
139
|
}),
|
|
139
140
|
});
|
|
140
141
|
|
|
141
|
-
watch(
|
|
142
|
-
|
|
142
|
+
watch(
|
|
143
|
+
showPresetsList,
|
|
144
|
+
() => {
|
|
145
|
+
initialize();
|
|
143
146
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
147
|
+
watch(showPresetsList, (value) => {
|
|
148
|
+
if (value) {
|
|
149
|
+
search.value = '';
|
|
150
|
+
/* search.value reset causes re-fetch as filter change, so
|
|
148
151
|
loadDataList() is commented.
|
|
149
152
|
TODO: implement ability to set filters "silently" and refactor this code */
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
},
|
|
153
|
+
// loadDataList();
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
},
|
|
157
|
+
{ once: true },
|
|
158
|
+
);
|
|
154
159
|
|
|
155
160
|
const selectedPreset = ref();
|
|
156
161
|
|
|
157
162
|
const applySelectedPreset = () => {
|
|
158
|
-
const filtersSnapshot =
|
|
163
|
+
const filtersSnapshot =
|
|
164
|
+
selectedPreset.value.preset['filtersManager.toString'];
|
|
159
165
|
emit('apply', filtersSnapshot);
|
|
160
166
|
|
|
161
167
|
selectedPreset.value = null;
|
|
162
168
|
showPresetsList.value = false;
|
|
163
169
|
};
|
|
164
170
|
|
|
165
|
-
const updatePreset = async ({preset, onSuccess, onFailure}) => {
|
|
171
|
+
const updatePreset = async ({ preset, onSuccess, onFailure }) => {
|
|
166
172
|
try {
|
|
167
173
|
await PresetQueryAPI.update({
|
|
168
174
|
item: { ...preset },
|
|
@@ -205,9 +211,9 @@ const deletePreset = async (preset: EnginePresetQuery) => {
|
|
|
205
211
|
|
|
206
212
|
.apply-preset-main-content {
|
|
207
213
|
display: flex;
|
|
208
|
-
height: 100%;
|
|
209
214
|
flex-direction: column;
|
|
210
215
|
gap: var(--spacing-xs);
|
|
216
|
+
height: 100%;
|
|
211
217
|
|
|
212
218
|
.wt-empty {
|
|
213
219
|
flex-grow: 1;
|
|
@@ -219,10 +225,10 @@ const deletePreset = async (preset: EnginePresetQuery) => {
|
|
|
219
225
|
@extend %wt-scrollbar;
|
|
220
226
|
|
|
221
227
|
display: flex;
|
|
222
|
-
overflow-y: auto;
|
|
223
228
|
flex-direction: column;
|
|
224
|
-
max-height: 400px;
|
|
225
229
|
gap: var(--spacing-xs);
|
|
230
|
+
max-height: 400px;
|
|
231
|
+
overflow-y: auto;
|
|
226
232
|
scrollbar-gutter: stable;
|
|
227
233
|
}
|
|
228
234
|
</style>
|
|
@@ -61,9 +61,7 @@
|
|
|
61
61
|
@update:model-value="nameAlreadyExistsError = false"
|
|
62
62
|
/>
|
|
63
63
|
|
|
64
|
-
<preset-filters-preview
|
|
65
|
-
:filters="presetFilters"
|
|
66
|
-
/>
|
|
64
|
+
<preset-filters-preview :filters="presetFilters" />
|
|
67
65
|
|
|
68
66
|
<preset-description-field
|
|
69
67
|
v-model:model-value="editDraft.description"
|
|
@@ -76,28 +74,38 @@
|
|
|
76
74
|
</template>
|
|
77
75
|
|
|
78
76
|
<script lang="ts" setup>
|
|
79
|
-
import {EnginePresetQuery} from
|
|
80
|
-
import {computed, ref} from
|
|
81
|
-
import {useVuelidate} from
|
|
82
|
-
import {required} from
|
|
83
|
-
import {AxiosError} from
|
|
84
|
-
import {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
77
|
+
import { EnginePresetQuery } from 'webitel-sdk';
|
|
78
|
+
import { computed, ref } from 'vue';
|
|
79
|
+
import { useVuelidate } from '@vuelidate/core';
|
|
80
|
+
import { required } from '@vuelidate/validators';
|
|
81
|
+
import { AxiosError } from 'axios';
|
|
82
|
+
import {
|
|
83
|
+
WtExpansionPanel,
|
|
84
|
+
WtIconAction,
|
|
85
|
+
WtRadio,
|
|
86
|
+
} from '../../../../../../components/index';
|
|
87
|
+
import { createFiltersManager } from '../../../filters/index';
|
|
88
|
+
import PresetFiltersPreview from '../_shared/preset-filters-preview.vue';
|
|
89
|
+
import PresetNameField from '../_shared/input-fields/preset-name-field.vue';
|
|
90
|
+
import PresetDescriptionField from '../_shared/input-fields/preset-description-field.vue';
|
|
89
91
|
|
|
90
92
|
type Props = {
|
|
91
93
|
preset: EnginePresetQuery;
|
|
92
94
|
isSelected: boolean;
|
|
93
95
|
collapsed: boolean;
|
|
94
|
-
}
|
|
96
|
+
};
|
|
95
97
|
|
|
96
98
|
const props = defineProps<Props>();
|
|
97
99
|
|
|
98
100
|
const emit = defineEmits<{
|
|
99
101
|
'preset:select': [EnginePresetQuery];
|
|
100
|
-
'preset:update': [
|
|
102
|
+
'preset:update': [
|
|
103
|
+
{
|
|
104
|
+
preset: EnginePresetQuery;
|
|
105
|
+
onSuccess: () => void;
|
|
106
|
+
onFailure: (err: AxiosError) => void;
|
|
107
|
+
},
|
|
108
|
+
];
|
|
101
109
|
'preset:delete': [EnginePresetQuery];
|
|
102
110
|
}>();
|
|
103
111
|
|
|
@@ -134,17 +142,21 @@ const fillDraft = () => {
|
|
|
134
142
|
|
|
135
143
|
fillDraft();
|
|
136
144
|
|
|
137
|
-
const v$ = useVuelidate(
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
+
const v$ = useVuelidate(
|
|
146
|
+
computed(() => {
|
|
147
|
+
return {
|
|
148
|
+
name: {
|
|
149
|
+
required,
|
|
150
|
+
nameAlreadyInUse: () => !nameAlreadyExistsError.value,
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
}),
|
|
154
|
+
editDraft,
|
|
155
|
+
{ $autoDirty: true },
|
|
156
|
+
);
|
|
145
157
|
v$.value.$touch();
|
|
146
158
|
|
|
147
|
-
const startEdit = ({open: openExpansion}) => {
|
|
159
|
+
const startEdit = ({ open: openExpansion }) => {
|
|
148
160
|
openExpansion();
|
|
149
161
|
editMode.value = true;
|
|
150
162
|
};
|
|
@@ -177,15 +189,15 @@ const submitEdit = () => {
|
|
|
177
189
|
<style lang="scss" scoped>
|
|
178
190
|
.preset-preview-title-wrapper {
|
|
179
191
|
display: flex;
|
|
180
|
-
min-width: 0;
|
|
181
192
|
gap: var(--spacing-xs);
|
|
193
|
+
min-width: 0;
|
|
182
194
|
}
|
|
183
195
|
|
|
184
196
|
.preset-preview-name {
|
|
185
|
-
overflow: hidden;
|
|
186
197
|
flex: 1 1 0;
|
|
187
|
-
|
|
198
|
+
overflow: hidden;
|
|
188
199
|
text-overflow: ellipsis;
|
|
200
|
+
white-space: nowrap;
|
|
189
201
|
}
|
|
190
202
|
|
|
191
203
|
.preset-preview-content {
|
package/src/modules/Filters/v2/filter-presets/components/save-preset/overwrite-preset-popup.vue
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
@close="emit('close')"
|
|
5
5
|
>
|
|
6
6
|
<template #title>
|
|
7
|
-
{{
|
|
7
|
+
{{
|
|
8
|
+
`${t('reusable.save')} ${t('webitelUI.filters.presets.preset').toLowerCase()}`
|
|
9
|
+
}}
|
|
8
10
|
</template>
|
|
9
11
|
<template #main>
|
|
10
12
|
<p class="overwrite-preset-popup-text">
|