You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.5 KiB

/**
* 在原基础上增加了 inlineIndent 属性,用于确定每级节点的单位缩进距离
*/
export default {
inject: ['rootMenu'],
props: {
inlineIndent: {type: Number, default: 20}
},
computed: {
indexPath() {
const path = [this.index]
let parent = this.$parent
while (parent.$options.componentName !== 'ElMenu') {
if (parent.index) {
path.unshift(parent.index)
}
parent = parent.$parent
}
return path
},
parentMenu() {
let parent = this.$parent
while (
parent &&
['ElMenu', 'ElSubmenu'].indexOf(parent.$options.componentName) === -1
) {
parent = parent.$parent
}
return parent
},
paddingStyle() {
if (this.rootMenu.mode !== 'vertical') return {}
let padding = this.inlineIndent
if (!this.rootMenu.collapse) {
let parent = this.$parent
while (parent && parent.$options.componentName !== 'ElMenu') {
if (parent.$options.componentName === 'ElSubmenu') {
padding += this.inlineIndent
}
parent = parent.$parent
}
}
return {'padding-left': `${padding}px`}
}
}
}