tmagic-editor/packages/table/src/PopoverColumn.vue
2024-12-09 20:21:34 +08:00

46 lines
1.2 KiB
Vue

<template>
<!-- @ts-nocheck -->
<TMagicTableColumn :label="config.label" :width="config.width" :fixed="config.fixed">
<template v-slot="scope">
<TMagicPopover
v-if="config.popover"
:placement="config.popover.placement"
:width="config.popover.width"
:trigger="config.popover.trigger"
:destroy-on-close="config.popover.destroyOnClose ?? true"
>
<MTable
v-if="config.popover.tableEmbed"
:show-header="config.showHeader"
:columns="config.table"
:data="(config.prop && scope.row[config.prop]) || []"
></MTable>
<template #reference>
<TMagicButton link type="primary"> {{ config.text || formatter(config, scope.row) }}</TMagicButton>
</template>
</TMagicPopover>
</template>
</TMagicTableColumn>
</template>
<script lang="ts" setup>
import { TMagicButton, TMagicPopover, TMagicTableColumn } from '@tmagic/design';
import { ColumnConfig } from './schema';
import MTable from './Table.vue';
import { formatter } from './utils';
defineOptions({
name: 'MTablePopoverColumn',
});
withDefaults(
defineProps<{
config: ColumnConfig;
}>(),
{
config: () => ({}),
},
);
</script>