@webitel/ui-datalist 1.0.12 → 1.0.14
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 +2 -2
- package/src/modules/filters/composables/useFilterConfigsToolkit.ts +1 -1
- package/src/modules/filters/modules/filterConfig/classes/FilterConfig.ts +0 -34
- package/src/modules/filters/modules/filterConfig/classes/createFilterConfig.ts +35 -0
- package/src/modules/filters/modules/filterConfig/components/_custom/index.ts +7 -4
- package/src/modules/filters/modules/filterConfig/components/_custom/type-extension-filter-value-field.vue +16 -1
- package/src/modules/filters/modules/filterConfig/components/_custom/type-extension-filter-value-preview.vue +35 -8
- package/src/modules/filters/modules/filterConfig/components/_shared/date-time-filter/date-time-filter-value-preview.vue +15 -0
- package/src/modules/filters/modules/filterConfig/components/_shared/has-options/has-option-filter-value-preview.vue +15 -0
- package/src/modules/filters/modules/filterConfig/components/index.ts +0 -12
- package/src/modules/filters/modules/filterConfig/enums/FilterOption.ts +0 -2
- package/src/modules/filters/modules/filterConfig/types/DynamicFilterPreviewComponent.ts +8 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webitel/ui-datalist",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.14",
|
|
4
4
|
"description": "Toolkit for building data lists in webitel ui system",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build:types": "vue-tsc -p ./tsconfig.build.json",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@vuelidate/core": "^2.0.3",
|
|
38
38
|
"@vuelidate/validators": "^2.0.4",
|
|
39
|
-
"@webitel/ui-sdk": "^25.4.
|
|
39
|
+
"@webitel/ui-sdk": "^25.4.70",
|
|
40
40
|
"@webitel/styleguide": "^24.12.26"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
@@ -4,9 +4,9 @@ import { WebitelProtoDataField } from 'webitel-sdk';
|
|
|
4
4
|
|
|
5
5
|
import { FilterName, IFilter } from '../classes/Filter';
|
|
6
6
|
import { IFiltersManager } from '../classes/FiltersManager';
|
|
7
|
+
import { createFilterConfig } from '../modules/filterConfig/classes/createFilterConfig';
|
|
7
8
|
import {
|
|
8
9
|
BaseFilterConfig,
|
|
9
|
-
createFilterConfig,
|
|
10
10
|
FilterConfig,
|
|
11
11
|
} from '../modules/filterConfig/classes/FilterConfig';
|
|
12
12
|
import { createTypeExtensionFilterConfig } from '../modules/filterConfig/components/_custom';
|
|
@@ -2,12 +2,6 @@ import { Component } from 'vue';
|
|
|
2
2
|
import { MessageResolver } from 'vue-i18n';
|
|
3
3
|
|
|
4
4
|
import { FilterName, FilterValue } from '../../../classes/Filter';
|
|
5
|
-
import {
|
|
6
|
-
FilterOptionToFilterConfigCreatorMap,
|
|
7
|
-
FilterOptionToPreviewComponentMap,
|
|
8
|
-
FilterOptionToValueComponentMap,
|
|
9
|
-
} from '../components';
|
|
10
|
-
import { FilterOption } from '../enums/FilterOption';
|
|
11
5
|
|
|
12
6
|
export interface BaseFilterConfig {
|
|
13
7
|
name: FilterName;
|
|
@@ -79,31 +73,3 @@ export abstract class WtSysTypeFilterConfig
|
|
|
79
73
|
abstract name;
|
|
80
74
|
abstract searchRecords;
|
|
81
75
|
}
|
|
82
|
-
|
|
83
|
-
export const createFilterConfig = ({
|
|
84
|
-
filterOption,
|
|
85
|
-
}: {
|
|
86
|
-
filterOption: FilterOption;
|
|
87
|
-
}): BaseFilterConfig => {
|
|
88
|
-
const filterConfigClass = FilterOptionToFilterConfigCreatorMap[filterOption];
|
|
89
|
-
|
|
90
|
-
if (filterConfigClass) {
|
|
91
|
-
return filterConfigClass();
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// throw new Error(
|
|
95
|
-
// `Filter config class not found for this filter option: ${filterOption}`,
|
|
96
|
-
// );
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* @author @dlohvinov
|
|
100
|
-
*
|
|
101
|
-
* @deprecated
|
|
102
|
-
* compat. should be removed with FilterOption to Component maps
|
|
103
|
-
* */
|
|
104
|
-
return new FilterConfig({
|
|
105
|
-
name: filterOption,
|
|
106
|
-
valueInputComponent: FilterOptionToValueComponentMap[filterOption],
|
|
107
|
-
valuePreviewComponent: FilterOptionToPreviewComponentMap[filterOption],
|
|
108
|
-
});
|
|
109
|
-
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FilterOptionToFilterConfigCreatorMap,
|
|
3
|
+
FilterOptionToPreviewComponentMap,
|
|
4
|
+
FilterOptionToValueComponentMap,
|
|
5
|
+
} from '../components';
|
|
6
|
+
import { FilterOption } from '../enums/FilterOption';
|
|
7
|
+
import { BaseFilterConfig, FilterConfig } from './FilterConfig';
|
|
8
|
+
|
|
9
|
+
export const createFilterConfig = ({
|
|
10
|
+
filterOption,
|
|
11
|
+
}: {
|
|
12
|
+
filterOption: FilterOption;
|
|
13
|
+
}): BaseFilterConfig => {
|
|
14
|
+
const filterConfigClass = FilterOptionToFilterConfigCreatorMap[filterOption];
|
|
15
|
+
|
|
16
|
+
if (filterConfigClass) {
|
|
17
|
+
return filterConfigClass();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// throw new Error(
|
|
21
|
+
// `Filter config class not found for this filter option: ${filterOption}`,
|
|
22
|
+
// );
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @author @dlohvinov
|
|
26
|
+
*
|
|
27
|
+
* @deprecated
|
|
28
|
+
* compat. should be removed with FilterOption to Component maps
|
|
29
|
+
* */
|
|
30
|
+
return new FilterConfig({
|
|
31
|
+
name: filterOption,
|
|
32
|
+
valueInputComponent: FilterOptionToValueComponentMap[filterOption],
|
|
33
|
+
valuePreviewComponent: FilterOptionToPreviewComponentMap[filterOption],
|
|
34
|
+
});
|
|
35
|
+
};
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { sysTypes } from '@webitel/ui-sdk/api/clients/index';
|
|
2
|
+
import { WtTypeExtensionFieldKind } from '@webitel/ui-sdk/enums';
|
|
2
3
|
import { WebitelProtoDataField } from 'webitel-sdk';
|
|
3
4
|
|
|
5
|
+
import { FilterConfig } from '../../classes/FilterConfig';
|
|
6
|
+
import { CustomFilterOption } from '../../enums/FilterOption';
|
|
4
7
|
import {
|
|
5
8
|
BaseFilterConfig,
|
|
6
|
-
FilterConfig,
|
|
7
9
|
FilterConfigBaseParams,
|
|
8
10
|
IWtSysTypeFilterConfig,
|
|
9
|
-
} from '../../
|
|
10
|
-
import { CustomFilterOption } from '../../enums/FilterOption';
|
|
11
|
+
} from '../../types/FilterConfig';
|
|
11
12
|
import TypeExtensionFilterValueField from './type-extension-filter-value-field.vue';
|
|
12
13
|
import TypeExtensionFilterValuePreview from './type-extension-filter-value-preview.vue';
|
|
13
14
|
|
|
@@ -61,7 +62,9 @@ export const createTypeExtensionFilterConfig = (
|
|
|
61
62
|
{ field }: { field: WebitelProtoDataField },
|
|
62
63
|
) => {
|
|
63
64
|
switch (field.kind) {
|
|
64
|
-
case
|
|
65
|
+
case WtTypeExtensionFieldKind.Select:
|
|
66
|
+
return new TypeExtensionWtSysTypeFieldFilterConfig(name, { field });
|
|
67
|
+
case WtTypeExtensionFieldKind.Multiselect:
|
|
65
68
|
return new TypeExtensionWtSysTypeFieldFilterConfig(name, { field });
|
|
66
69
|
default:
|
|
67
70
|
return new TypeExtensionFilterConfig(name, { field });
|
|
@@ -4,7 +4,21 @@
|
|
|
4
4
|
v-model:model-value="model"
|
|
5
5
|
:field="props.filterConfig.field"
|
|
6
6
|
>
|
|
7
|
-
<template #[
|
|
7
|
+
<template #[WtTypeExtensionFieldKind.Boolean]="{ defaultProps }">
|
|
8
|
+
<has-option-filter-value-field
|
|
9
|
+
v-model:model-value="model"
|
|
10
|
+
/>
|
|
11
|
+
</template>
|
|
12
|
+
<template #[WtTypeExtensionFieldKind.Select]="{ defaultProps }">
|
|
13
|
+
<wt-select
|
|
14
|
+
v-bind="defaultProps"
|
|
15
|
+
:value="model ?? [] /* so that component won't break when model is nullish at init */"
|
|
16
|
+
:search-method="(...params) => props.filterConfig.searchRecords(...params)"
|
|
17
|
+
use-value-from-options-by-prop="id"
|
|
18
|
+
@input="model = $event"
|
|
19
|
+
/>
|
|
20
|
+
</template>
|
|
21
|
+
<template #[WtTypeExtensionFieldKind.Multiselect]="{ defaultProps }">
|
|
8
22
|
<wt-select
|
|
9
23
|
v-bind="defaultProps"
|
|
10
24
|
:value="model ?? [] /* so that component won't break when model is nullish at init */"
|
|
@@ -23,6 +37,7 @@ import { WtSelect, WtTypeExtensionValueInput } from '@webitel/ui-sdk/components'
|
|
|
23
37
|
import { WtTypeExtensionFieldKind } from '@webitel/ui-sdk/enums'; // DO NOT REMOVE THIS IMPORT!! : Webstorm lies you, import is used for dynamic slot computation
|
|
24
38
|
import {computed, useAttrs, watch} from "vue";
|
|
25
39
|
|
|
40
|
+
import HasOptionFilterValueField from '../_shared/has-options/has-option-filter-value-field.vue';
|
|
26
41
|
import {ITypeExtensionFilterConfig} from "./index";
|
|
27
42
|
|
|
28
43
|
const model = defineModel<unknown>();
|
|
@@ -1,18 +1,45 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
<template v-if="showLookupValuePreview">
|
|
3
|
+
<lookup-value-preview
|
|
4
|
+
:value="props.value"
|
|
5
|
+
/>
|
|
6
|
+
</template>
|
|
7
|
+
<template
|
|
8
|
+
v-else-if="props.filterConfig.field.kind === WtTypeExtensionFieldKind.Boolean"
|
|
9
|
+
>
|
|
10
|
+
<has-option-value-preview
|
|
11
|
+
:value="props.value"
|
|
12
|
+
/>
|
|
13
|
+
</template>
|
|
14
|
+
<template
|
|
15
|
+
v-else-if="props.filterConfig.field.kind === WtTypeExtensionFieldKind.Calendar"
|
|
16
|
+
>
|
|
17
|
+
<date-time-value-preview
|
|
18
|
+
:value="props.value * 1000 /* FIXME 😬😬😬 backend format -> frontend format conversion */"
|
|
19
|
+
/>
|
|
20
|
+
</template>
|
|
21
|
+
<template v-else>
|
|
22
|
+
{{ props.value }}
|
|
23
|
+
</template>
|
|
5
24
|
</template>
|
|
6
25
|
|
|
7
26
|
<script setup lang="ts">
|
|
8
|
-
|
|
27
|
+
import { WtTypeExtensionFieldKind } from '@webitel/ui-sdk/enums';
|
|
28
|
+
import { computed } from 'vue';
|
|
9
29
|
|
|
10
|
-
|
|
30
|
+
import { DynamicFilterPreviewComponentProps } from '../../types/DynamicFilterPreviewComponent';
|
|
31
|
+
import DateTimeValuePreview from '../_shared/date-time-filter/date-time-filter-value-preview.vue';
|
|
32
|
+
import HasOptionValuePreview from '../_shared/has-options/has-option-filter-value-preview.vue';
|
|
33
|
+
import LookupValuePreview from '../_shared/lookup-filter-preview/lookup-filter-value-preview.vue';
|
|
34
|
+
import { ITypeExtensionFilterConfig } from './index';
|
|
11
35
|
|
|
36
|
+
const props = defineProps<DynamicFilterPreviewComponentProps & { filterConfig: ITypeExtensionFilterConfig }>();
|
|
37
|
+
|
|
38
|
+
const showLookupValuePreview = computed(() => {
|
|
39
|
+
return [WtTypeExtensionFieldKind.Multiselect, WtTypeExtensionFieldKind.Select]
|
|
40
|
+
.includes(props.filterConfig.field.kind);
|
|
41
|
+
});
|
|
12
42
|
</script>
|
|
13
43
|
|
|
14
44
|
<style scoped lang="scss">
|
|
15
|
-
.type-extension-filter-value-preview {
|
|
16
|
-
|
|
17
|
-
}
|
|
18
45
|
</style>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>{{ date }}</div>
|
|
3
|
+
</template>
|
|
4
|
+
|
|
5
|
+
<script lang="ts" setup>
|
|
6
|
+
import { ref } from 'vue';
|
|
7
|
+
|
|
8
|
+
const props = defineProps<{
|
|
9
|
+
value: number[];
|
|
10
|
+
}>();
|
|
11
|
+
|
|
12
|
+
const date = ref(new Date(+props.value).toLocaleString());
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<style scoped></style>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>{{ localeValue }}</div>
|
|
3
|
+
</template>
|
|
4
|
+
|
|
5
|
+
<script lang="ts" setup>
|
|
6
|
+
import { usePrettifyBooleanValuePreview } from '../../../composables/booleanFilterToolkit';
|
|
7
|
+
|
|
8
|
+
const props = defineProps<{
|
|
9
|
+
value: boolean;
|
|
10
|
+
}>();
|
|
11
|
+
|
|
12
|
+
const { localeValue } = usePrettifyBooleanValuePreview(props.value);
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<style scoped></style>
|
|
@@ -59,10 +59,6 @@ import ContactGroupFilter from './contact-group/contact-group-filter-value-field
|
|
|
59
59
|
import ContactGroupFilterPreview from './contact-group/contact-group-filter-value-preview.vue';
|
|
60
60
|
import CreatedAtFilterValueField from './created-at/created-at-filter-value-field.vue';
|
|
61
61
|
import CreatedAtFilterPreview from './created-at/created-at-filter-value-preview.vue';
|
|
62
|
-
import CreatedAtFromFilter from './created-at-from/created-at-from-filter-value-field.vue';
|
|
63
|
-
import CreatedAtFromFilterPreview from './created-at-from/created-at-from-filter-value-preview.vue';
|
|
64
|
-
import CreatedAtToFilter from './created-at-to/created-at-to-filter-value-field.vue';
|
|
65
|
-
import CreatedAtToFilterPreview from './created-at-to/created-at-to-filter-value-preview.vue';
|
|
66
62
|
import { searchMethod as gatewaySearchMethod } from './gateway/config';
|
|
67
63
|
import GatewayFilter from './gateway/gateway-filter-value-field.vue';
|
|
68
64
|
import GatewayFilterPreview from './gateway/gateway-filter-value-preview.vue';
|
|
@@ -144,10 +140,6 @@ export {
|
|
|
144
140
|
ContactGroupFilter,
|
|
145
141
|
ContactGroupFilterPreview,
|
|
146
142
|
CreatedAtFilterValueField,
|
|
147
|
-
CreatedAtFromFilter,
|
|
148
|
-
CreatedAtFromFilterPreview,
|
|
149
|
-
CreatedAtToFilter,
|
|
150
|
-
CreatedAtToFilterPreview,
|
|
151
143
|
GatewayFilter,
|
|
152
144
|
GatewayFilterPreview,
|
|
153
145
|
GranteeFilter,
|
|
@@ -208,8 +200,6 @@ export const FilterOptionToValueComponentMap: Record<
|
|
|
208
200
|
[FilterOption.User]: UserFilter,
|
|
209
201
|
[FilterOption.Variable]: VariableFilter,
|
|
210
202
|
[FilterOption.CreatedAt]: CreatedAtFilterValueField,
|
|
211
|
-
[FilterOption.CreatedAtFrom]: CreatedAtFromFilter,
|
|
212
|
-
[FilterOption.CreatedAtTo]: CreatedAtToFilter,
|
|
213
203
|
[FilterOption.CaseStatus]: CaseStatusFilterValueField,
|
|
214
204
|
[FilterOption.CaseSource]: CaseSourceFilterValueField,
|
|
215
205
|
[FilterOption.CaseService]: CaseServiceFilterValueField,
|
|
@@ -254,8 +244,6 @@ export const FilterOptionToPreviewComponentMap: Record<
|
|
|
254
244
|
[FilterOption.HasTranscription]: HasTranscriptionFilterPreview,
|
|
255
245
|
[FilterOption.User]: UserFilterPreview,
|
|
256
246
|
[FilterOption.Variable]: VariableFilterPreview,
|
|
257
|
-
[FilterOption.CreatedAtFrom]: CreatedAtFromFilterPreview,
|
|
258
|
-
[FilterOption.CreatedAtTo]: CreatedAtToFilterPreview,
|
|
259
247
|
[FilterOption.CaseStatus]: CaseStatusFilterValuePreview,
|
|
260
248
|
[FilterOption.CaseSource]: CaseSourceFilterValuePreview,
|
|
261
249
|
[FilterOption.CaseService]: CaseServiceFilterValuePreview,
|