react-day-picker 7.2.4 → 7.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/CHANGELOG.md +53 -0
- package/LICENSE +1 -2
- package/lib/daypicker.js +258 -410
- package/lib/daypicker.js.map +1 -1
- package/lib/daypicker.min.js +1 -1
- package/lib/daypicker.min.js.map +1 -1
- package/lib/src/Caption.js +6 -6
- package/lib/src/Caption.js.map +1 -1
- package/lib/src/DateUtils.js +2 -2
- package/lib/src/DateUtils.js.map +1 -1
- package/lib/src/Day.js +11 -11
- package/lib/src/Day.js.map +1 -1
- package/lib/src/DayPicker.js +65 -36
- package/lib/src/DayPicker.js.map +1 -1
- package/lib/src/DayPickerInput.js +71 -56
- package/lib/src/DayPickerInput.js.map +1 -1
- package/lib/src/Helpers.js.map +1 -1
- package/lib/src/Month.js +6 -5
- package/lib/src/Month.js.map +1 -1
- package/lib/src/Navbar.js +15 -14
- package/lib/src/Navbar.js.map +1 -1
- package/lib/src/PropTypes.js.map +1 -1
- package/lib/src/Weekday.js +3 -3
- package/lib/src/Weekday.js.map +1 -1
- package/lib/src/Weekdays.js +3 -3
- package/lib/src/Weekdays.js.map +1 -1
- package/lib/src/addons/MomentLocaleUtils.js.map +1 -1
- package/moment.d.ts +2 -0
- package/package.json +5 -4
- package/types/DayPicker.d.ts +5 -4
- package/types/DayPickerInput.d.ts +1 -2
- package/types/README.md +5 -0
- package/types/common.d.ts +11 -3
- package/types/index.d.ts +3 -4
- package/types/moment.d.ts +5 -0
- package/types/props.d.ts +24 -26
- package/types/tsconfig.json +1 -1
- package/types/utils.d.ts +17 -13
|
@@ -70,13 +70,13 @@ function OverlayComponent(_ref) {
|
|
|
70
70
|
);
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
OverlayComponent.propTypes =
|
|
73
|
+
OverlayComponent.propTypes = {
|
|
74
74
|
input: _propTypes2.default.any,
|
|
75
75
|
selectedDay: _propTypes2.default.any,
|
|
76
76
|
month: _propTypes2.default.instanceOf(Date),
|
|
77
77
|
children: _propTypes2.default.node,
|
|
78
78
|
classNames: _propTypes2.default.object
|
|
79
|
-
}
|
|
79
|
+
};
|
|
80
80
|
|
|
81
81
|
/**
|
|
82
82
|
* The default function used to format a Date to String, passed to the `format`
|
|
@@ -115,7 +115,7 @@ function defaultParse(str) {
|
|
|
115
115
|
return undefined;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
return new Date(year, month, day);
|
|
118
|
+
return new Date(year, month, day, 12, 0, 0, 0); // always set noon to avoid time zone issues
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
var DayPickerInput = function (_React$Component) {
|
|
@@ -163,9 +163,10 @@ var DayPickerInput = function (_React$Component) {
|
|
|
163
163
|
format = _props.format,
|
|
164
164
|
dayPickerProps = _props.dayPickerProps;
|
|
165
165
|
|
|
166
|
-
// Update the input value if
|
|
166
|
+
// Update the input value if `value`, `dayPickerProps.locale` or `format`
|
|
167
|
+
// props have changed
|
|
167
168
|
|
|
168
|
-
if (value !== prevProps.value) {
|
|
169
|
+
if (value !== prevProps.value || dayPickerProps.locale !== prevProps.dayPickerProps.locale || format !== prevProps.format) {
|
|
169
170
|
if ((0, _DateUtils.isDate)(value)) {
|
|
170
171
|
newState.value = formatDate(value, format, dayPickerProps.locale);
|
|
171
172
|
} else {
|
|
@@ -219,14 +220,17 @@ var DayPickerInput = function (_React$Component) {
|
|
|
219
220
|
value: function getInitialStateFromProps(props) {
|
|
220
221
|
var dayPickerProps = props.dayPickerProps,
|
|
221
222
|
formatDate = props.formatDate,
|
|
222
|
-
format = props.format
|
|
223
|
+
format = props.format,
|
|
224
|
+
typedValue = props.typedValue;
|
|
223
225
|
var value = props.value;
|
|
224
226
|
|
|
225
227
|
if (props.value && (0, _DateUtils.isDate)(props.value)) {
|
|
226
228
|
value = formatDate(props.value, format, dayPickerProps.locale);
|
|
227
229
|
}
|
|
230
|
+
|
|
228
231
|
return {
|
|
229
232
|
value: value,
|
|
233
|
+
typedValue: typedValue,
|
|
230
234
|
month: this.getInitialMonthFromProps(props),
|
|
231
235
|
selectedDays: dayPickerProps.selectedDays
|
|
232
236
|
};
|
|
@@ -260,7 +264,7 @@ var DayPickerInput = function (_React$Component) {
|
|
|
260
264
|
dayPickerProps = _props2.dayPickerProps,
|
|
261
265
|
onDayChange = _props2.onDayChange;
|
|
262
266
|
|
|
263
|
-
this.setState({ month: day, value: value, typedValue:
|
|
267
|
+
this.setState({ month: day, value: value, typedValue: '' }, function () {
|
|
264
268
|
if (callback) {
|
|
265
269
|
callback();
|
|
266
270
|
}
|
|
@@ -287,6 +291,8 @@ var DayPickerInput = function (_React$Component) {
|
|
|
287
291
|
}, {
|
|
288
292
|
key: 'showDayPicker',
|
|
289
293
|
value: function showDayPicker() {
|
|
294
|
+
var _this3 = this;
|
|
295
|
+
|
|
290
296
|
var _props3 = this.props,
|
|
291
297
|
parseDate = _props3.parseDate,
|
|
292
298
|
format = _props3.format,
|
|
@@ -306,6 +312,8 @@ var DayPickerInput = function (_React$Component) {
|
|
|
306
312
|
showOverlay: true,
|
|
307
313
|
month: month || state.month
|
|
308
314
|
};
|
|
315
|
+
}, function () {
|
|
316
|
+
if (_this3.props.onDayPickerShow) _this3.props.onDayPickerShow();
|
|
309
317
|
});
|
|
310
318
|
}
|
|
311
319
|
|
|
@@ -318,25 +326,26 @@ var DayPickerInput = function (_React$Component) {
|
|
|
318
326
|
}, {
|
|
319
327
|
key: 'hideDayPicker',
|
|
320
328
|
value: function hideDayPicker() {
|
|
321
|
-
var
|
|
329
|
+
var _this4 = this;
|
|
322
330
|
|
|
323
331
|
if (this.state.showOverlay === false) {
|
|
324
332
|
return;
|
|
325
333
|
}
|
|
326
334
|
this.setState({ showOverlay: false }, function () {
|
|
327
|
-
if (
|
|
335
|
+
if (_this4.props.onDayPickerHide) _this4.props.onDayPickerHide();
|
|
328
336
|
});
|
|
329
337
|
}
|
|
330
338
|
}, {
|
|
331
339
|
key: 'hideAfterDayClick',
|
|
332
340
|
value: function hideAfterDayClick() {
|
|
333
|
-
var
|
|
341
|
+
var _this5 = this;
|
|
334
342
|
|
|
335
343
|
if (!this.props.hideOnDayClick) {
|
|
336
344
|
return;
|
|
337
345
|
}
|
|
338
346
|
this.hideTimeout = setTimeout(function () {
|
|
339
|
-
|
|
347
|
+
_this5.overlayHasFocus = false;
|
|
348
|
+
_this5.hideDayPicker();
|
|
340
349
|
}, HIDE_TIMEOUT);
|
|
341
350
|
}
|
|
342
351
|
}, {
|
|
@@ -351,13 +360,13 @@ var DayPickerInput = function (_React$Component) {
|
|
|
351
360
|
}, {
|
|
352
361
|
key: 'handleInputFocus',
|
|
353
362
|
value: function handleInputFocus(e) {
|
|
354
|
-
var
|
|
363
|
+
var _this6 = this;
|
|
355
364
|
|
|
356
365
|
this.showDayPicker();
|
|
357
366
|
// Set `overlayHasFocus` after a timeout so the overlay can be hidden when
|
|
358
367
|
// the input is blurred
|
|
359
368
|
this.inputFocusTimeout = setTimeout(function () {
|
|
360
|
-
|
|
369
|
+
_this6.overlayHasFocus = false;
|
|
361
370
|
}, 2);
|
|
362
371
|
if (this.props.inputProps.onFocus) {
|
|
363
372
|
e.persist();
|
|
@@ -375,11 +384,11 @@ var DayPickerInput = function (_React$Component) {
|
|
|
375
384
|
}, {
|
|
376
385
|
key: 'handleInputBlur',
|
|
377
386
|
value: function handleInputBlur(e) {
|
|
378
|
-
var
|
|
387
|
+
var _this7 = this;
|
|
379
388
|
|
|
380
389
|
this.inputBlurTimeout = setTimeout(function () {
|
|
381
|
-
if (!
|
|
382
|
-
|
|
390
|
+
if (!_this7.overlayHasFocus) {
|
|
391
|
+
_this7.hideDayPicker();
|
|
383
392
|
}
|
|
384
393
|
}, 1);
|
|
385
394
|
if (this.props.inputProps.onBlur) {
|
|
@@ -400,12 +409,12 @@ var DayPickerInput = function (_React$Component) {
|
|
|
400
409
|
}, {
|
|
401
410
|
key: 'handleOverlayBlur',
|
|
402
411
|
value: function handleOverlayBlur() {
|
|
403
|
-
var
|
|
412
|
+
var _this8 = this;
|
|
404
413
|
|
|
405
414
|
// We need to set a timeout otherwise IE11 will hide the overlay when
|
|
406
415
|
// focusing it
|
|
407
416
|
this.overlayBlurTimeout = setTimeout(function () {
|
|
408
|
-
|
|
417
|
+
_this8.overlayHasFocus = false;
|
|
409
418
|
}, 3);
|
|
410
419
|
}
|
|
411
420
|
}, {
|
|
@@ -425,7 +434,7 @@ var DayPickerInput = function (_React$Component) {
|
|
|
425
434
|
var value = e.target.value;
|
|
426
435
|
|
|
427
436
|
if (value.trim() === '') {
|
|
428
|
-
this.setState({ value: value, typedValue:
|
|
437
|
+
this.setState({ value: value, typedValue: '' });
|
|
429
438
|
if (onDayChange) onDayChange(undefined, {}, this);
|
|
430
439
|
return;
|
|
431
440
|
}
|
|
@@ -467,18 +476,18 @@ var DayPickerInput = function (_React$Component) {
|
|
|
467
476
|
}, {
|
|
468
477
|
key: 'handleMonthChange',
|
|
469
478
|
value: function handleMonthChange(month) {
|
|
470
|
-
var
|
|
479
|
+
var _this9 = this;
|
|
471
480
|
|
|
472
481
|
this.setState({ month: month }, function () {
|
|
473
|
-
if (
|
|
474
|
-
|
|
482
|
+
if (_this9.props.dayPickerProps && _this9.props.dayPickerProps.onMonthChange) {
|
|
483
|
+
_this9.props.dayPickerProps.onMonthChange(month);
|
|
475
484
|
}
|
|
476
485
|
});
|
|
477
486
|
}
|
|
478
487
|
}, {
|
|
479
488
|
key: 'handleDayClick',
|
|
480
489
|
value: function handleDayClick(day, modifiers, e) {
|
|
481
|
-
var
|
|
490
|
+
var _this10 = this;
|
|
482
491
|
|
|
483
492
|
var _props5 = this.props,
|
|
484
493
|
clickUnselectsDay = _props5.clickUnselectsDay,
|
|
@@ -508,7 +517,9 @@ var DayPickerInput = function (_React$Component) {
|
|
|
508
517
|
} else if (selectedDays) {
|
|
509
518
|
selectedDays = null;
|
|
510
519
|
}
|
|
511
|
-
|
|
520
|
+
|
|
521
|
+
this.setState({ value: '', typedValue: '', selectedDays: selectedDays }, this.hideAfterDayClick);
|
|
522
|
+
|
|
512
523
|
if (onDayChange) {
|
|
513
524
|
onDayChange(undefined, modifiers, this);
|
|
514
525
|
}
|
|
@@ -518,15 +529,15 @@ var DayPickerInput = function (_React$Component) {
|
|
|
518
529
|
var value = formatDate(day, format, dayPickerProps.locale);
|
|
519
530
|
this.setState({ value: value, typedValue: undefined, month: day }, function () {
|
|
520
531
|
if (onDayChange) {
|
|
521
|
-
onDayChange(day, modifiers,
|
|
532
|
+
onDayChange(day, modifiers, _this10);
|
|
522
533
|
}
|
|
523
|
-
|
|
534
|
+
_this10.hideAfterDayClick();
|
|
524
535
|
});
|
|
525
536
|
}
|
|
526
537
|
}, {
|
|
527
538
|
key: 'renderOverlay',
|
|
528
539
|
value: function renderOverlay() {
|
|
529
|
-
var
|
|
540
|
+
var _this11 = this;
|
|
530
541
|
|
|
531
542
|
var _props6 = this.props,
|
|
532
543
|
classNames = _props6.classNames,
|
|
@@ -551,7 +562,7 @@ var DayPickerInput = function (_React$Component) {
|
|
|
551
562
|
if (dayPickerProps.todayButton) {
|
|
552
563
|
// Set the current day when clicking the today button
|
|
553
564
|
onTodayButtonClick = function onTodayButtonClick() {
|
|
554
|
-
return
|
|
565
|
+
return _this11.updateState(new Date(), formatDate(new Date(), format, dayPickerProps.locale), _this11.hideAfterDayClick);
|
|
555
566
|
};
|
|
556
567
|
}
|
|
557
568
|
var Overlay = this.props.overlayComponent;
|
|
@@ -568,7 +579,7 @@ var DayPickerInput = function (_React$Component) {
|
|
|
568
579
|
},
|
|
569
580
|
_react2.default.createElement(_DayPicker2.default, _extends({
|
|
570
581
|
ref: function ref(el) {
|
|
571
|
-
return
|
|
582
|
+
return _this11.daypicker = el;
|
|
572
583
|
},
|
|
573
584
|
onTodayButtonClick: onTodayButtonClick
|
|
574
585
|
}, dayPickerProps, {
|
|
@@ -582,21 +593,21 @@ var DayPickerInput = function (_React$Component) {
|
|
|
582
593
|
}, {
|
|
583
594
|
key: 'render',
|
|
584
595
|
value: function render() {
|
|
585
|
-
var
|
|
596
|
+
var _this12 = this;
|
|
586
597
|
|
|
587
598
|
var Input = this.props.component;
|
|
588
599
|
var inputProps = this.props.inputProps;
|
|
589
600
|
|
|
590
601
|
return _react2.default.createElement(
|
|
591
602
|
'div',
|
|
592
|
-
{ className: this.props.classNames.container },
|
|
603
|
+
{ className: this.props.classNames.container, style: this.props.style },
|
|
593
604
|
_react2.default.createElement(Input, _extends({
|
|
594
605
|
ref: function ref(el) {
|
|
595
|
-
return
|
|
606
|
+
return _this12.input = el;
|
|
596
607
|
},
|
|
597
608
|
placeholder: this.props.placeholder
|
|
598
609
|
}, inputProps, {
|
|
599
|
-
value: this.state.
|
|
610
|
+
value: this.state.value || this.state.typedValue,
|
|
600
611
|
onChange: this.handleInputChange,
|
|
601
612
|
onFocus: this.handleInputFocus,
|
|
602
613
|
onBlur: this.handleInputBlur,
|
|
@@ -612,28 +623,7 @@ var DayPickerInput = function (_React$Component) {
|
|
|
612
623
|
return DayPickerInput;
|
|
613
624
|
}(_react2.default.Component);
|
|
614
625
|
|
|
615
|
-
DayPickerInput.
|
|
616
|
-
dayPickerProps: {},
|
|
617
|
-
value: '',
|
|
618
|
-
placeholder: 'YYYY-M-D',
|
|
619
|
-
format: 'L',
|
|
620
|
-
formatDate: defaultFormat,
|
|
621
|
-
parseDate: defaultParse,
|
|
622
|
-
showOverlay: false,
|
|
623
|
-
hideOnDayClick: true,
|
|
624
|
-
clickUnselectsDay: false,
|
|
625
|
-
keepFocus: true,
|
|
626
|
-
component: 'input',
|
|
627
|
-
inputProps: {},
|
|
628
|
-
overlayComponent: OverlayComponent,
|
|
629
|
-
classNames: {
|
|
630
|
-
container: 'DayPickerInput',
|
|
631
|
-
overlayWrapper: 'DayPickerInput-OverlayWrapper',
|
|
632
|
-
overlay: 'DayPickerInput-Overlay'
|
|
633
|
-
}
|
|
634
|
-
};
|
|
635
|
-
exports.default = DayPickerInput;
|
|
636
|
-
DayPickerInput.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
626
|
+
DayPickerInput.propTypes = {
|
|
637
627
|
value: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.instanceOf(Date)]),
|
|
638
628
|
inputProps: _propTypes2.default.object,
|
|
639
629
|
placeholder: _propTypes2.default.string,
|
|
@@ -642,6 +632,7 @@ DayPickerInput.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
642
632
|
|
|
643
633
|
formatDate: _propTypes2.default.func,
|
|
644
634
|
parseDate: _propTypes2.default.func,
|
|
635
|
+
typedValue: _propTypes2.default.string,
|
|
645
636
|
|
|
646
637
|
showOverlay: _propTypes2.default.bool,
|
|
647
638
|
dayPickerProps: _propTypes2.default.object,
|
|
@@ -651,6 +642,7 @@ DayPickerInput.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
651
642
|
component: _propTypes2.default.any,
|
|
652
643
|
overlayComponent: _propTypes2.default.any,
|
|
653
644
|
|
|
645
|
+
style: _propTypes2.default.object,
|
|
654
646
|
classNames: _propTypes2.default.shape({
|
|
655
647
|
container: _propTypes2.default.string,
|
|
656
648
|
overlayWrapper: _propTypes2.default.string,
|
|
@@ -659,10 +651,33 @@ DayPickerInput.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
659
651
|
|
|
660
652
|
onDayChange: _propTypes2.default.func,
|
|
661
653
|
onDayPickerHide: _propTypes2.default.func,
|
|
654
|
+
onDayPickerShow: _propTypes2.default.func,
|
|
662
655
|
onChange: _propTypes2.default.func,
|
|
663
656
|
onClick: _propTypes2.default.func,
|
|
664
657
|
onFocus: _propTypes2.default.func,
|
|
665
658
|
onBlur: _propTypes2.default.func,
|
|
666
659
|
onKeyUp: _propTypes2.default.func
|
|
667
|
-
}
|
|
660
|
+
};
|
|
661
|
+
DayPickerInput.defaultProps = {
|
|
662
|
+
dayPickerProps: {},
|
|
663
|
+
value: '',
|
|
664
|
+
typedValue: '',
|
|
665
|
+
placeholder: 'YYYY-M-D',
|
|
666
|
+
format: 'L',
|
|
667
|
+
formatDate: defaultFormat,
|
|
668
|
+
parseDate: defaultParse,
|
|
669
|
+
showOverlay: false,
|
|
670
|
+
hideOnDayClick: true,
|
|
671
|
+
clickUnselectsDay: false,
|
|
672
|
+
keepFocus: true,
|
|
673
|
+
component: 'input',
|
|
674
|
+
inputProps: {},
|
|
675
|
+
overlayComponent: OverlayComponent,
|
|
676
|
+
classNames: {
|
|
677
|
+
container: 'DayPickerInput',
|
|
678
|
+
overlayWrapper: 'DayPickerInput-OverlayWrapper',
|
|
679
|
+
overlay: 'DayPickerInput-Overlay'
|
|
680
|
+
}
|
|
681
|
+
};
|
|
682
|
+
exports.default = DayPickerInput;
|
|
668
683
|
//# sourceMappingURL=DayPickerInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/DayPickerInput.js"],"names":["OverlayComponent","defaultFormat","defaultParse","HIDE_TIMEOUT","input","selectedDay","month","children","classNames","props","overlayWrapper","overlay","propTypes","any","instanceOf","Date","node","object","d","year","getFullYear","getMonth","day","getDate","str","undefined","split","length","parseInt","isNaN","String","DayPickerInput","daypicker","clickTimeout","hideTimeout","inputBlurTimeout","inputFocusTimeout","state","getInitialStateFromProps","showOverlay","hideAfterDayClick","bind","handleInputClick","handleInputFocus","handleInputBlur","handleInputChange","handleInputKeyDown","handleInputKeyUp","handleDayClick","handleMonthChange","handleOverlayFocus","handleOverlayBlur","prevProps","newState","value","formatDate","format","dayPickerProps","locale","prevMonth","selectedDays","Object","keys","setState","clearTimeout","overlayBlurTimeout","parseDate","initialMonth","getInitialMonthFromProps","callback","onDayChange","typedValue","modifiersObj","disabled","disabledDays","selected","modifiers","reduce","obj","modifier","onDayPickerHide","hideOnDayClick","setTimeout","hideDayPicker","e","showDayPicker","inputProps","onClick","persist","overlayHasFocus","onFocus","onBlur","preventDefault","keepFocus","focus","onChange","target","trim","updateState","keyCode","onKeyDown","onKeyUp","onMonthChange","clickUnselectsDay","onDayClick","Array","isArray","slice","selectedDayIdx","indexOf","splice","onTodayButtonClick","todayButton","Overlay","overlayComponent","el","Input","component","container","placeholder","renderOverlay","Component","defaultProps","oneOfType","string","arrayOf","func","bool","shape","isRequired"],"mappings":"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","file":"DayPickerInput.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DayPicker from './DayPicker';\nimport { isSameMonth, isDate } from './DateUtils';\nimport { getModifiersForDay } from './ModifiersUtils';\nimport { ESC, TAB } from './keys';\n\n// When clicking on a day cell, overlay will be hidden after this timeout\nexport const HIDE_TIMEOUT = 100;\n\n/**\n * The default component used as Overlay.\n *\n * @param {Object} props\n */\nexport function OverlayComponent({\n input,\n selectedDay,\n month,\n children,\n classNames,\n ...props\n}) {\n return (\n <div className={classNames.overlayWrapper} {...props}>\n <div className={classNames.overlay}>{children}</div>\n </div>\n );\n}\n\nOverlayComponent.propTypes = {\n input: PropTypes.any,\n selectedDay: PropTypes.any,\n month: PropTypes.instanceOf(Date),\n children: PropTypes.node,\n classNames: PropTypes.object,\n};\n\n/**\n * The default function used to format a Date to String, passed to the `format`\n * prop.\n * @param {Date} d\n * @return {String}\n */\nexport function defaultFormat(d) {\n if (isDate(d)) {\n const year = d.getFullYear();\n const month = `${d.getMonth() + 1}`;\n const day = `${d.getDate()}`;\n return `${year}-${month}-${day}`;\n }\n return '';\n}\n\n/**\n * The default function used to parse a String as Date, passed to the `parse`\n * prop.\n * @param {String} str\n * @return {Date}\n */\nexport function defaultParse(str) {\n if (typeof str !== 'string') {\n return undefined;\n }\n const split = str.split('-');\n if (split.length !== 3) {\n return undefined;\n }\n const year = parseInt(split[0], 10);\n const month = parseInt(split[1], 10) - 1;\n const day = parseInt(split[2], 10);\n if (\n isNaN(year) ||\n String(year).length > 4 ||\n isNaN(month) ||\n isNaN(day) ||\n day <= 0 ||\n day > 31 ||\n month < 0 ||\n month >= 12\n ) {\n return undefined;\n }\n\n return new Date(year, month, day);\n}\n\nexport default class DayPickerInput extends React.Component {\n static propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(Date)]),\n inputProps: PropTypes.object,\n placeholder: PropTypes.string,\n\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n\n formatDate: PropTypes.func,\n parseDate: PropTypes.func,\n\n showOverlay: PropTypes.bool,\n dayPickerProps: PropTypes.object,\n hideOnDayClick: PropTypes.bool,\n clickUnselectsDay: PropTypes.bool,\n keepFocus: PropTypes.bool,\n component: PropTypes.any,\n overlayComponent: PropTypes.any,\n\n classNames: PropTypes.shape({\n container: PropTypes.string,\n overlayWrapper: PropTypes.string,\n overlay: PropTypes.string.isRequired,\n }),\n\n onDayChange: PropTypes.func,\n onDayPickerHide: PropTypes.func,\n onChange: PropTypes.func,\n onClick: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyUp: PropTypes.func,\n };\n\n static defaultProps = {\n dayPickerProps: {},\n value: '',\n placeholder: 'YYYY-M-D',\n format: 'L',\n formatDate: defaultFormat,\n parseDate: defaultParse,\n showOverlay: false,\n hideOnDayClick: true,\n clickUnselectsDay: false,\n keepFocus: true,\n component: 'input',\n inputProps: {},\n overlayComponent: OverlayComponent,\n classNames: {\n container: 'DayPickerInput',\n overlayWrapper: 'DayPickerInput-OverlayWrapper',\n overlay: 'DayPickerInput-Overlay',\n },\n };\n\n input = null;\n\n daypicker = null;\n\n clickTimeout = null;\n\n hideTimeout = null;\n\n inputBlurTimeout = null;\n\n inputFocusTimeout = null;\n\n constructor(props) {\n super(props);\n\n this.state = this.getInitialStateFromProps(props);\n this.state.showOverlay = props.showOverlay;\n\n this.hideAfterDayClick = this.hideAfterDayClick.bind(this);\n this.handleInputClick = this.handleInputClick.bind(this);\n this.handleInputFocus = this.handleInputFocus.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputKeyUp = this.handleInputKeyUp.bind(this);\n this.handleDayClick = this.handleDayClick.bind(this);\n this.handleMonthChange = this.handleMonthChange.bind(this);\n this.handleOverlayFocus = this.handleOverlayFocus.bind(this);\n this.handleOverlayBlur = this.handleOverlayBlur.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const newState = {};\n\n // Current props\n const { value, formatDate, format, dayPickerProps } = this.props;\n\n // Update the input value if the `value` prop has changed\n if (value !== prevProps.value) {\n if (isDate(value)) {\n newState.value = formatDate(value, format, dayPickerProps.locale);\n } else {\n newState.value = value;\n }\n }\n\n // Update the month if the months from props changed\n const prevMonth = prevProps.dayPickerProps.month;\n if (\n dayPickerProps.month &&\n dayPickerProps.month !== prevMonth &&\n !isSameMonth(dayPickerProps.month, prevMonth)\n ) {\n newState.month = dayPickerProps.month;\n }\n\n // Updated the selected days from props if they changed\n if (prevProps.dayPickerProps.selectedDays !== dayPickerProps.selectedDays) {\n newState.selectedDays = dayPickerProps.selectedDays;\n }\n\n if (Object.keys(newState).length > 0) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(newState);\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.clickTimeout);\n clearTimeout(this.hideTimeout);\n clearTimeout(this.inputFocusTimeout);\n clearTimeout(this.inputBlurTimeout);\n clearTimeout(this.overlayBlurTimeout);\n }\n\n getInitialMonthFromProps(props) {\n const { dayPickerProps, format } = props;\n let day;\n if (props.value) {\n if (isDate(props.value)) {\n day = props.value;\n } else {\n day = props.parseDate(props.value, format, dayPickerProps.locale);\n }\n }\n return (\n dayPickerProps.initialMonth || dayPickerProps.month || day || new Date()\n );\n }\n\n getInitialStateFromProps(props) {\n const { dayPickerProps, formatDate, format } = props;\n let { value } = props;\n if (props.value && isDate(props.value)) {\n value = formatDate(props.value, format, dayPickerProps.locale);\n }\n return {\n value,\n month: this.getInitialMonthFromProps(props),\n selectedDays: dayPickerProps.selectedDays,\n };\n }\n\n getInput() {\n return this.input;\n }\n\n getDayPicker() {\n return this.daypicker;\n }\n\n /**\n * Update the component's state and fire the `onDayChange` event passing the\n * day's modifiers to it.\n *\n * @param {Date} day - Will be used for changing the month\n * @param {String} value - Input field value\n * @private\n */\n updateState(day, value, callback) {\n const { dayPickerProps, onDayChange } = this.props;\n this.setState({ month: day, value, typedValue: undefined }, () => {\n if (callback) {\n callback();\n }\n if (!onDayChange) {\n return;\n }\n const modifiersObj = {\n disabled: dayPickerProps.disabledDays,\n selected: dayPickerProps.selectedDays,\n ...dayPickerProps.modifiers,\n };\n const modifiers = getModifiersForDay(day, modifiersObj).reduce(\n (obj, modifier) => ({\n ...obj,\n [modifier]: true,\n }),\n {}\n );\n onDayChange(day, modifiers, this);\n });\n }\n\n /**\n * Show the Day Picker overlay.\n *\n * @memberof DayPickerInput\n */\n showDayPicker() {\n const { parseDate, format, dayPickerProps } = this.props;\n const { value, showOverlay } = this.state;\n if (showOverlay) {\n return;\n }\n // Reset the current displayed month when showing the overlay\n const month = value\n ? parseDate(value, format, dayPickerProps.locale) // Use the month in the input field\n : this.getInitialMonthFromProps(this.props); // Restore the month from the props\n this.setState(state => ({\n showOverlay: true,\n month: month || state.month,\n }));\n }\n\n /**\n * Hide the Day Picker overlay\n *\n * @memberof DayPickerInput\n */\n hideDayPicker() {\n if (this.state.showOverlay === false) {\n return;\n }\n this.setState({ showOverlay: false }, () => {\n if (this.props.onDayPickerHide) this.props.onDayPickerHide();\n });\n }\n\n hideAfterDayClick() {\n if (!this.props.hideOnDayClick) {\n return;\n }\n this.hideTimeout = setTimeout(() => this.hideDayPicker(), HIDE_TIMEOUT);\n }\n\n handleInputClick(e) {\n this.showDayPicker();\n if (this.props.inputProps.onClick) {\n e.persist();\n this.props.inputProps.onClick(e);\n }\n }\n\n handleInputFocus(e) {\n this.showDayPicker();\n // Set `overlayHasFocus` after a timeout so the overlay can be hidden when\n // the input is blurred\n this.inputFocusTimeout = setTimeout(() => {\n this.overlayHasFocus = false;\n }, 2);\n if (this.props.inputProps.onFocus) {\n e.persist();\n this.props.inputProps.onFocus(e);\n }\n }\n\n // When the input is blurred, the overlay should disappear. However the input\n // is blurred also when the user interacts with the overlay (e.g. the overlay\n // get the focus by clicking it). In these cases, the overlay should not be\n // hidden. There are different approaches to avoid hiding the overlay when\n // this happens, but the only cross-browser hack we’ve found is to set all\n // these timeouts in code before changing `overlayHasFocus`.\n handleInputBlur(e) {\n this.inputBlurTimeout = setTimeout(() => {\n if (!this.overlayHasFocus) {\n this.hideDayPicker();\n }\n }, 1);\n if (this.props.inputProps.onBlur) {\n e.persist();\n this.props.inputProps.onBlur(e);\n }\n }\n\n handleOverlayFocus(e) {\n e.preventDefault();\n this.overlayHasFocus = true;\n if (\n !this.props.keepFocus ||\n !this.input ||\n typeof this.input.focus !== 'function'\n ) {\n return;\n }\n this.input.focus();\n }\n\n handleOverlayBlur() {\n // We need to set a timeout otherwise IE11 will hide the overlay when\n // focusing it\n this.overlayBlurTimeout = setTimeout(() => {\n this.overlayHasFocus = false;\n }, 3);\n }\n\n handleInputChange(e) {\n const {\n dayPickerProps,\n format,\n inputProps,\n onDayChange,\n parseDate,\n } = this.props;\n if (inputProps.onChange) {\n e.persist();\n inputProps.onChange(e);\n }\n const { value } = e.target;\n if (value.trim() === '') {\n this.setState({ value, typedValue: undefined });\n if (onDayChange) onDayChange(undefined, {}, this);\n return;\n }\n const day = parseDate(value, format, dayPickerProps.locale);\n if (!day) {\n // Day is invalid: we save the value in the typedValue state\n this.setState({ value, typedValue: value });\n if (onDayChange) onDayChange(undefined, {}, this);\n return;\n }\n this.updateState(day, value);\n }\n\n handleInputKeyDown(e) {\n if (e.keyCode === TAB) {\n this.hideDayPicker();\n } else {\n this.showDayPicker();\n }\n if (this.props.inputProps.onKeyDown) {\n e.persist();\n this.props.inputProps.onKeyDown(e);\n }\n }\n\n handleInputKeyUp(e) {\n if (e.keyCode === ESC) {\n this.hideDayPicker();\n } else {\n this.showDayPicker();\n }\n if (this.props.inputProps.onKeyUp) {\n e.persist();\n this.props.inputProps.onKeyUp(e);\n }\n }\n\n handleMonthChange(month) {\n this.setState({ month }, () => {\n if (\n this.props.dayPickerProps &&\n this.props.dayPickerProps.onMonthChange\n ) {\n this.props.dayPickerProps.onMonthChange(month);\n }\n });\n }\n\n handleDayClick(day, modifiers, e) {\n const {\n clickUnselectsDay,\n dayPickerProps,\n onDayChange,\n formatDate,\n format,\n } = this.props;\n if (dayPickerProps.onDayClick) {\n dayPickerProps.onDayClick(day, modifiers, e);\n }\n\n // Do nothing if the day is disabled\n if (\n modifiers.disabled ||\n (dayPickerProps &&\n dayPickerProps.classNames &&\n modifiers[dayPickerProps.classNames.disabled])\n ) {\n return;\n }\n\n // If the clicked day is already selected, remove the clicked day\n // from the selected days and empty the field value\n if (modifiers.selected && clickUnselectsDay) {\n let { selectedDays } = this.state;\n if (Array.isArray(selectedDays)) {\n selectedDays = selectedDays.slice(0);\n const selectedDayIdx = selectedDays.indexOf(day);\n selectedDays.splice(selectedDayIdx, 1);\n } else if (selectedDays) {\n selectedDays = null;\n }\n this.setState(\n { value: '', typedValue: undefined, selectedDays },\n this.hideAfterDayClick\n );\n if (onDayChange) {\n onDayChange(undefined, modifiers, this);\n }\n return;\n }\n\n const value = formatDate(day, format, dayPickerProps.locale);\n this.setState({ value, typedValue: undefined, month: day }, () => {\n if (onDayChange) {\n onDayChange(day, modifiers, this);\n }\n this.hideAfterDayClick();\n });\n }\n\n renderOverlay() {\n const {\n classNames,\n dayPickerProps,\n parseDate,\n formatDate,\n format,\n } = this.props;\n const { selectedDays, value } = this.state;\n let selectedDay;\n if (!selectedDays && value) {\n const day = parseDate(value, format, dayPickerProps.locale);\n if (day) {\n selectedDay = day;\n }\n } else if (selectedDays) {\n selectedDay = selectedDays;\n }\n let onTodayButtonClick;\n if (dayPickerProps.todayButton) {\n // Set the current day when clicking the today button\n onTodayButtonClick = () =>\n this.updateState(\n new Date(),\n formatDate(new Date(), format, dayPickerProps.locale),\n this.hideAfterDayClick\n );\n }\n const Overlay = this.props.overlayComponent;\n return (\n <Overlay\n classNames={classNames}\n month={this.state.month}\n selectedDay={selectedDay}\n input={this.input}\n tabIndex={0} // tabIndex is necessary to catch focus/blur events on Safari\n onFocus={this.handleOverlayFocus}\n onBlur={this.handleOverlayBlur}\n >\n <DayPicker\n ref={el => (this.daypicker = el)}\n onTodayButtonClick={onTodayButtonClick}\n {...dayPickerProps}\n month={this.state.month}\n selectedDays={selectedDay}\n onDayClick={this.handleDayClick}\n onMonthChange={this.handleMonthChange}\n />\n </Overlay>\n );\n }\n\n render() {\n const Input = this.props.component;\n const { inputProps } = this.props;\n return (\n <div className={this.props.classNames.container}>\n <Input\n ref={el => (this.input = el)}\n placeholder={this.props.placeholder}\n {...inputProps}\n value={this.state.typedValue || this.state.value}\n onChange={this.handleInputChange}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleInputKeyDown}\n onKeyUp={this.handleInputKeyUp}\n onClick={!inputProps.disabled ? this.handleInputClick : undefined}\n />\n {this.state.showOverlay && this.renderOverlay()}\n </div>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/DayPickerInput.js"],"names":["OverlayComponent","defaultFormat","defaultParse","HIDE_TIMEOUT","input","selectedDay","month","children","classNames","props","overlayWrapper","overlay","propTypes","PropTypes","any","instanceOf","Date","node","object","d","year","getFullYear","getMonth","day","getDate","str","undefined","split","length","parseInt","isNaN","String","DayPickerInput","daypicker","clickTimeout","hideTimeout","inputBlurTimeout","inputFocusTimeout","state","getInitialStateFromProps","showOverlay","hideAfterDayClick","bind","handleInputClick","handleInputFocus","handleInputBlur","handleInputChange","handleInputKeyDown","handleInputKeyUp","handleDayClick","handleMonthChange","handleOverlayFocus","handleOverlayBlur","prevProps","newState","value","formatDate","format","dayPickerProps","locale","prevMonth","selectedDays","Object","keys","setState","clearTimeout","overlayBlurTimeout","parseDate","initialMonth","typedValue","getInitialMonthFromProps","callback","onDayChange","modifiersObj","disabled","disabledDays","selected","modifiers","reduce","obj","modifier","onDayPickerShow","onDayPickerHide","hideOnDayClick","setTimeout","overlayHasFocus","hideDayPicker","e","showDayPicker","inputProps","onClick","persist","onFocus","onBlur","preventDefault","keepFocus","focus","onChange","target","trim","updateState","keyCode","TAB","onKeyDown","ESC","onKeyUp","onMonthChange","clickUnselectsDay","onDayClick","Array","isArray","slice","selectedDayIdx","indexOf","splice","onTodayButtonClick","todayButton","Overlay","overlayComponent","el","Input","component","container","style","placeholder","renderOverlay","React","Component","oneOfType","string","arrayOf","func","bool","shape","isRequired","defaultProps"],"mappings":"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","file":"DayPickerInput.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DayPicker from './DayPicker';\nimport { isSameMonth, isDate } from './DateUtils';\nimport { getModifiersForDay } from './ModifiersUtils';\nimport { ESC, TAB } from './keys';\n\n// When clicking on a day cell, overlay will be hidden after this timeout\nexport const HIDE_TIMEOUT = 100;\n\n/**\n * The default component used as Overlay.\n *\n * @param {Object} props\n */\nexport function OverlayComponent({\n input,\n selectedDay,\n month,\n children,\n classNames,\n ...props\n}) {\n return (\n <div className={classNames.overlayWrapper} {...props}>\n <div className={classNames.overlay}>{children}</div>\n </div>\n );\n}\n\nOverlayComponent.propTypes = {\n input: PropTypes.any,\n selectedDay: PropTypes.any,\n month: PropTypes.instanceOf(Date),\n children: PropTypes.node,\n classNames: PropTypes.object,\n};\n\n/**\n * The default function used to format a Date to String, passed to the `format`\n * prop.\n * @param {Date} d\n * @return {String}\n */\nexport function defaultFormat(d) {\n if (isDate(d)) {\n const year = d.getFullYear();\n const month = `${d.getMonth() + 1}`;\n const day = `${d.getDate()}`;\n return `${year}-${month}-${day}`;\n }\n return '';\n}\n\n/**\n * The default function used to parse a String as Date, passed to the `parse`\n * prop.\n * @param {String} str\n * @return {Date}\n */\nexport function defaultParse(str) {\n if (typeof str !== 'string') {\n return undefined;\n }\n const split = str.split('-');\n if (split.length !== 3) {\n return undefined;\n }\n const year = parseInt(split[0], 10);\n const month = parseInt(split[1], 10) - 1;\n const day = parseInt(split[2], 10);\n if (\n isNaN(year) ||\n String(year).length > 4 ||\n isNaN(month) ||\n isNaN(day) ||\n day <= 0 ||\n day > 31 ||\n month < 0 ||\n month >= 12\n ) {\n return undefined;\n }\n\n return new Date(year, month, day, 12, 0, 0, 0); // always set noon to avoid time zone issues\n}\n\nexport default class DayPickerInput extends React.Component {\n static propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(Date)]),\n inputProps: PropTypes.object,\n placeholder: PropTypes.string,\n\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n\n formatDate: PropTypes.func,\n parseDate: PropTypes.func,\n typedValue: PropTypes.string,\n\n showOverlay: PropTypes.bool,\n dayPickerProps: PropTypes.object,\n hideOnDayClick: PropTypes.bool,\n clickUnselectsDay: PropTypes.bool,\n keepFocus: PropTypes.bool,\n component: PropTypes.any,\n overlayComponent: PropTypes.any,\n\n style: PropTypes.object,\n classNames: PropTypes.shape({\n container: PropTypes.string,\n overlayWrapper: PropTypes.string,\n overlay: PropTypes.string.isRequired,\n }),\n\n onDayChange: PropTypes.func,\n onDayPickerHide: PropTypes.func,\n onDayPickerShow: PropTypes.func,\n onChange: PropTypes.func,\n onClick: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onKeyUp: PropTypes.func,\n };\n\n static defaultProps = {\n dayPickerProps: {},\n value: '',\n typedValue: '',\n placeholder: 'YYYY-M-D',\n format: 'L',\n formatDate: defaultFormat,\n parseDate: defaultParse,\n showOverlay: false,\n hideOnDayClick: true,\n clickUnselectsDay: false,\n keepFocus: true,\n component: 'input',\n inputProps: {},\n overlayComponent: OverlayComponent,\n classNames: {\n container: 'DayPickerInput',\n overlayWrapper: 'DayPickerInput-OverlayWrapper',\n overlay: 'DayPickerInput-Overlay',\n },\n };\n\n input = null;\n\n daypicker = null;\n\n clickTimeout = null;\n\n hideTimeout = null;\n\n inputBlurTimeout = null;\n\n inputFocusTimeout = null;\n\n constructor(props) {\n super(props);\n\n this.state = this.getInitialStateFromProps(props);\n this.state.showOverlay = props.showOverlay;\n\n this.hideAfterDayClick = this.hideAfterDayClick.bind(this);\n this.handleInputClick = this.handleInputClick.bind(this);\n this.handleInputFocus = this.handleInputFocus.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputKeyUp = this.handleInputKeyUp.bind(this);\n this.handleDayClick = this.handleDayClick.bind(this);\n this.handleMonthChange = this.handleMonthChange.bind(this);\n this.handleOverlayFocus = this.handleOverlayFocus.bind(this);\n this.handleOverlayBlur = this.handleOverlayBlur.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n const newState = {};\n\n // Current props\n const { value, formatDate, format, dayPickerProps } = this.props;\n\n // Update the input value if `value`, `dayPickerProps.locale` or `format`\n // props have changed\n if (\n value !== prevProps.value ||\n dayPickerProps.locale !== prevProps.dayPickerProps.locale ||\n format !== prevProps.format\n ) {\n if (isDate(value)) {\n newState.value = formatDate(value, format, dayPickerProps.locale);\n } else {\n newState.value = value;\n }\n }\n\n // Update the month if the months from props changed\n const prevMonth = prevProps.dayPickerProps.month;\n if (\n dayPickerProps.month &&\n dayPickerProps.month !== prevMonth &&\n !isSameMonth(dayPickerProps.month, prevMonth)\n ) {\n newState.month = dayPickerProps.month;\n }\n\n // Updated the selected days from props if they changed\n if (prevProps.dayPickerProps.selectedDays !== dayPickerProps.selectedDays) {\n newState.selectedDays = dayPickerProps.selectedDays;\n }\n\n if (Object.keys(newState).length > 0) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(newState);\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this.clickTimeout);\n clearTimeout(this.hideTimeout);\n clearTimeout(this.inputFocusTimeout);\n clearTimeout(this.inputBlurTimeout);\n clearTimeout(this.overlayBlurTimeout);\n }\n\n getInitialMonthFromProps(props) {\n const { dayPickerProps, format } = props;\n let day;\n if (props.value) {\n if (isDate(props.value)) {\n day = props.value;\n } else {\n day = props.parseDate(props.value, format, dayPickerProps.locale);\n }\n }\n return (\n dayPickerProps.initialMonth || dayPickerProps.month || day || new Date()\n );\n }\n\n getInitialStateFromProps(props) {\n const { dayPickerProps, formatDate, format, typedValue } = props;\n let { value } = props;\n if (props.value && isDate(props.value)) {\n value = formatDate(props.value, format, dayPickerProps.locale);\n }\n\n return {\n value,\n typedValue,\n month: this.getInitialMonthFromProps(props),\n selectedDays: dayPickerProps.selectedDays,\n };\n }\n\n getInput() {\n return this.input;\n }\n\n getDayPicker() {\n return this.daypicker;\n }\n\n /**\n * Update the component's state and fire the `onDayChange` event passing the\n * day's modifiers to it.\n *\n * @param {Date} day - Will be used for changing the month\n * @param {String} value - Input field value\n * @private\n */\n updateState(day, value, callback) {\n const { dayPickerProps, onDayChange } = this.props;\n this.setState({ month: day, value, typedValue: '' }, () => {\n if (callback) {\n callback();\n }\n if (!onDayChange) {\n return;\n }\n const modifiersObj = {\n disabled: dayPickerProps.disabledDays,\n selected: dayPickerProps.selectedDays,\n ...dayPickerProps.modifiers,\n };\n const modifiers = getModifiersForDay(day, modifiersObj).reduce(\n (obj, modifier) => ({\n ...obj,\n [modifier]: true,\n }),\n {}\n );\n onDayChange(day, modifiers, this);\n });\n }\n\n /**\n * Show the Day Picker overlay.\n *\n * @memberof DayPickerInput\n */\n showDayPicker() {\n const { parseDate, format, dayPickerProps } = this.props;\n const { value, showOverlay } = this.state;\n if (showOverlay) {\n return;\n }\n // Reset the current displayed month when showing the overlay\n const month = value\n ? parseDate(value, format, dayPickerProps.locale) // Use the month in the input field\n : this.getInitialMonthFromProps(this.props); // Restore the month from the props\n this.setState(\n state => ({\n showOverlay: true,\n month: month || state.month,\n }),\n () => {\n if (this.props.onDayPickerShow) this.props.onDayPickerShow();\n }\n );\n }\n\n /**\n * Hide the Day Picker overlay\n *\n * @memberof DayPickerInput\n */\n hideDayPicker() {\n if (this.state.showOverlay === false) {\n return;\n }\n this.setState({ showOverlay: false }, () => {\n if (this.props.onDayPickerHide) this.props.onDayPickerHide();\n });\n }\n\n hideAfterDayClick() {\n if (!this.props.hideOnDayClick) {\n return;\n }\n this.hideTimeout = setTimeout(() => {\n this.overlayHasFocus = false;\n this.hideDayPicker();\n }, HIDE_TIMEOUT);\n }\n\n handleInputClick(e) {\n this.showDayPicker();\n if (this.props.inputProps.onClick) {\n e.persist();\n this.props.inputProps.onClick(e);\n }\n }\n\n handleInputFocus(e) {\n this.showDayPicker();\n // Set `overlayHasFocus` after a timeout so the overlay can be hidden when\n // the input is blurred\n this.inputFocusTimeout = setTimeout(() => {\n this.overlayHasFocus = false;\n }, 2);\n if (this.props.inputProps.onFocus) {\n e.persist();\n this.props.inputProps.onFocus(e);\n }\n }\n\n // When the input is blurred, the overlay should disappear. However the input\n // is blurred also when the user interacts with the overlay (e.g. the overlay\n // get the focus by clicking it). In these cases, the overlay should not be\n // hidden. There are different approaches to avoid hiding the overlay when\n // this happens, but the only cross-browser hack we’ve found is to set all\n // these timeouts in code before changing `overlayHasFocus`.\n handleInputBlur(e) {\n this.inputBlurTimeout = setTimeout(() => {\n if (!this.overlayHasFocus) {\n this.hideDayPicker();\n }\n }, 1);\n if (this.props.inputProps.onBlur) {\n e.persist();\n this.props.inputProps.onBlur(e);\n }\n }\n\n handleOverlayFocus(e) {\n e.preventDefault();\n this.overlayHasFocus = true;\n if (\n !this.props.keepFocus ||\n !this.input ||\n typeof this.input.focus !== 'function'\n ) {\n return;\n }\n this.input.focus();\n }\n\n handleOverlayBlur() {\n // We need to set a timeout otherwise IE11 will hide the overlay when\n // focusing it\n this.overlayBlurTimeout = setTimeout(() => {\n this.overlayHasFocus = false;\n }, 3);\n }\n\n handleInputChange(e) {\n const {\n dayPickerProps,\n format,\n inputProps,\n onDayChange,\n parseDate,\n } = this.props;\n if (inputProps.onChange) {\n e.persist();\n inputProps.onChange(e);\n }\n const { value } = e.target;\n if (value.trim() === '') {\n this.setState({ value, typedValue: '' });\n if (onDayChange) onDayChange(undefined, {}, this);\n return;\n }\n const day = parseDate(value, format, dayPickerProps.locale);\n if (!day) {\n // Day is invalid: we save the value in the typedValue state\n this.setState({ value, typedValue: value });\n if (onDayChange) onDayChange(undefined, {}, this);\n return;\n }\n this.updateState(day, value);\n }\n\n handleInputKeyDown(e) {\n if (e.keyCode === TAB) {\n this.hideDayPicker();\n } else {\n this.showDayPicker();\n }\n if (this.props.inputProps.onKeyDown) {\n e.persist();\n this.props.inputProps.onKeyDown(e);\n }\n }\n\n handleInputKeyUp(e) {\n if (e.keyCode === ESC) {\n this.hideDayPicker();\n } else {\n this.showDayPicker();\n }\n if (this.props.inputProps.onKeyUp) {\n e.persist();\n this.props.inputProps.onKeyUp(e);\n }\n }\n\n handleMonthChange(month) {\n this.setState({ month }, () => {\n if (\n this.props.dayPickerProps &&\n this.props.dayPickerProps.onMonthChange\n ) {\n this.props.dayPickerProps.onMonthChange(month);\n }\n });\n }\n\n handleDayClick(day, modifiers, e) {\n const {\n clickUnselectsDay,\n dayPickerProps,\n onDayChange,\n formatDate,\n format,\n } = this.props;\n if (dayPickerProps.onDayClick) {\n dayPickerProps.onDayClick(day, modifiers, e);\n }\n\n // Do nothing if the day is disabled\n if (\n modifiers.disabled ||\n (dayPickerProps &&\n dayPickerProps.classNames &&\n modifiers[dayPickerProps.classNames.disabled])\n ) {\n return;\n }\n\n // If the clicked day is already selected, remove the clicked day\n // from the selected days and empty the field value\n if (modifiers.selected && clickUnselectsDay) {\n let { selectedDays } = this.state;\n if (Array.isArray(selectedDays)) {\n selectedDays = selectedDays.slice(0);\n const selectedDayIdx = selectedDays.indexOf(day);\n selectedDays.splice(selectedDayIdx, 1);\n } else if (selectedDays) {\n selectedDays = null;\n }\n\n this.setState(\n { value: '', typedValue: '', selectedDays },\n this.hideAfterDayClick\n );\n\n if (onDayChange) {\n onDayChange(undefined, modifiers, this);\n }\n return;\n }\n\n const value = formatDate(day, format, dayPickerProps.locale);\n this.setState({ value, typedValue: undefined, month: day }, () => {\n if (onDayChange) {\n onDayChange(day, modifiers, this);\n }\n this.hideAfterDayClick();\n });\n }\n\n renderOverlay() {\n const {\n classNames,\n dayPickerProps,\n parseDate,\n formatDate,\n format,\n } = this.props;\n const { selectedDays, value } = this.state;\n let selectedDay;\n if (!selectedDays && value) {\n const day = parseDate(value, format, dayPickerProps.locale);\n if (day) {\n selectedDay = day;\n }\n } else if (selectedDays) {\n selectedDay = selectedDays;\n }\n let onTodayButtonClick;\n if (dayPickerProps.todayButton) {\n // Set the current day when clicking the today button\n onTodayButtonClick = () =>\n this.updateState(\n new Date(),\n formatDate(new Date(), format, dayPickerProps.locale),\n this.hideAfterDayClick\n );\n }\n const Overlay = this.props.overlayComponent;\n return (\n <Overlay\n classNames={classNames}\n month={this.state.month}\n selectedDay={selectedDay}\n input={this.input}\n tabIndex={0} // tabIndex is necessary to catch focus/blur events on Safari\n onFocus={this.handleOverlayFocus}\n onBlur={this.handleOverlayBlur}\n >\n <DayPicker\n ref={el => (this.daypicker = el)}\n onTodayButtonClick={onTodayButtonClick}\n {...dayPickerProps}\n month={this.state.month}\n selectedDays={selectedDay}\n onDayClick={this.handleDayClick}\n onMonthChange={this.handleMonthChange}\n />\n </Overlay>\n );\n }\n\n render() {\n const Input = this.props.component;\n const { inputProps } = this.props;\n return (\n <div className={this.props.classNames.container} style={this.props.style}>\n <Input\n ref={el => (this.input = el)}\n placeholder={this.props.placeholder}\n {...inputProps}\n value={this.state.value || this.state.typedValue}\n onChange={this.handleInputChange}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleInputKeyDown}\n onKeyUp={this.handleInputKeyUp}\n onClick={!inputProps.disabled ? this.handleInputClick : undefined}\n />\n {this.state.showOverlay && this.renderOverlay()}\n </div>\n );\n }\n}\n"]}
|
package/lib/src/Helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Helpers.js"],"names":["cancelEvent","getFirstDayOfMonth","getDaysInMonth","getModifiersFromProps","getFirstDayOfWeekFromProps","isRangeOfDates","getMonthsDiff","getWeekArray","startOfMonth","getDayNodes","nodeListToArray","hasOwnProp","e","preventDefault","stopPropagation","d","Date","getFullYear","getMonth","resultDate","setMonth","setDate","getDate","props","modifiers","selectedDays","classNames","selected","disabledDays","disabled","firstDayOfWeek","locale","localeUtils","isNaN","getFirstDayOfWeek","value","from","to","d1","d2","fixedWeeks","daysInMonth","dayArray","week","weekArray","i","push","forEach","length","day","getDay","indexOf","firstWeek","outsideDate","unshift","lastWeek","lastExtraWeek","lastDay","extraWeek","j","newDate","setHours","node","outsideClassName","outside","dayQuery","replace","outsideDayQuery","selector","querySelectorAll","nodeList","Array","prototype","slice","call","obj","prop","Object","hasOwnProperty"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../../src/Helpers.js"],"names":["cancelEvent","getFirstDayOfMonth","getDaysInMonth","getModifiersFromProps","getFirstDayOfWeekFromProps","isRangeOfDates","getMonthsDiff","getWeekArray","startOfMonth","getDayNodes","nodeListToArray","hasOwnProp","e","preventDefault","stopPropagation","d","Date","getFullYear","getMonth","resultDate","setMonth","setDate","getDate","props","modifiers","selectedDays","classNames","selected","disabledDays","disabled","firstDayOfWeek","locale","localeUtils","isNaN","getFirstDayOfWeek","value","from","to","d1","d2","fixedWeeks","daysInMonth","dayArray","week","weekArray","i","push","forEach","length","day","getDay","indexOf","firstWeek","outsideDate","unshift","lastWeek","lastExtraWeek","lastDay","extraWeek","j","newDate","setHours","node","outsideClassName","defaultClassNames","outside","dayQuery","replace","outsideDayQuery","selector","querySelectorAll","nodeList","Array","prototype","slice","call","obj","prop","Object","hasOwnProperty"],"mappings":"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","file":"Helpers.js","sourcesContent":["import { clone } from './DateUtils';\nimport { getFirstDayOfWeek } from './LocaleUtils';\nimport defaultClassNames from './classNames';\n\nexport function cancelEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\n\nexport function getFirstDayOfMonth(d) {\n return new Date(d.getFullYear(), d.getMonth(), 1, 12);\n}\n\nexport function getDaysInMonth(d) {\n const resultDate = getFirstDayOfMonth(d);\n\n resultDate.setMonth(resultDate.getMonth() + 1);\n resultDate.setDate(resultDate.getDate() - 1);\n\n return resultDate.getDate();\n}\n\nexport function getModifiersFromProps(props) {\n const modifiers = { ...props.modifiers };\n if (props.selectedDays) {\n modifiers[props.classNames.selected] = props.selectedDays;\n }\n if (props.disabledDays) {\n modifiers[props.classNames.disabled] = props.disabledDays;\n }\n return modifiers;\n}\n\nexport function getFirstDayOfWeekFromProps(props) {\n const { firstDayOfWeek, locale = 'en', localeUtils = {} } = props;\n if (!isNaN(firstDayOfWeek)) {\n return firstDayOfWeek;\n }\n if (localeUtils.getFirstDayOfWeek) {\n return localeUtils.getFirstDayOfWeek(locale);\n }\n return 0;\n}\n\nexport function isRangeOfDates(value) {\n return !!(value && value.from && value.to);\n}\n\nexport function getMonthsDiff(d1, d2) {\n return (\n d2.getMonth() - d1.getMonth() + 12 * (d2.getFullYear() - d1.getFullYear())\n );\n}\n\nexport function getWeekArray(\n d,\n firstDayOfWeek = getFirstDayOfWeek(),\n fixedWeeks\n) {\n const daysInMonth = getDaysInMonth(d);\n const dayArray = [];\n\n let week = [];\n const weekArray = [];\n\n for (let i = 1; i <= daysInMonth; i += 1) {\n dayArray.push(new Date(d.getFullYear(), d.getMonth(), i, 12));\n }\n\n dayArray.forEach(day => {\n if (week.length > 0 && day.getDay() === firstDayOfWeek) {\n weekArray.push(week);\n week = [];\n }\n week.push(day);\n if (dayArray.indexOf(day) === dayArray.length - 1) {\n weekArray.push(week);\n }\n });\n\n // unshift days to start the first week\n const firstWeek = weekArray[0];\n for (let i = 7 - firstWeek.length; i > 0; i -= 1) {\n const outsideDate = clone(firstWeek[0]);\n outsideDate.setDate(firstWeek[0].getDate() - 1);\n firstWeek.unshift(outsideDate);\n }\n\n // push days until the end of the last week\n const lastWeek = weekArray[weekArray.length - 1];\n for (let i = lastWeek.length; i < 7; i += 1) {\n const outsideDate = clone(lastWeek[lastWeek.length - 1]);\n outsideDate.setDate(lastWeek[lastWeek.length - 1].getDate() + 1);\n lastWeek.push(outsideDate);\n }\n\n // add extra weeks to reach 6 weeks\n if (fixedWeeks && weekArray.length < 6) {\n let lastExtraWeek;\n\n for (let i = weekArray.length; i < 6; i += 1) {\n lastExtraWeek = weekArray[weekArray.length - 1];\n const lastDay = lastExtraWeek[lastExtraWeek.length - 1];\n const extraWeek = [];\n\n for (let j = 0; j < 7; j += 1) {\n const outsideDate = clone(lastDay);\n outsideDate.setDate(lastDay.getDate() + j + 1);\n extraWeek.push(outsideDate);\n }\n\n weekArray.push(extraWeek);\n }\n }\n\n return weekArray;\n}\n\nexport function startOfMonth(d) {\n const newDate = clone(d);\n newDate.setDate(1);\n newDate.setHours(12, 0, 0, 0); // always set noon to avoid time zone issues\n return newDate;\n}\n\nexport function getDayNodes(node, classNames) {\n let outsideClassName;\n if (classNames === defaultClassNames) {\n // When using CSS modules prefix the modifier as required by the BEM syntax\n outsideClassName = `${classNames.day}--${classNames.outside}`;\n } else {\n outsideClassName = `${classNames.outside}`;\n }\n const dayQuery = classNames.day.replace(/ /g, '.');\n const outsideDayQuery = outsideClassName.replace(/ /g, '.');\n const selector = `.${dayQuery}:not(.${outsideDayQuery})`;\n return node.querySelectorAll(selector);\n}\n\nexport function nodeListToArray(nodeList) {\n return Array.prototype.slice.call(nodeList, 0);\n}\n\nexport function hasOwnProp(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n"]}
|
package/lib/src/Month.js
CHANGED
|
@@ -180,7 +180,7 @@ var Month = function (_Component) {
|
|
|
180
180
|
'div',
|
|
181
181
|
{
|
|
182
182
|
className: classNames.weekNumber,
|
|
183
|
-
tabIndex: 0,
|
|
183
|
+
tabIndex: onWeekClick ? 0 : -1,
|
|
184
184
|
role: 'gridcell',
|
|
185
185
|
onClick: onWeekClick ? function (e) {
|
|
186
186
|
return onWeekClick(weekNumber, week, e);
|
|
@@ -202,14 +202,14 @@ var Month = function (_Component) {
|
|
|
202
202
|
return Month;
|
|
203
203
|
}(_react.Component);
|
|
204
204
|
|
|
205
|
-
|
|
206
|
-
Month.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
205
|
+
Month.propTypes = {
|
|
207
206
|
classNames: _propTypes2.default.shape({
|
|
208
207
|
body: _propTypes2.default.string.isRequired,
|
|
209
208
|
month: _propTypes2.default.string.isRequired,
|
|
210
209
|
outside: _propTypes2.default.string.isRequired,
|
|
211
210
|
today: _propTypes2.default.string.isRequired,
|
|
212
|
-
week: _propTypes2.default.string.isRequired
|
|
211
|
+
week: _propTypes2.default.string.isRequired,
|
|
212
|
+
weekNumber: _propTypes2.default.string.isRequired
|
|
213
213
|
}).isRequired,
|
|
214
214
|
tabIndex: _propTypes2.default.number,
|
|
215
215
|
|
|
@@ -247,5 +247,6 @@ Month.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
247
247
|
onDayTouchEnd: _propTypes2.default.func,
|
|
248
248
|
onDayTouchStart: _propTypes2.default.func,
|
|
249
249
|
onWeekClick: _propTypes2.default.func
|
|
250
|
-
}
|
|
250
|
+
};
|
|
251
|
+
exports.default = Month;
|
|
251
252
|
//# sourceMappingURL=Month.js.map
|