@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webitel/ui-datalist",
3
- "version": "1.0.12",
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.66",
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 '../../classes/FilterConfig';
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 'lookup':
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 #[ExtensionFieldType.Select]="{ defaultProps }">
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
- <div class="type-extension-filter-value-preview">
3
- 213
4
- </div>
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
- const props = defineProps({});
27
+ import { WtTypeExtensionFieldKind } from '@webitel/ui-sdk/enums';
28
+ import { computed } from 'vue';
9
29
 
10
- const emit = defineEmits([]);
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,
@@ -19,8 +19,6 @@ export const FilterOption = {
19
19
  User: 'user',
20
20
  Variable: 'variable',
21
21
  CreatedAt: 'createdAt',
22
- CreatedAtFrom: 'createdAtFrom',
23
- CreatedAtTo: 'createdAtTo',
24
22
  CaseStatus: 'status',
25
23
  CaseSource: 'source',
26
24
  CaseService: 'service',
@@ -0,0 +1,8 @@
1
+ import { IFilter } from '../../../classes/Filter';
2
+ import { TFilterConfig } from './FilterConfig';
3
+
4
+ export type DynamicFilterPreviewComponentProps = {
5
+ value: unknown;
6
+ filterConfig: TFilterConfig;
7
+ filter: IFilter;
8
+ };