From 9fd345e3f543378a40a0a5d5a9caa10aa4f6e008 Mon Sep 17 00:00:00 2001 From: bindoon Date: Tue, 19 Feb 2019 22:17:00 +0800 Subject: [PATCH] feat(Form): support rtl --- src/form/form.jsx | 10 ++++++---- src/form/main.scss | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/form/form.jsx b/src/form/form.jsx index 1df8335e8d..4f7f31396d 100644 --- a/src/form/form.jsx +++ b/src/form/form.jsx @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; -import {obj, func} from '../util'; +import { obj, func } from '../util'; import Field from '../field'; function pickerDefined(obj) { @@ -89,7 +89,8 @@ export default class Form extends React.Component { * 设置标签类型 */ component: PropTypes.string, - fieldOptions: PropTypes.object + fieldOptions: PropTypes.object, + rtl: PropTypes.bool, }; static defaultProps = { @@ -146,11 +147,11 @@ export default class Form extends React.Component { } onChange = (name, value) => { - this.props.onChange(this._formField.getValues(), {name, value, field: this._formField}); + this.props.onChange(this._formField.getValues(), { name, value, field: this._formField }); }; render() { - const {className, inline, size, labelAlign, labelTextAlign, onSubmit, children, labelCol, wrapperCol, style, prefix, component: Tag} = this.props; + const { className, inline, size, labelAlign, labelTextAlign, onSubmit, children, labelCol, wrapperCol, style, prefix, rtl, component: Tag } = this.props; const formClassName = classNames({ [`${prefix}form`]: true, @@ -163,6 +164,7 @@ export default class Form extends React.Component { { React.Children.map(children, (child) => { diff --git a/src/form/main.scss b/src/form/main.scss index 544fb5b43b..b7e774ff89 100644 --- a/src/form/main.scss +++ b/src/form/main.scss @@ -141,3 +141,27 @@ display: table-cell; } } + +#{$form-prefix}[dir="rtl"] { + #{$form-prefix}-item-label { + text-align: left; + padding-left: $form-label-padding-r; + padding-right: 0; + } + &.#{$css-prefix}inline { + #{$form-prefix}-item { + &:not(:last-child) { + margin-left: $form-inline-m-item-margin-r; + margin-right: 0; + } + &.#{$css-prefix}large:not(:last-child) { + margin-left: $form-inline-l-item-margin-r; + margin-right: 0; + } + &.#{$css-prefix}small:not(:last-child) { + margin-left: $form-inline-s-item-margin-r; + margin-right: 0; + } + } + } +}