Files
Ryan Wang 5953f17ed2 docs: update documentations for 2.22 (#537)
Signed-off-by: Ryan Wang <i@ryanc.cc>
2025-12-24 11:31:37 +08:00

158 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: API 变更日志
description: 记录每一个版本的插件 API 变更记录,方便开发者适配
---
## 2.22.0
### `@halo-dev/console-shared` 改名
从 Halo 2.11 支持个人中心以后,插件的 UI 项目能同时扩展 Console 和 UC所以为了避免歧义我们在 Halo 2.22 中将 UI 的 `@halo-dev/console-shared` 依赖更名为 `@halo-dev/ui-shared`,虽然在 Halo 中兼容了旧版依赖,但仍然推荐使用新版依赖,迁移方案:
```bash
pnpm uninstall @halo-dev/console-shared
pnpm install @halo-dev/ui-shared
```
然后在插件项目全局搜索 `@halo-dev/console-shared` 并替换为 `@halo-dev/ui-shared` 即可,同时需要将 `plugin.yaml``spec.requires` 字段修改为 `>=2.22.0`
### `@halo-dev/ui-shared` 工具库
在 2.22.0 中Halo 在 `@halo-dev/ui-shared` 包中提供一些常用工具,用于减少部分业务的开发工作量,目前提供:
1. `stores`
1. `currentUser`:用于获取当前用户信息
2. `globalInfo`:用于获取网站一些公开的信息,比如外部访问地址
2. utils
1. `date`:时间日期格式化工具
2. `permission`:用户权限检查工具
3. `id`uuid 生成工具
4. `attachment`:附件相关工具,比如获取附件缩略图地址
3. events
1. `core:plugin:configMap:updated`:用于监听插件配置变更
详细文档可查阅:[共享工具库](./api-reference/ui/shared.md)
### UI 扩展点 > 附件选择选项卡类型更新
在 2.22.0 中,我们为 `AttachmentLike` 复合类型添加了 `mediaType` 字段,用于区分文件类型,方便在插入到文章时显示正确的媒体类型,如不填写,所选择的文件将作为链接插入到编辑器,所以实现了此扩展点的插件都需要进行改动,具体步骤:
1. 升级依赖
```bash
pnpm install @halo-dev/ui-shared@2.22.0
```
2. 提升 [plugin.yaml#spec.requires](./basics/manifest.md#字段详解) 版本为 `>=2.22.0`。
3. 按照[最新文档](./extension-points/ui/attachment-selector-create.md)修改插件代码
### 表单定义 > 新增 Iconify 图标选择器
在 2.22.0 中,我们为 FormKit 表单提供了通用的图标选择器,基于 [Iconify](https://icon-sets.iconify.design/),详细文档可查阅:[表单定义#Iconify](../../developer-guide/form-schema.md#iconify)
### 表单定义 > 新增 `array` 组件
在 2.22.0 中,我们为 FormKit 表单新增了 `array` 组件,用于定义一组数据,并计划使用 `array` 组件替换原有的 `repeater` 组件。详细文档可查阅:[表单定义#array](../../developer-guide/form-schema.md#array)
### 编辑器 > BubbleMenu 扩展点改动
在 Halo 2.22.0 中,我们升级了编辑器的 Tiptap 版本至 3.x由于 Tiptap 在 3.x 中做了一些破坏性更新且 Halo 也遵循其更新,因此如果插件扩展了编辑器,并使用了 BubbleMenu 扩展点,则需要根据以下方式进行更新升级。
1. 使用 `options` 代替 `tippyOptions`。
```diff
- tippyOptions: {
- fixed: false,
- },
+ options: {
+ strategy:"absolute",
+ },
```
2. 使用 `getReferencedVirtualElement` 代替 `getRenderContainer`。
```diff
- getRenderContainer: (node: HTMLElement) => {
- let container = node;
- if (container.nodeName === "#text") {
- container = node.parentElement as HTMLElement;
- }
- while (
- container &&
- container.classList &&
- !container.classList.contains("column")
- ) {
- container = container.parentElement as HTMLElement;
- }
- return container;
- },
+ getReferencedVirtualElement() {
+ const editor = this.editor;
+ if (!editor) {
+ return null;
+ }
+ const parentNode = findParentNode(
+ (node) => node.type.name === Column.name
+ )(editor.state.selection);
+ if (parentNode) {
+ const domRect = posToDOMRect(
+ editor.view,
+ parentNode.pos,
+ parentNode.pos + parentNode.node.nodeSize
+ );
+ return {
+ getBoundingClientRect: () => domRect,
+ getClientRects: () => [domRect],
+ };
+ }
+ return null;
+ },
```
3. 移除 `defaultAnimation`。
```diff
- defaultAnimation: false,
```
此外,扩展其他 Node 中 `BubbleMenu` 的旧方式将会失效,例如 [编辑器超链接卡片](https://github.com/halo-sigs/plugin-editor-hyperlink-card/blob/main/ui/src/editor/text-bubble-extension.ts) 扩展了 Text Node 的 `BubbleMenu`。 此版本中引入了 `extendsKey` 字段,用于扩展已有的 `BubbleMenu`。**需要已有的 `BubbleMenu` 设置了 PluginKey**。
用法如下:
```ts
Extension.create({
name: "expandTextBubbleMenu",
addOptions() {
return {
getBubbleMenu() {
return {
// 目标 BubbleMenu 的 PluginKey。当前版本会导出 Halo UI Editor 中的所有 PluginKey。
extendsKey: TEXT_BUBBLE_MENU_KEY,
items: [
{
priority: 10,
// 具有同一个 key 的 items 将会被覆盖
key: "textItem1",
props: { title: "ExpandText" },
},
],
};
},
};
},
}),
```
有关 `BubbleMenu` 扩展的详细文档可查阅:[悬浮菜单扩展](./extension-points/ui/default-editor-extension-create.md#4-悬浮菜单扩展)
### 编辑器 > 新增 getDraggableMenuItems 扩展点
在 Halo 2.22.0 中,我们为编辑器增加了拖拽菜单的功能,同时支持插件动态扩展拖拽菜单。与此同时,旧的 `getDraggable` 扩展点被移除,取而代之的是 `getDraggableMenuItems` 扩展点。
可直接移除 `getDraggable` 扩展点,不再使用,也无需考虑兼容性问题。
关于 `getDraggableMenuItems` 扩展点的详细文档可查阅:[拖拽菜单扩展](./extension-points/ui/default-editor-extension-create.md#5-拖拽菜单扩展)
### 表单定义 > 重构 `attachment` 表单类型
在 Halo 2.22 中,我们重构了原有的 attachment 表单类型,支持了预览和直接上传文件,并将旧版的表单类型更名为了 [attachmentInput](../form-schema.md#attachmentinput)