API 文档

MetonaToast v2.0.0 完整 API 参考。所有基础通知方法(show/success/error/warning/info/loading)支持两种调用形式,均可传入任何 配置项 作为可选第二参数。

show(message, opts?)

显示默认类型的 Toast 通知,无特定颜色和图标。

参数类型默认值说明
messagestring | object消息字符串,或包含 title/message 等属性的配置对象
optsobject{}可选配置对象,覆盖 全部配置项。仅当 message 为字符串时有效
// 字符串形式
MeToast.show('默认消息');
MeToast.show('自定义', { duration: 2000, position: 'bottom-center' });
// 对象形式(所有 opts 作为一级属性)
MeToast.show({ title: '标题', message: '内容', duration: 3000 });

success(message, opts?)

显示成功通知。绿色对勾图标 #10b981,type = success。

参数类型默认值说明
messagestring | object消息字符串或配置对象
optsobject{}可选配置覆盖。type 固定为 success
MeToast.success('保存成功!');
MeToast.success({ title: '已保存', message: '数据已同步' });
Met.success('MeToast和Met等价');

error(message, opts?)

显示错误通知。红色叉号图标 #ef4444,type = error。aria-live 设为 assertive。

参数类型默认值说明
messagestring | object消息字符串或配置对象
optsobject{}可选配置覆盖。type 固定为 error
MeToast.error('网络错误,请重试');
MeToast.error({ title: '提交失败', message: '服务器不可达' });

warning(message, opts?)

显示警告通知。黄色三角图标 #f59e0b,type = warning。

参数类型默认值说明
messagestring | object消息字符串或配置对象
optsobject{}可选配置覆盖。type 固定为 warning
MeToast.warning('请注意检查输入内容');

info(message, opts?)

显示信息通知。蓝色圆形图标 #3b82f6,type = info。

参数类型默认值说明
messagestring | object消息字符串或配置对象
optsobject{}可选配置覆盖。type 固定为 info
MeToast.info('系统将于 22:00 维护');

loading(message, opts?)

显示加载状态。type = loading,duration 强制为 0(不自动关闭),closeButton 和 showProgress 强制为 false。返回 LoadingControl 对象。

参数类型默认值说明
messagestring | object加载提示文本或配置对象
optsobject{}可选配置覆盖
const loading = MeToast.loading('正在提交...');
setTimeout(() => loading.success('提交成功!'), 2000);

返回 LoadingControl

方法签名说明
success(msg, opts?) => ToastInstance关闭加载 toast,原地替换为 success 类型
error(msg, opts?) => ToastInstance替换为 error 类型
info(msg, opts?) => ToastInstance替换为 info 类型
warning(msg, opts?) => ToastInstance替换为 warning 类型
update(partial) => MeToast不关闭加载 toast,原地更新其内容(支持 resetTimerOnUpdate)
dismiss()直接关闭加载 toast 不替换

promise(promise, opts)

监听 Promise 生命周期。自动显示 loading → 根据 resolve/reject 自动切换 success/error。返回原 Promise,支持 await 获取结果。

参数类型默认值说明
promisePromise要监听的 Promise 对象。非 Promise 会打印错误并返回 rejected Promise
opts.loadingstring"加载中..."加载中显示的文本
opts.successstring"操作成功"resolve 后显示的文本
opts.errorstring"操作失败"reject 后显示的文本
try {
  await MeToast.promise(fetch('/api/data'), {
    loading: '加载中...',
    success: '加载完成!',
    error: '加载失败',
  });
} catch (e) { /* promise reject 会继续抛出 */ }

confirm(message, opts?)

确认对话框。返回 Promise<boolean>。内置 10 秒安全超时,超时自动 resolve(false)。

参数类型默认值说明
messagestring对话框消息。非字符串会打印错误并 resolve(false)
opts.confirmTextstring"确认"确认按钮文字
opts.confirmColorstring"#10b981"确认按钮背景色
opts.cancelTextstring"取消"取消按钮文字
opts.cancelColorstring"#6b7280"取消按钮背景色
opts.typestring"warning"Toast 类型(影响图标和颜色)
const ok = await MeToast.confirm('确定删除?', {
  confirmText: '删除',
  confirmColor: '#ef4444',
  cancelText: '保留',
});
if (ok) MeToast.success('已删除');

prompt(message, opts?)

输入对话框。返回 Promise<string|null>。按 Enter 或点击提交按钮返回输入值,取消返回 null。内置 10 秒安全超时。

参数类型默认值说明
messagestring对话框消息。非字符串会打印错误并 resolve(null)
opts.placeholderstring""输入框占位文字
opts.defaultValuestring""输入框默认值
opts.inputTypestring"text"input 标签 type 属性(如 password/email/number)
opts.submitTextstring"确认"提交按钮文字
opts.submitColorstring"#3b82f6"提交按钮背景色
opts.cancelTextstring"取消"取消按钮文字
opts.cancelColorstring"#6b7280"取消按钮背景色
opts.typestring"info"Toast 类型
const name = await MeToast.prompt('请输入姓名', {
  placeholder: '请输入...',
  defaultValue: '张三',
  submitText: '确定',
});
if (name) MeToast.info('你好,' + name);

progress(message, opts?)

进度条通知。不自动关闭。返回 ProgressControl 对象以手动更新进度。

参数类型默认值说明
messagestring | object进度提示文本或配置对象
optsobject{}可选配置。type 默认 info
opts.progressColorstring"#3b82f6"进度条填充颜色
const p = MeToast.progress('上传中...', { progressColor: '#10b981' });
p.setProgress(45); // → 45%
p.setProgress(90); // → 90%
p.complete('上传完成!'); // → 100% → success
// 或
p.error('上传失败');
p.dismiss();

返回 ProgressControl

方法签名说明
setProgress(percent: number)设置进度 0~100,自动 clamp。更新进度条宽度和百分比文字
complete(message?: string)跳到 100%,300ms 后替换为 success toast,1s 后自动关闭
error(message?: string)替换为 error toast,2s 后自动关闭
dismiss()直接关闭

countdown(message, seconds, opts?)

倒计时 Toast。{seconds} 占位符每秒自动替换为剩余秒数。

参数类型默认值说明
messagestring消息文本。支持 {seconds} 占位符。非字符串打印错误并返回空控制对象
secondsnumber10倒计时秒数,最小 1
opts.onCompletefunction倒计时归零时的回调
opts.typestring"warning"Toast 类型
MeToast.countdown('{seconds} 秒后执行', 5, {
  onComplete: () => MeToast.success('已执行'),
});

返回 CountdownControl

方法说明
cancel()清除计时器并关闭 toast
pause()暂停倒计时
resume()恢复倒计时

queue(messages, opts?)

顺序逐个显示消息队列。前一条关闭后延时显示下一条。返回 QueueControl(thenable + cancel)。

参数类型默认值说明
messagesArray<string|object>消息数组。可为字符串或带 message/type/duration/onClose 的对象。非数组打印错误并返回空控制对象
opts.delaynumber1000每条消息关闭后到显示下一条的间隔(ms)
opts.durationnumber3000每条消息显示时长(ms),可被消息级 duration 覆盖
opts.onClosefunction全部队列完成后的回调。消息级 onClose 和队列级 onClose 都会依次调用
opts.typestring默认类型
const q = MeToast.queue([
  '步骤一',
  { message: '步骤二', duration: 5000, type: 'warning' },
  '步骤三',
], { delay: 800, duration: 2000, type: 'info' });
q.cancel(); // 中途取消
await q;  // 等待完成(thenable 支持 await)

返回 QueueControl (thenable)

方法说明
.then(fn, rj)Promise.then 代理,支持 await
.catch(rj)Promise.catch 代理
.cancel()设置取消标志,不再显示下一条消息

stack(messages, opts?)

同时错峰显示多条消息。每条间隔 stagger 毫秒依次出现,全部叠加在屏幕上。

参数类型默认值说明
messagesArray<string|object>消息数组。可为字符串或带 message/type/duration 的对象。非数组打印错误
opts.staggernumber100每条消息之间的显示间隔(ms)
opts.typestring默认类型
MeToast.stack(['消息1', '消息2', { message: '警告', type: 'warning' }], {
  stagger: 150,
  type: 'info',
});

action(message, actions, opts?) v2.0

Action Toast:内嵌操作按钮。默认 duration=0 不自动关闭,closeButton=true。

参数类型默认值说明
messagestring | object消息字符串或配置对象
actionsActionButton[][]按钮数组。每个按钮可配 text/onClick/color/style/close
optsobject{}可选配置。duration 默认 0,closeButton 默认 true
ActionButton 字段类型默认值说明
textstring—(必填)按钮显示文字
onClick(toast) => void—(必填)点击回调函数,参数为当前 toast 实例
colorstring"#6366f1"按钮背景色
styleobject{}按钮内联样式,可覆盖 color(style.background 优先)
closebooleantrue点击后是否自动关闭 toast。设为 false 可多次点击
MeToast.action('文件已删除', [
  { text: '撤销', onClick: () => restore(), color: '#3b82f6' },
  { text: '查看详情', onClick: (t) => openFile(), color: '#10b981', close: false },
]);

group(name) v2.0

创建 Toast 分组,返回 GroupAPI 对象。该对象所有方法自动传入 group: name,按组管理。

参数类型说明
namestring分组名称。GroupAPI 和 dismissGroup 通过此名称关联
const orders = MeToast.group('orders');
orders.success('订单已创建');
orders.error('支付失败', { duration: 5000 });
orders.count();   // 该组当前 toast 数量
orders.dismiss(); // 关闭该组全部 toast
// 也支持主对象关闭
MeToast.dismissGroup('orders');

返回 GroupAPI

方法说明
show(msg, opts?)等价 MeToast.show,自动注入 group
success(msg, opts?)等价 MeToast.success
error(msg, opts?)等价 MeToast.error
warning(msg, opts?)等价 MeToast.warning
info(msg, opts?)等价 MeToast.info
loading(msg, opts?)等价 MeToast.loading
action(msg, actions, opts?)等价 MeToast.action
dismiss()关闭该组所有 toast
count()返回该组当前 toast 数量

dismiss(id?)

关闭 Toast。无参数则关闭全部。

参数类型说明
idstring可选。Toast 的 id,不传则关闭所有
MeToast.dismiss();          // 关闭所有
MeToast.dismiss(toast.id);  // 关闭指定

clear(position?)

按位置清除 Toast。不传参数清除所有位置。

参数类型说明
positionstring可选。位置如 'top-right',不传则清除全部
MeToast.clear();                      // 全部
MeToast.clear('bottom-right'); // 仅右下角

configure(opts)

全局配置,影响后续所有 Toast。theme 和 locale 变化会触发相应副作用(应用主题 CSS / 切换语言)。

参数类型说明
optsobject包含任意 配置项 的对象
MeToast.configure({
  position: 'top-right',
  duration: 4000,
  theme: 'dark',
  animation: 'slide',
  locale: 'zh-CN',
});

use(plugin)

安装插件。支持字符串(内置预设名)或插件对象。已被拒绝注册的无效插件会打印错误。

参数类型说明
pluginstring | object预设名 'keyboard'/'persistence'/'accessibility' 或自定义插件对象 { name, version?, install, uninstall? }
MeToast.use('keyboard');      // ESC 关闭所有 Toast
MeToast.use('persistence');   // 配置自动保存到 localStorage
MeToast.use('accessibility'); // 屏幕阅读器实时朗读 toast 内容

内置插件详情:keyboard 监听 keydown Escape 键;persistence 将配置写入 localStorage 并在页面加载时恢复;accessibility 在 afterShow/afterUpdate 钩子中通过 aria-live 区域朗读 toast 内容。

destroy()

完全销毁。关闭所有 Toast、移除所有 DOM 容器和注入的样式标签、清空内存缓存。

MeToast.destroy();

全部配置项

以下配置可用于 configure()init() 或单个 Toast 方法的 opts 参数。带 v2.0 标识的为 v2.0 新增。

配置项类型默认值说明
positionstring'top-right'位置:top-left / top-center / top-right / bottom-left / bottom-center / bottom-right
durationnumber4000显示时长(ms),0=不自动关闭
maxnumber6同一位置最多同时显示条数,超出则关闭最早的
gapnumber12Toast 之间的间距(px)
offsetnumber24容器到屏幕边缘的距离(px)
pauseOnHoverbooleantrue鼠标悬停时暂停 duration 倒计时和进度条
closeOnClickbooleantrue点击 Toast 任意位置关闭。关闭按钮始终触发关闭
draggablebooleantrue允许拖拽关闭。拖拽超过 120px 触发关闭
showProgressbooleantrue显示 duration 倒计时进度条
progressDirectionstring'horizontal'进度条方向:horizontal(底部水平) / vertical(右侧垂直)
iconbooleantrue显示类型对应图标(success→对勾等)
closeButtonbooleantrue显示右上角关闭 × 按钮
themestring'auto'主题:light / dark / auto(跟随系统)/ warm / 自定义注册名
animationstring'slide'入场动画名称,支持 CSS 动画列表见下
zIndexnumber9999容器 CSS z-index
widthnumber|string360Toast 宽度。数字表示 px
classNamestring''附加到 Toast 元素上的 CSS 类名
styleobject{}附加到 Toast 元素上的内联样式对象
localestring'zh-CN'语言代码(zh-CN / en-US 等)
resetTimerOnUpdate v2.0booleanfalse调用 update() 时重置 duration 倒计时
notifyWhenHidden v2.0booleanfalse页面不可见时自动通过 Notification API 发送系统通知
render v2.0function自定义渲染函数 (toast) => htmlString,完全接管 DOM 构建

回调函数

回调签名触发时机
onShow(toast: ToastInstance) => voidToast DOM 创建并播放入场动画后
onClose(toast: ToastInstance) => voidToast DOM 被移除后(离场动画完成时)
onClick(toast: ToastInstance) => voidToast 被点击时(closeOnClick 为 true 时还会自动关闭)
onUpdate v2.0(toast: ToastInstance) => voidToast 内容通过 update() 更新后

动画列表

配置 animation 的值,支持以下 CSS 动画。未在此列表中的值将 fallback 到 slide。

名称效果时长
slide从右侧滑入 + 回弹400ms
fade纯淡入 + blur→清晰500ms
scale弹性放大 (0.55→1.07→1)450ms
bounce从天而降四段弹跳650ms
flip3D 翻转入场 + 回摆500ms
rotate旋转摇摆进入500ms
zoom从中心爆发式弹出500ms
slideUp从下方弹入400ms
slideDown从上方弹入400ms
slideLeft从左侧滑入400ms
slideRight从右侧滑入400ms

主题参考

// 内置主题
light   — 白色玻璃质感
dark    — 深色玻璃质感
auto    — 跟随系统主题设置
warm    — 暖色调

// 注册自定义主题
MeToast.themes.registerTheme('ocean', {
  bg: 'rgba(240,249,255,0.96)',
  text: '#0c4a6e',
  border: 'rgba(14,165,233,0.2)',
  shadow: '0 10px 36px -10px rgba(14,165,233,0.18)',
  hoverShadow: '0 14px 48px -10px rgba(14,165,233,0.22)',
  progressBg: 'rgba(14,165,233,0.1)',
  closeHoverBg: 'rgba(14,165,233,0.1)',
});
MeToast.themes.switchTheme('ocean');