@@ -41,6 +41,8 @@ import type { FocusEventHandler, MouseEventHandler } from '../../_util/EventInte
41
41
import collapseMotion from '../../_util/collapseMotion' ;
42
42
import type { ItemType } from './hooks/useItems' ;
43
43
import useItems from './hooks/useItems' ;
44
+ import useStyle from '../style' ;
45
+ import { useInjectOverride } from './OverrideContext' ;
44
46
45
47
export const menuProps = ( ) => ( {
46
48
id : String ,
@@ -95,7 +97,17 @@ export default defineComponent({
95
97
props : menuProps ( ) ,
96
98
slots : [ 'expandIcon' , 'overflowedIndicator' ] ,
97
99
setup ( props , { slots, emit, attrs } ) {
98
- const { prefixCls, direction, getPrefixCls } = useConfigInject ( 'menu' , props ) ;
100
+ const { direction, getPrefixCls } = useConfigInject ( 'menu' , props ) ;
101
+ const override = useInjectOverride ( ) ;
102
+ const prefixCls = computed ( ( ) => {
103
+ return getPrefixCls ( 'menu' , props . prefixCls || override ?. prefixCls ?. value ) ;
104
+ } ) ;
105
+ const [ wrapSSR , hashId ] = useStyle (
106
+ prefixCls ,
107
+ computed ( ( ) => {
108
+ return ! override ;
109
+ } ) ,
110
+ ) ;
99
111
const store = shallowRef < Map < string , StoreMenuInfo > > ( new Map ( ) ) ;
100
112
const siderCollapsed = inject ( SiderCollapsedKey , ref ( undefined ) ) ;
101
113
const inlineCollapsed = computed ( ( ) => {
@@ -265,6 +277,9 @@ export default defineComponent({
265
277
mergedMode . value = props . mode ;
266
278
mergedInlineCollapsed . value = false ;
267
279
}
280
+ if ( override ?. mode ?. value ) {
281
+ mergedMode . value = override . mode . value ;
282
+ }
268
283
} ) ;
269
284
270
285
const isInlineMode = computed ( ( ) => mergedMode . value === 'inline' ) ;
@@ -346,6 +361,7 @@ export default defineComponent({
346
361
const onInternalClick = ( info : MenuInfo ) => {
347
362
emit ( 'click' , info ) ;
348
363
triggerSelection ( info ) ;
364
+ override ?. onClick ?.( ) ;
349
365
} ;
350
366
351
367
const onInternalOpenChange = ( key : Key , open : boolean ) => {
@@ -406,7 +422,7 @@ export default defineComponent({
406
422
triggerSubMenuAction : computed ( ( ) => props . triggerSubMenuAction ) ,
407
423
getPopupContainer : computed ( ( ) => props . getPopupContainer ) ,
408
424
inlineCollapsed : mergedInlineCollapsed ,
409
- antdMenuTheme : computed ( ( ) => props . theme ) ,
425
+ theme : computed ( ( ) => props . theme ) ,
410
426
siderCollapsed,
411
427
defaultMotions : computed ( ( ) => ( isMounted . value ? defaultMotions . value : null ) ) ,
412
428
motion : computed ( ( ) => ( isMounted . value ? props . motion : null ) ) ,
@@ -419,7 +435,7 @@ export default defineComponent({
419
435
isRootMenu : ref ( true ) ,
420
436
expandIcon,
421
437
forceSubMenuRender : computed ( ( ) => props . forceSubMenuRender ) ,
422
- rootClassName : computed ( ( ) => '' ) ,
438
+ rootClassName : hashId ,
423
439
} ) ;
424
440
return ( ) => {
425
441
const childList = itemsNodes . value || flattenChildren ( slots . default ?.( ) ) ;
@@ -442,14 +458,14 @@ export default defineComponent({
442
458
) ) ;
443
459
const overflowedIndicator = slots . overflowedIndicator ?.( ) || < EllipsisOutlined /> ;
444
460
445
- return (
461
+ return wrapSSR (
446
462
< Overflow
447
463
{ ...attrs }
448
464
onMousedown = { props . onMousedown }
449
465
prefixCls = { `${ prefixCls . value } -overflow` }
450
466
component = "ul"
451
467
itemComponent = { MenuItem }
452
- class = { [ className . value , attrs . class ] }
468
+ class = { [ className . value , attrs . class , hashId . value ] }
453
469
role = "menu"
454
470
id = { props . id }
455
471
data = { wrappedChildList }
@@ -499,7 +515,7 @@ export default defineComponent({
499
515
< PathContext > { wrappedChildList } </ PathContext >
500
516
</ div >
501
517
</ Teleport >
502
- </ Overflow >
518
+ </ Overflow > ,
503
519
) ;
504
520
} ;
505
521
} ,
0 commit comments