UNPKG

d2-ui

Version:
118 lines (90 loc) 3.7 kB
'use strict'; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactDom = require('react-dom'); var _reactDom2 = _interopRequireDefault(_reactDom); var _stylePropable = require('../mixins/style-propable'); var _stylePropable2 = _interopRequireDefault(_stylePropable); var _colors = require('../styles/colors'); var _colors2 = _interopRequireDefault(_colors); var _dateTime = require('../utils/date-time'); var _dateTime2 = _interopRequireDefault(_dateTime); var _yearButton = require('./year-button'); var _yearButton2 = _interopRequireDefault(_yearButton); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var CalendarYear = _react2.default.createClass({ displayName: 'CalendarYear', propTypes: { displayDate: _react2.default.PropTypes.object.isRequired, maxDate: _react2.default.PropTypes.object, minDate: _react2.default.PropTypes.object, onYearTouchTap: _react2.default.PropTypes.func, selectedDate: _react2.default.PropTypes.object.isRequired }, mixins: [_stylePropable2.default], componentDidMount: function componentDidMount() { this._scrollToSelectedYear(); }, componentDidUpdate: function componentDidUpdate() { this._scrollToSelectedYear(); }, _getYears: function _getYears() { var minYear = this.props.minDate.getFullYear(); var maxYear = this.props.maxDate.getFullYear(); var years = []; var dateCheck = _dateTime2.default.clone(this.props.selectedDate); for (var year = minYear; year <= maxYear; year++) { dateCheck.setFullYear(year); if (!_dateTime2.default.isBetweenDates(dateCheck, this.props.minDate, this.props.maxDate)) continue; var selected = this.props.selectedDate.getFullYear() === year; var selectedProps = {}; if (selected) { selectedProps = { ref: 'selectedYearButton' }; } var yearButton = _react2.default.createElement(_yearButton2.default, _extends({ key: 'yb' + year, year: year, onTouchTap: this._handleYearTouchTap, selected: selected }, selectedProps)); years.push(yearButton); } return years; }, _scrollToSelectedYear: function _scrollToSelectedYear() { if (this.refs.selectedYearButton === undefined) return; var container = _reactDom2.default.findDOMNode(this); var yearButtonNode = _reactDom2.default.findDOMNode(this.refs.selectedYearButton); var containerHeight = container.clientHeight; var yearButtonNodeHeight = yearButtonNode.clientHeight || 32; var scrollYOffset = yearButtonNode.offsetTop + yearButtonNodeHeight / 2 - containerHeight / 2; container.scrollTop = scrollYOffset; }, _handleYearTouchTap: function _handleYearTouchTap(e, year) { if (this.props.onYearTouchTap) this.props.onYearTouchTap(e, year); }, render: function render() { var years = this._getYears(); var styles = { position: 'relative', height: 'inherit', lineHeight: '36px', textAlign: 'center', padding: '8px 14px 0 14px', backgroundColor: _colors2.default.white, overflowX: 'hidden', overflowY: 'scroll' }; return _react2.default.createElement( 'div', { style: styles }, years ); } }); exports.default = CalendarYear; module.exports = exports['default'];