diff --git a/packages/taro-ui/src/components/float-layout/index.tsx b/packages/taro-ui/src/components/float-layout/index.tsx index 771ee960b..610a79484 100644 --- a/packages/taro-ui/src/components/float-layout/index.tsx +++ b/packages/taro-ui/src/components/float-layout/index.tsx @@ -48,13 +48,15 @@ export default class AtFloatLayout extends React.Component< } } - private close = (): void => { - this.setState( - { - _isOpened: false - }, - this.handleClose - ) + private close = (type: 'overlay' | 'button', closeOnClickOverlay?: boolean): void => { + if ((type === 'overlay' && closeOnClickOverlay) || type === 'button') { + this.setState( + { + _isOpened: false + }, + this.handleClose + ) + } } private handleTouchMove = (e: CommonEvent): void => { @@ -65,14 +67,14 @@ export default class AtFloatLayout extends React.Component< const { _isOpened } = this.state const { title, - scrollY, scrollX, scrollTop, scrollLeft, upperThreshold, lowerThreshold, - scrollWithAnimation + scrollWithAnimation, + closeOnClickOverlay = true } = this.props const rootClass = classNames( @@ -85,12 +87,12 @@ export default class AtFloatLayout extends React.Component< return ( - + this.close('overlay', closeOnClickOverlay)} className='at-float-layout__overlay' /> {title ? ( {title} - + this.close('button')} /> ) : null} diff --git a/packages/taro-ui/types/float-layout.d.ts b/packages/taro-ui/types/float-layout.d.ts index d623086ed..59ee20363 100644 --- a/packages/taro-ui/types/float-layout.d.ts +++ b/packages/taro-ui/types/float-layout.d.ts @@ -61,6 +61,10 @@ export interface AtFloatLayoutProps extends AtComponent { * 滚动到底部/右边,会触发 onScrollToLower 事件 */ onScrollToLower?: CommonEventFunction + /** + * 点击遮罩层是否关闭,默认关闭 + */ + closeOnClickOverlay?: boolean } export interface AtFloatLayoutState {