@jobber/components 4.25.0 → 4.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var DatePicker = require('../DatePicker-f54f9982.js');
5
+ var DatePicker = require('../DatePicker-2bfdba58.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('react-datepicker');
@@ -82,12 +82,13 @@ function DatePicker({ onChange, onMonthChange, activator, inline, selected, read
82
82
  const datePickerClassNames = classnames__default["default"](styles.datePicker, {
83
83
  [styles.inline]: inline,
84
84
  });
85
+ const { pickerRef } = useEscapeKeyToCloseDatePicker(open, ref);
85
86
  if (smartAutofocus) {
86
87
  useRefocusOnActivator.useRefocusOnActivator(open);
87
88
  React.useEffect(focusOnSelectedDate, [open]);
88
89
  }
89
90
  return (React__default["default"].createElement("div", { className: wrapperClassName, ref: ref },
90
- React__default["default"].createElement(ReactDatePicker__default["default"], { calendarClassName: datePickerClassNames, showPopperArrow: false, selected: selected, inline: inline, disabled: disabled, readOnly: readonly, onChange: handleChange, maxDate: maxDate, preventOpenOnFocus: true, minDate: minDate, useWeekdaysShort: true, customInput: React__default["default"].createElement(DatePickerActivator, { activator: activator, fullWidth: fullWidth }), renderCustomHeader: props => React__default["default"].createElement(DatePickerCustomHeader, Object.assign({}, props)), onCalendarOpen: handleCalendarOpen, onCalendarClose: handleCalendarClose, dateFormat: ["P", "PP", "PPP", "MMM dd yyyy", "MMMM dd yyyy"], highlightDates: highlightDates, onMonthChange: onMonthChange })));
91
+ React__default["default"].createElement(ReactDatePicker__default["default"], { ref: pickerRef, calendarClassName: datePickerClassNames, showPopperArrow: false, selected: selected, inline: inline, disabled: disabled, readOnly: readonly, onChange: handleChange, maxDate: maxDate, preventOpenOnFocus: true, minDate: minDate, useWeekdaysShort: true, customInput: React__default["default"].createElement(DatePickerActivator, { activator: activator, fullWidth: fullWidth }), renderCustomHeader: props => React__default["default"].createElement(DatePickerCustomHeader, Object.assign({}, props)), onCalendarOpen: handleCalendarOpen, onCalendarClose: handleCalendarClose, dateFormat: ["P", "PP", "PPP", "MMM dd yyyy", "MMMM dd yyyy"], highlightDates: highlightDates, onMonthChange: onMonthChange })));
91
92
  /**
92
93
  * The onChange callback on ReactDatePicker returns a Date and an Event, but
93
94
  * the onChange in our interface only provides the Date. Simplifying the code
@@ -106,5 +107,28 @@ function DatePicker({ onChange, onMonthChange, activator, inline, selected, read
106
107
  setOpen(false);
107
108
  }
108
109
  }
110
+ function useEscapeKeyToCloseDatePicker(open, ref) {
111
+ const pickerRef = React.useRef(null);
112
+ const escFunction = (event) => {
113
+ var _a;
114
+ if (event.key === "Escape" && open) {
115
+ // Close the picker ourselves and prevent propagation so that ESC presses with the picker open
116
+ // do not close parent elements that may also be listening for ESC presses such as Modals
117
+ (_a = pickerRef.current) === null || _a === void 0 ? void 0 : _a.setOpen(false);
118
+ event.stopPropagation();
119
+ }
120
+ };
121
+ React.useEffect(() => {
122
+ var _a;
123
+ (_a = ref.current) === null || _a === void 0 ? void 0 : _a.addEventListener("keydown", escFunction);
124
+ return () => {
125
+ var _a;
126
+ (_a = ref.current) === null || _a === void 0 ? void 0 : _a.removeEventListener("keydown", escFunction);
127
+ };
128
+ }, [open, ref, pickerRef]);
129
+ return {
130
+ pickerRef,
131
+ };
132
+ }
109
133
 
110
134
  exports.DatePicker = DatePicker;
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var omit = require('lodash/omit');
6
6
  var React = require('react');
7
7
  var FormField = require('../FormField-0f880b07.js');
8
- var DatePicker = require('../DatePicker-f54f9982.js');
8
+ var DatePicker = require('../DatePicker-2bfdba58.js');
9
9
  require('../tslib.es6-5b8768b7.js');
10
10
  require('uuid');
11
11
  require('react-hook-form');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components",
3
- "version": "4.25.0",
3
+ "version": "4.25.1",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -83,5 +83,5 @@
83
83
  "> 1%",
84
84
  "IE 10"
85
85
  ],
86
- "gitHead": "3d7aaaca66c9b265d9d81f1d7718e05b54da7b9b"
86
+ "gitHead": "a7f25a47c7b128c308f582d83238805f6606b401"
87
87
  }