UNPKG

zent

Version:

一套前端设计语言和基于React的实现

102 lines (95 loc) 2.45 kB
import React, { Component } from 'react'; import PropTypes from 'prop-types'; import DateRangePicker from 'datetimepicker/DateRangePicker'; import cx from 'classnames'; import map from 'lodash/map'; import * as Helper from './helper'; export default class DateRangeQuickPicker extends Component { static propTypes = { prefix: PropTypes.string, className: PropTypes.string, onChange: PropTypes.func.isRequired, value: PropTypes.array, valueType: PropTypes.oneOf(['date', 'number', 'string']), format: PropTypes.string, chooseDays: PropTypes.number, preset: PropTypes.array, min: PropTypes.oneOfType([ PropTypes.string, PropTypes.number, PropTypes.instanceOf(Date) ]), max: PropTypes.oneOfType([ PropTypes.string, PropTypes.number, PropTypes.instanceOf(Date) ]) }; static defaultProps = { prefix: 'zent', className: '', value: [], valueType: 'string', format: 'YYYY-MM-DD', preset: [ { text: '近7天', value: 7 }, { text: '近30天', value: 30 } ], min: '', max: '' }; handleTimeChange = value => { const { onChange } = this.props; onChange(value, 0); }; handleChooseDays = num => { const { format, onChange, valueType } = this.props; const value = Helper.calculateTime(format, num, valueType); onChange(value, num); }; render() { const { className, format, value, chooseDays, prefix, preset, ...pickerProps } = this.props; const showTime = format === 'YYYY-MM-DD'; return ( <div className={cx(`${prefix}-date-range-picker`, className)}> <DateRangePicker type="split" value={value} onChange={this.handleTimeChange} format={format} showTime={!showTime} {...pickerProps} /> <div className={`${prefix}-date-range-picker__filter`}> {map(preset, (item, index) => { return ( <span key={index} className={cx(`${prefix}-date-range-picker__btn`, { active: chooseDays === item.value })} onClick={this.handleChooseDays.bind(this, item.value)} > {item.text} </span> ); })} </div> </div> ); } }