1
This commit is contained in:
21
package/component/es/useLevel/index.js
Normal file
21
package/component/es/useLevel/index.js
Normal file
@@ -0,0 +1,21 @@
|
||||
import { inject, computed, isRef, provide, reactive } from "vue";
|
||||
const LevelInjectionKey = Symbol("menuLevelKey");
|
||||
function provideLevel(level) {
|
||||
const computedLevel = computed(() => isRef(level) ? level.value : level);
|
||||
provide(LevelInjectionKey, reactive({
|
||||
level: computedLevel
|
||||
}));
|
||||
}
|
||||
function useLevel(props) {
|
||||
const { provideNextLevel } = props || {};
|
||||
const levelContext = inject(LevelInjectionKey);
|
||||
const level = computed(() => levelContext.level || 1);
|
||||
if (provideNextLevel) {
|
||||
const nextLevel = computed(() => level.value + 1);
|
||||
provideLevel(nextLevel);
|
||||
}
|
||||
return {
|
||||
level
|
||||
};
|
||||
}
|
||||
export { provideLevel as p, useLevel as u };
|
||||
Reference in New Issue
Block a user