import React from 'react'; import moment from 'moment'; import RangeCalendar from 'rc-calendar/lib/RangeCalendar'; import RcDatePicker from 'rc-calendar/lib/Picker'; import classNames from 'classnames'; import Icon from '../icon'; export default class RangePicker extends React.Component { static defaultProps = { prefixCls: 'ant-calendar', }; constructor(props) { super(props); this.state = { value: props.value || props.defaultValue || [], }; } componentWillReceiveProps(nextProps) { if ('value' in nextProps) { this.setState({ value: nextProps.value || [], }); } } clearSelection = (e) => { e.preventDefault(); e.stopPropagation(); this.setState({ value: [] }); this.handleChange([]); } handleChange = (value) => { const props = this.props; if (!('value' in props)) { this.setState({ value }); } props.onChange(value, [ (value[0] && value[0].format(props.format)) || '', (value[1] && value[1].format(props.format)) || '', ]); } render() { const props = this.props; const { disabledDate, showTime, prefixCls, popupStyle, style, onOk, locale } = props; const state = this.state; const calendarClassName = classNames({ [`${prefixCls}-time`]: showTime, }); // 需要选择时间时,点击 ok 时才触发 onChange let pickerChangeHandler = { onChange: this.handleChange, }; let calendarHandler: Object = { onOk: this.handleChange, }; if (props.timePicker) { pickerChangeHandler.onChange = value => this.handleChange(value); } else { calendarHandler = {}; } const startPlaceholder = ('startPlaceholder' in this.props) ? props.startPlaceholder : locale.lang.rangePlaceholder[0]; const endPlaceholder = ('endPlaceholder' in props) ? props.endPlaceholder : locale.lang.rangePlaceholder[1]; const calendar = ( ); const clearIcon = (!props.disabled && state.value && (state.value[0] || state.value[1])) ? : null; return ( { ({ value }) => { const start = value[0]; const end = value[1]; return ( ~ {clearIcon} ); } } ); } }