@@ -2,6 +2,7 @@ import type { ExtractPropTypes, HTMLAttributes } from 'vue';
2
2
import { computed , createVNode , defineComponent , provide , ref } from 'vue' ;
3
3
import useConfigInject from '../config-provider/hooks/useConfigInject' ;
4
4
import { SiderHookProviderKey } from './injectionKey' ;
5
+ import useStyle from './style' ;
5
6
6
7
export const basicProps = ( ) => ( {
7
8
prefixCls : String ,
@@ -18,7 +19,7 @@ type GeneratorArgument = {
18
19
} ;
19
20
20
21
function generator ( { suffixCls, tagName, name } : GeneratorArgument ) {
21
- return ( BasicComponent : typeof Basic ) => {
22
+ return ( BasicComponent : typeof BasicLayout ) => {
22
23
const Adapter = defineComponent ( {
23
24
compatConfig : { MODE : 3 } ,
24
25
name,
@@ -49,9 +50,11 @@ const Basic = defineComponent({
49
50
50
51
const BasicLayout = defineComponent ( {
51
52
compatConfig : { MODE : 3 } ,
53
+ inheritAttrs : false ,
52
54
props : basicProps ( ) ,
53
- setup ( props , { slots } ) {
54
- const { direction } = useConfigInject ( '' , props ) ;
55
+ setup ( props , { slots, attrs } ) {
56
+ const { prefixCls, direction } = useConfigInject ( '' , props ) ;
57
+ const [ wrapSSR , hashId ] = useStyle ( prefixCls ) ;
55
58
const siders = ref < string [ ] > ( [ ] ) ;
56
59
const siderHookProvider = {
57
60
addSider : ( id : string ) => {
@@ -66,6 +69,7 @@ const BasicLayout = defineComponent({
66
69
const divCls = computed ( ( ) => {
67
70
const { prefixCls, hasSider } = props ;
68
71
return {
72
+ [ hashId . value ] : true ,
69
73
[ `${ prefixCls } ` ] : true ,
70
74
[ `${ prefixCls } -has-sider` ] :
71
75
typeof hasSider === 'boolean' ? hasSider : siders . value . length > 0 ,
@@ -74,7 +78,7 @@ const BasicLayout = defineComponent({
74
78
} ) ;
75
79
return ( ) => {
76
80
const { tagName } = props ;
77
- return createVNode ( tagName , { class : divCls . value } , slots ) ;
81
+ return wrapSSR ( createVNode ( tagName , { ... attrs , class : [ divCls . value , attrs . class ] } , slots ) ) ;
78
82
} ;
79
83
} ,
80
84
} ) ;
0 commit comments