dh-c
Version:
The front-end development engineers jimberton gulp react component
174 lines (138 loc) • 5.92 kB
JavaScript
;
exports.__esModule = true;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _classnames2 = require('classnames');
var _classnames3 = _interopRequireDefault(_classnames2);
var _RangeCalendar = require('rc-calendar/lib/RangeCalendar');
var _RangeCalendar2 = _interopRequireDefault(_RangeCalendar);
var _zh_CN = require('./locale/zh_CN');
var _zh_CN2 = _interopRequireDefault(_zh_CN);
var _en_US = require('./locale/en_US');
var _en_US2 = _interopRequireDefault(_en_US);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var prefixCls = 'dh-calendar';
var RangeCalenderOpen = function (_Component) {
_inherits(RangeCalenderOpen, _Component);
function RangeCalenderOpen(props) {
_classCallCheck(this, RangeCalenderOpen);
var _this = _possibleConstructorReturn(this, _Component.call(this, props));
_this.format = function (v) {
return v ? v.format(_this.props.format) : '';
};
_this.handleOnChange = function (value) {
if (_this.props.onChange) {
_this.props.onChange(value);
}
};
_this.handleOnSelect = function (value) {
_this.setState({ selectedValue: value }, function () {
if (_this.props.onSelect) {
var datetring = [_this.format(value[0]), _this.format(value[1])];
_this.props.onSelect(value, datetring);
}
});
};
_this.handleFooterClick = function (value, rangeIdx) {
var ranges = _this.props.ranges;
var dateString = void 0;
if (ranges) {
dateString = Object.keys(ranges)[rangeIdx];
}
_this.setState({ selectedValue: value, rangeIdx: rangeIdx }, function () {
if (_this.props.onFooterChange) {
_this.props.onFooterChange(value, dateString);
}
});
};
_this.renderFooter = function () {
var ranges = _this.props.ranges;
if (!ranges) {
return null;
}
var operations = Object.keys(ranges).map(function (range, idx) {
var _classnames;
var value = ranges[range];
return _react2.default.createElement(
'a',
{
className: (0, _classnames3.default)((_classnames = {}, _classnames[prefixCls + '-range-quick-selector-actived'] = idx == _this.state.rangeIdx, _classnames)),
key: range,
onClick: function onClick() {
return _this.handleFooterClick(value, idx);
}
},
range
);
});
var rangeNode = _react2.default.createElement(
'div',
{ className: prefixCls + '-footer-extra ' + prefixCls + '-range-quick-selector', key: 'range' },
operations
);
return [rangeNode];
};
_this.state = {
rangeIdx: Object.keys(props.ranges).findIndex(function (d) {
return d === props.defaultRange;
}),
selectedValue: props.selectedValue || props.defaultSelectedValue
};
return _this;
}
RangeCalenderOpen.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
var selectedValue = nextProps.selectedValue;
if (selectedValue !== this.props.selectedValue) {
this.setState({ selectedValue: selectedValue });
}
};
RangeCalenderOpen.prototype.render = function render() {
var _props = this.props,
cn = _props.cn,
dateInputPlaceholder = _props.dateInputPlaceholder,
format = _props.format,
defaultSelectedValue = _props.defaultSelectedValue,
theme = _props.theme;
var selectedValue = this.state.selectedValue;
return _react2.default.createElement(_RangeCalendar2.default, {
className: theme === 'dark' ? prefixCls + '-range-open ' + prefixCls + '-dark' : prefixCls + '-range-open',
prefixCls: prefixCls,
showToday: false,
dateInputPlaceholder: dateInputPlaceholder,
locale: cn ? _zh_CN2.default : _en_US2.default,
showOk: false,
showClear: true,
format: format,
defaultSelectedValue: defaultSelectedValue,
selectedValue: selectedValue,
renderFooter: this.renderFooter,
onChange: this.handleOnChange,
onSelect: this.handleOnSelect
});
};
return RangeCalenderOpen;
}(_react.Component);
RangeCalenderOpen.propTypes = {
onChange: _propTypes2.default.func,
onSelect: _propTypes2.default.func,
onFooterChange: _propTypes2.default.func,
format: _propTypes2.default.string,
defaultSelectedValue: _propTypes2.default.array,
selectedValue: _propTypes2.default.array,
ranges: _propTypes2.default.object,
defaultRange: _propTypes2.default.string,
cn: _propTypes2.default.bool,
theme: _propTypes2.default.string
};
RangeCalenderOpen.defaultProps = {
format: 'YYYY-MM-DD',
dateInputPlaceholder: ['开始日期', '结束日期'],
cn: true,
ranges: {}
};
exports.default = RangeCalenderOpen;