@telus-uds/components-web 2.33.0 → 2.33.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.
- package/CHANGELOG.md +14 -2
- package/lib/DatePicker/DatePicker.js +3 -2
- package/lib/NavigationBar/NavigationBar.js +26 -3
- package/lib/NavigationBar/NavigationSubMenu.js +6 -3
- package/lib-module/DatePicker/DatePicker.js +3 -2
- package/lib-module/NavigationBar/NavigationBar.js +27 -4
- package/lib-module/NavigationBar/NavigationSubMenu.js +6 -3
- package/package.json +2 -2
- package/src/DatePicker/DatePicker.jsx +3 -2
- package/src/NavigationBar/NavigationBar.jsx +43 -4
- package/src/NavigationBar/NavigationSubMenu.jsx +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
# Change Log - @telus-uds/components-web
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Wed, 24 Apr 2024 16:28:55 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 2.33.1
|
|
8
|
+
|
|
9
|
+
Wed, 24 Apr 2024 16:28:55 GMT
|
|
10
|
+
|
|
11
|
+
### Patches
|
|
12
|
+
|
|
13
|
+
- DatePicker visual inconsistency fixed: when the selected date was outside the actual month, the date was highlighted in the calendar but the calendar still appeared in the actual month instead of the correct month. (35577399+JoshHC@users.noreply.github.com)
|
|
14
|
+
- vertical position fixed for the calendar in datepicker when scrolling (35577399+JoshHC@users.noreply.github.com)
|
|
15
|
+
- `NavigationSubMenu:` fix proptype (guillermo.peitzner@telus.com)
|
|
16
|
+
- `NavigationBar:` close menus when clicking outside the component (guillermo.peitzner@telus.com)
|
|
17
|
+
- Bump @telus-uds/components-base to v1.83.0
|
|
18
|
+
|
|
7
19
|
## 2.33.0
|
|
8
20
|
|
|
9
|
-
Fri, 05 Apr 2024 17:
|
|
21
|
+
Fri, 05 Apr 2024 17:16:24 GMT
|
|
10
22
|
|
|
11
23
|
### Minor changes
|
|
12
24
|
|
|
@@ -131,9 +131,10 @@ const DatePicker = /*#__PURE__*/(0, _react.forwardRef)((_ref3, ref) => {
|
|
|
131
131
|
left,
|
|
132
132
|
top
|
|
133
133
|
} = textInputRef.current.getBoundingClientRect();
|
|
134
|
+
const inputTop = top + window.scrollY;
|
|
134
135
|
setDatePickerPosition({
|
|
135
136
|
left,
|
|
136
|
-
top:
|
|
137
|
+
top: inputTop + textInputRef.current.offsetHeight
|
|
137
138
|
});
|
|
138
139
|
};
|
|
139
140
|
const throttledUpdateDimensions = (0, _lodash.throttle)(updateDimensions, 100, {
|
|
@@ -308,7 +309,7 @@ const DatePicker = /*#__PURE__*/(0, _react.forwardRef)((_ref3, ref) => {
|
|
|
308
309
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DayPickerSingleDateController.default, {
|
|
309
310
|
date: inputDate,
|
|
310
311
|
onDateChange: onChange,
|
|
311
|
-
focused: isFocused,
|
|
312
|
+
focused: inputDate ?? isFocused,
|
|
312
313
|
onFocusChange: onFocusChange,
|
|
313
314
|
numberOfMonths: 1,
|
|
314
315
|
hideKeyboardShortcutsPanel: true,
|
|
@@ -70,27 +70,49 @@ const NavigationBar = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
70
70
|
setOpenSubMenuId(null);
|
|
71
71
|
}
|
|
72
72
|
};
|
|
73
|
+
const navRefDefault = (0, _react.useRef)(null);
|
|
74
|
+
const navRef = ref ?? navRefDefault;
|
|
75
|
+
const itemsRef = (0, _react.useRef)(null);
|
|
76
|
+
|
|
77
|
+
// Close the submenu when the user clicks outside the navigation bar
|
|
78
|
+
const handleMouseDown = (0, _react.useCallback)(event => {
|
|
79
|
+
if (navRef.current && itemsRef.current) {
|
|
80
|
+
// Get the bounding rectangles of the navigation bar and the items container
|
|
81
|
+
const navRect = navRef.current.getBoundingClientRect();
|
|
82
|
+
const itemsRect = itemsRef.current.getBoundingClientRect();
|
|
83
|
+
|
|
84
|
+
// Check if the click was outside the navigation bar and the items container
|
|
85
|
+
const isOutsideNav = event.clientX < navRect.left || event.clientX > navRect.right || event.clientY < navRect.top || event.clientY > navRect.bottom;
|
|
86
|
+
const isOutsideItems = event.clientX < itemsRect.left || event.clientX > itemsRect.right || event.clientY < itemsRect.top || event.clientY > itemsRect.bottom;
|
|
87
|
+
if (isOutsideNav && isOutsideItems) {
|
|
88
|
+
setOpenSubMenuId(null);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}, [navRef, itemsRef, setOpenSubMenuId]);
|
|
73
92
|
|
|
74
|
-
// Add listeners for mouse clicks outside and for ESCAPE key presses
|
|
75
93
|
// TODO: create a custom hook for that and use here and in the Footnote
|
|
76
94
|
(0, _react.useEffect)(() => {
|
|
95
|
+
// Add listeners for mouse clicks outside and for key presses
|
|
96
|
+
document.addEventListener('mousedown', handleMouseDown);
|
|
77
97
|
if (openSubMenuId !== null) {
|
|
78
98
|
window.addEventListener('click', handleSubMenuClose);
|
|
79
99
|
window.addEventListener('keydown', handleSubMenuClose);
|
|
80
100
|
window.addEventListener('touchstart', handleSubMenuClose);
|
|
81
101
|
}
|
|
82
102
|
return () => {
|
|
103
|
+
// Remove listeners when the component is unmounted
|
|
104
|
+
document.removeEventListener('mousedown', handleMouseDown);
|
|
83
105
|
if (openSubMenuId !== null) {
|
|
84
106
|
window.removeEventListener('click', handleSubMenuClose);
|
|
85
107
|
window.removeEventListener('keydown', handleSubMenuClose);
|
|
86
108
|
window.removeEventListener('touchstart', handleSubMenuClose);
|
|
87
109
|
}
|
|
88
110
|
};
|
|
89
|
-
}, [openSubMenuId]);
|
|
111
|
+
}, [openSubMenuId, handleMouseDown]);
|
|
90
112
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_componentsBase.StackView, {
|
|
91
113
|
accessibilityRole: accessibilityRole,
|
|
92
114
|
direction: direction,
|
|
93
|
-
ref:
|
|
115
|
+
ref: navRef,
|
|
94
116
|
space: 2,
|
|
95
117
|
tokens: {
|
|
96
118
|
alignItems: direction === 'column' ? 'flex-start' : 'center',
|
|
@@ -142,6 +164,7 @@ const NavigationBar = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
142
164
|
},
|
|
143
165
|
items: nestedItems,
|
|
144
166
|
selected: itemId === selectedId,
|
|
167
|
+
itemsContainerRef: itemsRef,
|
|
145
168
|
...itemRest,
|
|
146
169
|
...(nestedItems && {
|
|
147
170
|
isOpen
|
|
@@ -29,7 +29,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
29
29
|
items = [],
|
|
30
30
|
openOverlayRef,
|
|
31
31
|
LinkRouter,
|
|
32
|
-
linkRouterProps
|
|
32
|
+
linkRouterProps,
|
|
33
|
+
itemsContainerRef
|
|
33
34
|
} = _ref;
|
|
34
35
|
const focusTrapRef = (0, _react.useRef)();
|
|
35
36
|
const maxWidth = 289; // Slightly over 288 of nav item to account for subpixel rounding
|
|
@@ -131,7 +132,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
131
132
|
parentRef: sourceRef,
|
|
132
133
|
selectedId: selectedId,
|
|
133
134
|
LinkRouter: LinkRouter,
|
|
134
|
-
linkRouterProps: linkRouterProps
|
|
135
|
+
linkRouterProps: linkRouterProps,
|
|
136
|
+
ref: itemsContainerRef
|
|
135
137
|
})
|
|
136
138
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
137
139
|
// This catches and shifts focus to other interactive elements.
|
|
@@ -156,7 +158,8 @@ NavigationSubMenu.propTypes = {
|
|
|
156
158
|
items: _propTypes.default.array,
|
|
157
159
|
openOverlayRef: _propTypes.default.object,
|
|
158
160
|
LinkRouter: _propTypes.default.elementType,
|
|
159
|
-
linkRouterProps: _propTypes.default.object
|
|
161
|
+
linkRouterProps: _propTypes.default.object,
|
|
162
|
+
itemsContainerRef: _propTypes.default.object
|
|
160
163
|
};
|
|
161
164
|
var _default = NavigationSubMenu;
|
|
162
165
|
exports.default = _default;
|
|
@@ -124,9 +124,10 @@ const DatePicker = /*#__PURE__*/forwardRef((_ref3, ref) => {
|
|
|
124
124
|
left,
|
|
125
125
|
top
|
|
126
126
|
} = textInputRef.current.getBoundingClientRect();
|
|
127
|
+
const inputTop = top + window.scrollY;
|
|
127
128
|
setDatePickerPosition({
|
|
128
129
|
left,
|
|
129
|
-
top:
|
|
130
|
+
top: inputTop + textInputRef.current.offsetHeight
|
|
130
131
|
});
|
|
131
132
|
};
|
|
132
133
|
const throttledUpdateDimensions = throttle(updateDimensions, 100, {
|
|
@@ -301,7 +302,7 @@ const DatePicker = /*#__PURE__*/forwardRef((_ref3, ref) => {
|
|
|
301
302
|
children: /*#__PURE__*/_jsx(DayPickerSingleDateController, {
|
|
302
303
|
date: inputDate,
|
|
303
304
|
onDateChange: onChange,
|
|
304
|
-
focused: isFocused,
|
|
305
|
+
focused: inputDate ?? isFocused,
|
|
305
306
|
onFocusChange: onFocusChange,
|
|
306
307
|
numberOfMonths: 1,
|
|
307
308
|
hideKeyboardShortcutsPanel: true,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var _withLinkRouter$propT, _withLinkRouter$propT2, _withLinkRouter$propT3, _withLinkRouter$propT4;
|
|
2
|
-
import React, { forwardRef, useEffect, useRef, useState } from 'react';
|
|
2
|
+
import React, { forwardRef, useEffect, useRef, useState, useCallback } from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { selectSystemProps, StackView, Typography, useResponsiveProp, withLinkRouter, getTokensPropType } from '@telus-uds/components-base';
|
|
5
5
|
import styled from 'styled-components';
|
|
@@ -62,27 +62,49 @@ const NavigationBar = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
62
62
|
setOpenSubMenuId(null);
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
|
+
const navRefDefault = useRef(null);
|
|
66
|
+
const navRef = ref ?? navRefDefault;
|
|
67
|
+
const itemsRef = useRef(null);
|
|
68
|
+
|
|
69
|
+
// Close the submenu when the user clicks outside the navigation bar
|
|
70
|
+
const handleMouseDown = useCallback(event => {
|
|
71
|
+
if (navRef.current && itemsRef.current) {
|
|
72
|
+
// Get the bounding rectangles of the navigation bar and the items container
|
|
73
|
+
const navRect = navRef.current.getBoundingClientRect();
|
|
74
|
+
const itemsRect = itemsRef.current.getBoundingClientRect();
|
|
75
|
+
|
|
76
|
+
// Check if the click was outside the navigation bar and the items container
|
|
77
|
+
const isOutsideNav = event.clientX < navRect.left || event.clientX > navRect.right || event.clientY < navRect.top || event.clientY > navRect.bottom;
|
|
78
|
+
const isOutsideItems = event.clientX < itemsRect.left || event.clientX > itemsRect.right || event.clientY < itemsRect.top || event.clientY > itemsRect.bottom;
|
|
79
|
+
if (isOutsideNav && isOutsideItems) {
|
|
80
|
+
setOpenSubMenuId(null);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}, [navRef, itemsRef, setOpenSubMenuId]);
|
|
65
84
|
|
|
66
|
-
// Add listeners for mouse clicks outside and for ESCAPE key presses
|
|
67
85
|
// TODO: create a custom hook for that and use here and in the Footnote
|
|
68
86
|
useEffect(() => {
|
|
87
|
+
// Add listeners for mouse clicks outside and for key presses
|
|
88
|
+
document.addEventListener('mousedown', handleMouseDown);
|
|
69
89
|
if (openSubMenuId !== null) {
|
|
70
90
|
window.addEventListener('click', handleSubMenuClose);
|
|
71
91
|
window.addEventListener('keydown', handleSubMenuClose);
|
|
72
92
|
window.addEventListener('touchstart', handleSubMenuClose);
|
|
73
93
|
}
|
|
74
94
|
return () => {
|
|
95
|
+
// Remove listeners when the component is unmounted
|
|
96
|
+
document.removeEventListener('mousedown', handleMouseDown);
|
|
75
97
|
if (openSubMenuId !== null) {
|
|
76
98
|
window.removeEventListener('click', handleSubMenuClose);
|
|
77
99
|
window.removeEventListener('keydown', handleSubMenuClose);
|
|
78
100
|
window.removeEventListener('touchstart', handleSubMenuClose);
|
|
79
101
|
}
|
|
80
102
|
};
|
|
81
|
-
}, [openSubMenuId]);
|
|
103
|
+
}, [openSubMenuId, handleMouseDown]);
|
|
82
104
|
return /*#__PURE__*/_jsxs(StackView, {
|
|
83
105
|
accessibilityRole: accessibilityRole,
|
|
84
106
|
direction: direction,
|
|
85
|
-
ref:
|
|
107
|
+
ref: navRef,
|
|
86
108
|
space: 2,
|
|
87
109
|
tokens: {
|
|
88
110
|
alignItems: direction === 'column' ? 'flex-start' : 'center',
|
|
@@ -134,6 +156,7 @@ const NavigationBar = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
134
156
|
},
|
|
135
157
|
items: nestedItems,
|
|
136
158
|
selected: itemId === selectedId,
|
|
159
|
+
itemsContainerRef: itemsRef,
|
|
137
160
|
...itemRest,
|
|
138
161
|
...(nestedItems && {
|
|
139
162
|
isOpen
|
|
@@ -24,7 +24,8 @@ const NavigationSubMenu = _ref => {
|
|
|
24
24
|
items = [],
|
|
25
25
|
openOverlayRef,
|
|
26
26
|
LinkRouter,
|
|
27
|
-
linkRouterProps
|
|
27
|
+
linkRouterProps,
|
|
28
|
+
itemsContainerRef
|
|
28
29
|
} = _ref;
|
|
29
30
|
const focusTrapRef = useRef();
|
|
30
31
|
const maxWidth = 289; // Slightly over 288 of nav item to account for subpixel rounding
|
|
@@ -126,7 +127,8 @@ const NavigationSubMenu = _ref => {
|
|
|
126
127
|
parentRef: sourceRef,
|
|
127
128
|
selectedId: selectedId,
|
|
128
129
|
LinkRouter: LinkRouter,
|
|
129
|
-
linkRouterProps: linkRouterProps
|
|
130
|
+
linkRouterProps: linkRouterProps,
|
|
131
|
+
ref: itemsContainerRef
|
|
130
132
|
})
|
|
131
133
|
}), /*#__PURE__*/_jsx("div", {
|
|
132
134
|
// This catches and shifts focus to other interactive elements.
|
|
@@ -151,6 +153,7 @@ NavigationSubMenu.propTypes = {
|
|
|
151
153
|
items: PropTypes.array,
|
|
152
154
|
openOverlayRef: PropTypes.object,
|
|
153
155
|
LinkRouter: PropTypes.elementType,
|
|
154
|
-
linkRouterProps: PropTypes.object
|
|
156
|
+
linkRouterProps: PropTypes.object,
|
|
157
|
+
itemsContainerRef: PropTypes.object
|
|
155
158
|
};
|
|
156
159
|
export default NavigationSubMenu;
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
],
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@gorhom/portal": "^1.0.14",
|
|
8
|
-
"@telus-uds/components-base": "1.
|
|
8
|
+
"@telus-uds/components-base": "1.83.0",
|
|
9
9
|
"@telus-uds/system-constants": "^1.3.0",
|
|
10
10
|
"fscreen": "^1.2.0",
|
|
11
11
|
"lodash.omit": "^4.5.0",
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
"skip": true
|
|
84
84
|
},
|
|
85
85
|
"types": "types/index.d.ts",
|
|
86
|
-
"version": "2.33.
|
|
86
|
+
"version": "2.33.1"
|
|
87
87
|
}
|
|
@@ -114,9 +114,10 @@ const DatePicker = forwardRef(
|
|
|
114
114
|
const updateDimensions = () => {
|
|
115
115
|
if (inline || !textInputRef.current) return
|
|
116
116
|
const { left, top } = textInputRef.current.getBoundingClientRect()
|
|
117
|
+
const inputTop = top + window.scrollY
|
|
117
118
|
setDatePickerPosition({
|
|
118
119
|
left,
|
|
119
|
-
top:
|
|
120
|
+
top: inputTop + textInputRef.current.offsetHeight
|
|
120
121
|
})
|
|
121
122
|
}
|
|
122
123
|
const throttledUpdateDimensions = throttle(updateDimensions, 100, { leading: false })
|
|
@@ -282,7 +283,7 @@ const DatePicker = forwardRef(
|
|
|
282
283
|
<DayPickerSingleDateController
|
|
283
284
|
date={inputDate}
|
|
284
285
|
onDateChange={onChange}
|
|
285
|
-
focused={isFocused}
|
|
286
|
+
focused={inputDate ?? isFocused}
|
|
286
287
|
onFocusChange={onFocusChange}
|
|
287
288
|
numberOfMonths={1}
|
|
288
289
|
hideKeyboardShortcutsPanel={true}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { forwardRef, useEffect, useRef, useState } from 'react'
|
|
1
|
+
import React, { forwardRef, useEffect, useRef, useState, useCallback } from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import {
|
|
4
4
|
selectSystemProps,
|
|
@@ -69,28 +69,66 @@ const NavigationBar = forwardRef(
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
const navRefDefault = useRef(null)
|
|
73
|
+
const navRef = ref ?? navRefDefault
|
|
74
|
+
const itemsRef = useRef(null)
|
|
75
|
+
|
|
76
|
+
// Close the submenu when the user clicks outside the navigation bar
|
|
77
|
+
const handleMouseDown = useCallback(
|
|
78
|
+
(event) => {
|
|
79
|
+
if (navRef.current && itemsRef.current) {
|
|
80
|
+
// Get the bounding rectangles of the navigation bar and the items container
|
|
81
|
+
const navRect = navRef.current.getBoundingClientRect()
|
|
82
|
+
const itemsRect = itemsRef.current.getBoundingClientRect()
|
|
83
|
+
|
|
84
|
+
// Check if the click was outside the navigation bar and the items container
|
|
85
|
+
const isOutsideNav =
|
|
86
|
+
event.clientX < navRect.left ||
|
|
87
|
+
event.clientX > navRect.right ||
|
|
88
|
+
event.clientY < navRect.top ||
|
|
89
|
+
event.clientY > navRect.bottom
|
|
90
|
+
|
|
91
|
+
const isOutsideItems =
|
|
92
|
+
event.clientX < itemsRect.left ||
|
|
93
|
+
event.clientX > itemsRect.right ||
|
|
94
|
+
event.clientY < itemsRect.top ||
|
|
95
|
+
event.clientY > itemsRect.bottom
|
|
96
|
+
|
|
97
|
+
if (isOutsideNav && isOutsideItems) {
|
|
98
|
+
setOpenSubMenuId(null)
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
[navRef, itemsRef, setOpenSubMenuId]
|
|
103
|
+
)
|
|
104
|
+
|
|
73
105
|
// TODO: create a custom hook for that and use here and in the Footnote
|
|
74
106
|
useEffect(() => {
|
|
107
|
+
// Add listeners for mouse clicks outside and for key presses
|
|
108
|
+
document.addEventListener('mousedown', handleMouseDown)
|
|
109
|
+
|
|
75
110
|
if (openSubMenuId !== null) {
|
|
76
111
|
window.addEventListener('click', handleSubMenuClose)
|
|
77
112
|
window.addEventListener('keydown', handleSubMenuClose)
|
|
78
113
|
window.addEventListener('touchstart', handleSubMenuClose)
|
|
79
114
|
}
|
|
80
115
|
return () => {
|
|
116
|
+
// Remove listeners when the component is unmounted
|
|
117
|
+
document.removeEventListener('mousedown', handleMouseDown)
|
|
118
|
+
|
|
81
119
|
if (openSubMenuId !== null) {
|
|
82
120
|
window.removeEventListener('click', handleSubMenuClose)
|
|
83
121
|
window.removeEventListener('keydown', handleSubMenuClose)
|
|
84
122
|
window.removeEventListener('touchstart', handleSubMenuClose)
|
|
85
123
|
}
|
|
86
124
|
}
|
|
87
|
-
}, [openSubMenuId])
|
|
125
|
+
}, [openSubMenuId, handleMouseDown])
|
|
88
126
|
|
|
89
127
|
return (
|
|
90
128
|
<StackView
|
|
91
129
|
accessibilityRole={accessibilityRole}
|
|
92
130
|
direction={direction}
|
|
93
|
-
ref={
|
|
131
|
+
ref={navRef}
|
|
94
132
|
space={2}
|
|
95
133
|
tokens={{
|
|
96
134
|
alignItems: direction === 'column' ? 'flex-start' : 'center',
|
|
@@ -145,6 +183,7 @@ const NavigationBar = forwardRef(
|
|
|
145
183
|
linkRouterProps={{ ...linkRouterProps, ...itemLinkRouterProps }}
|
|
146
184
|
items={nestedItems}
|
|
147
185
|
selected={itemId === selectedId}
|
|
186
|
+
itemsContainerRef={itemsRef}
|
|
148
187
|
{...itemRest}
|
|
149
188
|
{...(nestedItems && { isOpen })}
|
|
150
189
|
{...(nestedItems && isOpen && { openOverlayRef })}
|
|
@@ -20,7 +20,8 @@ const NavigationSubMenu = ({
|
|
|
20
20
|
items = [],
|
|
21
21
|
openOverlayRef,
|
|
22
22
|
LinkRouter,
|
|
23
|
-
linkRouterProps
|
|
23
|
+
linkRouterProps,
|
|
24
|
+
itemsContainerRef
|
|
24
25
|
}) => {
|
|
25
26
|
const focusTrapRef = useRef()
|
|
26
27
|
|
|
@@ -86,6 +87,7 @@ const NavigationSubMenu = ({
|
|
|
86
87
|
selectedId={selectedId}
|
|
87
88
|
LinkRouter={LinkRouter}
|
|
88
89
|
linkRouterProps={linkRouterProps}
|
|
90
|
+
ref={itemsContainerRef}
|
|
89
91
|
/>
|
|
90
92
|
</Listbox.Overlay>
|
|
91
93
|
<div
|
|
@@ -114,7 +116,8 @@ NavigationSubMenu.propTypes = {
|
|
|
114
116
|
items: PropTypes.array,
|
|
115
117
|
openOverlayRef: PropTypes.object,
|
|
116
118
|
LinkRouter: PropTypes.elementType,
|
|
117
|
-
linkRouterProps: PropTypes.object
|
|
119
|
+
linkRouterProps: PropTypes.object,
|
|
120
|
+
itemsContainerRef: PropTypes.object
|
|
118
121
|
}
|
|
119
122
|
|
|
120
123
|
export default NavigationSubMenu
|