UNPKG

choerodon-ui

Version:

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

206 lines (170 loc) 7.17 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); function _createSuper(Derived) { function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } var ROW = 4; var COL = 3; function goYear(direction) { var next = this.state.value.clone(); next.add(direction, 'years'); this.setState({ value: next }); } function chooseDecade(year, event) { var next = this.state.value.clone(); next.year(year); next.month(this.state.value.month()); this.props.onSelect(next); event.preventDefault(); } var DecadePanel = /*#__PURE__*/ function (_Component) { (0, _inherits2["default"])(DecadePanel, _Component); var _super = _createSuper(DecadePanel); function DecadePanel(props) { var _this; (0, _classCallCheck2["default"])(this, DecadePanel); _this = _super.call(this, props); _this.state = { value: props.value || props.defaultValue }; // bind methods _this.prefixCls = "".concat(props.rootPrefixCls, "-decade-panel"); _this.nextCentury = goYear.bind((0, _assertThisInitialized2["default"])(_this), 100); _this.previousCentury = goYear.bind((0, _assertThisInitialized2["default"])(_this), -100); return _this; } (0, _createClass2["default"])(DecadePanel, [{ key: "render", value: function render() { var _this2 = this; var value = this.state.value; var locale = this.props.locale; var currentYear = value.year(); var startYear = parseInt(currentYear / 100, 10) * 100; var preYear = startYear - 10; var endYear = startYear + 99; var decades = []; var index = 0; var prefixCls = this.prefixCls; for (var rowIndex = 0; rowIndex < ROW; rowIndex++) { decades[rowIndex] = []; for (var colIndex = 0; colIndex < COL; colIndex++) { var startDecade = preYear + index * 10; var endDecade = preYear + index * 10 + 9; decades[rowIndex][colIndex] = { startDecade: startDecade, endDecade: endDecade }; index++; } } var decadesEls = decades.map(function (row, decadeIndex) { var tds = row.map(function (decadeData) { var _classNameMap; var dStartDecade = decadeData.startDecade; var dEndDecade = decadeData.endDecade; var isLast = dStartDecade < startYear; var isNext = dEndDecade > endYear; var classNameMap = (_classNameMap = {}, (0, _defineProperty2["default"])(_classNameMap, "".concat(prefixCls, "-cell"), 1), (0, _defineProperty2["default"])(_classNameMap, "".concat(prefixCls, "-selected-cell"), dStartDecade <= currentYear && currentYear <= dEndDecade), (0, _defineProperty2["default"])(_classNameMap, "".concat(prefixCls, "-last-century-cell"), isLast), (0, _defineProperty2["default"])(_classNameMap, "".concat(prefixCls, "-next-century-cell"), isNext), _classNameMap); var content = "".concat(dStartDecade, "-").concat(dEndDecade); var clickHandler; if (isLast) { clickHandler = _this2.previousCentury; } else if (isNext) { clickHandler = _this2.nextCentury; } else { clickHandler = chooseDecade.bind(_this2, dStartDecade); } return _react["default"].createElement("td", { key: dStartDecade, onClick: clickHandler, role: "gridcell", className: (0, _classnames["default"])(classNameMap) }, _react["default"].createElement("a", { className: "".concat(prefixCls, "-decade") }, content)); }); return _react["default"].createElement("tr", { key: decadeIndex, role: "row" }, tds); }); return _react["default"].createElement("div", { className: this.prefixCls }, _react["default"].createElement("div", { className: "".concat(prefixCls, "-header") }, _react["default"].createElement("a", { className: "".concat(prefixCls, "-prev-century-btn"), role: "button", onClick: this.previousCentury, title: locale.previousCentury }), _react["default"].createElement("div", { className: "".concat(prefixCls, "-century") }, startYear, "-", endYear), _react["default"].createElement("a", { className: "".concat(prefixCls, "-next-century-btn"), role: "button", onClick: this.nextCentury, title: locale.nextCentury })), _react["default"].createElement("div", { className: "".concat(prefixCls, "-body") }, _react["default"].createElement("table", { className: "".concat(prefixCls, "-table"), cellSpacing: "0", role: "grid" }, _react["default"].createElement("tbody", { className: "".concat(prefixCls, "-tbody") }, decadesEls)))); } }]); return DecadePanel; }(_react.Component); exports["default"] = DecadePanel; (0, _defineProperty2["default"])(DecadePanel, "propTypes", { locale: _propTypes["default"].object, value: _propTypes["default"].object, defaultValue: _propTypes["default"].object, rootPrefixCls: _propTypes["default"].string }); (0, _defineProperty2["default"])(DecadePanel, "defaultProps", { onSelect: function onSelect() {} }); //# sourceMappingURL=DecadePanel.js.map