ssc-grid
Version:
React grid component for SSC 3.0
115 lines (102 loc) • 3.4 kB
JavaScript
import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';
import _inherits from 'babel-runtime/helpers/inherits';
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { default as ReactDatePicker } from 'react-datepicker';
import moment from 'moment';
/**
* DatePicker2控件
*/
var DatePicker2 = function (_Component) {
_inherits(DatePicker2, _Component);
function DatePicker2(props) {
_classCallCheck(this, DatePicker2);
var _this = _possibleConstructorReturn(this, _Component.call(this, props));
_this.state = {};
return _this;
}
// date参数是moment.js生成的时间格式
DatePicker2.prototype.handleChange = function handleChange(date) {
if (!date) {
if (this.props.onChange) {
this.props.onChange(null, null, '');
}
return;
}
if (this.props.onChange) {
this.props.onChange(date.toDate().toISOString(), // ISO 8601
date.format(this.props.dateFormat), // 使用moment.js按照用户指定的格式进行格式化
date);
}
};
DatePicker2.prototype.render = function render() {
// 之前使用otherProps获取react-datepicker的属性,然后往下传
// 但是出现了bug#11
var _props = this.props,
value = _props.value,
showMonthDropdown = _props.showMonthDropdown,
showYearDropdown = _props.showYearDropdown,
todayButton = _props.todayButton,
isClearable = _props.isClearable,
disabled = _props.disabled;
return React.createElement(ReactDatePicker, {
disabled: disabled === true,
dateFormat: 'YYYY-MM-DD',
locale: this.props.locale,
className: this.props.className || 'form-control',
calendarClassName: this.props.calendarClassName,
showMonthDropdown: showMonthDropdown,
showYearDropdown: showYearDropdown,
isClearable: disabled === true ? false : isClearable,
todayButton: todayButton,
selected: value ? moment(value) : null,
onChange: this.handleChange.bind(this)
});
};
return DatePicker2;
}(Component);
DatePicker2.displayName = 'DatePicker2';
DatePicker2.defaultProps = {
dateFormat: 'YYYY-MM-DD',
locale: 'zh-CN'
};
DatePicker2.propTypes = {
/**
* 日历悬浮窗自定义类名
* https://hacker0x01.github.io/react-datepicker/#example-3
*/
calendarClassName: PropTypes.string,
/**
* 文本框自定义类名
* https://hacker0x01.github.io/react-datepicker/#example-2
*/
className: PropTypes.string,
/**
* 日期格式<br>
* 遵循moment.js格式<br>
* <a href="https://momentjs.com/docs/#/displaying/format/">Moment.js文档</a>
*/
dateFormat: PropTypes.string,
/**
* 参数:
* - `value {String}`: ISO 8061格式时间字符串
* - `formattedValue {String}`: 按照用户指定格式进行了格式化后的字符串
* - `momentDate {Object}`: moment.js对象
*/
onChange: PropTypes.func,
showMonthDropdown: PropTypes.bool,
showYearDropdown: PropTypes.bool,
isClearable: PropTypes.bool,
todayButton: PropTypes.string,
disabled: PropTypes.bool,
/**
* value 请使用ISO 8061格式
*/
value: PropTypes.string,
/*
* 默认语言
*/
locale: PropTypes.string
};
export default DatePicker2;