@pingux/astro 2.81.0-alpha.0 → 2.81.0-alpha.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.
Files changed (59) hide show
  1. package/lib/cjs/components/NavBar/NavBar.styles.d.ts +30 -0
  2. package/lib/cjs/components/NavBar/NavBar.styles.js +34 -1
  3. package/lib/cjs/components/NavBarSection/NavBarItemLink.js +1 -4
  4. package/lib/cjs/components/NavSideBar/Icon.test.d.ts +1 -0
  5. package/lib/cjs/components/NavSideBar/Icon.test.js +67 -0
  6. package/lib/cjs/components/NavSideBar/NavSideBar.d.ts +4 -0
  7. package/lib/cjs/components/NavSideBar/NavSideBar.js +115 -0
  8. package/lib/cjs/components/NavSideBar/NavSideBar.mdx +42 -0
  9. package/lib/cjs/components/NavSideBar/NavSideBar.stories.d.ts +8 -0
  10. package/lib/cjs/components/NavSideBar/NavSideBar.stories.js +1344 -0
  11. package/lib/cjs/components/NavSideBar/NavSideBar.test.d.ts +1 -0
  12. package/lib/cjs/components/NavSideBar/NavSideBar.test.js +311 -0
  13. package/lib/cjs/components/NavSideBar/NavSideBarHeader.d.ts +4 -0
  14. package/lib/cjs/components/NavSideBar/NavSideBarHeader.js +33 -0
  15. package/lib/cjs/components/NavSideBar/NavSideBarItem.d.ts +4 -0
  16. package/lib/cjs/components/NavSideBar/NavSideBarItem.js +112 -0
  17. package/lib/cjs/components/NavSideBar/NavSideBarSection.d.ts +4 -0
  18. package/lib/cjs/components/NavSideBar/NavSideBarSection.js +122 -0
  19. package/lib/cjs/components/NavSideBar/NavSideBarSectionHeader.d.ts +4 -0
  20. package/lib/cjs/components/NavSideBar/NavSideBarSectionHeader.js +98 -0
  21. package/lib/cjs/components/NavSideBar/NavSideBarSectionItem.d.ts +4 -0
  22. package/lib/cjs/components/NavSideBar/NavSideBarSectionItem.js +81 -0
  23. package/lib/cjs/components/NavSideBar/NavSideBarSubTitle.d.ts +4 -0
  24. package/lib/cjs/components/NavSideBar/NavSideBarSubTitle.js +25 -0
  25. package/lib/cjs/components/NavSideBar/icons.d.ts +15 -0
  26. package/lib/cjs/components/NavSideBar/icons.js +174 -0
  27. package/lib/cjs/components/NavSideBar/index.d.ts +5 -0
  28. package/lib/cjs/components/NavSideBar/index.js +42 -0
  29. package/lib/cjs/hooks/useNavBarStyling/useNavBarStyling.d.ts +1 -0
  30. package/lib/cjs/hooks/useNavBarStyling/useNavBarStyling.js +14 -3
  31. package/lib/cjs/hooks/useNavBarStyling/useNavBarStyling.test.js +1 -1
  32. package/lib/cjs/index.d.ts +2 -0
  33. package/lib/cjs/index.js +54 -35
  34. package/lib/cjs/types/index.d.ts +1 -0
  35. package/lib/cjs/types/index.js +28 -17
  36. package/lib/cjs/types/link.d.ts +1 -0
  37. package/lib/cjs/types/navSideBar.d.ts +75 -0
  38. package/lib/cjs/types/navSideBar.js +6 -0
  39. package/lib/components/NavBar/NavBar.styles.js +34 -1
  40. package/lib/components/NavBarSection/NavBarItemLink.js +1 -4
  41. package/lib/components/NavSideBar/Icon.test.js +58 -0
  42. package/lib/components/NavSideBar/NavSideBar.js +101 -0
  43. package/lib/components/NavSideBar/NavSideBar.mdx +42 -0
  44. package/lib/components/NavSideBar/NavSideBar.stories.js +1326 -0
  45. package/lib/components/NavSideBar/NavSideBar.test.js +308 -0
  46. package/lib/components/NavSideBar/NavSideBarHeader.js +19 -0
  47. package/lib/components/NavSideBar/NavSideBarItem.js +98 -0
  48. package/lib/components/NavSideBar/NavSideBarSection.js +108 -0
  49. package/lib/components/NavSideBar/NavSideBarSectionHeader.js +84 -0
  50. package/lib/components/NavSideBar/NavSideBarSectionItem.js +69 -0
  51. package/lib/components/NavSideBar/NavSideBarSubTitle.js +16 -0
  52. package/lib/components/NavSideBar/icons.js +102 -0
  53. package/lib/components/NavSideBar/index.js +5 -0
  54. package/lib/hooks/useNavBarStyling/useNavBarStyling.js +14 -3
  55. package/lib/hooks/useNavBarStyling/useNavBarStyling.test.js +1 -1
  56. package/lib/index.js +2 -0
  57. package/lib/types/index.js +1 -0
  58. package/lib/types/navSideBar.js +1 -0
  59. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,311 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
+ var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
5
+ var _react = _interopRequireDefault(require("react"));
6
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
7
+ var _index = require("../../index");
8
+ var _testWrapper = require("../../utils/testUtils/testWrapper");
9
+ var _universalComponentTest = require("../../utils/testUtils/universalComponentTest");
10
+ var _icons = require("./icons");
11
+ var _NavSideBar = _interopRequireDefault(require("./NavSideBar"));
12
+ var _react2 = require("@emotion/react");
13
+ var onKeyDownProp = jest.fn();
14
+ var getComponent = function getComponent() {
15
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
16
+ return (0, _testWrapper.render)((0, _react2.jsx)(_NavSideBar["default"], props, (0, _react2.jsx)(_index.NavSideBarHeader, {
17
+ linkProps: {
18
+ href: 'https://pingidentity.com/',
19
+ target: '_blank'
20
+ },
21
+ logo: _icons.Logo
22
+ }), (0, _react2.jsx)(_index.Separator, {
23
+ m: "0",
24
+ backgroundColor: "neutral.60",
25
+ key: "top-separator"
26
+ }), (0, _react2.jsx)(_index.Box, {
27
+ variant: "navBar.sectionContainer",
28
+ paddingBottom: "xl",
29
+ key: "first-section-container"
30
+ }, (0, _react2.jsx)(_index.NavSideBarItem, {
31
+ key: "Overview",
32
+ icon: _icons.GlobeIcon,
33
+ id: "Overview",
34
+ "data-testid": "navItem"
35
+ }, "Overview"), (0, _react2.jsx)(_index.NavSideBarSection, {
36
+ title: "Dashboard",
37
+ key: "Dashboard",
38
+ id: "Dashboard",
39
+ icon: _icons.ViewDashboard
40
+ }, (0, _react2.jsx)(_index.NavSideBarSectionItem, {
41
+ key: "Dashboard Link Group",
42
+ linkProps: {
43
+ href: 'https://pingidentity.com/'
44
+ },
45
+ "data-testid": "navItemLink"
46
+ }, "Group"), (0, _react2.jsx)(_index.NavSideBarSectionItem, {
47
+ key: "Dashboard Link Populations",
48
+ "data-testid": "navItemButton"
49
+ }, "Populations")), (0, _react2.jsx)(_index.NavSideBarSection, {
50
+ title: "MFA",
51
+ key: "MFA",
52
+ id: "MFA",
53
+ icon: _icons.Fingerprint
54
+ }, (0, _react2.jsx)(_index.NavSideBarSectionItem, {
55
+ key: "MFA Button Users"
56
+ }, "Users"), (0, _react2.jsx)(_index.NavSideBarSectionItem, {
57
+ key: "PingOne Services"
58
+ }), (0, _react2.jsx)(_index.NavSideBarSectionItem, {
59
+ key: "MFA Button Group"
60
+ }, "Group Test")), (0, _react2.jsx)(_index.NavSideBarItem, {
61
+ key: "DaVinci",
62
+ id: "DaVinci",
63
+ "data-testid": "navBarItemLink",
64
+ icon: _icons.ViewGridPlusOutline,
65
+ customIcon: _icons.OpenInNew,
66
+ linkProps: {
67
+ href: 'https://pingidentity.com/'
68
+ }
69
+ }, "DaVinci"), (0, _react2.jsx)(_index.NavSideBarSection, {
70
+ title: "Environment title that is so long, it wraps",
71
+ key: "Environment",
72
+ id: "Environment",
73
+ icon: _icons.Earth
74
+ }, (0, _react2.jsx)(_index.NavSideBarSectionItem, {
75
+ key: "Earth Button Users"
76
+ }, "Users"), (0, _react2.jsx)(_index.NavSideBarSectionItem, {
77
+ key: "Earth Button Group"
78
+ }, "Group")), (0, _react2.jsx)(_index.NavSideBarSection, {
79
+ title: "Credentials",
80
+ key: "Credentials",
81
+ id: "Credentials",
82
+ "data-testid": "Credentials",
83
+ icon: _icons.EmoticonHappy,
84
+ onKeyDown: onKeyDownProp
85
+ }, (0, _react2.jsx)(_index.NavSideBarSectionItem, {
86
+ key: "Credentials Button Users"
87
+ }, "Users"), (0, _react2.jsx)(_index.NavSideBarSectionItem, {
88
+ key: "Credentials Button Group"
89
+ }, "Group")))));
90
+ };
91
+
92
+ // Needs to be added to each components test file
93
+ (0, _universalComponentTest.universalComponentTests)({
94
+ renderComponent: function renderComponent(props) {
95
+ return (0, _react2.jsx)(_NavSideBar["default"], props, (0, _react2.jsx)(_index.NavSideBarItem, {
96
+ key: "Overview",
97
+ icon: _icons.GlobeIcon,
98
+ id: "Overview"
99
+ }, "Overview"));
100
+ }
101
+ });
102
+ var clickHeaderButtons = function clickHeaderButtons() {
103
+ var headerButtons = _testWrapper.screen.getAllByRole('button');
104
+ (0, _forEach["default"])(headerButtons).call(headerButtons, function (button) {
105
+ return _userEvent["default"].click(button);
106
+ });
107
+ };
108
+ test('should render basic nav with children', function () {
109
+ getComponent();
110
+ expect(_testWrapper.screen.queryByRole('navigation')).toBeInTheDocument();
111
+ });
112
+ test('should render title for sections that have titles', function () {
113
+ getComponent();
114
+ expect(_testWrapper.screen.getByText('Dashboard')).toBeInTheDocument();
115
+ });
116
+ test('should select NavItemLink', function () {
117
+ getComponent();
118
+ clickHeaderButtons();
119
+ var link = _testWrapper.screen.getByTestId('navItemLink');
120
+ expect(link).toBeInTheDocument();
121
+ _userEvent["default"].click(link);
122
+ expect(link).toHaveClass('is-selected');
123
+ });
124
+ test('should select NavItemLink on space key press', function () {
125
+ getComponent();
126
+ clickHeaderButtons();
127
+ var link = _testWrapper.screen.getByTestId('navItemLink');
128
+ expect(link).toBeInTheDocument();
129
+ _testWrapper.fireEvent.keyDown(link, {
130
+ key: 'Space',
131
+ keyCode: 32
132
+ });
133
+ expect(link).toHaveClass('is-selected');
134
+ });
135
+ test('should select NavItem', function () {
136
+ getComponent();
137
+ var item;
138
+ item = _testWrapper.screen.queryByTestId('navItem');
139
+ expect(item).toBeInTheDocument();
140
+ _userEvent["default"].click(item);
141
+ item = _testWrapper.screen.queryByTestId('navItem');
142
+ expect(item).toHaveClass('is-selected');
143
+ });
144
+ test('should select NavItemButton', function () {
145
+ getComponent();
146
+ clickHeaderButtons();
147
+ var button = _testWrapper.screen.getByTestId('navItemButton');
148
+ expect(button).toBeInTheDocument();
149
+ _userEvent["default"].click(button);
150
+ expect(button).toHaveClass('is-selected');
151
+ });
152
+ test('should collapse NavItemBody', function () {
153
+ getComponent();
154
+ expect(_testWrapper.screen.queryByText('Users')).not.toBeInTheDocument();
155
+ clickHeaderButtons();
156
+ expect(_testWrapper.screen.getByTestId('navItemButton')).toBeInTheDocument();
157
+ clickHeaderButtons();
158
+ expect(_testWrapper.screen.queryByText('Users')).not.toBeInTheDocument();
159
+ });
160
+ test('should collapse NavItemBody on Escape key press', function () {
161
+ getComponent();
162
+ clickHeaderButtons();
163
+ expect(_testWrapper.screen.getByTestId('navItemButton')).toBeInTheDocument();
164
+ var headerButtons = _testWrapper.screen.getAllByRole('button');
165
+ (0, _forEach["default"])(headerButtons).call(headerButtons, function (headerButton) {
166
+ return _testWrapper.fireEvent.keyDown(headerButton, {
167
+ key: 'Escape',
168
+ keyCode: 27
169
+ });
170
+ });
171
+ expect(_testWrapper.screen.queryByText('Users')).not.toBeInTheDocument();
172
+ });
173
+ test('should change focus between NavBarItemHeader on arrow key press', function () {
174
+ getComponent();
175
+ var headerButtons = _testWrapper.screen.getAllByRole('button');
176
+ expect(headerButtons[0]).toBeInTheDocument();
177
+ headerButtons[0].focus();
178
+ expect(headerButtons[0]).toHaveClass('is-focused');
179
+ _testWrapper.fireEvent.keyDown(headerButtons[0], {
180
+ key: 'ArrowDown',
181
+ keyCode: 40
182
+ });
183
+ expect(headerButtons[1]).toHaveClass('is-focused');
184
+ _testWrapper.fireEvent.keyDown(headerButtons[0], {
185
+ key: 'ArrowRight',
186
+ keyCode: 39
187
+ });
188
+ expect(headerButtons[2]).toHaveClass('is-focused');
189
+ _testWrapper.fireEvent.keyDown(headerButtons[0], {
190
+ key: 'ArrowLeft',
191
+ keyCode: 37
192
+ });
193
+ expect(headerButtons[1]).toHaveClass('is-focused');
194
+ _testWrapper.fireEvent.keyDown(headerButtons[0], {
195
+ key: 'ArrowUp',
196
+ keyCode: 38
197
+ });
198
+ expect(headerButtons[0]).toHaveClass('is-focused');
199
+ _testWrapper.fireEvent.keyDown(headerButtons[0], {
200
+ key: 'Shift',
201
+ keyCode: 16
202
+ });
203
+ expect(headerButtons[0]).toHaveClass('is-focused');
204
+ });
205
+ test('should not change focus from NavItemBody to NavBarItemHeader on up/down arrow key press', function () {
206
+ getComponent();
207
+ var headerButtons = _testWrapper.screen.getAllByRole('button');
208
+ expect(headerButtons[1]).toBeInTheDocument();
209
+ headerButtons[1].click();
210
+ _testWrapper.fireEvent.keyDown(headerButtons[0], {
211
+ key: 'ArrowDown',
212
+ keyCode: 40
213
+ });
214
+ expect(_testWrapper.screen.getByTestId('navItemLink')).toHaveClass('is-focused');
215
+ expect(document.activeElement).toHaveTextContent('Group');
216
+ _testWrapper.fireEvent.keyDown(_testWrapper.screen.getByTestId('navItemLink'), {
217
+ key: 'ArrowUp',
218
+ keyCode: 38
219
+ });
220
+ expect(_testWrapper.screen.getByTestId('navItemLink')).toHaveClass('is-focused');
221
+ expect(document.activeElement).toHaveTextContent('Group');
222
+ _testWrapper.fireEvent.keyDown(_testWrapper.screen.getByTestId('navItemLink'), {
223
+ key: 'ArrowDown',
224
+ keyCode: 40
225
+ });
226
+ expect(_testWrapper.screen.getByTestId('navItemButton')).toHaveClass('is-focused');
227
+ expect(document.activeElement).toHaveTextContent('Populations');
228
+ _testWrapper.fireEvent.keyDown(_testWrapper.screen.getByTestId('navItemButton'), {
229
+ key: 'ArrowDown',
230
+ keyCode: 40
231
+ });
232
+ expect(_testWrapper.screen.getByTestId('navItemButton')).toHaveClass('is-focused');
233
+ expect(document.activeElement).toHaveTextContent('Populations');
234
+ });
235
+ test('should not change focus from NavItemBody to NavBarItemHeader on left/right arrow key press', function () {
236
+ getComponent();
237
+ var headerButtons = _testWrapper.screen.getAllByRole('button');
238
+ expect(headerButtons[1]).toBeInTheDocument();
239
+ headerButtons[1].click();
240
+ _testWrapper.fireEvent.keyDown(headerButtons[0], {
241
+ key: 'ArrowRight',
242
+ keyCode: 39
243
+ });
244
+ expect(_testWrapper.screen.getByTestId('navItemLink')).toHaveClass('is-focused');
245
+ _testWrapper.fireEvent.keyDown(_testWrapper.screen.getByTestId('navItemLink'), {
246
+ key: 'ArrowLeft',
247
+ keyCode: 37
248
+ });
249
+ expect(_testWrapper.screen.getByTestId('navItemLink')).toHaveClass('is-focused');
250
+ _testWrapper.fireEvent.keyDown(_testWrapper.screen.getByTestId('navItemLink'), {
251
+ key: 'ArrowRight',
252
+ keyCode: 39
253
+ });
254
+ expect(_testWrapper.screen.getByTestId('navItemButton')).toHaveClass('is-focused');
255
+ _testWrapper.fireEvent.keyDown(_testWrapper.screen.getByTestId('navItemButton'), {
256
+ key: 'ArrowRight',
257
+ keyCode: 39
258
+ });
259
+ expect(_testWrapper.screen.getByTestId('navItemButton')).toHaveClass('is-focused');
260
+ });
261
+ test('passing in a string into defaultSelectedKeys makes the key selected by default, and the parent expanded by default ', function () {
262
+ getComponent({
263
+ defaultSelectedKey: 'Dashboard Link Populations'
264
+ });
265
+ var child = _testWrapper.screen.getByTestId('navItemButton');
266
+ expect(child).toBeInTheDocument();
267
+ expect(child).toHaveClass('is-selected');
268
+ });
269
+ test('expand only one item', function () {
270
+ getComponent({
271
+ isAutoСollapsible: true
272
+ });
273
+ expect(_testWrapper.screen.queryByText('Group')).not.toBeInTheDocument();
274
+ expect(_testWrapper.screen.queryByText('Users')).not.toBeInTheDocument();
275
+ var headerButtons = _testWrapper.screen.getAllByRole('button');
276
+ _userEvent["default"].click(headerButtons[1]);
277
+ expect(_testWrapper.screen.queryByText('Group')).toBeInTheDocument();
278
+ expect(_testWrapper.screen.queryByText('Users')).not.toBeInTheDocument();
279
+ _userEvent["default"].click(headerButtons[2]);
280
+ expect(_testWrapper.screen.queryByText('Group')).not.toBeInTheDocument();
281
+ expect(_testWrapper.screen.queryByText('Users')).toBeInTheDocument();
282
+ });
283
+ test('default expended keys', function () {
284
+ getComponent({
285
+ isAutoСollapsible: true,
286
+ defaultExpandedKeys: ['Dashboard']
287
+ });
288
+ expect(_testWrapper.screen.getByTestId('navItemLink')).toBeInTheDocument();
289
+ expect(_testWrapper.screen.getByTestId('navItemButton')).toBeInTheDocument();
290
+ });
291
+ test('when a child is selected, and the parent is collapsed, the parent has the is-selected class', function () {
292
+ getComponent({
293
+ defaultSelectedKey: 'Dashboard Link Populations'
294
+ });
295
+ var child = _testWrapper.screen.getByTestId('navItemButton');
296
+ expect(child).toBeInTheDocument();
297
+ expect(child).toHaveClass('is-selected');
298
+ var parent = _testWrapper.screen.getByTestId('Dashboard');
299
+ expect(parent).not.toHaveClass('is-selected');
300
+ _userEvent["default"].click(parent);
301
+ var parentDiv = _testWrapper.screen.getByTestId('Dashboard').firstElementChild;
302
+ expect(parentDiv).toHaveClass('is-selected');
303
+ });
304
+ test('calls onKeyDownProp when a key is pressed', function () {
305
+ getComponent();
306
+ var header = _testWrapper.screen.getByText('Credentials');
307
+ _testWrapper.fireEvent.keyDown(header, {
308
+ key: 'Enter'
309
+ });
310
+ expect(onKeyDownProp).toHaveBeenCalled();
311
+ });
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { NavSideBarHeaderProps } from '../../types';
3
+ declare const NavSideBarHeader: React.ForwardRefExoticComponent<NavSideBarHeaderProps & React.RefAttributes<HTMLDivElement>>;
4
+ export default NavSideBarHeader;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
5
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
6
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
7
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
8
+ _Object$defineProperty(exports, "__esModule", {
9
+ value: true
10
+ });
11
+ exports["default"] = void 0;
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
13
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
14
+ var _react = _interopRequireWildcard(require("react"));
15
+ var _hooks = require("../../hooks");
16
+ var _index = require("../../index");
17
+ var _react2 = require("@emotion/react");
18
+ var _excluded = ["linkProps", "logo"];
19
+ 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); }
20
+ 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; }
21
+ var NavSideBarHeader = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
22
+ var linkProps = props.linkProps,
23
+ logo = props.logo,
24
+ others = (0, _objectWithoutProperties2["default"])(props, _excluded);
25
+ var NavSideBarHeaderRef = (0, _hooks.useLocalOrForwardRef)(ref);
26
+ return (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({
27
+ p: "md"
28
+ }, others, {
29
+ ref: NavSideBarHeaderRef
30
+ }), (0, _react2.jsx)(_index.Link, linkProps, logo));
31
+ });
32
+ var _default = NavSideBarHeader;
33
+ exports["default"] = _default;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { NavSideBarItemProps } from '../../types';
3
+ declare const NavSideBarItem: (props: NavSideBarItemProps) => React.JSX.Element;
4
+ export default NavSideBarItem;
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
5
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
6
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
7
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
8
+ _Object$defineProperty(exports, "__esModule", {
9
+ value: true
10
+ });
11
+ exports["default"] = void 0;
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
13
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
14
+ var _react = _interopRequireWildcard(require("react"));
15
+ var _reactAria = require("react-aria");
16
+ var _interactions = require("@react-aria/interactions");
17
+ var _NavBarContext = require("../../context/NavBarContext");
18
+ var _hooks = require("../../hooks");
19
+ var _index = require("../../index");
20
+ var _react2 = require("@emotion/react");
21
+ var _excluded = ["children", "icon", "className", "id", "onPress", "customIcon", "iconProps", "customIconProps"];
22
+ 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); }
23
+ 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; }
24
+ var NavSideBarItem = function NavSideBarItem(props) {
25
+ var children = props.children,
26
+ linkProps = props.linkProps;
27
+ if (linkProps && linkProps !== null && linkProps !== void 0 && linkProps.href) {
28
+ return (0, _react2.jsx)(_index.Link, linkProps, (0, _react2.jsx)(ChildWrapper, props, children));
29
+ }
30
+ return (0, _react2.jsx)(_index.Button, {
31
+ variant: "link",
32
+ sx: {
33
+ width: '100%',
34
+ display: 'block'
35
+ }
36
+ }, (0, _react2.jsx)(ChildWrapper, props, children));
37
+ };
38
+ var ChildWrapper = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
39
+ var children = props.children,
40
+ icon = props.icon,
41
+ className = props.className,
42
+ key = props.id,
43
+ onPressCallback = props.onPress,
44
+ customIcon = props.customIcon,
45
+ iconProps = props.iconProps,
46
+ customIconProps = props.customIconProps,
47
+ others = (0, _objectWithoutProperties2["default"])(props, _excluded);
48
+ var navItemRef = (0, _hooks.useLocalOrForwardRef)(ref);
49
+ var _useHover = (0, _interactions.useHover)({}),
50
+ hoverProps = _useHover.hoverProps,
51
+ isHovered = _useHover.isHovered;
52
+ var _useFocusRing = (0, _reactAria.useFocusRing)({
53
+ within: true
54
+ }),
55
+ focusWithinProps = _useFocusRing.focusProps;
56
+ var _useFocusRing2 = (0, _reactAria.useFocusRing)(),
57
+ focusProps = _useFocusRing2.focusProps,
58
+ isFocusVisible = _useFocusRing2.isFocusVisible;
59
+ var state = (0, _NavBarContext.useNavBarContext)();
60
+ var isSelected = state.selectedKey === key;
61
+ var _useNavBarPress = (0, _hooks.useNavBarPress)({
62
+ key: key,
63
+ onPressCallback: onPressCallback
64
+ }, state),
65
+ onNavPress = _useNavBarPress.onNavPress;
66
+ var _usePress = (0, _interactions.usePress)({
67
+ ref: navItemRef,
68
+ onPress: onNavPress
69
+ }),
70
+ pressProps = _usePress.pressProps,
71
+ isPressed = _usePress.isPressed;
72
+ var mergedProps = (0, _reactAria.mergeProps)(pressProps, hoverProps, focusWithinProps, focusProps, others);
73
+ var _useStatusClasses = (0, _hooks.useStatusClasses)(className, {
74
+ isPressed: isPressed,
75
+ isHovered: isHovered,
76
+ isSelected: isSelected,
77
+ isFocused: isFocusVisible
78
+ }),
79
+ classNames = _useStatusClasses.classNames;
80
+ return (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({
81
+ id: key,
82
+ variant: state.navStyles.navBarItem,
83
+ isRow: true,
84
+ alignItems: "center",
85
+ className: classNames,
86
+ ref: navItemRef
87
+ }, mergedProps, {
88
+ sx: {
89
+ flexGrow: 0
90
+ },
91
+ role: "none"
92
+ }), icon && (0, _react2.jsx)(_index.Icon, (0, _extends2["default"])({
93
+ icon: icon,
94
+ title: {
95
+ name: children
96
+ },
97
+ size: state.navStyles.navBarItemHeaderIconSize,
98
+ variant: isSelected ? state.navStyles.navBarItemIconSelected : state.navStyles.navBarItemIcon
99
+ }, iconProps)), (0, _react2.jsx)(_index.Text, {
100
+ variant: state.navStyles.navBarItemText
101
+ }, children), customIcon && (0, _react2.jsx)(_index.Icon, (0, _extends2["default"])({
102
+ icon: customIcon,
103
+ size: state.navStyles.navBarItemHeaderIconSize,
104
+ variant: isSelected ? state.navStyles.navBarItemCustomIconSelected : state.navStyles.navBarItemCustomIcon
105
+ }, customIconProps, {
106
+ title: {
107
+ name: 'Action Icon'
108
+ }
109
+ })));
110
+ });
111
+ var _default = NavSideBarItem;
112
+ exports["default"] = _default;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { NavSideBarSectionProps } from '../../types';
3
+ declare const NavSideBarSection: React.ForwardRefExoticComponent<NavSideBarSectionProps & React.RefAttributes<HTMLUListElement>>;
4
+ export default NavSideBarSection;
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
5
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
6
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
7
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
8
+ _Object$defineProperty(exports, "__esModule", {
9
+ value: true
10
+ });
11
+ exports["default"] = void 0;
12
+ var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
13
+ var _isArray = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/is-array"));
14
+ var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
15
+ var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
16
+ var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
17
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
18
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
19
+ var _react = _interopRequireWildcard(require("react"));
20
+ var _focus = require("@react-aria/focus");
21
+ var _interactions = require("@react-aria/interactions");
22
+ var _NavBarContext = require("../../context/NavBarContext");
23
+ var _index = require("../../index");
24
+ var _NavSideBarSectionHeader = _interopRequireDefault(require("./NavSideBarSectionHeader"));
25
+ var _react2 = require("@emotion/react");
26
+ var _excluded = ["children", "title", "icon", "id", "onKeyDown", "headerProps"];
27
+ 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); }
28
+ 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; }
29
+ var NavSideBarSection = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
30
+ var children = props.children,
31
+ title = props.title,
32
+ icon = props.icon,
33
+ id = props.id,
34
+ onKeyDownProp = props.onKeyDown,
35
+ headerProps = props.headerProps,
36
+ others = (0, _objectWithoutProperties2["default"])(props, _excluded);
37
+ var navBarState = (0, _NavBarContext.useNavBarContext)();
38
+ var isAutoСollapsible = navBarState.isAutoСollapsible,
39
+ expandedKeys = navBarState.expandedKeys,
40
+ setExpandedKeys = navBarState.setExpandedKeys;
41
+ var isExpanded = (0, _includes["default"])(expandedKeys).call(expandedKeys, id);
42
+ var firstChildKey = (0, _isArray["default"])(children) && children.length && children[0].key !== undefined ? children[0].key : null;
43
+ var lastChildKey = (0, _isArray["default"])(children) && children.length && children[children.length - 1].key !== undefined ? children[children.length - 1].key : null;
44
+ var onExpandedChange = function onExpandedChange(isOpen) {
45
+ var newArray;
46
+ if (isOpen) {
47
+ var _context;
48
+ newArray = isAutoСollapsible ? [id] : (0, _concat["default"])(_context = []).call(_context, expandedKeys, [id]);
49
+ } else {
50
+ newArray = (0, _filter["default"])(expandedKeys).call(expandedKeys, function (thisKey) {
51
+ return thisKey !== id;
52
+ });
53
+ }
54
+ setExpandedKeys(newArray);
55
+ };
56
+ var focusManager = (0, _focus.useFocusManager)();
57
+ var _onKeyDown = function onKeyDown(e, childKey) {
58
+ var _e$target;
59
+ switch (e.which) {
60
+ case 37:
61
+ case 38:
62
+ if (firstChildKey && childKey !== firstChildKey) {
63
+ focusManager.focusPrevious();
64
+ }
65
+ e.preventDefault();
66
+ break;
67
+ case 39:
68
+ case 40:
69
+ if (lastChildKey && childKey !== lastChildKey) {
70
+ focusManager.focusNext();
71
+ }
72
+ e.preventDefault();
73
+ break;
74
+ case 27:
75
+ onExpandedChange(false);
76
+ break;
77
+ case 32:
78
+ if (childKey && (_e$target = e.target) !== null && _e$target !== void 0 && _e$target.href) {
79
+ e.target.click();
80
+ }
81
+ break;
82
+ default:
83
+ break;
84
+ }
85
+ if (onKeyDownProp) {
86
+ onKeyDownProp(e);
87
+ }
88
+ };
89
+ var _useKeyboard = (0, _interactions.useKeyboard)({
90
+ onKeyDown: function onKeyDown(e) {
91
+ _onKeyDown(e, undefined);
92
+ e.continuePropagation();
93
+ }
94
+ }),
95
+ keyboardProps = _useKeyboard.keyboardProps;
96
+ var expendedBoxId = "expanded-container-".concat(id);
97
+ return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_NavSideBarSectionHeader["default"], (0, _extends2["default"])({
98
+ items: children,
99
+ id: id,
100
+ "aria-controls": isExpanded ? expendedBoxId : undefined,
101
+ icon: icon
102
+ }, keyboardProps, {
103
+ onExpandedChange: onExpandedChange
104
+ }, headerProps), title), isExpanded && (0, _react2.jsx)(_index.Box, {
105
+ id: expendedBoxId,
106
+ role: "region"
107
+ }, (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({
108
+ as: "ul",
109
+ ref: ref,
110
+ variant: navBarState.navStyles.navBarSectionList
111
+ }, others), (0, _map["default"])(_react.Children).call(_react.Children, children, function (child) {
112
+ return (0, _react2.jsx)(_index.Box, {
113
+ as: "li",
114
+ variant: navBarState.navStyles.navBarItemHeaderListItem
115
+ }, /*#__PURE__*/_react["default"].isValidElement(child) ? /*#__PURE__*/_react["default"].cloneElement(child, {
116
+ onKeyDown: _onKeyDown,
117
+ id: child.key
118
+ }) : child);
119
+ }))));
120
+ });
121
+ var _default = NavSideBarSection;
122
+ exports["default"] = _default;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { NavSideBarSectionHeaderProps } from '../../types';
3
+ declare const NavSideBarSectionHeader: (props: NavSideBarSectionHeaderProps) => React.JSX.Element;
4
+ export default NavSideBarSectionHeader;