From bd3a66e4a125ff69cb2c5240c297962f564119c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9A=AE=E5=B0=98?= Date: Wed, 28 Nov 2018 15:52:14 +0800 Subject: [PATCH] feat(Dialog): add rtl support --- src/dialog/dialog.jsx | 19 +++++++++++++++---- src/dialog/inner.jsx | 9 +++++---- src/dialog/show.jsx | 10 +++++++++- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/dialog/dialog.jsx b/src/dialog/dialog.jsx index 69bf3e5417..d2d8c6c61f 100644 --- a/src/dialog/dialog.jsx +++ b/src/dialog/dialog.jsx @@ -18,6 +18,7 @@ export default class Dialog extends Component { static propTypes = { prefix: PropTypes.string, pure: PropTypes.bool, + rtl: PropTypes.bool, className: PropTypes.string, /** * 是否显示 @@ -282,7 +283,12 @@ export default class Dialog extends Component { } renderInner(closeable) { - const { prefix, className, title, children, footer, footerAlign, footerActions, onOk, onCancel, okProps, cancelProps, onClose, locale, visible } = this.props; + const { + prefix, className, title, + children, footer, footerAlign, + footerActions, onOk, onCancel, + okProps, cancelProps, onClose, + locale, visible, rtl } = this.props; const others = pickOthers(Object.keys(Dialog.propTypes), this.props); return ( @@ -298,6 +304,7 @@ export default class Dialog extends Component { cancelProps={cancelProps} locale={locale} closeable={closeable} + rtl={rtl} onClose={onClose.bind(this, 'closeClick')} {...others}> {children} @@ -307,7 +314,10 @@ export default class Dialog extends Component { render() { const { - prefix, visible, hasMask, animation, autoFocus, closeable, onClose, afterClose, shouldUpdatePosition, align, overlayProps + prefix, visible, hasMask, + animation, autoFocus, closeable, + onClose, afterClose, shouldUpdatePosition, + align, overlayProps, rtl, } = this.props; const useCSS = this.useCSSToPosition(); @@ -326,7 +336,8 @@ export default class Dialog extends Component { onRequestClose: onClose, needAdjust: false, disableScroll: true, - ref: this.getOverlayRef + ref: this.getOverlayRef, + rtl, }; if (!useCSS) { newOverlayProps.beforePosition = this.beforePosition; @@ -339,7 +350,7 @@ export default class Dialog extends Component { return ( {useCSS ? -
+
{inner}
: inner} diff --git a/src/dialog/inner.jsx b/src/dialog/inner.jsx index f71acd0ac3..9cc34d1a8b 100644 --- a/src/dialog/inner.jsx +++ b/src/dialog/inner.jsx @@ -26,7 +26,8 @@ export default class Inner extends Component { closeable: PropTypes.bool, onClose: PropTypes.func, locale: PropTypes.object, - role: PropTypes.string + role: PropTypes.string, + rtl: PropTypes.bool, }; static defaultProps = { @@ -65,7 +66,7 @@ export default class Inner extends Component { } renderFooter() { - const { prefix, footer, footerAlign, footerActions, locale } = this.props; + const { prefix, footer, footerAlign, footerActions, locale, rtl } = this.props; if (footer === false) { return null; @@ -115,7 +116,7 @@ export default class Inner extends Component { } render() { - const { prefix, className, closeable, title, role } = this.props; + const { prefix, className, closeable, title, role, rtl } = this.props; const others = pickOthers(Object.keys(Inner.propTypes), this.props); const newClassName = cx({ [`${prefix}dialog`]: true, @@ -137,7 +138,7 @@ export default class Inner extends Component { } return ( -
+
{header} {body} {footer} diff --git a/src/dialog/show.jsx b/src/dialog/show.jsx index 5aa2765b12..87c2a79e11 100644 --- a/src/dialog/show.jsx +++ b/src/dialog/show.jsx @@ -19,6 +19,7 @@ class Modal extends Component { static propTypes = { prefix: PropTypes.string, pure: PropTypes.bool, + rtl: PropTypes.bool, type: PropTypes.string, title: PropTypes.node, content: PropTypes.node, @@ -83,7 +84,12 @@ class Modal extends Component { } render() { - const { prefix, type, title, content, messageProps, footerActions, onOk, onCancel, onClose, okProps, needWrapper, ...others } = this.props; + const { + prefix, type, title, + content, messageProps, footerActions, + onOk, onCancel, onClose, + okProps, needWrapper, rtl, + ...others } = this.props; const newTitle = needWrapper && type ? null : title; const newContent = needWrapper && type ? ( @@ -95,6 +101,7 @@ class Modal extends Component { title={title} className={cx(`${prefix}dialog-message`, messageProps.className)}> {content} + rtl={rtl} ) : content; @@ -117,6 +124,7 @@ class Modal extends Component { {...others} visible={visible} title={newTitle} + rtl={rtl} footerActions={newFooterActions} onOk={this.state.loading ? noop : newOnOk} onCancel={newOnCancel}