UNPKG

shineout

Version:

Shein 前端组件库

162 lines (125 loc) 5.99 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireWildcard(require("react")); var _numbers = require("../utils/numbers"); var _styles = require("./styles"); var _Icon = _interopRequireDefault(require("./Icon")); var _locale = require("../locale"); var _utils = _interopRequireDefault(require("./utils")); var _paramUtils = _interopRequireDefault(require("./paramUtils")); var _is = require("../utils/is"); var MONTHBASE = '2019-01-01 00:00:00'; var Year = /*#__PURE__*/ function (_PureComponent) { (0, _inheritsLoose2.default)(Year, _PureComponent); function Year(props) { var _this; _this = _PureComponent.call(this, props) || this; (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handlePrevRange", void 0); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleNextRange", void 0); _this.handlePrevRange = _this.handleRangeChange.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), -15); _this.handleNextRange = _this.handleRangeChange.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), 15); _this.renderYear = _this.renderYear.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); _this.handleDisabled = _this.handleDisabled.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); props.disabledRegister(_this.handleDisabled, 'year', props.index); return _this; } var _proto = Year.prototype; _proto.getOptions = function getOptions() { var timeZone = this.props.timeZone; return { timeZone: timeZone, weekStartsOn: (0, _locale.getLocale)('startOfWeek') }; }; _proto.handleChange = function handleChange(year) { var _this$props = this.props, current = _this$props.current, onChange = _this$props.onChange, onModeChange = _this$props.onModeChange, type = _this$props.type; var date = _utils.default.changeDate(current, 'year', year, this.getOptions()); var isYearType = this.props.type === 'year'; onChange.apply(void 0, _paramUtils.default.yearHandleChangeParams(date, isYearType, isYearType)); if (isYearType) return; var nextMode = 'month'; if (type === 'quarter') { nextMode = type; } onModeChange(nextMode); }; _proto.handleRangeChange = function handleRangeChange(year) { var _this$props2 = this.props, current = _this$props2.current, onChange = _this$props2.onChange; onChange.apply(void 0, _paramUtils.default.yearHandleChangeParams(_utils.default.addYears(current, year, this.getOptions()))); }; _proto.handleDisabled = function handleDisabled(date) { var _this$props3 = this.props, min = _this$props3.min, disabled = _this$props3.disabled, range = _this$props3.range, type = _this$props3.type, index = _this$props3.index, rangeDate = _this$props3.rangeDate, max = _this$props3.max; var isDisabled = min && _utils.default.compareYear(min, date, 1, this.getOptions()) >= 0; if (!isDisabled) { isDisabled = max && _utils.default.compareYear(date, max, 1, this.getOptions()) >= 0; } if (!isDisabled && type === 'year' && typeof disabled === 'function') { isDisabled = disabled(date); } if (!isDisabled && index === 1 && (0, _is.isArray)(rangeDate)) { if (rangeDate[0] && _utils.default.compareAsc(date, _utils.default.addSeconds(rangeDate[0], range, this.getOptions())) > 0) { isDisabled = true; } } return isDisabled; }; _proto.renderYear = function renderYear(y) { var value = this.props.value; var date = _utils.default.changeDate(_utils.default.toDate(MONTHBASE, this.getOptions()), 'year', y, this.getOptions()); var isDisabled = this.handleDisabled(date); var className = (0, _styles.datepickerClass)(value && _utils.default.getDateInfo(value, 'year', this.getOptions()) === y && 'active', isDisabled && 'disabled'); return _react.default.createElement("span", { key: y, className: className, onClick: isDisabled ? undefined : this.handleChange.bind(this, y) }, y); }; _proto.render = function render() { var current = this.props.current; var cy = _utils.default.getDateInfo(current, 'year', this.getOptions()) - 7; var years = (0, _numbers.range)(15, 0).map(function (i) { return cy + i; }); return _react.default.createElement("div", { className: (0, _styles.datepickerClass)('year-picker') }, _react.default.createElement("div", { className: (0, _styles.datepickerClass)('header') }, _react.default.createElement(_Icon.default, { name: "AngleLeft", className: "left", onClick: this.handlePrevRange }), _react.default.createElement("span", { className: (0, _styles.datepickerClass)('ym') }, years[0] + " ~ " + years[years.length - 1]), _react.default.createElement(_Icon.default, { name: "AngleRight", className: "right", onClick: this.handleNextRange })), _react.default.createElement("div", { className: (0, _styles.datepickerClass)('list') }, years.map(this.renderYear))); }; return Year; }(_react.PureComponent); var _default = Year; exports.default = _default;