- 自定义动画: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 用例全过
4.8 KiB
4.8 KiB
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标志,恢复可初始化状态- 失效脚本清理:删除
docs(typedoc 未安装)、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.ts的destroy()中增加_containerCache.clear(),与api.ts保持一致
Changed
- 代码去重:消除
index.ts与api.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.jsonESLint 配置.gitea/workflows/ci.ymlCI 工作流CHANGELOG.md
Removed
babel.config.jstypes/目录
[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 类型声明
- 零依赖