跳到主要内容
版本:next

插件数据列表显示字段

此扩展点用于扩展插件数据列表的显示字段。

插件数据列表显示字段

定义方式

export default definePlugin({
  extensionPoints: {
    "plugin:list-item:field:create": (plugin: Ref<Plugin>): EntityFieldItem[] | Promise<EntityFieldItem[]> => {
      return [
        {
          priority: 0,
          position: "start",
          component: markRaw(FooComponent),
          props: {},
          permissions: [],
          hidden: false,
        }
      ];
    },
  },
});
EntityFieldItem
export interface EntityFieldItem {
  priority: number;
  position: "start" | "end";
  component: Raw<Component>;
  props?: Record\<string, unknown\>;
  permissions?: string[];
  hidden?: boolean;
}

示例

此示例将添加一个显示插件 requires(版本要求)的字段。

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

export default definePlugin({
  extensionPoints: {
    "plugin:list-item:field:create": (plugin: Ref<Plugin>) => {
      return [
        {
          priority: 0,
          position: "end",
          component: markRaw(VEntityField),
          props: {
            description: plugin.value.spec.requires,
          },
          permissions: [],
          hidden: false,
        },
      ];
    },
  },
});

实现案例

类型定义

Plugin

export interface Plugin {
  apiVersion: "plugin.halo.run/v1alpha1"
  kind: "Plugin"
  metadata: {
    annotations: {}
    creationTimestamp: string         // 创建时间
    labels: {}
    name: string                      // 唯一标识
    version: number
  }
  spec: {
    author: {                         // 作者信息
      name: string
      website: string
    }
    configMapName: string             // 关联的 ConfigMap 模型,用于存储配置
    description: string               // 插件描述
    displayName: string               // 插件名称
    enabled: boolean
    homepage: string                  // 插件主页
    license: Array<{                  // 插件协议
      name: string
      url: string
    }>
    logo: string
    pluginDependencies: {}
    repo: string                      // 插件仓库地址
    requires: string                  // 所依赖的 Halo 版本
    settingName: string               // 关联的 Setting 模型,用于渲染配置表单
    version: string                   // 插件版本
  }
  status: {
    conditions: Array<{
      lastTransitionTime: string
      message: string
      reason: string
      status: string
      type: string
    }>
    entry: string
    lastProbeState: string
    lastStartTime: string
    loadLocation: string
    logo: string                      // 插件 Logo 地址
    phase: string
    stylesheet: string
  }
}