@webitel/ui-sdk 25.4.27 → 25.4.29
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 +13 -0
- package/dist/ui-sdk.js +2 -2
- package/dist/ui-sdk.umd.cjs +1 -1
- package/package.json +1 -1
- package/src/locale/en/en.js +27 -0
- package/src/locale/ru/ru.js +26 -0
- package/src/locale/ua/ua.js +26 -0
- package/src/mixins/validationMixin/useValidation.js +3 -0
- package/src/modules/Filters/v2/filter-presets/api/PresetQuery.api.ts +88 -102
- package/src/modules/Filters/v2/filter-presets/components/_shared/preset-filters-preview.vue +7 -8
- package/src/modules/Filters/v2/filter-presets/components/apply-preset/apply-preset-action.vue +20 -3
- package/src/modules/Filters/v2/filter-presets/components/save-preset/save-preset-action.vue +22 -3
- package/src/modules/Filters/v2/filters/components/{values → filter-options}/_shared/has-options/has-option-filter-value-field.vue +1 -1
- package/src/modules/Filters/v2/filters/components/{values → filter-options}/amd-result/amd-result-filter-value-field.vue +1 -1
- package/src/modules/Filters/v2/filters/components/{values → filter-options}/cause/cause-filter-value-field.vue +1 -1
- package/src/modules/Filters/v2/filters/components/{values → filter-options}/direction/direction-filter-value-field.vue +1 -1
- package/src/modules/Filters/v2/filters/components/{values → filter-options}/has-attachment/has-attachment-filter-value-preview.vue +1 -1
- package/src/modules/Filters/v2/filters/components/{values/index.js → filter-options/index.ts} +87 -0
- package/src/modules/Filters/v2/filters/components/{values → filter-options}/tag/tag-filter-value-field.vue +1 -1
- package/src/modules/Filters/v2/filters/enums/FilterOption.ts +43 -0
- package/src/modules/Filters/v2/filters/{components/enums → enums}/amd-result-options.ts +1 -1
- package/src/modules/Filters/v2/filters/{components/enums → enums}/boolean-options.ts +1 -1
- package/src/modules/Filters/v2/filters/{components/enums → enums}/hangup-cause-options.ts +1 -1
- package/src/modules/Filters/v2/filters/{components/enums → enums}/tag-options.ts +1 -1
- package/src/modules/Filters/v2/filters/components/values/filterComponentsMap.ts +0 -147
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/_shared/composables/booleanFilterToolkit.ts +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/_shared/composables/useFromToSecToPreviewTime.ts +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/_shared/date-time-filter/date-time-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/_shared/durations/duration-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/_shared/types/BooleanFilter.ts +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/actual-reaction-time/actual-reaction-time-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/actual-reaction-time/actual-reaction-time-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/actual-resolution-time/actual-resolution-time-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/actual-resolution-time/actual-resolution-time-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/agent/agent-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/agent/agent-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/agent/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/amd-result/amd-result-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/assignee/assignee-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/assignee/assignee-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/assignee/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/author/author-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/author/author-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/author/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/cause/cause-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/close-reason-groups-case/close-reason-groups-case-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/close-reason-groups-case/close-reason-groups-case-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/close-reason-groups-case/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/contact/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/contact/contact-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/contact/contact-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/contact-group/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/contact-group/contact-group-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/contact-group/contact-group-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/created-at-from/created-at-from-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/created-at-from/created-at-from-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/created-at-to/created-at-to-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/created-at-to/created-at-to-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/direction/direction-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/gateway/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/gateway/gateway-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/gateway/gateway-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/grantee/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/grantee/grantee-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/grantee/grantee-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/has-attachment/has-attachment-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/has-file/has-file-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/has-file/has-file-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/has-rating/has-rating-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/has-rating/has-rating-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/has-transcription/has-transcription-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/has-transcription/has-transcription-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/impacted/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/impacted/impacted-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/impacted/impacted-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/priority-case/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/priority-case/priority-case-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/priority-case/priority-case-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/queue/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/queue/queue-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/queue/queue-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/rated-by/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/rated-by/rated-by-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/rated-by/rated-by-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/rating/rating-from-to-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/rating/rating-from-to-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/reaction-time/reaction-time-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/reaction-time/reaction-time-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/reporter/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/reporter/reporter-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/reporter/reporter-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/resolution-time/resolution-time-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/resolution-time/resolution-time-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/score/score-from-to-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/score/score-from-to-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/service-case/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/service-case/service-case-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/service-case/service-case-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/sla/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/sla/sla-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/sla/sla-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/sla-condition/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/sla-condition/sla-condition-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/sla-condition/sla-condition-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/source-case/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/source-case/source-case-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/source-case/source-case-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/status-case/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/status-case/status-case-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/status-case/status-case-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/tag/tag-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/talk-duration/TalkDurationFilter.d.ts +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/talk-duration/talk-duration-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/talk-duration/talk-duration-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/team/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/team/team-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/team/team-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/total-duration/TotalDurationFilter.d.ts +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/total-duration/total-duration-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/total-duration/total-duration-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/user/config.js +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/user/user-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/user/user-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/variable/variable-filter-value-field.vue +0 -0
- /package/src/modules/Filters/v2/filters/components/{values → filter-options}/variable/variable-filter-value-preview.vue +0 -0
- /package/src/modules/Filters/v2/filters/{components/enums → enums}/direction-options.ts +0 -0
package/package.json
CHANGED
package/src/locale/en/en.js
CHANGED
|
@@ -631,9 +631,36 @@ export default {
|
|
|
631
631
|
preset: 'Preset | Presets',
|
|
632
632
|
overwritePresetTitle: 'A preset with this name already exists',
|
|
633
633
|
overwritePresetText: 'A preset with this name already exists. Do you want to replace it?',
|
|
634
|
+
notifications: {
|
|
635
|
+
success: {
|
|
636
|
+
/* suka ebuchij linked(,param) ne praciuje */
|
|
637
|
+
update: ({ linked }) => {
|
|
638
|
+
return linked('systemNotifications.success.update', {
|
|
639
|
+
entity: linked('filters.presets.preset'),
|
|
640
|
+
});
|
|
641
|
+
},
|
|
642
|
+
create: ({ linked }) => {
|
|
643
|
+
return linked('systemNotifications.success.create', {
|
|
644
|
+
entity: linked('filters.presets.preset'),
|
|
645
|
+
});
|
|
646
|
+
},
|
|
647
|
+
delete: ({ linked }) => {
|
|
648
|
+
return linked('systemNotifications.success.delete', {
|
|
649
|
+
entity: linked('filters.presets.preset'),
|
|
650
|
+
});
|
|
651
|
+
},
|
|
652
|
+
},
|
|
653
|
+
},
|
|
634
654
|
},
|
|
635
655
|
},
|
|
636
656
|
},
|
|
657
|
+
systemNotifications: {
|
|
658
|
+
success: {
|
|
659
|
+
update: ({ named }) => `The ${named('entity')} was updated`,
|
|
660
|
+
create: ({ named }) => `The ${named('entity')} was saved`,
|
|
661
|
+
delete: ({ named }) => `The ${named('entity')} was deleted`,
|
|
662
|
+
},
|
|
663
|
+
},
|
|
637
664
|
errorNotifications: {
|
|
638
665
|
chatHistoryApi: 'There was an error loading the chat history',
|
|
639
666
|
markChatProcessed: 'Failed to move the chat to “Closed”',
|
package/src/locale/ru/ru.js
CHANGED
|
@@ -628,9 +628,35 @@ export default {
|
|
|
628
628
|
preset: 'Пресет | Пресеты',
|
|
629
629
|
overwritePresetTitle: 'Пресет с таким названием уже существует',
|
|
630
630
|
overwritePresetText: 'Пресет с таким названием уже существует. Хотите его заменить?',
|
|
631
|
+
notifications: {
|
|
632
|
+
success: {
|
|
633
|
+
update: ({ linked }) => {
|
|
634
|
+
return linked('systemNotifications.success.update', {
|
|
635
|
+
entity: linked('filters.presets.preset'),
|
|
636
|
+
});
|
|
637
|
+
},
|
|
638
|
+
create: ({ linked }) => {
|
|
639
|
+
return linked('systemNotifications.success.create', {
|
|
640
|
+
entity: linked('filters.presets.preset'),
|
|
641
|
+
});
|
|
642
|
+
},
|
|
643
|
+
delete: ({ linked }) => {
|
|
644
|
+
return linked('systemNotifications.success.delete', {
|
|
645
|
+
entity: linked('filters.presets.preset'),
|
|
646
|
+
});
|
|
647
|
+
},
|
|
648
|
+
},
|
|
649
|
+
},
|
|
631
650
|
},
|
|
632
651
|
},
|
|
633
652
|
},
|
|
653
|
+
systemNotifications: {
|
|
654
|
+
success: {
|
|
655
|
+
update: ({ named }) => `${named('entity')} был обновлён`,
|
|
656
|
+
create: ({ named }) => `${named('entity')} был сохранён`,
|
|
657
|
+
delete: ({ named }) => `${named('entity')} был удалён`,
|
|
658
|
+
},
|
|
659
|
+
},
|
|
634
660
|
errorNotifications: {
|
|
635
661
|
chatHistoryApi: 'Произошла ошибка загрузки истории чата',
|
|
636
662
|
markChatProcessed: 'Не удалось переместить чат в “Закрытые”',
|
package/src/locale/ua/ua.js
CHANGED
|
@@ -628,9 +628,35 @@ export default {
|
|
|
628
628
|
preset: 'Пресет | Пресети',
|
|
629
629
|
overwritePresetTitle: 'Пресет з такою назвою вже існує',
|
|
630
630
|
overwritePresetText: 'Пресет з такою назвою вже існує. Бажаєте його замінити?',
|
|
631
|
+
notifications: {
|
|
632
|
+
success: {
|
|
633
|
+
update: ({ linked }) => {
|
|
634
|
+
return linked('systemNotifications.success.update', {
|
|
635
|
+
entity: linked('filters.presets.preset'),
|
|
636
|
+
});
|
|
637
|
+
},
|
|
638
|
+
create: ({ linked }) => {
|
|
639
|
+
return linked('systemNotifications.success.create', {
|
|
640
|
+
entity: linked('filters.presets.preset'),
|
|
641
|
+
});
|
|
642
|
+
},
|
|
643
|
+
delete: ({ linked }) => {
|
|
644
|
+
return linked('systemNotifications.success.delete', {
|
|
645
|
+
entity: linked('filters.presets.preset'),
|
|
646
|
+
});
|
|
647
|
+
},
|
|
648
|
+
},
|
|
649
|
+
},
|
|
631
650
|
},
|
|
632
651
|
},
|
|
633
652
|
},
|
|
653
|
+
systemNotifications: {
|
|
654
|
+
success: {
|
|
655
|
+
update: ({ named }) => `${named('entity')} було оновлено`,
|
|
656
|
+
create: ({ named }) => `${named('entity')} було збережено`,
|
|
657
|
+
delete: ({ named }) => `${named('entity')} було видалено`,
|
|
658
|
+
},
|
|
659
|
+
},
|
|
634
660
|
errorNotifications: {
|
|
635
661
|
chatHistoryApi: 'Сталася помилка завантаження історії чату',
|
|
636
662
|
markChatProcessed: 'Не вдалося перемістити чат у “Закриті”',
|
|
@@ -62,6 +62,9 @@ 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.$invalid) {
|
|
66
|
+
validationText = t('validation.nameAlreadyInUse');
|
|
67
|
+
}
|
|
65
68
|
}
|
|
66
69
|
|
|
67
70
|
if (customValidators?.value) {
|
|
@@ -1,12 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
EngineCreatePresetQueryRequest,
|
|
3
|
+
EnginePresetQuery,
|
|
4
|
+
PresetQueryServiceApiFactory,
|
|
5
|
+
} from 'webitel-sdk';
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
getDefaultGetListResponse,
|
|
9
|
+
getDefaultGetParams,
|
|
10
|
+
getDefaultInstance,
|
|
11
|
+
getDefaultOpenAPIConfig,
|
|
12
|
+
} from '../../../../../api/defaults/index';
|
|
3
13
|
import applyTransform, {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
14
|
+
camelToSnake,
|
|
15
|
+
merge,
|
|
16
|
+
notify,
|
|
17
|
+
skipIf,
|
|
18
|
+
snakeToCamel,
|
|
19
|
+
starToSearch,
|
|
10
20
|
} from '../../../../../api/transformers/index';
|
|
11
21
|
|
|
12
22
|
const instance = getDefaultInstance();
|
|
@@ -15,117 +25,93 @@ const configuration = getDefaultOpenAPIConfig();
|
|
|
15
25
|
const service = PresetQueryServiceApiFactory(configuration, '', instance);
|
|
16
26
|
|
|
17
27
|
type GetPresetListRequestConfig = {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
28
|
+
transformers: {
|
|
29
|
+
useStarToSearch?: boolean;
|
|
30
|
+
};
|
|
21
31
|
};
|
|
22
32
|
|
|
23
33
|
const getPresetList = async (params, config: GetPresetListRequestConfig) => {
|
|
34
|
+
const useStarToSearch = config?.transformers?.useStarToSearch ?? true;
|
|
24
35
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
size,
|
|
30
|
-
search,
|
|
31
|
-
sort,
|
|
32
|
-
fields,
|
|
33
|
-
presetNamespace,
|
|
34
|
-
id,
|
|
35
|
-
} = applyTransform(params, [
|
|
36
|
-
merge(getDefaultGetParams()),
|
|
37
|
-
(params) => useStarToSearch ? starToSearch('search')(params) : params,
|
|
36
|
+
const { page, size, search, sort, fields, presetNamespace, id } =
|
|
37
|
+
applyTransform(params, [
|
|
38
|
+
merge(getDefaultGetParams()),
|
|
39
|
+
(params) => (useStarToSearch ? starToSearch('search')(params) : params),
|
|
38
40
|
]);
|
|
39
41
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
42
|
+
try {
|
|
43
|
+
const response = await service.searchPresetQuery(
|
|
44
|
+
page,
|
|
45
|
+
size,
|
|
46
|
+
search,
|
|
47
|
+
sort || '-created_at',
|
|
48
|
+
fields || ['id', 'name', 'preset', 'description'],
|
|
49
|
+
id,
|
|
50
|
+
);
|
|
51
|
+
const { items, next } = applyTransform(response.data, [
|
|
52
|
+
snakeToCamel(),
|
|
53
|
+
merge(getDefaultGetListResponse()),
|
|
54
|
+
]);
|
|
55
|
+
return {
|
|
56
|
+
items: applyTransform(items, [
|
|
57
|
+
(items) =>
|
|
58
|
+
items.filter(({ preset }) => preset.namespace === presetNamespace),
|
|
59
|
+
]),
|
|
60
|
+
next,
|
|
61
|
+
};
|
|
62
|
+
} catch (err) {
|
|
63
|
+
throw applyTransform(err, [notify]);
|
|
64
|
+
}
|
|
64
65
|
};
|
|
65
66
|
|
|
66
|
-
const addPreset = async ({
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
const addPreset = async ({
|
|
68
|
+
preset,
|
|
69
|
+
namespace,
|
|
70
|
+
}: {
|
|
71
|
+
preset: EngineCreatePresetQueryRequest;
|
|
72
|
+
namespace: string;
|
|
69
73
|
}): Promise<EnginePresetQuery> => {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
throw applyTransform(err, [
|
|
84
|
-
skipIf(notify, (err) => err.status === 409),
|
|
85
|
-
]);
|
|
86
|
-
}
|
|
74
|
+
const item = applyTransform(preset, [
|
|
75
|
+
camelToSnake(),
|
|
76
|
+
(item) => {
|
|
77
|
+
item.preset.namespace = namespace;
|
|
78
|
+
return item;
|
|
79
|
+
},
|
|
80
|
+
]);
|
|
81
|
+
try {
|
|
82
|
+
const response = await service.createPresetQuery(item);
|
|
83
|
+
return applyTransform(response.data, [snakeToCamel()]);
|
|
84
|
+
} catch (err) {
|
|
85
|
+
throw applyTransform(err, [skipIf(notify, (err) => err.status === 409)]);
|
|
86
|
+
}
|
|
87
87
|
};
|
|
88
88
|
|
|
89
|
-
const updatePreset = async ({item: itemInstance, id}) => {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
]);
|
|
98
|
-
} catch (err) {
|
|
99
|
-
throw applyTransform(err, [
|
|
100
|
-
skipIf(notify, (err) => err.status === 409),
|
|
101
|
-
]);
|
|
102
|
-
}
|
|
89
|
+
const updatePreset = async ({ item: itemInstance, id }) => {
|
|
90
|
+
const item = applyTransform(itemInstance, [camelToSnake()]);
|
|
91
|
+
try {
|
|
92
|
+
const response = await service.updatePresetQuery(id, item);
|
|
93
|
+
return applyTransform(response.data, [snakeToCamel()]);
|
|
94
|
+
} catch (err) {
|
|
95
|
+
throw applyTransform(err, [skipIf(notify, (err) => err.status === 409)]);
|
|
96
|
+
}
|
|
103
97
|
};
|
|
104
98
|
|
|
105
|
-
const deletePreset = async ({id}) => {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
notify,
|
|
113
|
-
]);
|
|
114
|
-
}
|
|
99
|
+
const deletePreset = async ({ id }) => {
|
|
100
|
+
try {
|
|
101
|
+
const response = await service.deletePresetQuery(id);
|
|
102
|
+
return applyTransform(response.data, []);
|
|
103
|
+
} catch (err) {
|
|
104
|
+
throw applyTransform(err, [notify]);
|
|
105
|
+
}
|
|
115
106
|
};
|
|
116
107
|
|
|
117
108
|
const PresetQueryAPI = {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
109
|
+
getList: getPresetList,
|
|
110
|
+
add: addPreset,
|
|
111
|
+
update: updatePreset,
|
|
112
|
+
delete: deletePreset,
|
|
122
113
|
};
|
|
123
114
|
|
|
124
|
-
export {
|
|
125
|
-
getPresetList,
|
|
126
|
-
addPreset,
|
|
127
|
-
updatePreset,
|
|
128
|
-
deletePreset,
|
|
129
|
-
};
|
|
115
|
+
export { addPreset, deletePreset,getPresetList, updatePreset };
|
|
130
116
|
|
|
131
117
|
export default PresetQueryAPI;
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
>
|
|
14
14
|
<template #info>
|
|
15
15
|
<component
|
|
16
|
-
:is="
|
|
16
|
+
:is="FilterOptionToPreviewComponentMap[filter.name]"
|
|
17
17
|
:value="filter.value"
|
|
18
18
|
>
|
|
19
19
|
</component>
|
|
@@ -27,12 +27,14 @@
|
|
|
27
27
|
|
|
28
28
|
<script setup lang="ts">
|
|
29
29
|
import {useI18n} from "vue-i18n";
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
|
|
31
|
+
import { WtLabel } from '../../../../../../components/index';
|
|
32
|
+
import type {IFilter} from "../../../filters";
|
|
32
33
|
import DynamicFilterPanelWrapper
|
|
33
34
|
from "../../../filters/components/dynamic-filter-panel-wrapper.vue";
|
|
34
|
-
import
|
|
35
|
-
import
|
|
35
|
+
import { FilterOptionToPreviewComponentMap} from "../../../filters/components/filter-options";
|
|
36
|
+
import DynamicFilterPreview
|
|
37
|
+
from "../../../filters/components/preview/dynamic-filter-preview.vue";
|
|
36
38
|
|
|
37
39
|
type Props = {
|
|
38
40
|
filters: IFilter[];
|
|
@@ -45,7 +47,4 @@ const { t } = useI18n();
|
|
|
45
47
|
</script>
|
|
46
48
|
|
|
47
49
|
<style scoped lang="scss">
|
|
48
|
-
.preset-filters-preview {
|
|
49
|
-
|
|
50
|
-
}
|
|
51
50
|
</style>
|
package/src/modules/Filters/v2/filter-presets/components/apply-preset/apply-preset-action.vue
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
:preset="preset"
|
|
36
36
|
@preset:select="selectedPreset = preset"
|
|
37
37
|
@preset:update="updatePreset"
|
|
38
|
-
@preset:delete="() =>
|
|
38
|
+
@preset:delete="() => deletePreset(preset)"
|
|
39
39
|
/>
|
|
40
40
|
</section>
|
|
41
41
|
<!-- TODO: infinite scroll -->
|
|
@@ -66,10 +66,11 @@
|
|
|
66
66
|
</template>
|
|
67
67
|
|
|
68
68
|
<script lang="ts" setup>
|
|
69
|
+
import {type StoreDefinition, storeToRefs } from "pinia";
|
|
69
70
|
import {computed, inject, ref, watch} from "vue";
|
|
70
71
|
import {useI18n} from "vue-i18n";
|
|
71
|
-
|
|
72
|
-
import {WtButton, WtIconBtn, WtPopup, WtSearchBar
|
|
72
|
+
|
|
73
|
+
import {WtButton, WtEmpty,WtIconBtn, WtPopup, WtSearchBar} from "../../../../../../components/index";
|
|
73
74
|
import {useTableEmpty} from "../../../../../TableComponentModule/composables/useTableEmpty";
|
|
74
75
|
import PresetQueryAPI from '../../api/PresetQuery.api.ts';
|
|
75
76
|
import PresetPreview from "./preset-preview.vue";
|
|
@@ -158,6 +159,12 @@ const updatePreset = async ({preset, onSuccess, onFailure}) => {
|
|
|
158
159
|
item: { ...preset, section: props.namespace },
|
|
159
160
|
id: preset.id,
|
|
160
161
|
});
|
|
162
|
+
eventBus.$emit('notification', {
|
|
163
|
+
type: 'success',
|
|
164
|
+
text: t('systemNotifications.success.update', {
|
|
165
|
+
entity: t('webitelUI.filters.presets.preset').toLowerCase(),
|
|
166
|
+
}),
|
|
167
|
+
});
|
|
161
168
|
onSuccess();
|
|
162
169
|
return loadDataList();
|
|
163
170
|
} catch (err) {
|
|
@@ -165,6 +172,16 @@ const updatePreset = async ({preset, onSuccess, onFailure}) => {
|
|
|
165
172
|
throw err;
|
|
166
173
|
}
|
|
167
174
|
};
|
|
175
|
+
|
|
176
|
+
const deletePreset = async (preset) => {
|
|
177
|
+
await deleteEls([preset.id]);
|
|
178
|
+
eventBus.$emit('notification', {
|
|
179
|
+
type: 'success',
|
|
180
|
+
text: t('systemNotifications.success.delete', {
|
|
181
|
+
entity: t('webitelUI.filters.presets.preset').toLowerCase(),
|
|
182
|
+
}),
|
|
183
|
+
});
|
|
184
|
+
};
|
|
168
185
|
</script>
|
|
169
186
|
|
|
170
187
|
<style lang="scss" scoped>
|
|
@@ -25,13 +25,15 @@
|
|
|
25
25
|
</template>
|
|
26
26
|
|
|
27
27
|
<script lang="ts" setup>
|
|
28
|
-
import {computed,
|
|
28
|
+
import {computed, inject, type Ref,ref} from 'vue';
|
|
29
|
+
import {useI18n} from "vue-i18n";
|
|
29
30
|
import {EnginePresetQuery} from "webitel-sdk";
|
|
31
|
+
|
|
30
32
|
import { WtIconBtn } from '../../../../../../components/index';
|
|
33
|
+
import {IFiltersManager} from "../../../filters/index";
|
|
31
34
|
import {addPreset, getPresetList, updatePreset} from '../../api/PresetQuery.api.ts';
|
|
32
|
-
import SavePresetPopup, {SubmitConfig} from "./save-preset-popup.vue";
|
|
33
35
|
import OverwritePresetPopup from "./overwrite-preset-popup.vue";
|
|
34
|
-
import {
|
|
36
|
+
import SavePresetPopup, {SubmitConfig} from "./save-preset-popup.vue";
|
|
35
37
|
|
|
36
38
|
const props = defineProps<{
|
|
37
39
|
/**
|
|
@@ -41,6 +43,10 @@ const props = defineProps<{
|
|
|
41
43
|
filtersManager: IFiltersManager;
|
|
42
44
|
}>();
|
|
43
45
|
|
|
46
|
+
const eventBus = inject('$eventBus');
|
|
47
|
+
|
|
48
|
+
const { t } = useI18n();
|
|
49
|
+
|
|
44
50
|
/**
|
|
45
51
|
* disable "save" btn if there's nothing to save
|
|
46
52
|
* */
|
|
@@ -61,6 +67,13 @@ const presetToOverwriteWith: Ref<EnginePresetQuery | null> = ref(null);
|
|
|
61
67
|
const handlePresetSubmit = async (preset: EnginePresetQuery, { onCompleted }: SubmitConfig) => {
|
|
62
68
|
try {
|
|
63
69
|
await addPreset({ preset, namespace: props.namespace });
|
|
70
|
+
|
|
71
|
+
eventBus.$emit('notification', {
|
|
72
|
+
type: 'success', text: t('systemNotifications.success.create', {
|
|
73
|
+
entity: t('webitelUI.filters.presets.preset').toLowerCase(),
|
|
74
|
+
}),
|
|
75
|
+
});
|
|
76
|
+
|
|
64
77
|
showSaveForm.value = false;
|
|
65
78
|
} catch (err) {
|
|
66
79
|
if (err?.status === 409) {
|
|
@@ -88,6 +101,12 @@ const handlePresetOverwriteConfirmation = async ({ onCompleted }: SubmitConfig)
|
|
|
88
101
|
},
|
|
89
102
|
});
|
|
90
103
|
|
|
104
|
+
eventBus.$emit('notification', {
|
|
105
|
+
type: 'success', text: t('systemNotifications.success.update', {
|
|
106
|
+
entity: t('webitelUI.filters.presets.preset').toLowerCase(),
|
|
107
|
+
}),
|
|
108
|
+
});
|
|
109
|
+
|
|
91
110
|
presetToOverwriteWith.value = null;
|
|
92
111
|
showSaveForm.value = false;
|
|
93
112
|
} finally {
|
|
@@ -17,7 +17,7 @@ import {computed, useAttrs} from 'vue';
|
|
|
17
17
|
import { useI18n } from 'vue-i18n';
|
|
18
18
|
|
|
19
19
|
import WtSelect from '../../../../../../../../components/wt-select/wt-select.vue';
|
|
20
|
-
import { BooleanOptions } from '
|
|
20
|
+
import { BooleanOptions } from '../../../../enums/boolean-options';
|
|
21
21
|
|
|
22
22
|
const model = defineModel<boolean | null>();
|
|
23
23
|
|
|
@@ -19,7 +19,7 @@ import { computed, watch } from 'vue';
|
|
|
19
19
|
import { useI18n } from 'vue-i18n';
|
|
20
20
|
|
|
21
21
|
import WtSelect from '../../../../../../../components/wt-select/wt-select.vue';
|
|
22
|
-
import { AmdResultOptions } from '
|
|
22
|
+
import { AmdResultOptions } from '../../../enums/amd-result-options';
|
|
23
23
|
|
|
24
24
|
const model = defineModel<string>();
|
|
25
25
|
const { t } = useI18n();
|
|
@@ -19,7 +19,7 @@ import { computed, watch } from 'vue';
|
|
|
19
19
|
import { useI18n } from 'vue-i18n';
|
|
20
20
|
|
|
21
21
|
import WtSelect from '../../../../../../../components/wt-select/wt-select.vue';
|
|
22
|
-
import { HangupCauseOptions } from '
|
|
22
|
+
import { HangupCauseOptions } from '../../../enums/hangup-cause-options';
|
|
23
23
|
|
|
24
24
|
const model = defineModel<string>();
|
|
25
25
|
const { t } = useI18n();
|
|
@@ -18,7 +18,7 @@ import { computed, watch } from 'vue';
|
|
|
18
18
|
import { useI18n } from 'vue-i18n';
|
|
19
19
|
|
|
20
20
|
import WtSelect from '../../../../../../../components/wt-select/wt-select.vue';
|
|
21
|
-
import { DirectionOptions } from '
|
|
21
|
+
import { DirectionOptions } from '../../../enums/direction-options';
|
|
22
22
|
|
|
23
23
|
const model = defineModel<string>();
|
|
24
24
|
const { t } = useI18n();
|
package/src/modules/Filters/v2/filters/components/{values/index.js → filter-options/index.ts}
RENAMED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type {Component} from "vue";
|
|
2
|
+
|
|
1
3
|
import ActualReactionTimeFilter from './actual-reaction-time/actual-reaction-time-filter-value-field.vue';
|
|
2
4
|
import ActualReactionTimeFilterPreview from './actual-reaction-time/actual-reaction-time-filter-value-preview.vue';
|
|
3
5
|
import ActualResolutionTimeFilter from './actual-resolution-time/actual-resolution-time-filter-value-field.vue';
|
|
@@ -24,6 +26,7 @@ import CreatedAtToFilter from './created-at-to/created-at-to-filter-value-field.
|
|
|
24
26
|
import CreatedAtToFilterPreview from './created-at-to/created-at-to-filter-value-preview.vue';
|
|
25
27
|
import DirectionFilter from './direction/direction-filter-value-field.vue';
|
|
26
28
|
import DirectionFilterPreview from './direction/direction-filter-value-preview.vue';
|
|
29
|
+
import {FilterOption} from "../../enums/FilterOption";
|
|
27
30
|
import GatewayFilter from './gateway/gateway-filter-value-field.vue';
|
|
28
31
|
import GatewayFilterPreview from './gateway/gateway-filter-value-preview.vue';
|
|
29
32
|
import GranteeFilter from './grantee/grantee-filter-value-field.vue';
|
|
@@ -157,3 +160,87 @@ export {
|
|
|
157
160
|
VariableFilter,
|
|
158
161
|
VariableFilterPreview,
|
|
159
162
|
};
|
|
163
|
+
|
|
164
|
+
export const FilterOptionToValueComponentMap: Record<FilterOption, Component> = {
|
|
165
|
+
[FilterOption.Agent]: AgentFilter,
|
|
166
|
+
[FilterOption.AmdResult]: AmdResultFilter,
|
|
167
|
+
[FilterOption.Contact]: ContactFilter,
|
|
168
|
+
[FilterOption.Direction]: DirectionFilter,
|
|
169
|
+
[FilterOption.Rated]: HasRatingFilterValueField,
|
|
170
|
+
[FilterOption.Gateway]: GatewayFilter,
|
|
171
|
+
[FilterOption.Grantee]: GranteeFilter,
|
|
172
|
+
[FilterOption.Cause]: CauseFilter,
|
|
173
|
+
[FilterOption.Queue]: QueueFilter,
|
|
174
|
+
[FilterOption.RatedBy]: RatedByFilter,
|
|
175
|
+
[FilterOption.HasFile]: HasFileFilter,
|
|
176
|
+
[FilterOption.Score]: ScoreFilter,
|
|
177
|
+
[FilterOption.Tag]: TagFilter,
|
|
178
|
+
[FilterOption.TalkDuration]: TalkDurationFilter,
|
|
179
|
+
[FilterOption.Team]: TeamFilter,
|
|
180
|
+
[FilterOption.TotalDuration]: TotalDurationFilter,
|
|
181
|
+
[FilterOption.HasTranscription]: HasTranscriptionFilter,
|
|
182
|
+
[FilterOption.User]: UserFilter,
|
|
183
|
+
[FilterOption.Variable]: VariableFilter,
|
|
184
|
+
[FilterOption.CreatedAtFrom]: CreatedAtFromFilter,
|
|
185
|
+
[FilterOption.CreatedAtTo]: CreatedAtToFilter,
|
|
186
|
+
[FilterOption.Status]: CaseStatusFilter,
|
|
187
|
+
[FilterOption.Source]: CaseSourceFilter,
|
|
188
|
+
[FilterOption.Service]: CaseServiceFilter,
|
|
189
|
+
[FilterOption.Author]: AuthorFilter,
|
|
190
|
+
[FilterOption.Reporter]: ReporterFilter,
|
|
191
|
+
[FilterOption.Impacted]: ImpactedFilter,
|
|
192
|
+
[FilterOption.Assignee]: AssigneeFilter,
|
|
193
|
+
[FilterOption.ContactGroup]: ContactGroupFilter,
|
|
194
|
+
[FilterOption.Priority]: CasePriorityFilter,
|
|
195
|
+
[FilterOption.CloseReasonGroups]: CloseReasonGroupsCaseFilter,
|
|
196
|
+
[FilterOption.Rating]: RatingFromToFilter,
|
|
197
|
+
[FilterOption.Sla]: SlaFilter,
|
|
198
|
+
[FilterOption.SlaCondition]: SlaConditionFilter,
|
|
199
|
+
[FilterOption.ReactionTime]: ReactionTimeFilter,
|
|
200
|
+
[FilterOption.ResolutionTime]: ResolutionTimeFilter,
|
|
201
|
+
[FilterOption.ActualReactionTime]: ActualReactionTimeFilter,
|
|
202
|
+
[FilterOption.ActualResolutionTime]: ActualResolutionTimeFilter,
|
|
203
|
+
[FilterOption.HasAttachment]: HasAttachmentFilter,
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
export const FilterOptionToPreviewComponentMap: Record<FilterOption, Component> = {
|
|
207
|
+
[FilterOption.Agent]: AgentFilterPreview,
|
|
208
|
+
[FilterOption.AmdResult]: AmdResultFilterPreview,
|
|
209
|
+
[FilterOption.Contact]: ContactFilterPreview,
|
|
210
|
+
[FilterOption.Direction]: DirectionFilterPreview,
|
|
211
|
+
[FilterOption.Rated]: HasRatingFilterValuePreview,
|
|
212
|
+
[FilterOption.Gateway]: GatewayFilterPreview,
|
|
213
|
+
[FilterOption.Grantee]: GranteeFilterPreview,
|
|
214
|
+
[FilterOption.Cause]: CauseFilterPreview,
|
|
215
|
+
[FilterOption.Queue]: QueueFilterPreview,
|
|
216
|
+
[FilterOption.RatedBy]: RatedByFilterPreview,
|
|
217
|
+
[FilterOption.HasFile]: HasFileFilterPreview,
|
|
218
|
+
[FilterOption.Score]: ScoreFilterPreview,
|
|
219
|
+
[FilterOption.Tag]: TagFilterPreview,
|
|
220
|
+
[FilterOption.TalkDuration]: TalkDurationFilterPreview,
|
|
221
|
+
[FilterOption.Team]: TeamFilterPreview,
|
|
222
|
+
[FilterOption.TotalDuration]: TotalDurationFilterPreview,
|
|
223
|
+
[FilterOption.HasTranscription]: HasTranscriptionFilterPreview,
|
|
224
|
+
[FilterOption.User]: UserFilterPreview,
|
|
225
|
+
[FilterOption.Variable]: VariableFilterPreview,
|
|
226
|
+
[FilterOption.CreatedAtFrom]: CreatedAtFromFilterPreview,
|
|
227
|
+
[FilterOption.CreatedAtTo]: CreatedAtToFilterPreview,
|
|
228
|
+
[FilterOption.Status]: CaseStatusFilterPreview,
|
|
229
|
+
[FilterOption.Source]: CaseSourceFilterPreview,
|
|
230
|
+
[FilterOption.Service]: CaseServiceFilterPreview,
|
|
231
|
+
[FilterOption.Author]: AuthorFilterPreview,
|
|
232
|
+
[FilterOption.Reporter]: ReporterFilterPreview,
|
|
233
|
+
[FilterOption.Impacted]: ImpactedFilterPreview,
|
|
234
|
+
[FilterOption.Assignee]: AssigneeFilterPreview,
|
|
235
|
+
[FilterOption.ContactGroup]: ContactGroupFilterPreview,
|
|
236
|
+
[FilterOption.Priority]: CasePriorityFilterPreview,
|
|
237
|
+
[FilterOption.CloseReasonGroups]: CloseReasonGroupsCaseFilterPreview,
|
|
238
|
+
[FilterOption.Rating]: RatingFromToFilterPreview,
|
|
239
|
+
[FilterOption.Sla]: SlaFilterPreview,
|
|
240
|
+
[FilterOption.SlaCondition]: SlaConditionFilterPreview,
|
|
241
|
+
[FilterOption.ReactionTime]: ReactionTimeFilterPreview,
|
|
242
|
+
[FilterOption.ResolutionTime]: ResolutionTimeFilterPreview,
|
|
243
|
+
[FilterOption.ActualReactionTime]: ActualReactionTimeFilterPreview,
|
|
244
|
+
[FilterOption.ActualResolutionTime]: ActualResolutionTimeFilterPreview,
|
|
245
|
+
[FilterOption.HasAttachment]: HasAttachmentFilterPreview,
|
|
246
|
+
};
|
|
@@ -19,7 +19,7 @@ import { computed, watch } from 'vue';
|
|
|
19
19
|
import { useI18n } from 'vue-i18n';
|
|
20
20
|
|
|
21
21
|
import WtSelect from '../../../../../../../components/wt-select/wt-select.vue';
|
|
22
|
-
import { TagOptions } from '
|
|
22
|
+
import { TagOptions } from '../../../enums/tag-options';
|
|
23
23
|
|
|
24
24
|
const model = defineModel<string>();
|
|
25
25
|
const { t } = useI18n();
|