react-dropdown-date 2.3.1 → 2.4.0

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.
package/dist/index.esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
 
3
- /*! *****************************************************************************
3
+ /******************************************************************************
4
4
  Copyright (c) Microsoft Corporation.
5
5
 
6
6
  Permission to use, copy, modify, and/or distribute this software for any
@@ -14,7 +14,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
14
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
15
  PERFORMANCE OF THIS SOFTWARE.
16
16
  ***************************************************************************** */
17
- /* global Reflect, Promise */
17
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
18
18
 
19
19
  var extendStatics = function(d, b) {
20
20
  extendStatics = Object.setPrototypeOf ||
@@ -24,415 +24,422 @@ var extendStatics = function(d, b) {
24
24
  };
25
25
 
26
26
  function __extends(d, b) {
27
+ if (typeof b !== "function" && b !== null)
28
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
27
29
  extendStatics(d, b);
28
30
  function __() { this.constructor = d; }
29
31
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30
- }
32
+ }
33
+
34
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
35
+ var e = new Error(message);
36
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
37
+ };
31
38
 
32
- var YearPicker = /** @class */ (function (_super) {
33
- __extends(YearPicker, _super);
34
- function YearPicker() {
35
- var _this = _super !== null && _super.apply(this, arguments) || this;
36
- _this.renderYearOptions = function () {
37
- var _a = _this.props, start = _a.start, end = _a.end, reverse = _a.reverse, optionClasses = _a.optionClasses, defaultValue = _a.defaultValue;
38
- var startYear = start || 1900;
39
- var endYear = end || new Date().getFullYear();
40
- var years = [];
41
- if (startYear <= endYear) {
42
- for (var i = startYear; i <= endYear; ++i) {
43
- years.push(i);
44
- }
45
- }
46
- else {
47
- for (var i = endYear; i >= startYear; --i) {
48
- years.push(i);
49
- }
50
- }
51
- if (reverse) {
52
- years.reverse();
53
- }
54
- var yearOptions = [];
55
- yearOptions.push(React.createElement("option", { value: "", key: -1, className: optionClasses }, defaultValue ? defaultValue : ''));
56
- years.forEach(function (year, index) {
57
- yearOptions.push(React.createElement("option", { value: year, key: index, className: optionClasses }, year));
58
- });
59
- return yearOptions;
60
- };
61
- _this.handleSelectionChange = function (e) { return _this.props.onChange(e.target.value); };
62
- _this.render = function () {
63
- var _a = _this.props, id = _a.id, name = _a.name, classes = _a.classes, required = _a.required, disabled = _a.disabled, value = _a.value;
64
- return (React.createElement("select", { id: id, name: name, className: classes, required: required === true, disabled: disabled === true, onChange: _this.handleSelectionChange, value: value }, _this.renderYearOptions()));
65
- };
66
- return _this;
67
- }
68
- return YearPicker;
39
+ var YearPicker = /** @class */ (function (_super) {
40
+ __extends(YearPicker, _super);
41
+ function YearPicker() {
42
+ var _this = _super !== null && _super.apply(this, arguments) || this;
43
+ _this.renderYearOptions = function () {
44
+ var _a = _this.props, start = _a.start, end = _a.end, reverse = _a.reverse, optionClasses = _a.optionClasses, defaultValue = _a.defaultValue;
45
+ var startYear = start || 1900;
46
+ var endYear = end || new Date().getFullYear();
47
+ var years = [];
48
+ if (startYear <= endYear) {
49
+ for (var i = startYear; i <= endYear; ++i) {
50
+ years.push(i);
51
+ }
52
+ }
53
+ else {
54
+ for (var i = endYear; i >= startYear; --i) {
55
+ years.push(i);
56
+ }
57
+ }
58
+ if (reverse) {
59
+ years.reverse();
60
+ }
61
+ var yearOptions = [];
62
+ yearOptions.push(React.createElement("option", { value: "", key: -1, className: optionClasses }, defaultValue ? defaultValue : ''));
63
+ years.forEach(function (year, index) {
64
+ yearOptions.push(React.createElement("option", { value: year, key: index, className: optionClasses }, year));
65
+ });
66
+ return yearOptions;
67
+ };
68
+ _this.handleSelectionChange = function (e) { return _this.props.onChange(e.target.value); };
69
+ _this.render = function () {
70
+ var _a = _this.props, id = _a.id, name = _a.name, classes = _a.classes, required = _a.required, disabled = _a.disabled, value = _a.value;
71
+ return (React.createElement("select", { id: id, name: name, className: classes, required: required === true, disabled: disabled === true, onChange: _this.handleSelectionChange, value: value }, _this.renderYearOptions()));
72
+ };
73
+ return _this;
74
+ }
75
+ return YearPicker;
69
76
  }(React.Component));
70
77
 
71
- var monthByNumber = {
72
- 0: 'January',
73
- 1: 'February',
74
- 2: 'March',
75
- 3: 'April',
76
- 4: 'May',
77
- 5: 'June',
78
- 6: 'July',
79
- 7: 'August',
80
- 8: 'September',
81
- 9: 'October',
82
- 10: 'November',
83
- 11: 'December'
84
- };
85
- var getDaysInMonth = function (year, month) {
86
- year = +(year);
87
- month = +(month) + 1;
88
- return new Date(year, month, 0).getDate();
78
+ var monthByNumber = {
79
+ 0: 'January',
80
+ 1: 'February',
81
+ 2: 'March',
82
+ 3: 'April',
83
+ 4: 'May',
84
+ 5: 'June',
85
+ 6: 'July',
86
+ 7: 'August',
87
+ 8: 'September',
88
+ 9: 'October',
89
+ 10: 'November',
90
+ 11: 'December'
91
+ };
92
+ var getDaysInMonth = function (year, month) {
93
+ year = +(year);
94
+ month = +(month) + 1;
95
+ return new Date(year, month, 0).getDate();
89
96
  };
90
97
 
91
- var MonthPicker = /** @class */ (function (_super) {
92
- __extends(MonthPicker, _super);
93
- function MonthPicker() {
94
- var _this = _super !== null && _super.apply(this, arguments) || this;
95
- _this.renderMonthOptions = function () {
96
- var _a = _this.props, endYearGiven = _a.endYearGiven, year = _a.year, numeric = _a.numeric, caps = _a.caps, short = _a.short, optionClasses = _a.optionClasses, defaultValue = _a.defaultValue, localizedMonths = _a.localizedMonths;
97
- var today = new Date();
98
- var months = [];
99
- var month = 11;
100
- var localizedMonthOptions = (localizedMonths && Object.entries(localizedMonths).length > 0) ? localizedMonths : monthByNumber;
101
- if (!endYearGiven) {
102
- if (year && parseInt(year.toString()) === today.getFullYear()) {
103
- month = today.getMonth();
104
- }
105
- }
106
- if (numeric) {
107
- for (var i = 0; i <= month; ++i) {
108
- months.push((i + 1).toString());
109
- }
110
- }
111
- else {
112
- for (var i = 0; i <= month; ++i) {
113
- months.push(localizedMonthOptions[i]);
114
- }
115
- if (caps) {
116
- months = months.map(function (month) { return month.toUpperCase(); });
117
- }
118
- if (short) {
119
- months = months.map(function (month) { return month.substring(0, 3); });
120
- }
121
- }
122
- var monthOptions = [];
123
- monthOptions.push(React.createElement("option", { value: "", key: -1, className: optionClasses }, defaultValue ? defaultValue : ''));
124
- months.forEach(function (month, index) {
125
- monthOptions.push(React.createElement("option", { value: index, key: index, className: optionClasses }, month));
126
- });
127
- return monthOptions;
128
- };
129
- _this.handleSelectionChange = function (e) { return _this.props.onChange(e.target.value); };
130
- _this.render = function () {
131
- var _a = _this.props, id = _a.id, name = _a.name, classes = _a.classes, required = _a.required, disabled = _a.disabled, value = _a.value;
132
- return (React.createElement("select", { id: id, name: name, className: classes, required: required === true, disabled: disabled === true, value: value, onChange: _this.handleSelectionChange }, _this.renderMonthOptions()));
133
- };
134
- return _this;
135
- }
136
- return MonthPicker;
98
+ var MonthPicker = /** @class */ (function (_super) {
99
+ __extends(MonthPicker, _super);
100
+ function MonthPicker() {
101
+ var _this = _super !== null && _super.apply(this, arguments) || this;
102
+ _this.renderMonthOptions = function () {
103
+ var _a = _this.props, endYearGiven = _a.endYearGiven, year = _a.year, numeric = _a.numeric, caps = _a.caps, short = _a.short, optionClasses = _a.optionClasses, defaultValue = _a.defaultValue, localizedMonths = _a.localizedMonths;
104
+ var today = new Date();
105
+ var months = [];
106
+ var month = 11;
107
+ var localizedMonthOptions = (localizedMonths && Object.entries(localizedMonths).length > 0) ? localizedMonths : monthByNumber;
108
+ if (!endYearGiven) {
109
+ if (year && parseInt(year.toString()) === today.getFullYear()) {
110
+ month = today.getMonth();
111
+ }
112
+ }
113
+ if (numeric) {
114
+ for (var i = 0; i <= month; ++i) {
115
+ months.push((i + 1).toString());
116
+ }
117
+ }
118
+ else {
119
+ for (var i = 0; i <= month; ++i) {
120
+ months.push(localizedMonthOptions[i]);
121
+ }
122
+ if (caps) {
123
+ months = months.map(function (month) { return month.toUpperCase(); });
124
+ }
125
+ if (short) {
126
+ months = months.map(function (month) { return month.substring(0, 3); });
127
+ }
128
+ }
129
+ var monthOptions = [];
130
+ monthOptions.push(React.createElement("option", { value: "", key: -1, className: optionClasses }, defaultValue ? defaultValue : ''));
131
+ months.forEach(function (month, index) {
132
+ monthOptions.push(React.createElement("option", { value: index, key: index, className: optionClasses }, month));
133
+ });
134
+ return monthOptions;
135
+ };
136
+ _this.handleSelectionChange = function (e) { return _this.props.onChange(e.target.value); };
137
+ _this.render = function () {
138
+ var _a = _this.props, id = _a.id, name = _a.name, classes = _a.classes, required = _a.required, disabled = _a.disabled, value = _a.value;
139
+ return (React.createElement("select", { id: id, name: name, className: classes, required: required === true, disabled: disabled === true, value: value, onChange: _this.handleSelectionChange }, _this.renderMonthOptions()));
140
+ };
141
+ return _this;
142
+ }
143
+ return MonthPicker;
137
144
  }(React.Component));
138
145
 
139
- var DayPicker = /** @class */ (function (_super) {
140
- __extends(DayPicker, _super);
141
- function DayPicker() {
142
- var _this = _super !== null && _super.apply(this, arguments) || this;
143
- _this.renderDayOptions = function () {
144
- var _a = _this.props, month = _a.month, year = _a.year, endYearGiven = _a.endYearGiven, optionClasses = _a.optionClasses, defaultValue = _a.defaultValue;
145
- var days = month ? getDaysInMonth(year, month) : 31;
146
- var today = new Date();
147
- if (!endYearGiven) {
148
- if (year === today.getFullYear() && month === today.getMonth()) {
149
- days = today.getDate();
150
- }
151
- }
152
- var dayOptions = [];
153
- dayOptions.push(React.createElement("option", { value: "", key: -1, className: optionClasses }, defaultValue ? defaultValue : ''));
154
- for (var i = 1; i <= days; ++i) {
155
- dayOptions.push(React.createElement("option", { value: i, key: i, className: optionClasses }, i));
156
- }
157
- return dayOptions;
158
- };
159
- _this.handleSelectionChange = function (e) { return _this.props.onChange(e.target.value); };
160
- _this.render = function () {
161
- var _a = _this.props, id = _a.id, name = _a.name, classes = _a.classes, required = _a.required, disabled = _a.disabled, value = _a.value;
162
- return (React.createElement("select", { id: id, name: name, className: classes, onChange: _this.handleSelectionChange, required: required === true, disabled: disabled === true, value: value }, _this.renderDayOptions()));
163
- };
164
- return _this;
165
- }
166
- return DayPicker;
146
+ var DayPicker = /** @class */ (function (_super) {
147
+ __extends(DayPicker, _super);
148
+ function DayPicker() {
149
+ var _this = _super !== null && _super.apply(this, arguments) || this;
150
+ _this.renderDayOptions = function () {
151
+ var _a = _this.props, month = _a.month, year = _a.year, endYearGiven = _a.endYearGiven, optionClasses = _a.optionClasses, defaultValue = _a.defaultValue;
152
+ var days = month ? getDaysInMonth(year, month) : 31;
153
+ var today = new Date();
154
+ if (!endYearGiven) {
155
+ if (year === today.getFullYear() && month === today.getMonth()) {
156
+ days = today.getDate();
157
+ }
158
+ }
159
+ var dayOptions = [];
160
+ dayOptions.push(React.createElement("option", { value: "", key: -1, className: optionClasses }, defaultValue ? defaultValue : ''));
161
+ for (var i = 1; i <= days; ++i) {
162
+ dayOptions.push(React.createElement("option", { value: i, key: i, className: optionClasses }, i));
163
+ }
164
+ return dayOptions;
165
+ };
166
+ _this.handleSelectionChange = function (e) { return _this.props.onChange(e.target.value); };
167
+ _this.render = function () {
168
+ var _a = _this.props, id = _a.id, name = _a.name, classes = _a.classes, required = _a.required, disabled = _a.disabled, value = _a.value;
169
+ return (React.createElement("select", { id: id, name: name, className: classes, onChange: _this.handleSelectionChange, required: required === true, disabled: disabled === true, value: value }, _this.renderDayOptions()));
170
+ };
171
+ return _this;
172
+ }
173
+ return DayPicker;
167
174
  }(React.Component));
168
175
 
169
- var DropdownComponent;
170
- (function (DropdownComponent) {
171
- DropdownComponent["year"] = "year";
172
- DropdownComponent["month"] = "month";
173
- DropdownComponent["day"] = "day";
174
- })(DropdownComponent || (DropdownComponent = {}));
175
- var DropdownDate = /** @class */ (function (_super) {
176
- __extends(DropdownDate, _super);
177
- function DropdownDate(props) {
178
- var _this = _super.call(this, props) || this;
179
- _this.handleDateChange = function (type, value) {
180
- if (_this.props.onDateChange) {
181
- var _a = _this.state, selectedYear = _a.selectedYear, selectedMonth = _a.selectedMonth, selectedDay = _a.selectedDay;
182
- if (type === DropdownComponent.year) {
183
- selectedYear = value;
184
- }
185
- else if (type === DropdownComponent.month) {
186
- selectedMonth = value;
187
- }
188
- else if (type === DropdownComponent.day) {
189
- selectedDay = value;
190
- }
191
- if (selectedYear !== -1 && selectedMonth !== -1 && selectedDay !== -1) {
192
- _this.props.onDateChange(new Date(selectedYear, selectedMonth, selectedDay));
193
- }
194
- }
195
- };
196
- _this.handleYearChange = function (e) {
197
- var year = parseInt(e.target.value);
198
- _this.setState({ selectedYear: year });
199
- if (_this.props.onYearChange) {
200
- _this.props.onYearChange(year);
201
- }
202
- _this.handleDateChange(DropdownComponent.year, year);
203
- };
204
- _this.handleMonthChange = function (e) {
205
- var month = parseInt(e.target.value);
206
- _this.setState({ selectedMonth: month });
207
- if (_this.props.onMonthChange) {
208
- _this.props.onMonthChange(_this.localizedMonthOptions[month]);
209
- }
210
- _this.handleDateChange(DropdownComponent.month, month);
211
- };
212
- _this.handleDayChange = function (e) {
213
- var day = parseInt(e.target.value);
214
- _this.setState({ selectedDay: day });
215
- if (_this.props.onDayChange) {
216
- _this.props.onDayChange(day);
217
- }
218
- _this.handleDateChange(DropdownComponent.day, day);
219
- };
220
- _this.renderYear = function () {
221
- var _a = _this.props, classes = _a.classes, ids = _a.ids, names = _a.names;
222
- return (React.createElement("div", { key: "year", id: "dropdown-year", className: (classes && classes.yearContainer) ? classes.yearContainer : undefined },
223
- React.createElement("select", { id: (ids && ids.year) ? ids.year : undefined, name: (names && names.year) ? names.year : undefined, className: (classes && classes.year) ? classes.year : undefined, onChange: _this.handleYearChange, value: _this.state.selectedYear }, _this.generateYearOptions())));
224
- };
225
- _this.renderMonth = function () {
226
- var _a = _this.props, classes = _a.classes, ids = _a.ids, names = _a.names;
227
- return (React.createElement("div", { key: "month", id: "dropdown-month", className: (classes && classes.monthContainer) ? classes.monthContainer : undefined },
228
- React.createElement("select", { id: (ids && ids.month) ? ids.month : undefined, name: (names && names.month) ? names.month : undefined, className: (classes && classes.month) ? classes.month : undefined, onChange: _this.handleMonthChange, value: _this.state.selectedMonth }, _this.generateMonthOptions())));
229
- };
230
- _this.renderDay = function () {
231
- var _a = _this.props, classes = _a.classes, ids = _a.ids, names = _a.names;
232
- return (React.createElement("div", { key: "day", id: "dropdown-day", className: (classes && classes.dayContainer) ? classes.dayContainer : undefined },
233
- React.createElement("select", { id: (ids && ids.day) ? ids.day : undefined, name: (names && names.day) ? names.day : undefined, className: (classes && classes.day) ? classes.day : undefined, onChange: _this.handleDayChange, value: _this.state.selectedDay }, _this.generateDayOptions())));
234
- };
235
- _this.render = function () {
236
- var classes = _this.props.classes;
237
- var order = _this.props.order;
238
- order = order || [DropdownComponent.year, DropdownComponent.month, DropdownComponent.day];
239
- return (React.createElement("div", { id: "dropdown-date", className: (classes && classes.dateContainer) ? classes.dateContainer : undefined }, order.map(function (part) {
240
- return _this.renderParts[part]();
241
- })));
242
- };
243
- var startDate = props.startDate, endDate = props.endDate, selectedDate = props.selectedDate;
244
- var sDate = startDate ? new Date(startDate) : new Date('1900-01-01');
245
- var eDate = endDate ? new Date(endDate) : new Date();
246
- var selDate = selectedDate ? new Date(selectedDate) : null;
247
- _this.state = {
248
- startYear: sDate.getFullYear(),
249
- startMonth: sDate.getMonth(),
250
- startDay: sDate.getDate(),
251
- endYear: eDate.getFullYear(),
252
- endMonth: eDate.getMonth(),
253
- endDay: eDate.getDate(),
254
- selectedYear: selDate ? selDate.getFullYear() : -1,
255
- selectedMonth: selDate ? selDate.getMonth() : -1,
256
- selectedDay: selDate ? selDate.getDate() : -1
257
- };
258
- _this.renderParts = {
259
- year: _this.renderYear,
260
- month: _this.renderMonth,
261
- day: _this.renderDay,
262
- };
263
- _this.localizedMonthOptions = _this.getLocalizedMonthOptions(props.localizedMonths);
264
- return _this;
265
- }
266
- DropdownDate.prototype.getLocalizedMonthOptions = function (localizedMonths) {
267
- return (localizedMonths && Object.entries(localizedMonths).length > 0) ? localizedMonths : monthByNumber;
268
- };
269
- DropdownDate.getDerivedStateFromProps = function (nextProps, prevState) {
270
- var selDate = nextProps.selectedDate ? new Date(nextProps.selectedDate) : null;
271
- var tempSelDate = {
272
- selectedYear: selDate ? selDate.getFullYear() : -1,
273
- selectedMonth: selDate ? selDate.getMonth() : -1,
274
- selectedDay: selDate ? selDate.getDate() : -1
275
- };
276
- if (tempSelDate.selectedYear !== prevState.selectedYear) {
277
- return { selectedYear: tempSelDate.selectedYear };
278
- }
279
- if (tempSelDate.selectedMonth !== prevState.selectedMonth) {
280
- return { selectedMonth: tempSelDate.selectedMonth };
281
- }
282
- if (tempSelDate.selectedDay !== prevState.selectedDay) {
283
- return { selectedDay: tempSelDate.selectedDay };
284
- }
285
- return null;
286
- };
287
- DropdownDate.prototype.componentDidUpdate = function (prevProps) {
288
- // Update localizedMonthOptions if localizedMonths prop changed
289
- if (prevProps.localizedMonths !== this.props.localizedMonths) {
290
- this.localizedMonthOptions = this.getLocalizedMonthOptions(this.props.localizedMonths);
291
- }
292
- };
293
- DropdownDate.prototype.generateYearOptions = function () {
294
- var _a = this.props, classes = _a.classes, options = _a.options, defaultValues = _a.defaultValues;
295
- var _b = this.state, startYear = _b.startYear, endYear = _b.endYear;
296
- var yearOptions = [];
297
- yearOptions.push(React.createElement("option", { key: -1, value: "-1", className: (classes && classes.yearOptions) ? classes.yearOptions : undefined }, (defaultValues && defaultValues.year) ? defaultValues.year : ''));
298
- if (options && options.yearReverse) {
299
- for (var i = endYear; i >= startYear; i--) {
300
- yearOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.yearOptions) ? classes.yearOptions : undefined }, i));
301
- }
302
- }
303
- else {
304
- for (var i = startYear; i <= endYear; i++) {
305
- yearOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.yearOptions) ? classes.yearOptions : undefined }, i));
306
- }
307
- }
308
- return yearOptions;
309
- };
310
- DropdownDate.prototype.generateMonthOptions = function () {
311
- var _a = this.props, classes = _a.classes, options = _a.options, defaultValues = _a.defaultValues;
312
- var _b = this.state, startMonth = _b.startMonth, endMonth = _b.endMonth, startYear = _b.startYear, endYear = _b.endYear, selectedYear = _b.selectedYear;
313
- var months = [];
314
- if (selectedYear === startYear && selectedYear === endYear) {
315
- for (var i = startMonth; i <= endMonth; i++) {
316
- months.push({
317
- value: i,
318
- month: this.localizedMonthOptions[i]
319
- });
320
- }
321
- }
322
- else if (selectedYear === startYear) {
323
- for (var i = startMonth; i <= 11; i++) {
324
- months.push({
325
- value: i,
326
- month: this.localizedMonthOptions[i]
327
- });
328
- }
329
- }
330
- else if (selectedYear === endYear) {
331
- for (var i = 0; i <= endMonth; i++) {
332
- months.push({
333
- value: i,
334
- month: this.localizedMonthOptions[i]
335
- });
336
- }
337
- }
338
- else {
339
- for (var i = 0; i <= 11; i++) {
340
- months.push({
341
- value: i,
342
- month: this.localizedMonthOptions[i]
343
- });
344
- }
345
- }
346
- if (options && options.monthShort) {
347
- months = months.map(function (elem) {
348
- return {
349
- value: elem.value,
350
- month: elem.month.substring(0, 3)
351
- };
352
- });
353
- }
354
- if (options && options.monthCaps) {
355
- months = months.map(function (elem) {
356
- return {
357
- value: elem.value,
358
- month: elem.month.toUpperCase()
359
- };
360
- });
361
- }
362
- var monthOptions = [];
363
- monthOptions.push(React.createElement("option", { key: -1, value: "-1", className: (classes && classes.monthOptions) ? classes.monthOptions : undefined }, (defaultValues && defaultValues.month) ? defaultValues.month : ''));
364
- months.forEach(function (elem) {
365
- monthOptions.push(React.createElement("option", { key: elem.value, value: elem.value, className: (classes && classes.monthOptions) ? classes.monthOptions : undefined }, elem.month));
366
- });
367
- return monthOptions;
368
- };
369
- DropdownDate.prototype.generateDayOptions = function () {
370
- var _a = this.props, classes = _a.classes, defaultValues = _a.defaultValues;
371
- var _b = this.state, startYear = _b.startYear, startMonth = _b.startMonth, startDay = _b.startDay, endYear = _b.endYear, endMonth = _b.endMonth, endDay = _b.endDay, selectedYear = _b.selectedYear, selectedMonth = _b.selectedMonth;
372
- var dayOptions = [];
373
- dayOptions.push(React.createElement("option", { key: -1, value: "-1", className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, (defaultValues && defaultValues.day) ? defaultValues.day : ''));
374
- var monthDays = getDaysInMonth(selectedYear, selectedMonth);
375
- if (selectedYear === startYear && selectedYear === endYear) {
376
- if (selectedMonth === startMonth && selectedMonth === endMonth) {
377
- for (var i = startDay; i <= endDay; i++) {
378
- dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
379
- }
380
- }
381
- else if (selectedMonth === startMonth) {
382
- for (var i = startDay; i <= monthDays; i++) {
383
- dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
384
- }
385
- }
386
- else if (selectedMonth === endMonth) {
387
- for (var i = 1; i <= endDay; i++) {
388
- dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
389
- }
390
- }
391
- else {
392
- for (var i = 1; i <= monthDays; i++) {
393
- dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
394
- }
395
- }
396
- }
397
- else if (selectedYear === startYear) {
398
- if (selectedMonth === startMonth) {
399
- for (var i = startDay; i <= monthDays; i++) {
400
- dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
401
- }
402
- }
403
- else {
404
- for (var i = 1; i <= monthDays; i++) {
405
- dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
406
- }
407
- }
408
- }
409
- else if (selectedYear === endYear) {
410
- if (selectedMonth === endMonth) {
411
- for (var i = 1; i <= endDay; i++) {
412
- dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
413
- }
414
- }
415
- else {
416
- for (var i = 1; i <= monthDays; i++) {
417
- dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
418
- }
419
- }
420
- }
421
- else {
422
- if (selectedMonth) {
423
- for (var i = 1; i <= monthDays; i++) {
424
- dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
425
- }
426
- }
427
- else {
428
- for (var i = 1; i <= 31; i++) {
429
- dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
430
- }
431
- }
432
- }
433
- return dayOptions;
434
- };
435
- return DropdownDate;
176
+ var DropdownComponent;
177
+ (function (DropdownComponent) {
178
+ DropdownComponent["year"] = "year";
179
+ DropdownComponent["month"] = "month";
180
+ DropdownComponent["day"] = "day";
181
+ })(DropdownComponent || (DropdownComponent = {}));
182
+ var DropdownDate = /** @class */ (function (_super) {
183
+ __extends(DropdownDate, _super);
184
+ function DropdownDate(props) {
185
+ var _this = _super.call(this, props) || this;
186
+ _this.handleDateChange = function (type, value) {
187
+ if (_this.props.onDateChange) {
188
+ var _a = _this.state, selectedYear = _a.selectedYear, selectedMonth = _a.selectedMonth, selectedDay = _a.selectedDay;
189
+ if (type === DropdownComponent.year) {
190
+ selectedYear = value;
191
+ }
192
+ else if (type === DropdownComponent.month) {
193
+ selectedMonth = value;
194
+ }
195
+ else if (type === DropdownComponent.day) {
196
+ selectedDay = value;
197
+ }
198
+ if (selectedYear !== -1 && selectedMonth !== -1 && selectedDay !== -1) {
199
+ _this.props.onDateChange(new Date(selectedYear, selectedMonth, selectedDay));
200
+ }
201
+ }
202
+ };
203
+ _this.handleYearChange = function (e) {
204
+ var year = parseInt(e.target.value);
205
+ _this.setState({ selectedYear: year });
206
+ if (_this.props.onYearChange) {
207
+ _this.props.onYearChange(year);
208
+ }
209
+ _this.handleDateChange(DropdownComponent.year, year);
210
+ };
211
+ _this.handleMonthChange = function (e) {
212
+ var month = parseInt(e.target.value);
213
+ _this.setState({ selectedMonth: month });
214
+ if (_this.props.onMonthChange) {
215
+ _this.props.onMonthChange(_this.localizedMonthOptions[month]);
216
+ }
217
+ _this.handleDateChange(DropdownComponent.month, month);
218
+ };
219
+ _this.handleDayChange = function (e) {
220
+ var day = parseInt(e.target.value);
221
+ _this.setState({ selectedDay: day });
222
+ if (_this.props.onDayChange) {
223
+ _this.props.onDayChange(day);
224
+ }
225
+ _this.handleDateChange(DropdownComponent.day, day);
226
+ };
227
+ _this.renderYear = function () {
228
+ var _a = _this.props, classes = _a.classes, ids = _a.ids, names = _a.names;
229
+ return (React.createElement("div", { key: "year", id: "dropdown-year", className: (classes && classes.yearContainer) ? classes.yearContainer : undefined },
230
+ React.createElement("select", { id: (ids && ids.year) ? ids.year : undefined, name: (names && names.year) ? names.year : undefined, className: (classes && classes.year) ? classes.year : undefined, onChange: _this.handleYearChange, value: _this.state.selectedYear }, _this.generateYearOptions())));
231
+ };
232
+ _this.renderMonth = function () {
233
+ var _a = _this.props, classes = _a.classes, ids = _a.ids, names = _a.names;
234
+ return (React.createElement("div", { key: "month", id: "dropdown-month", className: (classes && classes.monthContainer) ? classes.monthContainer : undefined },
235
+ React.createElement("select", { id: (ids && ids.month) ? ids.month : undefined, name: (names && names.month) ? names.month : undefined, className: (classes && classes.month) ? classes.month : undefined, onChange: _this.handleMonthChange, value: _this.state.selectedMonth }, _this.generateMonthOptions())));
236
+ };
237
+ _this.renderDay = function () {
238
+ var _a = _this.props, classes = _a.classes, ids = _a.ids, names = _a.names;
239
+ return (React.createElement("div", { key: "day", id: "dropdown-day", className: (classes && classes.dayContainer) ? classes.dayContainer : undefined },
240
+ React.createElement("select", { id: (ids && ids.day) ? ids.day : undefined, name: (names && names.day) ? names.day : undefined, className: (classes && classes.day) ? classes.day : undefined, onChange: _this.handleDayChange, value: _this.state.selectedDay }, _this.generateDayOptions())));
241
+ };
242
+ _this.render = function () {
243
+ var classes = _this.props.classes;
244
+ var order = _this.props.order;
245
+ order = order || [DropdownComponent.year, DropdownComponent.month, DropdownComponent.day];
246
+ return (React.createElement("div", { id: "dropdown-date", className: (classes && classes.dateContainer) ? classes.dateContainer : undefined }, order.map(function (part) {
247
+ return _this.renderParts[part]();
248
+ })));
249
+ };
250
+ var startDate = props.startDate, endDate = props.endDate, selectedDate = props.selectedDate;
251
+ var sDate = startDate ? new Date(startDate) : new Date('1900-01-01');
252
+ var eDate = endDate ? new Date(endDate) : new Date();
253
+ var selDate = selectedDate ? new Date(selectedDate) : null;
254
+ _this.state = {
255
+ startYear: sDate.getFullYear(),
256
+ startMonth: sDate.getMonth(),
257
+ startDay: sDate.getDate(),
258
+ endYear: eDate.getFullYear(),
259
+ endMonth: eDate.getMonth(),
260
+ endDay: eDate.getDate(),
261
+ selectedYear: selDate ? selDate.getFullYear() : -1,
262
+ selectedMonth: selDate ? selDate.getMonth() : -1,
263
+ selectedDay: selDate ? selDate.getDate() : -1
264
+ };
265
+ _this.renderParts = {
266
+ year: _this.renderYear,
267
+ month: _this.renderMonth,
268
+ day: _this.renderDay,
269
+ };
270
+ _this.localizedMonthOptions = _this.getLocalizedMonthOptions(props.localizedMonths);
271
+ return _this;
272
+ }
273
+ DropdownDate.prototype.getLocalizedMonthOptions = function (localizedMonths) {
274
+ return (localizedMonths && Object.entries(localizedMonths).length > 0) ? localizedMonths : monthByNumber;
275
+ };
276
+ DropdownDate.getDerivedStateFromProps = function (nextProps, prevState) {
277
+ var selDate = nextProps.selectedDate ? new Date(nextProps.selectedDate) : null;
278
+ var tempSelDate = {
279
+ selectedYear: selDate ? selDate.getFullYear() : -1,
280
+ selectedMonth: selDate ? selDate.getMonth() : -1,
281
+ selectedDay: selDate ? selDate.getDate() : -1
282
+ };
283
+ if (tempSelDate.selectedYear !== prevState.selectedYear) {
284
+ return { selectedYear: tempSelDate.selectedYear };
285
+ }
286
+ if (tempSelDate.selectedMonth !== prevState.selectedMonth) {
287
+ return { selectedMonth: tempSelDate.selectedMonth };
288
+ }
289
+ if (tempSelDate.selectedDay !== prevState.selectedDay) {
290
+ return { selectedDay: tempSelDate.selectedDay };
291
+ }
292
+ return null;
293
+ };
294
+ DropdownDate.prototype.componentDidUpdate = function (prevProps) {
295
+ // Update localizedMonthOptions if localizedMonths prop changed
296
+ if (prevProps.localizedMonths !== this.props.localizedMonths) {
297
+ this.localizedMonthOptions = this.getLocalizedMonthOptions(this.props.localizedMonths);
298
+ }
299
+ };
300
+ DropdownDate.prototype.generateYearOptions = function () {
301
+ var _a = this.props, classes = _a.classes, options = _a.options, defaultValues = _a.defaultValues;
302
+ var _b = this.state, startYear = _b.startYear, endYear = _b.endYear;
303
+ var yearOptions = [];
304
+ yearOptions.push(React.createElement("option", { key: -1, value: "-1", className: (classes && classes.yearOptions) ? classes.yearOptions : undefined }, (defaultValues && defaultValues.year) ? defaultValues.year : ''));
305
+ if (options && options.yearReverse) {
306
+ for (var i = endYear; i >= startYear; i--) {
307
+ yearOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.yearOptions) ? classes.yearOptions : undefined }, i));
308
+ }
309
+ }
310
+ else {
311
+ for (var i = startYear; i <= endYear; i++) {
312
+ yearOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.yearOptions) ? classes.yearOptions : undefined }, i));
313
+ }
314
+ }
315
+ return yearOptions;
316
+ };
317
+ DropdownDate.prototype.generateMonthOptions = function () {
318
+ var _a = this.props, classes = _a.classes, options = _a.options, defaultValues = _a.defaultValues;
319
+ var _b = this.state, startMonth = _b.startMonth, endMonth = _b.endMonth, startYear = _b.startYear, endYear = _b.endYear, selectedYear = _b.selectedYear;
320
+ var months = [];
321
+ if (selectedYear === startYear && selectedYear === endYear) {
322
+ for (var i = startMonth; i <= endMonth; i++) {
323
+ months.push({
324
+ value: i,
325
+ month: this.localizedMonthOptions[i]
326
+ });
327
+ }
328
+ }
329
+ else if (selectedYear === startYear) {
330
+ for (var i = startMonth; i <= 11; i++) {
331
+ months.push({
332
+ value: i,
333
+ month: this.localizedMonthOptions[i]
334
+ });
335
+ }
336
+ }
337
+ else if (selectedYear === endYear) {
338
+ for (var i = 0; i <= endMonth; i++) {
339
+ months.push({
340
+ value: i,
341
+ month: this.localizedMonthOptions[i]
342
+ });
343
+ }
344
+ }
345
+ else {
346
+ for (var i = 0; i <= 11; i++) {
347
+ months.push({
348
+ value: i,
349
+ month: this.localizedMonthOptions[i]
350
+ });
351
+ }
352
+ }
353
+ if (options && options.monthShort) {
354
+ months = months.map(function (elem) {
355
+ return {
356
+ value: elem.value,
357
+ month: elem.month.substring(0, 3)
358
+ };
359
+ });
360
+ }
361
+ if (options && options.monthCaps) {
362
+ months = months.map(function (elem) {
363
+ return {
364
+ value: elem.value,
365
+ month: elem.month.toUpperCase()
366
+ };
367
+ });
368
+ }
369
+ var monthOptions = [];
370
+ monthOptions.push(React.createElement("option", { key: -1, value: "-1", className: (classes && classes.monthOptions) ? classes.monthOptions : undefined }, (defaultValues && defaultValues.month) ? defaultValues.month : ''));
371
+ months.forEach(function (elem) {
372
+ monthOptions.push(React.createElement("option", { key: elem.value, value: elem.value, className: (classes && classes.monthOptions) ? classes.monthOptions : undefined }, elem.month));
373
+ });
374
+ return monthOptions;
375
+ };
376
+ DropdownDate.prototype.generateDayOptions = function () {
377
+ var _a = this.props, classes = _a.classes, defaultValues = _a.defaultValues;
378
+ var _b = this.state, startYear = _b.startYear, startMonth = _b.startMonth, startDay = _b.startDay, endYear = _b.endYear, endMonth = _b.endMonth, endDay = _b.endDay, selectedYear = _b.selectedYear, selectedMonth = _b.selectedMonth;
379
+ var dayOptions = [];
380
+ dayOptions.push(React.createElement("option", { key: -1, value: "-1", className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, (defaultValues && defaultValues.day) ? defaultValues.day : ''));
381
+ var monthDays = getDaysInMonth(selectedYear, selectedMonth);
382
+ if (selectedYear === startYear && selectedYear === endYear) {
383
+ if (selectedMonth === startMonth && selectedMonth === endMonth) {
384
+ for (var i = startDay; i <= endDay; i++) {
385
+ dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
386
+ }
387
+ }
388
+ else if (selectedMonth === startMonth) {
389
+ for (var i = startDay; i <= monthDays; i++) {
390
+ dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
391
+ }
392
+ }
393
+ else if (selectedMonth === endMonth) {
394
+ for (var i = 1; i <= endDay; i++) {
395
+ dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
396
+ }
397
+ }
398
+ else {
399
+ for (var i = 1; i <= monthDays; i++) {
400
+ dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
401
+ }
402
+ }
403
+ }
404
+ else if (selectedYear === startYear) {
405
+ if (selectedMonth === startMonth) {
406
+ for (var i = startDay; i <= monthDays; i++) {
407
+ dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
408
+ }
409
+ }
410
+ else {
411
+ for (var i = 1; i <= monthDays; i++) {
412
+ dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
413
+ }
414
+ }
415
+ }
416
+ else if (selectedYear === endYear) {
417
+ if (selectedMonth === endMonth) {
418
+ for (var i = 1; i <= endDay; i++) {
419
+ dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
420
+ }
421
+ }
422
+ else {
423
+ for (var i = 1; i <= monthDays; i++) {
424
+ dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
425
+ }
426
+ }
427
+ }
428
+ else {
429
+ if (selectedMonth) {
430
+ for (var i = 1; i <= monthDays; i++) {
431
+ dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
432
+ }
433
+ }
434
+ else {
435
+ for (var i = 1; i <= 31; i++) {
436
+ dayOptions.push(React.createElement("option", { key: i, value: i, className: (classes && classes.dayOptions) ? classes.dayOptions : undefined }, i));
437
+ }
438
+ }
439
+ }
440
+ return dayOptions;
441
+ };
442
+ return DropdownDate;
436
443
  }(React.Component));
437
444
 
438
445
  export { DayPicker, DropdownComponent, DropdownDate, MonthPicker, YearPicker };