@pingux/astro 1.30.0-alpha.4 → 1.30.0-alpha.6
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/lib/cjs/components/NavBar/NavBar.js +65 -6
- package/lib/cjs/components/NavBar/NavBar.test.js +206 -3
- package/lib/cjs/components/NavBarSection/NavBarItem.js +3 -1
- package/lib/cjs/components/NavBarSection/NavBarItemBody.js +35 -4
- package/lib/cjs/components/NavBarSection/NavBarItemHeader.js +16 -25
- package/lib/cjs/components/NavBarSection/NavBarSection.js +144 -20
- package/lib/cjs/styles/variants/accordion.js +0 -61
- package/lib/cjs/styles/variants/buttons.js +19 -1
- package/lib/cjs/styles/variants/codeView.js +3 -2
- package/lib/cjs/styles/variants/navBar.js +33 -2
- package/lib/cjs/styles/variants/text.js +2 -1
- package/lib/components/NavBar/NavBar.js +60 -7
- package/lib/components/NavBar/NavBar.test.js +164 -5
- package/lib/components/NavBarSection/NavBarItem.js +3 -1
- package/lib/components/NavBarSection/NavBarItemBody.js +33 -4
- package/lib/components/NavBarSection/NavBarItemHeader.js +17 -15
- package/lib/components/NavBarSection/NavBarSection.js +131 -21
- package/lib/styles/variants/accordion.js +0 -52
- package/lib/styles/variants/buttons.js +19 -1
- package/lib/styles/variants/codeView.js +3 -2
- package/lib/styles/variants/navBar.js +33 -2
- package/lib/styles/variants/text.js +2 -1
- package/package.json +1 -1
@@ -2,30 +2,52 @@
|
|
2
2
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
4
|
|
5
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
6
|
+
|
5
7
|
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
6
8
|
|
9
|
+
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
10
|
+
|
11
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
12
|
+
|
7
13
|
_Object$defineProperty(exports, "__esModule", {
|
8
14
|
value: true
|
9
15
|
});
|
10
16
|
|
11
17
|
exports["default"] = void 0;
|
12
18
|
|
19
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
20
|
+
|
21
|
+
var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set"));
|
22
|
+
|
23
|
+
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
24
|
+
|
13
25
|
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
14
26
|
|
15
|
-
var _react =
|
27
|
+
var _react = _interopRequireWildcard(require("react"));
|
16
28
|
|
17
29
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
18
30
|
|
31
|
+
var _focus = require("@react-aria/focus");
|
32
|
+
|
33
|
+
var _interactions = require("@react-aria/interactions");
|
34
|
+
|
19
35
|
var _index = require("../../index");
|
20
36
|
|
21
37
|
var _NavBarItemBody = _interopRequireDefault(require("./NavBarItemBody"));
|
22
38
|
|
23
39
|
var _NavBarItemHeader = _interopRequireDefault(require("./NavBarItemHeader"));
|
24
40
|
|
41
|
+
var _NavBarContext = require("../../context/NavBarContext");
|
42
|
+
|
25
43
|
var _react2 = require("@emotion/react");
|
26
44
|
|
45
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
46
|
+
|
47
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
48
|
+
|
27
49
|
/**
|
28
|
-
* Composed component that creates
|
50
|
+
* Composed component that creates a group
|
29
51
|
* with title, and separator options.
|
30
52
|
*
|
31
53
|
*/
|
@@ -33,28 +55,27 @@ var NavBarSection = function NavBarSection(props) {
|
|
33
55
|
var hasSeparator = props.hasSeparator,
|
34
56
|
title = props.title,
|
35
57
|
items = props.items;
|
58
|
+
var ref = (0, _react.useRef)();
|
59
|
+
var childrenItems = (0, _filter["default"])(items).call(items, function (i) {
|
60
|
+
return i.children;
|
61
|
+
});
|
36
62
|
return (0, _react2.jsx)(_react["default"].Fragment, null, title && (0, _react2.jsx)(_index.Text, {
|
37
63
|
variant: "text.navBarSubtitle"
|
38
|
-
}, title), (0, _react2.jsx)(
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
},
|
51
|
-
textValue: item
|
52
|
-
}, (0, _react2.jsx)(_NavBarItemHeader["default"], {
|
53
|
-
item: item
|
54
|
-
}), (0, _react2.jsx)(_NavBarItemBody["default"], {
|
64
|
+
}, title), (0, _react2.jsx)("ul", {
|
65
|
+
ref: ref,
|
66
|
+
style: {
|
67
|
+
margin: 0,
|
68
|
+
padding: 0,
|
69
|
+
listStyle: 'none'
|
70
|
+
}
|
71
|
+
}, (0, _map["default"])(childrenItems).call(childrenItems, function (item) {
|
72
|
+
return (0, _react2.jsx)("li", {
|
73
|
+
key: item.key
|
74
|
+
}, (0, _react2.jsx)(SectionItem, {
|
75
|
+
key: item.key,
|
55
76
|
item: item
|
56
77
|
}));
|
57
|
-
}), hasSeparator && (0, _react2.jsx)(_index.Box, {
|
78
|
+
})), hasSeparator && (0, _react2.jsx)(_index.Box, {
|
58
79
|
sx: {
|
59
80
|
pl: '15px',
|
60
81
|
pr: '15px',
|
@@ -67,6 +88,92 @@ var NavBarSection = function NavBarSection(props) {
|
|
67
88
|
})));
|
68
89
|
};
|
69
90
|
|
91
|
+
var SectionItem = function SectionItem(_ref) {
|
92
|
+
var item = _ref.item;
|
93
|
+
var key = item.key,
|
94
|
+
children = item.children;
|
95
|
+
var headerButtonRef = (0, _react.useRef)();
|
96
|
+
var navBarState = (0, _NavBarContext.useNavBarContext)();
|
97
|
+
var expandedKeys = navBarState.expandedKeys,
|
98
|
+
setExpandedKeys = navBarState.setExpandedKeys;
|
99
|
+
var isExpanded = expandedKeys === null || expandedKeys === void 0 ? void 0 : expandedKeys.has(key);
|
100
|
+
var firstChildKey = children.length ? children[0].key : null;
|
101
|
+
var lastChildKey = children.length ? children[children.length - 1].key : null;
|
102
|
+
|
103
|
+
var onExpandedChange = function onExpandedChange(isOpen) {
|
104
|
+
if (isOpen) {
|
105
|
+
expandedKeys.add(key);
|
106
|
+
} else {
|
107
|
+
expandedKeys["delete"](key);
|
108
|
+
}
|
109
|
+
|
110
|
+
setExpandedKeys(new _set["default"](expandedKeys));
|
111
|
+
};
|
112
|
+
|
113
|
+
var focusManager = (0, _focus.useFocusManager)();
|
114
|
+
|
115
|
+
var _onKeyDown = function onKeyDown(e, childKey) {
|
116
|
+
var _e$target;
|
117
|
+
|
118
|
+
switch (e.which) {
|
119
|
+
case 39:
|
120
|
+
case 40:
|
121
|
+
if (childKey !== lastChildKey) {
|
122
|
+
focusManager.focusNext();
|
123
|
+
}
|
124
|
+
|
125
|
+
e.preventDefault();
|
126
|
+
break;
|
127
|
+
|
128
|
+
case 37:
|
129
|
+
case 38:
|
130
|
+
if (childKey !== firstChildKey) {
|
131
|
+
focusManager.focusPrevious();
|
132
|
+
}
|
133
|
+
|
134
|
+
e.preventDefault();
|
135
|
+
break;
|
136
|
+
|
137
|
+
case 27:
|
138
|
+
onExpandedChange(false);
|
139
|
+
headerButtonRef.current.focus();
|
140
|
+
break;
|
141
|
+
|
142
|
+
case 32:
|
143
|
+
if (childKey && (_e$target = e.target) !== null && _e$target !== void 0 && _e$target.href) {
|
144
|
+
e.target.click();
|
145
|
+
}
|
146
|
+
|
147
|
+
break;
|
148
|
+
|
149
|
+
default:
|
150
|
+
break;
|
151
|
+
}
|
152
|
+
};
|
153
|
+
|
154
|
+
var _useKeyboard = (0, _interactions.useKeyboard)({
|
155
|
+
onKeyDown: function onKeyDown(e) {
|
156
|
+
_onKeyDown(e);
|
157
|
+
|
158
|
+
e.continuePropagation();
|
159
|
+
}
|
160
|
+
}),
|
161
|
+
keyboardProps = _useKeyboard.keyboardProps;
|
162
|
+
|
163
|
+
return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_index.Button, (0, _extends2["default"])({
|
164
|
+
ref: headerButtonRef,
|
165
|
+
variant: "navBarSectionButton",
|
166
|
+
onPress: function onPress() {
|
167
|
+
return onExpandedChange(!isExpanded);
|
168
|
+
}
|
169
|
+
}, keyboardProps), (0, _react2.jsx)(_NavBarItemHeader["default"], {
|
170
|
+
item: item
|
171
|
+
})), isExpanded && (0, _react2.jsx)(_NavBarItemBody["default"], {
|
172
|
+
item: item,
|
173
|
+
onKeyDown: _onKeyDown
|
174
|
+
}));
|
175
|
+
};
|
176
|
+
|
70
177
|
NavBarSection.defaultProps = {
|
71
178
|
hasSeparator: false
|
72
179
|
};
|
@@ -83,5 +190,22 @@ NavBarSection.propTypes = {
|
|
83
190
|
*/
|
84
191
|
items: _propTypes["default"].arrayOf(_propTypes["default"].shape({}))
|
85
192
|
};
|
193
|
+
SectionItem.propTypes = {
|
194
|
+
item: _propTypes["default"].shape({
|
195
|
+
key: _propTypes["default"].string,
|
196
|
+
children: _propTypes["default"].arrayOf(_propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object])),
|
197
|
+
'aria-label': _propTypes["default"].string
|
198
|
+
}),
|
199
|
+
state: _propTypes["default"].shape({
|
200
|
+
collection: _propTypes["default"].shape({}),
|
201
|
+
selectedKey: _propTypes["default"].string,
|
202
|
+
setSelectedKey: _propTypes["default"].func,
|
203
|
+
selectionManager: _propTypes["default"].shape({
|
204
|
+
focusedKey: _propTypes["default"].string,
|
205
|
+
setFocusedKey: _propTypes["default"].func
|
206
|
+
})
|
207
|
+
}),
|
208
|
+
menuProps: _propTypes["default"].shape({})
|
209
|
+
};
|
86
210
|
var _default = NavBarSection;
|
87
211
|
exports["default"] = _default;
|
@@ -1,35 +1,12 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
-
|
5
3
|
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
6
4
|
|
7
|
-
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
8
|
-
|
9
|
-
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
10
|
-
|
11
|
-
var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
12
|
-
|
13
|
-
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
14
|
-
|
15
|
-
var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
16
|
-
|
17
|
-
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
18
|
-
|
19
|
-
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
20
|
-
|
21
5
|
_Object$defineProperty(exports, "__esModule", {
|
22
6
|
value: true
|
23
7
|
});
|
24
8
|
|
25
9
|
exports["default"] = void 0;
|
26
|
-
|
27
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
28
|
-
|
29
|
-
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
30
|
-
|
31
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
32
|
-
|
33
10
|
var accordionTitle = {
|
34
11
|
display: 'inline-block !important',
|
35
12
|
overflowWrap: 'break-word',
|
@@ -89,42 +66,6 @@ var accordionGridHeader = {
|
|
89
66
|
}
|
90
67
|
}
|
91
68
|
};
|
92
|
-
var accordionGridHeaderNav = {
|
93
|
-
cursor: 'pointer',
|
94
|
-
minHeight: '40px',
|
95
|
-
lineHeight: '30px',
|
96
|
-
outline: 'none',
|
97
|
-
display: 'flex',
|
98
|
-
justifyContent: 'flex-start',
|
99
|
-
flexShrink: 0,
|
100
|
-
wordBreak: 'inherit',
|
101
|
-
whiteSpace: 'nowrap',
|
102
|
-
color: 'neutral.95',
|
103
|
-
flexGrow: 1,
|
104
|
-
fontWeight: 0,
|
105
|
-
fontSize: '16px',
|
106
|
-
'&.is-focused': {
|
107
|
-
outline: 'none',
|
108
|
-
boxShadow: 'focus',
|
109
|
-
WebkitBoxShadow: 'focus',
|
110
|
-
MozBoxShadow: 'focus'
|
111
|
-
},
|
112
|
-
'&.is-hovered': {
|
113
|
-
backgroundColor: 'accent.10'
|
114
|
-
},
|
115
|
-
'&.is-pressed': {
|
116
|
-
backgroundColor: 'accent.5'
|
117
|
-
}
|
118
|
-
};
|
119
|
-
|
120
|
-
var accordionGridNavItem = _objectSpread(_objectSpread({}, accordionGridHeaderNav), {}, {
|
121
|
-
padding: '10px 15px 10px 15px',
|
122
|
-
'&.is-selected': {
|
123
|
-
backgroundColor: 'accent.5',
|
124
|
-
boxShadow: 'inset 2px 0 0 0 white'
|
125
|
-
}
|
126
|
-
});
|
127
|
-
|
128
69
|
var accordionGridBody = {
|
129
70
|
display: 'none !important',
|
130
71
|
pl: 'sm',
|
@@ -147,8 +88,6 @@ var _default = {
|
|
147
88
|
accordionTitle: accordionTitle,
|
148
89
|
accordion: accordion,
|
149
90
|
accordionBody: accordionBody,
|
150
|
-
accordionGridHeaderNav: accordionGridHeaderNav,
|
151
|
-
accordionGridNavItem: accordionGridNavItem,
|
152
91
|
accordionGridItem: accordionGridItem
|
153
92
|
};
|
154
93
|
exports["default"] = _default;
|
@@ -95,7 +95,10 @@ var navItemButton = {
|
|
95
95
|
maxWidth: '100%',
|
96
96
|
wordWrap: 'break-word',
|
97
97
|
wordBreak: 'break-word',
|
98
|
-
'&.is-focused':
|
98
|
+
'&.is-focused': {
|
99
|
+
outline: '1px solid',
|
100
|
+
outlineColor: '#D033FF'
|
101
|
+
},
|
99
102
|
'&.is-hovered': {
|
100
103
|
bg: 'accent.10'
|
101
104
|
},
|
@@ -704,6 +707,20 @@ var menuTab = _objectSpread(_objectSpread({}, quiet), {}, {
|
|
704
707
|
}
|
705
708
|
});
|
706
709
|
|
710
|
+
var navBarSectionButton = _objectSpread(_objectSpread({}, quiet), {}, {
|
711
|
+
width: '100%',
|
712
|
+
'&.is-focused': {
|
713
|
+
outline: '1px solid',
|
714
|
+
outlineColor: '#D033FF'
|
715
|
+
},
|
716
|
+
'&.is-hovered': {
|
717
|
+
backgroundColor: 'accent.10'
|
718
|
+
},
|
719
|
+
'&.is-pressed': {
|
720
|
+
backgroundColor: 'accent.5'
|
721
|
+
}
|
722
|
+
});
|
723
|
+
|
707
724
|
var _default = {
|
708
725
|
accordionHeader: accordionHeader,
|
709
726
|
chipDeleteButton: chipDeleteButton,
|
@@ -739,6 +756,7 @@ var _default = {
|
|
739
756
|
helpHint: helpHint,
|
740
757
|
modalCloseButton: modalCloseButton,
|
741
758
|
navItemButton: navItemButton,
|
759
|
+
navBarSectionButton: navBarSectionButton,
|
742
760
|
applicationPortalPinned: applicationPortalPinned,
|
743
761
|
applicationPortal: applicationPortal,
|
744
762
|
square: square,
|
@@ -155,11 +155,12 @@ var wrapper = {
|
|
155
155
|
var lineNo = {
|
156
156
|
display: 'table-cell',
|
157
157
|
userSelect: 'none',
|
158
|
-
|
158
|
+
px: 5,
|
159
159
|
m: '0 10px 0 0',
|
160
160
|
bg: 'accent.30',
|
161
161
|
minWidth: 26,
|
162
|
-
color: 'white'
|
162
|
+
color: 'white',
|
163
|
+
lineHeight: '20px'
|
163
164
|
};
|
164
165
|
var _default = {
|
165
166
|
theme: theme,
|
@@ -60,17 +60,48 @@ var sectionContainer = {
|
|
60
60
|
pt: '10px',
|
61
61
|
height: '100%',
|
62
62
|
maxHeight: '100%',
|
63
|
-
overflowY: '
|
63
|
+
overflowY: 'auto'
|
64
64
|
};
|
65
65
|
|
66
66
|
var sectionBody = _objectSpread(_objectSpread({}, _accordion["default"].accordionGridBody), {}, {
|
67
67
|
pl: '0'
|
68
68
|
});
|
69
69
|
|
70
|
+
var navItem = {
|
71
|
+
cursor: 'pointer',
|
72
|
+
minHeight: '40px',
|
73
|
+
lineHeight: '30px',
|
74
|
+
padding: '10px 15px 10px 15px',
|
75
|
+
outline: 'none',
|
76
|
+
display: 'flex',
|
77
|
+
justifyContent: 'flex-start',
|
78
|
+
flexShrink: 0,
|
79
|
+
wordBreak: 'inherit',
|
80
|
+
whiteSpace: 'nowrap',
|
81
|
+
color: 'neutral.95',
|
82
|
+
flexGrow: 1,
|
83
|
+
fontWeight: 0,
|
84
|
+
fontSize: '16px',
|
85
|
+
'&.is-focused': {
|
86
|
+
outline: '1px solid',
|
87
|
+
outlineColor: '#D033FF'
|
88
|
+
},
|
89
|
+
'&.is-hovered': {
|
90
|
+
backgroundColor: 'accent.10'
|
91
|
+
},
|
92
|
+
'&.is-pressed': {
|
93
|
+
backgroundColor: 'accent.5'
|
94
|
+
},
|
95
|
+
'&.is-selected': {
|
96
|
+
backgroundColor: 'accent.5',
|
97
|
+
boxShadow: 'inset 2px 0 0 0 white'
|
98
|
+
}
|
99
|
+
};
|
70
100
|
var _default = {
|
71
101
|
container: container,
|
72
102
|
itemHeaderContainer: itemHeaderContainer,
|
73
103
|
sectionContainer: sectionContainer,
|
74
|
-
sectionBody: sectionBody
|
104
|
+
sectionBody: sectionBody,
|
105
|
+
navItem: navItem
|
75
106
|
};
|
76
107
|
exports["default"] = _default;
|
@@ -189,7 +189,8 @@ var navBarHeaderText = _objectSpread(_objectSpread({}, wordWrap), {}, {
|
|
189
189
|
lineHeight: '13px',
|
190
190
|
fontSize: '13px',
|
191
191
|
fontWeight: 1,
|
192
|
-
maxWidth: '150px'
|
192
|
+
maxWidth: '150px',
|
193
|
+
color: 'white'
|
193
194
|
});
|
194
195
|
|
195
196
|
var collapsiblePanellItem = _objectSpread(_objectSpread({}, wordWrap), {}, {
|
@@ -1,6 +1,11 @@
|
|
1
|
+
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
2
|
+
import _Array$isArray from "@babel/runtime-corejs3/core-js-stable/array/is-array";
|
3
|
+
import _Set from "@babel/runtime-corejs3/core-js-stable/set";
|
1
4
|
import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
|
2
|
-
import React, { useState } from 'react';
|
5
|
+
import React, { useMemo, useState } from 'react';
|
3
6
|
import PropTypes from 'prop-types';
|
7
|
+
import { v4 as uuid } from 'uuid';
|
8
|
+
import { FocusScope, useFocusManager } from '@react-aria/focus';
|
4
9
|
import { NavBarContext } from '../../context/NavBarContext';
|
5
10
|
import { isIterableProp } from '../../utils/devUtils/props/isIterable';
|
6
11
|
import Box from '../Box/Box';
|
@@ -10,9 +15,8 @@ import useProgressiveState from '../../hooks/useProgressiveState';
|
|
10
15
|
*
|
11
16
|
* This component is built to have the NavBarSection component passed into it.
|
12
17
|
*
|
13
|
-
* NavBarSection is an iterative component that
|
14
|
-
*
|
15
|
-
* the array of objects that is passed into it.
|
18
|
+
* NavBarSection is an iterative component that using
|
19
|
+
* an array of objects that is passed into it.
|
16
20
|
*
|
17
21
|
*/
|
18
22
|
|
@@ -22,9 +26,10 @@ var NavBar = function NavBar(props) {
|
|
22
26
|
var defaultSelectedKeys = props.defaultSelectedKeys,
|
23
27
|
selectedKeysProp = props.selectedKeys,
|
24
28
|
setSelectedKeysProp = props.setSelectedKeys,
|
25
|
-
defaultExpandedKeys = props.defaultExpandedKeys
|
29
|
+
defaultExpandedKeys = props.defaultExpandedKeys,
|
30
|
+
children = props.children;
|
26
31
|
|
27
|
-
var _useState = useState(defaultExpandedKeys),
|
32
|
+
var _useState = useState(new _Set(defaultExpandedKeys)),
|
28
33
|
_useState2 = _slicedToArray(_useState, 2),
|
29
34
|
expandedKeys = _useState2[0],
|
30
35
|
setExpandedKeys = _useState2[1];
|
@@ -34,6 +39,17 @@ var NavBar = function NavBar(props) {
|
|
34
39
|
selectedKeys = _useProgressiveState2[0],
|
35
40
|
setSelectedKeys = _useProgressiveState2[1];
|
36
41
|
|
42
|
+
var items = useMemo(function () {
|
43
|
+
return _Array$isArray(children) ? _mapInstanceProperty(children).call(children, function (child) {
|
44
|
+
return {
|
45
|
+
item: child,
|
46
|
+
key: uuid()
|
47
|
+
};
|
48
|
+
}) : [{
|
49
|
+
item: children,
|
50
|
+
key: uuid()
|
51
|
+
}];
|
52
|
+
}, [children]);
|
37
53
|
return ___EmotionJSX(NavBarContext.Provider, {
|
38
54
|
value: {
|
39
55
|
selectedKey: selectedKeys,
|
@@ -45,7 +61,44 @@ var NavBar = function NavBar(props) {
|
|
45
61
|
variant: "navBar.container",
|
46
62
|
role: "navigation",
|
47
63
|
as: "nav"
|
48
|
-
},
|
64
|
+
}, items.length ? ___EmotionJSX(FocusScope, {
|
65
|
+
restoreFocus: true,
|
66
|
+
autoFocus: true
|
67
|
+
}, _mapInstanceProperty(items).call(items, function (_ref) {
|
68
|
+
var item = _ref.item,
|
69
|
+
key = _ref.key;
|
70
|
+
return ___EmotionJSX(FocusableItem, {
|
71
|
+
key: key
|
72
|
+
}, item);
|
73
|
+
})) : null));
|
74
|
+
};
|
75
|
+
|
76
|
+
var FocusableItem = function FocusableItem(props) {
|
77
|
+
var focusManager = useFocusManager();
|
78
|
+
|
79
|
+
var onKeyDown = function onKeyDown(e) {
|
80
|
+
switch (e.key) {
|
81
|
+
case 'ArrowRight':
|
82
|
+
case 'ArrowDown':
|
83
|
+
e.preventDefault();
|
84
|
+
focusManager.focusNext();
|
85
|
+
break;
|
86
|
+
|
87
|
+
case 'ArrowLeft':
|
88
|
+
case 'ArrowUp':
|
89
|
+
e.preventDefault();
|
90
|
+
focusManager.focusPrevious();
|
91
|
+
break;
|
92
|
+
|
93
|
+
default:
|
94
|
+
break;
|
95
|
+
}
|
96
|
+
};
|
97
|
+
|
98
|
+
var childWithFocusHandle = /*#__PURE__*/React.cloneElement(props.children, {
|
99
|
+
onKeyDown: onKeyDown
|
100
|
+
});
|
101
|
+
return childWithFocusHandle;
|
49
102
|
};
|
50
103
|
|
51
104
|
NavBar.propTypes = {
|