@webitel/ui-datalist 1.0.5 → 1.0.7
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 +4 -3
- package/src/filter-presets/components/_shared/preset-filters-preview.vue +2 -11
- package/src/filter-presets/components/apply-preset/apply-preset-action.vue +5 -0
- package/src/filter-presets/components/save-preset/save-preset-action.vue +31 -4
- package/src/filter-presets/components/save-preset/save-preset-popup.vue +5 -1
- package/src/filters/classes/FiltersManager.ts +9 -3
- package/src/filters/components/dynamic-filter-add-action.vue +2 -3
- package/src/filters/components/filter-options/_shared/lookup-filter-preview/lookup-filter-value-preview.vue +21 -0
- package/src/filters/components/filter-options/agent/agent-filter-value-preview.vue +4 -20
- package/src/filters/components/filter-options/agent/config.js +0 -1
- package/src/filters/components/filter-options/contact/contact-filter-value-preview.vue +4 -20
- package/src/filters/components/filter-options/created-at/created-at-filter-value-field.vue +97 -0
- package/src/filters/components/filter-options/created-at/created-at-filter-value-preview.vue +64 -0
- package/src/filters/components/filter-options/gateway/gateway-filter-value-preview.vue +6 -21
- package/src/filters/components/filter-options/grantee/grantee-filter-value-preview.vue +6 -21
- package/src/filters/components/filter-options/index.ts +45 -0
- package/src/filters/components/filter-options/queue/queue-filter-value-preview.vue +4 -20
- package/src/filters/components/filter-options/rated-by/rated-by-filter-value-preview.vue +6 -21
- package/src/filters/components/filter-options/service-case/config.js +1 -1
- package/src/filters/components/filter-options/team/team-filter-value-preview.vue +4 -20
- package/src/filters/components/filter-options/user/user-filter-value-preview.vue +6 -21
- package/src/filters/components/preview/dynamic-filter-preview-info.vue +1 -0
- package/src/filters/components/preview/dynamic-filter-preview.vue +82 -19
- package/src/filters/components/search-bar/dynamic-filter-search.vue +123 -0
- package/src/filters/components/search-bar/types/DynamicFilterSearch.d.ts +5 -0
- package/src/filters/components/table-filters-panel.vue +25 -27
- package/src/filters/enums/FilterOption.ts +12 -2
- package/src/filters/index.ts +1 -1
- package/src/filters/components/dynamic-filter-search.vue +0 -60
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webitel/ui-datalist",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "Toolkit for building data lists in webitel ui system",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"lint:fix": "eslint --fix ./src && prettier --write --check ./src",
|
|
@@ -29,12 +29,13 @@
|
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"vue": "^3.5",
|
|
31
31
|
"axios": "^1",
|
|
32
|
-
"pinia": "^3.x"
|
|
32
|
+
"pinia": "^3.x",
|
|
33
|
+
"date-fns": "^4"
|
|
33
34
|
},
|
|
34
35
|
"dependencies": {
|
|
35
36
|
"@vuelidate/core": "^2.0.3",
|
|
36
37
|
"@vuelidate/validators": "^2.0.4",
|
|
37
|
-
"@webitel/ui-sdk": "^25.4.
|
|
38
|
+
"@webitel/ui-sdk": "^25.4.55"
|
|
38
39
|
},
|
|
39
40
|
"devDependencies": {
|
|
40
41
|
"vue-tsc": "^2.2.8",
|
|
@@ -9,16 +9,8 @@
|
|
|
9
9
|
v-for="filter of props.filters"
|
|
10
10
|
:key="filter.name"
|
|
11
11
|
:filter="filter"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<template #info>
|
|
15
|
-
<component
|
|
16
|
-
:is="FilterOptionToPreviewComponentMap[filter.name]"
|
|
17
|
-
:value="filter.value"
|
|
18
|
-
>
|
|
19
|
-
</component>
|
|
20
|
-
</template>
|
|
21
|
-
</dynamic-filter-preview>
|
|
12
|
+
readonly
|
|
13
|
+
/>
|
|
22
14
|
</template>
|
|
23
15
|
</dynamic-filter-panel-wrapper>
|
|
24
16
|
</div>
|
|
@@ -30,7 +22,6 @@ import { useI18n } from 'vue-i18n';
|
|
|
30
22
|
|
|
31
23
|
import type { IFilter } from '../../../filters';
|
|
32
24
|
import DynamicFilterPanelWrapper from '../../../filters/components/dynamic-filter-panel-wrapper.vue';
|
|
33
|
-
import { FilterOptionToPreviewComponentMap } from '../../../filters/components/filter-options';
|
|
34
25
|
import DynamicFilterPreview from '../../../filters/components/preview/dynamic-filter-preview.vue';
|
|
35
26
|
|
|
36
27
|
type Props = {
|
|
@@ -91,6 +91,11 @@ const props = defineProps<{
|
|
|
91
91
|
*/
|
|
92
92
|
namespace: string;
|
|
93
93
|
usePresetsStore: Store;
|
|
94
|
+
/**
|
|
95
|
+
* @description
|
|
96
|
+
* Is needed for preset to exclude filter values, not related to filters panel
|
|
97
|
+
*/
|
|
98
|
+
filterOptions: FilterOption[];
|
|
94
99
|
}>();
|
|
95
100
|
|
|
96
101
|
const emit = defineEmits<{
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
!presetToOverwriteWith /* on 'overwrite preset' popup hide this popup, but don't reset it*/
|
|
15
15
|
"
|
|
16
16
|
:shown="true /* coz visibility is controlled by v-if*/"
|
|
17
|
-
:filters-manager="
|
|
17
|
+
:filters-manager="localFiltersManager"
|
|
18
18
|
:namespace="namespace"
|
|
19
19
|
@submit="handlePresetSubmit"
|
|
20
20
|
@close="showSaveForm = false"
|
|
@@ -32,11 +32,15 @@
|
|
|
32
32
|
<script lang="ts" setup>
|
|
33
33
|
import { WtIconAction } from '@webitel/ui-sdk/components';
|
|
34
34
|
import { IconAction } from '@webitel/ui-sdk/enums';
|
|
35
|
-
import { computed, inject, type Ref, ref } from 'vue';
|
|
35
|
+
import { computed, inject, reactive, type Ref, ref, watch } from 'vue';
|
|
36
36
|
import { useI18n } from 'vue-i18n';
|
|
37
37
|
import { EnginePresetQuery } from 'webitel-sdk';
|
|
38
38
|
|
|
39
|
-
import {
|
|
39
|
+
import {
|
|
40
|
+
createFiltersManager,
|
|
41
|
+
FilterOption,
|
|
42
|
+
IFiltersManager,
|
|
43
|
+
} from '../../../filters';
|
|
40
44
|
import {
|
|
41
45
|
addPreset,
|
|
42
46
|
getPresetList,
|
|
@@ -47,21 +51,44 @@ import SavePresetPopup, { SubmitConfig } from './save-preset-popup.vue';
|
|
|
47
51
|
|
|
48
52
|
const props = defineProps<{
|
|
49
53
|
/**
|
|
54
|
+
* @description
|
|
50
55
|
* presets "section" namespace
|
|
51
56
|
*/
|
|
52
57
|
namespace: string;
|
|
58
|
+
/**
|
|
59
|
+
* @author @dlohvinov
|
|
60
|
+
* serves as a source for local filters manager
|
|
61
|
+
*/
|
|
53
62
|
filtersManager: IFiltersManager;
|
|
63
|
+
/**
|
|
64
|
+
* @description
|
|
65
|
+
* Is needed for preset to exclude filter values, not related to filters panel
|
|
66
|
+
*/
|
|
67
|
+
filterOptions: FilterOption[];
|
|
54
68
|
}>();
|
|
55
69
|
|
|
56
70
|
const eventBus = inject('$eventBus');
|
|
57
71
|
|
|
72
|
+
const localFiltersManager = reactive(createFiltersManager());
|
|
73
|
+
|
|
74
|
+
watch(
|
|
75
|
+
props.filtersManager,
|
|
76
|
+
() => {
|
|
77
|
+
localFiltersManager.reset();
|
|
78
|
+
localFiltersManager.fromString(
|
|
79
|
+
props.filtersManager.toString({ include: props.filterOptions }),
|
|
80
|
+
);
|
|
81
|
+
},
|
|
82
|
+
{ immediate: true },
|
|
83
|
+
);
|
|
84
|
+
|
|
58
85
|
const { t } = useI18n();
|
|
59
86
|
|
|
60
87
|
/**
|
|
61
88
|
* disable "save" btn if there's nothing to save
|
|
62
89
|
* */
|
|
63
90
|
const disableAction = computed(() => {
|
|
64
|
-
return !
|
|
91
|
+
return !localFiltersManager.getAllKeys().length;
|
|
65
92
|
});
|
|
66
93
|
|
|
67
94
|
/**
|
|
@@ -53,7 +53,7 @@ import { computed, reactive, ref } from 'vue';
|
|
|
53
53
|
import { useI18n } from 'vue-i18n';
|
|
54
54
|
import { EnginePresetQuery } from 'webitel-sdk';
|
|
55
55
|
|
|
56
|
-
import type { IFiltersManager } from '../../../
|
|
56
|
+
import type { IFiltersManager } from '../../../filters';
|
|
57
57
|
import PresetDescriptionField from '../_shared/input-fields/preset-description-field.vue';
|
|
58
58
|
import PresetNameField from '../_shared/input-fields/preset-name-field.vue';
|
|
59
59
|
import PresetFiltersPreview from '../_shared/preset-filters-preview.vue';
|
|
@@ -65,6 +65,10 @@ export type SubmitConfig = {
|
|
|
65
65
|
};
|
|
66
66
|
|
|
67
67
|
const props = defineProps<{
|
|
68
|
+
/**
|
|
69
|
+
* @description
|
|
70
|
+
* is needed here for `.toString()`
|
|
71
|
+
*/
|
|
68
72
|
filtersManager: IFiltersManager;
|
|
69
73
|
}>();
|
|
70
74
|
|
|
@@ -55,7 +55,7 @@ class FiltersManager implements IFiltersManager {
|
|
|
55
55
|
return filter;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
deleteFilter({ name }:
|
|
58
|
+
deleteFilter({ name }: { name: FilterName }): IFilter {
|
|
59
59
|
const filter = this.filters.get(name);
|
|
60
60
|
this.filters.delete(name);
|
|
61
61
|
return filter;
|
|
@@ -70,8 +70,14 @@ class FiltersManager implements IFiltersManager {
|
|
|
70
70
|
return filters;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
toString(
|
|
74
|
-
|
|
73
|
+
toString({
|
|
74
|
+
include,
|
|
75
|
+
exclude,
|
|
76
|
+
}: {
|
|
77
|
+
include?: FilterName[];
|
|
78
|
+
exclude?: FilterName[];
|
|
79
|
+
} = {}): string {
|
|
80
|
+
const filtersData = this.getFiltersList({ include, exclude }).reduce(
|
|
75
81
|
(acc, { name, label, value }) => {
|
|
76
82
|
if (isEmpty(value) && value == null) return acc;
|
|
77
83
|
|
|
@@ -21,8 +21,7 @@
|
|
|
21
21
|
:options="props.filterOptions"
|
|
22
22
|
@cancel="() => tooltipSlotScope.hide()"
|
|
23
23
|
@submit="
|
|
24
|
-
(payload) =>
|
|
25
|
-
submitFilterChange(payload, { hide: tooltipSlotScope.hide })
|
|
24
|
+
(payload) => submit(payload, { hide: tooltipSlotScope.hide })
|
|
26
25
|
"
|
|
27
26
|
/>
|
|
28
27
|
</slot>
|
|
@@ -54,7 +53,7 @@ const emit = defineEmits<{
|
|
|
54
53
|
'add:filter': [FilterInitParams];
|
|
55
54
|
}>();
|
|
56
55
|
|
|
57
|
-
const
|
|
56
|
+
const submit = (payload: FilterInitParams, { hide }) => {
|
|
58
57
|
emit('add:filter', payload);
|
|
59
58
|
hide();
|
|
60
59
|
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ul v-if="value">
|
|
3
|
+
<li
|
|
4
|
+
v-for="({ name, id }, index) of value"
|
|
5
|
+
:key="id || index"
|
|
6
|
+
>
|
|
7
|
+
{{ name }}
|
|
8
|
+
</li>
|
|
9
|
+
</ul>
|
|
10
|
+
</template>
|
|
11
|
+
|
|
12
|
+
<script lang="ts" setup>
|
|
13
|
+
defineProps<{
|
|
14
|
+
/**
|
|
15
|
+
* would be great to use a type for this
|
|
16
|
+
* */
|
|
17
|
+
value: Record<string, unknown>[];
|
|
18
|
+
}>();
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<style scoped></style>
|
|
@@ -1,31 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
<li
|
|
4
|
-
v-for="({ name }, index) of localValue"
|
|
5
|
-
:key="index"
|
|
6
|
-
>
|
|
7
|
-
{{ name }}
|
|
8
|
-
</li>
|
|
9
|
-
</ul>
|
|
2
|
+
<lookup-filter-value-preview v-bind="props" />
|
|
10
3
|
</template>
|
|
11
4
|
|
|
12
5
|
<script lang="ts" setup>
|
|
13
|
-
import {
|
|
6
|
+
import type { EngineAgent } from 'webitel-sdk';
|
|
14
7
|
|
|
15
|
-
import
|
|
8
|
+
import LookupFilterValuePreview from '../_shared/lookup-filter-preview/lookup-filter-value-preview.vue';
|
|
16
9
|
|
|
17
10
|
const props = defineProps<{
|
|
18
|
-
value:
|
|
11
|
+
value: EngineAgent[];
|
|
19
12
|
}>();
|
|
20
|
-
|
|
21
|
-
const localValue = ref([]);
|
|
22
|
-
|
|
23
|
-
const getLocalValue = async () => {
|
|
24
|
-
const { items } = await searchMethod({ id: props.value });
|
|
25
|
-
localValue.value = items;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
getLocalValue();
|
|
29
13
|
</script>
|
|
30
14
|
|
|
31
15
|
<style scoped></style>
|
|
@@ -1,31 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
<li
|
|
4
|
-
v-for="({ name }, index) of localValue"
|
|
5
|
-
:key="index"
|
|
6
|
-
>
|
|
7
|
-
{{ name }}
|
|
8
|
-
</li>
|
|
9
|
-
</ul>
|
|
2
|
+
<lookup-filter-value-preview v-bind="props" />
|
|
10
3
|
</template>
|
|
11
4
|
|
|
12
5
|
<script lang="ts" setup>
|
|
13
|
-
import {
|
|
6
|
+
import type { WebitelContactsContact } from 'webitel-sdk';
|
|
14
7
|
|
|
15
|
-
import
|
|
8
|
+
import LookupFilterValuePreview from '../_shared/lookup-filter-preview/lookup-filter-value-preview.vue';
|
|
16
9
|
|
|
17
10
|
const props = defineProps<{
|
|
18
|
-
value:
|
|
11
|
+
value: WebitelContactsContact[];
|
|
19
12
|
}>();
|
|
20
|
-
|
|
21
|
-
const localValue = ref([]);
|
|
22
|
-
|
|
23
|
-
const getLocalValue = async () => {
|
|
24
|
-
const { items } = await searchMethod({ id: props.value });
|
|
25
|
-
localValue.value = items;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
getLocalValue();
|
|
29
13
|
</script>
|
|
30
14
|
|
|
31
15
|
<style scoped></style>
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="created-at-filter-value-field">
|
|
3
|
+
<wt-radio
|
|
4
|
+
v-for="value of radioOpts"
|
|
5
|
+
:key="value"
|
|
6
|
+
v-model="selectedRadioValue"
|
|
7
|
+
:label="t(`webitelUI.filters.datetime.${value}`)"
|
|
8
|
+
:value="value"
|
|
9
|
+
@input="handleRadioChange"
|
|
10
|
+
/>
|
|
11
|
+
<wt-datepicker
|
|
12
|
+
v-if="showDatepickers"
|
|
13
|
+
:value="model.from"
|
|
14
|
+
:label="t('reusable.from')"
|
|
15
|
+
mode="datetime"
|
|
16
|
+
@input="changeAbsoluteValue($event, 'from')"
|
|
17
|
+
/>
|
|
18
|
+
<wt-datepicker
|
|
19
|
+
v-if="showDatepickers"
|
|
20
|
+
:value="model.to"
|
|
21
|
+
:label="t('reusable.to')"
|
|
22
|
+
mode="datetime"
|
|
23
|
+
@input="changeAbsoluteValue($event, 'to')"
|
|
24
|
+
/>
|
|
25
|
+
</div>
|
|
26
|
+
</template>
|
|
27
|
+
|
|
28
|
+
<script lang="ts" setup>
|
|
29
|
+
import { WtRadio } from '@webitel/ui-sdk/components';
|
|
30
|
+
import { RelativeDatetimeValue } from '@webitel/ui-sdk/enums';
|
|
31
|
+
import { endOfToday, startOfToday } from 'date-fns';
|
|
32
|
+
import { computed, ref } from 'vue';
|
|
33
|
+
import { useI18n } from 'vue-i18n';
|
|
34
|
+
|
|
35
|
+
const model = defineModel<
|
|
36
|
+
RelativeDatetimeValue | { from: number; to: number }
|
|
37
|
+
>();
|
|
38
|
+
|
|
39
|
+
const { t } = useI18n();
|
|
40
|
+
|
|
41
|
+
const radioOpts = [
|
|
42
|
+
RelativeDatetimeValue.Today,
|
|
43
|
+
RelativeDatetimeValue.ThisWeek,
|
|
44
|
+
RelativeDatetimeValue.ThisMonth,
|
|
45
|
+
RelativeDatetimeValue.Custom,
|
|
46
|
+
];
|
|
47
|
+
|
|
48
|
+
const selectedRadioValue = ref();
|
|
49
|
+
|
|
50
|
+
const initialize = () => {
|
|
51
|
+
if (!model.value) {
|
|
52
|
+
/* initialize */
|
|
53
|
+
selectedRadioValue.value = radioOpts[0];
|
|
54
|
+
model.value = selectedRadioValue.value;
|
|
55
|
+
} else if (typeof model.value === 'string') {
|
|
56
|
+
/* RelativeDatetimeValue */
|
|
57
|
+
selectedRadioValue.value = model.value;
|
|
58
|
+
} else {
|
|
59
|
+
/* { from, to } */
|
|
60
|
+
selectedRadioValue.value = RelativeDatetimeValue.Custom;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
initialize();
|
|
65
|
+
|
|
66
|
+
const showDatepickers = computed(() => {
|
|
67
|
+
return selectedRadioValue.value === RelativeDatetimeValue.Custom;
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
const handleRadioChange = (value: RelativeDatetimeValue) => {
|
|
71
|
+
if (value === RelativeDatetimeValue.Custom) {
|
|
72
|
+
model.value = {
|
|
73
|
+
from: startOfToday().getTime(),
|
|
74
|
+
to: endOfToday().getTime(),
|
|
75
|
+
};
|
|
76
|
+
} else {
|
|
77
|
+
model.value = value;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const changeAbsoluteValue = (value: number, prop: 'from' | 'to') => {
|
|
82
|
+
const newModelValue = {
|
|
83
|
+
...(model.value as { from: number; to: number }),
|
|
84
|
+
[prop]: value,
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
model.value = newModelValue;
|
|
88
|
+
};
|
|
89
|
+
</script>
|
|
90
|
+
|
|
91
|
+
<style scoped>
|
|
92
|
+
.created-at-filter-value-field {
|
|
93
|
+
display: flex;
|
|
94
|
+
flex-direction: column;
|
|
95
|
+
gap: var(--spacing-xs);
|
|
96
|
+
}
|
|
97
|
+
</style>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="created-at-filter-value-preview">
|
|
3
|
+
<p v-if="isRelativeValue">
|
|
4
|
+
{{ t(`webitelUI.filters.datetime.${props.value}`) }}
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<template v-else>
|
|
8
|
+
<div>
|
|
9
|
+
<p class="created-at-filter-value-preview__title">
|
|
10
|
+
{{ t('reusable.from') }}
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<span>{{ from }}</span>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div>
|
|
17
|
+
<p class="created-at-filter-value-preview__title">
|
|
18
|
+
{{ t('reusable.to') }}
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
<span>{{ to }}</span>
|
|
22
|
+
</div>
|
|
23
|
+
</template>
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script lang="ts" setup>
|
|
28
|
+
import { RelativeDatetimeValue } from '@webitel/ui-sdk/enums';
|
|
29
|
+
import { isRelativeDatetimeValue } from '@webitel/ui-sdk/scripts';
|
|
30
|
+
import { computed } from 'vue';
|
|
31
|
+
import { useI18n } from 'vue-i18n';
|
|
32
|
+
|
|
33
|
+
const props = defineProps<{
|
|
34
|
+
value: { from: number; to: number } | RelativeDatetimeValue;
|
|
35
|
+
}>();
|
|
36
|
+
|
|
37
|
+
const { t } = useI18n();
|
|
38
|
+
|
|
39
|
+
const isRelativeValue = computed(() => {
|
|
40
|
+
return isRelativeDatetimeValue(props.value);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
const from = computed(() => {
|
|
44
|
+
return isRelativeDatetimeValue.value
|
|
45
|
+
? false
|
|
46
|
+
: new Date(props.value.from).toLocaleString();
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
const to = computed(() => {
|
|
50
|
+
return isRelativeDatetimeValue.value
|
|
51
|
+
? false
|
|
52
|
+
: new Date(props.value.to).toLocaleString();
|
|
53
|
+
});
|
|
54
|
+
</script>
|
|
55
|
+
|
|
56
|
+
<style lang="scss" scoped>
|
|
57
|
+
@use '@webitel/styleguide/typography' as *;
|
|
58
|
+
|
|
59
|
+
.duration-filter-value-preview {
|
|
60
|
+
&__title {
|
|
61
|
+
@extend %typo-subtitle-1;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
</style>
|
|
@@ -1,31 +1,16 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
<li
|
|
4
|
-
v-for="({ name }, index) of localValue"
|
|
5
|
-
:key="index"
|
|
6
|
-
>
|
|
7
|
-
{{ name }}
|
|
8
|
-
</li>
|
|
9
|
-
</ul>
|
|
2
|
+
<lookup-filter-value-preview v-bind="props" />
|
|
10
3
|
</template>
|
|
11
4
|
|
|
12
5
|
<script lang="ts" setup>
|
|
13
|
-
import
|
|
14
|
-
|
|
15
|
-
import { searchMethod } from './config.js';
|
|
6
|
+
import LookupFilterValuePreview from '../_shared/lookup-filter-preview/lookup-filter-value-preview.vue';
|
|
16
7
|
|
|
17
8
|
const props = defineProps<{
|
|
18
|
-
|
|
9
|
+
/**
|
|
10
|
+
* would be great to use generated type for this
|
|
11
|
+
* */
|
|
12
|
+
value: Record<string, unknown>[];
|
|
19
13
|
}>();
|
|
20
|
-
|
|
21
|
-
const localValue = ref([]);
|
|
22
|
-
|
|
23
|
-
const getLocalValue = async () => {
|
|
24
|
-
const { items } = await searchMethod({ id: props.value });
|
|
25
|
-
localValue.value = items;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
getLocalValue();
|
|
29
14
|
</script>
|
|
30
15
|
|
|
31
16
|
<style scoped></style>
|
|
@@ -1,31 +1,16 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
<li
|
|
4
|
-
v-for="({ name }, index) of localValue"
|
|
5
|
-
:key="index"
|
|
6
|
-
>
|
|
7
|
-
{{ name }}
|
|
8
|
-
</li>
|
|
9
|
-
</ul>
|
|
2
|
+
<lookup-filter-value-preview v-bind="props" />
|
|
10
3
|
</template>
|
|
11
4
|
|
|
12
5
|
<script lang="ts" setup>
|
|
13
|
-
import
|
|
14
|
-
|
|
15
|
-
import { searchMethod } from './config.js';
|
|
6
|
+
import LookupFilterValuePreview from '../_shared/lookup-filter-preview/lookup-filter-value-preview.vue';
|
|
16
7
|
|
|
17
8
|
const props = defineProps<{
|
|
18
|
-
|
|
9
|
+
/**
|
|
10
|
+
* would be great to use generated type for this
|
|
11
|
+
* */
|
|
12
|
+
value: Record<string, unknown>[];
|
|
19
13
|
}>();
|
|
20
|
-
|
|
21
|
-
const localValue = ref([]);
|
|
22
|
-
|
|
23
|
-
const getLocalValue = async () => {
|
|
24
|
-
const { items } = await searchMethod({ ids: props.value });
|
|
25
|
-
localValue.value = items;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
getLocalValue();
|
|
29
14
|
</script>
|
|
30
15
|
|
|
31
16
|
<style scoped></style>
|