UNPKG

dareway-rui

Version:

248 lines (219 loc) 10.3 kB
'use strict'; var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault'); Object.defineProperty(exports, '__esModule', { value: true }); exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require('@babel/runtime/helpers/defineProperty')); var _classCallCheck2 = _interopRequireDefault(require('@babel/runtime/helpers/classCallCheck')); var _createClass2 = _interopRequireDefault(require('@babel/runtime/helpers/createClass')); var _possibleConstructorReturn2 = _interopRequireDefault(require('@babel/runtime/helpers/possibleConstructorReturn')); var _getPrototypeOf2 = _interopRequireDefault(require('@babel/runtime/helpers/getPrototypeOf')); var _assertThisInitialized2 = _interopRequireDefault(require('@babel/runtime/helpers/assertThisInitialized')); var _inherits2 = _interopRequireDefault(require('@babel/runtime/helpers/inherits')); var _react = _interopRequireDefault(require('react')); var _propTypes = _interopRequireDefault(require('prop-types')); var _classnames = _interopRequireDefault(require('classnames')); 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(_React$Component) { (0, _inherits2.default)(DecadePanel, _React$Component); function DecadePanel(props) { var _this; (0, _classCallCheck2.default)(this, DecadePanel); _this = (0, _possibleConstructorReturn2.default)( this, (0, _getPrototypeOf2.default)(DecadePanel).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 _this$props = this.props, locale = _this$props.locale, renderFooter = _this$props.renderFooter; 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 footer = renderFooter && renderFooter('decade'); 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 ) ) ), footer && _react.default.createElement( 'div', { className: ''.concat(prefixCls, '-footer') }, footer ) ); } } ]); return DecadePanel; })(_react.default.Component); exports.default = DecadePanel; DecadePanel.propTypes = { locale: _propTypes.default.object, value: _propTypes.default.object, defaultValue: _propTypes.default.object, rootPrefixCls: _propTypes.default.string, renderFooter: _propTypes.default.func }; DecadePanel.defaultProps = { onSelect: function onSelect() {} }; //@ sourceMappingURL=DecadePanel.js.map