Skip to content

AbpGridActions ​

AbpGridActions 将行操作集中显示:多个操作使用下拉菜单,一个操作使用按钮,空列表不显示控件。

业务页面的显式操作 ​

vue
<template>
  <div class="d-flex flex-wrap gap-4 align-items-center">
    <div>
      <p>Several actions</p>
      <AbpGridActions :record="book" :actions="actions" />
    </div>
    <div>
      <p>One action</p>
      <AbpGridActions :record="book" :actions="actions.slice(0, 1)" />
    </div>
    <div>
      <p>No actions</p>
      <AbpGridActions :record="book" :actions="[]" />
    </div>
  </div>
  <output aria-live="polite">{{ result }}</output>
</template>

<script setup lang="ts">
import { ref } from 'vue';
import { AbpGridActions, type RowAction } from '@lsw-abpvue/components';
interface Book {
  id: string;
  name: string;
}
const book: Book = { id: '1', name: '1984' };
const result = ref('Choose an action');
const actions: RowAction<Book>[] = [
  {
    text: 'Edit',
    icon: 'bi bi-pencil',
    action: record => {
      result.value = `Edit ${record.name}`;
    },
  },
  {
    text: 'Archive',
    action: record => {
      result.value = `Archive ${record.id}`;
    },
  },
];
</script>

示例只更新本地提示。RowAction<Book>.action 直接接收记录。接入后端时,在回调中使用生成的服务或页面命令。

权限与可见性 ​

显式传入 actions 时,由页面构造允许显示的列表。先根据权限和记录状态过滤,再传给组件。组件的 disabled 禁用全部操作,单个操作的 disabled 只禁用该项。客户端隐藏不能替代端点授权。

省略 actions 时,组件通过上层扩展标识读取实体操作贡献器。这时回调接收包含 record、getInjected 的 PropData,与示例直接接收记录不同。参见实体操作扩展。

确认与异步请求 ​

删除不会自动确认。先调用 ConfirmationService,只有 ConfirmationStatus.confirm 才发删除请求,成功后再刷新列表。返回 Promise 不会自动禁用全部操作,需要在页面命令中维护 busy 并绑定到 disabled,防止重复修改。

菜单行为 ​

菜单相对视口定位,避免被表格的横向滚动区域裁切。滚动或调整窗口大小会关闭菜单;Esc 关闭并把焦点还给触发按钮。单个图标操作可以设置 showOnlyIcon,但必须提供有意义的 text,本地化后的文字会作为可访问名称。

正式应用的操作标签应使用稳定的本地化 key。参见通知与确认。

属性、事件与插槽 ​

源码

类型来自公开契约,默认表达式来自当前实现。短横线表示没有显式默认值;省略的可选布尔属性通常为 false。

Props ​

名称类型必填默认值
recordR是—
indexnumber | undefined否0
actionsreadonly RowAction<R>[] | undefined否undefined
disabledboolean | undefined否false
textstring | undefined否undefined

Events ​

没有声明组件专有事件。

Slots ​

没有命名插槽。

非官方社区项目,采用 MIT 许可证,与 Volosoft 无关。