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

90 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.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 类型声明
- 零依赖