UNPKG

@51yzone/pc-components

Version:

An enterprise-class UI design language and React-based implementation

220 lines (175 loc) 7.21 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); require("antd/lib/select/style"); var _select = _interopRequireDefault(require("antd/lib/select")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper")); require("antd/lib/date-picker/style"); var _datePicker = _interopRequireDefault(require("antd/lib/date-picker")); var _react = _interopRequireDefault(require("react")); var _moment = _interopRequireDefault(require("moment")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _zh_CN = _interopRequireDefault(require("antd/lib/date-picker/locale/zh_CN")); var _zh_CN2 = _interopRequireDefault(require("./locale/zh_CN")); var RangePicker = _datePicker["default"].RangePicker; var DEFAULT_RANGE = [null, null]; var DEFAULT_SELECT = 'week'; var DateRange = /*#__PURE__*/function (_React$Component) { (0, _inherits2["default"])(DateRange, _React$Component); var _super = (0, _createSuper2["default"])(DateRange); function DateRange() { var _this; (0, _classCallCheck2["default"])(this, DateRange); _this = _super.apply(this, arguments); _this.state = { showCustom: false, dates: null, selectValue: DEFAULT_SELECT }; _this.getRangeBySelectValue = function (value) { var valueNow = value; if (valueNow === 'all') { return DEFAULT_RANGE; } var nowStart = (0, _moment["default"])(); var nowEnd = (0, _moment["default"])(); if (valueNow === 'lastWeek') { nowStart = (0, _moment["default"])().subtract(7, 'days'); nowEnd = (0, _moment["default"])().subtract(7, 'days'); valueNow = 'week'; } return [nowStart.startOf(valueNow), nowEnd.endOf(valueNow)]; }; _this.handleSelectChange = function (value) { var range = _this.getRangeBySelectValue(value); _this.setState({ selectValue: value, showCustom: false }); _this.changeRangeDate(range); }; _this.onChangeRange = function (timeRange) { _this.setState({ selectValue: timeRange && timeRange[0] ? 'custom' : 'all', showCustom: timeRange && timeRange[0] }); _this.changeRangeDate(timeRange); }; _this.changeRangeDate = function (timeRange) { var onChange = _this.props.onChange; _this.setState({ value: timeRange }); if (onChange) { onChange(timeRange && timeRange[0], timeRange && timeRange[1]); } }; _this.disabledDate = function (current) { var dates = _this.state.dates; var maxRangeDays = _this.props.maxRangeDays; if (!dates || !maxRangeDays) { return false; } var tooLate = dates[0] && current && current.diff(dates[0], 'days') >= maxRangeDays; var tooEarly = dates[1] && current && dates[1].diff(current, 'days') >= maxRangeDays; return !!tooEarly || !!tooLate; }; return _this; } (0, _createClass2["default"])(DateRange, [{ key: "componentDidMount", value: function componentDidMount() { var selectValue = this.state.selectValue; var onDateRangeLoading = this.props.onDateRangeLoading; var timeRange = this.getRangeBySelectValue(selectValue); if (!timeRange) { timeRange = DEFAULT_RANGE; } this.setState({ value: timeRange }); if (onDateRangeLoading) { onDateRangeLoading(timeRange && timeRange[0], timeRange && timeRange[1]); } } }, { key: "render", value: function render() { var _this2 = this; var _this$props = this.props, _this$props$locale = _this$props.locale, locale = _this$props$locale === void 0 ? _zh_CN2["default"] : _this$props$locale, prefixCls = _this$props.prefixCls, className = _this$props.className, style = _this$props.style, rangePickerProps = _this$props.rangePickerProps; var _this$state = this.state, selectValue = _this$state.selectValue, showCustom = _this$state.showCustom, value = _this$state.value; return /*#__PURE__*/_react["default"].createElement("div", { className: (0, _classnames["default"])(className, "".concat(prefixCls, "-dateselect-wrapper")), style: style }, /*#__PURE__*/_react["default"].createElement(_select["default"], { className: "".concat(prefixCls, "-week-select"), onChange: this.handleSelectChange, value: selectValue }, /*#__PURE__*/_react["default"].createElement(_select["default"].Option, { value: "day", title: locale['date.range.day'] }, locale['date.range.day']), /*#__PURE__*/_react["default"].createElement(_select["default"].Option, { value: "week", title: locale['date.range.week'] }, locale['date.range.week']), /*#__PURE__*/_react["default"].createElement(_select["default"].Option, { value: "lastWeek", title: locale['date.range.lastWeek'] }, locale['date.range.lastWeek']), /*#__PURE__*/_react["default"].createElement(_select["default"].Option, { value: "month", title: locale['date.range.month'] }, locale['date.range.month']), /*#__PURE__*/_react["default"].createElement(_select["default"].Option, { value: "all", title: locale['date.range.all'] }, locale['date.range.all']), /*#__PURE__*/_react["default"].createElement(_select["default"].Option, { value: "custom", title: locale['date.range.custom'], style: { display: showCustom ? 'block' : 'none' } }, locale['date.range.custom'])), /*#__PURE__*/_react["default"].createElement(RangePicker, (0, _extends2["default"])({ locale: _zh_CN["default"], value: value, disabledDate: this.disabledDate, className: "".concat(prefixCls, "-date-select"), onChange: this.onChangeRange, onCalendarChange: function onCalendarChange(val) { _this2.setState({ dates: val }); } }, rangePickerProps))); } }]); return DateRange; }(_react["default"].Component); exports["default"] = DateRange; DateRange.defaultProps = { prefixCls: 'yz-date-range' }; DateRange.propTypes = { rangePickerProps: _propTypes["default"].object, maxRangeDays: _propTypes["default"].number, locale: _propTypes["default"].object, prefixCls: _propTypes["default"].string, className: _propTypes["default"].string, style: _propTypes["default"].object, onChange: _propTypes["default"].func, onDateRangeLoading: _propTypes["default"].func };