mirror of
https://github.com/halo-dev/docs.git
synced 2026-01-14 07:02:53 +08:00
158 lines
6.0 KiB
Markdown
158 lines
6.0 KiB
Markdown
---
|
||
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)
|