mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-09-21 14:30:00 +08:00
feat(editor): 优化数据源字段选择器交互
This commit is contained in:
parent
882d222800
commit
ef04fd31f0
@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="m-editor-data-source-field-select">
|
<div class="m-editor-data-source-field-select">
|
||||||
|
<template v-if="checkStrictly">
|
||||||
<TMagicSelect
|
<TMagicSelect
|
||||||
:model-value="selectDataSourceId"
|
:model-value="selectDataSourceId"
|
||||||
clearable
|
clearable
|
||||||
@ -40,6 +41,21 @@
|
|||||||
}"
|
}"
|
||||||
@change="fieldChangeHandler"
|
@change="fieldChangeHandler"
|
||||||
></TMagicCascader>
|
></TMagicCascader>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<TMagicCascader
|
||||||
|
v-else
|
||||||
|
clearable
|
||||||
|
filterable
|
||||||
|
:model-value="modelValue"
|
||||||
|
:disabled="disabled"
|
||||||
|
:size="size"
|
||||||
|
:options="cascaderOptions"
|
||||||
|
:props="{
|
||||||
|
checkStrictly,
|
||||||
|
}"
|
||||||
|
@change="onChangeHandler"
|
||||||
|
></TMagicCascader>
|
||||||
|
|
||||||
<TMagicButton
|
<TMagicButton
|
||||||
v-if="selectDataSourceId && hasDataSourceSidePanel"
|
v-if="selectDataSourceId && hasDataSourceSidePanel"
|
||||||
@ -132,6 +148,16 @@ const fieldsOptions = computed(() => {
|
|||||||
return getCascaderOptionsFromFields(ds.fields, props.dataSourceFieldType);
|
return getCascaderOptionsFromFields(ds.fields, props.dataSourceFieldType);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const cascaderOptions = computed(() => {
|
||||||
|
const options =
|
||||||
|
dataSources.value?.map((ds) => ({
|
||||||
|
label: ds.title || ds.id,
|
||||||
|
value: valueIsKey.value ? ds.id : `${DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX}${ds.id}`,
|
||||||
|
children: getCascaderOptionsFromFields(ds.fields, props.dataSourceFieldType),
|
||||||
|
})) || [];
|
||||||
|
return options.filter((option) => option.children.length);
|
||||||
|
});
|
||||||
|
|
||||||
const dsChangeHandler = (v: string) => {
|
const dsChangeHandler = (v: string) => {
|
||||||
modelValue.value = [v];
|
modelValue.value = [v];
|
||||||
emit('change', modelValue.value);
|
emit('change', modelValue.value);
|
||||||
@ -142,6 +168,11 @@ const fieldChangeHandler = (v: string[] = []) => {
|
|||||||
emit('change', modelValue.value);
|
emit('change', modelValue.value);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const onChangeHandler = (v: string[] = []) => {
|
||||||
|
modelValue.value = v;
|
||||||
|
emit('change', v);
|
||||||
|
};
|
||||||
|
|
||||||
const hasDataSourceSidePanel = computed(() =>
|
const hasDataSourceSidePanel = computed(() =>
|
||||||
(services?.uiService.get('sideBarItems') || []).find((item) => item.$key === SideItemKey.DATA_SOURCE),
|
(services?.uiService.get('sideBarItems') || []).find((item) => item.$key === SideItemKey.DATA_SOURCE),
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user