Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/vantui/src/toast/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ Toast.show({
| fail | 展示失败提示 | _&nbsp;&nbsp;(<br/>&nbsp;&nbsp;&nbsp;&nbsp;options:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&brvbar;&nbsp;ToastProps<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&brvbar;&nbsp;string<br/>&nbsp;&nbsp;)&nbsp;=>&nbsp;any<br/>_ | - | `true` |
| clear | 关闭提示 | _&nbsp;&nbsp;(<br/>&nbsp;&nbsp;&nbsp;&nbsp;options?:&nbsp;ToastProps<br/>&nbsp;&nbsp;)&nbsp;=>&nbsp;void<br/>_ | - | `true` |
| setDefaultOptions | 修改默认配置,对所有 Toast 生效。传入 type 可以修改指定类型的默认配置 | _&nbsp;&nbsp;(<br/>&nbsp;&nbsp;&nbsp;&nbsp;options:&nbsp;ToastProps<br/>&nbsp;&nbsp;)&nbsp;=>&nbsp;void<br/>_ | - | `true` |
| resetDefaultOptions | 重置默认配置,对所有 Toast 生效。传入 type 可以重置指定类型的默认配置 | _&nbsp;&nbsp;(<br/>&nbsp;&nbsp;&nbsp;&nbsp;options:&nbsp;any<br/>&nbsp;&nbsp;)&nbsp;=>&nbsp;void<br/>_ | - | `true` |
| resetDefaultOptions | 重置默认配置,对所有 Toast 生效。 | _&nbsp;&nbsp;()&nbsp;=>&nbsp;void<br/>_ | - | `true` |
| createOnlyToast | 获取唯一的 toast 组件,不需要手动设置 id 和 selector | _&nbsp;&nbsp;()&nbsp;=>&nbsp;FunctionComponent<ToastProps>&nbsp;&<br/>&nbsp;&nbsp;&nbsp;&nbsp;toastProps<br/>_ | - | `true` |

### 样式变量
Expand Down
19 changes: 17 additions & 2 deletions packages/vantui/src/toast/events.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import _assign from 'lodash/assign'
import { ToastProps } from '../../types/toast'
import VanOverlay from '../overlay/index'
import { createExtraNode, ExtraNode } from '../wxs/extra-node'
Expand All @@ -9,6 +10,20 @@ const defaultDuration = 2500
let timer: NodeJS.Timeout | null = null
let hasMask = false

const defaultToastOptions: ToastProps = {
duration: 2500,
}

let _defaultOptions = { ...defaultToastOptions }

export function setDefaultOptions(options: ToastProps) {
_assign(_defaultOptions, options)
}

export function resetDefaultOptions() {
_defaultOptions = { ...defaultToastOptions }
}

export function show_(options: ToastProps) {
if (timer) {
clearTimeout(timer)
Expand All @@ -24,12 +39,12 @@ export function show_(options: ToastProps) {
></VanOverlay>,
)
}
extraNode.renderNode?.(<Toast {...options} />)
extraNode.renderNode?.(<Toast {...{ ..._defaultOptions, ...options }} />)
if (options.duration !== 0) {
timer = setTimeout(() => {
clear()
options?.onClose?.()
}, options.duration || defaultDuration)
}, options.duration || _defaultOptions?.duration || defaultDuration)
}
}

Expand Down
12 changes: 11 additions & 1 deletion packages/vantui/src/toast/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
import { ToastProps } from '../../types/toast'
import { createOnlyToast } from './create-only-toast'
import { success, loading, fail, clear, show } from './events'
import {
success,
loading,
fail,
clear,
show,
setDefaultOptions,
resetDefaultOptions,
} from './events'

// @ts-ignore
// eslint-disable-next-line @typescript-eslint/no-unused-vars
Expand All @@ -13,6 +21,8 @@ Toast.loading = loading
Toast.fail = fail
Toast.clear = clear
Toast.show = show
Toast.setDefaultOptions = setDefaultOptions
Toast.resetDefaultOptions = resetDefaultOptions
Toast.createOnlyToast = () => createOnlyToast(Toast)

export { Toast }
Expand Down
4 changes: 2 additions & 2 deletions packages/vantui/types/toast.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,9 @@ export interface toastProps {
*/
setDefaultOptions: (options: ToastProps) => void
/**
* @description 重置默认配置,对所有 Toast 生效。传入 type 可以重置指定类型的默认配置
* @description 重置默认配置,对所有 Toast 生效。
*/
resetDefaultOptions: (options: any) => void
resetDefaultOptions: () => void
/**
* @description 获取唯一的toast组件,不需要手动设置id和selector
*/
Expand Down
Loading