UNPKG

6.67 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4
5var _extends2 = require('babel-runtime/helpers/extends');
6
7var _extends3 = _interopRequireDefault(_extends2);
8
9var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
10
11var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
12
13var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
14
15var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
16
17var _inherits2 = require('babel-runtime/helpers/inherits');
18
19var _inherits3 = _interopRequireDefault(_inherits2);
20
21var _react = require('react');
22
23var _react2 = _interopRequireDefault(_react);
24
25var _propTypes = require('prop-types');
26
27var _propTypes2 = _interopRequireDefault(_propTypes);
28
29var _reactLifecyclesCompat = require('react-lifecycles-compat');
30
31var _DateTable = require('./date/DateTable');
32
33var _DateTable2 = _interopRequireDefault(_DateTable);
34
35var _MonthTable = require('./month/MonthTable');
36
37var _MonthTable2 = _interopRequireDefault(_MonthTable);
38
39var _CalendarMixin = require('./mixin/CalendarMixin');
40
41var _CommonMixin = require('./mixin/CommonMixin');
42
43var _CalendarHeader = require('./full-calendar/CalendarHeader');
44
45var _CalendarHeader2 = _interopRequireDefault(_CalendarHeader);
46
47var _moment = require('moment');
48
49var _moment2 = _interopRequireDefault(_moment);
50
51function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
52
53var FullCalendar = function (_React$Component) {
54 (0, _inherits3['default'])(FullCalendar, _React$Component);
55
56 function FullCalendar(props) {
57 (0, _classCallCheck3['default'])(this, FullCalendar);
58
59 var _this = (0, _possibleConstructorReturn3['default'])(this, _React$Component.call(this, props));
60
61 _initialiseProps.call(_this);
62
63 var type = void 0;
64 if ('type' in props) {
65 type = props.type;
66 } else {
67 type = props.defaultType;
68 }
69
70 _this.state = {
71 type: type,
72 value: props.value || props.defaultValue || (0, _moment2['default'])(),
73 selectedValue: props.selectedValue || props.defaultSelectedValue
74 };
75 return _this;
76 }
77
78 FullCalendar.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, state) {
79 var newState = {};
80 var value = nextProps.value,
81 selectedValue = nextProps.selectedValue;
82
83
84 if ('type' in nextProps) {
85 newState = {
86 type: nextProps.type
87 };
88 }
89 if ('value' in nextProps) {
90 newState.value = value || nextProps.defaultValue || (0, _CalendarMixin.getNowByCurrentStateValue)(state.value);
91 }
92 if ('selectedValue' in nextProps) {
93 newState.selectedValue = selectedValue;
94 }
95
96 return newState;
97 };
98
99 FullCalendar.prototype.render = function render() {
100 var props = this.props;
101 var locale = props.locale,
102 prefixCls = props.prefixCls,
103 fullscreen = props.fullscreen,
104 showHeader = props.showHeader,
105 headerComponent = props.headerComponent,
106 headerRender = props.headerRender,
107 disabledDate = props.disabledDate;
108 var _state = this.state,
109 value = _state.value,
110 type = _state.type;
111
112
113 var header = null;
114 if (showHeader) {
115 if (headerRender) {
116 header = headerRender(value, type, locale);
117 } else {
118 var TheHeader = headerComponent || _CalendarHeader2['default'];
119 header = _react2['default'].createElement(TheHeader, (0, _extends3['default'])({
120 key: 'calendar-header'
121 }, props, {
122 prefixCls: prefixCls + '-full',
123 type: type,
124 value: value,
125 onTypeChange: this.setType,
126 onValueChange: this.setValue
127 }));
128 }
129 }
130
131 var table = type === 'date' ? _react2['default'].createElement(_DateTable2['default'], {
132 dateRender: props.dateCellRender,
133 contentRender: props.dateCellContentRender,
134 locale: locale,
135 prefixCls: prefixCls,
136 onSelect: this.onSelect,
137 value: value,
138 disabledDate: disabledDate
139 }) : _react2['default'].createElement(_MonthTable2['default'], {
140 cellRender: props.monthCellRender,
141 contentRender: props.monthCellContentRender,
142 locale: locale,
143 onSelect: this.onMonthSelect,
144 prefixCls: prefixCls + '-month-panel',
145 value: value,
146 disabledDate: disabledDate
147 });
148
149 var children = [header, _react2['default'].createElement(
150 'div',
151 { key: 'calendar-body', className: prefixCls + '-calendar-body' },
152 table
153 )];
154
155 var className = [prefixCls + '-full'];
156
157 if (fullscreen) {
158 className.push(prefixCls + '-fullscreen');
159 }
160
161 return this.renderRoot({
162 children: children,
163 className: className.join(' ')
164 });
165 };
166
167 return FullCalendar;
168}(_react2['default'].Component);
169
170FullCalendar.propTypes = (0, _extends3['default'])({}, _CalendarMixin.calendarMixinPropTypes, _CommonMixin.propType, {
171 defaultType: _propTypes2['default'].string,
172 type: _propTypes2['default'].string,
173 prefixCls: _propTypes2['default'].string,
174 locale: _propTypes2['default'].object,
175 onTypeChange: _propTypes2['default'].func,
176 fullscreen: _propTypes2['default'].bool,
177 monthCellRender: _propTypes2['default'].func,
178 dateCellRender: _propTypes2['default'].func,
179 showTypeSwitch: _propTypes2['default'].bool,
180 Select: _propTypes2['default'].func.isRequired,
181 headerComponents: _propTypes2['default'].array,
182 headerComponent: _propTypes2['default'].object, // The whole header component
183 headerRender: _propTypes2['default'].func,
184 showHeader: _propTypes2['default'].bool,
185 disabledDate: _propTypes2['default'].func,
186 value: _propTypes2['default'].object,
187 defaultValue: _propTypes2['default'].object,
188 selectedValue: _propTypes2['default'].object,
189 defaultSelectedValue: _propTypes2['default'].object
190});
191FullCalendar.defaultProps = (0, _extends3['default'])({}, _CalendarMixin.calendarMixinDefaultProps, _CommonMixin.defaultProp, {
192 defaultType: 'date',
193 fullscreen: false,
194 showTypeSwitch: true,
195 showHeader: true,
196 onTypeChange: function onTypeChange() {}
197});
198
199var _initialiseProps = function _initialiseProps() {
200 var _this2 = this;
201
202 this.onMonthSelect = function (value) {
203 _this2.onSelect(value, {
204 target: 'month'
205 });
206 };
207
208 this.setType = function (type) {
209 if (!('type' in _this2.props)) {
210 _this2.setState({
211 type: type
212 });
213 }
214 _this2.props.onTypeChange(type);
215 };
216};
217
218(0, _reactLifecyclesCompat.polyfill)(FullCalendar);
219
220exports['default'] = (0, _CalendarMixin.calendarMixinWrapper)((0, _CommonMixin.commonMixinWrapper)(FullCalendar));
221module.exports = exports['default'];
\No newline at end of file