diff --git a/console/docs/extension-points/entity-listitem-field.md b/console/docs/extension-points/entity-listitem-field.md index cbef8f17c..4b26da2bd 100644 --- a/console/docs/extension-points/entity-listitem-field.md +++ b/console/docs/extension-points/entity-listitem-field.md @@ -48,6 +48,6 @@ export interface EntityFieldItem { component: Raw; // 字段组件,可以使用 `@halo-dev/components` 中提供的 `VEntityField`,也可以自定义 props?: Record; // 组件的 props permissions?: string[]; // 权限设置 - visible?: boolean; // 是否可见 + hidden?: boolean; // 是否隐藏 } ``` diff --git a/console/docs/extension-points/entity-listitem-operation.md b/console/docs/extension-points/entity-listitem-operation.md index 0e1f76521..fb2588b13 100644 --- a/console/docs/extension-points/entity-listitem-operation.md +++ b/console/docs/extension-points/entity-listitem-operation.md @@ -8,10 +8,10 @@ 目前支持扩展的数据列表: -- 文章:`"post:list-item:operation:create"?: (post: Ref) => | EntityDropdownItem[] | Promise[]>` -- 插件:`"plugin:list-item:operation:create"?: (plugin: Ref) => | EntityDropdownItem[] | Promise[]>` -- 备份:`"backup:list-item:operation:create"?: (backup: Ref) => | EntityDropdownItem[] | Promise[]>` -- 主题:`"theme:list-item:operation:create"?: (theme: Ref) => | EntityDropdownItem[] | Promise[]>` +- 文章:`"post:list-item:operation:create"?: (post: Ref) => | OperationItem[] | Promise[]>` +- 插件:`"plugin:list-item:operation:create"?: (plugin: Ref) => | OperationItem[] | Promise[]>` +- 备份:`"backup:list-item:operation:create"?: (backup: Ref) => | OperationItem[] | Promise[]>` +- 主题:`"theme:list-item:operation:create"?: (theme: Ref) => | OperationItem[] | Promise[]>` 示例: @@ -32,7 +32,6 @@ export default definePlugin({ priority: 21, component: markRaw(VDropdownItem), label: "导出为 Markdown 文档", - visible: true, permissions: [], action: async (post: ListedPost) => { const { data } = await axios.get( @@ -54,17 +53,17 @@ export default definePlugin({ }); ``` -`EntityDropdownItem` 类型: +`OperationItem` 类型: ```ts -export interface EntityDropdownItem { +export interface OperationItem { priority: number; // 优先级,越小越靠前 component: Raw; // 菜单项组件,可以使用 `@halo-dev/components` 中提供的 `VDropdownItem`,也可以自定义 props?: Record; // 组件的 props action?: (item?: T) => void; // 点击事件 label?: string; // 菜单项名称 - visible?: boolean; // 是否可见 + hidden?: boolean; // 是否隐藏 permissions?: string[]; // 权限 - children?: EntityDropdownItem[]; // 子菜单 + children?: OperationItem[]; // 子菜单 } ``` diff --git a/console/packages/shared/src/index.ts b/console/packages/shared/src/index.ts index 605e66554..39a1e8192 100644 --- a/console/packages/shared/src/index.ts +++ b/console/packages/shared/src/index.ts @@ -10,3 +10,4 @@ export * from "./states/backup"; export * from "./states/plugin-installation-tabs"; export * from "./states/entity"; export * from "./states/theme-list-tabs"; +export * from "./states/operation"; diff --git a/console/packages/shared/src/states/entity.ts b/console/packages/shared/src/states/entity.ts index 996f55a37..9f3f1b413 100644 --- a/console/packages/shared/src/states/entity.ts +++ b/console/packages/shared/src/states/entity.ts @@ -1,21 +1,10 @@ import type { Component, Raw } from "vue"; -export interface EntityDropdownItem { - priority: number; - component: Raw; - props?: Record; - action?: (item?: T) => void; - label?: string; - visible?: boolean; - permissions?: string[]; - children?: EntityDropdownItem[]; -} - export interface EntityFieldItem { priority: number; position: "start" | "end"; component: Raw; props?: Record; permissions?: string[]; - visible?: boolean; + hidden?: boolean; } diff --git a/console/packages/shared/src/states/operation.ts b/console/packages/shared/src/states/operation.ts new file mode 100644 index 000000000..efc2807fb --- /dev/null +++ b/console/packages/shared/src/states/operation.ts @@ -0,0 +1,12 @@ +import type { Component, Raw } from "vue"; + +export interface OperationItem { + priority: number; + component: Raw; + props?: Record; + action?: (item?: T) => void; + label?: string; + hidden?: boolean; + permissions?: string[]; + children?: OperationItem[]; +} diff --git a/console/packages/shared/src/types/plugin.ts b/console/packages/shared/src/types/plugin.ts index 87f41bab6..09417d7d9 100644 --- a/console/packages/shared/src/types/plugin.ts +++ b/console/packages/shared/src/types/plugin.ts @@ -7,7 +7,8 @@ import type { AnyExtension } from "@tiptap/vue-3"; import type { CommentSubjectRefProvider } from "@/states/comment-subject-ref"; import type { BackupTab } from "@/states/backup"; import type { PluginInstallationTab } from "@/states/plugin-installation-tabs"; -import type { EntityDropdownItem, EntityFieldItem } from "@/states/entity"; +import type { EntityFieldItem } from "@/states/entity"; +import type { OperationItem } from "@/states/operation"; import type { ThemeListTab } from "@/states/theme-list-tabs"; import type { Backup, ListedPost, Plugin, Theme } from "@halo-dev/api-client"; @@ -42,17 +43,15 @@ export interface ExtensionPoint { "post:list-item:operation:create"?: ( post: Ref - ) => - | EntityDropdownItem[] - | Promise[]>; + ) => OperationItem[] | Promise[]>; "plugin:list-item:operation:create"?: ( plugin: Ref - ) => EntityDropdownItem[] | Promise[]>; + ) => OperationItem[] | Promise[]>; "backup:list-item:operation:create"?: ( backup: Ref - ) => EntityDropdownItem[] | Promise[]>; + ) => OperationItem[] | Promise[]>; "plugin:list-item:field:create"?: ( plugin: Ref @@ -62,7 +61,7 @@ export interface ExtensionPoint { "theme:list-item:operation:create"?: ( theme: Ref - ) => EntityDropdownItem[] | Promise[]>; + ) => OperationItem[] | Promise[]>; } export interface PluginModule { diff --git a/console/src/components/entity-fields/EntityFieldItems.vue b/console/src/components/entity-fields/EntityFieldItems.vue index 59086199f..2f5651740 100644 --- a/console/src/components/entity-fields/EntityFieldItems.vue +++ b/console/src/components/entity-fields/EntityFieldItems.vue @@ -1,5 +1,6 @@ diff --git a/console/src/components/entity/EntityDropdownItems.vue b/console/src/components/entity/EntityDropdownItems.vue index 27738fcb2..d9c0dbccd 100644 --- a/console/src/components/entity/EntityDropdownItems.vue +++ b/console/src/components/entity/EntityDropdownItems.vue @@ -1,10 +1,13 @@