mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2026-01-25 11:19:41 +00:00
78 lines
1.8 KiB
Vue
78 lines
1.8 KiB
Vue
<template>
|
|
<TMagicCollapse class="m-fields-style-setter" v-model="collapseValue">
|
|
<template v-for="(item, index) in list" :key="index">
|
|
<TMagicCollapseItem :name="`${index}`">
|
|
<template #title><MIcon :icon="Grid"></MIcon>{{ item.title }}</template>
|
|
<component
|
|
v-if="item.component"
|
|
:is="item.component"
|
|
:values="model[name]"
|
|
:size="size"
|
|
:disabled="disabled"
|
|
@change="change"
|
|
></component>
|
|
</TMagicCollapseItem>
|
|
</template>
|
|
</TMagicCollapse>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { shallowRef } from 'vue';
|
|
import { Grid } from '@element-plus/icons-vue';
|
|
|
|
import { TMagicCollapse, TMagicCollapseItem } from '@tmagic/design';
|
|
import type { ContainerChangeEventData, FieldProps } from '@tmagic/form';
|
|
import type { StyleSchema } from '@tmagic/schema';
|
|
|
|
import MIcon from '@editor/components/Icon.vue';
|
|
|
|
import { Background, Border, Font, Layout, Position } from './pro/';
|
|
|
|
defineOptions({
|
|
name: 'MFieldsStyleSetter',
|
|
});
|
|
|
|
const props = defineProps<FieldProps<StyleSchema>>();
|
|
|
|
const emit = defineEmits<{
|
|
change: [v: any, eventData: ContainerChangeEventData];
|
|
}>();
|
|
|
|
const list = [
|
|
{
|
|
name: 'font',
|
|
title: '布局',
|
|
component: Layout,
|
|
},
|
|
{
|
|
title: '位置',
|
|
component: Position,
|
|
},
|
|
{
|
|
title: '背景',
|
|
component: Background,
|
|
},
|
|
{
|
|
title: '文字',
|
|
component: Font,
|
|
},
|
|
{
|
|
title: '边框与圆角',
|
|
component: Border,
|
|
},
|
|
];
|
|
|
|
const collapseValue = shallowRef(
|
|
Array(list.length)
|
|
.fill(1)
|
|
.map((x, i) => `${i}`),
|
|
);
|
|
|
|
const change = (v: any, eventData: ContainerChangeEventData) => {
|
|
eventData.changeRecords?.forEach((record) => {
|
|
record.propPath = `${props.name}.${record.propPath}`;
|
|
});
|
|
emit('change', v, eventData);
|
|
};
|
|
</script>
|