@@ -124,7 +124,7 @@ class DrawerChild extends React.Component<IDrawerChildProps, IState> {
124
124
const { getOpenCount, open } = this . props ;
125
125
delete currentDrawer [ this . drawerId ] ;
126
126
if ( open ) {
127
- this . setLevelDomTransform ( false ) ;
127
+ this . setLevelTransform ( false ) ;
128
128
}
129
129
if ( typeof getOpenCount === 'function' && ! getOpenCount ( ) ) {
130
130
document . body . style . overflow = '' ;
@@ -204,34 +204,44 @@ class DrawerChild extends React.Component<IDrawerChildProps, IState> {
204
204
? this . contentDom . getBoundingClientRect ( ) [ isHorizontal ? 'width' : 'height' ]
205
205
: 0 ;
206
206
const value = ( isHorizontal ? width : height ) || contentValue ;
207
- this . setLevelDomTransform ( open , placementName , value ) ;
207
+ this . setLevelAndScrolling ( open , placementName , value ) ;
208
208
}
209
209
210
- private setLevelDomTransform = (
210
+ private setLevelTransform = (
211
211
open ?: boolean ,
212
212
placementName ?: string ,
213
213
value ?: string | number ,
214
+ right ?: number ,
214
215
) => {
215
- const { placement, levelMove, duration, ease, onChange, showMask } = this . props ;
216
+ const { placement, levelMove, duration, ease, showMask } = this . props ;
217
+ // router 切换时可能会导至页面失去滚动条,所以需要时时获取。
218
+ this . levelDom . forEach ( dom => {
219
+ dom . style . transition = `transform ${ duration } ${ ease } ` ;
220
+ addEventListener ( dom , transitionEnd , this . transitionEnd ) ;
221
+ let levelValue = open ? value : 0 ;
222
+ if ( levelMove ) {
223
+ const $levelMove = transformArguments ( levelMove , { target : dom , open } ) ;
224
+ levelValue = open ? $levelMove [ 0 ] : $levelMove [ 1 ] || 0 ;
225
+ }
226
+ const $value = typeof levelValue === 'number' ? `${ levelValue } px` : levelValue ;
227
+ let placementPos = placement === 'left' || placement === 'top' ? $value : `-${ $value } ` ;
228
+ placementPos = showMask && placement === 'right' && right ?
229
+ `calc(${ placementPos } + ${ right } px)` : placementPos ;
230
+ dom . style . transform = levelValue ? `${ placementName } (${ placementPos } )` : '' ;
231
+ } ) ;
232
+ }
233
+
234
+ private setLevelAndScrolling = (
235
+ open ?: boolean ,
236
+ placementName ?: string ,
237
+ value ?: string | number ,
238
+ ) => {
239
+ const { onChange } = this . props ;
216
240
if ( ! windowIsUndefined ) {
217
241
const right = document . body . scrollHeight >
218
242
( window . innerHeight || document . documentElement . clientHeight ) &&
219
243
window . innerWidth > document . body . offsetWidth ? getScrollBarSize ( true ) : 0 ;
220
- // router 切换时可能会导至页面失去滚动条,所以需要时时获取。
221
- this . levelDom . forEach ( dom => {
222
- dom . style . transition = `transform ${ duration } ${ ease } ` ;
223
- addEventListener ( dom , transitionEnd , this . transitionEnd ) ;
224
- let levelValue = open ? value : 0 ;
225
- if ( levelMove ) {
226
- const $levelMove = transformArguments ( levelMove , { target : dom , open } ) ;
227
- levelValue = open ? $levelMove [ 0 ] : $levelMove [ 1 ] || 0 ;
228
- }
229
- const $value = typeof levelValue === 'number' ? `${ levelValue } px` : levelValue ;
230
- let placementPos = placement === 'left' || placement === 'top' ? $value : `-${ $value } ` ;
231
- placementPos = showMask && placement === 'right' && right ?
232
- `calc(${ placementPos } + ${ right } px)` : placementPos ;
233
- dom . style . transform = levelValue ? `${ placementName } (${ placementPos } )` : '' ;
234
- } ) ;
244
+ this . setLevelTransform ( open , placementName , value , right ) ;
235
245
this . toggleScrollingToDrawerAndBody ( right ) ;
236
246
}
237
247
if ( onChange ) {
0 commit comments