Notification, Rotator & selectUser
源码: packages/ui-default/components/notification/index.ts、packages/ui-default/components/rotator/index.js、packages/ui-default/components/selectUser.tsx
三个 UI 工具:Toast 样式通知、动画数字翻转器、用户选择对话框。
Notification
class Notification双模式通知系统。静态方法(success、info、warn、error)渲染 Mantine Toast 通知。构造函数创建旧版基于 jQuery 的通知,支持可选头像、标题和点击动作。
静态方法(Mantine Toast)
| 方法 | 签名 | 说明 |
|---|---|---|
success | (message: string, duration?: number) => string | 显示带勾选图标的绿色成功 Toast。 |
info | (message: string, duration?: number) => string | 显示带信息图标的蓝色提示 Toast。 |
warn | (message: string, duration?: number) => string | 显示带警告图标的橙色警告 Toast。 |
error | (message: string, duration?: number) => string | 显示带关闭图标的红色错误 Toast。 |
所有静态方法委托给 @mantine/notifications,返回通知 id。
实例 API(旧版 jQuery 通知)
构造函数: new Notification(options: NotificationOptions)
interface NotificationOptions {
avatar?: string; // 头像图片 URL
title?: string; // 通知标题
message: string; // 正文内容(换行符转换为 <p> 元素)
type?: string; // 追加到通知元素的 CSS 类后缀
duration?: number; // 自动隐藏延迟(毫秒,默认 3000)
action?: any; // 点击回调(默认空操作)
}方法:
| 方法 | 签名 | 说明 |
|---|---|---|
show | (autohide?: boolean) => void | 显示通知;若 autohide 为 true(默认),在 duration 后自动隐藏。 |
hide | () => void | 隐藏通知,200ms 过渡动画后移除 DOM 元素。 |
handleClick | () => void | 点击时调用 action 回调。 |
Rotator
class Rotator extends DOMAttachedObject动画值显示组件,将旧值滑出、新值滑入。通过数值比较确定滑动方向 —— 较大值从下方滑入,较小值从上方滑入。
DOM 绑定: data-vjRotatorInstance(通过 DOMAttachedObject.DOMAttachKey = 'vjRotatorInstance')
构造函数: new Rotator($dom: JQuery) — 读取元素的文本内容作为初始值。
方法:
| 方法 | 签名 | 说明 |
|---|---|---|
setValue | (value: string) => void | 动画过渡到新值。值未变时不执行操作。 |
getValue | () => string | 返回当前显示的值。 |
动画行为: 旧元素滑动到 pos--above 或 pos--below(与进入方向相反),新元素从另一侧开始并过渡到 pos--original。每次过渡动画总时长 4000ms。
selectUser
function selectUser(): Promise<any>打开带用户自动补全字段的 prompt 对话框。返回选定的用户对象,对话框取消时返回 undefined。
同时注册为全局变量 window.Hydro.components.selectUser。