From 4d7c8631ee5b2a067e49d9f8830ac77706b41b31 Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Mon, 9 Nov 2020 16:15:22 -0700 Subject: [PATCH 01/17] conditional focus trap activation --- packages/react-datepicker.js | 192 ++++++++++++------ packages/react-datepicker/docs-site/bundle.js | 43 +++- packages/react-datepicker/src/calendar.jsx | 10 +- packages/react-datepicker/src/index.jsx | 41 +++- 4 files changed, 197 insertions(+), 89 deletions(-) diff --git a/packages/react-datepicker.js b/packages/react-datepicker.js index 7937fe2524c..cfbcdca37ef 100644 --- a/packages/react-datepicker.js +++ b/packages/react-datepicker.js @@ -509,6 +509,13 @@ function delay(fn) { var focusTrap_1 = focusTrap; +var focusTrap$1 = /*#__PURE__*/Object.freeze({ + default: focusTrap_1, + __moduleExports: focusTrap_1 +}); + +var createFocusTrap = ( focusTrap$1 && focusTrap_1 ) || focusTrap$1; + var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -619,7 +626,7 @@ FocusTrap.defaultProps = { tag: 'div', paused: false, focusTrapOptions: {}, - _createFocusTrap: focusTrap_1 + _createFocusTrap: createFocusTrap }; var focusTrapReact = FocusTrap; @@ -3600,7 +3607,8 @@ var Calendar = function (_React$Component) { onDropdownFocus: function onDropdownFocus() {}, monthsShown: 1, forceShowMonthNavigation: false, - timeCaption: "Time" + timeCaption: "Time", + enableFocusTrap: true }; } }]); @@ -4126,6 +4134,7 @@ var Calendar = function (_React$Component) { React__default.createElement( focusTrapReact, { + active: this.props.enableFocusTrap, tag: FocusTrapContainer, focusTrapOptions: { onDeactivate: function onDeactivate() { @@ -4231,7 +4240,8 @@ Calendar.propTypes = { renderCustomHeader: PropTypes.func, renderDayContents: PropTypes.func, updateSelection: PropTypes.func.isRequired, - accessibleMode: PropTypes.bool + accessibleMode: PropTypes.bool, + enableFocusTrap: PropTypes.bool }; var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; @@ -4264,17 +4274,10 @@ var _aFunction = function (it) { return it; }; -var _aFunction$1 = /*#__PURE__*/Object.freeze({ - default: _aFunction, - __moduleExports: _aFunction -}); - -var aFunction = ( _aFunction$1 && _aFunction ) || _aFunction$1; - // optional / simple context binding var _ctx = function (fn, that, length) { - aFunction(fn); + _aFunction(fn); if (that === undefined) return fn; switch (length) { case 1: return function (a) { @@ -4540,17 +4543,31 @@ var _objectKeysInternal = function (object, names) { return result; }; +var _objectKeysInternal$1 = /*#__PURE__*/Object.freeze({ + default: _objectKeysInternal, + __moduleExports: _objectKeysInternal +}); + // IE 8- don't enum bug keys var _enumBugKeys = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); +var _enumBugKeys$1 = /*#__PURE__*/Object.freeze({ + default: _enumBugKeys, + __moduleExports: _enumBugKeys +}); + +var $keys = ( _objectKeysInternal$1 && _objectKeysInternal ) || _objectKeysInternal$1; + +var enumBugKeys = ( _enumBugKeys$1 && _enumBugKeys ) || _enumBugKeys$1; + // 19.1.2.14 / 15.2.3.14 Object.keys(O) var _objectKeys = Object.keys || function keys(O) { - return _objectKeysInternal(O, _enumBugKeys); + return $keys(O, enumBugKeys); }; var f$1 = Object.getOwnPropertySymbols; @@ -4616,7 +4633,14 @@ var assign$1 = createCommonjsModule(function (module) { module.exports = { "default": assign, __esModule: true }; }); -unwrapExports(assign$1); +var assign$2 = unwrapExports(assign$1); + +var assign$3 = /*#__PURE__*/Object.freeze({ + default: assign$2, + __moduleExports: assign$1 +}); + +var _assign = ( assign$3 && assign$2 ) || assign$3; var _extends$1 = createCommonjsModule(function (module, exports) { @@ -4624,7 +4648,7 @@ exports.__esModule = true; -var _assign2 = _interopRequireDefault(assign$1); +var _assign2 = _interopRequireDefault(_assign); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -4674,6 +4698,11 @@ var _stringAt = function (TO_STRING) { }; }; +var _stringAt$1 = /*#__PURE__*/Object.freeze({ + default: _stringAt, + __moduleExports: _stringAt +}); + var _library = true; var _redefine = _hide; @@ -4703,7 +4732,7 @@ var PROTOTYPE$1 = 'prototype'; var createDict = function () { // Thrash, waste and sodomy: IE GC bug var iframe = _domCreate('iframe'); - var i = _enumBugKeys.length; + var i = enumBugKeys.length; var lt = '<'; var gt = '>'; var iframeDocument; @@ -4717,7 +4746,7 @@ var createDict = function () { iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); iframeDocument.close(); createDict = iframeDocument.F; - while (i--) delete createDict[PROTOTYPE$1][_enumBugKeys[i]]; + while (i--) delete createDict[PROTOTYPE$1][enumBugKeys[i]]; return createDict(); }; @@ -4833,10 +4862,19 @@ var _iterDefine = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORC return methods; }; -var $at = _stringAt(true); +var _iterDefine$1 = /*#__PURE__*/Object.freeze({ + default: _iterDefine, + __moduleExports: _iterDefine +}); + +var require$$0 = ( _stringAt$1 && _stringAt ) || _stringAt$1; + +var require$$0$1 = ( _iterDefine$1 && _iterDefine ) || _iterDefine$1; + +var $at = require$$0(true); // 21.1.3.27 String.prototype[@@iterator]() -_iterDefine(String, 'String', function (iterated) { +require$$0$1(String, 'String', function (iterated) { this._t = String(iterated); // target this._i = 0; // next index // 21.1.5.2.1 %StringIteratorPrototype%.next() @@ -4854,11 +4892,18 @@ var _iterStep = function (done, value) { return { value: value, done: !!done }; }; +var _iterStep$1 = /*#__PURE__*/Object.freeze({ + default: _iterStep, + __moduleExports: _iterStep +}); + +var step = ( _iterStep$1 && _iterStep ) || _iterStep$1; + // 22.1.3.4 Array.prototype.entries() // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() // 22.1.3.30 Array.prototype[@@iterator]() -var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { +var es6_array_iterator = require$$0$1(Array, 'Array', function (iterated, kind) { this._t = _toIobject(iterated); // target this._i = 0; // next index this._k = kind; // kind @@ -4869,11 +4914,11 @@ var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { var index = this._i++; if (!O || index >= O.length) { this._t = undefined; - return _iterStep(1); + return step(1); } - if (kind == 'keys') return _iterStep(0, index); - if (kind == 'values') return _iterStep(0, O[index]); - return _iterStep(0, [index, O[index]]); + if (kind == 'keys') return step(0, index); + if (kind == 'values') return step(0, O[index]); + return step(0, [index, O[index]]); }, 'values'); var TO_STRING_TAG = _wks('toStringTag'); @@ -4996,10 +5041,10 @@ var _isArray = Array.isArray || function isArray(arg) { // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) -var hiddenKeys = _enumBugKeys.concat('length', 'prototype'); +var hiddenKeys = enumBugKeys.concat('length', 'prototype'); var f$4 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return _objectKeysInternal(O, hiddenKeys); + return $keys(O, hiddenKeys); }; var _objectGopn = { @@ -5314,7 +5359,14 @@ exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.d }; }); -unwrapExports(_typeof_1); +var _typeof$1 = unwrapExports(_typeof_1); + +var _typeof$2 = /*#__PURE__*/Object.freeze({ + default: _typeof$1, + __moduleExports: _typeof_1 +}); + +var _typeof2 = ( _typeof$2 && _typeof$1 ) || _typeof$2; var possibleConstructorReturn$1 = createCommonjsModule(function (module, exports) { @@ -5322,7 +5374,7 @@ exports.__esModule = true; -var _typeof3 = _interopRequireDefault(_typeof_1); +var _typeof3 = _interopRequireDefault(_typeof2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -5363,31 +5415,17 @@ var _setProto = { check: check }; -var _setProto$1 = /*#__PURE__*/Object.freeze({ - default: _setProto, - __moduleExports: _setProto -}); - -var require$$0 = ( _setProto$1 && _setProto ) || _setProto$1; - // 19.1.3.19 Object.setPrototypeOf(O, proto) -_export(_export.S, 'Object', { setPrototypeOf: require$$0.set }); +_export(_export.S, 'Object', { setPrototypeOf: _setProto.set }); var setPrototypeOf = _core.Object.setPrototypeOf; -var setPrototypeOf$1 = /*#__PURE__*/Object.freeze({ - default: setPrototypeOf, - __moduleExports: setPrototypeOf +var setPrototypeOf$1 = createCommonjsModule(function (module) { +module.exports = { "default": setPrototypeOf, __esModule: true }; }); -var require$$0$1 = ( setPrototypeOf$1 && setPrototypeOf ) || setPrototypeOf$1; - -var setPrototypeOf$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$1, __esModule: true }; -}); - -unwrapExports(setPrototypeOf$2); +unwrapExports(setPrototypeOf$1); // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) _export(_export.S, 'Object', { create: _objectCreate }); @@ -5397,11 +5435,18 @@ var create = function create(P, D) { return $Object.create(P, D); }; -var create$1 = createCommonjsModule(function (module) { -module.exports = { "default": create, __esModule: true }; +var create$1 = /*#__PURE__*/Object.freeze({ + default: create, + __moduleExports: create }); -unwrapExports(create$1); +var require$$0$2 = ( create$1 && create ) || create$1; + +var create$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0$2, __esModule: true }; +}); + +unwrapExports(create$2); var inherits$1 = createCommonjsModule(function (module, exports) { @@ -5409,15 +5454,15 @@ exports.__esModule = true; -var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$2); +var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$1); -var _create2 = _interopRequireDefault(create$1); +var _create2 = _interopRequireDefault(create$2); -var _typeof3 = _interopRequireDefault(_typeof_1); +var _typeof3 = _interopRequireDefault(_typeof2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -7955,11 +8000,6 @@ var gud = function() { return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1; }; -var gud$1 = /*#__PURE__*/Object.freeze({ - default: gud, - __moduleExports: gud -}); - /** * Copyright (c) 2013-present, Facebook, Inc. * @@ -8051,8 +8091,6 @@ var warning$1 = /*#__PURE__*/Object.freeze({ __moduleExports: warning_1 }); -var _gud = ( gud$1 && gud ) || gud$1; - var _warning = ( warning$1 && warning_1 ) || warning$1; var implementation = createCommonjsModule(function (module, exports) { @@ -8069,7 +8107,7 @@ var _propTypes2 = _interopRequireDefault(PropTypes); -var _gud2 = _interopRequireDefault(_gud); +var _gud2 = _interopRequireDefault(gud); @@ -8781,7 +8819,12 @@ var DatePicker = function (_React$Component) { // transforming highlighted days (perhaps nested array) // to flat Map for faster access in day.jsx highlightDates: getHightLightDaysMap(_this.props.highlightDates), - focused: false + focused: false, + // We attempt to handle focus trap activation manually, + // but that is not possible with custom inputs like buttons. + // Err on the side of a11y and trap focus when we can't be certain + // that the trigger comoponent will work with our keyDown logic. + enableFocusTrap: _this.props.customInput && _this.props.customInput.type !== 'input' ? true : false }; }; @@ -8812,10 +8855,15 @@ var DatePicker = function (_React$Component) { _this.setOpen = function (open) { var skipSetBlur = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - _this.setState({ - open: open, - preSelection: open && _this.state.open ? _this.state.preSelection : _this.calcInitialState().preSelection, - lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE + _this.setState(function (_ref) { + var enableFocusTrap = _ref.enableFocusTrap; + + return { + open: open, + preSelection: open && _this.state.open ? _this.state.preSelection : _this.calcInitialState().preSelection, + lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE, + enableFocusTrap: !open ? false : enableFocusTrap + }; }, function () { if (!open) { _this.setState(function (prev) { @@ -9028,7 +9076,18 @@ var DatePicker = function (_React$Component) { if (!_this.state.open && !_this.props.inline && !_this.props.preventOpenOnFocus) { if (eventKey === "ArrowDown" || eventKey === "ArrowUp") { event.preventDefault(); - _this.onInputClick(); + _this.setState({ enableFocusTrap: true }, function () { + _this.onInputClick(); + }); + } + return; + } + if (_this.state.open && !_this.state.enableFocusTrap) { + if (eventKey === "ArrowDown" || eventKey === "Tab") { + event.preventDefault(); + _this.setState({ enableFocusTrap: true }, function () { + _this.onInputClick(); + }); } return; } @@ -9183,7 +9242,8 @@ var DatePicker = function (_React$Component) { popperProps: _this.props.popperProps, renderDayContents: _this.props.renderDayContents, updateSelection: _this.updateSelection, - accessibleMode: _this.props.accessibleMode + accessibleMode: _this.props.accessibleMode, + enableFocusTrap: _this.state.enableFocusTrap }, _this.props.children ); diff --git a/packages/react-datepicker/docs-site/bundle.js b/packages/react-datepicker/docs-site/bundle.js index 4ef89b10ca9..93f3ed44eed 100644 --- a/packages/react-datepicker/docs-site/bundle.js +++ b/packages/react-datepicker/docs-site/bundle.js @@ -26747,7 +26747,12 @@ // transforming highlighted days (perhaps nested array) // to flat Map for faster access in day.jsx highlightDates: (0, _date_utils.getHightLightDaysMap)(_this.props.highlightDates), - focused: false + focused: false, + // We attempt to handle focus trap activation manually, + // but that is not possible with custom inputs like buttons. + // Err on the side of a11y and trap focus when we can't be certain + // that the trigger comoponent will work with our keyDown logic. + enableFocusTrap: _this.props.customInput && _this.props.customInput.type !== 'input' ? true : false }; }; @@ -26778,10 +26783,15 @@ _this.setOpen = function (open) { var skipSetBlur = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - _this.setState({ - open: open, - preSelection: open && _this.state.open ? _this.state.preSelection : _this.calcInitialState().preSelection, - lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE + _this.setState(function (_ref) { + var enableFocusTrap = _ref.enableFocusTrap; + + return { + open: open, + preSelection: open && _this.state.open ? _this.state.preSelection : _this.calcInitialState().preSelection, + lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE, + enableFocusTrap: !open ? false : enableFocusTrap + }; }, function () { if (!open) { _this.setState(function (prev) { @@ -26994,7 +27004,18 @@ if (!_this.state.open && !_this.props.inline && !_this.props.preventOpenOnFocus) { if (eventKey === "ArrowDown" || eventKey === "ArrowUp") { event.preventDefault(); - _this.onInputClick(); + _this.setState({ enableFocusTrap: true }, function () { + _this.onInputClick(); + }); + } + return; + } + if (_this.state.open && !_this.state.enableFocusTrap) { + if (eventKey === "ArrowDown" || eventKey === "Tab") { + event.preventDefault(); + _this.setState({ enableFocusTrap: true }, function () { + _this.onInputClick(); + }); } return; } @@ -27149,7 +27170,8 @@ popperProps: _this.props.popperProps, renderDayContents: _this.props.renderDayContents, updateSelection: _this.updateSelection, - accessibleMode: _this.props.accessibleMode + accessibleMode: _this.props.accessibleMode, + enableFocusTrap: _this.state.enableFocusTrap }, _this.props.children ); @@ -27623,7 +27645,8 @@ onDropdownFocus: function onDropdownFocus() {}, monthsShown: 1, forceShowMonthNavigation: false, - timeCaption: "Time" + timeCaption: "Time", + enableFocusTrap: true }; } }]); @@ -28149,6 +28172,7 @@ _react2.default.createElement( _focusTrapReact2.default, { + active: this.props.enableFocusTrap, tag: FocusTrapContainer, focusTrapOptions: { onDeactivate: function onDeactivate() { @@ -28254,7 +28278,8 @@ renderCustomHeader: _propTypes2.default.func, renderDayContents: _propTypes2.default.func, updateSelection: _propTypes2.default.func.isRequired, - accessibleMode: _propTypes2.default.bool + accessibleMode: _propTypes2.default.bool, + enableFocusTrap: _propTypes2.default.bool }; exports.default = Calendar; diff --git a/packages/react-datepicker/src/calendar.jsx b/packages/react-datepicker/src/calendar.jsx index da856bd3766..7b9ff6bb75a 100644 --- a/packages/react-datepicker/src/calendar.jsx +++ b/packages/react-datepicker/src/calendar.jsx @@ -121,7 +121,8 @@ export default class Calendar extends React.Component { renderCustomHeader: PropTypes.func, renderDayContents: PropTypes.func, updateSelection: PropTypes.func.isRequired, - accessibleMode: PropTypes.bool + accessibleMode: PropTypes.bool, + enableFocusTrap: PropTypes.bool }; static get defaultProps() { @@ -131,7 +132,8 @@ export default class Calendar extends React.Component { forceShowMonthNavigation: false, timeCaption: "Time", previousMonthButtonLabel: "Previous Month", - nextMonthButtonLabel: "Next Month" + nextMonthButtonLabel: "Next Month", + enableFocusTrap: true }; } @@ -140,7 +142,8 @@ export default class Calendar extends React.Component { onDropdownFocus: () => {}, monthsShown: 1, forceShowMonthNavigation: false, - timeCaption: "Time" + timeCaption: "Time", + enableFocusTrap: true }; } @@ -690,6 +693,7 @@ export default class Calendar extends React.Component { })} > this.props.setOpen(false), diff --git a/packages/react-datepicker/src/index.jsx b/packages/react-datepicker/src/index.jsx index 03735555bed..56fe033923f 100644 --- a/packages/react-datepicker/src/index.jsx +++ b/packages/react-datepicker/src/index.jsx @@ -262,7 +262,12 @@ export default class DatePicker extends React.Component { // transforming highlighted days (perhaps nested array) // to flat Map for faster access in day.jsx highlightDates: getHightLightDaysMap(this.props.highlightDates), - focused: false + focused: false, + // We attempt to handle focus trap activation manually, + // but that is not possible with custom inputs like buttons. + // Err on the side of a11y and trap focus when we can't be certain + // that the trigger comoponent will work with our keyDown logic. + enableFocusTrap: this.props.customInput && this.props.customInput.type !== 'input' ? true : false, }; }; @@ -291,15 +296,17 @@ export default class DatePicker extends React.Component { }; setOpen = (open, skipSetBlur = false) => { - this.setState( - { - open: open, - preSelection: - open && this.state.open - ? this.state.preSelection - : this.calcInitialState().preSelection, - lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE - }, + this.setState(({enableFocusTrap}) => { + return { + open: open, + preSelection: + open && this.state.open + ? this.state.preSelection + : this.calcInitialState().preSelection, + lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE, + enableFocusTrap: !open ? false : enableFocusTrap + } + }, () => { if (!open) { this.setState( @@ -528,7 +535,18 @@ export default class DatePicker extends React.Component { ) { if (eventKey === "ArrowDown" || eventKey === "ArrowUp") { event.preventDefault(); - this.onInputClick(); + this.setState({enableFocusTrap: true}, () => { + this.onInputClick(); + }); + } + return; + } + if(this.state.open && !this.state.enableFocusTrap) { + if (eventKey === "ArrowDown" || eventKey === "Tab") { + event.preventDefault(); + this.setState({enableFocusTrap: true}, () => { + this.onInputClick(); + }); } return; } @@ -686,6 +704,7 @@ export default class DatePicker extends React.Component { renderDayContents={this.props.renderDayContents} updateSelection={this.updateSelection} accessibleMode={this.props.accessibleMode} + enableFocusTrap={this.state.enableFocusTrap} > {this.props.children} From a076530a4136def6ecc18722acacf65ea3dcba7d Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Tue, 10 Nov 2020 17:03:18 -0700 Subject: [PATCH 02/17] a11y; escape --- packages/react-datepicker.js | 168 ++++++++---------- packages/react-datepicker/docs-site/bundle.js | 7 +- packages/react-datepicker/src/index.jsx | 8 +- 3 files changed, 87 insertions(+), 96 deletions(-) diff --git a/packages/react-datepicker.js b/packages/react-datepicker.js index cfbcdca37ef..bc1d3402289 100644 --- a/packages/react-datepicker.js +++ b/packages/react-datepicker.js @@ -509,13 +509,6 @@ function delay(fn) { var focusTrap_1 = focusTrap; -var focusTrap$1 = /*#__PURE__*/Object.freeze({ - default: focusTrap_1, - __moduleExports: focusTrap_1 -}); - -var createFocusTrap = ( focusTrap$1 && focusTrap_1 ) || focusTrap$1; - var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -626,7 +619,7 @@ FocusTrap.defaultProps = { tag: 'div', paused: false, focusTrapOptions: {}, - _createFocusTrap: createFocusTrap + _createFocusTrap: focusTrap_1 }; var focusTrapReact = FocusTrap; @@ -4274,10 +4267,17 @@ var _aFunction = function (it) { return it; }; +var _aFunction$1 = /*#__PURE__*/Object.freeze({ + default: _aFunction, + __moduleExports: _aFunction +}); + +var aFunction = ( _aFunction$1 && _aFunction ) || _aFunction$1; + // optional / simple context binding var _ctx = function (fn, that, length) { - _aFunction(fn); + aFunction(fn); if (that === undefined) return fn; switch (length) { case 1: return function (a) { @@ -4543,31 +4543,17 @@ var _objectKeysInternal = function (object, names) { return result; }; -var _objectKeysInternal$1 = /*#__PURE__*/Object.freeze({ - default: _objectKeysInternal, - __moduleExports: _objectKeysInternal -}); - // IE 8- don't enum bug keys var _enumBugKeys = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); -var _enumBugKeys$1 = /*#__PURE__*/Object.freeze({ - default: _enumBugKeys, - __moduleExports: _enumBugKeys -}); - -var $keys = ( _objectKeysInternal$1 && _objectKeysInternal ) || _objectKeysInternal$1; - -var enumBugKeys = ( _enumBugKeys$1 && _enumBugKeys ) || _enumBugKeys$1; - // 19.1.2.14 / 15.2.3.14 Object.keys(O) var _objectKeys = Object.keys || function keys(O) { - return $keys(O, enumBugKeys); + return _objectKeysInternal(O, _enumBugKeys); }; var f$1 = Object.getOwnPropertySymbols; @@ -4629,18 +4615,25 @@ _export(_export.S + _export.F, 'Object', { assign: _objectAssign }); var assign = _core.Object.assign; -var assign$1 = createCommonjsModule(function (module) { -module.exports = { "default": assign, __esModule: true }; +var assign$1 = /*#__PURE__*/Object.freeze({ + default: assign, + __moduleExports: assign +}); + +var require$$0 = ( assign$1 && assign ) || assign$1; + +var assign$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0, __esModule: true }; }); -var assign$2 = unwrapExports(assign$1); +var assign$3 = unwrapExports(assign$2); -var assign$3 = /*#__PURE__*/Object.freeze({ - default: assign$2, - __moduleExports: assign$1 +var assign$4 = /*#__PURE__*/Object.freeze({ + default: assign$3, + __moduleExports: assign$2 }); -var _assign = ( assign$3 && assign$2 ) || assign$3; +var _assign = ( assign$4 && assign$3 ) || assign$4; var _extends$1 = createCommonjsModule(function (module, exports) { @@ -4698,11 +4691,6 @@ var _stringAt = function (TO_STRING) { }; }; -var _stringAt$1 = /*#__PURE__*/Object.freeze({ - default: _stringAt, - __moduleExports: _stringAt -}); - var _library = true; var _redefine = _hide; @@ -4732,7 +4720,7 @@ var PROTOTYPE$1 = 'prototype'; var createDict = function () { // Thrash, waste and sodomy: IE GC bug var iframe = _domCreate('iframe'); - var i = enumBugKeys.length; + var i = _enumBugKeys.length; var lt = '<'; var gt = '>'; var iframeDocument; @@ -4746,7 +4734,7 @@ var createDict = function () { iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); iframeDocument.close(); createDict = iframeDocument.F; - while (i--) delete createDict[PROTOTYPE$1][enumBugKeys[i]]; + while (i--) delete createDict[PROTOTYPE$1][_enumBugKeys[i]]; return createDict(); }; @@ -4862,19 +4850,10 @@ var _iterDefine = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORC return methods; }; -var _iterDefine$1 = /*#__PURE__*/Object.freeze({ - default: _iterDefine, - __moduleExports: _iterDefine -}); - -var require$$0 = ( _stringAt$1 && _stringAt ) || _stringAt$1; - -var require$$0$1 = ( _iterDefine$1 && _iterDefine ) || _iterDefine$1; - -var $at = require$$0(true); +var $at = _stringAt(true); // 21.1.3.27 String.prototype[@@iterator]() -require$$0$1(String, 'String', function (iterated) { +_iterDefine(String, 'String', function (iterated) { this._t = String(iterated); // target this._i = 0; // next index // 21.1.5.2.1 %StringIteratorPrototype%.next() @@ -4903,7 +4882,7 @@ var step = ( _iterStep$1 && _iterStep ) || _iterStep$1; // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() // 22.1.3.30 Array.prototype[@@iterator]() -var es6_array_iterator = require$$0$1(Array, 'Array', function (iterated, kind) { +var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { this._t = _toIobject(iterated); // target this._i = 0; // next index this._k = kind; // kind @@ -4944,11 +4923,18 @@ var _wksExt = { var iterator = _wksExt.f('iterator'); -var iterator$1 = createCommonjsModule(function (module) { -module.exports = { "default": iterator, __esModule: true }; +var iterator$1 = /*#__PURE__*/Object.freeze({ + default: iterator, + __moduleExports: iterator }); -unwrapExports(iterator$1); +var require$$0$1 = ( iterator$1 && iterator ) || iterator$1; + +var iterator$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0$1, __esModule: true }; +}); + +unwrapExports(iterator$2); var _meta = createCommonjsModule(function (module) { var META = _uid('meta'); @@ -5041,10 +5027,10 @@ var _isArray = Array.isArray || function isArray(arg) { // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) -var hiddenKeys = enumBugKeys.concat('length', 'prototype'); +var hiddenKeys = _enumBugKeys.concat('length', 'prototype'); var f$4 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return $keys(O, hiddenKeys); + return _objectKeysInternal(O, hiddenKeys); }; var _objectGopn = { @@ -5342,7 +5328,7 @@ exports.__esModule = true; -var _iterator2 = _interopRequireDefault(iterator$1); +var _iterator2 = _interopRequireDefault(iterator$2); @@ -5359,14 +5345,7 @@ exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.d }; }); -var _typeof$1 = unwrapExports(_typeof_1); - -var _typeof$2 = /*#__PURE__*/Object.freeze({ - default: _typeof$1, - __moduleExports: _typeof_1 -}); - -var _typeof2 = ( _typeof$2 && _typeof$1 ) || _typeof$2; +unwrapExports(_typeof_1); var possibleConstructorReturn$1 = createCommonjsModule(function (module, exports) { @@ -5374,7 +5353,7 @@ exports.__esModule = true; -var _typeof3 = _interopRequireDefault(_typeof2); +var _typeof3 = _interopRequireDefault(_typeof_1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -5421,11 +5400,18 @@ _export(_export.S, 'Object', { setPrototypeOf: _setProto.set }); var setPrototypeOf = _core.Object.setPrototypeOf; -var setPrototypeOf$1 = createCommonjsModule(function (module) { -module.exports = { "default": setPrototypeOf, __esModule: true }; +var setPrototypeOf$1 = /*#__PURE__*/Object.freeze({ + default: setPrototypeOf, + __moduleExports: setPrototypeOf +}); + +var require$$0$2 = ( setPrototypeOf$1 && setPrototypeOf ) || setPrototypeOf$1; + +var setPrototypeOf$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0$2, __esModule: true }; }); -unwrapExports(setPrototypeOf$1); +unwrapExports(setPrototypeOf$2); // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) _export(_export.S, 'Object', { create: _objectCreate }); @@ -5440,10 +5426,10 @@ var create$1 = /*#__PURE__*/Object.freeze({ __moduleExports: create }); -var require$$0$2 = ( create$1 && create ) || create$1; +var require$$0$3 = ( create$1 && create ) || create$1; var create$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$2, __esModule: true }; +module.exports = { "default": require$$0$3, __esModule: true }; }); unwrapExports(create$2); @@ -5454,7 +5440,7 @@ exports.__esModule = true; -var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$1); +var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$2); @@ -5462,7 +5448,7 @@ var _create2 = _interopRequireDefault(create$2); -var _typeof3 = _interopRequireDefault(_typeof2); +var _typeof3 = _interopRequireDefault(_typeof_1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -8000,6 +7986,11 @@ var gud = function() { return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1; }; +var gud$1 = /*#__PURE__*/Object.freeze({ + default: gud, + __moduleExports: gud +}); + /** * Copyright (c) 2013-present, Facebook, Inc. * @@ -8086,12 +8077,7 @@ if (process.env.NODE_ENV !== 'production') { var warning_1 = warning; -var warning$1 = /*#__PURE__*/Object.freeze({ - default: warning_1, - __moduleExports: warning_1 -}); - -var _warning = ( warning$1 && warning_1 ) || warning$1; +var _gud = ( gud$1 && gud ) || gud$1; var implementation = createCommonjsModule(function (module, exports) { @@ -8107,11 +8093,11 @@ var _propTypes2 = _interopRequireDefault(PropTypes); -var _gud2 = _interopRequireDefault(gud); +var _gud2 = _interopRequireDefault(_gud); -var _warning2 = _interopRequireDefault(_warning); +var _warning2 = _interopRequireDefault(warning_1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -8291,14 +8277,7 @@ exports.default = createReactContext; module.exports = exports['default']; }); -var implementation$1 = unwrapExports(implementation); - -var implementation$2 = /*#__PURE__*/Object.freeze({ - default: implementation$1, - __moduleExports: implementation -}); - -var _implementation = ( implementation$2 && implementation$1 ) || implementation$2; +unwrapExports(implementation); var lib = createCommonjsModule(function (module, exports) { @@ -8310,7 +8289,7 @@ var _react2 = _interopRequireDefault(React__default); -var _implementation2 = _interopRequireDefault(_implementation); +var _implementation2 = _interopRequireDefault(implementation); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -8547,10 +8526,10 @@ function Popper$1(props) { var __DEV__ = process.env.NODE_ENV !== 'production'; -var warning$2 = function() {}; +var warning$1 = function() {}; if (__DEV__) { - warning$2 = function(condition, format, args) { + warning$1 = function(condition, format, args) { var len = arguments.length; args = new Array(len > 2 ? len - 2 : 0); for (var key = 2; key < len; key++) { @@ -8588,7 +8567,7 @@ if (__DEV__) { }; } -var warning_1$1 = warning$2; +var warning_1$1 = warning$1; var InnerReference = function (_React$Component) { _inherits$1(InnerReference, _React$Component); @@ -9088,6 +9067,9 @@ var DatePicker = function (_React$Component) { _this.setState({ enableFocusTrap: true }, function () { _this.onInputClick(); }); + } else if (eventKey === "Escape") { + event.preventDefault(); + _this.setOpen(false, true); } return; } @@ -9262,7 +9244,7 @@ var DatePicker = function (_React$Component) { return React__default.cloneElement(customInput, (_React$cloneElement = {}, _React$cloneElement[customInputRef] = function (input) { _this.input = input; - }, _React$cloneElement.value = inputValue, _React$cloneElement.onBlur = _this.handleBlur, _React$cloneElement.onChange = _this.handleChange, _React$cloneElement.onClick = _this.onInputClick, _React$cloneElement.onFocus = _this.handleFocus, _React$cloneElement.onKeyDown = _this.onInputKeyDown, _React$cloneElement.id = _this.props.id, _React$cloneElement.name = _this.props.name, _React$cloneElement.autoFocus = _this.props.autoFocus, _React$cloneElement.placeholder = _this.props.placeholderText, _React$cloneElement.disabled = _this.props.disabled, _React$cloneElement.autoComplete = _this.props.autoComplete, _React$cloneElement.className = className, _React$cloneElement.title = _this.props.title, _React$cloneElement.readOnly = _this.props.readOnly, _React$cloneElement.required = _this.props.required, _React$cloneElement.tabIndex = _this.props.tabIndex, _React$cloneElement["aria-label"] = inputValue, _React$cloneElement)); + }, _React$cloneElement.value = inputValue, _React$cloneElement.onBlur = _this.handleBlur, _React$cloneElement.onChange = _this.handleChange, _React$cloneElement.onClick = _this.onInputClick, _React$cloneElement.onFocus = _this.handleFocus, _React$cloneElement.onKeyDown = _this.onInputKeyDown, _React$cloneElement.id = _this.props.id, _React$cloneElement.name = _this.props.name, _React$cloneElement.autoFocus = _this.props.autoFocus, _React$cloneElement.placeholder = _this.props.placeholderText, _React$cloneElement.disabled = _this.props.disabled, _React$cloneElement.autoComplete = _this.props.autoComplete, _React$cloneElement.className = className, _React$cloneElement.title = _this.props.title, _React$cloneElement.readOnly = _this.props.readOnly, _React$cloneElement.required = _this.props.required, _React$cloneElement.tabIndex = _this.props.tabIndex, _React$cloneElement["aria-label"] = _this.state.open ? 'Press the down key to enter a popover containing a calendar. Press the escape key to close the popover.' : 'Press the down key to open a popover containing a calendar.', _React$cloneElement)); }; _this.renderClearButton = function () { diff --git a/packages/react-datepicker/docs-site/bundle.js b/packages/react-datepicker/docs-site/bundle.js index 93f3ed44eed..10468b6f551 100644 --- a/packages/react-datepicker/docs-site/bundle.js +++ b/packages/react-datepicker/docs-site/bundle.js @@ -26640,6 +26640,8 @@ var _popper_component2 = _interopRequireDefault(_popper_component); + var _screen_reader_only = __webpack_require__(530); + var _classnames2 = __webpack_require__(525); var _classnames3 = _interopRequireDefault(_classnames2); @@ -27016,6 +27018,9 @@ _this.setState({ enableFocusTrap: true }, function () { _this.onInputClick(); }); + } else if (eventKey === "Escape") { + event.preventDefault(); + _this.setOpen(false, true); } return; } @@ -27190,7 +27195,7 @@ return _react2.default.cloneElement(customInput, (_React$cloneElement = {}, _React$cloneElement[customInputRef] = function (input) { _this.input = input; - }, _React$cloneElement.value = inputValue, _React$cloneElement.onBlur = _this.handleBlur, _React$cloneElement.onChange = _this.handleChange, _React$cloneElement.onClick = _this.onInputClick, _React$cloneElement.onFocus = _this.handleFocus, _React$cloneElement.onKeyDown = _this.onInputKeyDown, _React$cloneElement.id = _this.props.id, _React$cloneElement.name = _this.props.name, _React$cloneElement.autoFocus = _this.props.autoFocus, _React$cloneElement.placeholder = _this.props.placeholderText, _React$cloneElement.disabled = _this.props.disabled, _React$cloneElement.autoComplete = _this.props.autoComplete, _React$cloneElement.className = className, _React$cloneElement.title = _this.props.title, _React$cloneElement.readOnly = _this.props.readOnly, _React$cloneElement.required = _this.props.required, _React$cloneElement.tabIndex = _this.props.tabIndex, _React$cloneElement["aria-label"] = inputValue, _React$cloneElement)); + }, _React$cloneElement.value = inputValue, _React$cloneElement.onBlur = _this.handleBlur, _React$cloneElement.onChange = _this.handleChange, _React$cloneElement.onClick = _this.onInputClick, _React$cloneElement.onFocus = _this.handleFocus, _React$cloneElement.onKeyDown = _this.onInputKeyDown, _React$cloneElement.id = _this.props.id, _React$cloneElement.name = _this.props.name, _React$cloneElement.autoFocus = _this.props.autoFocus, _React$cloneElement.placeholder = _this.props.placeholderText, _React$cloneElement.disabled = _this.props.disabled, _React$cloneElement.autoComplete = _this.props.autoComplete, _React$cloneElement.className = className, _React$cloneElement.title = _this.props.title, _React$cloneElement.readOnly = _this.props.readOnly, _React$cloneElement.required = _this.props.required, _React$cloneElement.tabIndex = _this.props.tabIndex, _React$cloneElement["aria-label"] = _this.state.open ? 'Press the down key to enter a popover containing a calendar. Press the escape key to close the popover.' : 'Press the down key to open a popover containing a calendar.', _React$cloneElement)); }; _this.renderClearButton = function () { diff --git a/packages/react-datepicker/src/index.jsx b/packages/react-datepicker/src/index.jsx index 56fe033923f..f6f4cce92db 100644 --- a/packages/react-datepicker/src/index.jsx +++ b/packages/react-datepicker/src/index.jsx @@ -2,6 +2,7 @@ import Calendar from "./calendar"; import React from "react"; import PropTypes from "prop-types"; import PopperComponent, { popperPlacementPositions } from "./popper_component"; +import { ScreenReaderOnly } from "./screen_reader_only"; import classnames from "classnames"; import { @@ -541,12 +542,15 @@ export default class DatePicker extends React.Component { } return; } - if(this.state.open && !this.state.enableFocusTrap) { + if (this.state.open && !this.state.enableFocusTrap) { if (eventKey === "ArrowDown" || eventKey === "Tab") { event.preventDefault(); this.setState({enableFocusTrap: true}, () => { this.onInputClick(); }); + } else if (eventKey === "Escape") { + event.preventDefault(); + this.setOpen(false, true); } return; } @@ -748,7 +752,7 @@ export default class DatePicker extends React.Component { readOnly: this.props.readOnly, required: this.props.required, tabIndex: this.props.tabIndex, - "aria-label": inputValue + "aria-label": this.state.open ? 'Press the down key to enter a popover containing a calendar. Press the escape key to close the popover.' : 'Press the down key to open a popover containing a calendar.' }); }; From 1f8a25ae2619bc3d3f161ba082986346383c92a5 Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Wed, 11 Nov 2020 09:13:43 -0700 Subject: [PATCH 03/17] snapshots --- .../date_picker/__snapshots__/date_picker.test.tsx.snap | 4 ++-- .../date_picker/__snapshots__/date_picker_range.test.tsx.snap | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/date_picker/__snapshots__/date_picker.test.tsx.snap b/src/components/date_picker/__snapshots__/date_picker.test.tsx.snap index 3100f370605..3ffe18e5f61 100644 --- a/src/components/date_picker/__snapshots__/date_picker.test.tsx.snap +++ b/src/components/date_picker/__snapshots__/date_picker.test.tsx.snap @@ -893,7 +893,7 @@ exports[`EuiDatePicker popoverPlacement top-end is rendered 1`] = ` className="react-datepicker__input-container" > Date: Wed, 11 Nov 2020 15:52:37 -0700 Subject: [PATCH 04/17] fix month navigation closing popover --- packages/react-datepicker.js | 180 +++++++++++------- packages/react-datepicker/docs-site/bundle.js | 19 +- packages/react-datepicker/src/calendar.jsx | 2 +- packages/react-datepicker/src/index.jsx | 9 +- 4 files changed, 129 insertions(+), 81 deletions(-) diff --git a/packages/react-datepicker.js b/packages/react-datepicker.js index bc1d3402289..5eb7d8bd3fa 100644 --- a/packages/react-datepicker.js +++ b/packages/react-datepicker.js @@ -4131,7 +4131,7 @@ var Calendar = function (_React$Component) { tag: FocusTrapContainer, focusTrapOptions: { onDeactivate: function onDeactivate() { - return _this3.props.setOpen(false); + return _this3.props.setOpen(false, true); }, initialFocus: initialFocusTarget } @@ -4267,17 +4267,10 @@ var _aFunction = function (it) { return it; }; -var _aFunction$1 = /*#__PURE__*/Object.freeze({ - default: _aFunction, - __moduleExports: _aFunction -}); - -var aFunction = ( _aFunction$1 && _aFunction ) || _aFunction$1; - // optional / simple context binding var _ctx = function (fn, that, length) { - aFunction(fn); + _aFunction(fn); if (that === undefined) return fn; switch (length) { case 1: return function (a) { @@ -4444,11 +4437,18 @@ var _cof = function (it) { return toString.call(it).slice(8, -1); }; +var _cof$1 = /*#__PURE__*/Object.freeze({ + default: _cof, + __moduleExports: _cof +}); + +var cof = ( _cof$1 && _cof ) || _cof$1; + // fallback for non-array-like ES3 and non-enumerable old V8 strings // eslint-disable-next-line no-prototype-builtins var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return _cof(it) == 'String' ? it.split('') : Object(it); + return cof(it) == 'String' ? it.split('') : Object(it); }; // 7.2.1 RequireObjectCoercible(argument) @@ -4457,11 +4457,18 @@ var _defined = function (it) { return it; }; +var _defined$1 = /*#__PURE__*/Object.freeze({ + default: _defined, + __moduleExports: _defined +}); + +var defined = ( _defined$1 && _defined ) || _defined$1; + // to indexed object, toObject with fallback for non-array-like ES3 strings var _toIobject = function (it) { - return _iobject(_defined(it)); + return _iobject(defined(it)); }; // 7.1.4 ToInteger @@ -4478,6 +4485,11 @@ var _toLength = function (it) { return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; +var _toLength$1 = /*#__PURE__*/Object.freeze({ + default: _toLength, + __moduleExports: _toLength +}); + var max = Math.max; var min$1 = Math.min; var _toAbsoluteIndex = function (index, length) { @@ -4485,6 +4497,8 @@ var _toAbsoluteIndex = function (index, length) { return index < 0 ? max(index + length, 0) : min$1(index, length); }; +var toLength = ( _toLength$1 && _toLength ) || _toLength$1; + // false -> Array#indexOf // true -> Array#includes @@ -4493,7 +4507,7 @@ var _toAbsoluteIndex = function (index, length) { var _arrayIncludes = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = _toIobject($this); - var length = _toLength(O.length); + var length = toLength(O.length); var index = _toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm @@ -4543,17 +4557,24 @@ var _objectKeysInternal = function (object, names) { return result; }; +var _objectKeysInternal$1 = /*#__PURE__*/Object.freeze({ + default: _objectKeysInternal, + __moduleExports: _objectKeysInternal +}); + // IE 8- don't enum bug keys var _enumBugKeys = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); +var $keys = ( _objectKeysInternal$1 && _objectKeysInternal ) || _objectKeysInternal$1; + // 19.1.2.14 / 15.2.3.14 Object.keys(O) var _objectKeys = Object.keys || function keys(O) { - return _objectKeysInternal(O, _enumBugKeys); + return $keys(O, _enumBugKeys); }; var f$1 = Object.getOwnPropertySymbols; @@ -4571,7 +4592,7 @@ var _objectPie = { // 7.1.13 ToObject(argument) var _toObject = function (it) { - return Object(_defined(it)); + return Object(defined(it)); }; // 19.1.2.1 Object.assign(target, source, ...) @@ -4679,7 +4700,7 @@ var _classCallCheck$1 = unwrapExports(classCallCheck$1); // false -> String#codePointAt var _stringAt = function (TO_STRING) { return function (that, pos) { - var s = String(_defined(that)); + var s = String(defined(that)); var i = _toInteger(pos); var l = s.length; var a, b; @@ -4867,16 +4888,18 @@ _iterDefine(String, 'String', function (iterated) { return { value: point, done: false }; }); +var _addToUnscopables = function () { /* empty */ }; + +var _addToUnscopables$1 = /*#__PURE__*/Object.freeze({ + default: _addToUnscopables, + __moduleExports: _addToUnscopables +}); + var _iterStep = function (done, value) { return { value: value, done: !!done }; }; -var _iterStep$1 = /*#__PURE__*/Object.freeze({ - default: _iterStep, - __moduleExports: _iterStep -}); - -var step = ( _iterStep$1 && _iterStep ) || _iterStep$1; +var addToUnscopables = ( _addToUnscopables$1 && _addToUnscopables ) || _addToUnscopables$1; // 22.1.3.4 Array.prototype.entries() // 22.1.3.13 Array.prototype.keys() @@ -4893,13 +4916,17 @@ var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { var index = this._i++; if (!O || index >= O.length) { this._t = undefined; - return step(1); + return _iterStep(1); } - if (kind == 'keys') return step(0, index); - if (kind == 'values') return step(0, O[index]); - return step(0, [index, O[index]]); + if (kind == 'keys') return _iterStep(0, index); + if (kind == 'values') return _iterStep(0, O[index]); + return _iterStep(0, [index, O[index]]); }, 'values'); +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + var TO_STRING_TAG = _wks('toStringTag'); var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + @@ -5022,7 +5049,7 @@ var _enumKeys = function (it) { // 7.2.2 IsArray(argument) var _isArray = Array.isArray || function isArray(arg) { - return _cof(arg) == 'Array'; + return cof(arg) == 'Array'; }; // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) @@ -5030,7 +5057,7 @@ var _isArray = Array.isArray || function isArray(arg) { var hiddenKeys = _enumBugKeys.concat('length', 'prototype'); var f$4 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return _objectKeysInternal(O, hiddenKeys); + return $keys(O, hiddenKeys); }; var _objectGopn = { @@ -5316,11 +5343,18 @@ _wksDefine('observable'); var symbol = _core.Symbol; -var symbol$1 = createCommonjsModule(function (module) { -module.exports = { "default": symbol, __esModule: true }; +var symbol$1 = /*#__PURE__*/Object.freeze({ + default: symbol, + __moduleExports: symbol }); -unwrapExports(symbol$1); +var require$$0$2 = ( symbol$1 && symbol ) || symbol$1; + +var symbol$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0$2, __esModule: true }; +}); + +unwrapExports(symbol$2); var _typeof_1 = createCommonjsModule(function (module, exports) { @@ -5332,7 +5366,7 @@ var _iterator2 = _interopRequireDefault(iterator$2); -var _symbol2 = _interopRequireDefault(symbol$1); +var _symbol2 = _interopRequireDefault(symbol$2); var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; @@ -5345,7 +5379,14 @@ exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.d }; }); -unwrapExports(_typeof_1); +var _typeof$1 = unwrapExports(_typeof_1); + +var _typeof$2 = /*#__PURE__*/Object.freeze({ + default: _typeof$1, + __moduleExports: _typeof_1 +}); + +var _typeof2 = ( _typeof$2 && _typeof$1 ) || _typeof$2; var possibleConstructorReturn$1 = createCommonjsModule(function (module, exports) { @@ -5353,7 +5394,7 @@ exports.__esModule = true; -var _typeof3 = _interopRequireDefault(_typeof_1); +var _typeof3 = _interopRequireDefault(_typeof2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -5394,25 +5435,30 @@ var _setProto = { check: check }; +var _setProto$1 = /*#__PURE__*/Object.freeze({ + default: _setProto, + __moduleExports: _setProto +}); + +var require$$0$3 = ( _setProto$1 && _setProto ) || _setProto$1; + // 19.1.3.19 Object.setPrototypeOf(O, proto) -_export(_export.S, 'Object', { setPrototypeOf: _setProto.set }); +_export(_export.S, 'Object', { setPrototypeOf: require$$0$3.set }); var setPrototypeOf = _core.Object.setPrototypeOf; -var setPrototypeOf$1 = /*#__PURE__*/Object.freeze({ - default: setPrototypeOf, - __moduleExports: setPrototypeOf +var setPrototypeOf$1 = createCommonjsModule(function (module) { +module.exports = { "default": setPrototypeOf, __esModule: true }; }); -var require$$0$2 = ( setPrototypeOf$1 && setPrototypeOf ) || setPrototypeOf$1; +var setPrototypeOf$2 = unwrapExports(setPrototypeOf$1); -var setPrototypeOf$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$2, __esModule: true }; +var setPrototypeOf$3 = /*#__PURE__*/Object.freeze({ + default: setPrototypeOf$2, + __moduleExports: setPrototypeOf$1 }); -unwrapExports(setPrototypeOf$2); - // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) _export(_export.S, 'Object', { create: _objectCreate }); @@ -5421,18 +5467,20 @@ var create = function create(P, D) { return $Object.create(P, D); }; -var create$1 = /*#__PURE__*/Object.freeze({ - default: create, - __moduleExports: create +var create$1 = createCommonjsModule(function (module) { +module.exports = { "default": create, __esModule: true }; }); -var require$$0$3 = ( create$1 && create ) || create$1; +var create$2 = unwrapExports(create$1); -var create$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$3, __esModule: true }; +var create$3 = /*#__PURE__*/Object.freeze({ + default: create$2, + __moduleExports: create$1 }); -unwrapExports(create$2); +var _setPrototypeOf = ( setPrototypeOf$3 && setPrototypeOf$2 ) || setPrototypeOf$3; + +var _create = ( create$3 && create$2 ) || create$3; var inherits$1 = createCommonjsModule(function (module, exports) { @@ -5440,15 +5488,15 @@ exports.__esModule = true; -var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$2); +var _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf); -var _create2 = _interopRequireDefault(create$2); +var _create2 = _interopRequireDefault(_create); -var _typeof3 = _interopRequireDefault(_typeof_1); +var _typeof3 = _interopRequireDefault(_typeof2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -8277,7 +8325,14 @@ exports.default = createReactContext; module.exports = exports['default']; }); -unwrapExports(implementation); +var implementation$1 = unwrapExports(implementation); + +var implementation$2 = /*#__PURE__*/Object.freeze({ + default: implementation$1, + __moduleExports: implementation +}); + +var _implementation = ( implementation$2 && implementation$1 ) || implementation$2; var lib = createCommonjsModule(function (module, exports) { @@ -8289,7 +8344,7 @@ var _react2 = _interopRequireDefault(React__default); -var _implementation2 = _interopRequireDefault(implementation); +var _implementation2 = _interopRequireDefault(_implementation); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -8834,20 +8889,16 @@ var DatePicker = function (_React$Component) { _this.setOpen = function (open) { var skipSetBlur = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - _this.setState(function (_ref) { - var enableFocusTrap = _ref.enableFocusTrap; - - return { - open: open, - preSelection: open && _this.state.open ? _this.state.preSelection : _this.calcInitialState().preSelection, - lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE, - enableFocusTrap: !open ? false : enableFocusTrap - }; + _this.setState({ + open: open, + preSelection: open && _this.state.open ? _this.state.preSelection : _this.calcInitialState().preSelection, + lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE }, function () { if (!open) { _this.setState(function (prev) { return { - focused: skipSetBlur ? prev.focused : false + focused: skipSetBlur ? prev.focused : false, + enableFocusTrap: skipSetBlur ? false : prev.enableFocusTrap }; }, function () { !skipSetBlur && _this.setBlur(); @@ -8951,6 +9002,7 @@ var DatePicker = function (_React$Component) { if (!_this.props.shouldCloseOnSelect || _this.props.showTimeSelect) { _this.setPreSelection(date); } else if (!_this.props.inline) { + // This causes the navigation button to close the popover _this.setOpen(false); } }; diff --git a/packages/react-datepicker/docs-site/bundle.js b/packages/react-datepicker/docs-site/bundle.js index 10468b6f551..4f1f1ccf23e 100644 --- a/packages/react-datepicker/docs-site/bundle.js +++ b/packages/react-datepicker/docs-site/bundle.js @@ -26785,20 +26785,16 @@ _this.setOpen = function (open) { var skipSetBlur = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - _this.setState(function (_ref) { - var enableFocusTrap = _ref.enableFocusTrap; - - return { - open: open, - preSelection: open && _this.state.open ? _this.state.preSelection : _this.calcInitialState().preSelection, - lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE, - enableFocusTrap: !open ? false : enableFocusTrap - }; + _this.setState({ + open: open, + preSelection: open && _this.state.open ? _this.state.preSelection : _this.calcInitialState().preSelection, + lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE }, function () { if (!open) { _this.setState(function (prev) { return { - focused: skipSetBlur ? prev.focused : false + focused: skipSetBlur ? prev.focused : false, + enableFocusTrap: skipSetBlur ? false : prev.enableFocusTrap }; }, function () { !skipSetBlur && _this.setBlur(); @@ -26902,6 +26898,7 @@ if (!_this.props.shouldCloseOnSelect || _this.props.showTimeSelect) { _this.setPreSelection(date); } else if (!_this.props.inline) { + // This causes the navigation button to close the popover _this.setOpen(false); } }; @@ -28181,7 +28178,7 @@ tag: FocusTrapContainer, focusTrapOptions: { onDeactivate: function onDeactivate() { - return _this3.props.setOpen(false); + return _this3.props.setOpen(false, true); }, initialFocus: initialFocusTarget } diff --git a/packages/react-datepicker/src/calendar.jsx b/packages/react-datepicker/src/calendar.jsx index 7b9ff6bb75a..955eccc5257 100644 --- a/packages/react-datepicker/src/calendar.jsx +++ b/packages/react-datepicker/src/calendar.jsx @@ -696,7 +696,7 @@ export default class Calendar extends React.Component { active={this.props.enableFocusTrap} tag={FocusTrapContainer} focusTrapOptions={{ - onDeactivate: () => this.props.setOpen(false), + onDeactivate: () => this.props.setOpen(false, true), initialFocus: initialFocusTarget }} > diff --git a/packages/react-datepicker/src/index.jsx b/packages/react-datepicker/src/index.jsx index f6f4cce92db..fab22bb8283 100644 --- a/packages/react-datepicker/src/index.jsx +++ b/packages/react-datepicker/src/index.jsx @@ -297,22 +297,20 @@ export default class DatePicker extends React.Component { }; setOpen = (open, skipSetBlur = false) => { - this.setState(({enableFocusTrap}) => { - return { + this.setState({ open: open, preSelection: open && this.state.open ? this.state.preSelection : this.calcInitialState().preSelection, lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE, - enableFocusTrap: !open ? false : enableFocusTrap - } }, () => { if (!open) { this.setState( prev => ({ - focused: skipSetBlur ? prev.focused : false + focused: skipSetBlur ? prev.focused : false, + enableFocusTrap: skipSetBlur ? false : prev.enableFocusTrap }), () => { !skipSetBlur && this.setBlur(); @@ -418,6 +416,7 @@ export default class DatePicker extends React.Component { if (!this.props.shouldCloseOnSelect || this.props.showTimeSelect) { this.setPreSelection(date); } else if (!this.props.inline) { + // This causes the navigation button to close the popover this.setOpen(false); } }; From de9b970ffb996447c700a462d91779fac2a1291c Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Mon, 16 Nov 2020 15:14:32 -0700 Subject: [PATCH 05/17] better return focus --- packages/react-datepicker.js | 248 ++++++++---------- packages/react-datepicker/docs-site/bundle.js | 8 +- packages/react-datepicker/src/index.jsx | 8 +- 3 files changed, 122 insertions(+), 142 deletions(-) diff --git a/packages/react-datepicker.js b/packages/react-datepicker.js index 5eb7d8bd3fa..115ab299911 100644 --- a/packages/react-datepicker.js +++ b/packages/react-datepicker.js @@ -212,6 +212,11 @@ UntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) { var tabbable_1 = tabbable; +var tabbable$1 = /*#__PURE__*/Object.freeze({ + default: tabbable_1, + __moduleExports: tabbable_1 +}); + var immutable = extend; var hasOwnProperty = Object.prototype.hasOwnProperty; @@ -232,6 +237,8 @@ function extend() { return target } +var tabbable$2 = ( tabbable$1 && tabbable_1 ) || tabbable$1; + var listeningFocusTrap = null; function focusTrap(element, userOptions) { @@ -411,7 +418,7 @@ function focusTrap(element, userOptions) { if (container.contains(e.target)) return; if (config.clickOutsideDeactivates) { deactivate({ - returnFocus: !tabbable_1.isFocusable(e.target) + returnFocus: !tabbable$2.isFocusable(e.target) }); } else { e.preventDefault(); @@ -466,7 +473,7 @@ function focusTrap(element, userOptions) { } function updateTabbableNodes() { - var tabbableNodes = tabbable_1(container); + var tabbableNodes = tabbable$2(container); state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode(); state.lastTabbableNode = tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode(); @@ -509,6 +516,13 @@ function delay(fn) { var focusTrap_1 = focusTrap; +var focusTrap$1 = /*#__PURE__*/Object.freeze({ + default: focusTrap_1, + __moduleExports: focusTrap_1 +}); + +var createFocusTrap = ( focusTrap$1 && focusTrap_1 ) || focusTrap$1; + var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -619,7 +633,7 @@ FocusTrap.defaultProps = { tag: 'div', paused: false, focusTrapOptions: {}, - _createFocusTrap: focusTrap_1 + _createFocusTrap: createFocusTrap }; var focusTrapReact = FocusTrap; @@ -4292,8 +4306,15 @@ var _isObject = function (it) { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; +var _isObject$1 = /*#__PURE__*/Object.freeze({ + default: _isObject, + __moduleExports: _isObject +}); + +var isObject = ( _isObject$1 && _isObject ) || _isObject$1; + var _anObject = function (it) { - if (!_isObject(it)) throw TypeError(it + ' is not an object!'); + if (!isObject(it)) throw TypeError(it + ' is not an object!'); return it; }; @@ -4312,7 +4333,7 @@ var _descriptors = !_fails(function () { var document$1 = _global.document; // typeof document.createElement is 'object' in old IE -var is = _isObject(document$1) && _isObject(document$1.createElement); +var is = isObject(document$1) && isObject(document$1.createElement); var _domCreate = function (it) { return is ? document$1.createElement(it) : {}; }; @@ -4326,11 +4347,11 @@ var _ie8DomDefine = !_descriptors && !_fails(function () { // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string var _toPrimitive = function (it, S) { - if (!_isObject(it)) return it; + if (!isObject(it)) return it; var fn, val; - if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val; - if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) return val; - if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val; + if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; + if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; throw TypeError("Can't convert object to primitive value"); }; @@ -4437,38 +4458,31 @@ var _cof = function (it) { return toString.call(it).slice(8, -1); }; -var _cof$1 = /*#__PURE__*/Object.freeze({ - default: _cof, - __moduleExports: _cof -}); - -var cof = ( _cof$1 && _cof ) || _cof$1; - // fallback for non-array-like ES3 and non-enumerable old V8 strings // eslint-disable-next-line no-prototype-builtins var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return cof(it) == 'String' ? it.split('') : Object(it); + return _cof(it) == 'String' ? it.split('') : Object(it); }; +var _iobject$1 = /*#__PURE__*/Object.freeze({ + default: _iobject, + __moduleExports: _iobject +}); + // 7.2.1 RequireObjectCoercible(argument) var _defined = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; -var _defined$1 = /*#__PURE__*/Object.freeze({ - default: _defined, - __moduleExports: _defined -}); - -var defined = ( _defined$1 && _defined ) || _defined$1; +var IObject = ( _iobject$1 && _iobject ) || _iobject$1; // to indexed object, toObject with fallback for non-array-like ES3 strings var _toIobject = function (it) { - return _iobject(defined(it)); + return IObject(_defined(it)); }; // 7.1.4 ToInteger @@ -4485,11 +4499,6 @@ var _toLength = function (it) { return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; -var _toLength$1 = /*#__PURE__*/Object.freeze({ - default: _toLength, - __moduleExports: _toLength -}); - var max = Math.max; var min$1 = Math.min; var _toAbsoluteIndex = function (index, length) { @@ -4497,8 +4506,6 @@ var _toAbsoluteIndex = function (index, length) { return index < 0 ? max(index + length, 0) : min$1(index, length); }; -var toLength = ( _toLength$1 && _toLength ) || _toLength$1; - // false -> Array#indexOf // true -> Array#includes @@ -4507,7 +4514,7 @@ var toLength = ( _toLength$1 && _toLength ) || _toLength$1; var _arrayIncludes = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = _toIobject($this); - var length = toLength(O.length); + var length = _toLength(O.length); var index = _toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm @@ -4557,24 +4564,17 @@ var _objectKeysInternal = function (object, names) { return result; }; -var _objectKeysInternal$1 = /*#__PURE__*/Object.freeze({ - default: _objectKeysInternal, - __moduleExports: _objectKeysInternal -}); - // IE 8- don't enum bug keys var _enumBugKeys = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); -var $keys = ( _objectKeysInternal$1 && _objectKeysInternal ) || _objectKeysInternal$1; - // 19.1.2.14 / 15.2.3.14 Object.keys(O) var _objectKeys = Object.keys || function keys(O) { - return $keys(O, _enumBugKeys); + return _objectKeysInternal(O, _enumBugKeys); }; var f$1 = Object.getOwnPropertySymbols; @@ -4592,7 +4592,7 @@ var _objectPie = { // 7.1.13 ToObject(argument) var _toObject = function (it) { - return Object(defined(it)); + return Object(_defined(it)); }; // 19.1.2.1 Object.assign(target, source, ...) @@ -4620,7 +4620,7 @@ var _objectAssign = !$assign || _fails(function () { var getSymbols = _objectGops.f; var isEnum = _objectPie.f; while (aLen > index) { - var S = _iobject(arguments[index++]); + var S = IObject(arguments[index++]); var keys = getSymbols ? _objectKeys(S).concat(getSymbols(S)) : _objectKeys(S); var length = keys.length; var j = 0; @@ -4636,25 +4636,18 @@ _export(_export.S + _export.F, 'Object', { assign: _objectAssign }); var assign = _core.Object.assign; -var assign$1 = /*#__PURE__*/Object.freeze({ - default: assign, - __moduleExports: assign +var assign$1 = createCommonjsModule(function (module) { +module.exports = { "default": assign, __esModule: true }; }); -var require$$0 = ( assign$1 && assign ) || assign$1; +var assign$2 = unwrapExports(assign$1); -var assign$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0, __esModule: true }; +var assign$3 = /*#__PURE__*/Object.freeze({ + default: assign$2, + __moduleExports: assign$1 }); -var assign$3 = unwrapExports(assign$2); - -var assign$4 = /*#__PURE__*/Object.freeze({ - default: assign$3, - __moduleExports: assign$2 -}); - -var _assign = ( assign$4 && assign$3 ) || assign$4; +var _assign = ( assign$3 && assign$2 ) || assign$3; var _extends$1 = createCommonjsModule(function (module, exports) { @@ -4700,7 +4693,7 @@ var _classCallCheck$1 = unwrapExports(classCallCheck$1); // false -> String#codePointAt var _stringAt = function (TO_STRING) { return function (that, pos) { - var s = String(defined(that)); + var s = String(_defined(that)); var i = _toInteger(pos); var l = s.length; var a, b; @@ -4726,9 +4719,16 @@ var _objectDps = _descriptors ? Object.defineProperties : function definePropert return O; }; +var _objectDps$1 = /*#__PURE__*/Object.freeze({ + default: _objectDps, + __moduleExports: _objectDps +}); + var document$2 = _global.document; var _html = document$2 && document$2.documentElement; +var dPs = ( _objectDps$1 && _objectDps ) || _objectDps$1; + // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) @@ -4768,7 +4768,7 @@ var _objectCreate = Object.create || function create(O, Properties) { // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO$1] = O; } else result = createDict(); - return Properties === undefined ? result : _objectDps(result, Properties); + return Properties === undefined ? result : dPs(result, Properties); }; var _wks = createCommonjsModule(function (module) { @@ -4871,10 +4871,17 @@ var _iterDefine = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORC return methods; }; +var _iterDefine$1 = /*#__PURE__*/Object.freeze({ + default: _iterDefine, + __moduleExports: _iterDefine +}); + +var require$$0 = ( _iterDefine$1 && _iterDefine ) || _iterDefine$1; + var $at = _stringAt(true); // 21.1.3.27 String.prototype[@@iterator]() -_iterDefine(String, 'String', function (iterated) { +require$$0(String, 'String', function (iterated) { this._t = String(iterated); // target this._i = 0; // next index // 21.1.5.2.1 %StringIteratorPrototype%.next() @@ -4888,24 +4895,22 @@ _iterDefine(String, 'String', function (iterated) { return { value: point, done: false }; }); -var _addToUnscopables = function () { /* empty */ }; - -var _addToUnscopables$1 = /*#__PURE__*/Object.freeze({ - default: _addToUnscopables, - __moduleExports: _addToUnscopables -}); - var _iterStep = function (done, value) { return { value: value, done: !!done }; }; -var addToUnscopables = ( _addToUnscopables$1 && _addToUnscopables ) || _addToUnscopables$1; +var _iterStep$1 = /*#__PURE__*/Object.freeze({ + default: _iterStep, + __moduleExports: _iterStep +}); + +var step = ( _iterStep$1 && _iterStep ) || _iterStep$1; // 22.1.3.4 Array.prototype.entries() // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() // 22.1.3.30 Array.prototype[@@iterator]() -var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { +var es6_array_iterator = require$$0(Array, 'Array', function (iterated, kind) { this._t = _toIobject(iterated); // target this._i = 0; // next index this._k = kind; // kind @@ -4916,17 +4921,13 @@ var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { var index = this._i++; if (!O || index >= O.length) { this._t = undefined; - return _iterStep(1); + return step(1); } - if (kind == 'keys') return _iterStep(0, index); - if (kind == 'values') return _iterStep(0, O[index]); - return _iterStep(0, [index, O[index]]); + if (kind == 'keys') return step(0, index); + if (kind == 'values') return step(0, O[index]); + return step(0, [index, O[index]]); }, 'values'); -addToUnscopables('keys'); -addToUnscopables('values'); -addToUnscopables('entries'); - var TO_STRING_TAG = _wks('toStringTag'); var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + @@ -4983,7 +4984,7 @@ var setMeta = function (it) { }; var fastKey = function (it, create) { // return primitive with prefix - if (!_isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; if (!_has(it, META)) { // can't set metadata to uncaught frozen object if (!isExtensible(it)) return 'F'; @@ -5049,7 +5050,7 @@ var _enumKeys = function (it) { // 7.2.2 IsArray(argument) var _isArray = Array.isArray || function isArray(arg) { - return cof(arg) == 'Array'; + return _cof(arg) == 'Array'; }; // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) @@ -5057,7 +5058,7 @@ var _isArray = Array.isArray || function isArray(arg) { var hiddenKeys = _enumBugKeys.concat('length', 'prototype'); var f$4 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return $keys(O, hiddenKeys); + return _objectKeysInternal(O, hiddenKeys); }; var _objectGopn = { @@ -5343,18 +5344,11 @@ _wksDefine('observable'); var symbol = _core.Symbol; -var symbol$1 = /*#__PURE__*/Object.freeze({ - default: symbol, - __moduleExports: symbol +var symbol$1 = createCommonjsModule(function (module) { +module.exports = { "default": symbol, __esModule: true }; }); -var require$$0$2 = ( symbol$1 && symbol ) || symbol$1; - -var symbol$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$2, __esModule: true }; -}); - -unwrapExports(symbol$2); +unwrapExports(symbol$1); var _typeof_1 = createCommonjsModule(function (module, exports) { @@ -5366,7 +5360,7 @@ var _iterator2 = _interopRequireDefault(iterator$2); -var _symbol2 = _interopRequireDefault(symbol$2); +var _symbol2 = _interopRequireDefault(symbol$1); var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; @@ -5379,14 +5373,7 @@ exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.d }; }); -var _typeof$1 = unwrapExports(_typeof_1); - -var _typeof$2 = /*#__PURE__*/Object.freeze({ - default: _typeof$1, - __moduleExports: _typeof_1 -}); - -var _typeof2 = ( _typeof$2 && _typeof$1 ) || _typeof$2; +unwrapExports(_typeof_1); var possibleConstructorReturn$1 = createCommonjsModule(function (module, exports) { @@ -5394,7 +5381,7 @@ exports.__esModule = true; -var _typeof3 = _interopRequireDefault(_typeof2); +var _typeof3 = _interopRequireDefault(_typeof_1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -5415,7 +5402,7 @@ var _possibleConstructorReturn$1 = unwrapExports(possibleConstructorReturn$1); var check = function (O, proto) { _anObject(O); - if (!_isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); + if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); }; var _setProto = { set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line @@ -5440,25 +5427,27 @@ var _setProto$1 = /*#__PURE__*/Object.freeze({ __moduleExports: _setProto }); -var require$$0$3 = ( _setProto$1 && _setProto ) || _setProto$1; +var require$$0$2 = ( _setProto$1 && _setProto ) || _setProto$1; // 19.1.3.19 Object.setPrototypeOf(O, proto) -_export(_export.S, 'Object', { setPrototypeOf: require$$0$3.set }); +_export(_export.S, 'Object', { setPrototypeOf: require$$0$2.set }); var setPrototypeOf = _core.Object.setPrototypeOf; -var setPrototypeOf$1 = createCommonjsModule(function (module) { -module.exports = { "default": setPrototypeOf, __esModule: true }; +var setPrototypeOf$1 = /*#__PURE__*/Object.freeze({ + default: setPrototypeOf, + __moduleExports: setPrototypeOf }); -var setPrototypeOf$2 = unwrapExports(setPrototypeOf$1); +var require$$0$3 = ( setPrototypeOf$1 && setPrototypeOf ) || setPrototypeOf$1; -var setPrototypeOf$3 = /*#__PURE__*/Object.freeze({ - default: setPrototypeOf$2, - __moduleExports: setPrototypeOf$1 +var setPrototypeOf$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0$3, __esModule: true }; }); +unwrapExports(setPrototypeOf$2); + // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) _export(_export.S, 'Object', { create: _objectCreate }); @@ -5478,8 +5467,6 @@ var create$3 = /*#__PURE__*/Object.freeze({ __moduleExports: create$1 }); -var _setPrototypeOf = ( setPrototypeOf$3 && setPrototypeOf$2 ) || setPrototypeOf$3; - var _create = ( create$3 && create$2 ) || create$3; var inherits$1 = createCommonjsModule(function (module, exports) { @@ -5488,7 +5475,7 @@ exports.__esModule = true; -var _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf); +var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$2); @@ -5496,7 +5483,7 @@ var _create2 = _interopRequireDefault(_create); -var _typeof3 = _interopRequireDefault(_typeof2); +var _typeof3 = _interopRequireDefault(_typeof_1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -8034,11 +8021,6 @@ var gud = function() { return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1; }; -var gud$1 = /*#__PURE__*/Object.freeze({ - default: gud, - __moduleExports: gud -}); - /** * Copyright (c) 2013-present, Facebook, Inc. * @@ -8074,6 +8056,13 @@ emptyFunction.thatReturnsArgument = function (arg) { var emptyFunction_1 = emptyFunction; +var emptyFunction$1 = /*#__PURE__*/Object.freeze({ + default: emptyFunction_1, + __moduleExports: emptyFunction_1 +}); + +var emptyFunction$2 = ( emptyFunction$1 && emptyFunction_1 ) || emptyFunction$1; + /** * Similar to invariant but only logs a warning if the condition is not met. * This can be used to log issues in development environments in critical @@ -8081,7 +8070,7 @@ var emptyFunction_1 = emptyFunction; * same logic and follow the same code paths. */ -var warning = emptyFunction_1; +var warning = emptyFunction$2; if (process.env.NODE_ENV !== 'production') { var printWarning = function printWarning(format) { @@ -8125,8 +8114,6 @@ if (process.env.NODE_ENV !== 'production') { var warning_1 = warning; -var _gud = ( gud$1 && gud ) || gud$1; - var implementation = createCommonjsModule(function (module, exports) { exports.__esModule = true; @@ -8141,7 +8128,7 @@ var _propTypes2 = _interopRequireDefault(PropTypes); -var _gud2 = _interopRequireDefault(_gud); +var _gud2 = _interopRequireDefault(gud); @@ -8325,14 +8312,7 @@ exports.default = createReactContext; module.exports = exports['default']; }); -var implementation$1 = unwrapExports(implementation); - -var implementation$2 = /*#__PURE__*/Object.freeze({ - default: implementation$1, - __moduleExports: implementation -}); - -var _implementation = ( implementation$2 && implementation$1 ) || implementation$2; +unwrapExports(implementation); var lib = createCommonjsModule(function (module, exports) { @@ -8344,7 +8324,7 @@ var _react2 = _interopRequireDefault(React__default); -var _implementation2 = _interopRequireDefault(_implementation); +var _implementation2 = _interopRequireDefault(implementation); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -9003,7 +8983,7 @@ var DatePicker = function (_React$Component) { _this.setPreSelection(date); } else if (!_this.props.inline) { // This causes the navigation button to close the popover - _this.setOpen(false); + _this.setOpen(false, true); } }; @@ -9079,7 +9059,7 @@ var DatePicker = function (_React$Component) { _this.props.onChange(changedDate); if (_this.props.shouldCloseOnSelect) { - _this.setOpen(false); + _this.setOpen(false, true); } _this.setState({ inputValue: null }); }; @@ -9132,12 +9112,12 @@ var DatePicker = function (_React$Component) { _this.handleSelect(copy, event); !_this.props.shouldCloseOnSelect && _this.setPreSelection(copy); } else { - _this.setOpen(false); + _this.setOpen(false, true); } } else if (eventKey === "Escape") { event.preventDefault(); - _this.setOpen(false); + _this.setOpen(false, true); if (!_this.inputOk()) { _this.props.onInputError({ code: 1, msg: INPUT_ERR_1 }); } diff --git a/packages/react-datepicker/docs-site/bundle.js b/packages/react-datepicker/docs-site/bundle.js index 4f1f1ccf23e..55162376480 100644 --- a/packages/react-datepicker/docs-site/bundle.js +++ b/packages/react-datepicker/docs-site/bundle.js @@ -26899,7 +26899,7 @@ _this.setPreSelection(date); } else if (!_this.props.inline) { // This causes the navigation button to close the popover - _this.setOpen(false); + _this.setOpen(false, true); } }; @@ -26975,7 +26975,7 @@ _this.props.onChange(changedDate); if (_this.props.shouldCloseOnSelect) { - _this.setOpen(false); + _this.setOpen(false, true); } _this.setState({ inputValue: null }); }; @@ -27028,12 +27028,12 @@ _this.handleSelect(copy, event); !_this.props.shouldCloseOnSelect && _this.setPreSelection(copy); } else { - _this.setOpen(false); + _this.setOpen(false, true); } } else if (eventKey === "Escape") { event.preventDefault(); - _this.setOpen(false); + _this.setOpen(false, true); if (!_this.inputOk()) { _this.props.onInputError({ code: 1, msg: INPUT_ERR_1 }); } diff --git a/packages/react-datepicker/src/index.jsx b/packages/react-datepicker/src/index.jsx index fab22bb8283..b7d10cffa6d 100644 --- a/packages/react-datepicker/src/index.jsx +++ b/packages/react-datepicker/src/index.jsx @@ -417,7 +417,7 @@ export default class DatePicker extends React.Component { this.setPreSelection(date); } else if (!this.props.inline) { // This causes the navigation button to close the popover - this.setOpen(false); + this.setOpen(false, true); } }; @@ -503,7 +503,7 @@ export default class DatePicker extends React.Component { this.props.onChange(changedDate); if (this.props.shouldCloseOnSelect) { - this.setOpen(false); + this.setOpen(false, true); } this.setState({ inputValue: null }); }; @@ -563,12 +563,12 @@ export default class DatePicker extends React.Component { this.handleSelect(copy, event); !this.props.shouldCloseOnSelect && this.setPreSelection(copy); } else { - this.setOpen(false); + this.setOpen(false, true); } } else if (eventKey === "Escape") { event.preventDefault(); - this.setOpen(false); + this.setOpen(false, true); if (!this.inputOk()) { this.props.onInputError({ code: 1, msg: INPUT_ERR_1 }); } From 0f2435bc27801c2f5ee3e2715d63732fae3f6f93 Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Mon, 16 Nov 2020 15:43:30 -0700 Subject: [PATCH 06/17] open popover on focus --- packages/react-datepicker.js | 208 +++++++++--------- packages/react-datepicker/docs-site/bundle.js | 3 +- packages/react-datepicker/src/index.jsx | 3 +- 3 files changed, 105 insertions(+), 109 deletions(-) diff --git a/packages/react-datepicker.js b/packages/react-datepicker.js index 115ab299911..01b99d1a016 100644 --- a/packages/react-datepicker.js +++ b/packages/react-datepicker.js @@ -237,8 +237,15 @@ function extend() { return target } +var immutable$1 = /*#__PURE__*/Object.freeze({ + default: immutable, + __moduleExports: immutable +}); + var tabbable$2 = ( tabbable$1 && tabbable_1 ) || tabbable$1; +var xtend = ( immutable$1 && immutable ) || immutable$1; + var listeningFocusTrap = null; function focusTrap(element, userOptions) { @@ -246,7 +253,7 @@ function focusTrap(element, userOptions) { var container = typeof element === 'string' ? doc.querySelector(element) : element; - var config = immutable( + var config = xtend( { returnFocusOnDeactivate: true, escapeDeactivates: true @@ -4306,15 +4313,8 @@ var _isObject = function (it) { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; -var _isObject$1 = /*#__PURE__*/Object.freeze({ - default: _isObject, - __moduleExports: _isObject -}); - -var isObject = ( _isObject$1 && _isObject ) || _isObject$1; - var _anObject = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); + if (!_isObject(it)) throw TypeError(it + ' is not an object!'); return it; }; @@ -4333,7 +4333,7 @@ var _descriptors = !_fails(function () { var document$1 = _global.document; // typeof document.createElement is 'object' in old IE -var is = isObject(document$1) && isObject(document$1.createElement); +var is = _isObject(document$1) && _isObject(document$1.createElement); var _domCreate = function (it) { return is ? document$1.createElement(it) : {}; }; @@ -4347,11 +4347,11 @@ var _ie8DomDefine = !_descriptors && !_fails(function () { // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string var _toPrimitive = function (it, S) { - if (!isObject(it)) return it; + if (!_isObject(it)) return it; var fn, val; - if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; - if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val; + if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) return val; + if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val; throw TypeError("Can't convert object to primitive value"); }; @@ -4465,24 +4465,24 @@ var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) { return _cof(it) == 'String' ? it.split('') : Object(it); }; -var _iobject$1 = /*#__PURE__*/Object.freeze({ - default: _iobject, - __moduleExports: _iobject -}); - // 7.2.1 RequireObjectCoercible(argument) var _defined = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; -var IObject = ( _iobject$1 && _iobject ) || _iobject$1; +var _defined$1 = /*#__PURE__*/Object.freeze({ + default: _defined, + __moduleExports: _defined +}); + +var defined = ( _defined$1 && _defined ) || _defined$1; // to indexed object, toObject with fallback for non-array-like ES3 strings var _toIobject = function (it) { - return IObject(_defined(it)); + return _iobject(defined(it)); }; // 7.1.4 ToInteger @@ -4499,6 +4499,11 @@ var _toLength = function (it) { return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; +var _toLength$1 = /*#__PURE__*/Object.freeze({ + default: _toLength, + __moduleExports: _toLength +}); + var max = Math.max; var min$1 = Math.min; var _toAbsoluteIndex = function (index, length) { @@ -4506,6 +4511,15 @@ var _toAbsoluteIndex = function (index, length) { return index < 0 ? max(index + length, 0) : min$1(index, length); }; +var _toAbsoluteIndex$1 = /*#__PURE__*/Object.freeze({ + default: _toAbsoluteIndex, + __moduleExports: _toAbsoluteIndex +}); + +var toLength = ( _toLength$1 && _toLength ) || _toLength$1; + +var toAbsoluteIndex = ( _toAbsoluteIndex$1 && _toAbsoluteIndex ) || _toAbsoluteIndex$1; + // false -> Array#indexOf // true -> Array#includes @@ -4514,8 +4528,8 @@ var _toAbsoluteIndex = function (index, length) { var _arrayIncludes = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = _toIobject($this); - var length = _toLength(O.length); - var index = _toAbsoluteIndex(fromIndex, length); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare @@ -4592,7 +4606,7 @@ var _objectPie = { // 7.1.13 ToObject(argument) var _toObject = function (it) { - return Object(_defined(it)); + return Object(defined(it)); }; // 19.1.2.1 Object.assign(target, source, ...) @@ -4620,7 +4634,7 @@ var _objectAssign = !$assign || _fails(function () { var getSymbols = _objectGops.f; var isEnum = _objectPie.f; while (aLen > index) { - var S = IObject(arguments[index++]); + var S = _iobject(arguments[index++]); var keys = getSymbols ? _objectKeys(S).concat(getSymbols(S)) : _objectKeys(S); var length = keys.length; var j = 0; @@ -4629,10 +4643,17 @@ var _objectAssign = !$assign || _fails(function () { } return T; } : $assign; +var _objectAssign$1 = /*#__PURE__*/Object.freeze({ + default: _objectAssign, + __moduleExports: _objectAssign +}); + +var require$$0 = ( _objectAssign$1 && _objectAssign ) || _objectAssign$1; + // 19.1.3.1 Object.assign(target, source) -_export(_export.S + _export.F, 'Object', { assign: _objectAssign }); +_export(_export.S + _export.F, 'Object', { assign: require$$0 }); var assign = _core.Object.assign; @@ -4640,14 +4661,7 @@ var assign$1 = createCommonjsModule(function (module) { module.exports = { "default": assign, __esModule: true }; }); -var assign$2 = unwrapExports(assign$1); - -var assign$3 = /*#__PURE__*/Object.freeze({ - default: assign$2, - __moduleExports: assign$1 -}); - -var _assign = ( assign$3 && assign$2 ) || assign$3; +unwrapExports(assign$1); var _extends$1 = createCommonjsModule(function (module, exports) { @@ -4655,7 +4669,7 @@ exports.__esModule = true; -var _assign2 = _interopRequireDefault(_assign); +var _assign2 = _interopRequireDefault(assign$1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -4693,7 +4707,7 @@ var _classCallCheck$1 = unwrapExports(classCallCheck$1); // false -> String#codePointAt var _stringAt = function (TO_STRING) { return function (that, pos) { - var s = String(_defined(that)); + var s = String(defined(that)); var i = _toInteger(pos); var l = s.length; var a, b; @@ -4719,16 +4733,9 @@ var _objectDps = _descriptors ? Object.defineProperties : function definePropert return O; }; -var _objectDps$1 = /*#__PURE__*/Object.freeze({ - default: _objectDps, - __moduleExports: _objectDps -}); - var document$2 = _global.document; var _html = document$2 && document$2.documentElement; -var dPs = ( _objectDps$1 && _objectDps ) || _objectDps$1; - // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) @@ -4768,7 +4775,7 @@ var _objectCreate = Object.create || function create(O, Properties) { // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO$1] = O; } else result = createDict(); - return Properties === undefined ? result : dPs(result, Properties); + return Properties === undefined ? result : _objectDps(result, Properties); }; var _wks = createCommonjsModule(function (module) { @@ -4876,12 +4883,12 @@ var _iterDefine$1 = /*#__PURE__*/Object.freeze({ __moduleExports: _iterDefine }); -var require$$0 = ( _iterDefine$1 && _iterDefine ) || _iterDefine$1; +var require$$0$1 = ( _iterDefine$1 && _iterDefine ) || _iterDefine$1; var $at = _stringAt(true); // 21.1.3.27 String.prototype[@@iterator]() -require$$0(String, 'String', function (iterated) { +require$$0$1(String, 'String', function (iterated) { this._t = String(iterated); // target this._i = 0; // next index // 21.1.5.2.1 %StringIteratorPrototype%.next() @@ -4899,18 +4906,11 @@ var _iterStep = function (done, value) { return { value: value, done: !!done }; }; -var _iterStep$1 = /*#__PURE__*/Object.freeze({ - default: _iterStep, - __moduleExports: _iterStep -}); - -var step = ( _iterStep$1 && _iterStep ) || _iterStep$1; - // 22.1.3.4 Array.prototype.entries() // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() // 22.1.3.30 Array.prototype[@@iterator]() -var es6_array_iterator = require$$0(Array, 'Array', function (iterated, kind) { +var es6_array_iterator = require$$0$1(Array, 'Array', function (iterated, kind) { this._t = _toIobject(iterated); // target this._i = 0; // next index this._k = kind; // kind @@ -4921,11 +4921,11 @@ var es6_array_iterator = require$$0(Array, 'Array', function (iterated, kind) { var index = this._i++; if (!O || index >= O.length) { this._t = undefined; - return step(1); + return _iterStep(1); } - if (kind == 'keys') return step(0, index); - if (kind == 'values') return step(0, O[index]); - return step(0, [index, O[index]]); + if (kind == 'keys') return _iterStep(0, index); + if (kind == 'values') return _iterStep(0, O[index]); + return _iterStep(0, [index, O[index]]); }, 'values'); var TO_STRING_TAG = _wks('toStringTag'); @@ -4951,18 +4951,11 @@ var _wksExt = { var iterator = _wksExt.f('iterator'); -var iterator$1 = /*#__PURE__*/Object.freeze({ - default: iterator, - __moduleExports: iterator -}); - -var require$$0$1 = ( iterator$1 && iterator ) || iterator$1; - -var iterator$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$1, __esModule: true }; +var iterator$1 = createCommonjsModule(function (module) { +module.exports = { "default": iterator, __esModule: true }; }); -unwrapExports(iterator$2); +unwrapExports(iterator$1); var _meta = createCommonjsModule(function (module) { var META = _uid('meta'); @@ -4984,7 +4977,7 @@ var setMeta = function (it) { }; var fastKey = function (it, create) { // return primitive with prefix - if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!_isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; if (!_has(it, META)) { // can't set metadata to uncaught frozen object if (!isExtensible(it)) return 'F'; @@ -5356,7 +5349,7 @@ exports.__esModule = true; -var _iterator2 = _interopRequireDefault(iterator$2); +var _iterator2 = _interopRequireDefault(iterator$1); @@ -5402,7 +5395,7 @@ var _possibleConstructorReturn$1 = unwrapExports(possibleConstructorReturn$1); var check = function (O, proto) { _anObject(O); - if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); + if (!_isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); }; var _setProto = { set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line @@ -5422,31 +5415,17 @@ var _setProto = { check: check }; -var _setProto$1 = /*#__PURE__*/Object.freeze({ - default: _setProto, - __moduleExports: _setProto -}); - -var require$$0$2 = ( _setProto$1 && _setProto ) || _setProto$1; - // 19.1.3.19 Object.setPrototypeOf(O, proto) -_export(_export.S, 'Object', { setPrototypeOf: require$$0$2.set }); +_export(_export.S, 'Object', { setPrototypeOf: _setProto.set }); var setPrototypeOf = _core.Object.setPrototypeOf; -var setPrototypeOf$1 = /*#__PURE__*/Object.freeze({ - default: setPrototypeOf, - __moduleExports: setPrototypeOf -}); - -var require$$0$3 = ( setPrototypeOf$1 && setPrototypeOf ) || setPrototypeOf$1; - -var setPrototypeOf$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$3, __esModule: true }; +var setPrototypeOf$1 = createCommonjsModule(function (module) { +module.exports = { "default": setPrototypeOf, __esModule: true }; }); -unwrapExports(setPrototypeOf$2); +unwrapExports(setPrototypeOf$1); // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) _export(_export.S, 'Object', { create: _objectCreate }); @@ -5460,14 +5439,7 @@ var create$1 = createCommonjsModule(function (module) { module.exports = { "default": create, __esModule: true }; }); -var create$2 = unwrapExports(create$1); - -var create$3 = /*#__PURE__*/Object.freeze({ - default: create$2, - __moduleExports: create$1 -}); - -var _create = ( create$3 && create$2 ) || create$3; +unwrapExports(create$1); var inherits$1 = createCommonjsModule(function (module, exports) { @@ -5475,11 +5447,11 @@ exports.__esModule = true; -var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$2); +var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$1); -var _create2 = _interopRequireDefault(_create); +var _create2 = _interopRequireDefault(create$1); @@ -8021,6 +7993,11 @@ var gud = function() { return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1; }; +var gud$1 = /*#__PURE__*/Object.freeze({ + default: gud, + __moduleExports: gud +}); + /** * Copyright (c) 2013-present, Facebook, Inc. * @@ -8114,6 +8091,15 @@ if (process.env.NODE_ENV !== 'production') { var warning_1 = warning; +var warning$1 = /*#__PURE__*/Object.freeze({ + default: warning_1, + __moduleExports: warning_1 +}); + +var _gud = ( gud$1 && gud ) || gud$1; + +var _warning = ( warning$1 && warning_1 ) || warning$1; + var implementation = createCommonjsModule(function (module, exports) { exports.__esModule = true; @@ -8128,11 +8114,11 @@ var _propTypes2 = _interopRequireDefault(PropTypes); -var _gud2 = _interopRequireDefault(gud); +var _gud2 = _interopRequireDefault(_gud); -var _warning2 = _interopRequireDefault(warning_1); +var _warning2 = _interopRequireDefault(_warning); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -8312,7 +8298,14 @@ exports.default = createReactContext; module.exports = exports['default']; }); -unwrapExports(implementation); +var implementation$1 = unwrapExports(implementation); + +var implementation$2 = /*#__PURE__*/Object.freeze({ + default: implementation$1, + __moduleExports: implementation +}); + +var _implementation = ( implementation$2 && implementation$1 ) || implementation$2; var lib = createCommonjsModule(function (module, exports) { @@ -8324,7 +8317,7 @@ var _react2 = _interopRequireDefault(React__default); -var _implementation2 = _interopRequireDefault(implementation); +var _implementation2 = _interopRequireDefault(_implementation); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -8561,10 +8554,10 @@ function Popper$1(props) { var __DEV__ = process.env.NODE_ENV !== 'production'; -var warning$1 = function() {}; +var warning$2 = function() {}; if (__DEV__) { - warning$1 = function(condition, format, args) { + warning$2 = function(condition, format, args) { var len = arguments.length; args = new Array(len > 2 ? len - 2 : 0); for (var key = 2; key < len; key++) { @@ -8602,7 +8595,7 @@ if (__DEV__) { }; } -var warning_1$1 = warning$1; +var warning_1$1 = warning$2; var InnerReference = function (_React$Component) { _inherits$1(InnerReference, _React$Component); @@ -8898,9 +8891,10 @@ var DatePicker = function (_React$Component) { }; _this.handleFocus = function (event) { + console.log(_this.state.preventFocus); if (!_this.state.preventFocus) { _this.props.onFocus(event); - if (!_this.props.preventOpenOnFocus && !_this.props.readOnly && !_this.props.accessibleMode) { + if (!_this.props.preventOpenOnFocus && !_this.props.readOnly) { _this.setOpen(true); } } diff --git a/packages/react-datepicker/docs-site/bundle.js b/packages/react-datepicker/docs-site/bundle.js index 55162376480..a12e409c6e1 100644 --- a/packages/react-datepicker/docs-site/bundle.js +++ b/packages/react-datepicker/docs-site/bundle.js @@ -26814,9 +26814,10 @@ }; _this.handleFocus = function (event) { + console.log(_this.state.preventFocus); if (!_this.state.preventFocus) { _this.props.onFocus(event); - if (!_this.props.preventOpenOnFocus && !_this.props.readOnly && !_this.props.accessibleMode) { + if (!_this.props.preventOpenOnFocus && !_this.props.readOnly) { _this.setOpen(true); } } diff --git a/packages/react-datepicker/src/index.jsx b/packages/react-datepicker/src/index.jsx index b7d10cffa6d..81c30ed68b8 100644 --- a/packages/react-datepicker/src/index.jsx +++ b/packages/react-datepicker/src/index.jsx @@ -331,11 +331,12 @@ export default class DatePicker extends React.Component { : this.props.open; handleFocus = event => { + console.log(this.state.preventFocus); if (!this.state.preventFocus) { this.props.onFocus(event); if ( !this.props.preventOpenOnFocus && - !this.props.readOnly && !this.props.accessibleMode + !this.props.readOnly ) { this.setOpen(true); } From 2dbe24db6934b65742bd60d374254319c4bc61b0 Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Tue, 17 Nov 2020 16:02:44 -0700 Subject: [PATCH 07/17] prevent year dropdown from closing --- packages/react-datepicker.js | 112 ++++++++---------- packages/react-datepicker/docs-site/bundle.js | 6 +- .../react-datepicker/src/year_dropdown.jsx | 15 +-- 3 files changed, 52 insertions(+), 81 deletions(-) diff --git a/packages/react-datepicker.js b/packages/react-datepicker.js index 01b99d1a016..b9f11216dde 100644 --- a/packages/react-datepicker.js +++ b/packages/react-datepicker.js @@ -523,13 +523,6 @@ function delay(fn) { var focusTrap_1 = focusTrap; -var focusTrap$1 = /*#__PURE__*/Object.freeze({ - default: focusTrap_1, - __moduleExports: focusTrap_1 -}); - -var createFocusTrap = ( focusTrap$1 && focusTrap_1 ) || focusTrap$1; - var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -640,7 +633,7 @@ FocusTrap.defaultProps = { tag: 'div', paused: false, focusTrapOptions: {}, - _createFocusTrap: createFocusTrap + _createFocusTrap: focusTrap_1 }; var focusTrapReact = FocusTrap; @@ -1881,13 +1874,9 @@ var YearDropdown = function (_React$Component) { _this.toggleDropdown(); if (year === _this.props.year) return; _this.props.onChange(year); - }, _this.toggleDropdown = function (event) { + }, _this.toggleDropdown = function () { _this.setState({ dropdownVisible: !_this.state.dropdownVisible - }, function () { - if (_this.props.adjustDateOnChange) { - _this.handleYearChange(_this.props.date, event); - } }); }, _this.handleYearChange = function (date, event) { _this.onSelect(date, event); @@ -4492,34 +4481,27 @@ var _toInteger = function (it) { return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; +var _toInteger$1 = /*#__PURE__*/Object.freeze({ + default: _toInteger, + __moduleExports: _toInteger +}); + +var toInteger = ( _toInteger$1 && _toInteger ) || _toInteger$1; + // 7.1.15 ToLength var min = Math.min; var _toLength = function (it) { - return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; -var _toLength$1 = /*#__PURE__*/Object.freeze({ - default: _toLength, - __moduleExports: _toLength -}); - var max = Math.max; var min$1 = Math.min; var _toAbsoluteIndex = function (index, length) { - index = _toInteger(index); + index = toInteger(index); return index < 0 ? max(index + length, 0) : min$1(index, length); }; -var _toAbsoluteIndex$1 = /*#__PURE__*/Object.freeze({ - default: _toAbsoluteIndex, - __moduleExports: _toAbsoluteIndex -}); - -var toLength = ( _toLength$1 && _toLength ) || _toLength$1; - -var toAbsoluteIndex = ( _toAbsoluteIndex$1 && _toAbsoluteIndex ) || _toAbsoluteIndex$1; - // false -> Array#indexOf // true -> Array#includes @@ -4528,8 +4510,8 @@ var toAbsoluteIndex = ( _toAbsoluteIndex$1 && _toAbsoluteIndex ) || _toAbsoluteI var _arrayIncludes = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = _toIobject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); + var length = _toLength(O.length); + var index = _toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare @@ -4609,6 +4591,13 @@ var _toObject = function (it) { return Object(defined(it)); }; +var _toObject$1 = /*#__PURE__*/Object.freeze({ + default: _toObject, + __moduleExports: _toObject +}); + +var toObject = ( _toObject$1 && _toObject ) || _toObject$1; + // 19.1.2.1 Object.assign(target, source, ...) @@ -4628,7 +4617,7 @@ var _objectAssign = !$assign || _fails(function () { K.split('').forEach(function (k) { B[k] = k; }); return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; }) ? function assign(target, source) { // eslint-disable-line no-unused-vars - var T = _toObject(target); + var T = toObject(target); var aLen = arguments.length; var index = 1; var getSymbols = _objectGops.f; @@ -4661,7 +4650,14 @@ var assign$1 = createCommonjsModule(function (module) { module.exports = { "default": assign, __esModule: true }; }); -unwrapExports(assign$1); +var assign$2 = unwrapExports(assign$1); + +var assign$3 = /*#__PURE__*/Object.freeze({ + default: assign$2, + __moduleExports: assign$1 +}); + +var _assign = ( assign$3 && assign$2 ) || assign$3; var _extends$1 = createCommonjsModule(function (module, exports) { @@ -4669,7 +4665,7 @@ exports.__esModule = true; -var _assign2 = _interopRequireDefault(assign$1); +var _assign2 = _interopRequireDefault(_assign); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -4708,7 +4704,7 @@ var _classCallCheck$1 = unwrapExports(classCallCheck$1); var _stringAt = function (TO_STRING) { return function (that, pos) { var s = String(defined(that)); - var i = _toInteger(pos); + var i = toInteger(pos); var l = s.length; var a, b; if (i < 0 || i >= l) return TO_STRING ? '' : undefined; @@ -4817,7 +4813,7 @@ var IE_PROTO$2 = _sharedKey('IE_PROTO'); var ObjectProto = Object.prototype; var _objectGpo = Object.getPrototypeOf || function (O) { - O = _toObject(O); + O = toObject(O); if (_has(O, IE_PROTO$2)) return O[IE_PROTO$2]; if (typeof O.constructor == 'function' && O instanceof O.constructor) { return O.constructor.prototype; @@ -5435,11 +5431,18 @@ var create = function create(P, D) { return $Object.create(P, D); }; -var create$1 = createCommonjsModule(function (module) { -module.exports = { "default": create, __esModule: true }; +var create$1 = /*#__PURE__*/Object.freeze({ + default: create, + __moduleExports: create }); -unwrapExports(create$1); +var require$$0$2 = ( create$1 && create ) || create$1; + +var create$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0$2, __esModule: true }; +}); + +unwrapExports(create$2); var inherits$1 = createCommonjsModule(function (module, exports) { @@ -5451,7 +5454,7 @@ var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$1); -var _create2 = _interopRequireDefault(create$1); +var _create2 = _interopRequireDefault(create$2); @@ -7993,11 +7996,6 @@ var gud = function() { return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1; }; -var gud$1 = /*#__PURE__*/Object.freeze({ - default: gud, - __moduleExports: gud -}); - /** * Copyright (c) 2013-present, Facebook, Inc. * @@ -8033,13 +8031,6 @@ emptyFunction.thatReturnsArgument = function (arg) { var emptyFunction_1 = emptyFunction; -var emptyFunction$1 = /*#__PURE__*/Object.freeze({ - default: emptyFunction_1, - __moduleExports: emptyFunction_1 -}); - -var emptyFunction$2 = ( emptyFunction$1 && emptyFunction_1 ) || emptyFunction$1; - /** * Similar to invariant but only logs a warning if the condition is not met. * This can be used to log issues in development environments in critical @@ -8047,7 +8038,7 @@ var emptyFunction$2 = ( emptyFunction$1 && emptyFunction_1 ) || emptyFunction$1; * same logic and follow the same code paths. */ -var warning = emptyFunction$2; +var warning = emptyFunction_1; if (process.env.NODE_ENV !== 'production') { var printWarning = function printWarning(format) { @@ -8096,8 +8087,6 @@ var warning$1 = /*#__PURE__*/Object.freeze({ __moduleExports: warning_1 }); -var _gud = ( gud$1 && gud ) || gud$1; - var _warning = ( warning$1 && warning_1 ) || warning$1; var implementation = createCommonjsModule(function (module, exports) { @@ -8114,7 +8103,7 @@ var _propTypes2 = _interopRequireDefault(PropTypes); -var _gud2 = _interopRequireDefault(_gud); +var _gud2 = _interopRequireDefault(gud); @@ -8298,14 +8287,7 @@ exports.default = createReactContext; module.exports = exports['default']; }); -var implementation$1 = unwrapExports(implementation); - -var implementation$2 = /*#__PURE__*/Object.freeze({ - default: implementation$1, - __moduleExports: implementation -}); - -var _implementation = ( implementation$2 && implementation$1 ) || implementation$2; +unwrapExports(implementation); var lib = createCommonjsModule(function (module, exports) { @@ -8317,7 +8299,7 @@ var _react2 = _interopRequireDefault(React__default); -var _implementation2 = _interopRequireDefault(_implementation); +var _implementation2 = _interopRequireDefault(implementation); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } diff --git a/packages/react-datepicker/docs-site/bundle.js b/packages/react-datepicker/docs-site/bundle.js index a12e409c6e1..cdedf44d066 100644 --- a/packages/react-datepicker/docs-site/bundle.js +++ b/packages/react-datepicker/docs-site/bundle.js @@ -28430,13 +28430,9 @@ _this.toggleDropdown(); if (year === _this.props.year) return; _this.props.onChange(year); - }, _this.toggleDropdown = function (event) { + }, _this.toggleDropdown = function () { _this.setState({ dropdownVisible: !_this.state.dropdownVisible - }, function () { - if (_this.props.adjustDateOnChange) { - _this.handleYearChange(_this.props.date, event); - } }); }, _this.handleYearChange = function (date, event) { _this.onSelect(date, event); diff --git a/packages/react-datepicker/src/year_dropdown.jsx b/packages/react-datepicker/src/year_dropdown.jsx index a12eea24805..1d7353ca223 100644 --- a/packages/react-datepicker/src/year_dropdown.jsx +++ b/packages/react-datepicker/src/year_dropdown.jsx @@ -143,17 +143,10 @@ export default class YearDropdown extends React.Component { this.props.onChange(year); }; - toggleDropdown = event => { - this.setState( - { - dropdownVisible: !this.state.dropdownVisible - }, - () => { - if (this.props.adjustDateOnChange) { - this.handleYearChange(this.props.date, event); - } - } - ); + toggleDropdown = () => { + this.setState({ + dropdownVisible: !this.state.dropdownVisible + }); }; handleYearChange = (date, event) => { From af17f27760fbb58575de23398bcd16cfaab0f0af Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Wed, 18 Nov 2020 14:04:55 -0700 Subject: [PATCH 08/17] onChange call for time selection --- packages/react-datepicker.js | 226 ++++++++++-------- packages/react-datepicker/docs-site/bundle.js | 46 ++-- packages/react-datepicker/src/date_utils.js | 8 + packages/react-datepicker/src/index.jsx | 37 +-- 4 files changed, 183 insertions(+), 134 deletions(-) diff --git a/packages/react-datepicker.js b/packages/react-datepicker.js index b9f11216dde..c4b8b9ba1cd 100644 --- a/packages/react-datepicker.js +++ b/packages/react-datepicker.js @@ -212,11 +212,6 @@ UntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) { var tabbable_1 = tabbable; -var tabbable$1 = /*#__PURE__*/Object.freeze({ - default: tabbable_1, - __moduleExports: tabbable_1 -}); - var immutable = extend; var hasOwnProperty = Object.prototype.hasOwnProperty; @@ -237,15 +232,6 @@ function extend() { return target } -var immutable$1 = /*#__PURE__*/Object.freeze({ - default: immutable, - __moduleExports: immutable -}); - -var tabbable$2 = ( tabbable$1 && tabbable_1 ) || tabbable$1; - -var xtend = ( immutable$1 && immutable ) || immutable$1; - var listeningFocusTrap = null; function focusTrap(element, userOptions) { @@ -253,7 +239,7 @@ function focusTrap(element, userOptions) { var container = typeof element === 'string' ? doc.querySelector(element) : element; - var config = xtend( + var config = immutable( { returnFocusOnDeactivate: true, escapeDeactivates: true @@ -425,7 +411,7 @@ function focusTrap(element, userOptions) { if (container.contains(e.target)) return; if (config.clickOutsideDeactivates) { deactivate({ - returnFocus: !tabbable$2.isFocusable(e.target) + returnFocus: !tabbable_1.isFocusable(e.target) }); } else { e.preventDefault(); @@ -480,7 +466,7 @@ function focusTrap(element, userOptions) { } function updateTabbableNodes() { - var tabbableNodes = tabbable$2(container); + var tabbableNodes = tabbable_1(container); state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode(); state.lastTabbableNode = tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode(); @@ -523,6 +509,13 @@ function delay(fn) { var focusTrap_1 = focusTrap; +var focusTrap$1 = /*#__PURE__*/Object.freeze({ + default: focusTrap_1, + __moduleExports: focusTrap_1 +}); + +var createFocusTrap = ( focusTrap$1 && focusTrap_1 ) || focusTrap$1; + var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -633,7 +626,7 @@ FocusTrap.defaultProps = { tag: 'div', paused: false, focusTrapOptions: {}, - _createFocusTrap: focusTrap_1 + _createFocusTrap: createFocusTrap }; var focusTrapReact = FocusTrap; @@ -1570,6 +1563,14 @@ function isSameDay(moment1, moment2) { } } +function isSameTime(moment1, moment2) { + if (moment1 && moment2) { + return moment1.format('HH:mm:ss') === moment2.format('HH:mm:ss'); + } else { + return !moment1 && !moment2; + } +} + function isDayInRange(day, startDate, endDate) { var before = startDate.clone().startOf("day").subtract(1, "seconds"); var after = endDate.clone().startOf("day").add(1, "seconds"); @@ -4277,10 +4278,17 @@ var _aFunction = function (it) { return it; }; +var _aFunction$1 = /*#__PURE__*/Object.freeze({ + default: _aFunction, + __moduleExports: _aFunction +}); + +var aFunction = ( _aFunction$1 && _aFunction ) || _aFunction$1; + // optional / simple context binding var _ctx = function (fn, that, length) { - _aFunction(fn); + aFunction(fn); if (that === undefined) return fn; switch (length) { case 1: return function (a) { @@ -4447,11 +4455,18 @@ var _cof = function (it) { return toString.call(it).slice(8, -1); }; +var _cof$1 = /*#__PURE__*/Object.freeze({ + default: _cof, + __moduleExports: _cof +}); + +var cof = ( _cof$1 && _cof ) || _cof$1; + // fallback for non-array-like ES3 and non-enumerable old V8 strings // eslint-disable-next-line no-prototype-builtins var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return _cof(it) == 'String' ? it.split('') : Object(it); + return cof(it) == 'String' ? it.split('') : Object(it); }; // 7.2.1 RequireObjectCoercible(argument) @@ -4481,27 +4496,27 @@ var _toInteger = function (it) { return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; -var _toInteger$1 = /*#__PURE__*/Object.freeze({ - default: _toInteger, - __moduleExports: _toInteger -}); - -var toInteger = ( _toInteger$1 && _toInteger ) || _toInteger$1; - // 7.1.15 ToLength var min = Math.min; var _toLength = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 + return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; +var _toLength$1 = /*#__PURE__*/Object.freeze({ + default: _toLength, + __moduleExports: _toLength +}); + var max = Math.max; var min$1 = Math.min; var _toAbsoluteIndex = function (index, length) { - index = toInteger(index); + index = _toInteger(index); return index < 0 ? max(index + length, 0) : min$1(index, length); }; +var toLength = ( _toLength$1 && _toLength ) || _toLength$1; + // false -> Array#indexOf // true -> Array#includes @@ -4510,7 +4525,7 @@ var _toAbsoluteIndex = function (index, length) { var _arrayIncludes = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = _toIobject($this); - var length = _toLength(O.length); + var length = toLength(O.length); var index = _toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm @@ -4544,8 +4559,15 @@ var _sharedKey = function (key) { return shared[key] || (shared[key] = _uid(key)); }; +var _sharedKey$1 = /*#__PURE__*/Object.freeze({ + default: _sharedKey, + __moduleExports: _sharedKey +}); + +var require$$0 = ( _sharedKey$1 && _sharedKey ) || _sharedKey$1; + var arrayIndexOf = _arrayIncludes(false); -var IE_PROTO = _sharedKey('IE_PROTO'); +var IE_PROTO = require$$0('IE_PROTO'); var _objectKeysInternal = function (object, names) { var O = _toIobject(object); @@ -4591,13 +4613,6 @@ var _toObject = function (it) { return Object(defined(it)); }; -var _toObject$1 = /*#__PURE__*/Object.freeze({ - default: _toObject, - __moduleExports: _toObject -}); - -var toObject = ( _toObject$1 && _toObject ) || _toObject$1; - // 19.1.2.1 Object.assign(target, source, ...) @@ -4617,7 +4632,7 @@ var _objectAssign = !$assign || _fails(function () { K.split('').forEach(function (k) { B[k] = k; }); return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; }) ? function assign(target, source) { // eslint-disable-line no-unused-vars - var T = toObject(target); + var T = _toObject(target); var aLen = arguments.length; var index = 1; var getSymbols = _objectGops.f; @@ -4632,17 +4647,10 @@ var _objectAssign = !$assign || _fails(function () { } return T; } : $assign; -var _objectAssign$1 = /*#__PURE__*/Object.freeze({ - default: _objectAssign, - __moduleExports: _objectAssign -}); - -var require$$0 = ( _objectAssign$1 && _objectAssign ) || _objectAssign$1; - // 19.1.3.1 Object.assign(target, source) -_export(_export.S + _export.F, 'Object', { assign: require$$0 }); +_export(_export.S + _export.F, 'Object', { assign: _objectAssign }); var assign = _core.Object.assign; @@ -4650,14 +4658,7 @@ var assign$1 = createCommonjsModule(function (module) { module.exports = { "default": assign, __esModule: true }; }); -var assign$2 = unwrapExports(assign$1); - -var assign$3 = /*#__PURE__*/Object.freeze({ - default: assign$2, - __moduleExports: assign$1 -}); - -var _assign = ( assign$3 && assign$2 ) || assign$3; +unwrapExports(assign$1); var _extends$1 = createCommonjsModule(function (module, exports) { @@ -4665,7 +4666,7 @@ exports.__esModule = true; -var _assign2 = _interopRequireDefault(_assign); +var _assign2 = _interopRequireDefault(assign$1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -4704,7 +4705,7 @@ var _classCallCheck$1 = unwrapExports(classCallCheck$1); var _stringAt = function (TO_STRING) { return function (that, pos) { var s = String(defined(that)); - var i = toInteger(pos); + var i = _toInteger(pos); var l = s.length; var a, b; if (i < 0 || i >= l) return TO_STRING ? '' : undefined; @@ -4736,7 +4737,7 @@ var _html = document$2 && document$2.documentElement; -var IE_PROTO$1 = _sharedKey('IE_PROTO'); +var IE_PROTO$1 = require$$0('IE_PROTO'); var Empty = function () { /* empty */ }; var PROTOTYPE$1 = 'prototype'; @@ -4809,11 +4810,11 @@ var _iterCreate = function (Constructor, NAME, next) { // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -var IE_PROTO$2 = _sharedKey('IE_PROTO'); +var IE_PROTO$2 = require$$0('IE_PROTO'); var ObjectProto = Object.prototype; var _objectGpo = Object.getPrototypeOf || function (O) { - O = toObject(O); + O = _toObject(O); if (_has(O, IE_PROTO$2)) return O[IE_PROTO$2]; if (typeof O.constructor == 'function' && O instanceof O.constructor) { return O.constructor.prototype; @@ -4874,17 +4875,10 @@ var _iterDefine = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORC return methods; }; -var _iterDefine$1 = /*#__PURE__*/Object.freeze({ - default: _iterDefine, - __moduleExports: _iterDefine -}); - -var require$$0$1 = ( _iterDefine$1 && _iterDefine ) || _iterDefine$1; - var $at = _stringAt(true); // 21.1.3.27 String.prototype[@@iterator]() -require$$0$1(String, 'String', function (iterated) { +_iterDefine(String, 'String', function (iterated) { this._t = String(iterated); // target this._i = 0; // next index // 21.1.5.2.1 %StringIteratorPrototype%.next() @@ -4906,7 +4900,7 @@ var _iterStep = function (done, value) { // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() // 22.1.3.30 Array.prototype[@@iterator]() -var es6_array_iterator = require$$0$1(Array, 'Array', function (iterated, kind) { +var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { this._t = _toIobject(iterated); // target this._i = 0; // next index this._k = kind; // kind @@ -4951,7 +4945,12 @@ var iterator$1 = createCommonjsModule(function (module) { module.exports = { "default": iterator, __esModule: true }; }); -unwrapExports(iterator$1); +var iterator$2 = unwrapExports(iterator$1); + +var iterator$3 = /*#__PURE__*/Object.freeze({ + default: iterator$2, + __moduleExports: iterator$1 +}); var _meta = createCommonjsModule(function (module) { var META = _uid('meta'); @@ -5039,7 +5038,7 @@ var _enumKeys = function (it) { // 7.2.2 IsArray(argument) var _isArray = Array.isArray || function isArray(arg) { - return _cof(arg) == 'Array'; + return cof(arg) == 'Array'; }; // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) @@ -5337,7 +5336,16 @@ var symbol$1 = createCommonjsModule(function (module) { module.exports = { "default": symbol, __esModule: true }; }); -unwrapExports(symbol$1); +var symbol$2 = unwrapExports(symbol$1); + +var symbol$3 = /*#__PURE__*/Object.freeze({ + default: symbol$2, + __moduleExports: symbol$1 +}); + +var _iterator = ( iterator$3 && iterator$2 ) || iterator$3; + +var _symbol = ( symbol$3 && symbol$2 ) || symbol$3; var _typeof_1 = createCommonjsModule(function (module, exports) { @@ -5345,11 +5353,11 @@ exports.__esModule = true; -var _iterator2 = _interopRequireDefault(iterator$1); +var _iterator2 = _interopRequireDefault(_iterator); -var _symbol2 = _interopRequireDefault(symbol$1); +var _symbol2 = _interopRequireDefault(_symbol); var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; @@ -5411,9 +5419,16 @@ var _setProto = { check: check }; +var _setProto$1 = /*#__PURE__*/Object.freeze({ + default: _setProto, + __moduleExports: _setProto +}); + +var require$$0$1 = ( _setProto$1 && _setProto ) || _setProto$1; + // 19.1.3.19 Object.setPrototypeOf(O, proto) -_export(_export.S, 'Object', { setPrototypeOf: _setProto.set }); +_export(_export.S, 'Object', { setPrototypeOf: require$$0$1.set }); var setPrototypeOf = _core.Object.setPrototypeOf; @@ -5431,18 +5446,11 @@ var create = function create(P, D) { return $Object.create(P, D); }; -var create$1 = /*#__PURE__*/Object.freeze({ - default: create, - __moduleExports: create +var create$1 = createCommonjsModule(function (module) { +module.exports = { "default": create, __esModule: true }; }); -var require$$0$2 = ( create$1 && create ) || create$1; - -var create$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$2, __esModule: true }; -}); - -unwrapExports(create$2); +unwrapExports(create$1); var inherits$1 = createCommonjsModule(function (module, exports) { @@ -5454,7 +5462,7 @@ var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$1); -var _create2 = _interopRequireDefault(create$2); +var _create2 = _interopRequireDefault(create$1); @@ -7996,6 +8004,11 @@ var gud = function() { return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1; }; +var gud$1 = /*#__PURE__*/Object.freeze({ + default: gud, + __moduleExports: gud +}); + /** * Copyright (c) 2013-present, Facebook, Inc. * @@ -8087,6 +8100,8 @@ var warning$1 = /*#__PURE__*/Object.freeze({ __moduleExports: warning_1 }); +var _gud = ( gud$1 && gud ) || gud$1; + var _warning = ( warning$1 && warning_1 ) || warning$1; var implementation = createCommonjsModule(function (module, exports) { @@ -8103,7 +8118,7 @@ var _propTypes2 = _interopRequireDefault(PropTypes); -var _gud2 = _interopRequireDefault(gud); +var _gud2 = _interopRequireDefault(_gud); @@ -8873,7 +8888,6 @@ var DatePicker = function (_React$Component) { }; _this.handleFocus = function (event) { - console.log(_this.state.preventFocus); if (!_this.state.preventFocus) { _this.props.onFocus(event); if (!_this.props.preventOpenOnFocus && !_this.props.readOnly) { @@ -8982,18 +8996,19 @@ var DatePicker = function (_React$Component) { return; } - if (!isSameDay(_this.props.selected, changedDate) || _this.props.allowSameDay) { + if (changedDate !== null && _this.props.selected) { + var selected = _this.props.selected; + if (keepInput) selected = newDate(changedDate); + changedDate = setTime(newDate(changedDate), { + hour: getHour(selected), + minute: getMinute(selected), + second: getSecond(selected), + millisecond: getMillisecond(selected) + }); + } + + if (!isSameDay(_this.props.selected, changedDate) || !isSameTime(_this.props.selected, changedDate) || _this.props.allowSameDay) { if (changedDate !== null) { - if (_this.props.selected) { - var selected = _this.props.selected; - if (keepInput) selected = newDate(changedDate); - changedDate = setTime(newDate(changedDate), { - hour: getHour(selected), - minute: getMinute(selected), - second: getSecond(selected), - millisecond: getMillisecond(selected) - }); - } if (!_this.props.inline) { _this.setState({ preSelection: changedDate @@ -9029,11 +9044,16 @@ var DatePicker = function (_React$Component) { millisecond: 0 }); - _this.setState({ - preSelection: changedDate - }); + if (!isSameTime(selected, changedDate)) { + _this.setState({ + preSelection: changedDate + }); + + _this.props.onChange(changedDate); + } + + _this.props.onSelect(changedDate); - _this.props.onChange(changedDate); if (_this.props.shouldCloseOnSelect) { _this.setOpen(false, true); } diff --git a/packages/react-datepicker/docs-site/bundle.js b/packages/react-datepicker/docs-site/bundle.js index cdedf44d066..52986fd103e 100644 --- a/packages/react-datepicker/docs-site/bundle.js +++ b/packages/react-datepicker/docs-site/bundle.js @@ -26814,7 +26814,6 @@ }; _this.handleFocus = function (event) { - console.log(_this.state.preventFocus); if (!_this.state.preventFocus) { _this.props.onFocus(event); if (!_this.props.preventOpenOnFocus && !_this.props.readOnly) { @@ -26923,18 +26922,19 @@ return; } - if (!(0, _date_utils.isSameDay)(_this.props.selected, changedDate) || _this.props.allowSameDay) { + if (changedDate !== null && _this.props.selected) { + var selected = _this.props.selected; + if (keepInput) selected = (0, _date_utils.newDate)(changedDate); + changedDate = (0, _date_utils.setTime)((0, _date_utils.newDate)(changedDate), { + hour: (0, _date_utils.getHour)(selected), + minute: (0, _date_utils.getMinute)(selected), + second: (0, _date_utils.getSecond)(selected), + millisecond: (0, _date_utils.getMillisecond)(selected) + }); + } + + if (!(0, _date_utils.isSameDay)(_this.props.selected, changedDate) || !(0, _date_utils.isSameTime)(_this.props.selected, changedDate) || _this.props.allowSameDay) { if (changedDate !== null) { - if (_this.props.selected) { - var selected = _this.props.selected; - if (keepInput) selected = (0, _date_utils.newDate)(changedDate); - changedDate = (0, _date_utils.setTime)((0, _date_utils.newDate)(changedDate), { - hour: (0, _date_utils.getHour)(selected), - minute: (0, _date_utils.getMinute)(selected), - second: (0, _date_utils.getSecond)(selected), - millisecond: (0, _date_utils.getMillisecond)(selected) - }); - } if (!_this.props.inline) { _this.setState({ preSelection: changedDate @@ -26970,11 +26970,16 @@ millisecond: 0 }); - _this.setState({ - preSelection: changedDate - }); + if (!(0, _date_utils.isSameTime)(selected, changedDate)) { + _this.setState({ + preSelection: changedDate + }); + + _this.props.onChange(changedDate); + } + + _this.props.onSelect(changedDate); - _this.props.onChange(changedDate); if (_this.props.shouldCloseOnSelect) { _this.setOpen(false, true); } @@ -29936,6 +29941,7 @@ exports.isSameYear = isSameYear; exports.isSameMonth = isSameMonth; exports.isSameDay = isSameDay; + exports.isSameTime = isSameTime; exports.isSameUtcOffset = isSameUtcOffset; exports.isDayInRange = isDayInRange; exports.getDaysDiff = getDaysDiff; @@ -30241,6 +30247,14 @@ } } + function isSameTime(moment1, moment2) { + if (moment1 && moment2) { + return moment1.format('HH:mm:ss') === moment2.format('HH:mm:ss'); + } else { + return !moment1 && !moment2; + } + } + function isSameUtcOffset(moment1, moment2) { if (moment1 && moment2) { return moment1.utcOffset() === moment2.utcOffset(); diff --git a/packages/react-datepicker/src/date_utils.js b/packages/react-datepicker/src/date_utils.js index 6ef389ff960..60d5ac52e2a 100644 --- a/packages/react-datepicker/src/date_utils.js +++ b/packages/react-datepicker/src/date_utils.js @@ -272,6 +272,14 @@ export function isSameDay(moment1, moment2) { } } +export function isSameTime(moment1, moment2) { + if (moment1 && moment2) { + return moment1.format('HH:mm:ss') === moment2.format('HH:mm:ss'); + } else { + return !moment1 && !moment2; + } +} + export function isSameUtcOffset(moment1, moment2) { if (moment1 && moment2) { return moment1.utcOffset() === moment2.utcOffset(); diff --git a/packages/react-datepicker/src/index.jsx b/packages/react-datepicker/src/index.jsx index 81c30ed68b8..556bad909fb 100644 --- a/packages/react-datepicker/src/index.jsx +++ b/packages/react-datepicker/src/index.jsx @@ -28,6 +28,7 @@ import { subtractWeeks, subtractYears, isSameDay, + isSameTime, isDayDisabled, isOutOfBounds, isDayInRange, @@ -331,7 +332,6 @@ export default class DatePicker extends React.Component { : this.props.open; handleFocus = event => { - console.log(this.state.preventFocus); if (!this.state.preventFocus) { this.props.onFocus(event); if ( @@ -441,21 +441,23 @@ export default class DatePicker extends React.Component { return; } + if (changedDate !== null && this.props.selected) { + let selected = this.props.selected; + if (keepInput) selected = newDate(changedDate); + changedDate = setTime(newDate(changedDate), { + hour: getHour(selected), + minute: getMinute(selected), + second: getSecond(selected), + millisecond: getMillisecond(selected), + }); + } + if ( !isSameDay(this.props.selected, changedDate) || + !isSameTime(this.props.selected, changedDate) || this.props.allowSameDay ) { if (changedDate !== null) { - if (this.props.selected) { - let selected = this.props.selected; - if (keepInput) selected = newDate(changedDate); - changedDate = setTime(newDate(changedDate), { - hour: getHour(selected), - minute: getMinute(selected), - second: getSecond(selected), - millisecond: getMillisecond(selected), - }); - } if (!this.props.inline) { this.setState({ preSelection: changedDate @@ -498,11 +500,16 @@ export default class DatePicker extends React.Component { millisecond: 0, }); - this.setState({ - preSelection: changedDate - }); + if (!isSameTime(selected, changedDate)) { + this.setState({ + preSelection: changedDate + }); + + this.props.onChange(changedDate); + } - this.props.onChange(changedDate); + this.props.onSelect(changedDate); + if (this.props.shouldCloseOnSelect) { this.setOpen(false, true); } From 18ef10c244adabe2a81c0632e0195144554dbb70 Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Wed, 18 Nov 2020 14:08:25 -0700 Subject: [PATCH 09/17] clean up --- packages/react-datepicker.js | 112 +++++++++--------- packages/react-datepicker/docs-site/bundle.js | 1 - packages/react-datepicker/src/index.jsx | 1 - 3 files changed, 59 insertions(+), 55 deletions(-) diff --git a/packages/react-datepicker.js b/packages/react-datepicker.js index c4b8b9ba1cd..3757c90ac12 100644 --- a/packages/react-datepicker.js +++ b/packages/react-datepicker.js @@ -4455,18 +4455,11 @@ var _cof = function (it) { return toString.call(it).slice(8, -1); }; -var _cof$1 = /*#__PURE__*/Object.freeze({ - default: _cof, - __moduleExports: _cof -}); - -var cof = ( _cof$1 && _cof ) || _cof$1; - // fallback for non-array-like ES3 and non-enumerable old V8 strings // eslint-disable-next-line no-prototype-builtins var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return cof(it) == 'String' ? it.split('') : Object(it); + return _cof(it) == 'String' ? it.split('') : Object(it); }; // 7.2.1 RequireObjectCoercible(argument) @@ -4475,18 +4468,11 @@ var _defined = function (it) { return it; }; -var _defined$1 = /*#__PURE__*/Object.freeze({ - default: _defined, - __moduleExports: _defined -}); - -var defined = ( _defined$1 && _defined ) || _defined$1; - // to indexed object, toObject with fallback for non-array-like ES3 strings var _toIobject = function (it) { - return _iobject(defined(it)); + return _iobject(_defined(it)); }; // 7.1.4 ToInteger @@ -4559,15 +4545,8 @@ var _sharedKey = function (key) { return shared[key] || (shared[key] = _uid(key)); }; -var _sharedKey$1 = /*#__PURE__*/Object.freeze({ - default: _sharedKey, - __moduleExports: _sharedKey -}); - -var require$$0 = ( _sharedKey$1 && _sharedKey ) || _sharedKey$1; - var arrayIndexOf = _arrayIncludes(false); -var IE_PROTO = require$$0('IE_PROTO'); +var IE_PROTO = _sharedKey('IE_PROTO'); var _objectKeysInternal = function (object, names) { var O = _toIobject(object); @@ -4610,7 +4589,7 @@ var _objectPie = { // 7.1.13 ToObject(argument) var _toObject = function (it) { - return Object(defined(it)); + return Object(_defined(it)); }; // 19.1.2.1 Object.assign(target, source, ...) @@ -4704,7 +4683,7 @@ var _classCallCheck$1 = unwrapExports(classCallCheck$1); // false -> String#codePointAt var _stringAt = function (TO_STRING) { return function (that, pos) { - var s = String(defined(that)); + var s = String(_defined(that)); var i = _toInteger(pos); var l = s.length; var a, b; @@ -4716,6 +4695,11 @@ var _stringAt = function (TO_STRING) { }; }; +var _stringAt$1 = /*#__PURE__*/Object.freeze({ + default: _stringAt, + __moduleExports: _stringAt +}); + var _library = true; var _redefine = _hide; @@ -4737,7 +4721,7 @@ var _html = document$2 && document$2.documentElement; -var IE_PROTO$1 = require$$0('IE_PROTO'); +var IE_PROTO$1 = _sharedKey('IE_PROTO'); var Empty = function () { /* empty */ }; var PROTOTYPE$1 = 'prototype'; @@ -4810,7 +4794,7 @@ var _iterCreate = function (Constructor, NAME, next) { // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -var IE_PROTO$2 = require$$0('IE_PROTO'); +var IE_PROTO$2 = _sharedKey('IE_PROTO'); var ObjectProto = Object.prototype; var _objectGpo = Object.getPrototypeOf || function (O) { @@ -4875,7 +4859,9 @@ var _iterDefine = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORC return methods; }; -var $at = _stringAt(true); +var require$$0 = ( _stringAt$1 && _stringAt ) || _stringAt$1; + +var $at = require$$0(true); // 21.1.3.27 String.prototype[@@iterator]() _iterDefine(String, 'String', function (iterated) { @@ -4941,15 +4927,22 @@ var _wksExt = { var iterator = _wksExt.f('iterator'); -var iterator$1 = createCommonjsModule(function (module) { -module.exports = { "default": iterator, __esModule: true }; +var iterator$1 = /*#__PURE__*/Object.freeze({ + default: iterator, + __moduleExports: iterator }); -var iterator$2 = unwrapExports(iterator$1); +var require$$0$1 = ( iterator$1 && iterator ) || iterator$1; -var iterator$3 = /*#__PURE__*/Object.freeze({ - default: iterator$2, - __moduleExports: iterator$1 +var iterator$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0$1, __esModule: true }; +}); + +var iterator$3 = unwrapExports(iterator$2); + +var iterator$4 = /*#__PURE__*/Object.freeze({ + default: iterator$3, + __moduleExports: iterator$2 }); var _meta = createCommonjsModule(function (module) { @@ -5038,7 +5031,7 @@ var _enumKeys = function (it) { // 7.2.2 IsArray(argument) var _isArray = Array.isArray || function isArray(arg) { - return cof(arg) == 'Array'; + return _cof(arg) == 'Array'; }; // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) @@ -5332,20 +5325,20 @@ _wksDefine('observable'); var symbol = _core.Symbol; -var symbol$1 = createCommonjsModule(function (module) { -module.exports = { "default": symbol, __esModule: true }; +var symbol$1 = /*#__PURE__*/Object.freeze({ + default: symbol, + __moduleExports: symbol }); -var symbol$2 = unwrapExports(symbol$1); +var require$$0$2 = ( symbol$1 && symbol ) || symbol$1; -var symbol$3 = /*#__PURE__*/Object.freeze({ - default: symbol$2, - __moduleExports: symbol$1 +var symbol$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0$2, __esModule: true }; }); -var _iterator = ( iterator$3 && iterator$2 ) || iterator$3; +unwrapExports(symbol$2); -var _symbol = ( symbol$3 && symbol$2 ) || symbol$3; +var _iterator = ( iterator$4 && iterator$3 ) || iterator$4; var _typeof_1 = createCommonjsModule(function (module, exports) { @@ -5357,7 +5350,7 @@ var _iterator2 = _interopRequireDefault(_iterator); -var _symbol2 = _interopRequireDefault(_symbol); +var _symbol2 = _interopRequireDefault(symbol$2); var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; @@ -5424,19 +5417,26 @@ var _setProto$1 = /*#__PURE__*/Object.freeze({ __moduleExports: _setProto }); -var require$$0$1 = ( _setProto$1 && _setProto ) || _setProto$1; +var require$$0$3 = ( _setProto$1 && _setProto ) || _setProto$1; // 19.1.3.19 Object.setPrototypeOf(O, proto) -_export(_export.S, 'Object', { setPrototypeOf: require$$0$1.set }); +_export(_export.S, 'Object', { setPrototypeOf: require$$0$3.set }); var setPrototypeOf = _core.Object.setPrototypeOf; -var setPrototypeOf$1 = createCommonjsModule(function (module) { -module.exports = { "default": setPrototypeOf, __esModule: true }; +var setPrototypeOf$1 = /*#__PURE__*/Object.freeze({ + default: setPrototypeOf, + __moduleExports: setPrototypeOf +}); + +var require$$0$4 = ( setPrototypeOf$1 && setPrototypeOf ) || setPrototypeOf$1; + +var setPrototypeOf$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0$4, __esModule: true }; }); -unwrapExports(setPrototypeOf$1); +unwrapExports(setPrototypeOf$2); // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) _export(_export.S, 'Object', { create: _objectCreate }); @@ -5458,7 +5458,7 @@ exports.__esModule = true; -var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$1); +var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$2); @@ -8044,6 +8044,13 @@ emptyFunction.thatReturnsArgument = function (arg) { var emptyFunction_1 = emptyFunction; +var emptyFunction$1 = /*#__PURE__*/Object.freeze({ + default: emptyFunction_1, + __moduleExports: emptyFunction_1 +}); + +var emptyFunction$2 = ( emptyFunction$1 && emptyFunction_1 ) || emptyFunction$1; + /** * Similar to invariant but only logs a warning if the condition is not met. * This can be used to log issues in development environments in critical @@ -8051,7 +8058,7 @@ var emptyFunction_1 = emptyFunction; * same logic and follow the same code paths. */ -var warning = emptyFunction_1; +var warning = emptyFunction$2; if (process.env.NODE_ENV !== 'production') { var printWarning = function printWarning(format) { @@ -8972,7 +8979,6 @@ var DatePicker = function (_React$Component) { if (!_this.props.shouldCloseOnSelect || _this.props.showTimeSelect) { _this.setPreSelection(date); } else if (!_this.props.inline) { - // This causes the navigation button to close the popover _this.setOpen(false, true); } }; diff --git a/packages/react-datepicker/docs-site/bundle.js b/packages/react-datepicker/docs-site/bundle.js index 52986fd103e..e2869d3920f 100644 --- a/packages/react-datepicker/docs-site/bundle.js +++ b/packages/react-datepicker/docs-site/bundle.js @@ -26898,7 +26898,6 @@ if (!_this.props.shouldCloseOnSelect || _this.props.showTimeSelect) { _this.setPreSelection(date); } else if (!_this.props.inline) { - // This causes the navigation button to close the popover _this.setOpen(false, true); } }; diff --git a/packages/react-datepicker/src/index.jsx b/packages/react-datepicker/src/index.jsx index 556bad909fb..dc004108400 100644 --- a/packages/react-datepicker/src/index.jsx +++ b/packages/react-datepicker/src/index.jsx @@ -417,7 +417,6 @@ export default class DatePicker extends React.Component { if (!this.props.shouldCloseOnSelect || this.props.showTimeSelect) { this.setPreSelection(date); } else if (!this.props.inline) { - // This causes the navigation button to close the popover this.setOpen(false, true); } }; From 6eda8bf71828331ef0aca259f07cbd785cf7d0da Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Fri, 20 Nov 2020 12:51:38 -0700 Subject: [PATCH 10/17] better isSameTime --- packages/react-datepicker.js | 225 +++++++++--------- packages/react-datepicker/docs-site/bundle.js | 11 +- packages/react-datepicker/src/date_utils.js | 2 +- packages/react-datepicker/src/index.jsx | 1 - .../react-datepicker/src/year_dropdown.jsx | 11 - 5 files changed, 112 insertions(+), 138 deletions(-) diff --git a/packages/react-datepicker.js b/packages/react-datepicker.js index 3757c90ac12..2baaf89b142 100644 --- a/packages/react-datepicker.js +++ b/packages/react-datepicker.js @@ -212,6 +212,11 @@ UntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) { var tabbable_1 = tabbable; +var tabbable$1 = /*#__PURE__*/Object.freeze({ + default: tabbable_1, + __moduleExports: tabbable_1 +}); + var immutable = extend; var hasOwnProperty = Object.prototype.hasOwnProperty; @@ -232,6 +237,8 @@ function extend() { return target } +var tabbable$2 = ( tabbable$1 && tabbable_1 ) || tabbable$1; + var listeningFocusTrap = null; function focusTrap(element, userOptions) { @@ -411,7 +418,7 @@ function focusTrap(element, userOptions) { if (container.contains(e.target)) return; if (config.clickOutsideDeactivates) { deactivate({ - returnFocus: !tabbable_1.isFocusable(e.target) + returnFocus: !tabbable$2.isFocusable(e.target) }); } else { e.preventDefault(); @@ -466,7 +473,7 @@ function focusTrap(element, userOptions) { } function updateTabbableNodes() { - var tabbableNodes = tabbable_1(container); + var tabbableNodes = tabbable$2(container); state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode(); state.lastTabbableNode = tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode(); @@ -509,13 +516,6 @@ function delay(fn) { var focusTrap_1 = focusTrap; -var focusTrap$1 = /*#__PURE__*/Object.freeze({ - default: focusTrap_1, - __moduleExports: focusTrap_1 -}); - -var createFocusTrap = ( focusTrap$1 && focusTrap_1 ) || focusTrap$1; - var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -626,7 +626,7 @@ FocusTrap.defaultProps = { tag: 'div', paused: false, focusTrapOptions: {}, - _createFocusTrap: createFocusTrap + _createFocusTrap: focusTrap_1 }; var focusTrapReact = FocusTrap; @@ -1565,7 +1565,7 @@ function isSameDay(moment1, moment2) { function isSameTime(moment1, moment2) { if (moment1 && moment2) { - return moment1.format('HH:mm:ss') === moment2.format('HH:mm:ss'); + return moment1.isSame(moment2, "second"); } else { return !moment1 && !moment2; } @@ -1879,17 +1879,10 @@ var YearDropdown = function (_React$Component) { _this.setState({ dropdownVisible: !_this.state.dropdownVisible }); - }, _this.handleYearChange = function (date, event) { - _this.onSelect(date, event); - _this.setOpen(); }, _this.onSelect = function (date, event) { if (_this.props.onSelect) { _this.props.onSelect(date, event); } - }, _this.setOpen = function () { - if (_this.props.setOpen) { - _this.props.setOpen(true); - } }, _temp), possibleConstructorReturn(_this, _ret); } @@ -4278,17 +4271,10 @@ var _aFunction = function (it) { return it; }; -var _aFunction$1 = /*#__PURE__*/Object.freeze({ - default: _aFunction, - __moduleExports: _aFunction -}); - -var aFunction = ( _aFunction$1 && _aFunction ) || _aFunction$1; - // optional / simple context binding var _ctx = function (fn, that, length) { - aFunction(fn); + _aFunction(fn); if (that === undefined) return fn; switch (length) { case 1: return function (a) { @@ -4462,17 +4448,24 @@ var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) { return _cof(it) == 'String' ? it.split('') : Object(it); }; +var _iobject$1 = /*#__PURE__*/Object.freeze({ + default: _iobject, + __moduleExports: _iobject +}); + // 7.2.1 RequireObjectCoercible(argument) var _defined = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; +var IObject = ( _iobject$1 && _iobject ) || _iobject$1; + // to indexed object, toObject with fallback for non-array-like ES3 strings var _toIobject = function (it) { - return _iobject(_defined(it)); + return IObject(_defined(it)); }; // 7.1.4 ToInteger @@ -4501,8 +4494,15 @@ var _toAbsoluteIndex = function (index, length) { return index < 0 ? max(index + length, 0) : min$1(index, length); }; +var _toAbsoluteIndex$1 = /*#__PURE__*/Object.freeze({ + default: _toAbsoluteIndex, + __moduleExports: _toAbsoluteIndex +}); + var toLength = ( _toLength$1 && _toLength ) || _toLength$1; +var toAbsoluteIndex = ( _toAbsoluteIndex$1 && _toAbsoluteIndex ) || _toAbsoluteIndex$1; + // false -> Array#indexOf // true -> Array#includes @@ -4512,7 +4512,7 @@ var _arrayIncludes = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = _toIobject($this); var length = toLength(O.length); - var index = _toAbsoluteIndex(fromIndex, length); + var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare @@ -4561,17 +4561,24 @@ var _objectKeysInternal = function (object, names) { return result; }; +var _objectKeysInternal$1 = /*#__PURE__*/Object.freeze({ + default: _objectKeysInternal, + __moduleExports: _objectKeysInternal +}); + // IE 8- don't enum bug keys var _enumBugKeys = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); +var $keys = ( _objectKeysInternal$1 && _objectKeysInternal ) || _objectKeysInternal$1; + // 19.1.2.14 / 15.2.3.14 Object.keys(O) var _objectKeys = Object.keys || function keys(O) { - return _objectKeysInternal(O, _enumBugKeys); + return $keys(O, _enumBugKeys); }; var f$1 = Object.getOwnPropertySymbols; @@ -4617,7 +4624,7 @@ var _objectAssign = !$assign || _fails(function () { var getSymbols = _objectGops.f; var isEnum = _objectPie.f; while (aLen > index) { - var S = _iobject(arguments[index++]); + var S = IObject(arguments[index++]); var keys = getSymbols ? _objectKeys(S).concat(getSymbols(S)) : _objectKeys(S); var length = keys.length; var j = 0; @@ -4633,11 +4640,18 @@ _export(_export.S + _export.F, 'Object', { assign: _objectAssign }); var assign = _core.Object.assign; -var assign$1 = createCommonjsModule(function (module) { -module.exports = { "default": assign, __esModule: true }; +var assign$1 = /*#__PURE__*/Object.freeze({ + default: assign, + __moduleExports: assign +}); + +var require$$0 = ( assign$1 && assign ) || assign$1; + +var assign$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0, __esModule: true }; }); -unwrapExports(assign$1); +unwrapExports(assign$2); var _extends$1 = createCommonjsModule(function (module, exports) { @@ -4645,7 +4659,7 @@ exports.__esModule = true; -var _assign2 = _interopRequireDefault(assign$1); +var _assign2 = _interopRequireDefault(assign$2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -4695,11 +4709,6 @@ var _stringAt = function (TO_STRING) { }; }; -var _stringAt$1 = /*#__PURE__*/Object.freeze({ - default: _stringAt, - __moduleExports: _stringAt -}); - var _library = true; var _redefine = _hide; @@ -4859,12 +4868,17 @@ var _iterDefine = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORC return methods; }; -var require$$0 = ( _stringAt$1 && _stringAt ) || _stringAt$1; +var _iterDefine$1 = /*#__PURE__*/Object.freeze({ + default: _iterDefine, + __moduleExports: _iterDefine +}); -var $at = require$$0(true); +var require$$0$1 = ( _iterDefine$1 && _iterDefine ) || _iterDefine$1; + +var $at = _stringAt(true); // 21.1.3.27 String.prototype[@@iterator]() -_iterDefine(String, 'String', function (iterated) { +require$$0$1(String, 'String', function (iterated) { this._t = String(iterated); // target this._i = 0; // next index // 21.1.5.2.1 %StringIteratorPrototype%.next() @@ -4882,11 +4896,18 @@ var _iterStep = function (done, value) { return { value: value, done: !!done }; }; +var _iterStep$1 = /*#__PURE__*/Object.freeze({ + default: _iterStep, + __moduleExports: _iterStep +}); + +var step = ( _iterStep$1 && _iterStep ) || _iterStep$1; + // 22.1.3.4 Array.prototype.entries() // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() // 22.1.3.30 Array.prototype[@@iterator]() -var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { +var es6_array_iterator = require$$0$1(Array, 'Array', function (iterated, kind) { this._t = _toIobject(iterated); // target this._i = 0; // next index this._k = kind; // kind @@ -4897,11 +4918,11 @@ var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { var index = this._i++; if (!O || index >= O.length) { this._t = undefined; - return _iterStep(1); + return step(1); } - if (kind == 'keys') return _iterStep(0, index); - if (kind == 'values') return _iterStep(0, O[index]); - return _iterStep(0, [index, O[index]]); + if (kind == 'keys') return step(0, index); + if (kind == 'values') return step(0, O[index]); + return step(0, [index, O[index]]); }, 'values'); var TO_STRING_TAG = _wks('toStringTag'); @@ -4927,23 +4948,11 @@ var _wksExt = { var iterator = _wksExt.f('iterator'); -var iterator$1 = /*#__PURE__*/Object.freeze({ - default: iterator, - __moduleExports: iterator -}); - -var require$$0$1 = ( iterator$1 && iterator ) || iterator$1; - -var iterator$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$1, __esModule: true }; +var iterator$1 = createCommonjsModule(function (module) { +module.exports = { "default": iterator, __esModule: true }; }); -var iterator$3 = unwrapExports(iterator$2); - -var iterator$4 = /*#__PURE__*/Object.freeze({ - default: iterator$3, - __moduleExports: iterator$2 -}); +unwrapExports(iterator$1); var _meta = createCommonjsModule(function (module) { var META = _uid('meta'); @@ -5039,7 +5048,7 @@ var _isArray = Array.isArray || function isArray(arg) { var hiddenKeys = _enumBugKeys.concat('length', 'prototype'); var f$4 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return _objectKeysInternal(O, hiddenKeys); + return $keys(O, hiddenKeys); }; var _objectGopn = { @@ -5325,20 +5334,18 @@ _wksDefine('observable'); var symbol = _core.Symbol; -var symbol$1 = /*#__PURE__*/Object.freeze({ - default: symbol, - __moduleExports: symbol +var symbol$1 = createCommonjsModule(function (module) { +module.exports = { "default": symbol, __esModule: true }; }); -var require$$0$2 = ( symbol$1 && symbol ) || symbol$1; +var symbol$2 = unwrapExports(symbol$1); -var symbol$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$2, __esModule: true }; +var symbol$3 = /*#__PURE__*/Object.freeze({ + default: symbol$2, + __moduleExports: symbol$1 }); -unwrapExports(symbol$2); - -var _iterator = ( iterator$4 && iterator$3 ) || iterator$4; +var _symbol = ( symbol$3 && symbol$2 ) || symbol$3; var _typeof_1 = createCommonjsModule(function (module, exports) { @@ -5346,11 +5353,11 @@ exports.__esModule = true; -var _iterator2 = _interopRequireDefault(_iterator); +var _iterator2 = _interopRequireDefault(iterator$1); -var _symbol2 = _interopRequireDefault(symbol$2); +var _symbol2 = _interopRequireDefault(_symbol); var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; @@ -5412,16 +5419,9 @@ var _setProto = { check: check }; -var _setProto$1 = /*#__PURE__*/Object.freeze({ - default: _setProto, - __moduleExports: _setProto -}); - -var require$$0$3 = ( _setProto$1 && _setProto ) || _setProto$1; - // 19.1.3.19 Object.setPrototypeOf(O, proto) -_export(_export.S, 'Object', { setPrototypeOf: require$$0$3.set }); +_export(_export.S, 'Object', { setPrototypeOf: _setProto.set }); var setPrototypeOf = _core.Object.setPrototypeOf; @@ -5430,13 +5430,18 @@ var setPrototypeOf$1 = /*#__PURE__*/Object.freeze({ __moduleExports: setPrototypeOf }); -var require$$0$4 = ( setPrototypeOf$1 && setPrototypeOf ) || setPrototypeOf$1; +var require$$0$2 = ( setPrototypeOf$1 && setPrototypeOf ) || setPrototypeOf$1; var setPrototypeOf$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$4, __esModule: true }; +module.exports = { "default": require$$0$2, __esModule: true }; }); -unwrapExports(setPrototypeOf$2); +var setPrototypeOf$3 = unwrapExports(setPrototypeOf$2); + +var setPrototypeOf$4 = /*#__PURE__*/Object.freeze({ + default: setPrototypeOf$3, + __moduleExports: setPrototypeOf$2 +}); // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) _export(_export.S, 'Object', { create: _objectCreate }); @@ -5450,7 +5455,16 @@ var create$1 = createCommonjsModule(function (module) { module.exports = { "default": create, __esModule: true }; }); -unwrapExports(create$1); +var create$2 = unwrapExports(create$1); + +var create$3 = /*#__PURE__*/Object.freeze({ + default: create$2, + __moduleExports: create$1 +}); + +var _setPrototypeOf = ( setPrototypeOf$4 && setPrototypeOf$3 ) || setPrototypeOf$4; + +var _create = ( create$3 && create$2 ) || create$3; var inherits$1 = createCommonjsModule(function (module, exports) { @@ -5458,11 +5472,11 @@ exports.__esModule = true; -var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$2); +var _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf); -var _create2 = _interopRequireDefault(create$1); +var _create2 = _interopRequireDefault(_create); @@ -8004,11 +8018,6 @@ var gud = function() { return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1; }; -var gud$1 = /*#__PURE__*/Object.freeze({ - default: gud, - __moduleExports: gud -}); - /** * Copyright (c) 2013-present, Facebook, Inc. * @@ -8044,13 +8053,6 @@ emptyFunction.thatReturnsArgument = function (arg) { var emptyFunction_1 = emptyFunction; -var emptyFunction$1 = /*#__PURE__*/Object.freeze({ - default: emptyFunction_1, - __moduleExports: emptyFunction_1 -}); - -var emptyFunction$2 = ( emptyFunction$1 && emptyFunction_1 ) || emptyFunction$1; - /** * Similar to invariant but only logs a warning if the condition is not met. * This can be used to log issues in development environments in critical @@ -8058,7 +8060,7 @@ var emptyFunction$2 = ( emptyFunction$1 && emptyFunction_1 ) || emptyFunction$1; * same logic and follow the same code paths. */ -var warning = emptyFunction$2; +var warning = emptyFunction_1; if (process.env.NODE_ENV !== 'production') { var printWarning = function printWarning(format) { @@ -8102,15 +8104,6 @@ if (process.env.NODE_ENV !== 'production') { var warning_1 = warning; -var warning$1 = /*#__PURE__*/Object.freeze({ - default: warning_1, - __moduleExports: warning_1 -}); - -var _gud = ( gud$1 && gud ) || gud$1; - -var _warning = ( warning$1 && warning_1 ) || warning$1; - var implementation = createCommonjsModule(function (module, exports) { exports.__esModule = true; @@ -8125,11 +8118,11 @@ var _propTypes2 = _interopRequireDefault(PropTypes); -var _gud2 = _interopRequireDefault(_gud); +var _gud2 = _interopRequireDefault(gud); -var _warning2 = _interopRequireDefault(_warning); +var _warning2 = _interopRequireDefault(warning_1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -8558,10 +8551,10 @@ function Popper$1(props) { var __DEV__ = process.env.NODE_ENV !== 'production'; -var warning$2 = function() {}; +var warning$1 = function() {}; if (__DEV__) { - warning$2 = function(condition, format, args) { + warning$1 = function(condition, format, args) { var len = arguments.length; args = new Array(len > 2 ? len - 2 : 0); for (var key = 2; key < len; key++) { @@ -8599,7 +8592,7 @@ if (__DEV__) { }; } -var warning_1$1 = warning$2; +var warning_1$1 = warning$1; var InnerReference = function (_React$Component) { _inherits$1(InnerReference, _React$Component); @@ -9013,7 +9006,7 @@ var DatePicker = function (_React$Component) { }); } - if (!isSameDay(_this.props.selected, changedDate) || !isSameTime(_this.props.selected, changedDate) || _this.props.allowSameDay) { + if (!isSameTime(_this.props.selected, changedDate) || _this.props.allowSameDay) { if (changedDate !== null) { if (!_this.props.inline) { _this.setState({ diff --git a/packages/react-datepicker/docs-site/bundle.js b/packages/react-datepicker/docs-site/bundle.js index e2869d3920f..66aeeb5f70f 100644 --- a/packages/react-datepicker/docs-site/bundle.js +++ b/packages/react-datepicker/docs-site/bundle.js @@ -26932,7 +26932,7 @@ }); } - if (!(0, _date_utils.isSameDay)(_this.props.selected, changedDate) || !(0, _date_utils.isSameTime)(_this.props.selected, changedDate) || _this.props.allowSameDay) { + if (!(0, _date_utils.isSameTime)(_this.props.selected, changedDate) || _this.props.allowSameDay) { if (changedDate !== null) { if (!_this.props.inline) { _this.setState({ @@ -28438,17 +28438,10 @@ _this.setState({ dropdownVisible: !_this.state.dropdownVisible }); - }, _this.handleYearChange = function (date, event) { - _this.onSelect(date, event); - _this.setOpen(); }, _this.onSelect = function (date, event) { if (_this.props.onSelect) { _this.props.onSelect(date, event); } - }, _this.setOpen = function () { - if (_this.props.setOpen) { - _this.props.setOpen(true); - } }, _temp), _possibleConstructorReturn(_this, _ret); } @@ -30248,7 +30241,7 @@ function isSameTime(moment1, moment2) { if (moment1 && moment2) { - return moment1.format('HH:mm:ss') === moment2.format('HH:mm:ss'); + return moment1.isSame(moment2, "second"); } else { return !moment1 && !moment2; } diff --git a/packages/react-datepicker/src/date_utils.js b/packages/react-datepicker/src/date_utils.js index 60d5ac52e2a..b949b39a02a 100644 --- a/packages/react-datepicker/src/date_utils.js +++ b/packages/react-datepicker/src/date_utils.js @@ -274,7 +274,7 @@ export function isSameDay(moment1, moment2) { export function isSameTime(moment1, moment2) { if (moment1 && moment2) { - return moment1.format('HH:mm:ss') === moment2.format('HH:mm:ss'); + return moment1.isSame(moment2, "second"); } else { return !moment1 && !moment2; } diff --git a/packages/react-datepicker/src/index.jsx b/packages/react-datepicker/src/index.jsx index dc004108400..df7d5793b55 100644 --- a/packages/react-datepicker/src/index.jsx +++ b/packages/react-datepicker/src/index.jsx @@ -452,7 +452,6 @@ export default class DatePicker extends React.Component { } if ( - !isSameDay(this.props.selected, changedDate) || !isSameTime(this.props.selected, changedDate) || this.props.allowSameDay ) { diff --git a/packages/react-datepicker/src/year_dropdown.jsx b/packages/react-datepicker/src/year_dropdown.jsx index 1d7353ca223..df170100684 100644 --- a/packages/react-datepicker/src/year_dropdown.jsx +++ b/packages/react-datepicker/src/year_dropdown.jsx @@ -149,23 +149,12 @@ export default class YearDropdown extends React.Component { }); }; - handleYearChange = (date, event) => { - this.onSelect(date, event); - this.setOpen(); - }; - onSelect = (date, event) => { if (this.props.onSelect) { this.props.onSelect(date, event); } }; - setOpen = () => { - if (this.props.setOpen) { - this.props.setOpen(true); - } - }; - render() { let renderedDropdown; switch (this.props.dropdownMode) { From 9c0a2f830e358389130905eb1bb3d8cab1100990 Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Fri, 20 Nov 2020 15:38:09 -0700 Subject: [PATCH 11/17] retain focus trap on year and month change --- packages/react-datepicker.js | 182 +++++++++--------- packages/react-datepicker/docs-site/bundle.js | 51 +++-- packages/react-datepicker/src/calendar.jsx | 27 ++- packages/react-datepicker/src/index.jsx | 1 - .../react-datepicker/src/month_dropdown.jsx | 10 +- .../react-datepicker/src/year_dropdown.jsx | 7 +- 6 files changed, 152 insertions(+), 126 deletions(-) diff --git a/packages/react-datepicker.js b/packages/react-datepicker.js index 2baaf89b142..dd39a545fdb 100644 --- a/packages/react-datepicker.js +++ b/packages/react-datepicker.js @@ -1876,9 +1876,11 @@ var YearDropdown = function (_React$Component) { if (year === _this.props.year) return; _this.props.onChange(year); }, _this.toggleDropdown = function () { + var isOpen = !_this.state.dropdownVisible; _this.setState({ - dropdownVisible: !_this.state.dropdownVisible + dropdownVisible: isOpen }); + _this.props.onDropdownToggle(isOpen, 'year'); }, _this.onSelect = function (date, event) { if (_this.props.onSelect) { _this.props.onSelect(date, event); @@ -1930,7 +1932,8 @@ YearDropdown.propTypes = { date: PropTypes.object, onSelect: PropTypes.func, setOpen: PropTypes.func, - accessibleMode: PropTypes.bool + accessibleMode: PropTypes.bool, + onDropdownToggle: PropTypes.func }; var MonthDropdownOptions = function (_React$Component) { @@ -2193,9 +2196,11 @@ var MonthDropdown = function (_React$Component) { }; _this.toggleDropdown = function () { - return _this.setState({ - dropdownVisible: !_this.state.dropdownVisible + var isOpen = !_this.state.dropdownVisible; + _this.setState({ + dropdownVisible: isOpen }); + _this.props.onDropdownToggle(isOpen, 'month'); }; _this.localeData = getLocaleDataForLocale(_this.props.locale); @@ -2262,7 +2267,8 @@ MonthDropdown.propTypes = { month: PropTypes.number.isRequired, onChange: PropTypes.func.isRequired, useShortMonthInDropdown: PropTypes.bool, - accessibleMode: PropTypes.bool + accessibleMode: PropTypes.bool, + onDropdownToggle: PropTypes.func }; function generateMonthYears(minDate, maxDate) { @@ -3615,6 +3621,21 @@ var Calendar = function (_React$Component) { var _this = possibleConstructorReturn(this, _React$Component.call(this, props)); + _this.handleOnDropdownToggle = function (isOpen, dropdown) { + _this.setState({ pauseFocusTrap: isOpen }); + if (!isOpen) { + var element = dropdown === 'month' ? document.querySelector('.react-datepicker__month-read-view') : document.querySelector('.react-datepicker__year-read-view'); + if (element) { + // The focus trap has been unpaused and will rerinitialize focus + // but does so on the wrong element (calendar) + // This refocuses the previous element (dropdown button) + setTimeout(function () { + return element.focus(); + }, 50); + } + } + }; + _this.handleClickOutside = function (event) { _this.props.onClickOutside(event); }; @@ -3693,14 +3714,6 @@ var Calendar = function (_React$Component) { if (_this.props.onMonthChange) { _this.props.onMonthChange(date); } - if (_this.props.adjustDateOnChange) { - if (_this.props.onSelect) { - _this.props.onSelect(date); - } - if (_this.props.setOpen) { - _this.props.setOpen(true); - } - } if (_this.props.accessibleMode) { _this.handleSelectionChange(date); } @@ -3882,7 +3895,8 @@ var Calendar = function (_React$Component) { year: getYear(_this.state.date), scrollableYearDropdown: _this.props.scrollableYearDropdown, yearDropdownItemNumber: _this.props.yearDropdownItemNumber, - accessibleMode: _this.props.accessibleMode + accessibleMode: _this.props.accessibleMode, + onDropdownToggle: _this.handleOnDropdownToggle }); }; @@ -3899,7 +3913,8 @@ var Calendar = function (_React$Component) { onChange: _this.changeMonth, month: getMonth(_this.state.date), useShortMonthInDropdown: _this.props.useShortMonthInDropdown, - accessibleMode: _this.props.accessibleMode + accessibleMode: _this.props.accessibleMode, + onDropdownToggle: _this.handleOnDropdownToggle }); }; @@ -4081,7 +4096,8 @@ var Calendar = function (_React$Component) { _this.state = { date: _this.localizeDate(_this.getDateInView()), selectingDate: null, - monthContainer: null + monthContainer: null, + pauseFocusTrap: false }; return _this; } @@ -4131,6 +4147,7 @@ var Calendar = function (_React$Component) { React__default.createElement( focusTrapReact, { + paused: this.state.pauseFocusTrap, active: this.props.enableFocusTrap, tag: FocusTrapContainer, focusTrapOptions: { @@ -4448,24 +4465,17 @@ var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) { return _cof(it) == 'String' ? it.split('') : Object(it); }; -var _iobject$1 = /*#__PURE__*/Object.freeze({ - default: _iobject, - __moduleExports: _iobject -}); - // 7.2.1 RequireObjectCoercible(argument) var _defined = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; -var IObject = ( _iobject$1 && _iobject ) || _iobject$1; - // to indexed object, toObject with fallback for non-array-like ES3 strings var _toIobject = function (it) { - return IObject(_defined(it)); + return _iobject(_defined(it)); }; // 7.1.4 ToInteger @@ -4482,11 +4492,6 @@ var _toLength = function (it) { return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; -var _toLength$1 = /*#__PURE__*/Object.freeze({ - default: _toLength, - __moduleExports: _toLength -}); - var max = Math.max; var min$1 = Math.min; var _toAbsoluteIndex = function (index, length) { @@ -4494,15 +4499,6 @@ var _toAbsoluteIndex = function (index, length) { return index < 0 ? max(index + length, 0) : min$1(index, length); }; -var _toAbsoluteIndex$1 = /*#__PURE__*/Object.freeze({ - default: _toAbsoluteIndex, - __moduleExports: _toAbsoluteIndex -}); - -var toLength = ( _toLength$1 && _toLength ) || _toLength$1; - -var toAbsoluteIndex = ( _toAbsoluteIndex$1 && _toAbsoluteIndex ) || _toAbsoluteIndex$1; - // false -> Array#indexOf // true -> Array#includes @@ -4511,8 +4507,8 @@ var toAbsoluteIndex = ( _toAbsoluteIndex$1 && _toAbsoluteIndex ) || _toAbsoluteI var _arrayIncludes = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = _toIobject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); + var length = _toLength(O.length); + var index = _toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare @@ -4561,24 +4557,17 @@ var _objectKeysInternal = function (object, names) { return result; }; -var _objectKeysInternal$1 = /*#__PURE__*/Object.freeze({ - default: _objectKeysInternal, - __moduleExports: _objectKeysInternal -}); - // IE 8- don't enum bug keys var _enumBugKeys = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); -var $keys = ( _objectKeysInternal$1 && _objectKeysInternal ) || _objectKeysInternal$1; - // 19.1.2.14 / 15.2.3.14 Object.keys(O) var _objectKeys = Object.keys || function keys(O) { - return $keys(O, _enumBugKeys); + return _objectKeysInternal(O, _enumBugKeys); }; var f$1 = Object.getOwnPropertySymbols; @@ -4624,7 +4613,7 @@ var _objectAssign = !$assign || _fails(function () { var getSymbols = _objectGops.f; var isEnum = _objectPie.f; while (aLen > index) { - var S = IObject(arguments[index++]); + var S = _iobject(arguments[index++]); var keys = getSymbols ? _objectKeys(S).concat(getSymbols(S)) : _objectKeys(S); var length = keys.length; var j = 0; @@ -4868,17 +4857,10 @@ var _iterDefine = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORC return methods; }; -var _iterDefine$1 = /*#__PURE__*/Object.freeze({ - default: _iterDefine, - __moduleExports: _iterDefine -}); - -var require$$0$1 = ( _iterDefine$1 && _iterDefine ) || _iterDefine$1; - var $at = _stringAt(true); // 21.1.3.27 String.prototype[@@iterator]() -require$$0$1(String, 'String', function (iterated) { +_iterDefine(String, 'String', function (iterated) { this._t = String(iterated); // target this._i = 0; // next index // 21.1.5.2.1 %StringIteratorPrototype%.next() @@ -4907,7 +4889,7 @@ var step = ( _iterStep$1 && _iterStep ) || _iterStep$1; // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() // 22.1.3.30 Array.prototype[@@iterator]() -var es6_array_iterator = require$$0$1(Array, 'Array', function (iterated, kind) { +var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { this._t = _toIobject(iterated); // target this._i = 0; // next index this._k = kind; // kind @@ -5048,7 +5030,7 @@ var _isArray = Array.isArray || function isArray(arg) { var hiddenKeys = _enumBugKeys.concat('length', 'prototype'); var f$4 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return $keys(O, hiddenKeys); + return _objectKeysInternal(O, hiddenKeys); }; var _objectGopn = { @@ -5338,14 +5320,7 @@ var symbol$1 = createCommonjsModule(function (module) { module.exports = { "default": symbol, __esModule: true }; }); -var symbol$2 = unwrapExports(symbol$1); - -var symbol$3 = /*#__PURE__*/Object.freeze({ - default: symbol$2, - __moduleExports: symbol$1 -}); - -var _symbol = ( symbol$3 && symbol$2 ) || symbol$3; +unwrapExports(symbol$1); var _typeof_1 = createCommonjsModule(function (module, exports) { @@ -5357,7 +5332,7 @@ var _iterator2 = _interopRequireDefault(iterator$1); -var _symbol2 = _interopRequireDefault(_symbol); +var _symbol2 = _interopRequireDefault(symbol$1); var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; @@ -5419,9 +5394,16 @@ var _setProto = { check: check }; +var _setProto$1 = /*#__PURE__*/Object.freeze({ + default: _setProto, + __moduleExports: _setProto +}); + +var require$$0$1 = ( _setProto$1 && _setProto ) || _setProto$1; + // 19.1.3.19 Object.setPrototypeOf(O, proto) -_export(_export.S, 'Object', { setPrototypeOf: _setProto.set }); +_export(_export.S, 'Object', { setPrototypeOf: require$$0$1.set }); var setPrototypeOf = _core.Object.setPrototypeOf; @@ -5436,12 +5418,7 @@ var setPrototypeOf$2 = createCommonjsModule(function (module) { module.exports = { "default": require$$0$2, __esModule: true }; }); -var setPrototypeOf$3 = unwrapExports(setPrototypeOf$2); - -var setPrototypeOf$4 = /*#__PURE__*/Object.freeze({ - default: setPrototypeOf$3, - __moduleExports: setPrototypeOf$2 -}); +unwrapExports(setPrototypeOf$2); // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) _export(_export.S, 'Object', { create: _objectCreate }); @@ -5451,20 +5428,18 @@ var create = function create(P, D) { return $Object.create(P, D); }; -var create$1 = createCommonjsModule(function (module) { -module.exports = { "default": create, __esModule: true }; +var create$1 = /*#__PURE__*/Object.freeze({ + default: create, + __moduleExports: create }); -var create$2 = unwrapExports(create$1); +var require$$0$3 = ( create$1 && create ) || create$1; -var create$3 = /*#__PURE__*/Object.freeze({ - default: create$2, - __moduleExports: create$1 +var create$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0$3, __esModule: true }; }); -var _setPrototypeOf = ( setPrototypeOf$4 && setPrototypeOf$3 ) || setPrototypeOf$4; - -var _create = ( create$3 && create$2 ) || create$3; +unwrapExports(create$2); var inherits$1 = createCommonjsModule(function (module, exports) { @@ -5472,11 +5447,11 @@ exports.__esModule = true; -var _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf); +var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$2); -var _create2 = _interopRequireDefault(_create); +var _create2 = _interopRequireDefault(create$2); @@ -8053,6 +8028,13 @@ emptyFunction.thatReturnsArgument = function (arg) { var emptyFunction_1 = emptyFunction; +var emptyFunction$1 = /*#__PURE__*/Object.freeze({ + default: emptyFunction_1, + __moduleExports: emptyFunction_1 +}); + +var emptyFunction$2 = ( emptyFunction$1 && emptyFunction_1 ) || emptyFunction$1; + /** * Similar to invariant but only logs a warning if the condition is not met. * This can be used to log issues in development environments in critical @@ -8060,7 +8042,7 @@ var emptyFunction_1 = emptyFunction; * same logic and follow the same code paths. */ -var warning = emptyFunction_1; +var warning = emptyFunction$2; if (process.env.NODE_ENV !== 'production') { var printWarning = function printWarning(format) { @@ -8104,6 +8086,13 @@ if (process.env.NODE_ENV !== 'production') { var warning_1 = warning; +var warning$1 = /*#__PURE__*/Object.freeze({ + default: warning_1, + __moduleExports: warning_1 +}); + +var _warning = ( warning$1 && warning_1 ) || warning$1; + var implementation = createCommonjsModule(function (module, exports) { exports.__esModule = true; @@ -8122,7 +8111,7 @@ var _gud2 = _interopRequireDefault(gud); -var _warning2 = _interopRequireDefault(warning_1); +var _warning2 = _interopRequireDefault(_warning); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -8302,7 +8291,14 @@ exports.default = createReactContext; module.exports = exports['default']; }); -unwrapExports(implementation); +var implementation$1 = unwrapExports(implementation); + +var implementation$2 = /*#__PURE__*/Object.freeze({ + default: implementation$1, + __moduleExports: implementation +}); + +var _implementation = ( implementation$2 && implementation$1 ) || implementation$2; var lib = createCommonjsModule(function (module, exports) { @@ -8314,7 +8310,7 @@ var _react2 = _interopRequireDefault(React__default); -var _implementation2 = _interopRequireDefault(implementation); +var _implementation2 = _interopRequireDefault(_implementation); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -8551,10 +8547,10 @@ function Popper$1(props) { var __DEV__ = process.env.NODE_ENV !== 'production'; -var warning$1 = function() {}; +var warning$2 = function() {}; if (__DEV__) { - warning$1 = function(condition, format, args) { + warning$2 = function(condition, format, args) { var len = arguments.length; args = new Array(len > 2 ? len - 2 : 0); for (var key = 2; key < len; key++) { @@ -8592,7 +8588,7 @@ if (__DEV__) { }; } -var warning_1$1 = warning$1; +var warning_1$1 = warning$2; var InnerReference = function (_React$Component) { _inherits$1(InnerReference, _React$Component); diff --git a/packages/react-datepicker/docs-site/bundle.js b/packages/react-datepicker/docs-site/bundle.js index 66aeeb5f70f..7f5f0887d49 100644 --- a/packages/react-datepicker/docs-site/bundle.js +++ b/packages/react-datepicker/docs-site/bundle.js @@ -26640,8 +26640,6 @@ var _popper_component2 = _interopRequireDefault(_popper_component); - var _screen_reader_only = __webpack_require__(530); - var _classnames2 = __webpack_require__(525); var _classnames3 = _interopRequireDefault(_classnames2); @@ -27663,6 +27661,21 @@ var _this = _possibleConstructorReturn(this, _React$Component.call(this, props)); + _this.handleOnDropdownToggle = function (isOpen, dropdown) { + _this.setState({ pauseFocusTrap: isOpen }); + if (!isOpen) { + var element = dropdown === 'month' ? document.querySelector('.react-datepicker__month-read-view') : document.querySelector('.react-datepicker__year-read-view'); + if (element) { + // The focus trap has been unpaused and will rerinitialize focus + // but does so on the wrong element (calendar) + // This refocuses the previous element (dropdown button) + setTimeout(function () { + return element.focus(); + }, 50); + } + } + }; + _this.handleClickOutside = function (event) { _this.props.onClickOutside(event); }; @@ -27741,14 +27754,6 @@ if (_this.props.onMonthChange) { _this.props.onMonthChange(date); } - if (_this.props.adjustDateOnChange) { - if (_this.props.onSelect) { - _this.props.onSelect(date); - } - if (_this.props.setOpen) { - _this.props.setOpen(true); - } - } if (_this.props.accessibleMode) { _this.handleSelectionChange(date); } @@ -27930,7 +27935,8 @@ year: (0, _date_utils.getYear)(_this.state.date), scrollableYearDropdown: _this.props.scrollableYearDropdown, yearDropdownItemNumber: _this.props.yearDropdownItemNumber, - accessibleMode: _this.props.accessibleMode + accessibleMode: _this.props.accessibleMode, + onDropdownToggle: _this.handleOnDropdownToggle }); }; @@ -27947,7 +27953,8 @@ onChange: _this.changeMonth, month: (0, _date_utils.getMonth)(_this.state.date), useShortMonthInDropdown: _this.props.useShortMonthInDropdown, - accessibleMode: _this.props.accessibleMode + accessibleMode: _this.props.accessibleMode, + onDropdownToggle: _this.handleOnDropdownToggle }); }; @@ -28129,7 +28136,8 @@ _this.state = { date: _this.localizeDate(_this.getDateInView()), selectingDate: null, - monthContainer: null + monthContainer: null, + pauseFocusTrap: false }; return _this; } @@ -28179,6 +28187,7 @@ _react2.default.createElement( _focusTrapReact2.default, { + paused: this.state.pauseFocusTrap, active: this.props.enableFocusTrap, tag: FocusTrapContainer, focusTrapOptions: { @@ -28435,9 +28444,11 @@ if (year === _this.props.year) return; _this.props.onChange(year); }, _this.toggleDropdown = function () { + var isOpen = !_this.state.dropdownVisible; _this.setState({ - dropdownVisible: !_this.state.dropdownVisible + dropdownVisible: isOpen }); + _this.props.onDropdownToggle(isOpen, 'year'); }, _this.onSelect = function (date, event) { if (_this.props.onSelect) { _this.props.onSelect(date, event); @@ -28489,7 +28500,8 @@ date: _propTypes2.default.object, onSelect: _propTypes2.default.func, setOpen: _propTypes2.default.func, - accessibleMode: _propTypes2.default.bool + accessibleMode: _propTypes2.default.bool, + onDropdownToggle: _propTypes2.default.func }; exports.default = YearDropdown; @@ -47259,9 +47271,11 @@ }; _this.toggleDropdown = function () { - return _this.setState({ - dropdownVisible: !_this.state.dropdownVisible + var isOpen = !_this.state.dropdownVisible; + _this.setState({ + dropdownVisible: isOpen }); + _this.props.onDropdownToggle(isOpen, 'month'); }; _this.localeData = utils.getLocaleDataForLocale(_this.props.locale); @@ -47328,7 +47342,8 @@ month: _propTypes2.default.number.isRequired, onChange: _propTypes2.default.func.isRequired, useShortMonthInDropdown: _propTypes2.default.bool, - accessibleMode: _propTypes2.default.bool + accessibleMode: _propTypes2.default.bool, + onDropdownToggle: _propTypes2.default.func }; exports.default = MonthDropdown; diff --git a/packages/react-datepicker/src/calendar.jsx b/packages/react-datepicker/src/calendar.jsx index 955eccc5257..e40d1306e43 100644 --- a/packages/react-datepicker/src/calendar.jsx +++ b/packages/react-datepicker/src/calendar.jsx @@ -152,7 +152,8 @@ export default class Calendar extends React.Component { this.state = { date: this.localizeDate(this.getDateInView()), selectingDate: null, - monthContainer: null + monthContainer: null, + pauseFocusTrap: false }; } @@ -186,6 +187,19 @@ export default class Calendar extends React.Component { } } + handleOnDropdownToggle = (isOpen, dropdown) => { + this.setState({pauseFocusTrap: isOpen}); + if (!isOpen) { + const element = dropdown === 'month' ? document.querySelector('.react-datepicker__month-read-view') : document.querySelector('.react-datepicker__year-read-view'); + if (element) { + // The focus trap has been unpaused and will rerinitialize focus + // but does so on the wrong element (calendar) + // This refocuses the previous element (dropdown button) + setTimeout(() => element.focus(), 50); + } + } + } + handleClickOutside = event => { this.props.onClickOutside(event); }; @@ -253,14 +267,6 @@ export default class Calendar extends React.Component { if (this.props.onMonthChange) { this.props.onMonthChange(date); } - if (this.props.adjustDateOnChange) { - if (this.props.onSelect) { - this.props.onSelect(date); - } - if (this.props.setOpen) { - this.props.setOpen(true); - } - } if (this.props.accessibleMode) { this.handleSelectionChange(date); } @@ -476,6 +482,7 @@ export default class Calendar extends React.Component { scrollableYearDropdown={this.props.scrollableYearDropdown} yearDropdownItemNumber={this.props.yearDropdownItemNumber} accessibleMode={this.props.accessibleMode} + onDropdownToggle={this.handleOnDropdownToggle} /> ); }; @@ -493,6 +500,7 @@ export default class Calendar extends React.Component { month={getMonth(this.state.date)} useShortMonthInDropdown={this.props.useShortMonthInDropdown} accessibleMode={this.props.accessibleMode} + onDropdownToggle={this.handleOnDropdownToggle} /> ); }; @@ -693,6 +701,7 @@ export default class Calendar extends React.Component { })} > + toggleDropdown = () => { + const isOpen = !this.state.dropdownVisible this.setState({ - dropdownVisible: !this.state.dropdownVisible + dropdownVisible: isOpen }); + this.props.onDropdownToggle(isOpen, 'month'); + } render() { let renderedDropdown; diff --git a/packages/react-datepicker/src/year_dropdown.jsx b/packages/react-datepicker/src/year_dropdown.jsx index df170100684..263c0f5058d 100644 --- a/packages/react-datepicker/src/year_dropdown.jsx +++ b/packages/react-datepicker/src/year_dropdown.jsx @@ -19,7 +19,8 @@ export default class YearDropdown extends React.Component { date: PropTypes.object, onSelect: PropTypes.func, setOpen: PropTypes.func, - accessibleMode: PropTypes.bool + accessibleMode: PropTypes.bool, + onDropdownToggle: PropTypes.func }; state = { @@ -144,9 +145,11 @@ export default class YearDropdown extends React.Component { }; toggleDropdown = () => { + const isOpen = !this.state.dropdownVisible; this.setState({ - dropdownVisible: !this.state.dropdownVisible + dropdownVisible: isOpen }); + this.props.onDropdownToggle(isOpen, 'year'); }; onSelect = (date, event) => { From e8c5d1d16449eb4ebeb8cabe99316c6b165f20d9 Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Mon, 23 Nov 2020 09:42:00 -0600 Subject: [PATCH 12/17] use refs --- packages/react-datepicker.js | 211 +++++++++++------- packages/react-datepicker/docs-site/bundle.js | 28 ++- packages/react-datepicker/src/calendar.jsx | 16 +- .../react-datepicker/src/month_dropdown.jsx | 4 +- .../react-datepicker/src/year_dropdown.jsx | 4 +- 5 files changed, 169 insertions(+), 94 deletions(-) diff --git a/packages/react-datepicker.js b/packages/react-datepicker.js index dd39a545fdb..0befb37afce 100644 --- a/packages/react-datepicker.js +++ b/packages/react-datepicker.js @@ -212,11 +212,6 @@ UntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) { var tabbable_1 = tabbable; -var tabbable$1 = /*#__PURE__*/Object.freeze({ - default: tabbable_1, - __moduleExports: tabbable_1 -}); - var immutable = extend; var hasOwnProperty = Object.prototype.hasOwnProperty; @@ -237,7 +232,12 @@ function extend() { return target } -var tabbable$2 = ( tabbable$1 && tabbable_1 ) || tabbable$1; +var immutable$1 = /*#__PURE__*/Object.freeze({ + default: immutable, + __moduleExports: immutable +}); + +var xtend = ( immutable$1 && immutable ) || immutable$1; var listeningFocusTrap = null; @@ -246,7 +246,7 @@ function focusTrap(element, userOptions) { var container = typeof element === 'string' ? doc.querySelector(element) : element; - var config = immutable( + var config = xtend( { returnFocusOnDeactivate: true, escapeDeactivates: true @@ -418,7 +418,7 @@ function focusTrap(element, userOptions) { if (container.contains(e.target)) return; if (config.clickOutsideDeactivates) { deactivate({ - returnFocus: !tabbable$2.isFocusable(e.target) + returnFocus: !tabbable_1.isFocusable(e.target) }); } else { e.preventDefault(); @@ -473,7 +473,7 @@ function focusTrap(element, userOptions) { } function updateTabbableNodes() { - var tabbableNodes = tabbable$2(container); + var tabbableNodes = tabbable_1(container); state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode(); state.lastTabbableNode = tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode(); @@ -1783,6 +1783,7 @@ var YearDropdown = function (_React$Component) { dropdownVisible: false }, _this.setReadViewRef = function (ref) { _this.readViewref = ref; + _this.props.buttonRef(ref); }, _this.onReadViewKeyDown = function (event) { var eventKey = event.key; switch (eventKey) { @@ -1933,7 +1934,8 @@ YearDropdown.propTypes = { onSelect: PropTypes.func, setOpen: PropTypes.func, accessibleMode: PropTypes.bool, - onDropdownToggle: PropTypes.func + onDropdownToggle: PropTypes.func, + buttonRef: PropTypes.func }; var MonthDropdownOptions = function (_React$Component) { @@ -2094,6 +2096,7 @@ var MonthDropdown = function (_React$Component) { _this.setReadViewRef = function (ref) { _this.readViewref = ref; + _this.props.buttonRef(ref); }; _this.onReadViewKeyDown = function (event) { @@ -2268,7 +2271,8 @@ MonthDropdown.propTypes = { onChange: PropTypes.func.isRequired, useShortMonthInDropdown: PropTypes.bool, accessibleMode: PropTypes.bool, - onDropdownToggle: PropTypes.func + onDropdownToggle: PropTypes.func, + buttonRef: PropTypes.func }; function generateMonthYears(minDate, maxDate) { @@ -3621,17 +3625,25 @@ var Calendar = function (_React$Component) { var _this = possibleConstructorReturn(this, _React$Component.call(this, props)); + _this.setMonthRef = function (node) { + _this.monthRef = node; + }; + + _this.setYearRef = function (node) { + _this.yearRef = node; + }; + _this.handleOnDropdownToggle = function (isOpen, dropdown) { _this.setState({ pauseFocusTrap: isOpen }); if (!isOpen) { - var element = dropdown === 'month' ? document.querySelector('.react-datepicker__month-read-view') : document.querySelector('.react-datepicker__year-read-view'); + var element = dropdown === 'month' ? _this.monthRef : _this.yearRef; if (element) { // The focus trap has been unpaused and will rerinitialize focus // but does so on the wrong element (calendar) // This refocuses the previous element (dropdown button) setTimeout(function () { return element.focus(); - }, 50); + }, 25); } } }; @@ -3896,7 +3908,8 @@ var Calendar = function (_React$Component) { scrollableYearDropdown: _this.props.scrollableYearDropdown, yearDropdownItemNumber: _this.props.yearDropdownItemNumber, accessibleMode: _this.props.accessibleMode, - onDropdownToggle: _this.handleOnDropdownToggle + onDropdownToggle: _this.handleOnDropdownToggle, + buttonRef: _this.setYearRef }); }; @@ -3914,7 +3927,8 @@ var Calendar = function (_React$Component) { month: getMonth(_this.state.date), useShortMonthInDropdown: _this.props.useShortMonthInDropdown, accessibleMode: _this.props.accessibleMode, - onDropdownToggle: _this.handleOnDropdownToggle + onDropdownToggle: _this.handleOnDropdownToggle, + buttonRef: _this.setMonthRef }); }; @@ -4099,6 +4113,8 @@ var Calendar = function (_React$Component) { monthContainer: null, pauseFocusTrap: false }; + _this.monthRef = React__default.createRef(); + _this.yearRef = React__default.createRef(); return _this; } @@ -4465,17 +4481,24 @@ var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) { return _cof(it) == 'String' ? it.split('') : Object(it); }; +var _iobject$1 = /*#__PURE__*/Object.freeze({ + default: _iobject, + __moduleExports: _iobject +}); + // 7.2.1 RequireObjectCoercible(argument) var _defined = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; +var IObject = ( _iobject$1 && _iobject ) || _iobject$1; + // to indexed object, toObject with fallback for non-array-like ES3 strings var _toIobject = function (it) { - return _iobject(_defined(it)); + return IObject(_defined(it)); }; // 7.1.4 ToInteger @@ -4485,17 +4508,24 @@ var _toInteger = function (it) { return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; +var _toInteger$1 = /*#__PURE__*/Object.freeze({ + default: _toInteger, + __moduleExports: _toInteger +}); + +var toInteger = ( _toInteger$1 && _toInteger ) || _toInteger$1; + // 7.1.15 ToLength var min = Math.min; var _toLength = function (it) { - return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; var max = Math.max; var min$1 = Math.min; var _toAbsoluteIndex = function (index, length) { - index = _toInteger(index); + index = toInteger(index); return index < 0 ? max(index + length, 0) : min$1(index, length); }; @@ -4613,7 +4643,7 @@ var _objectAssign = !$assign || _fails(function () { var getSymbols = _objectGops.f; var isEnum = _objectPie.f; while (aLen > index) { - var S = _iobject(arguments[index++]); + var S = IObject(arguments[index++]); var keys = getSymbols ? _objectKeys(S).concat(getSymbols(S)) : _objectKeys(S); var length = keys.length; var j = 0; @@ -4622,25 +4652,25 @@ var _objectAssign = !$assign || _fails(function () { } return T; } : $assign; -// 19.1.3.1 Object.assign(target, source) +var _objectAssign$1 = /*#__PURE__*/Object.freeze({ + default: _objectAssign, + __moduleExports: _objectAssign +}); +var require$$0 = ( _objectAssign$1 && _objectAssign ) || _objectAssign$1; -_export(_export.S + _export.F, 'Object', { assign: _objectAssign }); +// 19.1.3.1 Object.assign(target, source) -var assign = _core.Object.assign; -var assign$1 = /*#__PURE__*/Object.freeze({ - default: assign, - __moduleExports: assign -}); +_export(_export.S + _export.F, 'Object', { assign: require$$0 }); -var require$$0 = ( assign$1 && assign ) || assign$1; +var assign = _core.Object.assign; -var assign$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0, __esModule: true }; +var assign$1 = createCommonjsModule(function (module) { +module.exports = { "default": assign, __esModule: true }; }); -unwrapExports(assign$2); +unwrapExports(assign$1); var _extends$1 = createCommonjsModule(function (module, exports) { @@ -4648,7 +4678,7 @@ exports.__esModule = true; -var _assign2 = _interopRequireDefault(assign$2); +var _assign2 = _interopRequireDefault(assign$1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -4687,7 +4717,7 @@ var _classCallCheck$1 = unwrapExports(classCallCheck$1); var _stringAt = function (TO_STRING) { return function (that, pos) { var s = String(_defined(that)); - var i = _toInteger(pos); + var i = toInteger(pos); var l = s.length; var a, b; if (i < 0 || i >= l) return TO_STRING ? '' : undefined; @@ -4698,6 +4728,11 @@ var _stringAt = function (TO_STRING) { }; }; +var _stringAt$1 = /*#__PURE__*/Object.freeze({ + default: _stringAt, + __moduleExports: _stringAt +}); + var _library = true; var _redefine = _hide; @@ -4857,7 +4892,9 @@ var _iterDefine = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORC return methods; }; -var $at = _stringAt(true); +var require$$0$1 = ( _stringAt$1 && _stringAt ) || _stringAt$1; + +var $at = require$$0$1(true); // 21.1.3.27 String.prototype[@@iterator]() _iterDefine(String, 'String', function (iterated) { @@ -4874,16 +4911,18 @@ _iterDefine(String, 'String', function (iterated) { return { value: point, done: false }; }); +var _addToUnscopables = function () { /* empty */ }; + +var _addToUnscopables$1 = /*#__PURE__*/Object.freeze({ + default: _addToUnscopables, + __moduleExports: _addToUnscopables +}); + var _iterStep = function (done, value) { return { value: value, done: !!done }; }; -var _iterStep$1 = /*#__PURE__*/Object.freeze({ - default: _iterStep, - __moduleExports: _iterStep -}); - -var step = ( _iterStep$1 && _iterStep ) || _iterStep$1; +var addToUnscopables = ( _addToUnscopables$1 && _addToUnscopables ) || _addToUnscopables$1; // 22.1.3.4 Array.prototype.entries() // 22.1.3.13 Array.prototype.keys() @@ -4900,13 +4939,17 @@ var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { var index = this._i++; if (!O || index >= O.length) { this._t = undefined; - return step(1); + return _iterStep(1); } - if (kind == 'keys') return step(0, index); - if (kind == 'values') return step(0, O[index]); - return step(0, [index, O[index]]); + if (kind == 'keys') return _iterStep(0, index); + if (kind == 'values') return _iterStep(0, O[index]); + return _iterStep(0, [index, O[index]]); }, 'values'); +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + var TO_STRING_TAG = _wks('toStringTag'); var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + @@ -4934,7 +4977,12 @@ var iterator$1 = createCommonjsModule(function (module) { module.exports = { "default": iterator, __esModule: true }; }); -unwrapExports(iterator$1); +var iterator$2 = unwrapExports(iterator$1); + +var iterator$3 = /*#__PURE__*/Object.freeze({ + default: iterator$2, + __moduleExports: iterator$1 +}); var _meta = createCommonjsModule(function (module) { var META = _uid('meta'); @@ -5316,11 +5364,20 @@ _wksDefine('observable'); var symbol = _core.Symbol; -var symbol$1 = createCommonjsModule(function (module) { -module.exports = { "default": symbol, __esModule: true }; +var symbol$1 = /*#__PURE__*/Object.freeze({ + default: symbol, + __moduleExports: symbol }); -unwrapExports(symbol$1); +var require$$0$2 = ( symbol$1 && symbol ) || symbol$1; + +var symbol$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0$2, __esModule: true }; +}); + +unwrapExports(symbol$2); + +var _iterator = ( iterator$3 && iterator$2 ) || iterator$3; var _typeof_1 = createCommonjsModule(function (module, exports) { @@ -5328,11 +5385,11 @@ exports.__esModule = true; -var _iterator2 = _interopRequireDefault(iterator$1); +var _iterator2 = _interopRequireDefault(_iterator); -var _symbol2 = _interopRequireDefault(symbol$1); +var _symbol2 = _interopRequireDefault(symbol$2); var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; @@ -5345,7 +5402,14 @@ exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.d }; }); -unwrapExports(_typeof_1); +var _typeof$1 = unwrapExports(_typeof_1); + +var _typeof$2 = /*#__PURE__*/Object.freeze({ + default: _typeof$1, + __moduleExports: _typeof_1 +}); + +var _typeof2 = ( _typeof$2 && _typeof$1 ) || _typeof$2; var possibleConstructorReturn$1 = createCommonjsModule(function (module, exports) { @@ -5353,7 +5417,7 @@ exports.__esModule = true; -var _typeof3 = _interopRequireDefault(_typeof_1); +var _typeof3 = _interopRequireDefault(_typeof2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -5399,26 +5463,19 @@ var _setProto$1 = /*#__PURE__*/Object.freeze({ __moduleExports: _setProto }); -var require$$0$1 = ( _setProto$1 && _setProto ) || _setProto$1; +var require$$0$3 = ( _setProto$1 && _setProto ) || _setProto$1; // 19.1.3.19 Object.setPrototypeOf(O, proto) -_export(_export.S, 'Object', { setPrototypeOf: require$$0$1.set }); +_export(_export.S, 'Object', { setPrototypeOf: require$$0$3.set }); var setPrototypeOf = _core.Object.setPrototypeOf; -var setPrototypeOf$1 = /*#__PURE__*/Object.freeze({ - default: setPrototypeOf, - __moduleExports: setPrototypeOf -}); - -var require$$0$2 = ( setPrototypeOf$1 && setPrototypeOf ) || setPrototypeOf$1; - -var setPrototypeOf$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$2, __esModule: true }; +var setPrototypeOf$1 = createCommonjsModule(function (module) { +module.exports = { "default": setPrototypeOf, __esModule: true }; }); -unwrapExports(setPrototypeOf$2); +unwrapExports(setPrototypeOf$1); // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) _export(_export.S, 'Object', { create: _objectCreate }); @@ -5428,18 +5485,11 @@ var create = function create(P, D) { return $Object.create(P, D); }; -var create$1 = /*#__PURE__*/Object.freeze({ - default: create, - __moduleExports: create +var create$1 = createCommonjsModule(function (module) { +module.exports = { "default": create, __esModule: true }; }); -var require$$0$3 = ( create$1 && create ) || create$1; - -var create$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$3, __esModule: true }; -}); - -unwrapExports(create$2); +unwrapExports(create$1); var inherits$1 = createCommonjsModule(function (module, exports) { @@ -5447,15 +5497,15 @@ exports.__esModule = true; -var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$2); +var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$1); -var _create2 = _interopRequireDefault(create$2); +var _create2 = _interopRequireDefault(create$1); -var _typeof3 = _interopRequireDefault(_typeof_1); +var _typeof3 = _interopRequireDefault(_typeof2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -8028,13 +8078,6 @@ emptyFunction.thatReturnsArgument = function (arg) { var emptyFunction_1 = emptyFunction; -var emptyFunction$1 = /*#__PURE__*/Object.freeze({ - default: emptyFunction_1, - __moduleExports: emptyFunction_1 -}); - -var emptyFunction$2 = ( emptyFunction$1 && emptyFunction_1 ) || emptyFunction$1; - /** * Similar to invariant but only logs a warning if the condition is not met. * This can be used to log issues in development environments in critical @@ -8042,7 +8085,7 @@ var emptyFunction$2 = ( emptyFunction$1 && emptyFunction_1 ) || emptyFunction$1; * same logic and follow the same code paths. */ -var warning = emptyFunction$2; +var warning = emptyFunction_1; if (process.env.NODE_ENV !== 'production') { var printWarning = function printWarning(format) { diff --git a/packages/react-datepicker/docs-site/bundle.js b/packages/react-datepicker/docs-site/bundle.js index 7f5f0887d49..5a33503979c 100644 --- a/packages/react-datepicker/docs-site/bundle.js +++ b/packages/react-datepicker/docs-site/bundle.js @@ -27661,17 +27661,25 @@ var _this = _possibleConstructorReturn(this, _React$Component.call(this, props)); + _this.setMonthRef = function (node) { + _this.monthRef = node; + }; + + _this.setYearRef = function (node) { + _this.yearRef = node; + }; + _this.handleOnDropdownToggle = function (isOpen, dropdown) { _this.setState({ pauseFocusTrap: isOpen }); if (!isOpen) { - var element = dropdown === 'month' ? document.querySelector('.react-datepicker__month-read-view') : document.querySelector('.react-datepicker__year-read-view'); + var element = dropdown === 'month' ? _this.monthRef : _this.yearRef; if (element) { // The focus trap has been unpaused and will rerinitialize focus // but does so on the wrong element (calendar) // This refocuses the previous element (dropdown button) setTimeout(function () { return element.focus(); - }, 50); + }, 25); } } }; @@ -27936,7 +27944,8 @@ scrollableYearDropdown: _this.props.scrollableYearDropdown, yearDropdownItemNumber: _this.props.yearDropdownItemNumber, accessibleMode: _this.props.accessibleMode, - onDropdownToggle: _this.handleOnDropdownToggle + onDropdownToggle: _this.handleOnDropdownToggle, + buttonRef: _this.setYearRef }); }; @@ -27954,7 +27963,8 @@ month: (0, _date_utils.getMonth)(_this.state.date), useShortMonthInDropdown: _this.props.useShortMonthInDropdown, accessibleMode: _this.props.accessibleMode, - onDropdownToggle: _this.handleOnDropdownToggle + onDropdownToggle: _this.handleOnDropdownToggle, + buttonRef: _this.setMonthRef }); }; @@ -28139,6 +28149,8 @@ monthContainer: null, pauseFocusTrap: false }; + _this.monthRef = _react2.default.createRef(); + _this.yearRef = _react2.default.createRef(); return _this; } @@ -28351,6 +28363,7 @@ dropdownVisible: false }, _this.setReadViewRef = function (ref) { _this.readViewref = ref; + _this.props.buttonRef(ref); }, _this.onReadViewKeyDown = function (event) { var eventKey = event.key; switch (eventKey) { @@ -28501,7 +28514,8 @@ onSelect: _propTypes2.default.func, setOpen: _propTypes2.default.func, accessibleMode: _propTypes2.default.bool, - onDropdownToggle: _propTypes2.default.func + onDropdownToggle: _propTypes2.default.func, + buttonRef: _propTypes2.default.func }; exports.default = YearDropdown; @@ -47169,6 +47183,7 @@ _this.setReadViewRef = function (ref) { _this.readViewref = ref; + _this.props.buttonRef(ref); }; _this.onReadViewKeyDown = function (event) { @@ -47343,7 +47358,8 @@ onChange: _propTypes2.default.func.isRequired, useShortMonthInDropdown: _propTypes2.default.bool, accessibleMode: _propTypes2.default.bool, - onDropdownToggle: _propTypes2.default.func + onDropdownToggle: _propTypes2.default.func, + buttonRef: _propTypes2.default.func }; exports.default = MonthDropdown; diff --git a/packages/react-datepicker/src/calendar.jsx b/packages/react-datepicker/src/calendar.jsx index e40d1306e43..e8c19b1dd2a 100644 --- a/packages/react-datepicker/src/calendar.jsx +++ b/packages/react-datepicker/src/calendar.jsx @@ -155,6 +155,8 @@ export default class Calendar extends React.Component { monthContainer: null, pauseFocusTrap: false }; + this.monthRef = React.createRef(); + this.yearRef = React.createRef(); } componentDidMount() { @@ -187,15 +189,23 @@ export default class Calendar extends React.Component { } } + setMonthRef = (node) => { + this.monthRef = node; + } + + setYearRef = (node) => { + this.yearRef = node; + } + handleOnDropdownToggle = (isOpen, dropdown) => { this.setState({pauseFocusTrap: isOpen}); if (!isOpen) { - const element = dropdown === 'month' ? document.querySelector('.react-datepicker__month-read-view') : document.querySelector('.react-datepicker__year-read-view'); + const element = dropdown === 'month' ? this.monthRef : this.yearRef; if (element) { // The focus trap has been unpaused and will rerinitialize focus // but does so on the wrong element (calendar) // This refocuses the previous element (dropdown button) - setTimeout(() => element.focus(), 50); + setTimeout(() => element.focus(), 25); } } } @@ -483,6 +493,7 @@ export default class Calendar extends React.Component { yearDropdownItemNumber={this.props.yearDropdownItemNumber} accessibleMode={this.props.accessibleMode} onDropdownToggle={this.handleOnDropdownToggle} + buttonRef={this.setYearRef} /> ); }; @@ -501,6 +512,7 @@ export default class Calendar extends React.Component { useShortMonthInDropdown={this.props.useShortMonthInDropdown} accessibleMode={this.props.accessibleMode} onDropdownToggle={this.handleOnDropdownToggle} + buttonRef={this.setMonthRef} /> ); }; diff --git a/packages/react-datepicker/src/month_dropdown.jsx b/packages/react-datepicker/src/month_dropdown.jsx index 6bac6d818ef..a956ddbbea9 100644 --- a/packages/react-datepicker/src/month_dropdown.jsx +++ b/packages/react-datepicker/src/month_dropdown.jsx @@ -15,7 +15,8 @@ export default class MonthDropdown extends React.Component { onChange: PropTypes.func.isRequired, useShortMonthInDropdown: PropTypes.bool, accessibleMode: PropTypes.bool, - onDropdownToggle: PropTypes.func + onDropdownToggle: PropTypes.func, + buttonRef: PropTypes.func }; constructor(props) { @@ -66,6 +67,7 @@ export default class MonthDropdown extends React.Component { setReadViewRef = ref => { this.readViewref = ref; + this.props.buttonRef(ref); }; onReadViewKeyDown = event => { diff --git a/packages/react-datepicker/src/year_dropdown.jsx b/packages/react-datepicker/src/year_dropdown.jsx index 263c0f5058d..cac62952912 100644 --- a/packages/react-datepicker/src/year_dropdown.jsx +++ b/packages/react-datepicker/src/year_dropdown.jsx @@ -20,7 +20,8 @@ export default class YearDropdown extends React.Component { onSelect: PropTypes.func, setOpen: PropTypes.func, accessibleMode: PropTypes.bool, - onDropdownToggle: PropTypes.func + onDropdownToggle: PropTypes.func, + buttonRef: PropTypes.func }; state = { @@ -39,6 +40,7 @@ export default class YearDropdown extends React.Component { setReadViewRef = ref => { this.readViewref = ref; + this.props.buttonRef(ref); }; onReadViewKeyDown = event => { From b0b173828cf2978235cedd24e76c8ddb4fc2e2c0 Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Mon, 23 Nov 2020 13:16:14 -0600 Subject: [PATCH 13/17] clean up --- packages/react-datepicker.js | 174 +++++++----------- packages/react-datepicker/docs-site/bundle.js | 7 +- packages/react-datepicker/src/calendar.jsx | 15 +- 3 files changed, 76 insertions(+), 120 deletions(-) diff --git a/packages/react-datepicker.js b/packages/react-datepicker.js index 0befb37afce..42a57ea99e2 100644 --- a/packages/react-datepicker.js +++ b/packages/react-datepicker.js @@ -516,6 +516,13 @@ function delay(fn) { var focusTrap_1 = focusTrap; +var focusTrap$1 = /*#__PURE__*/Object.freeze({ + default: focusTrap_1, + __moduleExports: focusTrap_1 +}); + +var createFocusTrap = ( focusTrap$1 && focusTrap_1 ) || focusTrap$1; + var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -626,7 +633,7 @@ FocusTrap.defaultProps = { tag: 'div', paused: false, focusTrapOptions: {}, - _createFocusTrap: focusTrap_1 + _createFocusTrap: createFocusTrap }; var focusTrapReact = FocusTrap; @@ -3615,6 +3622,8 @@ var Calendar = function (_React$Component) { monthsShown: 1, forceShowMonthNavigation: false, timeCaption: "Time", + previousMonthButtonLabel: "Previous Month", + nextMonthButtonLabel: "Next Month", enableFocusTrap: true }; } @@ -3638,9 +3647,10 @@ var Calendar = function (_React$Component) { if (!isOpen) { var element = dropdown === 'month' ? _this.monthRef : _this.yearRef; if (element) { - // The focus trap has been unpaused and will rerinitialize focus + // The focus trap has been unpaused and will reinitialize focus // but does so on the wrong element (calendar) - // This refocuses the previous element (dropdown button) + // This refocuses the previous element (dropdown button). + // Duration arrived at by trial-and-error. setTimeout(function () { return element.focus(); }, 25); @@ -4304,10 +4314,17 @@ var _aFunction = function (it) { return it; }; +var _aFunction$1 = /*#__PURE__*/Object.freeze({ + default: _aFunction, + __moduleExports: _aFunction +}); + +var aFunction = ( _aFunction$1 && _aFunction ) || _aFunction$1; + // optional / simple context binding var _ctx = function (fn, that, length) { - _aFunction(fn); + aFunction(fn); if (that === undefined) return fn; switch (length) { case 1: return function (a) { @@ -4481,24 +4498,17 @@ var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) { return _cof(it) == 'String' ? it.split('') : Object(it); }; -var _iobject$1 = /*#__PURE__*/Object.freeze({ - default: _iobject, - __moduleExports: _iobject -}); - // 7.2.1 RequireObjectCoercible(argument) var _defined = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; -var IObject = ( _iobject$1 && _iobject ) || _iobject$1; - // to indexed object, toObject with fallback for non-array-like ES3 strings var _toIobject = function (it) { - return IObject(_defined(it)); + return _iobject(_defined(it)); }; // 7.1.4 ToInteger @@ -4508,27 +4518,27 @@ var _toInteger = function (it) { return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; -var _toInteger$1 = /*#__PURE__*/Object.freeze({ - default: _toInteger, - __moduleExports: _toInteger -}); - -var toInteger = ( _toInteger$1 && _toInteger ) || _toInteger$1; - // 7.1.15 ToLength var min = Math.min; var _toLength = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 + return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; +var _toLength$1 = /*#__PURE__*/Object.freeze({ + default: _toLength, + __moduleExports: _toLength +}); + var max = Math.max; var min$1 = Math.min; var _toAbsoluteIndex = function (index, length) { - index = toInteger(index); + index = _toInteger(index); return index < 0 ? max(index + length, 0) : min$1(index, length); }; +var toLength = ( _toLength$1 && _toLength ) || _toLength$1; + // false -> Array#indexOf // true -> Array#includes @@ -4537,7 +4547,7 @@ var _toAbsoluteIndex = function (index, length) { var _arrayIncludes = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = _toIobject($this); - var length = _toLength(O.length); + var length = toLength(O.length); var index = _toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm @@ -4643,7 +4653,7 @@ var _objectAssign = !$assign || _fails(function () { var getSymbols = _objectGops.f; var isEnum = _objectPie.f; while (aLen > index) { - var S = IObject(arguments[index++]); + var S = _iobject(arguments[index++]); var keys = getSymbols ? _objectKeys(S).concat(getSymbols(S)) : _objectKeys(S); var length = keys.length; var j = 0; @@ -4670,7 +4680,14 @@ var assign$1 = createCommonjsModule(function (module) { module.exports = { "default": assign, __esModule: true }; }); -unwrapExports(assign$1); +var assign$2 = unwrapExports(assign$1); + +var assign$3 = /*#__PURE__*/Object.freeze({ + default: assign$2, + __moduleExports: assign$1 +}); + +var _assign = ( assign$3 && assign$2 ) || assign$3; var _extends$1 = createCommonjsModule(function (module, exports) { @@ -4678,7 +4695,7 @@ exports.__esModule = true; -var _assign2 = _interopRequireDefault(assign$1); +var _assign2 = _interopRequireDefault(_assign); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -4717,7 +4734,7 @@ var _classCallCheck$1 = unwrapExports(classCallCheck$1); var _stringAt = function (TO_STRING) { return function (that, pos) { var s = String(_defined(that)); - var i = toInteger(pos); + var i = _toInteger(pos); var l = s.length; var a, b; if (i < 0 || i >= l) return TO_STRING ? '' : undefined; @@ -4728,11 +4745,6 @@ var _stringAt = function (TO_STRING) { }; }; -var _stringAt$1 = /*#__PURE__*/Object.freeze({ - default: _stringAt, - __moduleExports: _stringAt -}); - var _library = true; var _redefine = _hide; @@ -4750,6 +4762,13 @@ var _objectDps = _descriptors ? Object.defineProperties : function definePropert var document$2 = _global.document; var _html = document$2 && document$2.documentElement; +var _html$1 = /*#__PURE__*/Object.freeze({ + default: _html, + __moduleExports: _html +}); + +var require$$2 = ( _html$1 && _html ) || _html$1; + // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) @@ -4767,7 +4786,7 @@ var createDict = function () { var gt = '>'; var iframeDocument; iframe.style.display = 'none'; - _html.appendChild(iframe); + require$$2.appendChild(iframe); iframe.src = 'javascript:'; // eslint-disable-line no-script-url // createDict = iframe.contentWindow.Object; // html.removeChild(iframe); @@ -4892,9 +4911,7 @@ var _iterDefine = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORC return methods; }; -var require$$0$1 = ( _stringAt$1 && _stringAt ) || _stringAt$1; - -var $at = require$$0$1(true); +var $at = _stringAt(true); // 21.1.3.27 String.prototype[@@iterator]() _iterDefine(String, 'String', function (iterated) { @@ -4911,19 +4928,10 @@ _iterDefine(String, 'String', function (iterated) { return { value: point, done: false }; }); -var _addToUnscopables = function () { /* empty */ }; - -var _addToUnscopables$1 = /*#__PURE__*/Object.freeze({ - default: _addToUnscopables, - __moduleExports: _addToUnscopables -}); - var _iterStep = function (done, value) { return { value: value, done: !!done }; }; -var addToUnscopables = ( _addToUnscopables$1 && _addToUnscopables ) || _addToUnscopables$1; - // 22.1.3.4 Array.prototype.entries() // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() @@ -4946,10 +4954,6 @@ var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { return _iterStep(0, [index, O[index]]); }, 'values'); -addToUnscopables('keys'); -addToUnscopables('values'); -addToUnscopables('entries'); - var TO_STRING_TAG = _wks('toStringTag'); var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + @@ -4977,12 +4981,7 @@ var iterator$1 = createCommonjsModule(function (module) { module.exports = { "default": iterator, __esModule: true }; }); -var iterator$2 = unwrapExports(iterator$1); - -var iterator$3 = /*#__PURE__*/Object.freeze({ - default: iterator$2, - __moduleExports: iterator$1 -}); +unwrapExports(iterator$1); var _meta = createCommonjsModule(function (module) { var META = _uid('meta'); @@ -5364,20 +5363,11 @@ _wksDefine('observable'); var symbol = _core.Symbol; -var symbol$1 = /*#__PURE__*/Object.freeze({ - default: symbol, - __moduleExports: symbol -}); - -var require$$0$2 = ( symbol$1 && symbol ) || symbol$1; - -var symbol$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$2, __esModule: true }; +var symbol$1 = createCommonjsModule(function (module) { +module.exports = { "default": symbol, __esModule: true }; }); -unwrapExports(symbol$2); - -var _iterator = ( iterator$3 && iterator$2 ) || iterator$3; +unwrapExports(symbol$1); var _typeof_1 = createCommonjsModule(function (module, exports) { @@ -5385,11 +5375,11 @@ exports.__esModule = true; -var _iterator2 = _interopRequireDefault(_iterator); +var _iterator2 = _interopRequireDefault(iterator$1); -var _symbol2 = _interopRequireDefault(symbol$2); +var _symbol2 = _interopRequireDefault(symbol$1); var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; @@ -5402,14 +5392,7 @@ exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.d }; }); -var _typeof$1 = unwrapExports(_typeof_1); - -var _typeof$2 = /*#__PURE__*/Object.freeze({ - default: _typeof$1, - __moduleExports: _typeof_1 -}); - -var _typeof2 = ( _typeof$2 && _typeof$1 ) || _typeof$2; +unwrapExports(_typeof_1); var possibleConstructorReturn$1 = createCommonjsModule(function (module, exports) { @@ -5417,7 +5400,7 @@ exports.__esModule = true; -var _typeof3 = _interopRequireDefault(_typeof2); +var _typeof3 = _interopRequireDefault(_typeof_1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -5458,16 +5441,9 @@ var _setProto = { check: check }; -var _setProto$1 = /*#__PURE__*/Object.freeze({ - default: _setProto, - __moduleExports: _setProto -}); - -var require$$0$3 = ( _setProto$1 && _setProto ) || _setProto$1; - // 19.1.3.19 Object.setPrototypeOf(O, proto) -_export(_export.S, 'Object', { setPrototypeOf: require$$0$3.set }); +_export(_export.S, 'Object', { setPrototypeOf: _setProto.set }); var setPrototypeOf = _core.Object.setPrototypeOf; @@ -5505,7 +5481,7 @@ var _create2 = _interopRequireDefault(create$1); -var _typeof3 = _interopRequireDefault(_typeof2); +var _typeof3 = _interopRequireDefault(_typeof_1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -8129,13 +8105,6 @@ if (process.env.NODE_ENV !== 'production') { var warning_1 = warning; -var warning$1 = /*#__PURE__*/Object.freeze({ - default: warning_1, - __moduleExports: warning_1 -}); - -var _warning = ( warning$1 && warning_1 ) || warning$1; - var implementation = createCommonjsModule(function (module, exports) { exports.__esModule = true; @@ -8154,7 +8123,7 @@ var _gud2 = _interopRequireDefault(gud); -var _warning2 = _interopRequireDefault(_warning); +var _warning2 = _interopRequireDefault(warning_1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -8334,14 +8303,7 @@ exports.default = createReactContext; module.exports = exports['default']; }); -var implementation$1 = unwrapExports(implementation); - -var implementation$2 = /*#__PURE__*/Object.freeze({ - default: implementation$1, - __moduleExports: implementation -}); - -var _implementation = ( implementation$2 && implementation$1 ) || implementation$2; +unwrapExports(implementation); var lib = createCommonjsModule(function (module, exports) { @@ -8353,7 +8315,7 @@ var _react2 = _interopRequireDefault(React__default); -var _implementation2 = _interopRequireDefault(_implementation); +var _implementation2 = _interopRequireDefault(implementation); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -8590,10 +8552,10 @@ function Popper$1(props) { var __DEV__ = process.env.NODE_ENV !== 'production'; -var warning$2 = function() {}; +var warning$1 = function() {}; if (__DEV__) { - warning$2 = function(condition, format, args) { + warning$1 = function(condition, format, args) { var len = arguments.length; args = new Array(len > 2 ? len - 2 : 0); for (var key = 2; key < len; key++) { @@ -8631,7 +8593,7 @@ if (__DEV__) { }; } -var warning_1$1 = warning$2; +var warning_1$1 = warning$1; var InnerReference = function (_React$Component) { _inherits$1(InnerReference, _React$Component); diff --git a/packages/react-datepicker/docs-site/bundle.js b/packages/react-datepicker/docs-site/bundle.js index 5a33503979c..2bbd162138c 100644 --- a/packages/react-datepicker/docs-site/bundle.js +++ b/packages/react-datepicker/docs-site/bundle.js @@ -27651,6 +27651,8 @@ monthsShown: 1, forceShowMonthNavigation: false, timeCaption: "Time", + previousMonthButtonLabel: "Previous Month", + nextMonthButtonLabel: "Next Month", enableFocusTrap: true }; } @@ -27674,9 +27676,10 @@ if (!isOpen) { var element = dropdown === 'month' ? _this.monthRef : _this.yearRef; if (element) { - // The focus trap has been unpaused and will rerinitialize focus + // The focus trap has been unpaused and will reinitialize focus // but does so on the wrong element (calendar) - // This refocuses the previous element (dropdown button) + // This refocuses the previous element (dropdown button). + // Duration arrived at by trial-and-error. setTimeout(function () { return element.focus(); }, 25); diff --git a/packages/react-datepicker/src/calendar.jsx b/packages/react-datepicker/src/calendar.jsx index e8c19b1dd2a..8388cfe6281 100644 --- a/packages/react-datepicker/src/calendar.jsx +++ b/packages/react-datepicker/src/calendar.jsx @@ -137,16 +137,6 @@ export default class Calendar extends React.Component { }; } - static get defaultProps() { - return { - onDropdownFocus: () => {}, - monthsShown: 1, - forceShowMonthNavigation: false, - timeCaption: "Time", - enableFocusTrap: true - }; - } - constructor(props) { super(props); this.state = { @@ -202,9 +192,10 @@ export default class Calendar extends React.Component { if (!isOpen) { const element = dropdown === 'month' ? this.monthRef : this.yearRef; if (element) { - // The focus trap has been unpaused and will rerinitialize focus + // The focus trap has been unpaused and will reinitialize focus // but does so on the wrong element (calendar) - // This refocuses the previous element (dropdown button) + // This refocuses the previous element (dropdown button). + // Duration arrived at by trial-and-error. setTimeout(() => element.focus(), 25); } } From 2ead918b4e9fb3d13ee22af29ecacae97e4b1773 Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Mon, 14 Dec 2020 10:10:09 -0600 Subject: [PATCH 14/17] strictParsing option --- packages/react-datepicker.js | 129 ++++++++++++------ packages/react-datepicker/docs-site/bundle.js | 12 +- packages/react-datepicker/src/date_utils.js | 4 +- packages/react-datepicker/src/index.jsx | 6 +- .../date_picker/react-datepicker.d.ts | 5 + 5 files changed, 110 insertions(+), 46 deletions(-) diff --git a/packages/react-datepicker.js b/packages/react-datepicker.js index 42a57ea99e2..11a50edb6f3 100644 --- a/packages/react-datepicker.js +++ b/packages/react-datepicker.js @@ -212,6 +212,11 @@ UntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) { var tabbable_1 = tabbable; +var tabbable$1 = /*#__PURE__*/Object.freeze({ + default: tabbable_1, + __moduleExports: tabbable_1 +}); + var immutable = extend; var hasOwnProperty = Object.prototype.hasOwnProperty; @@ -237,6 +242,8 @@ var immutable$1 = /*#__PURE__*/Object.freeze({ __moduleExports: immutable }); +var tabbable$2 = ( tabbable$1 && tabbable_1 ) || tabbable$1; + var xtend = ( immutable$1 && immutable ) || immutable$1; var listeningFocusTrap = null; @@ -418,7 +425,7 @@ function focusTrap(element, userOptions) { if (container.contains(e.target)) return; if (config.clickOutsideDeactivates) { deactivate({ - returnFocus: !tabbable_1.isFocusable(e.target) + returnFocus: !tabbable$2.isFocusable(e.target) }); } else { e.preventDefault(); @@ -473,7 +480,7 @@ function focusTrap(element, userOptions) { } function updateTabbableNodes() { - var tabbableNodes = tabbable_1(container); + var tabbableNodes = tabbable$2(container); state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode(); state.lastTabbableNode = tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode(); @@ -1377,9 +1384,10 @@ function cloneDate(date) { function parseDate(value, _ref) { var dateFormat = _ref.dateFormat, - locale = _ref.locale; + locale = _ref.locale, + strictParsing = _ref.strictParsing; - var m = moment(value, dateFormat, locale || moment.locale(), true); + var m = moment(value, dateFormat, locale || moment.locale(), strictParsing); return m.isValid() ? m : null; } @@ -4518,11 +4526,18 @@ var _toInteger = function (it) { return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; +var _toInteger$1 = /*#__PURE__*/Object.freeze({ + default: _toInteger, + __moduleExports: _toInteger +}); + +var toInteger = ( _toInteger$1 && _toInteger ) || _toInteger$1; + // 7.1.15 ToLength var min = Math.min; var _toLength = function (it) { - return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; var _toLength$1 = /*#__PURE__*/Object.freeze({ @@ -4533,12 +4548,19 @@ var _toLength$1 = /*#__PURE__*/Object.freeze({ var max = Math.max; var min$1 = Math.min; var _toAbsoluteIndex = function (index, length) { - index = _toInteger(index); + index = toInteger(index); return index < 0 ? max(index + length, 0) : min$1(index, length); }; +var _toAbsoluteIndex$1 = /*#__PURE__*/Object.freeze({ + default: _toAbsoluteIndex, + __moduleExports: _toAbsoluteIndex +}); + var toLength = ( _toLength$1 && _toLength ) || _toLength$1; +var toAbsoluteIndex = ( _toAbsoluteIndex$1 && _toAbsoluteIndex ) || _toAbsoluteIndex$1; + // false -> Array#indexOf // true -> Array#includes @@ -4548,7 +4570,7 @@ var _arrayIncludes = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = _toIobject($this); var length = toLength(O.length); - var index = _toAbsoluteIndex(fromIndex, length); + var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare @@ -4676,18 +4698,18 @@ _export(_export.S + _export.F, 'Object', { assign: require$$0 }); var assign = _core.Object.assign; -var assign$1 = createCommonjsModule(function (module) { -module.exports = { "default": assign, __esModule: true }; +var assign$1 = /*#__PURE__*/Object.freeze({ + default: assign, + __moduleExports: assign }); -var assign$2 = unwrapExports(assign$1); +var require$$0$1 = ( assign$1 && assign ) || assign$1; -var assign$3 = /*#__PURE__*/Object.freeze({ - default: assign$2, - __moduleExports: assign$1 +var assign$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0$1, __esModule: true }; }); -var _assign = ( assign$3 && assign$2 ) || assign$3; +unwrapExports(assign$2); var _extends$1 = createCommonjsModule(function (module, exports) { @@ -4695,7 +4717,7 @@ exports.__esModule = true; -var _assign2 = _interopRequireDefault(_assign); +var _assign2 = _interopRequireDefault(assign$2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -4734,7 +4756,7 @@ var _classCallCheck$1 = unwrapExports(classCallCheck$1); var _stringAt = function (TO_STRING) { return function (that, pos) { var s = String(_defined(that)); - var i = _toInteger(pos); + var i = toInteger(pos); var l = s.length; var a, b; if (i < 0 || i >= l) return TO_STRING ? '' : undefined; @@ -4745,6 +4767,11 @@ var _stringAt = function (TO_STRING) { }; }; +var _stringAt$1 = /*#__PURE__*/Object.freeze({ + default: _stringAt, + __moduleExports: _stringAt +}); + var _library = true; var _redefine = _hide; @@ -4762,13 +4789,6 @@ var _objectDps = _descriptors ? Object.defineProperties : function definePropert var document$2 = _global.document; var _html = document$2 && document$2.documentElement; -var _html$1 = /*#__PURE__*/Object.freeze({ - default: _html, - __moduleExports: _html -}); - -var require$$2 = ( _html$1 && _html ) || _html$1; - // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) @@ -4786,7 +4806,7 @@ var createDict = function () { var gt = '>'; var iframeDocument; iframe.style.display = 'none'; - require$$2.appendChild(iframe); + _html.appendChild(iframe); iframe.src = 'javascript:'; // eslint-disable-line no-script-url // createDict = iframe.contentWindow.Object; // html.removeChild(iframe); @@ -4911,10 +4931,19 @@ var _iterDefine = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORC return methods; }; -var $at = _stringAt(true); +var _iterDefine$1 = /*#__PURE__*/Object.freeze({ + default: _iterDefine, + __moduleExports: _iterDefine +}); + +var require$$0$2 = ( _stringAt$1 && _stringAt ) || _stringAt$1; + +var require$$0$3 = ( _iterDefine$1 && _iterDefine ) || _iterDefine$1; + +var $at = require$$0$2(true); // 21.1.3.27 String.prototype[@@iterator]() -_iterDefine(String, 'String', function (iterated) { +require$$0$3(String, 'String', function (iterated) { this._t = String(iterated); // target this._i = 0; // next index // 21.1.5.2.1 %StringIteratorPrototype%.next() @@ -4936,7 +4965,7 @@ var _iterStep = function (done, value) { // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() // 22.1.3.30 Array.prototype[@@iterator]() -var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { +var es6_array_iterator = require$$0$3(Array, 'Array', function (iterated, kind) { this._t = _toIobject(iterated); // target this._i = 0; // next index this._k = kind; // kind @@ -4977,11 +5006,18 @@ var _wksExt = { var iterator = _wksExt.f('iterator'); -var iterator$1 = createCommonjsModule(function (module) { -module.exports = { "default": iterator, __esModule: true }; +var iterator$1 = /*#__PURE__*/Object.freeze({ + default: iterator, + __moduleExports: iterator +}); + +var require$$0$4 = ( iterator$1 && iterator ) || iterator$1; + +var iterator$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0$4, __esModule: true }; }); -unwrapExports(iterator$1); +unwrapExports(iterator$2); var _meta = createCommonjsModule(function (module) { var META = _uid('meta'); @@ -5375,7 +5411,7 @@ exports.__esModule = true; -var _iterator2 = _interopRequireDefault(iterator$1); +var _iterator2 = _interopRequireDefault(iterator$2); @@ -5441,17 +5477,31 @@ var _setProto = { check: check }; +var _setProto$1 = /*#__PURE__*/Object.freeze({ + default: _setProto, + __moduleExports: _setProto +}); + +var require$$0$5 = ( _setProto$1 && _setProto ) || _setProto$1; + // 19.1.3.19 Object.setPrototypeOf(O, proto) -_export(_export.S, 'Object', { setPrototypeOf: _setProto.set }); +_export(_export.S, 'Object', { setPrototypeOf: require$$0$5.set }); var setPrototypeOf = _core.Object.setPrototypeOf; -var setPrototypeOf$1 = createCommonjsModule(function (module) { -module.exports = { "default": setPrototypeOf, __esModule: true }; +var setPrototypeOf$1 = /*#__PURE__*/Object.freeze({ + default: setPrototypeOf, + __moduleExports: setPrototypeOf +}); + +var require$$0$6 = ( setPrototypeOf$1 && setPrototypeOf ) || setPrototypeOf$1; + +var setPrototypeOf$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0$6, __esModule: true }; }); -unwrapExports(setPrototypeOf$1); +unwrapExports(setPrototypeOf$2); // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) _export(_export.S, 'Object', { create: _objectCreate }); @@ -5473,7 +5523,7 @@ exports.__esModule = true; -var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$1); +var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$2); @@ -8798,7 +8848,9 @@ var DatePicker = function (_React$Component) { nextMonthButtonLabel: "Next month", renderDayContents: function renderDayContents(date) { return date; - } + }, + + strictParsing: false }; } }]); @@ -9469,7 +9521,8 @@ DatePicker.propTypes = { renderCustomHeader: PropTypes.func, renderDayContents: PropTypes.func, accessibleMode: PropTypes.bool, - accessibleModeButton: PropTypes.element + accessibleModeButton: PropTypes.element, + strictParsing: PropTypes.bool // eslint-disable-line react/no-unused-prop-types }; diff --git a/packages/react-datepicker/docs-site/bundle.js b/packages/react-datepicker/docs-site/bundle.js index 2bbd162138c..b522150a82b 100644 --- a/packages/react-datepicker/docs-site/bundle.js +++ b/packages/react-datepicker/docs-site/bundle.js @@ -26721,7 +26721,9 @@ nextMonthButtonLabel: "Next month", renderDayContents: function renderDayContents(date) { return date; - } + }, + + strictParsing: false }; } }]); @@ -27392,7 +27394,8 @@ renderCustomHeader: _propTypes2.default.func, renderDayContents: _propTypes2.default.func, accessibleMode: _propTypes2.default.bool, - accessibleModeButton: _propTypes2.default.element + accessibleModeButton: _propTypes2.default.element, + strictParsing: _propTypes2.default.bool // eslint-disable-line react/no-unused-prop-types }; exports.default = DatePicker; @@ -30057,9 +30060,10 @@ function parseDate(value, _ref) { var dateFormat = _ref.dateFormat, - locale = _ref.locale; + locale = _ref.locale, + strictParsing = _ref.strictParsing; - var m = (0, _moment2.default)(value, dateFormat, locale || _moment2.default.locale(), true); + var m = (0, _moment2.default)(value, dateFormat, locale || _moment2.default.locale(), strictParsing); return m.isValid() ? m : null; } diff --git a/packages/react-datepicker/src/date_utils.js b/packages/react-datepicker/src/date_utils.js index b949b39a02a..937dfaecf66 100644 --- a/packages/react-datepicker/src/date_utils.js +++ b/packages/react-datepicker/src/date_utils.js @@ -63,8 +63,8 @@ export function cloneDate(date) { return date.clone(); } -export function parseDate(value, { dateFormat, locale }) { - const m = moment(value, dateFormat, locale || moment.locale(), true); +export function parseDate(value, { dateFormat, locale, strictParsing}) { + const m = moment(value, dateFormat, locale || moment.locale(), strictParsing); return m.isValid() ? m : null; } diff --git a/packages/react-datepicker/src/index.jsx b/packages/react-datepicker/src/index.jsx index db118b0fb03..bac48fb1949 100644 --- a/packages/react-datepicker/src/index.jsx +++ b/packages/react-datepicker/src/index.jsx @@ -169,7 +169,8 @@ export default class DatePicker extends React.Component { renderCustomHeader: PropTypes.func, renderDayContents: PropTypes.func, accessibleMode: PropTypes.bool, - accessibleModeButton: PropTypes.element + accessibleModeButton: PropTypes.element, + strictParsing: PropTypes.bool, // eslint-disable-line react/no-unused-prop-types }; static get defaultProps() { @@ -202,7 +203,8 @@ export default class DatePicker extends React.Component { nextMonthButtonLabel: "Next month", renderDayContents(date) { return date; - } + }, + strictParsing: false }; } diff --git a/src/components/date_picker/react-datepicker.d.ts b/src/components/date_picker/react-datepicker.d.ts index 4d201de6975..a095882078e 100644 --- a/src/components/date_picker/react-datepicker.d.ts +++ b/src/components/date_picker/react-datepicker.d.ts @@ -193,6 +193,11 @@ export interface ReactDatePickerProps { showYearDropdown?: boolean; startDate?: moment.Moment | null; startOpen?: boolean; + + /** + * Use Moment strict mode, allowing exact format matches only + */ + strictParsing?: boolean; tabIndex?: number; timeCaption?: string; From ff8c1844358c634306938f130a3758f12a02fc52 Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Mon, 14 Dec 2020 10:44:01 -0600 Subject: [PATCH 15/17] snapshots --- .../date_picker/__snapshots__/date_picker.test.tsx.snap | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/date_picker/__snapshots__/date_picker.test.tsx.snap b/src/components/date_picker/__snapshots__/date_picker.test.tsx.snap index 3ffe18e5f61..b1a8cc733dd 100644 --- a/src/components/date_picker/__snapshots__/date_picker.test.tsx.snap +++ b/src/components/date_picker/__snapshots__/date_picker.test.tsx.snap @@ -54,6 +54,7 @@ exports[`EuiDatePicker is rendered 2`] = ` showMonthDropdown={true} showTimeSelect={false} showYearDropdown={true} + strictParsing={false} timeCaption="Time" timeFormat="hh:mm A" timeIntervals={30} @@ -868,6 +869,7 @@ exports[`EuiDatePicker popoverPlacement top-end is rendered 1`] = ` showMonthDropdown={true} showTimeSelect={false} showYearDropdown={true} + strictParsing={false} timeCaption="Time" timeFormat="hh:mm A" timeIntervals={30} From 5b28f1ba1719424f9ddbb6553d6d51b954ef167e Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Thu, 17 Dec 2020 13:02:09 -0600 Subject: [PATCH 16/17] close popover on enter --- packages/react-datepicker.js | 200 ++++++++---------- packages/react-datepicker/docs-site/bundle.js | 3 + packages/react-datepicker/src/index.jsx | 2 +- 3 files changed, 88 insertions(+), 117 deletions(-) diff --git a/packages/react-datepicker.js b/packages/react-datepicker.js index 11a50edb6f3..34c69488528 100644 --- a/packages/react-datepicker.js +++ b/packages/react-datepicker.js @@ -212,11 +212,6 @@ UntouchabilityChecker.prototype.isUntouchable = function isUntouchable(node) { var tabbable_1 = tabbable; -var tabbable$1 = /*#__PURE__*/Object.freeze({ - default: tabbable_1, - __moduleExports: tabbable_1 -}); - var immutable = extend; var hasOwnProperty = Object.prototype.hasOwnProperty; @@ -237,15 +232,6 @@ function extend() { return target } -var immutable$1 = /*#__PURE__*/Object.freeze({ - default: immutable, - __moduleExports: immutable -}); - -var tabbable$2 = ( tabbable$1 && tabbable_1 ) || tabbable$1; - -var xtend = ( immutable$1 && immutable ) || immutable$1; - var listeningFocusTrap = null; function focusTrap(element, userOptions) { @@ -253,7 +239,7 @@ function focusTrap(element, userOptions) { var container = typeof element === 'string' ? doc.querySelector(element) : element; - var config = xtend( + var config = immutable( { returnFocusOnDeactivate: true, escapeDeactivates: true @@ -425,7 +411,7 @@ function focusTrap(element, userOptions) { if (container.contains(e.target)) return; if (config.clickOutsideDeactivates) { deactivate({ - returnFocus: !tabbable$2.isFocusable(e.target) + returnFocus: !tabbable_1.isFocusable(e.target) }); } else { e.preventDefault(); @@ -480,7 +466,7 @@ function focusTrap(element, userOptions) { } function updateTabbableNodes() { - var tabbableNodes = tabbable$2(container); + var tabbableNodes = tabbable_1(container); state.firstTabbableNode = tabbableNodes[0] || getInitialFocusNode(); state.lastTabbableNode = tabbableNodes[tabbableNodes.length - 1] || getInitialFocusNode(); @@ -523,13 +509,6 @@ function delay(fn) { var focusTrap_1 = focusTrap; -var focusTrap$1 = /*#__PURE__*/Object.freeze({ - default: focusTrap_1, - __moduleExports: focusTrap_1 -}); - -var createFocusTrap = ( focusTrap$1 && focusTrap_1 ) || focusTrap$1; - var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -640,7 +619,7 @@ FocusTrap.defaultProps = { tag: 'div', paused: false, focusTrapOptions: {}, - _createFocusTrap: createFocusTrap + _createFocusTrap: focusTrap_1 }; var focusTrapReact = FocusTrap; @@ -4322,17 +4301,10 @@ var _aFunction = function (it) { return it; }; -var _aFunction$1 = /*#__PURE__*/Object.freeze({ - default: _aFunction, - __moduleExports: _aFunction -}); - -var aFunction = ( _aFunction$1 && _aFunction ) || _aFunction$1; - // optional / simple context binding var _ctx = function (fn, that, length) { - aFunction(fn); + _aFunction(fn); if (that === undefined) return fn; switch (length) { case 1: return function (a) { @@ -4350,6 +4322,11 @@ var _ctx = function (fn, that, length) { }; }; +var _ctx$1 = /*#__PURE__*/Object.freeze({ + default: _ctx, + __moduleExports: _ctx +}); + var _isObject = function (it) { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; @@ -4430,6 +4407,8 @@ var _hide = _descriptors ? function (object, key, value) { return object; }; +var require$$0 = ( _ctx$1 && _ctx ) || _ctx$1; + var PROTOTYPE = 'prototype'; var $export = function (type, name, source) { @@ -4453,7 +4432,7 @@ var $export = function (type, name, source) { // prevent global pollution for namespaces exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] // bind timers to global for call from export context - : IS_BIND && own ? _ctx(out, _global) + : IS_BIND && own ? require$$0(out, _global) // wrap global constructors for prevent change them in library : IS_WRAP && target[key] == out ? (function (C) { var F = function (a, b, c) { @@ -4468,7 +4447,7 @@ var $export = function (type, name, source) { F[PROTOTYPE] = C[PROTOTYPE]; return F; // make static versions for prototype methods - })(out) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out; + })(out) : IS_PROTO && typeof out == 'function' ? require$$0(Function.call, out) : out; // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% if (IS_PROTO) { (exports.virtual || (exports.virtual = {}))[key] = out; @@ -4526,41 +4505,20 @@ var _toInteger = function (it) { return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; -var _toInteger$1 = /*#__PURE__*/Object.freeze({ - default: _toInteger, - __moduleExports: _toInteger -}); - -var toInteger = ( _toInteger$1 && _toInteger ) || _toInteger$1; - // 7.1.15 ToLength var min = Math.min; var _toLength = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 + return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; -var _toLength$1 = /*#__PURE__*/Object.freeze({ - default: _toLength, - __moduleExports: _toLength -}); - var max = Math.max; var min$1 = Math.min; var _toAbsoluteIndex = function (index, length) { - index = toInteger(index); + index = _toInteger(index); return index < 0 ? max(index + length, 0) : min$1(index, length); }; -var _toAbsoluteIndex$1 = /*#__PURE__*/Object.freeze({ - default: _toAbsoluteIndex, - __moduleExports: _toAbsoluteIndex -}); - -var toLength = ( _toLength$1 && _toLength ) || _toLength$1; - -var toAbsoluteIndex = ( _toAbsoluteIndex$1 && _toAbsoluteIndex ) || _toAbsoluteIndex$1; - // false -> Array#indexOf // true -> Array#includes @@ -4569,8 +4527,8 @@ var toAbsoluteIndex = ( _toAbsoluteIndex$1 && _toAbsoluteIndex ) || _toAbsoluteI var _arrayIncludes = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = _toIobject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); + var length = _toLength(O.length); + var index = _toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare @@ -4689,12 +4647,12 @@ var _objectAssign$1 = /*#__PURE__*/Object.freeze({ __moduleExports: _objectAssign }); -var require$$0 = ( _objectAssign$1 && _objectAssign ) || _objectAssign$1; +var require$$0$1 = ( _objectAssign$1 && _objectAssign ) || _objectAssign$1; // 19.1.3.1 Object.assign(target, source) -_export(_export.S + _export.F, 'Object', { assign: require$$0 }); +_export(_export.S + _export.F, 'Object', { assign: require$$0$1 }); var assign = _core.Object.assign; @@ -4703,10 +4661,10 @@ var assign$1 = /*#__PURE__*/Object.freeze({ __moduleExports: assign }); -var require$$0$1 = ( assign$1 && assign ) || assign$1; +var require$$0$2 = ( assign$1 && assign ) || assign$1; var assign$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$1, __esModule: true }; +module.exports = { "default": require$$0$2, __esModule: true }; }); unwrapExports(assign$2); @@ -4756,7 +4714,7 @@ var _classCallCheck$1 = unwrapExports(classCallCheck$1); var _stringAt = function (TO_STRING) { return function (that, pos) { var s = String(_defined(that)); - var i = toInteger(pos); + var i = _toInteger(pos); var l = s.length; var a, b; if (i < 0 || i >= l) return TO_STRING ? '' : undefined; @@ -4767,11 +4725,6 @@ var _stringAt = function (TO_STRING) { }; }; -var _stringAt$1 = /*#__PURE__*/Object.freeze({ - default: _stringAt, - __moduleExports: _stringAt -}); - var _library = true; var _redefine = _hide; @@ -4931,19 +4884,10 @@ var _iterDefine = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORC return methods; }; -var _iterDefine$1 = /*#__PURE__*/Object.freeze({ - default: _iterDefine, - __moduleExports: _iterDefine -}); - -var require$$0$2 = ( _stringAt$1 && _stringAt ) || _stringAt$1; - -var require$$0$3 = ( _iterDefine$1 && _iterDefine ) || _iterDefine$1; - -var $at = require$$0$2(true); +var $at = _stringAt(true); // 21.1.3.27 String.prototype[@@iterator]() -require$$0$3(String, 'String', function (iterated) { +_iterDefine(String, 'String', function (iterated) { this._t = String(iterated); // target this._i = 0; // next index // 21.1.5.2.1 %StringIteratorPrototype%.next() @@ -4965,7 +4909,7 @@ var _iterStep = function (done, value) { // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() // 22.1.3.30 Array.prototype[@@iterator]() -var es6_array_iterator = require$$0$3(Array, 'Array', function (iterated, kind) { +var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { this._t = _toIobject(iterated); // target this._i = 0; // next index this._k = kind; // kind @@ -5006,19 +4950,17 @@ var _wksExt = { var iterator = _wksExt.f('iterator'); -var iterator$1 = /*#__PURE__*/Object.freeze({ - default: iterator, - __moduleExports: iterator +var iterator$1 = createCommonjsModule(function (module) { +module.exports = { "default": iterator, __esModule: true }; }); -var require$$0$4 = ( iterator$1 && iterator ) || iterator$1; +var iterator$2 = unwrapExports(iterator$1); -var iterator$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$4, __esModule: true }; +var iterator$3 = /*#__PURE__*/Object.freeze({ + default: iterator$2, + __moduleExports: iterator$1 }); -unwrapExports(iterator$2); - var _meta = createCommonjsModule(function (module) { var META = _uid('meta'); @@ -5403,7 +5345,16 @@ var symbol$1 = createCommonjsModule(function (module) { module.exports = { "default": symbol, __esModule: true }; }); -unwrapExports(symbol$1); +var symbol$2 = unwrapExports(symbol$1); + +var symbol$3 = /*#__PURE__*/Object.freeze({ + default: symbol$2, + __moduleExports: symbol$1 +}); + +var _iterator = ( iterator$3 && iterator$2 ) || iterator$3; + +var _symbol = ( symbol$3 && symbol$2 ) || symbol$3; var _typeof_1 = createCommonjsModule(function (module, exports) { @@ -5411,11 +5362,11 @@ exports.__esModule = true; -var _iterator2 = _interopRequireDefault(iterator$2); +var _iterator2 = _interopRequireDefault(_iterator); -var _symbol2 = _interopRequireDefault(symbol$1); +var _symbol2 = _interopRequireDefault(_symbol); var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; @@ -5463,7 +5414,7 @@ var _setProto = { set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line function (test, buggy, set) { try { - set = _ctx(Function.call, _objectGopd.f(Object.prototype, '__proto__').set, 2); + set = require$$0(Function.call, _objectGopd.f(Object.prototype, '__proto__').set, 2); set(test, []); buggy = !(test instanceof Array); } catch (e) { buggy = true; } @@ -5477,32 +5428,23 @@ var _setProto = { check: check }; -var _setProto$1 = /*#__PURE__*/Object.freeze({ - default: _setProto, - __moduleExports: _setProto -}); - -var require$$0$5 = ( _setProto$1 && _setProto ) || _setProto$1; - // 19.1.3.19 Object.setPrototypeOf(O, proto) -_export(_export.S, 'Object', { setPrototypeOf: require$$0$5.set }); +_export(_export.S, 'Object', { setPrototypeOf: _setProto.set }); var setPrototypeOf = _core.Object.setPrototypeOf; -var setPrototypeOf$1 = /*#__PURE__*/Object.freeze({ - default: setPrototypeOf, - __moduleExports: setPrototypeOf +var setPrototypeOf$1 = createCommonjsModule(function (module) { +module.exports = { "default": setPrototypeOf, __esModule: true }; }); -var require$$0$6 = ( setPrototypeOf$1 && setPrototypeOf ) || setPrototypeOf$1; +var setPrototypeOf$2 = unwrapExports(setPrototypeOf$1); -var setPrototypeOf$2 = createCommonjsModule(function (module) { -module.exports = { "default": require$$0$6, __esModule: true }; +var setPrototypeOf$3 = /*#__PURE__*/Object.freeze({ + default: setPrototypeOf$2, + __moduleExports: setPrototypeOf$1 }); -unwrapExports(setPrototypeOf$2); - // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) _export(_export.S, 'Object', { create: _objectCreate }); @@ -5511,11 +5453,27 @@ var create = function create(P, D) { return $Object.create(P, D); }; -var create$1 = createCommonjsModule(function (module) { -module.exports = { "default": create, __esModule: true }; +var create$1 = /*#__PURE__*/Object.freeze({ + default: create, + __moduleExports: create }); -unwrapExports(create$1); +var require$$0$3 = ( create$1 && create ) || create$1; + +var create$2 = createCommonjsModule(function (module) { +module.exports = { "default": require$$0$3, __esModule: true }; +}); + +var create$3 = unwrapExports(create$2); + +var create$4 = /*#__PURE__*/Object.freeze({ + default: create$3, + __moduleExports: create$2 +}); + +var _setPrototypeOf = ( setPrototypeOf$3 && setPrototypeOf$2 ) || setPrototypeOf$3; + +var _create = ( create$4 && create$3 ) || create$4; var inherits$1 = createCommonjsModule(function (module, exports) { @@ -5523,11 +5481,11 @@ exports.__esModule = true; -var _setPrototypeOf2 = _interopRequireDefault(setPrototypeOf$2); +var _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf); -var _create2 = _interopRequireDefault(create$1); +var _create2 = _interopRequireDefault(_create); @@ -8104,6 +8062,13 @@ emptyFunction.thatReturnsArgument = function (arg) { var emptyFunction_1 = emptyFunction; +var emptyFunction$1 = /*#__PURE__*/Object.freeze({ + default: emptyFunction_1, + __moduleExports: emptyFunction_1 +}); + +var emptyFunction$2 = ( emptyFunction$1 && emptyFunction_1 ) || emptyFunction$1; + /** * Similar to invariant but only logs a warning if the condition is not met. * This can be used to log issues in development environments in critical @@ -8111,7 +8076,7 @@ var emptyFunction_1 = emptyFunction; * same logic and follow the same code paths. */ -var warning = emptyFunction_1; +var warning = emptyFunction$2; if (process.env.NODE_ENV !== 'production') { var printWarning = function printWarning(format) { @@ -9150,6 +9115,9 @@ var DatePicker = function (_React$Component) { } else if (eventKey === "Escape") { event.preventDefault(); _this.setOpen(false, true); + } else if (eventKey === "Enter") { + event.preventDefault(); + _this.setOpen(false, true); } return; } diff --git a/packages/react-datepicker/docs-site/bundle.js b/packages/react-datepicker/docs-site/bundle.js index b522150a82b..8448bfa35f5 100644 --- a/packages/react-datepicker/docs-site/bundle.js +++ b/packages/react-datepicker/docs-site/bundle.js @@ -27023,6 +27023,9 @@ } else if (eventKey === "Escape") { event.preventDefault(); _this.setOpen(false, true); + } else if (eventKey === "Enter") { + event.preventDefault(); + _this.setOpen(false, true); } return; } diff --git a/packages/react-datepicker/src/index.jsx b/packages/react-datepicker/src/index.jsx index bac48fb1949..fb6481f53d9 100644 --- a/packages/react-datepicker/src/index.jsx +++ b/packages/react-datepicker/src/index.jsx @@ -554,7 +554,7 @@ export default class DatePicker extends React.Component { this.setState({enableFocusTrap: true}, () => { this.onInputClick(); }); - } else if (eventKey === "Escape") { + } else if (eventKey === "Escape" || eventKey === "Enter") { event.preventDefault(); this.setOpen(false, true); } From b809b975a1226ac794e6ec1263815cbdfc0270f2 Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Thu, 17 Dec 2020 15:02:15 -0600 Subject: [PATCH 17/17] CL --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c8b0ed149c..41fc4b7c9b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ ## [`master`](https://github.com/elastic/eui/tree/master) -No public interface changes since `31.0.0`. +- Added ability for text input updates in `EuiDatePicker` ([#4243](https://github.com/elastic/eui/pull/4243)) ## [`31.0.0`](https://github.com/elastic/eui/tree/v31.0.0)