1
- import { createVNode , defineComponent , inject , provide , toRefs , ref } from 'vue' ;
1
+ import {
2
+ createVNode ,
3
+ defineComponent ,
4
+ inject ,
5
+ provide ,
6
+ toRefs ,
7
+ ref ,
8
+ ExtractPropTypes ,
9
+ HTMLAttributes ,
10
+ } from 'vue' ;
2
11
import PropTypes from '../_util/vue-types' ;
3
12
import classNames from '../_util/classNames' ;
4
13
import { defaultConfigProvider } from '../config-provider' ;
5
14
import { flattenChildren } from '../_util/props-util' ;
6
15
7
- export const BasicProps = {
16
+ export const basicProps = {
8
17
prefixCls : PropTypes . string ,
9
18
hasSider : PropTypes . looseBool ,
10
19
tagName : PropTypes . string ,
11
20
} ;
12
21
22
+ export type BasicProps = Partial < ExtractPropTypes < typeof basicProps > > & HTMLAttributes ;
23
+
13
24
export interface SiderHookProvider {
14
25
addSider ?: ( id : string ) => void ;
15
26
removeSider ?: ( id : string ) => void ;
@@ -23,9 +34,8 @@ type GeneratorArgument = {
23
34
24
35
function generator ( { suffixCls, tagName, name } : GeneratorArgument ) {
25
36
return ( BasicComponent : typeof Basic ) => {
26
- return defineComponent ( {
37
+ const Adapter = defineComponent < BasicProps > ( {
27
38
name,
28
- props : BasicProps ,
29
39
setup ( props , { slots } ) {
30
40
const { getPrefixCls } = inject ( 'configProvider' , defaultConfigProvider ) ;
31
41
return ( ) => {
@@ -44,19 +54,21 @@ function generator({ suffixCls, tagName, name }: GeneratorArgument) {
44
54
} ;
45
55
} ,
46
56
} ) ;
57
+ Adapter . props = basicProps ;
58
+ return Adapter ;
47
59
} ;
48
60
}
49
61
50
62
const Basic = defineComponent ( {
51
- props : BasicProps ,
63
+ props : basicProps ,
52
64
setup ( props , { slots } ) {
53
65
const { prefixCls, tagName } = toRefs ( props ) ;
54
66
return ( ) => createVNode ( tagName . value , { class : prefixCls . value } , slots . default ?.( ) ) ;
55
67
} ,
56
68
} ) ;
57
69
58
70
const BasicLayout = defineComponent ( {
59
- props : BasicProps ,
71
+ props : basicProps ,
60
72
setup ( props , { slots } ) {
61
73
const siders = ref < string [ ] > ( [ ] ) ;
62
74
const siderHookProvider : SiderHookProvider = {
0 commit comments