UNPKG

wot-design-uni

Version:

一个基于Vue3+TS开发的uni-app组件库,提供70+高质量组件,支持暗黑模式、国际化和自定义主题。

53 lines (43 loc) 965 B
import { type Ref, provide, ref } from 'vue' export const queueKey = '__QUEUE_KEY__' export interface Queue { queue: Ref<any[]> pushToQueue: (comp: any) => void removeFromQueue: (comp: any) => void closeOther: (comp: any) => void closeOutside: () => void } export function useQueue() { const queue = ref<any[]>([]) function pushToQueue(comp: any) { queue.value.push(comp) } function removeFromQueue(comp: any) { queue.value = queue.value.filter((item) => { return item.$.uid !== comp.$.uid }) } function closeOther(comp: any) { queue.value.forEach((item) => { if (item.$.uid !== comp.$.uid) { item.$.exposed.close() } }) } function closeOutside() { queue.value.forEach((item) => { item.$.exposed.close() }) } provide(queueKey, { queue, pushToQueue, removeFromQueue, closeOther, closeOutside }) return { closeOther, closeOutside } }