11import { randomId } from '../../../../shared/utils/random-id' ;
22import type { ComponentInternalInstance , Ref } from 'vue' ;
3- import {
4- defineComponent ,
5- getCurrentInstance ,
6- inject ,
7- onMounted ,
8- ref ,
9- watch ,
10- watchEffect
11- } from 'vue' ;
3+ import { defineComponent , getCurrentInstance , inject , onMounted , ref , watch , watchEffect } from 'vue' ;
124import { useNamespace } from '../../../../shared/hooks/use-namespace' ;
135import { useClick } from '../../composables/use-click' ;
146import { addLayer , clearSelect , getLayer , pushElement } from '../../composables/use-layer-operate' ;
157import { useNearestMenuElement } from '../../composables/use-nearest-menu-element' ;
168import MenuTransition from '../menu-transition/menu-transition' ;
179import { SubMenuProps , subMenuProps } from './sub-menu-types' ;
1810import { useShowSubMenu } from './use-sub-menu' ;
11+ import { SelectArrowIcon } from '../../../../svg-icons' ;
1912
2013const ns = useNamespace ( 'menu' ) ;
2114const subNs = useNamespace ( 'submenu' ) ;
@@ -31,7 +24,7 @@ export default defineComponent({
3124 setup ( props : SubMenuProps , ctx ) {
3225 const isShow = ref ( true ) ;
3326 const {
34- vnode : { key }
27+ vnode : { key } ,
3528 } = getCurrentInstance ( ) as ComponentInternalInstance ;
3629 let key_ = String ( key ) ;
3730 const defaultOpenKeys = inject ( 'openKeys' ) as Ref < string [ ] > ;
@@ -63,7 +56,7 @@ export default defineComponent({
6356 if ( idx >= 0 && cur . tagName === 'UL' ) {
6457 defaultOpenKeys . value . splice ( idx , 1 ) ;
6558 } else {
66- if ( cur . tagName === 'UL' ) {
59+ if ( cur . tagName === 'UL' ) {
6760 defaultOpenKeys . value . push ( key_ ) ;
6861 }
6962 }
@@ -72,7 +65,7 @@ export default defineComponent({
7265 type : 'submenu-change' ,
7366 state : isOpen . value ,
7467 key : key_ ,
75- el : ele
68+ el : ele ,
7669 } ) ;
7770 }
7871 } ;
@@ -93,12 +86,13 @@ export default defineComponent({
9386 watch (
9487 ( ) => defaultOpenKeys ,
9588 ( n ) => {
96- if ( n . value . includes ( key_ ) ) {
89+ if ( n . value . includes ( key_ ) ) {
9790 isOpen . value = true ;
9891 } else {
9992 isOpen . value = false ;
10093 }
101- } , { deep : true }
94+ } ,
95+ { deep : true }
10296 ) ;
10397 onMounted ( ( ) => {
10498 const subMenuTitle = title . value as unknown as HTMLElement ;
@@ -142,18 +136,19 @@ export default defineComponent({
142136 onClick = { clickHandle }
143137 class = { [ subMenuClass , class_layer . value , props [ 'disabled' ] && `${ subMenuClass } -disabled` ] }
144138 ref = { subMenu } >
145- < div
146- class = { [ `${ subMenuClass } -title` ] }
147- style = { `padding: 0 ${ indent } px` }
148- ref = { title } >
139+ < div class = { [ `${ subMenuClass } -title` ] } style = { `padding: 0 ${ indent } px` } ref = { title } >
149140 < span class = { `${ ns . b ( ) } -icon` } > { ctx . slots ?. icon ?.( ) } </ span >
150141 < span v-show = { ! isCollapsed . value } class = { `${ subMenuClass } -title-content` } >
151142 { props . title }
152143 </ span >
144+ < SelectArrowIcon
145+ v-show = { ! isCollapsed . value && key !== 'overflowContainer' && class_layer . value !== `layer_${ subMenuClass } ` }
146+ class = { [ ns . e ( 'arrow-icon' ) , { 'is-opened' : isOpen . value } ] }
147+ />
153148 < i
154149 v-show = { ! isCollapsed . value && key !== 'overflowContainer' }
155150 class = { {
156- 'icon icon-chevron-up' : class_layer . value !== `layer_ ${ subMenuClass } ` ,
151+ 'icon icon-chevron-up' : false ,
157152 'icon icon-chevron-right' : class_layer . value === `layer_${ subMenuClass } ` ,
158153 'is-opened' : isOpen . value ,
159154 } } > </ i >
@@ -162,8 +157,7 @@ export default defineComponent({
162157 < div
163158 class = { `${ ns . b ( ) } -item-horizontal-wrapper ${ ns . b ( ) } -item-horizontal-wrapper-hidden` }
164159 ref = { wrapper }
165- v-show = { ! props . disabled }
166- >
160+ v-show = { ! props . disabled } >
167161 { ctx . slots . default ?.( ) }
168162 </ div >
169163 ) : (
0 commit comments