mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
[new feature] Toast: add onClose prop (#2964)
This commit is contained in:
parent
a4eedac8b1
commit
2e7ca412ff
@ -106,4 +106,5 @@ toast2.clear();
|
|||||||
| loadingType | Loading icon type, can be set to `spinner` | `String` | `circular` |
|
| loadingType | Loading icon type, can be set to `spinner` | `String` | `circular` |
|
||||||
| duration | Toast duration(ms), won't disappear if value is 0 | `Number` | `3000` |
|
| duration | Toast duration(ms), won't disappear if value is 0 | `Number` | `3000` |
|
||||||
| className | Custom className | `String | Array | Object` | - |
|
| className | Custom className | `String | Array | Object` | - |
|
||||||
| get-container | Return the mount node for Toast | `String | () => HTMLElement` | `body` |
|
| onClose | onClose callback function | `Function` | - |
|
||||||
|
| getContainer | Return the mount node for Toast | `String | () => HTMLElement` | `body` |
|
||||||
|
@ -8,6 +8,7 @@ const defaultOptions = {
|
|||||||
value: true,
|
value: true,
|
||||||
message: '',
|
message: '',
|
||||||
className: '',
|
className: '',
|
||||||
|
onClose: null,
|
||||||
duration: 3000,
|
duration: 3000,
|
||||||
position: 'middle',
|
position: 'middle',
|
||||||
forbidClick: false,
|
forbidClick: false,
|
||||||
@ -52,6 +53,10 @@ function Toast(options = {}) {
|
|||||||
clear() {
|
clear() {
|
||||||
toast.value = false;
|
toast.value = false;
|
||||||
|
|
||||||
|
if (options.onClose) {
|
||||||
|
options.onClose();
|
||||||
|
}
|
||||||
|
|
||||||
if (!singleton && !isServer) {
|
if (!singleton && !isServer) {
|
||||||
clearTimeout(toast.timer);
|
clearTimeout(toast.timer);
|
||||||
queue = queue.filter(item => item !== toast);
|
queue = queue.filter(item => item !== toast);
|
||||||
|
@ -73,3 +73,16 @@ test('toast duration 0', () => {
|
|||||||
expect(toast.timer).toBeFalsy();
|
expect(toast.timer).toBeFalsy();
|
||||||
Toast.allowMultiple(false);
|
Toast.allowMultiple(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('onClose callback', () => {
|
||||||
|
Toast.allowMultiple();
|
||||||
|
const onClose = jest.fn();
|
||||||
|
const toast = Toast({
|
||||||
|
message: 'toast',
|
||||||
|
onClose
|
||||||
|
});
|
||||||
|
|
||||||
|
toast.clear();
|
||||||
|
Toast.allowMultiple(false);
|
||||||
|
expect(onClose.mock.calls.length).toEqual(1);
|
||||||
|
});
|
||||||
|
@ -96,11 +96,12 @@ toast2.clear();
|
|||||||
| 参数 | 说明 | 类型 | 默认值 | 版本 |
|
| 参数 | 说明 | 类型 | 默认值 | 版本 |
|
||||||
|------|------|------|------|------|
|
|------|------|------|------|------|
|
||||||
| type | 提示类型,可选值为 `loading` `success`<br>`fail` `html` | `String` | `text` | - |
|
| type | 提示类型,可选值为 `loading` `success`<br>`fail` `html` | `String` | `text` | - |
|
||||||
| position | 位置,可选值为 `top` `middle` `bottom` | `String` | `middle` | - |
|
| position | 位置,可选值为 `top` `bottom` | `String` | `middle` | - |
|
||||||
| message | 内容 | `String` | `''` | - | - |
|
| message | 内容 | `String` | `''` | - | - |
|
||||||
| mask | 是否显示背景蒙层 | `Boolean` | `false` | - |
|
| mask | 是否显示背景蒙层 | `Boolean` | `false` | - |
|
||||||
| forbidClick | 是否禁止背景点击 | `Boolean` | `false` | - |
|
| forbidClick | 是否禁止背景点击 | `Boolean` | `false` | - |
|
||||||
| loadingType | 加载图标类型, 可选值为 `spinner` | `String` | `circular` | 1.1.3 |
|
| loadingType | 加载图标类型, 可选值为 `spinner` | `String` | `circular` | 1.1.3 |
|
||||||
| duration | 展示时长(ms),值为 0 时,toast 不会消失 | `Number` | `3000` | - |
|
| duration | 展示时长(ms),值为 0 时,toast 不会消失 | `Number` | `3000` | - |
|
||||||
| className | 自定义类名 | `String | Array | Object` | - | 1.6.0 |
|
| className | 自定义类名 | `String | Array | Object` | - | 1.6.0 |
|
||||||
|
| onClose | 关闭时的回调函数 | `Function` | - | 1.6.10 |
|
||||||
| getContainer | 指定挂载的节点,可以传入选择器,<br>或一个返回节点的函数 | `String | () => HTMLElement` | `body` | 1.6.3 |
|
| getContainer | 指定挂载的节点,可以传入选择器,<br>或一个返回节点的函数 | `String | () => HTMLElement` | `body` | 1.6.3 |
|
||||||
|
7
types/toast.d.ts
vendored
7
types/toast.d.ts
vendored
@ -9,6 +9,7 @@ export type ToastOptions = {
|
|||||||
position?: string;
|
position?: string;
|
||||||
duration?: number;
|
duration?: number;
|
||||||
className?: any;
|
className?: any;
|
||||||
|
onClose?(): void;
|
||||||
forbidClick?: boolean;
|
forbidClick?: boolean;
|
||||||
loadingType?: string;
|
loadingType?: string;
|
||||||
message?: ToastMessage;
|
message?: ToastMessage;
|
||||||
@ -23,7 +24,7 @@ export interface VanToast extends Vue, VanPopupMixin {
|
|||||||
clear(): void;
|
clear(): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Toast {
|
export interface IToast {
|
||||||
(message: ToastOptions | ToastMessage, options?: ToastOptions): VanToast;
|
(message: ToastOptions | ToastMessage, options?: ToastOptions): VanToast;
|
||||||
loading(options?: ToastOptions | ToastMessage): VanToast;
|
loading(options?: ToastOptions | ToastMessage): VanToast;
|
||||||
success(options?: ToastOptions | ToastMessage): VanToast;
|
success(options?: ToastOptions | ToastMessage): VanToast;
|
||||||
@ -37,8 +38,8 @@ export interface Toast {
|
|||||||
|
|
||||||
declare module 'vue/types/vue' {
|
declare module 'vue/types/vue' {
|
||||||
interface Vue {
|
interface Vue {
|
||||||
$toast: Toast
|
$toast: IToast
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const Toast: Toast;
|
export const Toast: IToast;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user