提交 ba168b82 编写于 作者: P paranoidjk 提交者: Benjy Cui

refactor: use spread operator replace object-assign (#6677)

上级 5aebf27f
import assign from 'object-assign';
export function getComponentLocale(props, context, componentName, getDefaultLocale) {
let locale: any = {};
if (context && context.antLocale && context.antLocale[componentName]) {
......@@ -11,8 +9,14 @@ export function getComponentLocale(props, context, componentName, getDefaultLoca
locale = defaultLocale.default || defaultLocale;
}
const result = assign({}, locale, props.locale);
result.lang = assign({}, locale.lang, props.locale.lang);
const result = {
...locale,
...props.locale,
};
result.lang = {
...locale.lang,
...props.locale.lang,
};
return result;
}
......
import React from 'react';
import { createElement, Component } from 'react';
import assign from 'object-assign';
import omit from 'omit.js';
import classNames from 'classnames';
function getNumberArray(num) {
return num ?
......@@ -119,24 +119,30 @@ export default class ScrollNumber extends Component<ScrollNumberProps, any> {
}
render() {
const { prefixCls, className, style, component = 'sup' } = this.props;
// fix https://fb.me/react-unknown-prop
const props = assign({}, omit(this.props, [
const restProps = omit(this.props, [
'count',
'onAnimated',
'component',
'prefixCls',
]), {
className: `${this.props.prefixCls} ${this.props.className}`,
});
]);
const newProps = {
...restProps,
className: classNames({
[`${prefixCls}`]: !!prefixCls,
[`${className}`]: !!className,
}),
};
// allow specify the border
// mock border-color by box-shadow for compatible with old usage:
// <Badge count={4} style={{ backgroundColor: '#fff', color: '#999', borderColor: '#d9d9d9' }} />
if (props.style && props.style.borderColor) {
props.style.boxShadow = `0 0 0 1px ${props.style.borderColor} inset`;
if (style && style.borderColor) {
newProps.style.boxShadow = `0 0 0 1px ${style.borderColor} inset`;
}
return createElement(
(this.props.component || 'sup') as any,
props,
component as any,
newProps,
this.renderNumberElement(),
);
}
......
// matchMedia polyfill for
// https://github.com/WickyNilliams/enquire.js/issues/82
import assign from 'object-assign';
import debounce from 'lodash.debounce';
if (typeof window !== 'undefined') {
......@@ -108,7 +107,9 @@ export default class Carousel extends React.Component<CarouselProps, any> {
}
render() {
let props = assign({}, this.props);
let props = {
...this.props,
};
if (props.effect === 'fade') {
props.fade = true;
......
/* tslint:disable jsx-no-multiline-js */
import React from 'react';
import moment from 'moment';
import PropTypes from 'prop-types';
import RangeCalendar from 'rc-calendar/lib/RangeCalendar';
import RcDatePicker from 'rc-calendar/lib/Picker';
import classNames from 'classnames';
import assign from 'object-assign';
import Icon from '../icon';
import { getLocaleCode } from '../_util/getLocale';
import warning from '../_util/warning';
......@@ -249,7 +249,13 @@ export default class RangePicker extends React.Component<any, any> {
};
return (
<span className={classNames(props.className, props.pickerClass)} style={assign({}, style, pickerStyle)}>
<span
className={classNames(props.className, props.pickerClass)}
style={{
...style,
...pickerStyle,
}}
>
<RcDatePicker
{...props}
{...pickerChangeHandler}
......
......@@ -5,7 +5,6 @@ import MonthCalendar from 'rc-calendar/lib/MonthCalendar';
import RcDatePicker from 'rc-calendar/lib/Picker';
import classNames from 'classnames';
import omit from 'omit.js';
import assign from 'object-assign';
import Icon from '../icon';
import { getLocaleCode } from '../_util/getLocale';
import warning from '../_util/warning';
......@@ -153,8 +152,12 @@ export default function createPicker(TheCalendar): any {
if (pickerValue && localeCode) {
pickerValue.locale(localeCode);
}
const style = {
...props.style,
...pickerStyle,
};
return (
<span className={classNames(props.className, props.pickerClass)} style={assign({}, props.style, pickerStyle)}>
<span className={classNames(props.className, props.pickerClass)} style={style}>
<RcDatePicker
{...props}
{...pickerChangeHandler}
......
import React from 'react';
import moment from 'moment';
import assign from 'object-assign';
import RcCalendar from 'rc-calendar';
import MonthCalendar from 'rc-calendar/lib/MonthCalendar';
import createPicker from './createPicker';
......@@ -76,8 +75,8 @@ export interface RangePickerProps extends PickerProps {
};
}
assign(DatePicker, {
RangePicker: wrapPicker(RangePicker),
Object.assign(DatePicker, {
RangePicker: wrapPicker(RangePicker),
Calendar,
MonthPicker,
});
......
import CalendarLocale from 'rc-calendar/lib/locale/bg_BG';
import TimePickerLocale from '../../time-picker/locale/bg_BG';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Избор на дата',
rangePlaceholder: ['Начална', 'Крайна'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/ca_ES';
import TimePickerLocale from '../../time-picker/locale/ca_ES';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Seleccionar data',
rangePlaceholder: ['Data inicial', 'Data final'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/cs_CZ';
import TimePickerLocale from '../../time-picker/locale/cs_CZ';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Vybrat datum',
rangePlaceholder: ['Od', 'Do'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/de_DE';
import TimePickerLocale from '../../time-picker/locale/de_DE';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Datum auswählen',
rangePlaceholder: ['Startdatum', 'Enddatum'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/en_GB';
import TimePickerLocale from '../../time-picker/locale/en_GB';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Select date',
rangePlaceholder: ['Start date', 'End date'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/en_US';
import TimePickerLocale from '../../time-picker/locale/en_US';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Select date',
rangePlaceholder: ['Start date', 'End date'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/es_ES';
import TimePickerLocale from '../../time-picker/locale/es_ES';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Seleccionar fecha',
rangePlaceholder: ['Fecha inicial', 'Fecha final'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/et_EE';
import TimePickerLocale from '../../time-picker/locale/et_EE';
import assign from 'object-assign';
// 统一合并为完整的 Locale
const locale = {
lang: assign({
lang: {
placeholder: 'Vali kuupäev',
rangePlaceholder: ['Algus kuupäev', 'Lõpu kuupäev'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/fi_FI';
import TimePickerLocale from '../../time-picker/locale/fi_FI';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Valitse päivä',
rangePlaceholder: ['Alku päivä', 'Loppu päivä'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/fr_BE';
import TimePickerLocale from '../../time-picker/locale/fr_BE';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Sélectionner une date',
rangePlaceholder: ['Date de début', 'Date de fin'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/fr_FR';
import TimePickerLocale from '../../time-picker/locale/fr_FR';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Sélectionner une date',
rangePlaceholder: ['Date de début', 'Date de fin'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/it_IT';
import TimePickerLocale from '../../time-picker/locale/it_IT';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Selezionare la data',
rangePlaceholder: ['Data d\'inizio', 'Data di fine'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/ja_JP';
import TimePickerLocale from '../../time-picker/locale/ja_JP';
import assign from 'object-assign';
const locale = {
lang: assign({
lang: {
placeholder: '日付を選択',
rangePlaceholder: ['開始日付', '終了日付'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/ko_KR';
import TimePickerLocale from '../../time-picker/locale/ko_KR';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: '날짜 선택',
rangePlaceholder: ['시작일', '종료일'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/nl_BE';
import TimePickerLocale from '../../time-picker/locale/nl_BE';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Selecteer datum',
rangePlaceholder: ['Begin datum', 'Eind datum'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/nl_NL';
import TimePickerLocale from '../../time-picker/locale/nl_NL';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Selecteer datum',
rangePlaceholder: ['Begin datum', 'Eind datum'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/en_US';
import TimePickerLocale from '../../time-picker/locale/en_US';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Wybierz datę',
rangePlaceholder: ['Data początkowa', 'Data końcowa'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/pt_BR';
import TimePickerLocale from '../../time-picker/locale/pt_BR';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Selecionar data',
rangePlaceholder: ['Data de início', 'Data de fim'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
......@@ -4,14 +4,16 @@
import CalendarLocale from 'rc-calendar/lib/locale/ru_RU';
import TimePickerLocale from '../../time-picker/locale/ru_RU';
import assign from 'object-assign';
const locale = {
lang: assign({
lang: {
placeholder: 'Выберите дату',
rangePlaceholder: ['Начальная дата', 'Конечная дата'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/sk_SK';
import TimePickerLocale from '../../time-picker/locale/sk_SK';
import assign from 'object-assign';
// 统一合并为完整的 Locale
const locale = {
lang: assign({
lang: {
placeholder: 'Vybrať dátum',
rangePlaceholder: ['Od', 'Do'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/sv_SE';
import TimePickerLocale from '../../time-picker/locale/sv_SE';
import assign from 'object-assign';
const locale = {
lang: assign({
lang: {
placeholder: 'Välj datum',
rangePlaceholder: ['Startdatum', 'Slutdatum'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/en_US';
import TimePickerLocale from '../../time-picker/locale/tr_TR';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Tarih Seç',
rangePlaceholder: ['Başlangıç Tarihi', 'Bitiş Tarihi'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/en_US';
import TimePickerLocale from '../../time-picker/locale/en_US';
import assign from 'object-assign';
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: 'Chọn thời điểm',
rangePlaceholder: ['Ngày bắt đầu', 'Ngày kết thúc'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// All settings at:
......
import CalendarLocale from 'rc-calendar/lib/locale/zh_CN';
import TimePickerLocale from '../../time-picker/locale/zh_CN';
import assign from 'object-assign';
// 备注:以下代码无法完全按最初设计运行,但为了保证兼容性,需要保留,直至 antd 默认语言改为英文
// 1. 如果用户不给时间类组件传入 value defaultValue,则运行符合预期
......@@ -12,11 +11,14 @@ moment.locale('zh-cn');
// Merge into a locale object
const locale = {
lang: assign({
lang: {
placeholder: '请选择日期',
rangePlaceholder: ['开始日期', '结束日期'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
// should add whitespace between char in Button
......
import CalendarLocale from 'rc-calendar/lib/locale/zh_TW';
import TimePickerLocale from '../../time-picker/locale/zh_TW';
import assign from 'object-assign';
const locale = {
lang: assign({
lang: {
placeholder: '請選擇日期',
rangePlaceholder: ['開始日期', '結束日期'],
}, CalendarLocale),
timePickerLocale: assign({}, TimePickerLocale),
...CalendarLocale,
},
timePickerLocale: {
...TimePickerLocale,
},
};
locale.lang.ok = '確 定';
......
......@@ -4,7 +4,6 @@ import classNames from 'classnames';
import createDOMForm from 'rc-form/lib/createDOMForm';
import PureRenderMixin from 'rc-util/lib/PureRenderMixin';
import omit from 'omit.js';
import assign from 'object-assign';
import createReactClass from 'create-react-class';
import warning from '../_util/warning';
import FormItem from './FormItem';
......@@ -139,11 +138,11 @@ export default class Form extends React.Component<FormProps, any> {
static Item = FormItem;
static create = function<TOwnProps>(options?: FormCreateOption): ComponentDecorator<TOwnProps> {
const formWrapper = createDOMForm(assign({
const formWrapper = createDOMForm({
fieldNameProp: 'id',
}, options, {
...options,
fieldMetaProp: FIELD_META_PROP,
}));
});
/* eslint-disable react/prefer-es6-class */
return (Component) => formWrapper(createReactClass({
......
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import assign from 'object-assign';
const stringOrNumber = PropTypes.oneOfType([PropTypes.string, PropTypes.number]);
const objectOrNumber = PropTypes.oneOfType([PropTypes.object, PropTypes.number]);
......@@ -60,13 +59,14 @@ export default class Col extends React.Component<ColProps, any> {
delete others[size];
sizeClassObj = assign({}, sizeClassObj, {
sizeClassObj = {
...sizeClassObj,
[`${prefixCls}-${size}-${sizeProps.span}`]: sizeProps.span !== undefined,
[`${prefixCls}-${size}-order-${sizeProps.order}`]: sizeProps.order || sizeProps.order === 0,
[`${prefixCls}-${size}-offset-${sizeProps.offset}`]: sizeProps.offset || sizeProps.offset === 0,
[`${prefixCls}-${size}-push-${sizeProps.push}`]: sizeProps.push || sizeProps.push === 0,
[`${prefixCls}-${size}-pull-${sizeProps.pull}`]: sizeProps.pull || sizeProps.pull === 0,
});
};
});
const classes = classNames({
[`${prefixCls}-${span}`]: span !== undefined,
......
import React from 'react';
import { Children, cloneElement } from 'react';
import classNames from 'classnames';
import assign from 'object-assign';
import PropTypes from 'prop-types';
export interface RowProps {
......@@ -37,20 +36,22 @@ export default class Row extends React.Component<RowProps, any> {
[`${prefixCls}-${type}-${justify}`]: type && justify,
[`${prefixCls}-${type}-${align}`]: type && align,
}, className);
const rowStyle = (gutter as number) > 0 ? assign({}, {
const rowStyle = (gutter as number) > 0 ? {
marginLeft: (gutter as number) / -2,
marginRight: (gutter as number) / -2,
}, style) : style;
...style,
} : style;
const cols = Children.map(children, (col: React.ReactElement<any>) => {
if (!col) {
return null;
}
if (col.props && (gutter as number) > 0) {
return cloneElement(col, {
style: assign({}, {
style: {
paddingLeft: (gutter as number) / 2,
paddingRight: (gutter as number) / 2,
}, col.props.style),
...col.props.style,
},
});
}
return col;
......
/* tslint:disable jsx-no-multiline-js */
import React from 'react';
import { Component, cloneElement } from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import calculateNodeHeight from './calculateNodeHeight';
import assign from 'object-assign';
import omit from 'omit.js';
function fixControlledValue(value) {
......@@ -234,7 +234,9 @@ export default class Input extends Component<InputProps, any> {
}
renderInput() {
const props = assign({}, this.props);
const props = {
...this.props,
};
// Fix https://fb.me/react-unknown-prop
const otherProps = omit(this.props, [
'prefixCls',
......@@ -268,7 +270,10 @@ export default class Input extends Component<InputProps, any> {
return (
<textarea
{...otherProps}
style={assign({}, props.style, this.state.textareaStyles)}
style={{
...props.style,
...this.state.textareaStyles,
}}
className={inputClassName}
onKeyDown={this.handleKeyDown}
onChange={this.handleTextareaChange}
......
import React from 'react';
import ReactDOM from 'react-dom';
import classNames from 'classnames';
import assign from 'object-assign';
import Icon from '../icon';
import Dialog from './Modal';
import ActionButton from './ActionButton';
import { getConfirmLocale } from './locale';
export default function confirm(config) {
const props = assign({ iconType: 'question-circle' }, config);
const props = {
iconType: 'question-circle',
...config,
};
const prefixCls = props.prefixCls || 'ant-confirm';
let div = document.createElement('div');
document.body.appendChild(div);
......
import Modal, { ModalFuncProps } from './Modal';
import confirm from './confirm';
import assign from 'object-assign';
export { ModalFuncProps };
Modal.info = function (props: ModalFuncProps) {
const config = assign({}, {
const config = {
type: 'info',
iconType: 'info-circle',
okCancel: false,
}, props);
...props,
};
return confirm(config);
};
Modal.success = function (props: ModalFuncProps) {
const config = assign({}, {
const config = {
type: 'success',
iconType: 'check-circle',
okCancel: false,
}, props);
...props,
};
return confirm(config);
};
Modal.error = function (props: ModalFuncProps) {
const config = assign({}, {
const config = {
type: 'error',
iconType: 'cross-circle',
okCancel: false,
}, props);
...props,
};
return confirm(config);
};
Modal.warning = Modal.warn = function (props: ModalFuncProps) {
const config = assign({}, {
const config = {
type: 'warning',
iconType: 'exclamation-circle',
okCancel: false,
}, props);
...props,
};
return confirm(config);
};
Modal.confirm = function (props: ModalFuncProps) {
const config = assign({}, {
const config = {
type: 'confirm',
okCancel: true,
}, props);
...props,
};
return confirm(config);
};
......
import assign from 'object-assign';
const defaultLocale = {
okText: '确定',
cancelText: '取消',
justOkText: '知道了',
};
let runtimeLocale = assign({}, defaultLocale);
let runtimeLocale = {
...defaultLocale,
};
export function changeConfirmLocale(newLocale?: Object) {
if (newLocale) {
runtimeLocale = assign({}, runtimeLocale, newLocale);
runtimeLocale = {
...runtimeLocale,
...newLocale,
};
} else {
runtimeLocale = assign({}, defaultLocale);
runtimeLocale = {
...defaultLocale,
};
}
}
......
import React from 'react';
import Notification from 'rc-notification';
import Icon from '../icon';
import assign from 'object-assign';
const notificationInstance = {};
let defaultDuration = 4.5;
let defaultTop = 24;
......@@ -143,7 +142,7 @@ function notice(args) {
closable: true,
onClose: args.onClose,
key: args.key,
style: assign({}, style),
style: { ...style },
className,
});
}
......@@ -204,7 +203,10 @@ const api = {
};
['success', 'info', 'warning', 'error'].forEach((type) => {
api[type] = (args: ArgsProps) => api.open(assign({}, args, { type }));
api[type] = (args: ArgsProps) => api.open({
...args,
type,
});
});
(api as any).warn = (api as any).warning;
......
import React from 'react';
import assign from 'object-assign';
import Tooltip from '../tooltip';
import { AbstractTooltipProps } from '../tooltip';
import warning from '../_util/warning';
......@@ -46,7 +45,7 @@ export default class Popover extends React.Component<PopoverProps, any> {
}
render() {
const props = assign({}, this.props);
const props = { ...this.props };
delete props.title;
return (
<Tooltip
......
......@@ -3,7 +3,6 @@ import { findDOMNode } from 'react-dom';
import RcTable from 'rc-table';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import assign from 'object-assign';
import Pagination, { PaginationProps } from '../pagination';
import Icon from '../icon';
import Spin, { SpinProps } from '../spin';
......@@ -156,11 +155,12 @@ export default class Table<T> extends React.Component<TableProps<T>, any> {
this.columns = props.columns || normalizeColumns(props.children);
this.state = assign({}, this.getSortStateFromColumns(), {
this.state = {
...this.getSortStateFromColumns(),
// 减少状态
filters: this.getFiltersFromColumns(),
pagination: this.getDefaultPagination(props),
});
};
this.CheckboxPropsCache = {};
......@@ -196,10 +196,12 @@ export default class Table<T> extends React.Component<TableProps<T>, any> {
getDefaultPagination(props) {
const pagination = props.pagination || {};
return this.hasPagination(props) ?
assign({}, defaultPagination, pagination, {
{
...defaultPagination,
...pagination,
current: pagination.defaultCurrent || pagination.current || 1,
pageSize: pagination.defaultPageSize || pagination.pageSize || 10,
}) : {};
} : {};
}
getLocale() {
......@@ -207,14 +209,22 @@ export default class Table<T> extends React.Component<TableProps<T>, any> {
if (this.context.antLocale && this.context.antLocale.Table) {
locale = this.context.antLocale.Table;
}
return assign({}, defaultLocale, locale, this.props.locale);
return {
...defaultLocale,
...locale,
...this.props.locale,
};
}
componentWillReceiveProps(nextProps) {
this.columns = nextProps.columns || normalizeColumns(nextProps.children);
if ('pagination' in nextProps || 'pagination' in this.props) {
this.setState(previousState => {
const newPagination = assign({}, defaultPagination, previousState.pagination, nextProps.pagination);
const newPagination = {
...defaultPagination,
...previousState.pagination,
...nextProps.pagination,
};
newPagination.current = newPagination.current || 1;
newPagination.pageSize = newPagination.pageSize || 10;
return { pagination: nextProps.pagination !== false ? newPagination : emptyObject };
......@@ -251,7 +261,7 @@ export default class Table<T> extends React.Component<TableProps<T>, any> {
const filteredValueColumns = this.getFilteredValueColumns(this.columns);
if (filteredValueColumns.length > 0) {
const filtersFromColumns = this.getFiltersFromColumns(this.columns);
const newFilters = assign({}, this.state.filters);
const newFilters = { ...this.state.filters };
Object.keys(filtersFromColumns).forEach(key => {
newFilters[key] = filtersFromColumns[key];
});
......@@ -380,16 +390,20 @@ export default class Table<T> extends React.Component<TableProps<T>, any> {
const onChange = this.props.onChange;
if (onChange) {
onChange.apply(null, this.prepareParamsArguments(assign({}, this.state, newState)));
onChange.apply(null, this.prepareParamsArguments({
...this.state,
...newState,
}));
}
}
handleFilter = (column, nextFilters) => {
const props = this.props;
let pagination = assign({}, this.state.pagination);
const filters = assign({}, this.state.filters, {
let pagination = { ...this.state.pagination };
const filters = {
...this.state.filters,
[this.getColumnKey(column)]: nextFilters,
});
};
// Remove filters not in current columns
const currentColumnKeys: string[] = [];
treeMap(this.columns, c => {
......@@ -413,7 +427,7 @@ export default class Table<T> extends React.Component<TableProps<T>, any> {
pagination,
filters: {},
};
const filtersToSetState = assign({}, filters);
const filtersToSetState = { ...filters };
// Remove filters which is controlled
this.getFilteredValueColumns().forEach(col => {
const columnKey = this.getColumnKey(col);
......@@ -427,9 +441,10 @@ export default class Table<T> extends React.Component<TableProps<T>, any> {
// Controlled current prop will not respond user interaction
if (typeof props.pagination === 'object' && 'current' in (props.pagination as Object)) {
newState.pagination = assign({}, pagination, {
newState.pagination = {
...pagination,
current: this.state.pagination.current,
});
};
}
this.setState(newState, () => {
......@@ -438,11 +453,12 @@ export default class Table<T> extends React.Component<TableProps<T>, any> {
});
const onChange = this.props.onChange;
if (onChange) {
onChange.apply(null, this.prepareParamsArguments(assign({}, this.state, {
onChange.apply(null, this.prepareParamsArguments({
...this.state,
selectionDirty: false,
filters,
pagination,
})));
}));
}
});
}
......@@ -547,7 +563,7 @@ export default class Table<T> extends React.Component<TableProps<T>, any> {
handlePageChange = (current, ...otherArguments) => {
const props = this.props;
let pagination = assign({}, this.state.pagination);
let pagination = { ...this.state.pagination };
if (current) {
pagination.current = current;
} else {
......@@ -562,9 +578,10 @@ export default class Table<T> extends React.Component<TableProps<T>, any> {
if (props.pagination &&
typeof props.pagination === 'object' &&
'current' in (props.pagination as Object)) {
newState.pagination = assign({}, pagination, {
newState.pagination = {
...pagination,
current: this.state.pagination.current,
});
};
}
this.setState(newState);
......@@ -574,10 +591,11 @@ export default class Table<T> extends React.Component<TableProps<T>, any> {
const onChange = this.props.onChange;
if (onChange) {
onChange.apply(null, this.prepareParamsArguments(assign({}, this.state, {
onChange.apply(null, this.prepareParamsArguments({
...this.state,
selectionDirty: false,
pagination,
})));
}));
}
}
......@@ -692,7 +710,7 @@ export default class Table<T> extends React.Component<TableProps<T>, any> {
const { sortOrder } = this.state;
const locale = this.getLocale();
return treeMap(columns, (originColumn, i) => {
let column = assign({}, originColumn);
let column = { ...originColumn };
let key = this.getColumnKey(column, i);
let filterDropdown;
let sortButton;
......@@ -753,14 +771,19 @@ export default class Table<T> extends React.Component<TableProps<T>, any> {
handleShowSizeChange = (current, pageSize) => {
const pagination = this.state.pagination;
pagination.onShowSizeChange(current, pageSize);
const nextPagination = assign({}, pagination, { pageSize, current });
const nextPagination = {
...pagination,
pageSize,
current,
};
this.setState({ pagination: nextPagination });
const onChange = this.props.onChange;
if (onChange) {
onChange.apply(null, this.prepareParamsArguments(assign({}, this.state, {
onChange.apply(null, this.prepareParamsArguments({
...this.state,
pagination: nextPagination,
})));
}));
}
}
......@@ -854,12 +877,10 @@ export default class Table<T> extends React.Component<TableProps<T>, any> {
recursiveSort(data, sorterFn) {
const { childrenColumnName = 'children' } = this.props;
return data.sort(sorterFn).map(item => (item[childrenColumnName] ? assign(
{},
item, {
return data.sort(sorterFn).map(item => (item[childrenColumnName] ? {
...item,
[childrenColumnName]: this.recursiveSort(item[childrenColumnName], sorterFn),
},
) : item));
} : item));
}
getLocalData() {
......@@ -908,7 +929,7 @@ export default class Table<T> extends React.Component<TableProps<T>, any> {
columns = this.renderColumnsDropdown(columns);
columns = columns.map((column, i) => {
const newColumn = assign({}, column);
const newColumn = { ...column };
newColumn.key = this.getColumnKey(newColumn, i);
return newColumn;
});
......
import assign from 'object-assign';
export interface Store {
setState: (partial: Object) => void;
getState: () => any;
......@@ -11,7 +9,10 @@ export default function createStore(initialState): Store {
const listeners: any[] = [];
function setState(partial) {
state = assign({}, state, partial);
state = {
...state,
...partial,
};
for (let i = 0; i < listeners.length; i++) {
listeners[i]();
}
......
import React from 'react';
import assign from 'object-assign';
export function flatArray(data: Object[] = [], childrenName = 'children') {
const result: Object[] = [];
const loop = (array) => {
array.forEach(item => {
const newItem = assign({}, item);
const newItem = { ...item };
delete newItem[childrenName];
result.push(newItem);
if (item[childrenName] && item[childrenName].length > 0) {
......@@ -23,7 +22,10 @@ export function treeMap(tree: Object[], mapper: Function, childrenName = 'childr
if (node[childrenName]) {
extra[childrenName] = treeMap(node[childrenName], mapper, childrenName);
}
return assign({}, mapper(node, index), extra);
return {
...mapper(node, index),
...extra,
};
});
}
......@@ -46,7 +48,9 @@ export function normalizeColumns(elements) {
if (!React.isValidElement(element)) {
return;
}
const column = assign({}, element.props);
const column: any = {
...element.props,
};
if (element.key) {
column.key = element.key;
}
......
......@@ -3,7 +3,6 @@ import ReactDOM from 'react-dom';
import Animate from 'rc-animate';
import classNames from 'classnames';
import omit from 'omit.js';
import assign from 'object-assign';
import Icon from '../icon';
import CheckableTag from './CheckableTag';
......@@ -85,9 +84,10 @@ export default class Tag extends React.Component<TagProps, any> {
'onClose',
'afterClose',
]);
const tagStyle = assign({
const tagStyle = {
backgroundColor: (color && !isPresetColor) ? color : null,
}, style);
...style,
};
const tag = this.state.closed ? null : (
<div
data-show={!this.state.closing}
......
......@@ -2,7 +2,6 @@ import React from 'react';
import moment from 'moment';
import RcTimePicker from 'rc-time-picker/lib/TimePicker';
import classNames from 'classnames';
import assign from 'object-assign';
import injectLocale from '../locale-provider/injectLocale';
import defaultLocale from './locale/zh_CN';
......@@ -30,6 +29,7 @@ export interface TimePickerProps {
onOpenChange?: (open: boolean) => void;
disabled?: boolean;
placeholder?: string;
prefixCls?: string;
hideDisabledOptions?: boolean;
disabledHours?: () => number[];
disabledMinutes?: (selectedHour: number) => number[];
......@@ -115,7 +115,9 @@ abstract class TimePicker extends React.Component<TimePickerProps, any> {
}
render() {
const props = assign({}, this.props);
const props = {
...this.props,
};
delete props.defaultValue;
const format = this.getDefaultFormat();
......
import React from 'react';
import classNames from 'classnames';
import PureRenderMixin from 'rc-util/lib/PureRenderMixin';
import assign from 'object-assign';
import Lazyload from 'react-lazy-load';
import Checkbox from '../checkbox';
......@@ -29,12 +28,13 @@ export default class Item extends React.Component<any, any> {
);
let children: JSX.Element | null = null;
if (lazy) {
const lazyProps = assign({
const lazyProps = {
height: 32,
offset: 500,
throttle: 0,
debounce: false,
}, lazy);
...lazy,
};
children = <Lazyload {...lazyProps}>{listItem}</Lazyload>;
} else {
children = listItem;
......
......@@ -3,7 +3,6 @@ import { findDOMNode } from 'react-dom';
import classNames from 'classnames';
import Animate from 'rc-animate';
import PureRenderMixin from 'rc-util/lib/PureRenderMixin';
import assign from 'object-assign';
import Checkbox from '../checkbox';
import { TransferItem } from './index';
import Search from './search';
......@@ -139,8 +138,8 @@ export default class TransferList extends React.Component<TransferListProps, any
} = this.props;
// Custom Layout
const footerDom = footer(assign({}, this.props));
const bodyDom = body(assign({}, this.props));
const footerDom = footer({ ...this.props });
const bodyDom = body({ ...this.props });
const listCls = classNames(prefixCls, {
[`${prefixCls}-with-footer`]: !!footerDom,
......
......@@ -2,7 +2,6 @@ import React from 'react';
import RcUpload from 'rc-upload';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import assign from 'object-assign';
import Dragger from './Dragger';
import UploadList from './UploadList';
import { UploadProps, UploadLocale } from './interface';
......@@ -71,7 +70,11 @@ export default class Upload extends React.Component<UploadProps, any> {
if (this.context.antLocale && this.context.antLocale.Upload) {
locale = this.context.antLocale.Upload;
}
return assign({}, defaultLocale, locale, this.props.locale);
return {
...defaultLocale,
...locale,
...this.props.locale,
};
}
onStart = (file) => {
......@@ -225,12 +228,13 @@ export default class Upload extends React.Component<UploadProps, any> {
type, disabled, children, className,
} = this.props;
const rcUploadProps = assign({}, {
const rcUploadProps = {
onStart: this.onStart,
onError: this.onError,
onProgress: this.onProgress,
onSuccess: this.onSuccess,
}, this.props);
...this.props,
};
delete rcUploadProps.className;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册