roymondchen 02eeb2e87f feat(editor): 统一列表字段添加按钮样式并支持新增后自动滚动
CodeSelect、EventSelect、DisplayConds 使用吸底全宽添加按钮;
group-list 新增后滚到最后一项,避开吸顶标题与吸底按钮。
2026-09-01 12:02:09 +08:00

56 lines
1.4 KiB
Vue

<template>
<div class="m-fields-display-conds">
<MGroupList
:config="config"
:name="name"
:disabled="disabled"
:model="model"
:last-values="lastValues"
:is-compare="isCompareMode"
:prop="prop"
:size="size"
@change="changeHandler"
></MGroupList>
</div>
</template>
<script lang="ts" setup>
import { computed, inject } from 'vue';
import type { DisplayCond } from '@tmagic/core';
import {
type ContainerChangeEventData,
type DisplayCondsConfig,
type FieldProps,
filterFunction,
type FormState,
MGroupList,
} from '@tmagic/form';
import { createDisplayCondsConfig } from '@editor/fields/configs/displayConds';
defineOptions({
name: 'm-fields-display-conds',
});
const emit = defineEmits<{
change: [value: DisplayCond | DisplayCond[], eventData?: ContainerChangeEventData];
}>();
const props = withDefaults(defineProps<FieldProps<DisplayCondsConfig>>(), {
disabled: false,
});
const mForm = inject<FormState | undefined>('mForm');
const parentFields = computed(() => filterFunction<string[]>(mForm, props.config.parentFields, props) || []);
const config = computed(() => createDisplayCondsConfig(props.config, props.name, parentFields.value));
const isCompareMode = computed(() => Boolean(props.isCompare && props.lastValues));
const changeHandler = (v: DisplayCond[], eventData?: ContainerChangeEventData) => {
emit('change', v, eventData);
};
</script>