EASYAIuniappNewUI/node_modules/@tuniao/tnui-vue3-uniapp/hooks/use-z-index/index.ts
2025-02-08 18:50:38 +08:00

40 lines
921 B
TypeScript

import { computed, inject, ref, unref } from 'vue'
import { isNumber } from '../../utils'
import type { InjectionKey, Ref } from 'vue'
const zIndex = ref(0)
const defaultInitialZIndex = 2000
export const zIndexContextKey: InjectionKey<Ref<number | undefined>> =
Symbol('zIndexContextKey')
export const useZIndex = () => {
const zIndexInjection = inject(zIndexContextKey, undefined)
const initialZIndex = computed(() => {
const zIndexFromInjection = unref(zIndexInjection)
return isNumber(zIndexFromInjection)
? zIndexFromInjection
: defaultInitialZIndex
})
const currentZIndex = computed(() => initialZIndex.value + zIndex.value)
const nextZIndex = () => {
zIndex.value++
return currentZIndex.value
}
const prevZIndex = () => {
zIndex.value--
return currentZIndex.value
}
return {
initialZIndex,
currentZIndex,
nextZIndex,
prevZIndex,
}
}