UNPKG

fant-mini-plus

Version:

fant-mini-plus是一个基于Vue3和TypeScript的uni-app高效UI组件库,提供丰富的组件和样式,帮助开发者快速构建高质量的移动应用。

61 lines (57 loc) 1.76 kB
/* * @Author: weisheng * @Date: 2022-12-14 17:33:21 * @LastEditTime: 2023-05-19 15:11:11 * @LastEditors: weisheng * @Description:type * @FilePath: \fant-mini-plus\src\uni_modules\fant-mini-plus\components\hd-toast\index.ts * 记得注释 */ import { type InjectionKey, type Ref, nextTick, provide, ref } from 'vue' import { CommonUtil } from '../../index' import type { Toast, ToastOptions } from './types' /** * useToast 用到的key * * @internal */ export const toastDefaultKey = Symbol('__TOAST__') as InjectionKey<Ref<boolean>> export const toastDefaultOptionKey = Symbol('__TOAST_OPTION__') as InjectionKey<Ref<ToastOptions>> /** * 默认参数 */ export const defaultToastOptions: ToastOptions = { type: 'black', title: '', icon: 'none', image: '', duration: 1500, zIndex: 1000 } export function useToast(selector: string = ''): Toast { const toastShow = ref<boolean>(false) // 是否展示toast const toastOption = ref<ToastOptions>(defaultToastOptions) // Toast选项 const toastKey = selector ? '__TOAST__' + selector : toastDefaultKey const toastOptionKey = selector ? '__TOAST_OPTION__' + selector : toastDefaultOptionKey provide(toastOptionKey, toastOption) provide(toastKey, toastShow) const showToast = (option: ToastOptions | string) => { toastOption.value = CommonUtil.deepMerge(defaultToastOptions, typeof option === 'string' ? { title: option } : option) as ToastOptions if (toastShow.value) { toastShow.value = false nextTick(() => { toastShow.value = true }) } else { toastShow.value = true } } const hideToast = () => { toastOption.value = defaultToastOptions toastShow.value = false } return { showToast, hideToast } }