fant-mini-plus
Version:
fant-mini-plus是一个基于Vue3和TypeScript的uni-app高效UI组件库,提供丰富的组件和样式,帮助开发者快速构建高质量的移动应用。
54 lines (49 loc) • 1.63 kB
text/typescript
/*
* @Author: weisheng
* @Date: 2022-02-23 11:11:53
* @LastEditTime: 2023-09-14 21:32:47
* @LastEditors: weisheng
* @Description:
* @FilePath: \fant-mini-plus\src\uni_modules\fant-mini-plus\components\hd-notify\index.ts
* 记得注释
*/
import { type InjectionKey, type Ref, provide, ref } from 'vue'
import { CommonUtil } from '../../index'
import type { Notify, NotifyOptions } from './types'
/**
* 默认参数
*/
export const defaultNotifyOptions: NotifyOptions = {
type: 'error',
message: '',
background: '',
duration: 3000,
zIndex: 110,
color: '#FFFFFF',
safeAreaInsetTop: false,
onClick: () => {},
onOpened: () => {},
onClose: () => {}
}
/**
* useNotify 用到的key
*
* @internal
*/
export const notifyDefaultKey = Symbol('__NOTIFY__') as InjectionKey<Ref<boolean>>
export const notifyDefaultOptionKey = Symbol('__NOTIFY_OPTION__') as InjectionKey<Ref<NotifyOptions>>
export function useNotify(selector: string = ''): Notify {
const notifyShow = ref<boolean>(false) // 是否展示notify
const notifyOption = ref<NotifyOptions>(defaultNotifyOptions) // Notify选项
const notifyKey = selector ? '__NOTIFY__' + selector : notifyDefaultKey
const notifyOptionKey = selector ? '__NOTIFY_OPTION__' + selector : notifyDefaultOptionKey
provide(notifyOptionKey, notifyOption)
provide(notifyKey, notifyShow)
const showNotify = (option: NotifyOptions | string) => {
notifyOption.value = CommonUtil.deepMerge(defaultNotifyOptions, typeof option === 'string' ? { message: option } : option) as NotifyOptions
notifyShow.value = true
}
return {
showNotify
}
}