# 曦寒视图组件 · 全站正文 共 211 页。示例已按适配器内联为代码块。 索引见 https://ui.docs.xihanfun.com/llms.txt --- 来源:https://ui.docs.xihanfun.com/changelog # 更新日志 · XiHan.UI 本文件记录 XiHan.UI 各版本的变更。每条标注 **新增 / 修复 / 优化 / 调整 / 移除** 类别。只收录使用者可感知的变更,仓库自身的配置、CI、测试与门禁不列入。组件以 npm 包形式发布,升级前请留意「调整」类中的破坏性变更。 ## v5.0.0 (2026-10-21) 本版为打印、流程、表单、报表四款设计器补齐组件能力:多数组件改用标准结构,不写结构就能用;库内表单控件统一命名与表单状态继承;新增条件编辑器、格式输入、表达式输入框,首发设计器内核、设计器界面零件、受限表达式与 xlsx 写出四个包。少数事件、属性、类型、语言包键与覆盖槽有改动,全部包同号升到 5.0.0,升级前请看升级须知。 ::: warning 升级须知 - **日历族**:周、月、季度、年视图改为按行渲染,面板与 `buildPeriodGrid` 的 `cells` 改为 `rows`,网格底下写 `week-row`、格子放进行里;自备格子列表用 `calendarPeriodRows(periods, view)` 切行 - **热力图**:`cell-press` / `cell-active` 改名 `datum-press` / `datum-active`(`onCellPress` / `onCellActive` → `onDatumPress` / `onDatumActive`),删除 `cell-focus` / `onCellFocus`;`HeatmapCellDetails` 改名 `HeatmapDatumDetails`,删除 `HeatmapCellFocusDetails` - **表格**:删除 `footer`(WC `footer`),改写 `footerRows: 1`(WC `footer-rows="1"`);`getFooterRowProps()` 改为 `getFooterRowProps({ level })`,多行表尾每行写 `level` - **颜色换算**:`colorParse`、`colorToString`、`colorRgbaToHex` 等 15 个颜色函数与 `ColorRgba`、`ColorHsva`、`ColorHsla`、`ColorOklch`、`ColorFormat` 改从 `@xihan-ui/core/color` 引入,`@xihan-ui/headless` 不再导出;`colorParse` 改按 CSS Color 4 的语法,分隔符混写、逗号写法里数与百分数混用、十六进制不带 `#` 这类浏览器不认的写法返回 `null` - **令牌的颜色换算**:`@xihan-ui/tokens` 不再导出下表左列的名字,改从 `@xihan-ui/core/color` 引入右列;`colorParseOklch` 解析不了时返回 `null`(原先抛错);分量越界的颜色(如 `oklch(120% 0.1 30)`、透明度大于 1)不再夹回范围,令牌其余颜色函数遇到时抛错;白、灰、黑的色相写成 0 | 4.x(`@xihan-ui/tokens`) | 5.0(`@xihan-ui/core/color`) | | --- | --- | | `srgbToLinear` | `colorSrgbToLinear` | | `linearToSrgb` | `colorLinearToSrgb` | | `linearRgbToOklch` | `colorLinearRgbToOklch` | | `oklchToLinearRgb` | `colorOklchToLinearRgb` | | `parseColorToOklch` | `colorParseOklch` | | `inSrgbGamut` | `colorInSrgbGamut` | | `clampChroma` | `colorClampChroma` | | `formatOklch` | `colorFormatOklch` | | `Oklch`(类型) | `ColorOklch`(字段相同) | - **快捷键**:`formatHotkey`、`matchesHotkey`、`detectKbdPlatform`、`resolveKbdPlatform` 与 `KbdPlatform`、`KbdResolvedPlatform`、`HotkeySegment` 改从 `@xihan-ui/core/hotkey` 引入,`@xihan-ui/headless` 不再导出 - **语言包**:删除 Citation 的 `openSource`、`source`,覆盖过的直接去掉;FileUpload 的 `dropzone` 改作标准结构里投放区那句看得见的说明,手写结构的投放区改由标题接上投放区里看得见的说明命名 - **覆盖槽**:删除 `--xh-command-list-busy-opacity` - **HoverCard**:`HoverCardRefs` 删去 `getTitleEl` / `getDescriptionEl`,Vue 的 `HoverCardContext` 删去 `titleRef` / `descriptionRef`,React 的删去 `setTitleEl` / `setDescriptionEl`;自写标题、说明部件的改为经 `parts` 报告在场 - **表单校验**:只含空白的字符串与元素全为空的数组算空,`required` 会拦下;`min` / `max` 对字符串改按字素计数。依赖原行为的改在 `validator` 里自行判断 - **React Card**:`XhCardRoot` 的 `title`、`content` 改为卡片的标题与正文,不再作为原生属性写到根上 - **Web Components FileUpload**:条目改按 `allFiles` 对应(远程附件在前、本地文件在后);用了 `remoteFiles` 的改按 `allFiles` 铺行 - **Web Components 布尔属性**:全部改为三态(含 designer-shell 的零件),显式写 `="false"` 为假、不写交给缺省;写过 `disabled="false"` 却想要真的改成 `disabled`,移除属性改为回到组件缺省 - **Web Components 对话框与抽屉**:``、`` 的语义角色改写 `dialog-role`(property `dialogRole`),`role` 不再当作配置;写过 `role="alertdialog"` 的改成 `dialog-role="alertdialog"`。`role` 写在宿主上,宿主本身就成了对话框,里面的触发钮也被读成在对话框里。Vue 与 React 的 `role` 不变 - **Web Components 通知条目**:`` 的标题文案改写 `title-text`(property 仍是 `titleText`),`title` 不再当作配置;写过 `title="已保存"` 的改成 `title-text="已保存"`。`title` 写在宿主上,悬停会出浏览器原生提示,读屏还会把标题当描述再念一遍。通知服务与 Vue、React 的 `title` 不用改 - **缺省结构**:根组件不写默认插槽 / 不给 children、Web Components 元素不写部件时,原先渲出空的根,现在铺出整套部件 - **外观**:渲染成 `