@@ -136,51 +136,53 @@ export default defineComponent({
136
136
} )
137
137
) ;
138
138
} ) ;
139
-
139
+ const isTrueProps = ( val : boolean | '' ) => {
140
+ return val || val === '' ;
141
+ } ;
140
142
const getDisabledCompatibleChildren = ( ele : any ) => {
141
- if (
142
- ( ( typeof ele . type === 'object' &&
143
- ( ele . type . __ANT_BUTTON === true ||
144
- ele . type . __ANT_SWITCH === true ||
145
- ele . type . __ANT_CHECKBOX === true ) ) ||
146
- ele . type === 'button' ) &&
147
- ele . props &&
148
- ( ele . props . disabled || ele . props . disabled === '' )
149
- ) {
150
- // Pick some layout related style properties up to span
151
- // Prevent layout bugs like https://github.com/ant-design/ant-design/issues/5254
152
- const { picked , omitted } = splitObject ( getStyle ( ele ) , [
153
- 'position ',
154
- 'left ',
155
- 'right ',
156
- 'top ',
157
- 'bottom ',
158
- 'float ',
159
- 'display ',
160
- 'zIndex' ,
161
- ] ) ;
162
- const spanStyle = {
163
- display : 'inline-block' , // default inline-block is important
164
- ... picked ,
165
- cursor : 'not-allowed' ,
166
- width : ele . props && ele . props . block ? '100%' : null ,
167
- } ;
168
- const buttonStyle = {
169
- ... omitted ,
170
- pointerEvents : 'none' ,
171
- } ;
172
- const child = cloneElement (
173
- ele ,
174
- {
175
- style : buttonStyle ,
176
- } ,
177
- true ,
178
- ) ;
179
- return (
180
- < span style = { spanStyle } class = { ` ${ prefixCls } -disabled-compatible-wrapper` } >
181
- { child }
182
- </ span >
183
- ) ;
143
+ const elementType = ele . type as any ;
144
+ if ( typeof elementType === 'object' && ele . props ) {
145
+ if (
146
+ ( ( elementType . __ANT_BUTTON === true || elementType === 'button' ) &&
147
+ isTrueProps ( ele . props . disabled ) ) ||
148
+ ( elementType . __ANT_SWITCH === true &&
149
+ ( isTrueProps ( ele . props . disabled ) || isTrueProps ( ele . props . loading ) ) )
150
+ ) {
151
+ // Pick some layout related style properties up to span
152
+ // Prevent layout bugs like https://github.com/ant-design/ant-design/issues/5254
153
+ const { picked , omitted } = splitObject ( getStyle ( ele ) , [
154
+ 'position' ,
155
+ 'left ',
156
+ 'right ',
157
+ 'top ',
158
+ 'bottom ',
159
+ 'float ',
160
+ 'display ',
161
+ 'zIndex ',
162
+ ] ) ;
163
+ const spanStyle = {
164
+ display : 'inline-block' , // default inline-block is important
165
+ ... picked ,
166
+ cursor : 'not-allowed' ,
167
+ width : ele . props && ele . props . block ? '100%' : null ,
168
+ } ;
169
+ const buttonStyle = {
170
+ ... omitted ,
171
+ pointerEvents : 'none' ,
172
+ } ;
173
+ const child = cloneElement (
174
+ ele ,
175
+ {
176
+ style : buttonStyle ,
177
+ } ,
178
+ true ,
179
+ ) ;
180
+ return (
181
+ < span style = { spanStyle } class = { ` ${ prefixCls } -disabled-compatible-wrapper` } >
182
+ { child }
183
+ </ span >
184
+ ) ;
185
+ }
184
186
}
185
187
return ele ;
186
188
} ;
0 commit comments