ssc-grid
Version:
React grid component for SSC 3.0
140 lines (113 loc) • 4.25 kB
JavaScript
'use strict';
exports.__esModule = true;
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _reactDatepicker = require('react-datepicker');
var _reactDatepicker2 = _interopRequireDefault(_reactDatepicker);
var _moment = require('moment');
var _moment2 = _interopRequireDefault(_moment);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
/**
* DatePicker2控件
*/
var DatePicker2 = function (_Component) {
(0, _inherits3['default'])(DatePicker2, _Component);
function DatePicker2(props) {
(0, _classCallCheck3['default'])(this, DatePicker2);
var _this = (0, _possibleConstructorReturn3['default'])(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 _react2['default'].createElement(_reactDatepicker2['default'], {
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 ? (0, _moment2['default'])(value) : null,
onChange: this.handleChange.bind(this)
});
};
return DatePicker2;
}(_react.Component);
DatePicker2.displayName = 'DatePicker2';
DatePicker2.defaultProps = {
dateFormat: 'YYYY-MM-DD',
locale: 'zh-CN'
};
DatePicker2.propTypes = {
/**
* 日历悬浮窗自定义类名
* https://hacker0x01.github.io/react-datepicker/#example-3
*/
calendarClassName: _propTypes2['default'].string,
/**
* 文本框自定义类名
* https://hacker0x01.github.io/react-datepicker/#example-2
*/
className: _propTypes2['default'].string,
/**
* 日期格式<br>
* 遵循moment.js格式<br>
* <a href="https://momentjs.com/docs/#/displaying/format/">Moment.js文档</a>
*/
dateFormat: _propTypes2['default'].string,
/**
* 参数:
* - `value {String}`: ISO 8061格式时间字符串
* - `formattedValue {String}`: 按照用户指定格式进行了格式化后的字符串
* - `momentDate {Object}`: moment.js对象
*/
onChange: _propTypes2['default'].func,
showMonthDropdown: _propTypes2['default'].bool,
showYearDropdown: _propTypes2['default'].bool,
isClearable: _propTypes2['default'].bool,
todayButton: _propTypes2['default'].string,
disabled: _propTypes2['default'].bool,
/**
* value 请使用ISO 8061格式
*/
value: _propTypes2['default'].string,
/*
* 默认语言
*/
locale: _propTypes2['default'].string
};
exports['default'] = DatePicker2;
module.exports = exports['default'];