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' ;
211import PropTypes from '../_util/vue-types' ;
312import classNames from '../_util/classNames' ;
413import { defaultConfigProvider } from '../config-provider' ;
514import { flattenChildren } from '../_util/props-util' ;
615
7- export const BasicProps = {
16+ export const basicProps = {
817 prefixCls : PropTypes . string ,
918 hasSider : PropTypes . looseBool ,
1019 tagName : PropTypes . string ,
1120} ;
1221
22+ export type BasicProps = Partial < ExtractPropTypes < typeof basicProps > > & HTMLAttributes ;
23+
1324export interface SiderHookProvider {
1425 addSider ?: ( id : string ) => void ;
1526 removeSider ?: ( id : string ) => void ;
@@ -23,9 +34,8 @@ type GeneratorArgument = {
2334
2435function generator ( { suffixCls, tagName, name } : GeneratorArgument ) {
2536 return ( BasicComponent : typeof Basic ) => {
26- return defineComponent ( {
37+ const Adapter = defineComponent < BasicProps > ( {
2738 name,
28- props : BasicProps ,
2939 setup ( props , { slots } ) {
3040 const { getPrefixCls } = inject ( 'configProvider' , defaultConfigProvider ) ;
3141 return ( ) => {
@@ -44,19 +54,21 @@ function generator({ suffixCls, tagName, name }: GeneratorArgument) {
4454 } ;
4555 } ,
4656 } ) ;
57+ Adapter . props = basicProps ;
58+ return Adapter ;
4759 } ;
4860}
4961
5062const Basic = defineComponent ( {
51- props : BasicProps ,
63+ props : basicProps ,
5264 setup ( props , { slots } ) {
5365 const { prefixCls, tagName } = toRefs ( props ) ;
5466 return ( ) => createVNode ( tagName . value , { class : prefixCls . value } , slots . default ?.( ) ) ;
5567 } ,
5668} ) ;
5769
5870const BasicLayout = defineComponent ( {
59- props : BasicProps ,
71+ props : basicProps ,
6072 setup ( props , { slots } ) {
6173 const siders = ref < string [ ] > ( [ ] ) ;
6274 const siderHookProvider : SiderHookProvider = {
0 commit comments