Files
docs/docs/developer-guide/plugin/extension-points/ui/theme-list-item-operation-create.md
guqing 717ee402f4 refactor: update permission control docs for plugin (#443)
### What this PR does?
重构权限控制部分文档并调整相应结构

```release-note
None
```
2024-10-25 08:01:56 +00:00

2.0 KiB

title, description
title description
主题数据列表操作菜单 扩展主题数据列表操作菜单 - theme:list-item:operation:create

此扩展点用于扩展主题数据列表的操作菜单项。

主题数据列表操作菜单

定义方式

export default definePlugin({
  extensionPoints: {
    "theme:list-item:operation:create": (
      theme: Ref<Theme>
    ): OperationItem<Theme>[] | Promise<OperationItem<Theme>[]> => {
      return [
        {
          priority: 10,
          component: markRaw(VDropdownItem),
          props: {},
          action: (item?: Theme) => {
            // do something
          },
          label: "foo",
          hidden: false,
          permissions: [],
          children: [],
        },
      ];
    },
  },
});
import OperationItem from "./interface/OperationItem.md";

<OperationItem />

示例

此示例将实现一个跳转到前台预览主题的操作菜单项。

import { definePlugin, type OperationItem } from "@halo-dev/console-shared";
import { VButton } from "@halo-dev/components";
import { markRaw, type Ref } from "vue";
import type { Theme } from "@halo-dev/api-client";

export default definePlugin({
  extensionPoints: {
    "theme:list-item:operation:create": (
      theme: Ref<Theme>
    ): OperationItem<Theme>[] | Promise<OperationItem<Theme>[]> => {
      return [
        {
          priority: 10,
          component: markRaw(VButton),
          props: {
            size: "sm",
          },
          action: (item?: Theme) => {
            window.open(`/?preview-theme=${item?.metadata.name}`);
          },
          label: "前台预览",
          hidden: false,
          permissions: [],
          children: [],
        },
      ];
    },
  },
});

实现案例

类型定义

Theme

import Theme from "./interface/Theme.md";

<Theme />