1 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
|
2 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';
|
3 | import _inherits from 'babel-runtime/helpers/inherits';
|
4 | import React from 'react';
|
5 | import classnames from 'classnames';
|
6 | import Icon from '../../icon';
|
7 | import { isDisabledDate, YEAR_TABLE_COL_COUNT, YEAR_TABLE_ROW_COUNT } from '../utils';
|
8 |
|
9 | var YearTable = function (_React$PureComponent) {
|
10 | _inherits(YearTable, _React$PureComponent);
|
11 |
|
12 | function YearTable() {
|
13 | _classCallCheck(this, YearTable);
|
14 |
|
15 | return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));
|
16 | }
|
17 |
|
18 | YearTable.prototype.onYearCellClick = function onYearCellClick(date) {
|
19 | this.props.onSelectYear(date, 'month');
|
20 | };
|
21 |
|
22 | YearTable.prototype.render = function render() {
|
23 | var _props = this.props,
|
24 | prefix = _props.prefix,
|
25 | value = _props.value,
|
26 | today = _props.today,
|
27 | visibleMonth = _props.visibleMonth,
|
28 | locale = _props.locale,
|
29 | disabledDate = _props.disabledDate,
|
30 | goPrevDecade = _props.goPrevDecade,
|
31 | goNextDecade = _props.goNextDecade,
|
32 | yearCellRender = _props.yearCellRender;
|
33 |
|
34 | var currentYear = today.year();
|
35 | var selectedYear = value ? value.year() : null;
|
36 | var visibleYear = visibleMonth.year();
|
37 | var startYear = Math.floor(visibleYear / 10) * 10;
|
38 |
|
39 | var yearElements = [];
|
40 | var counter = 0;
|
41 |
|
42 | var lastRowIndex = YEAR_TABLE_ROW_COUNT - 1;
|
43 | var lastColIndex = YEAR_TABLE_COL_COUNT - 1;
|
44 |
|
45 | for (var i = 0; i < YEAR_TABLE_ROW_COUNT; i++) {
|
46 | var rowElements = [];
|
47 | for (var j = 0; j < YEAR_TABLE_COL_COUNT; j++) {
|
48 | var _classnames;
|
49 |
|
50 | var content = void 0;
|
51 | var year = void 0;
|
52 | var isDisabled = false;
|
53 | var onClick = void 0;
|
54 | var title = void 0;
|
55 |
|
56 | if (i === 0 && j === 0) {
|
57 | title = locale.prevDecade;
|
58 | onClick = goPrevDecade;
|
59 | content = React.createElement(Icon, { type: 'arrow-left', size: 'xs' });
|
60 | } else if (i === lastRowIndex && j === lastColIndex) {
|
61 | title = locale.nextDecade;
|
62 | onClick = goNextDecade;
|
63 | content = React.createElement(Icon, { type: 'arrow-right', size: 'xs' });
|
64 | } else {
|
65 | year = startYear + counter++;
|
66 | title = year;
|
67 | var yearDate = visibleMonth.clone().year(year);
|
68 | isDisabled = isDisabledDate(yearDate, disabledDate, 'year');
|
69 |
|
70 | !isDisabled && (onClick = this.onYearCellClick.bind(this, yearDate));
|
71 |
|
72 | content = yearCellRender ? yearCellRender(yearDate) : year;
|
73 | }
|
74 |
|
75 | var isSelected = year === selectedYear;
|
76 |
|
77 | var classNames = classnames((_classnames = {}, _classnames[prefix + 'calendar-cell'] = true, _classnames[prefix + 'calendar-cell-current'] = year === currentYear, _classnames[prefix + 'selected'] = isSelected, _classnames[prefix + 'disabled'] = isDisabled, _classnames));
|
78 |
|
79 | rowElements.push(React.createElement(
|
80 | 'td',
|
81 | { key: i + '-' + j, className: classNames, role: 'cell' },
|
82 | React.createElement(
|
83 | 'div',
|
84 | {
|
85 | className: prefix + 'calendar-year',
|
86 | onClick: onClick,
|
87 | title: title,
|
88 | 'aria-disabled': isDisabled ? 'true' : 'false',
|
89 | 'aria-selected': isSelected ? 'true' : 'false'
|
90 | },
|
91 | content
|
92 | )
|
93 | ));
|
94 | }
|
95 | yearElements.push(React.createElement(
|
96 | 'tr',
|
97 | { key: i, role: 'row' },
|
98 | rowElements
|
99 | ));
|
100 | }
|
101 | return React.createElement(
|
102 | 'table',
|
103 | { className: prefix + 'calendar-table', role: 'grid' },
|
104 | React.createElement(
|
105 | 'tbody',
|
106 | { className: prefix + 'calendar-tbody', role: 'rowgroup' },
|
107 | yearElements
|
108 | )
|
109 | );
|
110 | };
|
111 |
|
112 | return YearTable;
|
113 | }(React.PureComponent);
|
114 |
|
115 | export default YearTable; |
\ | No newline at end of file |