UNPKG

choerodon-ui

Version:

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

168 lines (141 loc) 5.13 kB
import _classCallCheck from "@babel/runtime/helpers/classCallCheck"; import _createClass from "@babel/runtime/helpers/createClass"; import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized"; import _inherits from "@babel/runtime/helpers/inherits"; import _createSuper from "@babel/runtime/helpers/createSuper"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; import React, { Component } from 'react'; import classnames from 'classnames'; import noop from 'lodash/noop'; import { getMonthName, getTodayTime } from '../util'; var ROW = 4; var COL = 3; function chooseMonth(month) { var next = this.state.value.clone(); next.month(month); this.setAndSelectValue(next); } var MonthTable = /*#__PURE__*/function (_Component) { _inherits(MonthTable, _Component); var _super = _createSuper(MonthTable); function MonthTable() { var _this; _classCallCheck(this, MonthTable); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _super.call.apply(_super, [this].concat(args)); _defineProperty(_assertThisInitialized(_this), "state", { value: _this.props.value }); return _this; } _createClass(MonthTable, [{ key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { if ('value' in nextProps) { this.setState({ value: nextProps.value }); } } }, { key: "setAndSelectValue", value: function setAndSelectValue(value) { this.setState({ value: value }); this.props.onSelect(value); } }, { key: "months", value: function months() { var value = this.state.value; var current = value.clone(); var months = []; var index = 0; for (var rowIndex = 0; rowIndex < ROW; rowIndex++) { months[rowIndex] = []; for (var colIndex = 0; colIndex < COL; colIndex++) { current.month(index); var content = getMonthName(current); months[rowIndex][colIndex] = { value: index, content: content, title: content }; index++; } } return months; } }, { key: "render", value: function render() { var _this2 = this; var props = this.props; var value = this.state.value; var today = getTodayTime(value); var months = this.months(); var currentMonth = value.month(); var prefixCls = props.prefixCls, locale = props.locale, contentRender = props.contentRender, cellRender = props.cellRender; var monthsEls = months.map(function (month, index) { var tds = month.map(function (monthData) { var _classNameMap; var disabled = false; if (props.disabledDate) { var testValue = value.clone(); testValue.month(monthData.value); disabled = props.disabledDate(testValue); } var classNameMap = (_classNameMap = {}, _defineProperty(_classNameMap, "".concat(prefixCls, "-cell"), 1), _defineProperty(_classNameMap, "".concat(prefixCls, "-cell-disabled"), disabled), _defineProperty(_classNameMap, "".concat(prefixCls, "-selected-cell"), monthData.value === currentMonth), _defineProperty(_classNameMap, "".concat(prefixCls, "-current-cell"), today.year() === value.year() && monthData.value === today.month()), _classNameMap); var cellEl; if (cellRender) { var currentValue = value.clone(); currentValue.month(monthData.value); cellEl = cellRender(currentValue, locale); } else { var content; if (contentRender) { var _currentValue = value.clone(); _currentValue.month(monthData.value); content = contentRender(_currentValue, locale); } else { content = monthData.content; } cellEl = /*#__PURE__*/React.createElement("a", { className: "".concat(prefixCls, "-month") }, content); } return /*#__PURE__*/React.createElement("td", { role: "gridcell", key: monthData.value, onClick: disabled ? null : chooseMonth.bind(_this2, monthData.value), title: monthData.title, className: classnames(classNameMap) }, cellEl); }); return /*#__PURE__*/React.createElement("tr", { key: index, role: "row" }, tds); }); return /*#__PURE__*/React.createElement("table", { className: "".concat(prefixCls, "-table"), cellSpacing: "0", role: "grid" }, /*#__PURE__*/React.createElement("tbody", { className: "".concat(prefixCls, "-tbody") }, monthsEls)); } }]); return MonthTable; }(Component); _defineProperty(MonthTable, "defaultProps", { onSelect: noop }); export { MonthTable as default }; //# sourceMappingURL=MonthTable.js.map