baseui 11.0.1 → 11.0.2
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/datepicker/calendar.js +16 -11
- package/datepicker/calendar.js.flow +12 -9
- package/datepicker/datepicker.js +58 -58
- package/datepicker/datepicker.js.flow +51 -34
- package/datepicker/stateful-calendar.js +6 -1
- package/datepicker/stateful-calendar.js.flow +8 -1
- package/datepicker/stateful-container.js +23 -2
- package/datepicker/stateful-container.js.flow +17 -4
- package/datepicker/stateful-datepicker.js +6 -1
- package/datepicker/stateful-datepicker.js.flow +7 -1
- package/datepicker/types.js.flow +21 -43
- package/es/datepicker/calendar.js +15 -10
- package/es/datepicker/datepicker.js +52 -52
- package/es/datepicker/stateful-calendar.js +6 -1
- package/es/datepicker/stateful-container.js +22 -2
- package/es/datepicker/stateful-datepicker.js +6 -1
- package/es/snackbar/snackbar-context.js +1 -1
- package/esm/datepicker/calendar.js +16 -11
- package/esm/datepicker/datepicker.js +58 -58
- package/esm/datepicker/stateful-calendar.js +6 -1
- package/esm/datepicker/stateful-container.js +23 -2
- package/esm/datepicker/stateful-datepicker.js +6 -1
- package/esm/snackbar/snackbar-context.js +1 -1
- package/package.json +1 -1
- package/snackbar/snackbar-context.js +1 -1
- package/snackbar/snackbar-context.js.flow +1 -1
- package/tag/types.js.flow +1 -1
package/datepicker/calendar.js
CHANGED
|
@@ -333,12 +333,12 @@ var Calendar = /*#__PURE__*/function (_React$Component) {
|
|
|
333
333
|
_defineProperty(_assertThisInitialized(_this), "handleDateChange", function (data) {
|
|
334
334
|
var _this$props$onChange = _this.props.onChange,
|
|
335
335
|
onChange = _this$props$onChange === void 0 ? function (params) {} : _this$props$onChange;
|
|
336
|
-
var updatedDate = data.date; //
|
|
337
|
-
|
|
338
|
-
var newTimeState = _toConsumableArray(_this.state.time); // Apply the currently selected time values (saved in state) to the updated date
|
|
339
|
-
|
|
336
|
+
var updatedDate = data.date; // Apply the currently selected time values (saved in state) to the updated date
|
|
340
337
|
|
|
341
338
|
if (Array.isArray(data.date)) {
|
|
339
|
+
// We'll need to update the date in time values of internal state
|
|
340
|
+
var newTimeState = _toConsumableArray(_this.state.time);
|
|
341
|
+
|
|
342
342
|
var start = data.date[0] ? _this.dateHelpers.applyDateToTime(newTimeState[0], data.date[0]) : null;
|
|
343
343
|
var end = data.date[1] ? _this.dateHelpers.applyDateToTime(newTimeState[1], data.date[1]) : null;
|
|
344
344
|
newTimeState[0] = start;
|
|
@@ -348,16 +348,21 @@ var Calendar = /*#__PURE__*/function (_React$Component) {
|
|
|
348
348
|
newTimeState[1] = end;
|
|
349
349
|
} else {
|
|
350
350
|
updatedDate = [start];
|
|
351
|
-
}
|
|
351
|
+
} // Update the date in time values of internal state
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
_this.setState({
|
|
355
|
+
time: newTimeState
|
|
356
|
+
});
|
|
352
357
|
} else if (!Array.isArray(_this.props.value) && data.date) {
|
|
353
|
-
|
|
354
|
-
updatedDate = newTimeState[0];
|
|
355
|
-
} // Update the date in time values of internal state
|
|
358
|
+
var _newTimeState = _this.dateHelpers.applyDateToTime(_this.state.time[0], data.date);
|
|
356
359
|
|
|
360
|
+
updatedDate = _newTimeState; // Update the date in time values of internal state
|
|
357
361
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
362
|
+
_this.setState({
|
|
363
|
+
time: [_newTimeState]
|
|
364
|
+
});
|
|
365
|
+
}
|
|
361
366
|
|
|
362
367
|
onChange({
|
|
363
368
|
date: updatedDate
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
import dateFnsAdapter from './utils/date-fns-adapter.js';
|
|
23
23
|
import DateHelpers from './utils/date-helpers.js';
|
|
24
24
|
import { getOverrides, mergeOverrides } from '../helpers/overrides.js';
|
|
25
|
-
import type { CalendarPropsT, CalendarInternalState
|
|
25
|
+
import type { CalendarPropsT, CalendarInternalState } from './types.js';
|
|
26
26
|
import { DENSITY, ORIENTATION } from './constants.js';
|
|
27
27
|
|
|
28
28
|
export default class Calendar<T = Date> extends React.Component<
|
|
@@ -134,7 +134,7 @@ export default class Calendar<T = Date> extends React.Component<
|
|
|
134
134
|
return monthDelta >= 0 && monthDelta < (this.props.monthsShown || 1);
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
-
getSingleDate(value:
|
|
137
|
+
getSingleDate(value: ?T | $ReadOnlyArray<?T>): ?T {
|
|
138
138
|
// need to check this.props.range but flow would complain
|
|
139
139
|
// at the return value in the else clause
|
|
140
140
|
if (Array.isArray(value)) {
|
|
@@ -339,13 +339,13 @@ export default class Calendar<T = Date> extends React.Component<
|
|
|
339
339
|
|
|
340
340
|
/** Responsible for merging time values into date values. Note: the 'Day' component
|
|
341
341
|
* determines how the days themselves change when a new day is selected. */
|
|
342
|
-
handleDateChange: ({ date:
|
|
342
|
+
handleDateChange: ({ +date: ?T | Array<?T> }) => void = (data) => {
|
|
343
343
|
const { onChange = (params) => {} } = this.props;
|
|
344
344
|
let updatedDate = data.date;
|
|
345
|
-
// We'll need to update the date in time values of internal state
|
|
346
|
-
const newTimeState = [...this.state.time];
|
|
347
345
|
// Apply the currently selected time values (saved in state) to the updated date
|
|
348
346
|
if (Array.isArray(data.date)) {
|
|
347
|
+
// We'll need to update the date in time values of internal state
|
|
348
|
+
const newTimeState = [...this.state.time];
|
|
349
349
|
const start = data.date[0]
|
|
350
350
|
? this.dateHelpers.applyDateToTime(newTimeState[0], data.date[0])
|
|
351
351
|
: null;
|
|
@@ -359,13 +359,16 @@ export default class Calendar<T = Date> extends React.Component<
|
|
|
359
359
|
} else {
|
|
360
360
|
updatedDate = [start];
|
|
361
361
|
}
|
|
362
|
+
// Update the date in time values of internal state
|
|
363
|
+
this.setState({ time: newTimeState });
|
|
362
364
|
} else if (!Array.isArray(this.props.value) && data.date) {
|
|
363
|
-
newTimeState
|
|
364
|
-
updatedDate = newTimeState
|
|
365
|
+
const newTimeState = this.dateHelpers.applyDateToTime(this.state.time[0], data.date);
|
|
366
|
+
updatedDate = newTimeState;
|
|
367
|
+
|
|
368
|
+
// Update the date in time values of internal state
|
|
369
|
+
this.setState({ time: [newTimeState] });
|
|
365
370
|
}
|
|
366
371
|
|
|
367
|
-
// Update the date in time values of internal state
|
|
368
|
-
this.setState({ time: newTimeState });
|
|
369
372
|
onChange({ date: updatedDate });
|
|
370
373
|
};
|
|
371
374
|
|
package/datepicker/datepicker.js
CHANGED
|
@@ -37,6 +37,10 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
|
|
|
37
37
|
|
|
38
38
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
39
39
|
|
|
40
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
41
|
+
|
|
42
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
43
|
+
|
|
40
44
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
41
45
|
|
|
42
46
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -45,10 +49,6 @@ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.it
|
|
|
45
49
|
|
|
46
50
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
47
51
|
|
|
48
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
49
|
-
|
|
50
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
51
|
-
|
|
52
52
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
53
53
|
|
|
54
54
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
@@ -126,7 +126,39 @@ var Datepicker = /*#__PURE__*/function (_React$Component) {
|
|
|
126
126
|
|
|
127
127
|
_defineProperty(_assertThisInitialized(_this), "dateHelpers", void 0);
|
|
128
128
|
|
|
129
|
-
_defineProperty(_assertThisInitialized(_this), "
|
|
129
|
+
_defineProperty(_assertThisInitialized(_this), "handleChange", function (date) {
|
|
130
|
+
var onChange = _this.props.onChange;
|
|
131
|
+
var onRangeChange = _this.props.onRangeChange;
|
|
132
|
+
|
|
133
|
+
if (Array.isArray(date)) {
|
|
134
|
+
if (onChange && date.every(Boolean)) {
|
|
135
|
+
// flowlint-next-line unclear-type:off
|
|
136
|
+
onChange({
|
|
137
|
+
date: date
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (onRangeChange) {
|
|
142
|
+
onRangeChange({
|
|
143
|
+
date: _toConsumableArray(date)
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
} else {
|
|
147
|
+
if (onChange) {
|
|
148
|
+
onChange({
|
|
149
|
+
date: date
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if (onRangeChange) {
|
|
154
|
+
onRangeChange({
|
|
155
|
+
date: date
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
_defineProperty(_assertThisInitialized(_this), "onCalendarSelect", function (data) {
|
|
130
162
|
var isOpen = false;
|
|
131
163
|
var isPseudoFocused = false;
|
|
132
164
|
var calendarFocused = false;
|
|
@@ -203,9 +235,7 @@ var Datepicker = /*#__PURE__*/function (_React$Component) {
|
|
|
203
235
|
inputValue: _this.formatDisplayValue(nextDate)
|
|
204
236
|
}));
|
|
205
237
|
|
|
206
|
-
_this.
|
|
207
|
-
date: nextDate
|
|
208
|
-
});
|
|
238
|
+
_this.handleChange(nextDate);
|
|
209
239
|
});
|
|
210
240
|
|
|
211
241
|
_defineProperty(_assertThisInitialized(_this), "formatDisplayValue", function (date) {
|
|
@@ -309,16 +339,10 @@ var Datepicker = /*#__PURE__*/function (_React$Component) {
|
|
|
309
339
|
var formatString = _this.normalizeDashes(_this.props.formatString);
|
|
310
340
|
|
|
311
341
|
if (typeof mask === 'string' && inputValue === mask.replace(/9/g, ' ') || inputValue.length === 0) {
|
|
312
|
-
if (_this.props.
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
});
|
|
317
|
-
} else {
|
|
318
|
-
_this.props.onChange({
|
|
319
|
-
date: null
|
|
320
|
-
});
|
|
321
|
-
}
|
|
342
|
+
if (_this.props.range) {
|
|
343
|
+
_this.handleChange([]);
|
|
344
|
+
} else {
|
|
345
|
+
_this.handleChange(null);
|
|
322
346
|
}
|
|
323
347
|
}
|
|
324
348
|
|
|
@@ -349,19 +373,13 @@ var Datepicker = /*#__PURE__*/function (_React$Component) {
|
|
|
349
373
|
endDate = parseDateString(right);
|
|
350
374
|
}
|
|
351
375
|
|
|
352
|
-
var
|
|
353
|
-
|
|
354
|
-
if (onChange) {
|
|
355
|
-
var datesValid = _this.dateHelpers.isValid(startDate) && _this.dateHelpers.isValid(endDate); // added equal case so that times within the same day can be expressed
|
|
376
|
+
var datesValid = _this.dateHelpers.isValid(startDate) && _this.dateHelpers.isValid(endDate); // added equal case so that times within the same day can be expressed
|
|
356
377
|
|
|
357
378
|
|
|
358
|
-
|
|
379
|
+
var rangeValid = _this.dateHelpers.isAfter(endDate, startDate) || _this.dateHelpers.isEqual(startDate, endDate);
|
|
359
380
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
date: [startDate, endDate]
|
|
363
|
-
});
|
|
364
|
-
}
|
|
381
|
+
if (datesValid && rangeValid) {
|
|
382
|
+
_this.handleChange([startDate, endDate]);
|
|
365
383
|
}
|
|
366
384
|
} else {
|
|
367
385
|
var dateString = _this.normalizeDashes(inputValue);
|
|
@@ -379,11 +397,10 @@ var Datepicker = /*#__PURE__*/function (_React$Component) {
|
|
|
379
397
|
|
|
380
398
|
var _this$props3 = _this.props,
|
|
381
399
|
displayValueAtRangeIndex = _this$props3.displayValueAtRangeIndex,
|
|
382
|
-
_onChange = _this$props3.onChange,
|
|
383
400
|
range = _this$props3.range,
|
|
384
401
|
value = _this$props3.value;
|
|
385
402
|
|
|
386
|
-
if (date && _this.dateHelpers.isValid(date)
|
|
403
|
+
if (date && _this.dateHelpers.isValid(date)) {
|
|
387
404
|
if (range && Array.isArray(value) && typeof displayValueAtRangeIndex === 'number') {
|
|
388
405
|
var _value = _slicedToArray(value, 2),
|
|
389
406
|
_left = _value[0],
|
|
@@ -393,22 +410,16 @@ var Datepicker = /*#__PURE__*/function (_React$Component) {
|
|
|
393
410
|
_left = date;
|
|
394
411
|
|
|
395
412
|
if (!_right) {
|
|
396
|
-
|
|
397
|
-
date: [_left]
|
|
398
|
-
});
|
|
413
|
+
_this.handleChange([_left]);
|
|
399
414
|
} else {
|
|
400
415
|
if (_this.dateHelpers.isAfter(_right, _left) || _this.dateHelpers.isEqual(_left, _right)) {
|
|
401
|
-
|
|
402
|
-
date: [_left, _right]
|
|
403
|
-
});
|
|
416
|
+
_this.handleChange([_left, _right]);
|
|
404
417
|
} else {
|
|
405
418
|
// Is resetting back to previous value appropriate? Invalid range is not
|
|
406
419
|
// communicated to the user, but if it was not reset the text value would
|
|
407
420
|
// show one value and date value another. This seems a bit better but clearly
|
|
408
421
|
// has a downside.
|
|
409
|
-
|
|
410
|
-
date: _toConsumableArray(value)
|
|
411
|
-
});
|
|
422
|
+
_this.handleChange(_toConsumableArray(value));
|
|
412
423
|
}
|
|
413
424
|
}
|
|
414
425
|
} else if (displayValueAtRangeIndex === 1) {
|
|
@@ -416,26 +427,18 @@ var Datepicker = /*#__PURE__*/function (_React$Component) {
|
|
|
416
427
|
|
|
417
428
|
if (!_left) {
|
|
418
429
|
// If start value is not defined, set start/end to the same day.
|
|
419
|
-
|
|
420
|
-
date: [_right, _right]
|
|
421
|
-
});
|
|
430
|
+
_this.handleChange([_right, _right]);
|
|
422
431
|
} else {
|
|
423
432
|
if (_this.dateHelpers.isAfter(_right, _left) || _this.dateHelpers.isEqual(_left, _right)) {
|
|
424
|
-
|
|
425
|
-
date: [_left, _right]
|
|
426
|
-
});
|
|
433
|
+
_this.handleChange([_left, _right]);
|
|
427
434
|
} else {
|
|
428
435
|
// See comment above about resetting dates on invalid range
|
|
429
|
-
|
|
430
|
-
date: _toConsumableArray(value)
|
|
431
|
-
});
|
|
436
|
+
_this.handleChange(_toConsumableArray(value));
|
|
432
437
|
}
|
|
433
438
|
}
|
|
434
439
|
}
|
|
435
440
|
} else {
|
|
436
|
-
|
|
437
|
-
date: date
|
|
438
|
-
});
|
|
441
|
+
_this.handleChange(date);
|
|
439
442
|
}
|
|
440
443
|
}
|
|
441
444
|
}
|
|
@@ -552,11 +555,6 @@ var Datepicker = /*#__PURE__*/function (_React$Component) {
|
|
|
552
555
|
endDate = _split2$2 === void 0 ? '' : _split2$2;
|
|
553
556
|
|
|
554
557
|
var value = inputRole === _constants.INPUT_ROLE.startDate ? startDate : inputRole === _constants.INPUT_ROLE.endDate ? endDate : this.state.inputValue;
|
|
555
|
-
|
|
556
|
-
var onChange = function onChange(event) {
|
|
557
|
-
return _this3.handleInputChange(event, inputRole);
|
|
558
|
-
};
|
|
559
|
-
|
|
560
558
|
return /*#__PURE__*/React.createElement(InputComponent, _extends({
|
|
561
559
|
"aria-disabled": this.props.disabled,
|
|
562
560
|
"aria-label": this.props['aria-label'] || (this.props.range ? locale.datepicker.ariaLabelRange : locale.datepicker.ariaLabel),
|
|
@@ -573,7 +571,9 @@ var Datepicker = /*#__PURE__*/function (_React$Component) {
|
|
|
573
571
|
},
|
|
574
572
|
onBlur: this.handleInputBlur,
|
|
575
573
|
onKeyDown: this.handleKeyDown,
|
|
576
|
-
onChange: onChange
|
|
574
|
+
onChange: function onChange(event) {
|
|
575
|
+
return _this3.handleInputChange(event, inputRole);
|
|
576
|
+
},
|
|
577
577
|
placeholder: placeholder,
|
|
578
578
|
mask: this.getMask(),
|
|
579
579
|
required: this.props.required,
|
|
@@ -633,7 +633,7 @@ var Datepicker = /*#__PURE__*/function (_React$Component) {
|
|
|
633
633
|
trapTabbing: true,
|
|
634
634
|
value: _this4.props.value
|
|
635
635
|
}, _this4.props, {
|
|
636
|
-
onChange: _this4.
|
|
636
|
+
onChange: _this4.onCalendarSelect,
|
|
637
637
|
selectedInput: _this4.state.selectedInput,
|
|
638
638
|
hasLockedBehavior: _this4.hasLockedBehavior()
|
|
639
639
|
}))
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
StyledStartDate,
|
|
20
20
|
StyledEndDate,
|
|
21
21
|
} from './styled-components.js';
|
|
22
|
-
import type { DatepickerPropsT,
|
|
22
|
+
import type { DatepickerPropsT, InputRoleT } from './types.js';
|
|
23
23
|
import DateHelpers from './utils/date-helpers.js';
|
|
24
24
|
import dateFnsAdapter from './utils/date-fns-adapter.js';
|
|
25
25
|
import type { LocaleT } from '../locale/types.js';
|
|
@@ -78,7 +78,31 @@ export default class Datepicker<T = Date> extends React.Component<DatepickerProp
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
handleChange: (?T | $ReadOnlyArray<?T>) => void = (date) => {
|
|
82
|
+
const onChange = this.props.onChange;
|
|
83
|
+
const onRangeChange = this.props.onRangeChange;
|
|
84
|
+
|
|
85
|
+
if (Array.isArray(date)) {
|
|
86
|
+
if (onChange && date.every(Boolean)) {
|
|
87
|
+
// flowlint-next-line unclear-type:off
|
|
88
|
+
onChange({ date: ((date: any): Array<T>) });
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (onRangeChange) {
|
|
92
|
+
onRangeChange({ date: [...date] });
|
|
93
|
+
}
|
|
94
|
+
} else {
|
|
95
|
+
if (onChange) {
|
|
96
|
+
onChange({ date });
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (onRangeChange) {
|
|
100
|
+
onRangeChange({ date });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
onCalendarSelect: ({ +date: ?T | Array<?T> }) => void = (data) => {
|
|
82
106
|
let isOpen = false;
|
|
83
107
|
let isPseudoFocused = false;
|
|
84
108
|
let calendarFocused = false;
|
|
@@ -150,14 +174,14 @@ export default class Datepicker<T = Date> extends React.Component<DatepickerProp
|
|
|
150
174
|
inputValue: this.formatDisplayValue(nextDate),
|
|
151
175
|
});
|
|
152
176
|
|
|
153
|
-
this.
|
|
177
|
+
this.handleChange(nextDate);
|
|
154
178
|
};
|
|
155
179
|
|
|
156
180
|
getNullDatePlaceholder(formatString: string) {
|
|
157
181
|
return (this.getMask() || formatString).split(INPUT_DELIMITER)[0].replace(/[0-9]|[a-z]/g, ' ');
|
|
158
182
|
}
|
|
159
183
|
|
|
160
|
-
formatDate(date:
|
|
184
|
+
formatDate(date: ?T | $ReadOnlyArray<?T>, formatString: string) {
|
|
161
185
|
const format = (date: T) => {
|
|
162
186
|
if (formatString === DEFAULT_DATE_FORMAT) {
|
|
163
187
|
return this.dateHelpers.format(date, 'slashDate', this.props.locale);
|
|
@@ -180,7 +204,7 @@ export default class Datepicker<T = Date> extends React.Component<DatepickerProp
|
|
|
180
204
|
}
|
|
181
205
|
}
|
|
182
206
|
|
|
183
|
-
formatDisplayValue: (
|
|
207
|
+
formatDisplayValue: (?T | $ReadOnlyArray<?T>) => string = (date) => {
|
|
184
208
|
const { displayValueAtRangeIndex, formatDisplayValue, range } = this.props;
|
|
185
209
|
const formatString = this.normalizeDashes(this.props.formatString);
|
|
186
210
|
|
|
@@ -278,12 +302,10 @@ export default class Datepicker<T = Date> extends React.Component<DatepickerProp
|
|
|
278
302
|
(typeof mask === 'string' && inputValue === mask.replace(/9/g, ' ')) ||
|
|
279
303
|
inputValue.length === 0
|
|
280
304
|
) {
|
|
281
|
-
if (this.props.
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
this.props.onChange({ date: null });
|
|
286
|
-
}
|
|
305
|
+
if (this.props.range) {
|
|
306
|
+
this.handleChange([]);
|
|
307
|
+
} else {
|
|
308
|
+
this.handleChange(null);
|
|
287
309
|
}
|
|
288
310
|
}
|
|
289
311
|
|
|
@@ -307,18 +329,15 @@ export default class Datepicker<T = Date> extends React.Component<DatepickerProp
|
|
|
307
329
|
endDate = parseDateString(right);
|
|
308
330
|
}
|
|
309
331
|
|
|
310
|
-
const
|
|
311
|
-
if (onChange) {
|
|
312
|
-
const datesValid = this.dateHelpers.isValid(startDate) && this.dateHelpers.isValid(endDate);
|
|
332
|
+
const datesValid = this.dateHelpers.isValid(startDate) && this.dateHelpers.isValid(endDate);
|
|
313
333
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
334
|
+
// added equal case so that times within the same day can be expressed
|
|
335
|
+
const rangeValid =
|
|
336
|
+
this.dateHelpers.isAfter(endDate, startDate) ||
|
|
337
|
+
this.dateHelpers.isEqual(startDate, endDate);
|
|
318
338
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
}
|
|
339
|
+
if (datesValid && rangeValid) {
|
|
340
|
+
this.handleChange([startDate, endDate]);
|
|
322
341
|
}
|
|
323
342
|
} else {
|
|
324
343
|
const dateString = this.normalizeDashes(inputValue);
|
|
@@ -333,41 +352,41 @@ export default class Datepicker<T = Date> extends React.Component<DatepickerProp
|
|
|
333
352
|
date = parseDateString(dateString);
|
|
334
353
|
}
|
|
335
354
|
|
|
336
|
-
const { displayValueAtRangeIndex,
|
|
337
|
-
if (date && this.dateHelpers.isValid(date)
|
|
355
|
+
const { displayValueAtRangeIndex, range, value } = this.props;
|
|
356
|
+
if (date && this.dateHelpers.isValid(date)) {
|
|
338
357
|
if (range && Array.isArray(value) && typeof displayValueAtRangeIndex === 'number') {
|
|
339
358
|
let [left, right] = value;
|
|
340
359
|
if (displayValueAtRangeIndex === 0) {
|
|
341
360
|
left = date;
|
|
342
361
|
if (!right) {
|
|
343
|
-
|
|
362
|
+
this.handleChange([left]);
|
|
344
363
|
} else {
|
|
345
364
|
if (this.dateHelpers.isAfter(right, left) || this.dateHelpers.isEqual(left, right)) {
|
|
346
|
-
|
|
365
|
+
this.handleChange([left, right]);
|
|
347
366
|
} else {
|
|
348
367
|
// Is resetting back to previous value appropriate? Invalid range is not
|
|
349
368
|
// communicated to the user, but if it was not reset the text value would
|
|
350
369
|
// show one value and date value another. This seems a bit better but clearly
|
|
351
370
|
// has a downside.
|
|
352
|
-
|
|
371
|
+
this.handleChange([...value]);
|
|
353
372
|
}
|
|
354
373
|
}
|
|
355
374
|
} else if (displayValueAtRangeIndex === 1) {
|
|
356
375
|
right = date;
|
|
357
376
|
if (!left) {
|
|
358
377
|
// If start value is not defined, set start/end to the same day.
|
|
359
|
-
|
|
378
|
+
this.handleChange([right, right]);
|
|
360
379
|
} else {
|
|
361
380
|
if (this.dateHelpers.isAfter(right, left) || this.dateHelpers.isEqual(left, right)) {
|
|
362
|
-
|
|
381
|
+
this.handleChange([left, right]);
|
|
363
382
|
} else {
|
|
364
383
|
// See comment above about resetting dates on invalid range
|
|
365
|
-
|
|
384
|
+
this.handleChange([...value]);
|
|
366
385
|
}
|
|
367
386
|
}
|
|
368
387
|
}
|
|
369
388
|
} else {
|
|
370
|
-
|
|
389
|
+
this.handleChange(date);
|
|
371
390
|
}
|
|
372
391
|
}
|
|
373
392
|
}
|
|
@@ -439,8 +458,6 @@ export default class Datepicker<T = Date> extends React.Component<DatepickerProp
|
|
|
439
458
|
? endDate
|
|
440
459
|
: this.state.inputValue;
|
|
441
460
|
|
|
442
|
-
const onChange = (event) => this.handleInputChange(event, inputRole);
|
|
443
|
-
|
|
444
461
|
return (
|
|
445
462
|
<InputComponent
|
|
446
463
|
aria-disabled={this.props.disabled}
|
|
@@ -459,7 +476,7 @@ export default class Datepicker<T = Date> extends React.Component<DatepickerProp
|
|
|
459
476
|
onFocus={() => this.open(inputRole)}
|
|
460
477
|
onBlur={this.handleInputBlur}
|
|
461
478
|
onKeyDown={this.handleKeyDown}
|
|
462
|
-
onChange={
|
|
479
|
+
onChange={(event) => this.handleInputChange(event, inputRole)}
|
|
463
480
|
placeholder={placeholder}
|
|
464
481
|
mask={this.getMask()}
|
|
465
482
|
required={this.props.required}
|
|
@@ -499,7 +516,7 @@ export default class Datepicker<T = Date> extends React.Component<DatepickerProp
|
|
|
499
516
|
trapTabbing={true}
|
|
500
517
|
value={this.props.value}
|
|
501
518
|
{...this.props}
|
|
502
|
-
onChange={this.
|
|
519
|
+
onChange={this.onCalendarSelect}
|
|
503
520
|
selectedInput={this.state.selectedInput}
|
|
504
521
|
hasLockedBehavior={this.hasLockedBehavior()}
|
|
505
522
|
/>
|
|
@@ -19,6 +19,8 @@ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return
|
|
|
19
19
|
|
|
20
20
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
21
|
|
|
22
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
23
|
+
|
|
22
24
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
23
25
|
|
|
24
26
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
@@ -56,7 +58,10 @@ var StatefulComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
56
58
|
key: "render",
|
|
57
59
|
value: function render() {
|
|
58
60
|
return /*#__PURE__*/React.createElement(_statefulContainer.default, this.props, function (extendedProps) {
|
|
59
|
-
return /*#__PURE__*/React.createElement(_calendar.default, extendedProps
|
|
61
|
+
return /*#__PURE__*/React.createElement(_calendar.default, _extends({}, extendedProps, {
|
|
62
|
+
// flowlint-next-line unclear-type:off
|
|
63
|
+
onChange: extendedProps.onChange
|
|
64
|
+
}));
|
|
60
65
|
});
|
|
61
66
|
}
|
|
62
67
|
}]);
|
|
@@ -18,10 +18,17 @@ class StatefulComponent<T = Date> extends React.Component<PropsT<T>> {
|
|
|
18
18
|
stateReducer: (type, nextState) => nextState,
|
|
19
19
|
onSelect: () => {},
|
|
20
20
|
};
|
|
21
|
+
|
|
21
22
|
render() {
|
|
22
23
|
return (
|
|
23
24
|
<StatefulContainer {...this.props}>
|
|
24
|
-
{(extendedProps) =>
|
|
25
|
+
{(extendedProps) => (
|
|
26
|
+
<Calendar
|
|
27
|
+
{...extendedProps}
|
|
28
|
+
// flowlint-next-line unclear-type:off
|
|
29
|
+
onChange={(extendedProps.onChange: any)}
|
|
30
|
+
/>
|
|
31
|
+
)}
|
|
25
32
|
</StatefulContainer>
|
|
26
33
|
);
|
|
27
34
|
}
|
|
@@ -64,8 +64,29 @@ var StatefulContainer = /*#__PURE__*/function (_React$Component) {
|
|
|
64
64
|
value: date
|
|
65
65
|
});
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
var onChange = _this.props.onChange;
|
|
68
|
+
|
|
69
|
+
if (onChange) {
|
|
70
|
+
if (Array.isArray(date)) {
|
|
71
|
+
if (date.every(Boolean)) {
|
|
72
|
+
// flowlint-next-line unclear-type:off
|
|
73
|
+
onChange({
|
|
74
|
+
date: date
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
} else {
|
|
78
|
+
onChange({
|
|
79
|
+
date: date
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
var onRangeChange = _this.props.onRangeChange;
|
|
85
|
+
|
|
86
|
+
if (onRangeChange) {
|
|
87
|
+
onRangeChange({
|
|
88
|
+
date: date
|
|
89
|
+
});
|
|
69
90
|
}
|
|
70
91
|
});
|
|
71
92
|
|
|
@@ -14,7 +14,6 @@ import type {
|
|
|
14
14
|
StatefulContainerPropsT,
|
|
15
15
|
StateChangeTypeT,
|
|
16
16
|
StateReducerT,
|
|
17
|
-
DateValueT,
|
|
18
17
|
} from './types.js';
|
|
19
18
|
|
|
20
19
|
type InputProps<T> = CalendarPropsT<T> | DatepickerPropsT<T>;
|
|
@@ -34,11 +33,25 @@ class StatefulContainer<T = Date> extends React.Component<PropsT<T>, ContainerSt
|
|
|
34
33
|
this.state = { value, ...props.initialState };
|
|
35
34
|
}
|
|
36
35
|
|
|
37
|
-
onChange: ({ date:
|
|
36
|
+
onChange: ({ +date: ?T | Array<?T> }) => mixed = (data) => {
|
|
38
37
|
const { date } = data;
|
|
39
38
|
this.internalSetState(STATE_CHANGE_TYPE.change, { value: date });
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
|
|
40
|
+
const onChange = this.props.onChange;
|
|
41
|
+
if (onChange) {
|
|
42
|
+
if (Array.isArray(date)) {
|
|
43
|
+
if (date.every(Boolean)) {
|
|
44
|
+
// flowlint-next-line unclear-type:off
|
|
45
|
+
onChange({ date: ((date: any): Array<T>) });
|
|
46
|
+
}
|
|
47
|
+
} else {
|
|
48
|
+
onChange({ date });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const onRangeChange = this.props.onRangeChange;
|
|
53
|
+
if (onRangeChange) {
|
|
54
|
+
onRangeChange({ date });
|
|
42
55
|
}
|
|
43
56
|
};
|
|
44
57
|
|
|
@@ -19,6 +19,8 @@ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return
|
|
|
19
19
|
|
|
20
20
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
21
|
|
|
22
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
23
|
+
|
|
22
24
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
23
25
|
|
|
24
26
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
@@ -56,7 +58,10 @@ var StatefulComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
56
58
|
key: "render",
|
|
57
59
|
value: function render() {
|
|
58
60
|
return /*#__PURE__*/React.createElement(_statefulContainer.default, this.props, function (extendedProps) {
|
|
59
|
-
return /*#__PURE__*/React.createElement(_datepicker.default, extendedProps
|
|
61
|
+
return /*#__PURE__*/React.createElement(_datepicker.default, _extends({}, extendedProps, {
|
|
62
|
+
// flowlint-next-line unclear-type:off
|
|
63
|
+
onChange: extendedProps.onChange
|
|
64
|
+
}));
|
|
60
65
|
});
|
|
61
66
|
}
|
|
62
67
|
}]);
|
|
@@ -21,7 +21,13 @@ class StatefulComponent<T = Date> extends React.Component<PropsT<T>> {
|
|
|
21
21
|
render() {
|
|
22
22
|
return (
|
|
23
23
|
<StatefulContainer {...this.props}>
|
|
24
|
-
{(extendedProps) =>
|
|
24
|
+
{(extendedProps) => (
|
|
25
|
+
<Datepicker
|
|
26
|
+
{...extendedProps}
|
|
27
|
+
// flowlint-next-line unclear-type:off
|
|
28
|
+
onChange={(extendedProps.onChange: any)}
|
|
29
|
+
/>
|
|
30
|
+
)}
|
|
25
31
|
</StatefulContainer>
|
|
26
32
|
);
|
|
27
33
|
}
|