diff --git a/examples/docs/en-US/menu.md b/examples/docs/en-US/menu.md index adf17d643..5bae6c194 100644 --- a/examples/docs/en-US/menu.md +++ b/examples/docs/en-US/menu.md @@ -341,7 +341,7 @@ Vertical NavMenu could be collapsed. ### Menu-Item Attribute | Attribute | Description | Type | Accepted Values | Default | |---------- |-------- |---------- |------------- |-------- | -| index | unique identification | string | — | — | +| index | unique identification | string/null | — | null | | route | Vue Router object | object | — | — | | disabled | whether disabled | boolean | — | false | diff --git a/examples/docs/es/menu.md b/examples/docs/es/menu.md index 2338a410c..bb16bf6e9 100644 --- a/examples/docs/es/menu.md +++ b/examples/docs/es/menu.md @@ -333,7 +333,7 @@ NavMenu vertical puede ser colapsado. ### Atributos SubMenu | Atributo | Descripción | Tipo | Valores aceptados | Por defecto | | ------------ | ---------------------------------------- | ------ | ----------------- | ----------- | -| index | identificador único | string | — | — | +| index | identificador único | string/null | — | null | | popper-class | nombre personalizado de la clase del menu popup | string | — | — | | show-timeout | tiempo de espera antes de mostrar un submenú | number | — | 300 | | hide-timeout | tiempo de espera antes de ocultar un submenú | number | — | 300 | diff --git a/examples/docs/fr-FR/menu.md b/examples/docs/fr-FR/menu.md index d3596b835..8649518bb 100644 --- a/examples/docs/fr-FR/menu.md +++ b/examples/docs/fr-FR/menu.md @@ -347,7 +347,7 @@ Le menu vertical peut être réduit. | Attributs | Description | Type | Valeurs acceptées | Défaut | |---------- |-------- |---------- |------------- |-------- | -| index | Identificateur unique. | string | — | — | +| index | Identificateur unique. | string/null | — | null | | route | Objet Vue Router. | object | — | — | | disabled | Si l'item est désactivé. | boolean | — | false | diff --git a/examples/docs/zh-CN/menu.md b/examples/docs/zh-CN/menu.md index 4aa3ff138..ca158ab50 100644 --- a/examples/docs/zh-CN/menu.md +++ b/examples/docs/zh-CN/menu.md @@ -327,7 +327,7 @@ ### SubMenu Attribute | 参数 | 说明 | 类型 | 可选值 | 默认值 | |---------- |-------- |---------- |------------- |-------- | -| index | 唯一标志 | string | — | — | +| index | 唯一标志 | string/null | — | null | | popper-class | 弹出菜单的自定义类名 | string | — | — | | show-timeout | 展开 sub-menu 的延时 | number | — | 300 | | hide-timeout | 收起 sub-menu 的延时 | number | — | 300 | diff --git a/packages/menu/src/menu-item.vue b/packages/menu/src/menu-item.vue index a4e7aac61..e53ec87e7 100644 --- a/packages/menu/src/menu-item.vue +++ b/packages/menu/src/menu-item.vue @@ -44,8 +44,8 @@ props: { index: { - type: String, - required: true + default: null, + validator: val => typeof val === 'string' || val === null }, route: [String, Object], disabled: Boolean diff --git a/packages/menu/src/menu.vue b/packages/menu/src/menu.vue index ca448e3c3..3054e1d25 100644 --- a/packages/menu/src/menu.vue +++ b/packages/menu/src/menu.vue @@ -251,15 +251,19 @@ handleItemClick(item) { const { index, indexPath } = item; const oldActiveIndex = this.activeIndex; + const hasIndex = item.index !== null; + + if (hasIndex) { + this.activeIndex = item.index; + } - this.activeIndex = item.index; this.$emit('select', index, indexPath, item); if (this.mode === 'horizontal' || this.collapse) { this.openedMenus = []; } - if (this.router) { + if (this.router && hasIndex) { this.routeToItem(item, (error) => { this.activeIndex = oldActiveIndex; if (error) console.error(error); diff --git a/types/submenu.d.ts b/types/submenu.d.ts index f5e135954..559445064 100644 --- a/types/submenu.d.ts +++ b/types/submenu.d.ts @@ -3,7 +3,7 @@ import { ElementUIComponent } from './component' /** Submenu Component */ export declare class ElSubmenu extends ElementUIComponent { /** Unique identification */ - index: string + index: string | null /** Delay time before showing a sub-menu */ showTimeout: number