tmagic-editor/packages/table/src/ActionButton.vue
roymondchen b183e71f64 feat(table): 抽取 ActionPopconfirm 并优化 sub-actions 展开交互
将 Popconfirm 逻辑抽离为独立组件,ActionButton 内置 tooltip 支持,sub-actions 触发按钮改用箭头图标切换展开状态。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-06 16:47:16 +08:00

52 lines
1.1 KiB
Vue

<template>
<TMagicTooltip
:placement="action.tooltipPlacement || 'top'"
:disabled="!Boolean(action.tooltip)"
:content="action.tooltip"
>
<TMagicButton
v-show="visible"
:class="btnClass"
link
size="small"
:type="action.buttonType || 'primary'"
:icon="action.icon"
:disabled="disabled(action.disabled, row)"
@click="onClick"
>
<span v-html="formatter(action.text, row)"></span>
</TMagicButton>
</TMagicTooltip>
</template>
<script lang="ts" setup>
import { TMagicButton, TMagicTooltip } from '@tmagic/design';
import { disabled, formatActionText as formatter } from './actionHelpers';
import { ColumnActionConfig } from './schema';
defineOptions({
name: 'MTableActionButton',
});
const props = withDefaults(
defineProps<{
action: ColumnActionConfig;
row: any;
index: number;
btnClass?: string;
visible?: boolean;
}>(),
{
btnClass: 'action-btn',
visible: true,
},
);
const emit = defineEmits<{
click: [action: ColumnActionConfig, row: any, index: number];
}>();
const onClick = () => emit('click', props.action, props.row, props.index);
</script>