@seafile/seafile-calendar 0.0.16 → 0.0.17-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/assets/index.css +1184 -0
  2. package/dist/rc-calendar.css +1 -3
  3. package/dist/rc-calendar.css.map +1 -1
  4. package/dist/rc-calendar.js +196 -5840
  5. package/dist/rc-calendar.js.map +1 -1
  6. package/dist/rc-calendar.min.css +1 -3
  7. package/dist/rc-calendar.min.css.map +1 -1
  8. package/dist/rc-calendar.min.js +1 -1
  9. package/es/Calendar.js +436 -0
  10. package/es/FullCalendar.js +182 -0
  11. package/es/MonthCalendar.js +135 -0
  12. package/es/Picker.js +245 -0
  13. package/es/RangeCalendar.js +876 -0
  14. package/es/calendar/CalendarFooter.js +93 -0
  15. package/es/calendar/CalendarHeader.js +257 -0
  16. package/es/calendar/CalendarRightPanel.js +121 -0
  17. package/es/calendar/OkButton.js +22 -0
  18. package/es/calendar/TimePickerButton.js +28 -0
  19. package/es/calendar/TodayButton.js +28 -0
  20. package/es/date/DateConstants.js +4 -0
  21. package/es/date/DateInput.js +233 -0
  22. package/es/date/DateTBody.js +275 -0
  23. package/es/date/DateTHead.js +78 -0
  24. package/es/date/DateTable.js +32 -0
  25. package/es/decade/DecadePanel.js +181 -0
  26. package/es/full-calendar/CalendarHeader.js +180 -0
  27. package/es/index.js +3 -0
  28. package/es/locale/ar_EG.js +27 -0
  29. package/es/locale/bg_BG.js +27 -0
  30. package/es/locale/ca_ES.js +27 -0
  31. package/es/locale/cs_CZ.js +27 -0
  32. package/es/locale/da_DK.js +27 -0
  33. package/es/locale/de_DE.js +27 -0
  34. package/es/locale/el_GR.js +27 -0
  35. package/es/locale/en_GB.js +27 -0
  36. package/es/locale/en_US.js +28 -0
  37. package/es/locale/es_ES.js +27 -0
  38. package/es/locale/et_EE.js +27 -0
  39. package/es/locale/fa_IR.js +27 -0
  40. package/es/locale/fi_FI.js +27 -0
  41. package/es/locale/fr_BE.js +27 -0
  42. package/es/locale/fr_FR.js +27 -0
  43. package/es/locale/he_IL.js +28 -0
  44. package/es/locale/hi_IN.js +28 -0
  45. package/es/locale/hr_HR.js +28 -0
  46. package/es/locale/hu_HU.js +27 -0
  47. package/es/locale/id_ID.js +28 -0
  48. package/es/locale/is_IS.js +27 -0
  49. package/es/locale/it_IT.js +27 -0
  50. package/es/locale/ja_JP.js +26 -0
  51. package/es/locale/kn_IN.js +28 -0
  52. package/es/locale/ko_KR.js +27 -0
  53. package/es/locale/ku_IQ.js +27 -0
  54. package/es/locale/lv_LV.js +27 -0
  55. package/es/locale/mm_MM.js +28 -0
  56. package/es/locale/mn_MN.js +28 -0
  57. package/es/locale/ms_MY.js +27 -0
  58. package/es/locale/nb_NO.js +27 -0
  59. package/es/locale/nl_BE.js +27 -0
  60. package/es/locale/nl_NL.js +27 -0
  61. package/es/locale/pl_PL.js +27 -0
  62. package/es/locale/pt_BR.js +27 -0
  63. package/es/locale/pt_PT.js +27 -0
  64. package/es/locale/ro_RO.js +28 -0
  65. package/es/locale/ru_RU.js +27 -0
  66. package/es/locale/sk_SK.js +27 -0
  67. package/es/locale/sl_SI.js +27 -0
  68. package/es/locale/sr_RS.js +27 -0
  69. package/es/locale/sv_SE.js +27 -0
  70. package/es/locale/ta_IN.js +28 -0
  71. package/es/locale/th_TH.js +27 -0
  72. package/es/locale/tr_TR.js +27 -0
  73. package/es/locale/ug_CN.js +26 -0
  74. package/es/locale/uk_UA.js +27 -0
  75. package/es/locale/vi_VN.js +28 -0
  76. package/es/locale/zh_CN.js +27 -0
  77. package/es/locale/zh_TW.js +26 -0
  78. package/es/mixin/CalendarMixin.js +123 -0
  79. package/es/mixin/CommonMixin.js +85 -0
  80. package/es/month/MonthPanel.js +154 -0
  81. package/es/month/MonthTable.js +156 -0
  82. package/es/picker/placements.js +35 -0
  83. package/es/range-calendar/CalendarPart.js +151 -0
  84. package/es/util/index.js +105 -0
  85. package/es/util/toTime.js +21 -0
  86. package/es/year/YearPanel.js +202 -0
  87. package/lib/Calendar.js +499 -0
  88. package/lib/FullCalendar.js +221 -0
  89. package/lib/MonthCalendar.js +172 -0
  90. package/lib/Picker.js +282 -0
  91. package/lib/RangeCalendar.js +925 -0
  92. package/lib/calendar/CalendarFooter.js +134 -0
  93. package/lib/calendar/CalendarHeader.js +290 -0
  94. package/lib/calendar/CalendarRightPanel.js +145 -0
  95. package/lib/calendar/OkButton.js +32 -0
  96. package/lib/calendar/TimePickerButton.js +41 -0
  97. package/lib/calendar/TodayButton.js +39 -0
  98. package/lib/date/DateConstants.js +8 -0
  99. package/lib/date/DateInput.js +265 -0
  100. package/lib/date/DateTBody.js +302 -0
  101. package/lib/date/DateTHead.js +95 -0
  102. package/lib/date/DateTable.js +54 -0
  103. package/lib/decade/DecadePanel.js +207 -0
  104. package/lib/full-calendar/CalendarHeader.js +201 -0
  105. package/lib/index.js +12 -0
  106. package/lib/locale/ar_EG.js +31 -0
  107. package/lib/locale/bg_BG.js +31 -0
  108. package/lib/locale/ca_ES.js +31 -0
  109. package/lib/locale/cs_CZ.js +31 -0
  110. package/lib/locale/da_DK.js +31 -0
  111. package/lib/locale/de_DE.js +31 -0
  112. package/lib/locale/el_GR.js +31 -0
  113. package/lib/locale/en_GB.js +31 -0
  114. package/lib/locale/en_US.js +32 -0
  115. package/lib/locale/es_ES.js +31 -0
  116. package/lib/locale/et_EE.js +31 -0
  117. package/lib/locale/fa_IR.js +31 -0
  118. package/lib/locale/fi_FI.js +31 -0
  119. package/lib/locale/fr_BE.js +31 -0
  120. package/lib/locale/fr_FR.js +31 -0
  121. package/lib/locale/he_IL.js +32 -0
  122. package/lib/locale/hi_IN.js +32 -0
  123. package/lib/locale/hr_HR.js +32 -0
  124. package/lib/locale/hu_HU.js +31 -0
  125. package/lib/locale/id_ID.js +32 -0
  126. package/lib/locale/is_IS.js +31 -0
  127. package/lib/locale/it_IT.js +31 -0
  128. package/lib/locale/ja_JP.js +30 -0
  129. package/lib/locale/kn_IN.js +32 -0
  130. package/lib/locale/ko_KR.js +31 -0
  131. package/lib/locale/ku_IQ.js +31 -0
  132. package/lib/locale/lv_LV.js +31 -0
  133. package/lib/locale/mm_MM.js +32 -0
  134. package/lib/locale/mn_MN.js +32 -0
  135. package/lib/locale/ms_MY.js +31 -0
  136. package/lib/locale/nb_NO.js +31 -0
  137. package/lib/locale/nl_BE.js +31 -0
  138. package/lib/locale/nl_NL.js +31 -0
  139. package/lib/locale/pl_PL.js +31 -0
  140. package/lib/locale/pt_BR.js +31 -0
  141. package/lib/locale/pt_PT.js +31 -0
  142. package/lib/locale/ro_RO.js +32 -0
  143. package/lib/locale/ru_RU.js +31 -0
  144. package/lib/locale/sk_SK.js +31 -0
  145. package/lib/locale/sl_SI.js +31 -0
  146. package/lib/locale/sr_RS.js +31 -0
  147. package/lib/locale/sv_SE.js +31 -0
  148. package/lib/locale/ta_IN.js +32 -0
  149. package/lib/locale/th_TH.js +31 -0
  150. package/lib/locale/tr_TR.js +31 -0
  151. package/lib/locale/ug_CN.js +30 -0
  152. package/lib/locale/uk_UA.js +31 -0
  153. package/lib/locale/vi_VN.js +32 -0
  154. package/lib/locale/zh_CN.js +31 -0
  155. package/lib/locale/zh_TW.js +30 -0
  156. package/lib/mixin/CalendarMixin.js +153 -0
  157. package/lib/mixin/CommonMixin.js +106 -0
  158. package/lib/month/MonthPanel.js +179 -0
  159. package/lib/month/MonthTable.js +181 -0
  160. package/lib/picker/placements.js +39 -0
  161. package/lib/range-calendar/CalendarPart.js +184 -0
  162. package/lib/util/index.js +130 -0
  163. package/lib/util/toTime.js +28 -0
  164. package/lib/year/YearPanel.js +227 -0
  165. package/package.json +1 -1
@@ -0,0 +1,202 @@
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 PropTypes from 'prop-types';
6
+ import classnames from 'classnames';
7
+ var ROW = 4;
8
+ var COL = 3;
9
+
10
+ function goYear(direction) {
11
+ var value = this.state.value.clone();
12
+ value = value.add(direction, 'year');
13
+ this.setState({
14
+ value: value
15
+ });
16
+ }
17
+
18
+ function chooseYear(year) {
19
+ var value = this.state.value.clone();
20
+ value = value.year(year);
21
+ value = value.month(this.state.value.month());
22
+ this.setState({
23
+ value: value
24
+ });
25
+ this.props.onSelect(value);
26
+ }
27
+
28
+ var YearPanel = function (_React$Component) {
29
+ _inherits(YearPanel, _React$Component);
30
+
31
+ function YearPanel(props) {
32
+ _classCallCheck(this, YearPanel);
33
+
34
+ var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));
35
+
36
+ _this.prefixCls = props.rootPrefixCls + '-year-panel';
37
+ _this.state = {
38
+ value: props.value || props.defaultValue
39
+ };
40
+ _this.nextDecade = goYear.bind(_this, 10);
41
+ _this.previousDecade = goYear.bind(_this, -10);
42
+ return _this;
43
+ }
44
+
45
+ YearPanel.prototype.years = function years() {
46
+ var value = this.state.value;
47
+ var currentYear = value.year();
48
+ var startYear = parseInt(currentYear / 10, 10) * 10;
49
+ var previousYear = startYear - 1;
50
+ var years = [];
51
+ var index = 0;
52
+ for (var rowIndex = 0; rowIndex < ROW; rowIndex++) {
53
+ years[rowIndex] = [];
54
+ for (var colIndex = 0; colIndex < COL; colIndex++) {
55
+ var year = previousYear + index;
56
+ var content = String(year);
57
+ years[rowIndex][colIndex] = {
58
+ content: content,
59
+ year: year,
60
+ title: content
61
+ };
62
+ index++;
63
+ }
64
+ }
65
+ return years;
66
+ };
67
+
68
+ YearPanel.prototype.render = function render() {
69
+ var _this2 = this;
70
+
71
+ var props = this.props;
72
+ var value = this.state.value;
73
+ var locale = props.locale,
74
+ renderFooter = props.renderFooter;
75
+
76
+ var years = this.years();
77
+ var currentYear = value.year();
78
+ var startYear = parseInt(currentYear / 10, 10) * 10;
79
+ var endYear = startYear + 9;
80
+ var prefixCls = this.prefixCls;
81
+
82
+ var yeasEls = years.map(function (row, index) {
83
+ var tds = row.map(function (yearData) {
84
+ var _classNameMap;
85
+
86
+ var classNameMap = (_classNameMap = {}, _classNameMap[prefixCls + '-cell'] = 1, _classNameMap[prefixCls + '-selected-cell'] = yearData.year === currentYear, _classNameMap[prefixCls + '-last-decade-cell'] = yearData.year < startYear, _classNameMap[prefixCls + '-next-decade-cell'] = yearData.year > endYear, _classNameMap);
87
+ var clickHandler = void 0;
88
+ if (yearData.year < startYear) {
89
+ clickHandler = _this2.previousDecade;
90
+ } else if (yearData.year > endYear) {
91
+ clickHandler = _this2.nextDecade;
92
+ } else {
93
+ clickHandler = chooseYear.bind(_this2, yearData.year);
94
+ }
95
+ return React.createElement(
96
+ 'td',
97
+ {
98
+ role: 'gridcell',
99
+ title: yearData.title,
100
+ key: yearData.content,
101
+ onClick: clickHandler,
102
+ className: classnames(classNameMap)
103
+ },
104
+ React.createElement(
105
+ 'a',
106
+ {
107
+ className: prefixCls + '-year'
108
+ },
109
+ yearData.content
110
+ )
111
+ );
112
+ });
113
+ return React.createElement(
114
+ 'tr',
115
+ { key: index, role: 'row' },
116
+ tds
117
+ );
118
+ });
119
+
120
+ var footer = renderFooter && renderFooter('year');
121
+
122
+ return React.createElement(
123
+ 'div',
124
+ { className: this.prefixCls },
125
+ React.createElement(
126
+ 'div',
127
+ null,
128
+ React.createElement(
129
+ 'div',
130
+ { className: prefixCls + '-header' },
131
+ React.createElement('a', {
132
+ className: prefixCls + '-prev-decade-btn',
133
+ role: 'button',
134
+ onClick: this.previousDecade,
135
+ title: locale.previousDecade
136
+ }),
137
+ React.createElement(
138
+ 'a',
139
+ {
140
+ className: prefixCls + '-decade-select',
141
+ role: 'button',
142
+ onClick: props.onDecadePanelShow,
143
+ title: locale.decadeSelect
144
+ },
145
+ React.createElement(
146
+ 'span',
147
+ { className: prefixCls + '-decade-select-content' },
148
+ startYear,
149
+ '-',
150
+ endYear
151
+ ),
152
+ React.createElement(
153
+ 'span',
154
+ { className: prefixCls + '-decade-select-arrow' },
155
+ 'x'
156
+ )
157
+ ),
158
+ React.createElement('a', {
159
+ className: prefixCls + '-next-decade-btn',
160
+ role: 'button',
161
+ onClick: this.nextDecade,
162
+ title: locale.nextDecade
163
+ })
164
+ ),
165
+ React.createElement(
166
+ 'div',
167
+ { className: prefixCls + '-body' },
168
+ React.createElement(
169
+ 'table',
170
+ { className: prefixCls + '-table', cellSpacing: '0', role: 'grid' },
171
+ React.createElement(
172
+ 'tbody',
173
+ { className: prefixCls + '-tbody' },
174
+ yeasEls
175
+ )
176
+ )
177
+ ),
178
+ footer && React.createElement(
179
+ 'div',
180
+ { className: prefixCls + '-footer' },
181
+ footer
182
+ )
183
+ )
184
+ );
185
+ };
186
+
187
+ return YearPanel;
188
+ }(React.Component);
189
+
190
+ export default YearPanel;
191
+
192
+
193
+ YearPanel.propTypes = {
194
+ rootPrefixCls: PropTypes.string,
195
+ value: PropTypes.object,
196
+ defaultValue: PropTypes.object,
197
+ renderFooter: PropTypes.func
198
+ };
199
+
200
+ YearPanel.defaultProps = {
201
+ onSelect: function onSelect() {}
202
+ };
@@ -0,0 +1,499 @@
1
+ 'use strict';
2
+
3
+ exports.__esModule = true;
4
+
5
+ var _extends2 = require('babel-runtime/helpers/extends');
6
+
7
+ var _extends3 = _interopRequireDefault(_extends2);
8
+
9
+ var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
10
+
11
+ var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
12
+
13
+ var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
14
+
15
+ var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
16
+
17
+ var _inherits2 = require('babel-runtime/helpers/inherits');
18
+
19
+ var _inherits3 = _interopRequireDefault(_inherits2);
20
+
21
+ var _react = require('react');
22
+
23
+ var _react2 = _interopRequireDefault(_react);
24
+
25
+ var _reactDom = require('react-dom');
26
+
27
+ var _reactDom2 = _interopRequireDefault(_reactDom);
28
+
29
+ var _propTypes = require('prop-types');
30
+
31
+ var _propTypes2 = _interopRequireDefault(_propTypes);
32
+
33
+ var _KeyCode = require('rc-util/lib/KeyCode');
34
+
35
+ var _KeyCode2 = _interopRequireDefault(_KeyCode);
36
+
37
+ var _reactLifecyclesCompat = require('react-lifecycles-compat');
38
+
39
+ var _dayjs = require('dayjs');
40
+
41
+ var _dayjs2 = _interopRequireDefault(_dayjs);
42
+
43
+ var _DateTable = require('./date/DateTable');
44
+
45
+ var _DateTable2 = _interopRequireDefault(_DateTable);
46
+
47
+ var _CalendarHeader = require('./calendar/CalendarHeader');
48
+
49
+ var _CalendarHeader2 = _interopRequireDefault(_CalendarHeader);
50
+
51
+ var _CalendarFooter = require('./calendar/CalendarFooter');
52
+
53
+ var _CalendarFooter2 = _interopRequireDefault(_CalendarFooter);
54
+
55
+ var _CalendarRightPanel = require('./calendar/CalendarRightPanel');
56
+
57
+ var _CalendarRightPanel2 = _interopRequireDefault(_CalendarRightPanel);
58
+
59
+ var _CalendarMixin = require('./mixin/CalendarMixin');
60
+
61
+ var _CommonMixin = require('./mixin/CommonMixin');
62
+
63
+ var _DateInput = require('./date/DateInput');
64
+
65
+ var _DateInput2 = _interopRequireDefault(_DateInput);
66
+
67
+ var _util = require('./util');
68
+
69
+ var _toTime = require('./util/toTime');
70
+
71
+ var _localeData = require('dayjs/plugin/localeData');
72
+
73
+ var _localeData2 = _interopRequireDefault(_localeData);
74
+
75
+ var _utc = require('dayjs/plugin/utc');
76
+
77
+ var _utc2 = _interopRequireDefault(_utc);
78
+
79
+ var _weekOfYear = require('dayjs/plugin/weekOfYear');
80
+
81
+ var _weekOfYear2 = _interopRequireDefault(_weekOfYear);
82
+
83
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
84
+
85
+ _dayjs2['default'].extend(_utc2['default']);
86
+ _dayjs2['default'].extend(_localeData2['default']);
87
+ _dayjs2['default'].extend(_weekOfYear2['default']);
88
+
89
+ function noop() {}
90
+
91
+ var getMomentObjectIfValid = function getMomentObjectIfValid(date) {
92
+ if (_dayjs2['default'].isDayjs(date) && date.isValid()) {
93
+ return date;
94
+ }
95
+ return false;
96
+ };
97
+
98
+ var Calendar = function (_React$Component) {
99
+ (0, _inherits3['default'])(Calendar, _React$Component);
100
+
101
+ function Calendar(props) {
102
+ (0, _classCallCheck3['default'])(this, Calendar);
103
+
104
+ var _this = (0, _possibleConstructorReturn3['default'])(this, _React$Component.call(this, props));
105
+
106
+ _initialiseProps.call(_this);
107
+
108
+ _this.state = {
109
+ mode: _this.props.mode || 'date',
110
+ value: getMomentObjectIfValid(props.value) || getMomentObjectIfValid(props.defaultValue) || (0, _dayjs2['default'])(),
111
+ selectedValue: props.selectedValue || props.defaultSelectedValue
112
+ };
113
+ return _this;
114
+ }
115
+
116
+ Calendar.prototype.componentDidMount = function componentDidMount() {
117
+ if (this.props.showDateInput) {
118
+ this.saveFocusElement(_DateInput2['default'].getInstance());
119
+ }
120
+ };
121
+
122
+ Calendar.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, state) {
123
+ var value = nextProps.value,
124
+ selectedValue = nextProps.selectedValue;
125
+
126
+ var newState = {};
127
+
128
+ if ('mode' in nextProps && state.mode !== nextProps.mode) {
129
+ newState = { mode: nextProps.mode };
130
+ }
131
+ if ('value' in nextProps) {
132
+ newState.value = getMomentObjectIfValid(value) || getMomentObjectIfValid(nextProps.defaultValue) || (0, _CalendarMixin.getNowByCurrentStateValue)(state.value);
133
+ }
134
+ if ('selectedValue' in nextProps) {
135
+ newState.selectedValue = selectedValue;
136
+ }
137
+
138
+ return newState;
139
+ };
140
+
141
+ Calendar.prototype.render = function render() {
142
+ var props = this.props,
143
+ state = this.state;
144
+ var locale = props.locale,
145
+ prefixCls = props.prefixCls,
146
+ disabledDate = props.disabledDate,
147
+ dateInputPlaceholder = props.dateInputPlaceholder,
148
+ timePicker = props.timePicker,
149
+ onClickRightPanelTime = props.onClickRightPanelTime,
150
+ disabledTime = props.disabledTime,
151
+ clearIcon = props.clearIcon,
152
+ renderFooter = props.renderFooter,
153
+ inputMode = props.inputMode,
154
+ showHourAndMinute = props.showHourAndMinute;
155
+ var value = state.value,
156
+ selectedValue = state.selectedValue,
157
+ mode = state.mode;
158
+
159
+ var showTimePicker = mode === 'time';
160
+ var disabledTimeConfig = showTimePicker && disabledTime && timePicker ? (0, _util.getTimeConfig)(selectedValue, disabledTime) : null;
161
+
162
+ var timePickerEle = null;
163
+
164
+ if (timePicker && showTimePicker) {
165
+ var timePickerProps = (0, _extends3['default'])({
166
+ showHour: true,
167
+ showSecond: true,
168
+ showMinute: true
169
+ }, timePicker.props, disabledTimeConfig, {
170
+ onChange: this.onDateInputChange,
171
+ value: selectedValue,
172
+ disabledTime: disabledTime
173
+ });
174
+
175
+ if (timePicker.props.defaultValue !== undefined) {
176
+ timePickerProps.defaultOpenValue = timePicker.props.defaultValue;
177
+ }
178
+
179
+ timePickerEle = _react2['default'].cloneElement(timePicker, timePickerProps);
180
+ }
181
+
182
+ var dateInputElement = props.showDateInput ? _react2['default'].createElement(_DateInput2['default'], {
183
+ format: this.getFormat(),
184
+ key: 'date-input',
185
+ value: value,
186
+ locale: locale,
187
+ placeholder: dateInputPlaceholder,
188
+ showClear: true,
189
+ disabledTime: disabledTime,
190
+ disabledDate: disabledDate,
191
+ onClear: this.onClear,
192
+ prefixCls: prefixCls,
193
+ selectedValue: selectedValue,
194
+ onChange: this.onDateInputChange,
195
+ onSelect: this.onDateInputSelect,
196
+ clearIcon: clearIcon,
197
+ inputMode: inputMode
198
+ }) : null;
199
+
200
+ var children = [];
201
+ if (props.renderSidebar) {
202
+ children.push(props.renderSidebar());
203
+ }
204
+ children.push(_react2['default'].createElement(
205
+ 'div',
206
+ { className: prefixCls + '-panel', key: 'panel' },
207
+ dateInputElement,
208
+ _react2['default'].createElement(
209
+ 'div',
210
+ { className: prefixCls + '-date-panel-container' },
211
+ _react2['default'].createElement(
212
+ 'div',
213
+ {
214
+ tabIndex: this.props.focusablePanel ? 0 : undefined,
215
+ className: prefixCls + '-date-panel'
216
+ },
217
+ _react2['default'].createElement(_CalendarHeader2['default'], {
218
+ locale: locale,
219
+ mode: mode,
220
+ value: value,
221
+ onValueChange: this.setValue,
222
+ onPanelChange: this.onPanelChange,
223
+ renderFooter: renderFooter,
224
+ showTimePicker: showTimePicker,
225
+ prefixCls: prefixCls
226
+ }),
227
+ timePicker && showTimePicker ? _react2['default'].createElement(
228
+ 'div',
229
+ { className: prefixCls + '-time-picker' },
230
+ _react2['default'].createElement(
231
+ 'div',
232
+ { className: prefixCls + '-time-picker-panel' },
233
+ timePickerEle
234
+ )
235
+ ) : null,
236
+ _react2['default'].createElement(
237
+ 'div',
238
+ { className: prefixCls + '-body' },
239
+ _react2['default'].createElement(_DateTable2['default'], {
240
+ locale: locale,
241
+ value: value,
242
+ selectedValue: selectedValue,
243
+ prefixCls: prefixCls,
244
+ dateRender: props.dateRender,
245
+ onSelect: this.onDateTableSelect,
246
+ disabledDate: disabledDate,
247
+ showWeekNumber: props.showWeekNumber
248
+ })
249
+ ),
250
+ _react2['default'].createElement(_CalendarFooter2['default'], {
251
+ showOk: props.showOk,
252
+ mode: mode,
253
+ renderFooter: props.renderFooter,
254
+ locale: locale,
255
+ prefixCls: prefixCls,
256
+ showToday: props.showToday,
257
+ disabledTime: disabledTime,
258
+ showTimePicker: showTimePicker,
259
+ showDateInput: props.showDateInput,
260
+ timePicker: timePicker,
261
+ selectedValue: selectedValue,
262
+ value: value,
263
+ disabledDate: disabledDate,
264
+ okDisabled: props.showOk !== false && (!selectedValue || !this.isAllowedDate(selectedValue)),
265
+ onOk: this.onOk,
266
+ onSelect: this.onSelect,
267
+ onToday: this.onToday,
268
+ onOpenTimePicker: this.openTimePicker,
269
+ onCloseTimePicker: this.closeTimePicker
270
+ })
271
+ ),
272
+ showHourAndMinute && _react2['default'].createElement(_CalendarRightPanel2['default'], {
273
+ prefixCls: prefixCls,
274
+ value: value,
275
+ locale: locale,
276
+ onSelect: this.onDateTableSelect,
277
+ onClickRightPanelTime: onClickRightPanelTime,
278
+ defaultMinutesTime: this.props.defaultMinutesTime
279
+ })
280
+ )
281
+ ));
282
+
283
+ return this.renderRoot({
284
+ children: children,
285
+ className: props.showWeekNumber ? prefixCls + '-week-number' : ''
286
+ });
287
+ };
288
+
289
+ return Calendar;
290
+ }(_react2['default'].Component);
291
+
292
+ Calendar.propTypes = (0, _extends3['default'])({}, _CalendarMixin.calendarMixinPropTypes, _CommonMixin.propType, {
293
+ prefixCls: _propTypes2['default'].string,
294
+ className: _propTypes2['default'].string,
295
+ style: _propTypes2['default'].object,
296
+ defaultValue: _propTypes2['default'].object,
297
+ value: _propTypes2['default'].object,
298
+ selectedValue: _propTypes2['default'].object,
299
+ defaultSelectedValue: _propTypes2['default'].object,
300
+ mode: _propTypes2['default'].oneOf(['time', 'date', 'month', 'year', 'decade']),
301
+ locale: _propTypes2['default'].object,
302
+ showDateInput: _propTypes2['default'].bool,
303
+ showWeekNumber: _propTypes2['default'].bool,
304
+ showToday: _propTypes2['default'].bool,
305
+ showOk: _propTypes2['default'].bool,
306
+ showHourAndMinute: _propTypes2['default'].bool,
307
+ defaultMinutesTime: _propTypes2['default'].string,
308
+ onSelect: _propTypes2['default'].func,
309
+ onOk: _propTypes2['default'].func,
310
+ onKeyDown: _propTypes2['default'].func,
311
+ timePicker: _propTypes2['default'].element,
312
+ dateInputPlaceholder: _propTypes2['default'].any,
313
+ onClear: _propTypes2['default'].func,
314
+ onChange: _propTypes2['default'].func,
315
+ onPanelChange: _propTypes2['default'].func,
316
+ disabledDate: _propTypes2['default'].func,
317
+ disabledTime: _propTypes2['default'].any,
318
+ dateRender: _propTypes2['default'].func,
319
+ renderFooter: _propTypes2['default'].func,
320
+ renderSidebar: _propTypes2['default'].func,
321
+ clearIcon: _propTypes2['default'].node,
322
+ focusablePanel: _propTypes2['default'].bool,
323
+ inputMode: _propTypes2['default'].string,
324
+ onBlur: _propTypes2['default'].func,
325
+ onClickRightPanelTime: _propTypes2['default'].func
326
+ });
327
+ Calendar.defaultProps = (0, _extends3['default'])({}, _CalendarMixin.calendarMixinDefaultProps, _CommonMixin.defaultProp, {
328
+ showToday: true,
329
+ showDateInput: true,
330
+ showHourAndMinute: false,
331
+ timePicker: null,
332
+ onOk: noop,
333
+ onPanelChange: noop,
334
+ onClickRightPanelTime: noop,
335
+ focusablePanel: true
336
+ });
337
+
338
+ var _initialiseProps = function _initialiseProps() {
339
+ var _this2 = this;
340
+
341
+ this.onPanelChange = function (value, mode) {
342
+ var props = _this2.props,
343
+ state = _this2.state;
344
+
345
+ if (!('mode' in props)) {
346
+ _this2.setState({ mode: mode });
347
+ }
348
+ props.onPanelChange(value || state.value, mode);
349
+ };
350
+
351
+ this.onKeyDown = function (event) {
352
+ if (event.target.nodeName.toLowerCase() === 'input') {
353
+ return undefined;
354
+ }
355
+ var keyCode = event.keyCode;
356
+ // mac
357
+ var ctrlKey = event.ctrlKey || event.metaKey;
358
+ var disabledDate = _this2.props.disabledDate;
359
+ var value = _this2.state.value;
360
+
361
+ switch (keyCode) {
362
+ case _KeyCode2['default'].DOWN:
363
+ _this2.goTime(1, 'weeks');
364
+ event.preventDefault();
365
+ return 1;
366
+ case _KeyCode2['default'].UP:
367
+ _this2.goTime(-1, 'weeks');
368
+ event.preventDefault();
369
+ return 1;
370
+ case _KeyCode2['default'].LEFT:
371
+ if (ctrlKey) {
372
+ _this2.goTime(-1, 'years');
373
+ } else {
374
+ _this2.goTime(-1, 'days');
375
+ }
376
+ event.preventDefault();
377
+ return 1;
378
+ case _KeyCode2['default'].RIGHT:
379
+ if (ctrlKey) {
380
+ _this2.goTime(1, 'years');
381
+ } else {
382
+ _this2.goTime(1, 'days');
383
+ }
384
+ event.preventDefault();
385
+ return 1;
386
+ case _KeyCode2['default'].HOME:
387
+ _this2.setValue((0, _toTime.goStartMonth)(_this2.state.value));
388
+ event.preventDefault();
389
+ return 1;
390
+ case _KeyCode2['default'].END:
391
+ _this2.setValue((0, _toTime.goEndMonth)(_this2.state.value));
392
+ event.preventDefault();
393
+ return 1;
394
+ case _KeyCode2['default'].PAGE_DOWN:
395
+ _this2.goTime(1, 'month');
396
+ event.preventDefault();
397
+ return 1;
398
+ case _KeyCode2['default'].PAGE_UP:
399
+ _this2.goTime(-1, 'month');
400
+ event.preventDefault();
401
+ return 1;
402
+ case _KeyCode2['default'].ENTER:
403
+ if (!disabledDate || !disabledDate(value)) {
404
+ _this2.onSelect(value, {
405
+ source: 'keyboard'
406
+ });
407
+ }
408
+ event.preventDefault();
409
+ return 1;
410
+ default:
411
+ _this2.props.onKeyDown(event);
412
+ return 1;
413
+ }
414
+ };
415
+
416
+ this.onClear = function () {
417
+ _this2.onSelect(null);
418
+ _this2.props.onClear();
419
+ };
420
+
421
+ this.onOk = function () {
422
+ var selectedValue = _this2.state.selectedValue;
423
+
424
+ if (_this2.isAllowedDate(selectedValue)) {
425
+ _this2.props.onOk(selectedValue);
426
+ }
427
+ };
428
+
429
+ this.onDateInputChange = function (value) {
430
+ _this2.onSelect(value, {
431
+ source: 'dateInput'
432
+ });
433
+ };
434
+
435
+ this.onDateInputSelect = function (value) {
436
+ _this2.onSelect(value, {
437
+ source: 'dateInputSelect'
438
+ });
439
+ };
440
+
441
+ this.onDateTableSelect = function (value) {
442
+ var timePicker = _this2.props.timePicker;
443
+ var selectedValue = _this2.state.selectedValue;
444
+
445
+ if (!selectedValue && timePicker) {
446
+ var timePickerDefaultValue = timePicker.props.defaultValue;
447
+ if (timePickerDefaultValue) {
448
+ (0, _util.syncTime)(timePickerDefaultValue, value);
449
+ }
450
+ }
451
+ _this2.onSelect(value);
452
+ };
453
+
454
+ this.onToday = function () {
455
+ var value = _this2.state.value;
456
+
457
+ var now = (0, _util.getTodayTime)(value);
458
+ _this2.onSelect(now, {
459
+ source: 'todayButton'
460
+ });
461
+ };
462
+
463
+ this.onBlur = function (event) {
464
+ setTimeout(function () {
465
+ var dateInput = _DateInput2['default'].getInstance();
466
+ var rootInstance = _this2.rootInstance;
467
+
468
+ if (!rootInstance || rootInstance.contains(document.activeElement) || dateInput && dateInput.contains(document.activeElement)) {
469
+ // focused element is still part of Calendar
470
+ return;
471
+ }
472
+
473
+ if (_this2.props.onBlur) {
474
+ _this2.props.onBlur(event);
475
+ }
476
+ }, 0);
477
+ };
478
+
479
+ this.getRootDOMNode = function () {
480
+ return _reactDom2['default'].findDOMNode(_this2);
481
+ };
482
+
483
+ this.openTimePicker = function () {
484
+ _this2.onPanelChange(null, 'time');
485
+ };
486
+
487
+ this.closeTimePicker = function () {
488
+ _this2.onPanelChange(null, 'date');
489
+ };
490
+
491
+ this.goTime = function (direction, unit) {
492
+ _this2.setValue((0, _toTime.goTime)(_this2.state.value, direction, unit));
493
+ };
494
+ };
495
+
496
+ (0, _reactLifecyclesCompat.polyfill)(Calendar);
497
+
498
+ exports['default'] = (0, _CalendarMixin.calendarMixinWrapper)((0, _CommonMixin.commonMixinWrapper)(Calendar));
499
+ module.exports = exports['default'];