Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 

192 řádky
5.7 KiB

  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. var _extends2 = require('babel-runtime/helpers/extends');
  6. var _extends3 = _interopRequireDefault(_extends2);
  7. var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
  8. var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
  9. var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
  10. var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
  11. var _createClass2 = require('babel-runtime/helpers/createClass');
  12. var _createClass3 = _interopRequireDefault(_createClass2);
  13. var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
  14. var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
  15. var _inherits2 = require('babel-runtime/helpers/inherits');
  16. var _inherits3 = _interopRequireDefault(_inherits2);
  17. var _react = require('react');
  18. var _react2 = _interopRequireDefault(_react);
  19. var _propTypes = require('prop-types');
  20. var _propTypes2 = _interopRequireDefault(_propTypes);
  21. var _reactDom = require('react-dom');
  22. var _reactDom2 = _interopRequireDefault(_reactDom);
  23. var _YearButton = require('./YearButton');
  24. var _YearButton2 = _interopRequireDefault(_YearButton);
  25. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  26. var CalendarYear = function (_Component) {
  27. (0, _inherits3.default)(CalendarYear, _Component);
  28. function CalendarYear() {
  29. var _ref;
  30. var _temp, _this, _ret;
  31. (0, _classCallCheck3.default)(this, CalendarYear);
  32. for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
  33. args[_key] = arguments[_key];
  34. }
  35. return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = CalendarYear.__proto__ || (0, _getPrototypeOf2.default)(CalendarYear)).call.apply(_ref, [this].concat(args))), _this), _this.handleClickYear = function (event, year) {
  36. if (_this.props.onClickYear) {
  37. _this.props.onClickYear(event, year);
  38. }
  39. }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
  40. }
  41. (0, _createClass3.default)(CalendarYear, [{
  42. key: 'componentDidMount',
  43. value: function componentDidMount() {
  44. this.scrollToSelectedYear();
  45. }
  46. }, {
  47. key: 'componentDidUpdate',
  48. value: function componentDidUpdate() {
  49. this.scrollToSelectedYear();
  50. }
  51. }, {
  52. key: 'getYears',
  53. value: function getYears() {
  54. var _props = this.props,
  55. DateTimeFormat = _props.DateTimeFormat,
  56. locale = _props.locale,
  57. minDate = _props.minDate,
  58. maxDate = _props.maxDate,
  59. selectedDate = _props.selectedDate,
  60. utils = _props.utils;
  61. var minYear = utils.getYear(minDate);
  62. var maxYear = utils.getYear(maxDate);
  63. var years = [];
  64. for (var year = minYear; year <= maxYear; year++) {
  65. var selected = utils.getYear(selectedDate) === year;
  66. var selectedProps = {};
  67. if (selected) {
  68. selectedProps.ref = 'selectedYearButton';
  69. }
  70. var yearFormated = new DateTimeFormat(locale, {
  71. year: 'numeric'
  72. }).format(utils.setYear(selectedDate, year));
  73. var yearButton = _react2.default.createElement(
  74. _YearButton2.default,
  75. (0, _extends3.default)({
  76. key: 'yb' + year,
  77. onClick: this.handleClickYear,
  78. selected: selected,
  79. year: year,
  80. utils: utils
  81. }, selectedProps),
  82. yearFormated
  83. );
  84. years.push(yearButton);
  85. }
  86. return years;
  87. }
  88. }, {
  89. key: 'scrollToSelectedYear',
  90. value: function scrollToSelectedYear() {
  91. if (this.refs.selectedYearButton === undefined) {
  92. return;
  93. }
  94. var container = _reactDom2.default.findDOMNode(this);
  95. var yearButtonNode = _reactDom2.default.findDOMNode(this.refs.selectedYearButton);
  96. var containerHeight = container.clientHeight;
  97. var yearButtonNodeHeight = yearButtonNode.clientHeight || 32;
  98. var scrollYOffset = yearButtonNode.offsetTop + yearButtonNodeHeight / 2 - containerHeight / 2;
  99. container.scrollTop = scrollYOffset;
  100. }
  101. }, {
  102. key: 'render',
  103. value: function render() {
  104. var _context$muiTheme = this.context.muiTheme,
  105. prepareStyles = _context$muiTheme.prepareStyles,
  106. calendarYearBackgroundColor = _context$muiTheme.datePicker.calendarYearBackgroundColor;
  107. var styles = {
  108. root: {
  109. backgroundColor: calendarYearBackgroundColor,
  110. height: 'inherit',
  111. lineHeight: '35px',
  112. overflowX: 'hidden',
  113. overflowY: 'scroll',
  114. position: 'relative'
  115. },
  116. child: {
  117. display: 'flex',
  118. flexDirection: 'column',
  119. justifyContent: 'center',
  120. minHeight: '100%'
  121. }
  122. };
  123. return _react2.default.createElement(
  124. 'div',
  125. { style: prepareStyles(styles.root) },
  126. _react2.default.createElement(
  127. 'div',
  128. { style: prepareStyles(styles.child) },
  129. this.getYears()
  130. )
  131. );
  132. }
  133. }]);
  134. return CalendarYear;
  135. }(_react.Component);
  136. CalendarYear.contextTypes = {
  137. muiTheme: _propTypes2.default.object.isRequired
  138. };
  139. CalendarYear.propTypes = process.env.NODE_ENV !== "production" ? {
  140. DateTimeFormat: _propTypes2.default.func.isRequired,
  141. locale: _propTypes2.default.string.isRequired,
  142. maxDate: _propTypes2.default.object.isRequired,
  143. minDate: _propTypes2.default.object.isRequired,
  144. onClickYear: _propTypes2.default.func,
  145. selectedDate: _propTypes2.default.object.isRequired,
  146. utils: _propTypes2.default.object.isRequired,
  147. wordings: _propTypes2.default.object
  148. } : {};
  149. exports.default = CalendarYear;