File tree Expand file tree Collapse file tree 4 files changed +2780
-313
lines changed
Expand file tree Collapse file tree 4 files changed +2780
-313
lines changed Original file line number Diff line number Diff line change 33exports [` Submenu > props > :disabled 1` ] = `
44<li
55 class = " t-submenu t-is-disabled"
6- />
6+ >
7+ <div
8+ style = " display: none;"
9+ />
10+ </li >
711` ;
812
913exports [` Submenu > props > :name 1` ] = `
1014<li
1115 class = " t-submenu"
1216 name = " 1"
13- />
17+ >
18+ <div
19+ style = " display: none;"
20+ />
21+ </li >
1422` ;
1523
1624exports [` Submenu > slot > <default > 1`] = `
@@ -50,6 +58,11 @@ exports[`Submenu > slot > <default> 1`] = `
5058 <div />
5159 </ul >
5260 </transition-stub >
61+ <div
62+ style = " display: none;"
63+ >
64+ <div />
65+ </div >
5366</li >
5467`;
5568
@@ -73,6 +86,9 @@ exports[`Submenu > slot > <icon> 1`] = `
7386 style = " --padding-left: 44px; display: none;"
7487 />
7588 </transition-stub >
89+ <div
90+ style = " display: none;"
91+ />
7692</li >
7793`;
7894
@@ -97,5 +113,8 @@ exports[`Submenu > slot > <title> 1`] = `
97113 style = " --padding-left: 44px; display: none;"
98114 />
99115 </transition-stub >
116+ <div
117+ style = " display: none;"
118+ />
100119</li >
101120`;
Original file line number Diff line number Diff line change @@ -73,7 +73,10 @@ export default defineComponent({
7373 vnode : ctx . slots . default && ctx . slots . default ( ) ,
7474 } ) ;
7575 } ) ;
76-
76+ const activeValues = menu . activeValues . value ;
77+ if ( activeValues . includes ( props . value ) && ! activeValues . includes ( submenu ?. value ) ) {
78+ activeValues . push ( submenu ?. value ) ;
79+ }
7780 return {
7881 menu,
7982 active,
Original file line number Diff line number Diff line change @@ -51,6 +51,7 @@ export default defineComponent({
5151 const isActive = computed ( ( ) => activeValues . value . indexOf ( props . value ) > - 1 ) ;
5252 const popupVisible = ref ( false ) ;
5353 const isCursorInPopup = ref ( false ) ;
54+
5455 const rippleColor = computed ( ( ) => ( theme . value === 'light' ? '#E7E7E7' : '#383838' ) ) ;
5556 const isOpen = computed ( ( ) => {
5657 if ( mode . value === 'popup' ) {
@@ -244,6 +245,7 @@ export default defineComponent({
244245 handleMouseLeavePopup,
245246 handleSubmenuItemClick,
246247 classPrefix,
248+ activeValues,
247249 } ;
248250 } ,
249251 methods : {
@@ -367,6 +369,9 @@ export default defineComponent({
367369 render ( ) {
368370 let child = null ;
369371 let events = { } ;
372+ let virtualChild ;
373+ // popup模式下且存在多层的特殊封装场景中,需要将子节点挂载进行计算高亮
374+ if ( this . activeValues . length < 2 ) virtualChild = < div style = "display:none" > { renderContent ( this , 'default' , 'content' ) } </ div > ;
370375
371376 if ( this . mode === 'popup' ) {
372377 events = {
@@ -380,6 +385,7 @@ export default defineComponent({
380385 return (
381386 < li class = { this . classes } { ...{ on : events } } >
382387 { child }
388+ { virtualChild }
383389 </ li >
384390 ) ;
385391 } ,
You can’t perform that action at this time.
0 commit comments