element-plus
Version:
A Component Library for Vue 3
57 lines (52 loc) • 1.46 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
require('../../../utils/index.js');
var error = require('../../../utils/error.js');
function useMenu(instance, currentIndex) {
const rootMenu = vue.inject("rootMenu");
if (!rootMenu)
error.throwError("useMenu", "can not inject root menu");
const indexPath = vue.computed(() => {
let parent = instance.parent;
const path = [currentIndex.value];
while (parent.type.name !== "ElMenu") {
if (parent.props.index) {
path.unshift(parent.props.index);
}
parent = parent.parent;
}
return path;
});
const parentMenu = vue.computed(() => {
let parent = instance.parent;
while (parent && !["ElMenu", "ElSubMenu"].includes(parent.type.name)) {
parent = parent.parent;
}
return parent;
});
const paddingStyle = vue.computed(() => {
let parent = instance.parent;
if (rootMenu.props.mode !== "vertical")
return {};
let padding = 20;
if (rootMenu.props.collapse) {
padding = 20;
} else {
while (parent && parent.type.name !== "ElMenu") {
if (parent.type.name === "ElSubMenu") {
padding += 20;
}
parent = parent.parent;
}
}
return { paddingLeft: `${padding}px` };
});
return {
parentMenu,
paddingStyle,
indexPath
};
}
exports["default"] = useMenu;
//# sourceMappingURL=use-menu.js.map
;