@webitel/ui-datalist 1.1.57 → 1.1.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/modules/card/composables/useCardAnyFieldEditedWatcher.ts +6 -2
- package/src/modules/card/composables/useCardComponent.ts +4 -1
- package/src/modules/card/composables/useCardSaveAction.ts +2 -0
- package/src/modules/card/composables/useCardValidation.ts +6 -1
- package/src/modules/card/composables/useNestedCardComponent.ts +4 -1
- package/src/modules/filter-presets/api/PresetQuery.ts +32 -9
- package/src/modules/filter-presets/components/apply-preset/apply-preset-action.vue +15 -5
- package/src/modules/filter-presets/components/apply-preset/preset-preview.vue +7 -4
- package/src/modules/filter-presets/components/save-preset/save-preset-action.vue +11 -3
- package/src/modules/filter-presets/types/PresetSnapshot.ts +6 -0
- package/src/modules/filters/classes/Filter.ts +1 -1
- package/src/modules/filters/classes/FiltersManager.ts +25 -17
- package/src/modules/filters/components/config/dynamic-view/dynamic-filter-config-form.vue +12 -11
- package/src/modules/filters/components/config/dynamic-view/dynamic-filter-config-view.vue +3 -1
- package/src/modules/filters/components/config/static-view/static-filter-field.vue +3 -1
- package/src/modules/filters/components/dynamic-filter-add-action.vue +8 -1
- package/src/modules/filters/components/preview/dynamic-filter-preview.vue +12 -2
- package/src/modules/filters/components/search-bar/dynamic-filter-search.vue +10 -9
- package/src/modules/filters/components/table-filters-panel.vue +4 -3
- package/src/modules/filters/components/types/Filter.types.ts +4 -1
- package/src/modules/filters/composables/useFilterConfigsToolkit.ts +2 -1
- package/src/modules/filters/createTableFiltersStore.ts +1 -1
- package/src/modules/filters/modules/filterConfig/classes/FilterConfig.ts +4 -1
- package/src/modules/filters/modules/filterConfig/classes/createFilterConfig.ts +4 -1
- package/src/modules/filters/modules/filterConfig/components/_custom/filterConfig.ts +8 -4
- package/src/modules/filters/modules/filterConfig/components/_custom/type-extension-filter-value-field.vue +13 -4
- package/src/modules/filters/modules/filterConfig/components/_custom/type-extension-filter-value-preview.vue +1 -1
- package/src/modules/filters/modules/filterConfig/components/_shared/date-time-filter/date-time-options/date-time-options-filter-value-field.vue +2 -1
- package/src/modules/filters/modules/filterConfig/components/_shared/durations/duration-filter-value-field.vue +14 -9
- package/src/modules/filters/modules/filterConfig/components/_shared/has-options/has-option-filter-value-field.vue +1 -1
- package/src/modules/filters/modules/filterConfig/components/_shared/lookup-filter-preview/lookup-filter-value-preview.vue +15 -1
- package/src/modules/filters/modules/filterConfig/components/agent-status/agent-status-filter-value-preview.vue +2 -2
- package/src/modules/filters/modules/filterConfig/components/auditor/index.ts +5 -2
- package/src/modules/filters/modules/filterConfig/components/case-actual-reaction-time/case-actual-reaction-time-filter-value-preview.vue +1 -1
- package/src/modules/filters/modules/filterConfig/components/case-actual-resolution-time/case-actual-resolution-time-filter-value-preview.vue +1 -1
- package/src/modules/filters/modules/filterConfig/components/case-assignee/case-assignee-filter-value-field.vue +1 -1
- package/src/modules/filters/modules/filterConfig/components/case-assignee/filterConfig.ts +5 -3
- package/src/modules/filters/modules/filterConfig/components/case-close-reason-groups/case-close-reason-groups-filter-value-field.vue +2 -2
- package/src/modules/filters/modules/filterConfig/components/case-reaction-time/case-reaction-time-filter-value-preview.vue +1 -1
- package/src/modules/filters/modules/filterConfig/components/case-resolution-time/case-resolution-time-filter-value-preview.vue +1 -1
- package/src/modules/filters/modules/filterConfig/components/case-service/case-service-filter-value-field.vue +1 -1
- package/src/modules/filters/modules/filterConfig/components/case-sla-condition/case-sla-condition-filter-value-field.vue +2 -2
- package/src/modules/filters/modules/filterConfig/components/case-status/case-status-filter-value-field.vue +2 -2
- package/src/modules/filters/modules/filterConfig/components/contact-group/contact-group-filter-value-field.vue +6 -5
- package/src/modules/filters/modules/filterConfig/components/contact-group/index.ts +5 -2
- package/src/modules/filters/modules/filterConfig/components/contact-label/contact-label-filter-value-field.vue +1 -1
- package/src/modules/filters/modules/filterConfig/components/contact-label/index.ts +4 -2
- package/src/modules/filters/modules/filterConfig/components/contact-owner/index.ts +7 -3
- package/src/modules/filters/modules/filterConfig/components/gateway/gateway-filter-value-field.vue +1 -1
- package/src/modules/filters/modules/filterConfig/components/has-user/has-user-filter-value-field.vue +1 -1
- package/src/modules/filters/modules/filterConfig/components/queue/index.ts +5 -2
- package/src/modules/filters/modules/filterConfig/components/queue-period/queue-period-filter-value-preview.vue +2 -2
- package/src/modules/filters/modules/filterConfig/components/queue-type/queue-type-filter-value-preview.vue +2 -2
- package/src/modules/filters/modules/filterConfig/components/region/index.ts +5 -2
- package/src/modules/filters/modules/filterConfig/components/skill/index.ts +5 -2
- package/src/modules/filters/modules/filterConfig/components/supervisor/index.ts +5 -2
- package/src/modules/filters/modules/filterConfig/components/team/index.ts +6 -2
- package/src/modules/filters/scripts/utils.ts +2 -2
- package/src/modules/headers/createTableHeadersStore.ts +46 -20
- package/src/modules/permissions-page/components/permissions-tab.vue +7 -1
- package/src/modules/persist/PersistedStorage.types.ts +4 -1
- package/src/modules/persist/usePersistedStorage.ts +9 -3
- package/src/modules/scripts/utils.ts +5 -3
- package/types/.tsbuildinfo +1 -1
- package/types/modules/card/composables/useCardAnyFieldEditedWatcher.d.ts +4 -3
- package/types/modules/card/composables/useCardComponent.d.ts +2 -2
- package/types/modules/card/composables/useCardRouting.d.ts +1 -1
- package/types/modules/card/composables/useCardValidation.d.ts +3 -2
- package/types/modules/card/composables/useNestedCardComponent.d.ts +2 -2
- package/types/modules/card/stores/createCardStore.d.ts +18 -18
- package/types/modules/filter-presets/api/PresetQuery.d.ts +14 -13
- package/types/modules/filter-presets/components/_shared/input-fields/preset-description-field.vue.d.ts +3 -3
- package/types/modules/filter-presets/components/_shared/input-fields/preset-name-field.vue.d.ts +2 -2
- package/types/modules/filter-presets/components/apply-preset/apply-preset-action.vue.d.ts +1 -1
- package/types/modules/filter-presets/components/apply-preset/preset-preview.vue.d.ts +4 -4
- package/types/modules/filter-presets/components/save-preset/overwrite-preset-popup.vue.d.ts +3 -3
- package/types/modules/filter-presets/components/save-preset/save-preset-popup.vue.d.ts +3 -3
- package/types/modules/filter-presets/stores/createFilterPresetsStore.d.ts +40 -34
- package/types/modules/filter-presets/types/PresetSnapshot.d.ts +6 -0
- package/types/modules/filters/classes/Filter.d.ts +1 -1
- package/types/modules/filters/components/config/dynamic-view/dynamic-filter-config-form-label.vue.d.ts +4 -4
- package/types/modules/filters/components/config/dynamic-view/dynamic-filter-config-form-value-input.vue.d.ts +2 -2
- package/types/modules/filters/components/config/dynamic-view/dynamic-filter-config-form.vue.d.ts +5 -5
- package/types/modules/filters/components/config/dynamic-view/dynamic-filter-config-view.vue.d.ts +1 -1
- package/types/modules/filters/components/config/static-view/static-filter-field.vue.d.ts +3 -3
- package/types/modules/filters/components/dynamic-filter-add-action.vue.d.ts +1 -1
- package/types/modules/filters/components/dynamic-filter-panel-wrapper.vue.d.ts +1 -1
- package/types/modules/filters/components/preview/dynamic-filter-preview.vue.d.ts +2 -2
- package/types/modules/filters/components/search-bar/dynamic-filter-search.vue.d.ts +6 -6
- package/types/modules/filters/components/table-filters-panel.vue.d.ts +6 -6
- package/types/modules/filters/components/types/Filter.types.d.ts +3 -1
- package/types/modules/filters/composables/useFilterConfigsToolkit.d.ts +2 -1
- package/types/modules/filters/createTableFiltersStore.d.ts +23 -11
- package/types/modules/filters/modules/filterConfig/classes/FilterConfig.d.ts +3 -1
- package/types/modules/filters/modules/filterConfig/components/_custom/filterConfig.d.ts +2 -5
- package/types/modules/filters/modules/filterConfig/components/_custom/type-extension-filter-value-field.vue.d.ts +2 -2
- package/types/modules/filters/modules/filterConfig/components/_shared/date-time-filter/date-time-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/_shared/date-time-filter/date-time-options/date-time-options-filter-value-field.vue.d.ts +5 -5
- package/types/modules/filters/modules/filterConfig/components/_shared/durations/duration-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/_shared/has-options/has-option-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/agent/agent-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/agent/config.d.ts +2 -0
- package/types/modules/filters/modules/filterConfig/components/agent-status/agent-status-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/amd-result/amd-result-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/auditor/auditor-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/auditor/index.d.ts +5 -5
- package/types/modules/filters/modules/filterConfig/components/call-direction/call-direction-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/case-actual-reaction-time/case-actual-reaction-time-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/case-actual-resolution-time/case-actual-resolution-time-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/case-assignee/case-assignee-filter-value-field.vue.d.ts +2 -2
- package/types/modules/filters/modules/filterConfig/components/case-assignee/filterConfig.d.ts +5 -5
- package/types/modules/filters/modules/filterConfig/components/case-author/case-author-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/case-author/config.d.ts +4 -0
- package/types/modules/filters/modules/filterConfig/components/case-close-reason-groups/case-close-reason-groups-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/case-close-reason-groups/config.d.ts +4 -0
- package/types/modules/filters/modules/filterConfig/components/case-impacted/case-impacted-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/case-impacted/config.d.ts +2 -0
- package/types/modules/filters/modules/filterConfig/components/case-priority/case-priority-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/case-priority/config.d.ts +2 -0
- package/types/modules/filters/modules/filterConfig/components/case-reaction-time/case-reaction-time-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/case-reporter/case-reporter-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/case-reporter/config.d.ts +2 -0
- package/types/modules/filters/modules/filterConfig/components/case-resolution-time/case-resolution-time-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/case-service/case-service-filter-value-field.vue.d.ts +2 -2
- package/types/modules/filters/modules/filterConfig/components/case-service/config.d.ts +4 -0
- package/types/modules/filters/modules/filterConfig/components/case-sla/case-sla-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/case-sla/config.d.ts +2 -0
- package/types/modules/filters/modules/filterConfig/components/case-sla-condition/case-sla-condition-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/case-sla-condition/config.d.ts +4 -0
- package/types/modules/filters/modules/filterConfig/components/case-source/case-source-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/case-source/config.d.ts +4 -0
- package/types/modules/filters/modules/filterConfig/components/case-status/case-status-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/case-status/config.d.ts +4 -0
- package/types/modules/filters/modules/filterConfig/components/contact/config.d.ts +2 -0
- package/types/modules/filters/modules/filterConfig/components/contact/contact-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/contact-group/contact-group-filter-value-field.vue.d.ts +2 -2
- package/types/modules/filters/modules/filterConfig/components/contact-group/index.d.ts +6 -4
- package/types/modules/filters/modules/filterConfig/components/contact-label/contact-label-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/contact-label/index.d.ts +5 -5
- package/types/modules/filters/modules/filterConfig/components/contact-owner/contact-owner-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/contact-owner/index.d.ts +5 -5
- package/types/modules/filters/modules/filterConfig/components/created-at-from/created-at-from-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/created-at-to/created-at-to-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/gateway/config.d.ts +2 -0
- package/types/modules/filters/modules/filterConfig/components/gateway/gateway-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/grantee/config.d.ts +4 -0
- package/types/modules/filters/modules/filterConfig/components/grantee/grantee-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/hangup-cause/hangup-cause-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/has-attachment/has-attachment-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/has-file/has-file-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/has-rating/has-rating-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/has-transcription/has-transcription-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/has-user/has-user-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/index.d.ts +60 -59
- package/types/modules/filters/modules/filterConfig/components/queue/index.d.ts +5 -5
- package/types/modules/filters/modules/filterConfig/components/queue/queue-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/queue-period/queue-period-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/queue-type/queue-type-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/rated-by/config.d.ts +4 -0
- package/types/modules/filters/modules/filterConfig/components/rated-by/rated-by-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/rating/rating-from-to-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/region/index.d.ts +5 -5
- package/types/modules/filters/modules/filterConfig/components/region/region-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/score/score-from-to-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/skill/index.d.ts +5 -5
- package/types/modules/filters/modules/filterConfig/components/skill/skill-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/supervisor/index.d.ts +5 -5
- package/types/modules/filters/modules/filterConfig/components/supervisor/supervisor-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/tag/tag-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/talk-duration/talk-duration-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/team/index.d.ts +5 -5
- package/types/modules/filters/modules/filterConfig/components/team/team-filter-value-field.vue.d.ts +3 -3
- package/types/modules/filters/modules/filterConfig/components/total-duration/total-duration-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/user/config.d.ts +4 -0
- package/types/modules/filters/modules/filterConfig/components/user/user-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/utilization-progress/utilization-progress-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/components/variable/variable-filter-value-field.vue.d.ts +4 -4
- package/types/modules/filters/modules/filterConfig/composables/booleanFilterToolkit.d.ts +2 -2
- package/types/modules/filters/scripts/utils.d.ts +2 -2
- package/types/modules/headers/createTableHeadersStore.d.ts +57 -58
- package/types/modules/permissions-page/stores/createPermissionsStore.d.ts +80 -68
- package/types/modules/persist/PersistedStorage.types.d.ts +3 -3
- package/types/modules/table/createTableStore.store.d.ts +78 -66
|
@@ -16,7 +16,10 @@ export const createFilterConfig = (
|
|
|
16
16
|
): BaseFilterConfig => {
|
|
17
17
|
const { name } = params;
|
|
18
18
|
|
|
19
|
-
const filterConfigClass =
|
|
19
|
+
const filterConfigClass =
|
|
20
|
+
FilterOptionToFilterConfigCreatorMap[
|
|
21
|
+
name as keyof typeof FilterOptionToFilterConfigCreatorMap
|
|
22
|
+
];
|
|
20
23
|
|
|
21
24
|
if (filterConfigClass) {
|
|
22
25
|
return filterConfigClass(params);
|
|
@@ -5,6 +5,7 @@ import type { WebitelProtoDataField } from 'webitel-sdk';
|
|
|
5
5
|
import type {
|
|
6
6
|
BaseFilterConfig,
|
|
7
7
|
FilterConfigBaseParams,
|
|
8
|
+
FilterConfigSearchRequestParams,
|
|
8
9
|
IWtSysTypeFilterConfig,
|
|
9
10
|
} from '../../classes/FilterConfig';
|
|
10
11
|
import { FilterConfig } from '../../classes/FilterConfig';
|
|
@@ -46,7 +47,7 @@ class TypeExtensionWtSysTypeFieldFilterConfig
|
|
|
46
47
|
implements IWtSysTypeFilterConfig
|
|
47
48
|
{
|
|
48
49
|
async searchRecords(
|
|
49
|
-
{ id: filterValue, ...rest },
|
|
50
|
+
{ id: filterValue, ...rest }: FilterConfigSearchRequestParams,
|
|
50
51
|
// {
|
|
51
52
|
// filterValue,
|
|
52
53
|
// }: {
|
|
@@ -56,9 +57,12 @@ class TypeExtensionWtSysTypeFieldFilterConfig
|
|
|
56
57
|
items: unknown[];
|
|
57
58
|
next?: boolean;
|
|
58
59
|
}> {
|
|
60
|
+
const { display = '', path = '', primary = '' } = this.field.lookup ?? {};
|
|
59
61
|
const { items, ...restResponse } = await sysTypes.getLookup({
|
|
60
62
|
...rest,
|
|
61
|
-
|
|
63
|
+
display,
|
|
64
|
+
path,
|
|
65
|
+
primary,
|
|
62
66
|
id: filterValue,
|
|
63
67
|
});
|
|
64
68
|
|
|
@@ -76,9 +80,9 @@ class TypeExtensionWtSysTypeFieldFilterConfig
|
|
|
76
80
|
* objects=[{ name: { common_name: 'str' } }]
|
|
77
81
|
*/
|
|
78
82
|
return {
|
|
79
|
-
items: items.map((item) => ({
|
|
83
|
+
items: items.map((item: Record<string, unknown>) => ({
|
|
80
84
|
...item,
|
|
81
|
-
name: get(item,
|
|
85
|
+
name: get(item, display),
|
|
82
86
|
})),
|
|
83
87
|
...restResponse,
|
|
84
88
|
};
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
:v="v$.model"
|
|
8
8
|
>
|
|
9
9
|
<template #[WtTypeExtensionFieldKind.Boolean]="{ defaultProps }">
|
|
10
|
-
<has-option-filter-value-field v-bind="defaultProps" v-model:model-value="
|
|
10
|
+
<has-option-filter-value-field v-bind="defaultProps" v-model:model-value="booleanModel"/>
|
|
11
11
|
</template>
|
|
12
12
|
<template #[WtTypeExtensionFieldKind.Select]="{ defaultProps }">
|
|
13
13
|
<wt-single-select
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"
|
|
34
34
|
:search-method="searchRecords"
|
|
35
35
|
|
|
36
|
-
:required="false /* https://github.com/webitel/webitel-ui-sdk/pull/1359#discussion_r3180877255 */"
|
|
36
|
+
:required="false /* https://github.com/webitel/webitel-ui-sdk/pull/1359#discussion_r3180877255 */"
|
|
37
37
|
option-value="id"
|
|
38
38
|
@update:model-value="model = $event"
|
|
39
39
|
/>
|
|
@@ -76,8 +76,17 @@ const emit = defineEmits<{
|
|
|
76
76
|
|
|
77
77
|
const attrs = useAttrs();
|
|
78
78
|
|
|
79
|
-
const searchRecords = (...params: FilterConfigSearchMethodParams) =>
|
|
80
|
-
props.filterConfig.searchRecords?.(...params)
|
|
79
|
+
const searchRecords = async (...params: FilterConfigSearchMethodParams) =>
|
|
80
|
+
(await props.filterConfig.searchRecords?.(...params)) ?? {
|
|
81
|
+
items: [],
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const booleanModel = computed({
|
|
85
|
+
get: () => model.value as boolean | null | undefined,
|
|
86
|
+
set: (value) => {
|
|
87
|
+
model.value = value;
|
|
88
|
+
},
|
|
89
|
+
});
|
|
81
90
|
|
|
82
91
|
/* the filter value is dynamically shaped by field kind;
|
|
83
92
|
the Calendar branch always stores a datetime value */
|
|
@@ -57,7 +57,7 @@ const showLookupValuePreview = computed(() => {
|
|
|
57
57
|
WtTypeExtensionFieldKind.Multiselect,
|
|
58
58
|
WtTypeExtensionFieldKind.Select,
|
|
59
59
|
];
|
|
60
|
-
return lookupKinds.includes(props.filterConfig.field.kind);
|
|
60
|
+
return lookupKinds.includes(props.filterConfig.field.kind ?? '');
|
|
61
61
|
});
|
|
62
62
|
</script>
|
|
63
63
|
|
|
@@ -127,7 +127,8 @@ watch(
|
|
|
127
127
|
},
|
|
128
128
|
);
|
|
129
129
|
|
|
130
|
-
const handleRadioChange = (
|
|
130
|
+
const handleRadioChange = (selected: string | number | boolean | object) => {
|
|
131
|
+
const value = selected as RelativeDatetimeValue;
|
|
131
132
|
selectedRadioValue.value = value;
|
|
132
133
|
if (value === RelativeDatetimeValue.Custom) {
|
|
133
134
|
model.value = {
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="duration-filter">
|
|
3
3
|
<wt-timepicker
|
|
4
|
-
v-if="model"
|
|
5
4
|
:label="t('reusable.from')"
|
|
6
|
-
:model-value="
|
|
5
|
+
:model-value="value.from"
|
|
7
6
|
:v="vFrom"
|
|
8
7
|
format="hh:mm:ss"
|
|
9
8
|
@update:model-value="handleInput('from', $event)"
|
|
10
9
|
/>
|
|
11
10
|
<wt-timepicker
|
|
12
|
-
v-if="model"
|
|
13
11
|
:label="t('reusable.to')"
|
|
14
|
-
:model-value="
|
|
12
|
+
:model-value="value.to"
|
|
15
13
|
:v="vTo"
|
|
16
14
|
format="hh:mm:ss"
|
|
17
15
|
@update:model-value="handleInput('to', $event)"
|
|
@@ -38,6 +36,14 @@ const model = defineModel<ModelValue>({
|
|
|
38
36
|
}),
|
|
39
37
|
});
|
|
40
38
|
|
|
39
|
+
const value = computed<ModelValue>(
|
|
40
|
+
() =>
|
|
41
|
+
model.value ?? {
|
|
42
|
+
from: 0,
|
|
43
|
+
to: 0,
|
|
44
|
+
},
|
|
45
|
+
);
|
|
46
|
+
|
|
41
47
|
const emit = defineEmits<{
|
|
42
48
|
'update:invalid': [
|
|
43
49
|
boolean,
|
|
@@ -81,12 +87,11 @@ const vTo = computed(() => {
|
|
|
81
87
|
return modelValidation.to;
|
|
82
88
|
});
|
|
83
89
|
|
|
84
|
-
const handleInput = (key: keyof ModelValue,
|
|
85
|
-
|
|
86
|
-
...
|
|
90
|
+
const handleInput = (key: keyof ModelValue, newFieldValue: number) => {
|
|
91
|
+
model.value = {
|
|
92
|
+
...value.value,
|
|
93
|
+
[key]: newFieldValue,
|
|
87
94
|
};
|
|
88
|
-
newValue[key] = value;
|
|
89
|
-
model.value = newValue;
|
|
90
95
|
};
|
|
91
96
|
|
|
92
97
|
watch(
|
|
@@ -28,7 +28,7 @@ const attrs = useAttrs();
|
|
|
28
28
|
const { t } = useI18n();
|
|
29
29
|
|
|
30
30
|
const labelValue = computed(() =>
|
|
31
|
-
props?.hideLabel ?
|
|
31
|
+
props?.hideLabel ? undefined : t('webitelUI.filters.filterValue'),
|
|
32
32
|
);
|
|
33
33
|
|
|
34
34
|
const strModel = computed({
|
|
@@ -1,21 +1,29 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<ul v-if="value">
|
|
3
3
|
<li
|
|
4
|
-
v-for="({ name, id }, index) of
|
|
4
|
+
v-for="({ name, id }, index) of shownItems"
|
|
5
5
|
:key="id || index"
|
|
6
6
|
>
|
|
7
7
|
{{ name }}
|
|
8
8
|
</li>
|
|
9
|
+
<li v-if="remainingCount > 0">
|
|
10
|
+
{{ t('webitelUI.filters.andMore', { count: remainingCount }) }}
|
|
11
|
+
</li>
|
|
9
12
|
</ul>
|
|
10
13
|
</template>
|
|
11
14
|
|
|
12
15
|
<script lang="ts" setup>
|
|
13
16
|
import { computed } from 'vue';
|
|
17
|
+
import { useI18n } from 'vue-i18n';
|
|
18
|
+
|
|
19
|
+
const PREVIEW_LIMIT = 30;
|
|
14
20
|
|
|
15
21
|
const props = defineProps<{
|
|
16
22
|
value: unknown;
|
|
17
23
|
}>();
|
|
18
24
|
|
|
25
|
+
const { t } = useI18n();
|
|
26
|
+
|
|
19
27
|
const items = computed<
|
|
20
28
|
Array<{
|
|
21
29
|
id?: PropertyKey;
|
|
@@ -24,6 +32,12 @@ const items = computed<
|
|
|
24
32
|
>(() => {
|
|
25
33
|
return Array.isArray(props.value) ? props.value : [];
|
|
26
34
|
});
|
|
35
|
+
|
|
36
|
+
const shownItems = computed(() => items.value.slice(0, PREVIEW_LIMIT));
|
|
37
|
+
|
|
38
|
+
const remainingCount = computed(() =>
|
|
39
|
+
Math.max(0, items.value.length - PREVIEW_LIMIT),
|
|
40
|
+
);
|
|
27
41
|
</script>
|
|
28
42
|
|
|
29
43
|
<style scoped></style>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<ul>
|
|
3
3
|
<li
|
|
4
|
-
v-for="(
|
|
4
|
+
v-for="(label, index) of arrayValues"
|
|
5
5
|
:key="index"
|
|
6
6
|
>
|
|
7
7
|
{{ label }}
|
|
@@ -20,7 +20,7 @@ const props = defineProps<{
|
|
|
20
20
|
const { options } = useAgentStatusOptions();
|
|
21
21
|
|
|
22
22
|
const arrayLabels = computed(() =>
|
|
23
|
-
options.value.reduce((acc, { value, label }) => {
|
|
23
|
+
options.value.reduce<Record<string, string>>((acc, { value, label }) => {
|
|
24
24
|
acc[value] = label;
|
|
25
25
|
return acc;
|
|
26
26
|
}, {}),
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { UsersAPI } from '@webitel/api-services/api';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type FilterConfigBaseParams,
|
|
5
|
+
WtSysTypeFilterConfig,
|
|
6
|
+
} from '../../classes/FilterConfig';
|
|
4
7
|
import { FilterOption } from '../../enums/FilterOption';
|
|
5
8
|
import AuditorFilterValueField from './auditor-filter-value-field.vue';
|
|
6
9
|
import AuditorFilterValuePreview from './auditor-filter-value-preview.vue';
|
|
@@ -18,5 +21,5 @@ class AuditorFilterConfig extends WtSysTypeFilterConfig {
|
|
|
18
21
|
}
|
|
19
22
|
}
|
|
20
23
|
|
|
21
|
-
export const createAuditorFilterConfig = (params) =>
|
|
24
|
+
export const createAuditorFilterConfig = (params?: FilterConfigBaseParams) =>
|
|
22
25
|
new AuditorFilterConfig(params);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { contacts as ContactsAPI } from '@webitel/ui-sdk/api/clients/index';
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
+
type FilterConfigBaseParams,
|
|
4
5
|
type FilterConfigSearchFilterContext,
|
|
5
6
|
type FilterConfigSearchRequestParams,
|
|
6
7
|
WtSysTypeFilterConfig,
|
|
@@ -21,7 +22,7 @@ class CaseAssigneeFilterConfig extends WtSysTypeFilterConfig {
|
|
|
21
22
|
items: unknown[];
|
|
22
23
|
next?: boolean;
|
|
23
24
|
}> {
|
|
24
|
-
if (filterValue?.unassigned && !filterValue.list
|
|
25
|
+
if (filterValue?.unassigned && !filterValue.list?.length)
|
|
25
26
|
return Promise.resolve({
|
|
26
27
|
items: [],
|
|
27
28
|
});
|
|
@@ -39,5 +40,6 @@ class CaseAssigneeFilterConfig extends WtSysTypeFilterConfig {
|
|
|
39
40
|
|
|
40
41
|
export type { CaseAssigneeFilterConfig };
|
|
41
42
|
|
|
42
|
-
export const createCaseAssigneeFilterConfig = (
|
|
43
|
-
|
|
43
|
+
export const createCaseAssigneeFilterConfig = (
|
|
44
|
+
params?: FilterConfigBaseParams,
|
|
45
|
+
) => new CaseAssigneeFilterConfig(params);
|
|
@@ -50,12 +50,12 @@ const model = defineModel<ModelValue>({
|
|
|
50
50
|
});
|
|
51
51
|
const { t } = useI18n();
|
|
52
52
|
|
|
53
|
-
const updateSelected = (value) => {
|
|
53
|
+
const updateSelected = (value: string) => {
|
|
54
54
|
model.value.selection = value;
|
|
55
55
|
model.value.conditions = '';
|
|
56
56
|
};
|
|
57
57
|
|
|
58
|
-
const getConditionList = (params) => {
|
|
58
|
+
const getConditionList = (params: Record<string, unknown>) => {
|
|
59
59
|
return caseCloseReasonsSearchMethod({
|
|
60
60
|
parentId: model.value.selection,
|
|
61
61
|
...params,
|
|
@@ -47,12 +47,12 @@ const model = defineModel<ModelValue>({
|
|
|
47
47
|
});
|
|
48
48
|
const { t } = useI18n();
|
|
49
49
|
|
|
50
|
-
const updateSelected = (value) => {
|
|
50
|
+
const updateSelected = (value: string) => {
|
|
51
51
|
model.value.selection = value;
|
|
52
52
|
model.value.conditions = '';
|
|
53
53
|
};
|
|
54
54
|
|
|
55
|
-
const getConditionList = async (params) => {
|
|
55
|
+
const getConditionList = async (params: Record<string, unknown>) => {
|
|
56
56
|
return await slasConditionsSearchMethod({
|
|
57
57
|
parentId: model.value.selection,
|
|
58
58
|
...params,
|
|
@@ -49,12 +49,12 @@ const model = defineModel<ModelValue>({
|
|
|
49
49
|
});
|
|
50
50
|
const { t } = useI18n();
|
|
51
51
|
|
|
52
|
-
const updateSelected = (value) => {
|
|
52
|
+
const updateSelected = (value: string) => {
|
|
53
53
|
model.value.selection = value;
|
|
54
54
|
model.value.conditions = '';
|
|
55
55
|
};
|
|
56
56
|
|
|
57
|
-
const getConditionList = (params) => {
|
|
57
|
+
const getConditionList = (params: Record<string, unknown>) => {
|
|
58
58
|
return caseStatusConditionsSearchMethod({
|
|
59
59
|
parentId: model.value.selection,
|
|
60
60
|
...params,
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
<wt-checkbox
|
|
13
13
|
v-if="!props.filterConfig?.hideUnassigned"
|
|
14
14
|
:label="t('reusable.showUnassigned')"
|
|
15
|
-
:selected="model?.unassigned"
|
|
15
|
+
:selected="!!model?.unassigned"
|
|
16
16
|
:v="!disableValidation && vUnassigned"
|
|
17
|
-
@update:selected="model.unassigned =
|
|
17
|
+
@update:selected="model.unassigned = !!$event"
|
|
18
18
|
/>
|
|
19
19
|
</template>
|
|
20
20
|
|
|
@@ -53,10 +53,10 @@ const emit = defineEmits<{
|
|
|
53
53
|
const { t } = useI18n();
|
|
54
54
|
|
|
55
55
|
const labelValue = computed(() =>
|
|
56
|
-
props?.hideLabel ?
|
|
56
|
+
props?.hideLabel ? undefined : t('webitelUI.filters.filterValue'),
|
|
57
57
|
);
|
|
58
58
|
|
|
59
|
-
const changeListValue = (event) => {
|
|
59
|
+
const changeListValue = (event: string[]) => {
|
|
60
60
|
if (!event.length && !model.value.unassigned) {
|
|
61
61
|
model.value = {};
|
|
62
62
|
return;
|
|
@@ -76,7 +76,8 @@ const v$ = useVuelidate<{
|
|
|
76
76
|
},
|
|
77
77
|
unassigned: {
|
|
78
78
|
required: requiredIf(
|
|
79
|
-
() =>
|
|
79
|
+
() =>
|
|
80
|
+
!!props.filterConfig?.hideUnassigned && !model.value.list?.length,
|
|
80
81
|
),
|
|
81
82
|
},
|
|
82
83
|
},
|
|
@@ -57,8 +57,11 @@ class ContactGroupFilterConfig extends WtSysTypeFilterConfig {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
export const createContactGroupFilterConfig = (
|
|
61
|
-
|
|
60
|
+
export const createContactGroupFilterConfig = (
|
|
61
|
+
params?: FilterConfigBaseParams & {
|
|
62
|
+
hideUnassigned?: boolean;
|
|
63
|
+
},
|
|
64
|
+
) => new ContactGroupFilterConfig(params);
|
|
62
65
|
|
|
63
66
|
export interface IContactGroupFilterConfig extends IWtSysTypeFilterConfig {
|
|
64
67
|
hideUnassigned?: boolean;
|
|
@@ -38,7 +38,7 @@ const emit = defineEmits<{
|
|
|
38
38
|
const { t } = useI18n();
|
|
39
39
|
|
|
40
40
|
const labelValue = computed(() =>
|
|
41
|
-
props?.hideLabel ?
|
|
41
|
+
props?.hideLabel ? undefined : t('webitelUI.filters.filterValue'),
|
|
42
42
|
);
|
|
43
43
|
|
|
44
44
|
const v$ = useVuelidate(
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { labels as contactLabels } from '@webitel/ui-sdk/api/clients/index';
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
+
type FilterConfigBaseParams,
|
|
4
5
|
type FilterConfigSearchFilterContext,
|
|
5
6
|
type FilterConfigSearchRequestParams,
|
|
6
7
|
WtSysTypeFilterConfig,
|
|
@@ -39,5 +40,6 @@ class ContactLabelFilterConfig extends WtSysTypeFilterConfig {
|
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
|
|
42
|
-
export const createContactLabelFilterConfig = (
|
|
43
|
-
|
|
43
|
+
export const createContactLabelFilterConfig = (
|
|
44
|
+
params?: FilterConfigBaseParams,
|
|
45
|
+
) => new ContactLabelFilterConfig(params);
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { users as UsersAPI } from '@webitel/ui-sdk/api/clients/index';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type FilterConfigBaseParams,
|
|
5
|
+
WtSysTypeFilterConfig,
|
|
6
|
+
} from '../../classes/FilterConfig';
|
|
4
7
|
import { FilterOption } from '../../enums/FilterOption';
|
|
5
8
|
import ContactOwnerFilterValueField from './contact-owner-filter-value-field.vue';
|
|
6
9
|
import ContactOwnerFilterValuePreview from './contact-owner-filter-value-preview.vue';
|
|
@@ -18,5 +21,6 @@ class ContactOwnerFilterConfig extends WtSysTypeFilterConfig {
|
|
|
18
21
|
}
|
|
19
22
|
}
|
|
20
23
|
|
|
21
|
-
export const createContactOwnerFilterConfig = (
|
|
22
|
-
|
|
24
|
+
export const createContactOwnerFilterConfig = (
|
|
25
|
+
params?: FilterConfigBaseParams,
|
|
26
|
+
) => new ContactOwnerFilterConfig(params);
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { queues as QueuesAPI } from '@webitel/ui-sdk/api/clients/index';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type FilterConfigBaseParams,
|
|
5
|
+
WtSysTypeFilterConfig,
|
|
6
|
+
} from '../../classes/FilterConfig';
|
|
4
7
|
import { FilterOption } from '../../enums/FilterOption';
|
|
5
8
|
import QueueFilterValueField from './queue-filter-value-field.vue';
|
|
6
9
|
import QueueFilterValuePreview from './queue-filter-value-preview.vue';
|
|
@@ -18,5 +21,5 @@ class QueueFilterConfig extends WtSysTypeFilterConfig {
|
|
|
18
21
|
}
|
|
19
22
|
}
|
|
20
23
|
|
|
21
|
-
export const createQueueFilterConfig = (params) =>
|
|
24
|
+
export const createQueueFilterConfig = (params?: FilterConfigBaseParams) =>
|
|
22
25
|
new QueueFilterConfig(params);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<ul>
|
|
3
3
|
<li
|
|
4
|
-
v-for="(
|
|
4
|
+
v-for="(label, index) of arrayValues"
|
|
5
5
|
:key="index"
|
|
6
6
|
>
|
|
7
7
|
{{ label }}
|
|
@@ -20,7 +20,7 @@ const props = defineProps<{
|
|
|
20
20
|
const { options } = useQueuePeriodOptions();
|
|
21
21
|
|
|
22
22
|
const arrayLabels = computed(() =>
|
|
23
|
-
options.value.reduce((acc, { value, label }) => {
|
|
23
|
+
options.value.reduce<Record<string, string>>((acc, { value, label }) => {
|
|
24
24
|
acc[value] = label;
|
|
25
25
|
return acc;
|
|
26
26
|
}, {}),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<ul>
|
|
3
3
|
<li
|
|
4
|
-
v-for="(
|
|
4
|
+
v-for="(label, index) of arrayValues"
|
|
5
5
|
:key="index"
|
|
6
6
|
>
|
|
7
7
|
{{ label }}
|
|
@@ -20,7 +20,7 @@ const props = defineProps<{
|
|
|
20
20
|
const { options } = useQueueTypeOptions();
|
|
21
21
|
|
|
22
22
|
const arrayLabels = computed(() =>
|
|
23
|
-
options.value.reduce((acc, { value, label }) => {
|
|
23
|
+
options.value.reduce<Record<string, string>>((acc, { value, label }) => {
|
|
24
24
|
acc[value] = label;
|
|
25
25
|
return acc;
|
|
26
26
|
}, {}),
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { RegionsAPI } from '@webitel/api-services/api';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type FilterConfigBaseParams,
|
|
5
|
+
WtSysTypeFilterConfig,
|
|
6
|
+
} from '../../classes/FilterConfig';
|
|
4
7
|
import { FilterOption } from '../../enums/FilterOption';
|
|
5
8
|
import RegionFilterValueField from './region-filter-value-field.vue';
|
|
6
9
|
import RegionFilterValuePreview from './region-filter-value-preview.vue';
|
|
@@ -17,5 +20,5 @@ class RegionFilterConfig extends WtSysTypeFilterConfig {
|
|
|
17
20
|
}
|
|
18
21
|
}
|
|
19
22
|
|
|
20
|
-
export const createRegionFilterConfig = (params) =>
|
|
23
|
+
export const createRegionFilterConfig = (params?: FilterConfigBaseParams) =>
|
|
21
24
|
new RegionFilterConfig(params);
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { SkillsAPI } from '@webitel/api-services/api';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type FilterConfigBaseParams,
|
|
5
|
+
WtSysTypeFilterConfig,
|
|
6
|
+
} from '../../classes/FilterConfig';
|
|
4
7
|
import { FilterOption } from '../../enums/FilterOption';
|
|
5
8
|
import SkillFilterValueField from './skill-filter-value-field.vue';
|
|
6
9
|
import SkillFilterValuePreview from './skill-filter-value-preview.vue';
|
|
@@ -18,5 +21,5 @@ class SkillFilterConfig extends WtSysTypeFilterConfig {
|
|
|
18
21
|
}
|
|
19
22
|
}
|
|
20
23
|
|
|
21
|
-
export const createSkillFilterConfig = (params) =>
|
|
24
|
+
export const createSkillFilterConfig = (params?: FilterConfigBaseParams) =>
|
|
22
25
|
new SkillFilterConfig(params);
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { AgentsAPI } from '@webitel/api-services/api';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type FilterConfigBaseParams,
|
|
5
|
+
WtSysTypeFilterConfig,
|
|
6
|
+
} from '../../classes/FilterConfig';
|
|
4
7
|
import { FilterOption } from '../../enums/FilterOption';
|
|
5
8
|
import SupervisorFilterValueField from './supervisor-filter-value-field.vue';
|
|
6
9
|
import SupervisorFilterValuePreview from './supervisor-filter-value-preview.vue';
|
|
@@ -18,5 +21,5 @@ class SupervisorFilterConfig extends WtSysTypeFilterConfig {
|
|
|
18
21
|
}
|
|
19
22
|
}
|
|
20
23
|
|
|
21
|
-
export const createSupervisorFilterConfig = (params) =>
|
|
24
|
+
export const createSupervisorFilterConfig = (params?: FilterConfigBaseParams) =>
|
|
22
25
|
new SupervisorFilterConfig(params);
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { teams as TeamsAPI } from '@webitel/ui-sdk/api/clients/index';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type FilterConfigBaseParams,
|
|
5
|
+
WtSysTypeFilterConfig,
|
|
6
|
+
} from '../../classes/FilterConfig';
|
|
4
7
|
import { FilterOption } from '../../enums/FilterOption';
|
|
5
8
|
import TeamFilterValueField from './team-filter-value-field.vue';
|
|
6
9
|
import TeamFilterValuePreview from './team-filter-value-preview.vue';
|
|
@@ -18,4 +21,5 @@ class TeamFilterConfig extends WtSysTypeFilterConfig {
|
|
|
18
21
|
}
|
|
19
22
|
}
|
|
20
23
|
|
|
21
|
-
export const createTeamFilterConfig = (params) =>
|
|
24
|
+
export const createTeamFilterConfig = (params?: FilterConfigBaseParams) =>
|
|
25
|
+
new TeamFilterConfig(params);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FilterName } from '../classes/Filter';
|
|
1
|
+
import type { FilterData, FilterName } from '../classes/Filter';
|
|
2
2
|
|
|
3
3
|
export const filterLabelToSnapshotKey = (name: FilterName): string =>
|
|
4
4
|
`${name}_lbl`;
|
|
@@ -29,7 +29,7 @@ export const filterNameFromSnapshotKey = (
|
|
|
29
29
|
|
|
30
30
|
export const filterValuePropFromSnapshotKey = (
|
|
31
31
|
snapshotKey: string,
|
|
32
|
-
):
|
|
32
|
+
): keyof FilterData | undefined => {
|
|
33
33
|
if (isLabelSnapshotKey(snapshotKey)) return 'label';
|
|
34
34
|
if (isValueSnapshotKey(snapshotKey)) return 'value';
|
|
35
35
|
};
|