Files
MetonaToast/CHANGELOG.md
T
tianhao bbff631f4f release: v0.4.0 — React 适配器、loading链式id稳定、dragThreshold、RTL适配、dedupe插件
- React 适配器子包:@metona-team/metona-toast/react — useToast() hook + 声明式 <Toast /> 组件,组件卸载自动清理;react 为 optional peerDependency,主包保持零依赖
- loading 链式转换改原地 update:id 稳定不重建 DOM,转换后 duration 恢复默认自动关闭;update() 支持 duration 变更动态重启计时器
- _emit 幽灵实例修复:beforeShow 拦截后的 toast 不再注册进 _toasts
- dragThreshold 配置项(默认 120px,原硬编码);RTL 容器 dir 属性 + 进度条/side 条/色条镜像
- dedupe 预设插件:相同 type+message 自动去重,支持 uninstall
- jest 环境隔离测试独立成 tests/ssr.test.ts(resetModules 不再污染共享模块状态);新增 tests/setup.ts 补 TextEncoder
- 文档:README/docs.html 补 React 适配器、dedupe、dragThreshold;CHANGELOG 更新;328 测试全过
2026-08-08 14:45:19 +08:00

6.1 KiB
Raw Blame History

Changelog

All notable changes to MetonaToast will be documented in this file.

[0.4.0] - 2026-08-08

Added

  • React 适配器子包@metona-team/metona-toast/reactuseToast() hook(组件卸载时自动移除本组件创建的 Toast)+ 声明式 <Toast /> 组件(props 变化更新、卸载自动清理)。主包保持零依赖,react 为 optional peerDependency
  • dedupe 预设插件:相同 type+message 的 Toast 自动去重(更新已有实例而非重复弹出),支持 uninstall
  • dragThreshold 配置项:拖拽关闭阈值可配置(默认 120px,原为硬编码)
  • RTL 完整适配:容器设置 dir="rtl",进度条/side 条/类型色条/圆角正确镜像
  • update({ duration }) 支持:动态变更显示时长并自动重启/停止计时器(此前 update 忽略 duration
  • 幽灵实例修复_emit 检查 create() 结果,beforeShow 拦截后的 toast 不再注册到 _toasts(此前会残留幽灵记录,影响 count 与去重类插件)

Changed

  • loading 链式转换 id 稳定loading.success/error/info/warning 由"关闭旧 + 新建"改为原地 update() 同一实例,返回的 Toast id 与 loading id 一致;转换后 duration 自动恢复默认值(自动关闭)。注:转换不再产生新的入场动画,改为平滑更新;关闭按钮/进度条保持 loading 配置(如需默认外观,请通过 opts 覆盖)

[0.3.0] - 2026-08-08

Fixed

  • 自定义动画真实生效animations.register() 注册的动画此前仅写入内存 Map,实际渲染始终 fallback 到 slide。现在注册表驱动 _buildClassName 并动态注入对应 @keyframes + 类规则,README 的注册教程名实相符
  • max 超限真正关闭最早的 toast:此前超限时仅从内存 Map 删除记录,DOM 上的旧 toast 依然显示。现在通过实例注册表找到最早的 toast 并真正 close()(触发离场动画与生命周期回调)
  • destroy() 全量清理:新增清理 Toast._hooks 钩子、Toast._registry 实例注册表、metona-toast-theme-css / metona-toast-custom-styles / metona-toast-anim-styles 样式标签;动画注册表改为真正清空
  • applyThemeVariables 重复注入:修复多次调用追加相同 id 的 style 标签问题(改为先移除旧元素)
  • init() 复活destroy() 后调用 init() 重置 _destroyed 标志,恢复可初始化状态
  • 失效脚本清理:删除 docstypedoc 未安装)、example(examples/ 目录不存在)脚本,新增 serve 脚本
  • AnimationConfig.enter/leave 类型放宽:支持 opacity: 0 等数值属性(此前仅 string,README 示例在 TS 严格模式下报错)

Added

  • 钩子系统完整化:此前 HOOK_NAMES 声明 20+ 钩子但多数永不触发。现在全部声明均有触发点:
    • 拦截语义:beforeClose / beforeUpdate 返回 false 可分别阻止关闭、更新
    • 新触发点:click / hover / dragStart / dragEnd / animationStart / animationEnd / progressStart / progressEnd / configChange / themeChange / localeChange / beforeInit / afterInit / beforeDestroy / afterDestroy
  • init({ plugins }) 支持插件对象:与 use() 一致,可传 string | Plugin

Changed

  • VERSION 唯一来源:版本号统一在 src/constants.ts 维护,api.ts / index.ts 引用,消除三处硬编码漂移
  • HOOK_NAMES 收敛:移除永不触发的 progressUpdate / custom 声明
  • 版本升级至 v0.3.0(含行为增强,按 semver minor 处理)

[0.2.1] - 2026-07-25

Fixed

  • auto 主题配置死值THEMES.auto 改为合法 CSS 值(复用 light 默认值),避免 getThemeConfig('auto') 返回无意义字符串
  • resolveTheme 循环逻辑resolveTheme('auto') 始终检测系统主题,不再依赖 currentTheme 全局状态
  • formatList 国际化:优先使用 Intl.ListFormat,降级到逗号拼接,支持各语言原生列表格式
  • RTL 容器定位RTL 语言自动翻转 left/right 位置,容器创建时正确适配
  • _containerCache 泄露index.tsdestroy() 中增加 _containerCache.clear(),与 api.ts 保持一致

Changed

  • 代码去重:消除 index.tsapi.ts 之间 11 个方法的重复定义,统一在 api.ts 实现
  • Toast 回调注入Toast._onError / Toast._removeToast 改为 Toast.setCallbacks() 静态方法,消除隐式契约
  • Stub 方法替换api.ts 中 7 个 stub 方法替换为完整实现(init/use/destroy/getStatus/getConfig/updateConfig/resetConfig
  • ESLint 规则:新增 @typescript-eslint/no-explicit-any (warn) 和 prefer-const (warn)

Added

  • beforeShow 拦截:钩子函数返回 false 可阻止 Toast 显示;配置 onBeforeShow 回调支持同样能力
  • updatePosition() 方法:允许运行时移动 Toast 到不同位置容器
  • remove() + removeToast() 方法:立即移除 Toast(不触发离场动画),提供无动画的快速清除 API

[0.2.0] - 2026-07-25

Changed

  • TypeScript 源码重构:全部源码从 JavaScript 迁移到 TypeScript
  • 删除手动维护的 types/index.d.ts,类型由源码自动生成
  • core.js (1244行) 拆分为 toast.ts + api.ts + templates.ts
  • 构建工具链:Babel → ts-jest,新增 @rollup/plugin-typescript
  • 测试迁移至 TypeScript (tests/index.test.ts)

Added

  • tsconfig.json (strict: true)
  • src/types.ts 核心类型模块
  • .eslintrc.json ESLint 配置
  • .gitea/workflows/ci.yml CI 工作流
  • CHANGELOG.md

Removed

  • babel.config.js
  • types/ 目录

[0.1.2] - 2026-07-24

Fixed

  • 补全和修正 TypeScript 类型声明
  • 全面修复、优化与增强

[0.1.1] - 2026-07-23

Changed

  • 版本号重置,更新文档页面

[0.1.0] - 2026-07-22

Added

  • 初始发布
  • 107 种内置图标
  • 11 种动画效果
  • 4 种主题(light/dark/auto/warm
  • 国际化支持 (zh-CN/en-US)
  • 插件系统 (keyboard/persistence/accessibility)
  • 拖拽关闭、进度条、倒计时等高级特性
  • TypeScript 类型声明
  • 零依赖