AIO 編輯器
AIO 編輯器總覽
config 驅動的 all-in-one 富文本編輯器系列,傳入設定即得完整編輯器。
@admin/aio-editor 是 config 驅動的 all-in-one tiptap 編輯器:consumer 不需要在 template 組裝任何子元件,傳一份 config 決定啟用哪些 extension、toolbar 按鈕、bubble menu 與 drag handle。
<template> <admin-aio-editor v-model="content" /></template>系列組成
| 文件 | 用途 |
|---|---|
| AioEditor | 主元件:demo、API 參考、注意事項 |
| Extensions | 全部 extension 逐一列出,含完整選項說明 |
Registry 單元只有一個:@admin/aio-editor。UI 與邏輯核心(extensions、預設 config、useAioEditor)同屬此單元(核心置於元件內 core/ 子目錄),安裝即取得完整編輯器;config 型別、enums 與各 default*Config 皆自 @admin/aio-editor 匯出。
與編輯器(editor-*)系列的差異
| 編輯器系列 | AIO 編輯器系列 | |
|---|---|---|
| 組裝方式 | template 組裝子元件 | config 驅動,單一元件 |
| 適合情境 | 需要細部客製 UI 結構 | 裝上就要一套完整編輯器 |
| 功能取捨 | 要什麼裝什麼(opt-in 包) | 預設全開,用 exclude 關閉 |
| 相依關係 | — | 與 editor-* 零耦合,可獨立安裝 |
安裝
pnpm dlx shadcn-vue@latest add @admin/aio-editorconfig 快速心智模型
const config: AioEditorConfig = { features: [], // 唯一宣告來源:按鈕排列 = 功能載入(未宣告即不載入) include: [], // 無按鈕載入能力(保 Ctrl+Z、輸入規則、Mention…;自動補齊硬依賴) exclude: [], // 排除任意 extension(一律生效、分級警告、同名替換) extensionsConfig: {}, // 各 extension 選項覆寫(深層 merge;陣列與 instance 整值取代、null 清除預設) extraExtensions: [], // 自訂 extension / 同名替換(優先權最高) toolbarOptions: {}, // 標籤 / 字級字體清單 / 色票 / requestUrl / requestColor bubbles: {}, // 掛載跟隨 features;個別 false 停用、物件覆寫、slot 替換 dragHandle: false, // false 停用或物件覆寫 paste: {}, // 貼上行為(純文字 / 清圖 / transform hooks) silence: false // 靜音內部警告}所有欄位皆可省略;未指定 features 時使用完整預設排列(35 顆)。按鈕依 extension 啟用狀態自動隱藏,不會出現壞按鈕。
兩層客製路徑
- config 層(推薦):
features/include/exclude/extensionsConfig/extraExtensions同名替換——客製全部留在你自己的程式碼,vendored 檔保持乾淨,未來shadcn add更新零衝突 - 改 vendored 源碼:shadcn 精神的最終逃生口——升級時需人工合併,建議只在 config 層做不到時使用各 extension 之完整選項見 Extensions 總覽。