UNPKG

6.79 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5var _typeof = require("@babel/runtime/helpers/typeof");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports["default"] = void 0;
11
12var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
14var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
16var React = _interopRequireWildcard(require("react"));
17
18var _select = _interopRequireDefault(require("../select"));
19
20var _radio = require("../radio");
21
22function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
24function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
26var YearSelectOffset = 10;
27var YearSelectTotal = 20;
28
29function YearSelect(props) {
30 var fullscreen = props.fullscreen,
31 validRange = props.validRange,
32 generateConfig = props.generateConfig,
33 locale = props.locale,
34 prefixCls = props.prefixCls,
35 value = props.value,
36 _onChange = props.onChange,
37 divRef = props.divRef;
38 var year = generateConfig.getYear(value || generateConfig.getNow());
39 var start = year - YearSelectOffset;
40 var end = start + YearSelectTotal;
41
42 if (validRange) {
43 start = generateConfig.getYear(validRange[0]);
44 end = generateConfig.getYear(validRange[1]) + 1;
45 }
46
47 var suffix = locale && locale.year === '年' ? '年' : '';
48 var options = [];
49
50 for (var index = start; index < end; index++) {
51 options.push({
52 label: "".concat(index).concat(suffix),
53 value: index
54 });
55 }
56
57 return /*#__PURE__*/React.createElement(_select["default"], {
58 size: fullscreen ? undefined : 'small',
59 options: options,
60 value: year,
61 className: "".concat(prefixCls, "-year-select"),
62 onChange: function onChange(numYear) {
63 var newDate = generateConfig.setYear(value, numYear);
64
65 if (validRange) {
66 var _validRange = (0, _slicedToArray2["default"])(validRange, 2),
67 startDate = _validRange[0],
68 endDate = _validRange[1];
69
70 var newYear = generateConfig.getYear(newDate);
71 var newMonth = generateConfig.getMonth(newDate);
72
73 if (newYear === generateConfig.getYear(endDate) && newMonth > generateConfig.getMonth(endDate)) {
74 newDate = generateConfig.setMonth(newDate, generateConfig.getMonth(endDate));
75 }
76
77 if (newYear === generateConfig.getYear(startDate) && newMonth < generateConfig.getMonth(startDate)) {
78 newDate = generateConfig.setMonth(newDate, generateConfig.getMonth(startDate));
79 }
80 }
81
82 _onChange(newDate);
83 },
84 getPopupContainer: function getPopupContainer() {
85 return divRef.current;
86 }
87 });
88}
89
90function MonthSelect(props) {
91 var prefixCls = props.prefixCls,
92 fullscreen = props.fullscreen,
93 validRange = props.validRange,
94 value = props.value,
95 generateConfig = props.generateConfig,
96 locale = props.locale,
97 _onChange2 = props.onChange,
98 divRef = props.divRef;
99 var month = generateConfig.getMonth(value || generateConfig.getNow());
100 var start = 0;
101 var end = 11;
102
103 if (validRange) {
104 var _validRange2 = (0, _slicedToArray2["default"])(validRange, 2),
105 rangeStart = _validRange2[0],
106 rangeEnd = _validRange2[1];
107
108 var currentYear = generateConfig.getYear(value);
109
110 if (generateConfig.getYear(rangeEnd) === currentYear) {
111 end = generateConfig.getMonth(rangeEnd);
112 }
113
114 if (generateConfig.getYear(rangeStart) === currentYear) {
115 start = generateConfig.getMonth(rangeStart);
116 }
117 }
118
119 var months = locale.shortMonths || generateConfig.locale.getShortMonths(locale.locale);
120 var options = [];
121
122 for (var index = start; index <= end; index += 1) {
123 options.push({
124 label: months[index],
125 value: index
126 });
127 }
128
129 return /*#__PURE__*/React.createElement(_select["default"], {
130 size: fullscreen ? undefined : 'small',
131 className: "".concat(prefixCls, "-month-select"),
132 value: month,
133 options: options,
134 onChange: function onChange(newMonth) {
135 _onChange2(generateConfig.setMonth(value, newMonth));
136 },
137 getPopupContainer: function getPopupContainer() {
138 return divRef.current;
139 }
140 });
141}
142
143function ModeSwitch(props) {
144 var prefixCls = props.prefixCls,
145 locale = props.locale,
146 mode = props.mode,
147 fullscreen = props.fullscreen,
148 onModeChange = props.onModeChange;
149 return /*#__PURE__*/React.createElement(_radio.Group, {
150 onChange: function onChange(_ref) {
151 var value = _ref.target.value;
152 onModeChange(value);
153 },
154 value: mode,
155 size: fullscreen ? undefined : 'small',
156 className: "".concat(prefixCls, "-mode-switch")
157 }, /*#__PURE__*/React.createElement(_radio.Button, {
158 value: "month"
159 }, locale.month), /*#__PURE__*/React.createElement(_radio.Button, {
160 value: "year"
161 }, locale.year));
162}
163
164function CalendarHeader(props) {
165 var prefixCls = props.prefixCls,
166 fullscreen = props.fullscreen,
167 mode = props.mode,
168 onChange = props.onChange,
169 onModeChange = props.onModeChange;
170 var divRef = React.useRef(null);
171 var sharedProps = (0, _extends2["default"])((0, _extends2["default"])({}, props), {
172 onChange: onChange,
173 fullscreen: fullscreen,
174 divRef: divRef
175 });
176 return /*#__PURE__*/React.createElement("div", {
177 className: "".concat(prefixCls, "-header"),
178 ref: divRef
179 }, /*#__PURE__*/React.createElement(YearSelect, sharedProps), mode === 'month' && /*#__PURE__*/React.createElement(MonthSelect, sharedProps), /*#__PURE__*/React.createElement(ModeSwitch, (0, _extends2["default"])({}, sharedProps, {
180 onModeChange: onModeChange
181 })));
182}
183
184var _default = CalendarHeader;
185exports["default"] = _default;
\No newline at end of file