fix(components): fix #10431

fix #10431 and unify the hooks into the hooks directory

closed #10431
This commit is contained in:
qiang 2022-11-06 22:46:52 +08:00
parent 8a694e729b
commit 76524b124c
8 changed files with 23 additions and 12 deletions

View File

@ -68,7 +68,7 @@
--code-text-color: var(--text-color);
--code-font-family: var(--font-family-mono);
--code-tooltip-bg-color: var(--code-bg-color);
--code-tooltip-color: #0C61C9;
--code-tooltip-color: #0c61c9;
// tip block
--block-tip-bg-color: rgba(var(--el-color-primary-rgb), 0.1);

View File

@ -191,4 +191,4 @@ The corresponding methods are: `ElMessageBox`, `ElMessageBox.alert`, `ElMessageB
| draggable | whether MessageBox is draggable | boolean | — | false |
| round-button | whether to use round button | boolean | — | false |
| button-size | custom size of confirm and cancel buttons | string | small / default / large | default |
| append-to | set the root element for the message box | string \| HTMLElement | — | — |
| append-to | set the root element for the message box | string \| HTMLElement | — | — |

View File

@ -1,7 +1,7 @@
import { computed } from 'vue'
import { TinyColor } from '@ctrl/tinycolor'
import type { MenuProps } from './menu'
import type { MenuProps } from '../menu'
export default function useMenuColor(props: MenuProps) {
const menuBarColor = computed(() => {

View File

@ -2,7 +2,7 @@ import { computed } from 'vue'
import { useNamespace } from '@element-plus/hooks'
import useMenuColor from './use-menu-color'
import type { MenuProps } from './menu'
import type { MenuProps } from '../menu'
export const useMenuCssVar = (props: MenuProps, level: number) => {
const ns = useNamespace('menu')

View File

@ -50,7 +50,7 @@ import ElTooltip from '@element-plus/components/tooltip'
import { Effect } from '@element-plus/components/popper'
import { throwError } from '@element-plus/utils'
import { useNamespace } from '@element-plus/hooks'
import useMenu from './use-menu'
import useMenu from './hooks/use-menu'
import { menuItemEmits, menuItemProps } from './menu-item'
import type { MenuItemRegistered, MenuProvider, SubMenuProvider } from './types'

View File

@ -26,7 +26,7 @@ import { useNamespace } from '@element-plus/hooks'
import Menubar from './utils/menu-bar'
import ElMenuCollapseTransition from './menu-collapse-transition.vue'
import ElSubMenu from './sub-menu'
import { useMenuCssVar } from './use-menu-css-var'
import { useMenuCssVar } from './hooks/use-menu-css-var'
import type { MenuItemClicked, MenuProvider, SubMenuProvider } from './types'
import type { NavigationFailure, Router } from 'vue-router'
@ -134,10 +134,21 @@ export default defineComponent({
// 展开该菜单项的路径上所有子菜单
// expand all subMenus of the menu item
indexPath.forEach((index) => {
const subMenu = subMenus.value[index]
subMenu && openMenu(index, subMenu.indexPath)
})
const openAllActiveItem = () => {
indexPath.forEach((index) => {
const subMenu = subMenus.value[index]
subMenu && openMenu(index, subMenu.indexPath)
})
}
if (activeIndex.value === props.defaultActive) {
openAllActiveItem()
} else {
// fix: #10431
if (indexPath.every((index) => openedMenus.value.includes(index))) {
openAllActiveItem()
}
}
}
const openMenu: MenuProvider['openMenu'] = (index, indexPath) => {

View File

@ -26,8 +26,8 @@ import {
import { useNamespace } from '@element-plus/hooks'
import { ArrowDown, ArrowRight } from '@element-plus/icons-vue'
import { ElIcon } from '@element-plus/components/icon'
import useMenu from './use-menu'
import { useMenuCssVar } from './use-menu-css-var'
import useMenu from './hooks/use-menu'
import { useMenuCssVar } from './hooks/use-menu-css-var'
import type { Placement } from '@element-plus/components/popper'
import type { CSSProperties, ExtractPropTypes, VNodeArrayChildren } from 'vue'