Files
MetonaToast/CHANGELOG.md
T
tianhao 2937ce5e2d release: v0.3.0 — 自定义动画真实生效、max超限修复、钩子系统完整化、destroy全量清理
- 自定义动画:animations.register() 注册的动画动态注入 keyframes 真实生效(此前仅存 Map 实际 fallback slide)
- max 超限:通过实例注册表真正 close() 最早的 toast(此前仅删内存记录,DOM 残留)
- 钩子收敛:beforeClose/beforeUpdate 支持返回 false 拦截;接入 click/hover/dragStart/dragEnd/animationStart/animationEnd/progressStart/progressEnd/configChange/themeChange/localeChange/beforeInit/afterInit/beforeDestroy/afterDestroy;HOOK_NAMES 移除永不触发的声明
- destroy() 全量清理:hooks、实例注册表、全部 metona-toast-* 样式标签;动画注册表真正清空
- applyThemeVariables 重复注入修复;init() 支持插件对象并复活 _destroyed;AnimationConfig 类型放宽
- VERSION 统一到 constants.ts 唯一维护;删除失效 scripts;新增 .gitattributes 统一 LF
- docs.html 补 v0.2.1 新 API 文档;CHANGELOG 更新;测试 309 用例全过
2026-08-08 14:23:41 +08:00

4.8 KiB
Raw Blame History

Changelog

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

[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 类型声明
  • 零依赖