carbon-react 147.4.1 → 147.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -85,23 +85,27 @@ export const DatePicker = ({
|
|
|
85
85
|
}
|
|
86
86
|
};
|
|
87
87
|
const handleOnDayKeyDown = (_day, _modifiers, ev) => {
|
|
88
|
-
//
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
setOpen(false);
|
|
93
|
-
onPickerClose?.();
|
|
94
|
-
const input = inputElement.current?.querySelector("input");
|
|
95
|
-
|
|
88
|
+
// timeout added to prevent this handler from interfering with the useFocusPortalContent hook, when the date-range
|
|
89
|
+
// is used inside of a popover-container and it is the last focusable element of the popover-container
|
|
90
|
+
setTimeout(() => {
|
|
91
|
+
// we need to manually handle this as the picker may be in a Portal
|
|
96
92
|
/* istanbul ignore else */
|
|
97
|
-
if (
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const
|
|
102
|
-
|
|
93
|
+
if (Events.isTabKey(ev) && !Events.isShiftKey(ev)) {
|
|
94
|
+
ev.preventDefault();
|
|
95
|
+
setOpen(false);
|
|
96
|
+
onPickerClose?.();
|
|
97
|
+
const input = inputElement.current?.querySelector("input");
|
|
98
|
+
|
|
99
|
+
/* istanbul ignore else */
|
|
100
|
+
if (input) {
|
|
101
|
+
const elements = Array.from(document.querySelectorAll(defaultFocusableSelectors) || /* istanbul ignore next */[]);
|
|
102
|
+
const elementsInPicker = Array.from(ref.current?.querySelectorAll("button, [tabindex]") || /* istanbul ignore next */[]);
|
|
103
|
+
const filteredElements = elements.filter(el => Number(el.tabIndex) !== -1 && !elementsInPicker.includes(el));
|
|
104
|
+
const nextIndex = filteredElements.indexOf(input) + 1;
|
|
105
|
+
filteredElements[nextIndex]?.focus();
|
|
106
|
+
}
|
|
103
107
|
}
|
|
104
|
-
}
|
|
108
|
+
}, 0);
|
|
105
109
|
};
|
|
106
110
|
useEffect(() => {
|
|
107
111
|
if (selectedDays) {
|
|
@@ -94,23 +94,27 @@ const DatePicker = ({
|
|
|
94
94
|
}
|
|
95
95
|
};
|
|
96
96
|
const handleOnDayKeyDown = (_day, _modifiers, ev) => {
|
|
97
|
-
//
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
setOpen(false);
|
|
102
|
-
onPickerClose?.();
|
|
103
|
-
const input = inputElement.current?.querySelector("input");
|
|
104
|
-
|
|
97
|
+
// timeout added to prevent this handler from interfering with the useFocusPortalContent hook, when the date-range
|
|
98
|
+
// is used inside of a popover-container and it is the last focusable element of the popover-container
|
|
99
|
+
setTimeout(() => {
|
|
100
|
+
// we need to manually handle this as the picker may be in a Portal
|
|
105
101
|
/* istanbul ignore else */
|
|
106
|
-
if (
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const
|
|
111
|
-
|
|
102
|
+
if (_events.default.isTabKey(ev) && !_events.default.isShiftKey(ev)) {
|
|
103
|
+
ev.preventDefault();
|
|
104
|
+
setOpen(false);
|
|
105
|
+
onPickerClose?.();
|
|
106
|
+
const input = inputElement.current?.querySelector("input");
|
|
107
|
+
|
|
108
|
+
/* istanbul ignore else */
|
|
109
|
+
if (input) {
|
|
110
|
+
const elements = Array.from(document.querySelectorAll(_focusTrapUtils.defaultFocusableSelectors) || /* istanbul ignore next */[]);
|
|
111
|
+
const elementsInPicker = Array.from(ref.current?.querySelectorAll("button, [tabindex]") || /* istanbul ignore next */[]);
|
|
112
|
+
const filteredElements = elements.filter(el => Number(el.tabIndex) !== -1 && !elementsInPicker.includes(el));
|
|
113
|
+
const nextIndex = filteredElements.indexOf(input) + 1;
|
|
114
|
+
filteredElements[nextIndex]?.focus();
|
|
115
|
+
}
|
|
112
116
|
}
|
|
113
|
-
}
|
|
117
|
+
}, 0);
|
|
114
118
|
};
|
|
115
119
|
(0, _react.useEffect)(() => {
|
|
116
120
|
if (selectedDays) {
|