@stack-spot/portal-layout 2.9.2 → 2.11.0
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 -0
- package/dist/components/menu/MenuSectionGroup.d.ts +3 -0
- package/dist/components/menu/MenuSectionGroup.d.ts.map +1 -0
- package/dist/components/menu/MenuSectionGroup.js +121 -0
- package/dist/components/menu/MenuSectionGroup.js.map +1 -0
- package/dist/components/menu/MenuSections.d.ts.map +1 -1
- package/dist/components/menu/MenuSections.js +35 -13
- package/dist/components/menu/MenuSections.js.map +1 -1
- package/dist/components/menu/types.d.ts +12 -0
- package/dist/components/menu/types.d.ts.map +1 -1
- package/dist/layout.css +6 -5
- package/package.json +2 -2
- package/src/components/menu/MenuSectionGroup.tsx +121 -0
- package/src/components/menu/MenuSections.tsx +101 -24
- package/src/components/menu/types.ts +12 -0
- package/src/layout.css +6 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.11.0](https://github.com/stack-spot/portal-commons/compare/portal-layout@v2.10.0...portal-layout@v2.11.0) (2024-10-11)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* Feat 1943 accordion menu section ([#419](https://github.com/stack-spot/portal-commons/issues/419)) ([1a940af](https://github.com/stack-spot/portal-commons/commit/1a940af2e4c102f2c37434cbfc8bb89788b9a2f6))
|
|
9
|
+
|
|
10
|
+
## [2.10.0](https://github.com/stack-spot/portal-commons/compare/portal-layout@v2.9.2...portal-layout@v2.10.0) (2024-10-10)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* Change support option ([#414](https://github.com/stack-spot/portal-commons/issues/414)) ([1ee2a66](https://github.com/stack-spot/portal-commons/commit/1ee2a661ec220b39ba1228969f07452c6f1a731b))
|
|
16
|
+
|
|
3
17
|
## [2.9.2](https://github.com/stack-spot/portal-commons/compare/portal-layout@v2.9.1...portal-layout@v2.9.2) (2024-09-26)
|
|
4
18
|
|
|
5
19
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuSectionGroup.d.ts","sourceRoot":"","sources":["../../../src/components/menu/MenuSectionGroup.tsx"],"names":[],"mappings":";AAIA,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAoH7E,CAAA"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { theme } from '@stack-spot/portal-theme';
|
|
2
|
+
import styled from 'styled-components';
|
|
3
|
+
import { MENU_CONTENT_PADDING as PADDING } from './constants.js';
|
|
4
|
+
export const MenuSectionGroup = styled.ul `
|
|
5
|
+
padding: 0 0 0 16px;
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
visibility: hidden;
|
|
9
|
+
transition: visibility 0s 0.3s;
|
|
10
|
+
|
|
11
|
+
&.no-indentation {
|
|
12
|
+
padding: 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.item-row {
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: row;
|
|
18
|
+
gap: 8px;
|
|
19
|
+
align-items: center;
|
|
20
|
+
|
|
21
|
+
&.root {
|
|
22
|
+
padding: 0 16px;
|
|
23
|
+
margin-top: 16px;
|
|
24
|
+
border-radius: 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.label {
|
|
28
|
+
flex: 1;
|
|
29
|
+
&.hidden, &.ellipsis {
|
|
30
|
+
white-space: nowrap;
|
|
31
|
+
overflow: hidden;
|
|
32
|
+
}
|
|
33
|
+
&.ellipsis {
|
|
34
|
+
text-overflow: ellipsis;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
li a {
|
|
40
|
+
position: relative;
|
|
41
|
+
height: 0;
|
|
42
|
+
overflow: hidden;
|
|
43
|
+
transition: height 0.3s, background-color 0.2s;
|
|
44
|
+
|
|
45
|
+
&:hover {
|
|
46
|
+
background-color: ${theme.color.light['500']};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
&.action {
|
|
50
|
+
&:before {
|
|
51
|
+
content: '';
|
|
52
|
+
position: absolute;
|
|
53
|
+
left: 2px;
|
|
54
|
+
width: 2px;
|
|
55
|
+
height: 0;
|
|
56
|
+
background: inherit;
|
|
57
|
+
transition: height 0.2s;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
&.active {
|
|
61
|
+
|
|
62
|
+
&:hover {
|
|
63
|
+
background-color: transparent;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
&:before {
|
|
67
|
+
background: ${theme.color.primary['500']};
|
|
68
|
+
height: 24px;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
&:not(.active):hover:before {
|
|
73
|
+
background: ${theme.color.light.contrastText};
|
|
74
|
+
height: 24px;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.chevron {
|
|
79
|
+
transition: transform 0.5s;
|
|
80
|
+
&:not(.open) {
|
|
81
|
+
transform: rotate(180deg);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.item-row-title {
|
|
86
|
+
opacity: 0.7;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
&.open {
|
|
91
|
+
visibility: visible;
|
|
92
|
+
transition: unset;
|
|
93
|
+
& > li > a {
|
|
94
|
+
height: 56px;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
&:not(.open) &.open > li > a {
|
|
99
|
+
height: 0;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
&.root {
|
|
103
|
+
/* margin-bottom: ${PADDING}px; */
|
|
104
|
+
|
|
105
|
+
& > li {
|
|
106
|
+
.group-title {
|
|
107
|
+
margin-left: ${PADDING}px;
|
|
108
|
+
margin-bottom: 5px;
|
|
109
|
+
margin-top: 40px;
|
|
110
|
+
display: block;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
&:first-child {
|
|
114
|
+
.group-title {
|
|
115
|
+
margin-top: 0;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
`;
|
|
121
|
+
//# sourceMappingURL=MenuSectionGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuSectionGroup.js","sourceRoot":"","sources":["../../../src/components/menu/MenuSectionGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,MAAM,MAAM,mBAAmB,CAAA;AACtC,OAAO,EAAE,oBAAoB,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAE7D,MAAM,CAAC,MAAM,gBAAgB,GAAqD,MAAM,CAAC,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA0CjE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;wBAqB1B,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;;;;;;sBAM5B,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA8B5B,OAAO;;;;uBAIR,OAAO;;;;;;;;;;;;;CAa7B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuSections.d.ts","sourceRoot":"","sources":["../../../src/components/menu/MenuSections.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MenuSections.d.ts","sourceRoot":"","sources":["../../../src/components/menu/MenuSections.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,SAAS,EAAe,MAAM,SAAS,CAAA;AAwChD;;GAEG;AACH,wBAAgB,sBAAsB,SAOrC;AA2ID;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,2BAAiC,SAAS,4CAyHlE,CAAA"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { Flex, IconBox, Text } from '@citric/core';
|
|
3
|
-
import { ChevronRight, Cog, Collapse, Expand,
|
|
2
|
+
import { Divider, Flex, IconBox, Text } from '@citric/core';
|
|
3
|
+
import { ChevronRight, Cog, Collapse, Expand, MobileComments, ChevronUpFill } from '@citric/icons';
|
|
4
4
|
import { useKeyboardControls } from '@stack-spot/portal-components';
|
|
5
5
|
import { useAnchorTag } from '@stack-spot/portal-components/anchor';
|
|
6
|
+
import { listToClass } from '@stack-spot/portal-theme';
|
|
6
7
|
import { interpolate, useTranslate } from '@stack-spot/portal-translate';
|
|
7
8
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
8
9
|
import { elementIds, getLayoutElements } from '../../elements.js';
|
|
9
10
|
import { StarFillWithGradient } from '../../svg/StarFillWithGradient.js';
|
|
10
11
|
import { isLessThan30Days } from '../Rate/hook.js';
|
|
11
12
|
import { MenuContent } from './MenuContent.js';
|
|
13
|
+
import { MenuSectionGroup } from './MenuSectionGroup.js';
|
|
12
14
|
/**
|
|
13
15
|
* Amount of time to wait before hiding the menu overlay once the mouse leaves its area.
|
|
14
16
|
*/
|
|
@@ -90,7 +92,7 @@ function isMenuContentVisible() {
|
|
|
90
92
|
* @param props React props for the component {@link MenuSection} & { id, setCurrentOverlay }. Id identifies the current section and
|
|
91
93
|
* setCurrentOverlay controls the overlay (preview) content.
|
|
92
94
|
*/
|
|
93
|
-
const Section = ({ icon, label, href, target, onClick, active, content, customContent, setCurrentOverlay,
|
|
95
|
+
const Section = ({ icon, label, href, target, onClick, active, content, customContent, setCurrentOverlay, hasContent, id, }) => {
|
|
94
96
|
const Link = useAnchorTag();
|
|
95
97
|
const contentToRender = typeof content === 'function' ? content() : content;
|
|
96
98
|
const t = useTranslate(dictionary);
|
|
@@ -119,12 +121,12 @@ const Section = ({ icon, label, href, target, onClick, active, content, customCo
|
|
|
119
121
|
hideOverlayImmediately();
|
|
120
122
|
}
|
|
121
123
|
const labelText = typeof label === 'string' ? label : label.id;
|
|
122
|
-
return (_jsxs(
|
|
124
|
+
return (_jsxs(_Fragment, { children: [_jsx(Link, { href: href, target: target, onClick: click, onMouseEnter: prepareShowOverlay, onMouseLeave: () => shouldShowOverlay() && hideOverlay(), title: labelText, "aria-label": labelText, onKeyDown: onClick ? e => e.key === 'Enter' && onClick() : undefined, ...(active ? { 'aria-current': 'page' } : undefined), ...(!href ? { 'tabIndex': 0 } : undefined), children: _jsxs(Flex, { alignItems: "center", justifyContent: "center", px: 5, children: [_jsx(IconBox, { children: icon }), typeof label === 'string' ? _jsx(Text, { appearance: "microtext1", className: "section-label", ml: 3, children: label }) : label.element] }) }), shouldShowOverlay() &&
|
|
123
125
|
_jsx(IconBox, { size: "sm", className: "section-submenu-icon", as: "button", "aria-label": interpolate(t.menuOptions, label), "aria-controls": MENU_OVERLAY_ID, "aria-expanded": false, onKeyDown: (event) => {
|
|
124
126
|
if (event.key === 'Enter') {
|
|
125
127
|
prepareShowOverlay(event);
|
|
126
128
|
}
|
|
127
|
-
}, children: _jsx(ChevronRight, {}) })] }
|
|
129
|
+
}, children: _jsx(ChevronRight, {}) })] }));
|
|
128
130
|
};
|
|
129
131
|
/**
|
|
130
132
|
* Renders the overlay content.
|
|
@@ -158,15 +160,18 @@ export const MenuSections = ({ sections = [], ...props }) => {
|
|
|
158
160
|
const t = useTranslate(dictionary);
|
|
159
161
|
// this is a mock state only used to force an update on the component.
|
|
160
162
|
const [_, setUpdate] = useState(0);
|
|
163
|
+
const [isMenuCollapsed, setIsMenuCollapsed] = useState(false);
|
|
161
164
|
const toggleMenu = useCallback((hasContent) => {
|
|
162
165
|
const layout = document.getElementById('layout');
|
|
163
166
|
if (!layout)
|
|
164
167
|
return;
|
|
165
168
|
if (layout.classList.contains('menu-compact')) {
|
|
166
169
|
layout.classList.remove('menu-compact');
|
|
170
|
+
setIsMenuCollapsed(false);
|
|
167
171
|
}
|
|
168
172
|
else {
|
|
169
173
|
layout.classList.add('menu-compact');
|
|
174
|
+
setIsMenuCollapsed(true);
|
|
170
175
|
}
|
|
171
176
|
if (hasContent) {
|
|
172
177
|
if (layout.classList.contains('menu-content-visible')) {
|
|
@@ -180,12 +185,16 @@ export const MenuSections = ({ sections = [], ...props }) => {
|
|
|
180
185
|
}, []);
|
|
181
186
|
// the current overlay showing, when the user hovers the section icon. This is the index of the item in the sections array.
|
|
182
187
|
const [currentOverlay, setCurrentOverlay] = useState();
|
|
188
|
+
const sectionItemsOverlay = useMemo(() => sections.flatMap((s) => 'children' in s ? s.children?.map((c) => c) : s), [sections]);
|
|
183
189
|
const sectionItems = useMemo(() => sections.reduce((result, s, i) => s.hidden
|
|
184
190
|
? result
|
|
185
191
|
: [
|
|
186
192
|
...result,
|
|
187
|
-
_jsx(
|
|
188
|
-
|
|
193
|
+
_jsx("li", { role: "menuitem", title: s.label, className: `section-submenu no-indentation ${s.className || ''} ${s.active ? 'active' : undefined}`, children: 'children' in s ?
|
|
194
|
+
_jsx(CollapsibleSection, { listItems: sectionItemsOverlay, isMenuCollapsed: isMenuCollapsed, ...s, setCurrentOverlay: setCurrentOverlay })
|
|
195
|
+
:
|
|
196
|
+
_jsx(Section, { id: sectionItemsOverlay.findIndex((sio) => sio?.label === s.label), ...s, setCurrentOverlay: setCurrentOverlay, hasContent: !!props.content || !!props.customContent }, i) }, s.label),
|
|
197
|
+
], []), [sections, isMenuCollapsed]);
|
|
189
198
|
function onPressEscape() {
|
|
190
199
|
getAccessibilityButtonOfSectionWithActiveOverlay()?.focus();
|
|
191
200
|
hideOverlayImmediately();
|
|
@@ -206,19 +215,20 @@ export const MenuSections = ({ sections = [], ...props }) => {
|
|
|
206
215
|
function renderMenuOverlay() {
|
|
207
216
|
if (currentOverlay === undefined)
|
|
208
217
|
return null;
|
|
209
|
-
const shouldRenderMenuContentInstead = !isMenuContentVisible() &&
|
|
218
|
+
const shouldRenderMenuContentInstead = !isMenuContentVisible() && sectionItemsOverlay[currentOverlay]?.active &&
|
|
210
219
|
(!!props.content || !!props.customContent);
|
|
211
220
|
return shouldRenderMenuContentInstead
|
|
212
221
|
? _jsx(OverlayRenderer, { content: props.content, customContent: props.customContent }, 'contentKey' in props ? props.contentKey : undefined)
|
|
213
|
-
: _jsx(OverlayRenderer, { content:
|
|
222
|
+
: _jsx(OverlayRenderer, { content: sectionItemsOverlay[currentOverlay]?.content, customContent: sectionItemsOverlay[currentOverlay]?.customContent }, currentOverlay);
|
|
214
223
|
}
|
|
215
|
-
return (_jsxs(_Fragment, { children: [_jsx(
|
|
224
|
+
return (_jsxs(_Fragment, { children: [_jsx(MenuSectionGroup, { className: "open root no-indentation", children: sectionItems }), _jsxs(Flex, { mb: 7, alignItems: "center", children: [_jsx(RateAndContactUsItem, { ...props }), _jsxs("button", { role: "menuitem", className: "toggle sections-footer", onClick: () => toggleMenu(!!props.content || !!props.customContent), title: t.toggle, children: [_jsxs(IconBox, { children: [_jsx(Expand, { className: "expand" }), _jsx(Collapse, { className: "collapse" })] }), _jsx(Text, { appearance: "microtext1", ml: 8, className: "collapse", colorScheme: "light.contrastText", children: t.hide })] }), (props.settings?.show) &&
|
|
216
225
|
_jsxs(Link, { href: props.settings?.href, onClick: props.settings?.onClick, className: "sections-footer toggle", ...(props.settings.active ? { 'aria-current': 'page' } : undefined), children: [_jsx(IconBox, { "aria-label": t.settingsIcon, children: _jsx(Cog, {}) }), _jsx(Text, { appearance: "microtext1", ml: 8, className: "collapse", children: t.settings })] })] }), _jsx("div", { id: MENU_OVERLAY_ID, onMouseEnter: showOverlay, onMouseLeave: hideOverlay, ref: overlayRef, children: renderMenuOverlay() })] }));
|
|
217
226
|
};
|
|
218
227
|
const RateAndContactUsItem = ({ ...props }) => {
|
|
219
228
|
const t = useTranslate(dictionary);
|
|
220
229
|
const alreadyAnswered = localStorage.getItem('RATED_US_IN');
|
|
221
230
|
const hasAnsweredLess30Days = alreadyAnswered ? isLessThan30Days(new Date(+alreadyAnswered), new Date(Date.now())) : false;
|
|
231
|
+
const Link = useAnchorTag();
|
|
222
232
|
//This effect is only used to remove from local storage unused keys from
|
|
223
233
|
//previous rate us and contact us versions. We do not want to fill the users storage
|
|
224
234
|
//with things that are not used anymore.
|
|
@@ -229,7 +239,19 @@ const RateAndContactUsItem = ({ ...props }) => {
|
|
|
229
239
|
}, []);
|
|
230
240
|
return _jsxs(_Fragment, { children: [(props.rateUs?.show && !hasAnsweredLess30Days) &&
|
|
231
241
|
_jsxs("button", { role: "menuitem", className: "toggle sections-footer", onClick: props.rateUs?.onClick, ...(props.rateUs.active ? { 'aria-current': 'page' } : undefined), children: [_jsx(IconBox, { "aria-label": t.rateUsIcon, sx: { paddingTop: '2px' }, children: _jsx(StarFillWithGradient, { id: "svg-icon", className: "gradient-svg rotate-icon" }) }), _jsx(Text, { appearance: "microtext1", ml: 8, sx: { marginTop: '3px' }, className: "collapse gradient grow-shrink", colorScheme: "light.contrastText", children: t.rateUs })] }), (props.contactUs?.show) &&
|
|
232
|
-
_jsxs(
|
|
242
|
+
_jsxs(Link, { href: props.contactUs?.href, className: "toggle sections-footer", onClick: props.contactUs?.onClick, ...(props.contactUs.active ? { 'aria-current': 'page' } : undefined), target: props.contactUs?.target, children: [_jsx(IconBox, { "aria-label": t.contactIcon, children: _jsx(MobileComments, {}) }), _jsx(Text, { appearance: "microtext1", ml: 8, sx: { marginTop: '3px' }, className: "collapse", colorScheme: "light.contrastText", children: t.contactUs })] })] });
|
|
243
|
+
};
|
|
244
|
+
/**
|
|
245
|
+
* A menu item that is actually a subgroup and can be collapsed/expanded.
|
|
246
|
+
* @param props the props for the component {@link MenuSectionGroup} & { root: boolean }.
|
|
247
|
+
|
|
248
|
+
*/
|
|
249
|
+
const CollapsibleSection = ({ label, open: initialValue, children, icon, setCurrentOverlay, listItems, isMenuCollapsed = true }) => {
|
|
250
|
+
const [open, setOpen] = useState(initialValue || false);
|
|
251
|
+
const menuGroupId = `menuGroup${label}`;
|
|
252
|
+
const items = useMemo(() => children?.filter(i => !i.hidden).map((c) => (_jsx("li", { role: "menuitem", title: c.label, className: `section-submenu ${c.className} ${c.active ? 'active' : ''}`, children: _jsx(Section, { id: listItems?.findIndex((item) => item?.label === c.label), ...c, hasContent: false, setCurrentOverlay: setCurrentOverlay }, c.label) }, c.label))), [children]);
|
|
253
|
+
return (_jsxs(_Fragment, { children: [isMenuCollapsed ? _jsx(Divider, {}) :
|
|
254
|
+
_jsx("a", { onClick: () => setOpen(!open), onKeyDown: e => e.key === 'Enter' && setOpen(!open), className: listToClass(['item-row']), tabIndex: 0, "aria-controls": menuGroupId, "aria-expanded": open, children: _jsxs(Flex, { alignItems: "center", justifyContent: "center", px: 6, children: [icon, _jsx(Text, { appearance: "microtext1", className: "section-label", ml: 3, colorScheme: "light.contrastText", children: label }), _jsx(IconBox, { sx: { ml: '14' }, children: _jsx(ChevronUpFill, { className: listToClass(['chevron', open ? 'open' : '']) }) })] }) }), _jsx(MenuSectionGroup, { id: menuGroupId, className: `${isMenuCollapsed || open ? 'open' : ''} root no-indentation`, "aria-hidden": !open, children: items })] }));
|
|
233
255
|
};
|
|
234
256
|
const dictionary = {
|
|
235
257
|
en: {
|
|
@@ -238,7 +260,7 @@ const dictionary = {
|
|
|
238
260
|
settings: 'Settings',
|
|
239
261
|
settingsIcon: 'Settings icon',
|
|
240
262
|
hide: 'Hide',
|
|
241
|
-
contactUs: '
|
|
263
|
+
contactUs: 'Support',
|
|
242
264
|
contactIcon: 'Contact icon',
|
|
243
265
|
rateUs: 'Rate us',
|
|
244
266
|
rateUsIcon: 'Rate us icon',
|
|
@@ -249,7 +271,7 @@ const dictionary = {
|
|
|
249
271
|
settings: 'Configurações',
|
|
250
272
|
settingsIcon: 'Ícone de configurações',
|
|
251
273
|
hide: 'Esconder',
|
|
252
|
-
contactUs: '
|
|
274
|
+
contactUs: 'Suporte',
|
|
253
275
|
contactIcon: 'Ícone de contato',
|
|
254
276
|
rateUs: 'Avalie-nos',
|
|
255
277
|
rateUsIcon: 'Avalie-nos icon',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuSections.js","sourceRoot":"","sources":["../../../src/components/menu/MenuSections.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MenuSections.js","sourceRoot":"","sources":["../../../src/components/menu/MenuSections.tsx"],"names":[],"mappings":"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"}
|
|
@@ -134,6 +134,14 @@ export interface MenuSection extends Action {
|
|
|
134
134
|
*/
|
|
135
135
|
className?: string;
|
|
136
136
|
hidden?: boolean;
|
|
137
|
+
/**
|
|
138
|
+
* The items in this group. This property will create a accordion to include the items
|
|
139
|
+
*/
|
|
140
|
+
children?: MenuSection[];
|
|
141
|
+
/**
|
|
142
|
+
* initial value to accordion when using children prop
|
|
143
|
+
*/
|
|
144
|
+
open?: boolean;
|
|
137
145
|
}
|
|
138
146
|
interface BaseMenuProps {
|
|
139
147
|
/**
|
|
@@ -219,6 +227,10 @@ interface BaseMenuProps {
|
|
|
219
227
|
* A css class to pass to the button.
|
|
220
228
|
*/
|
|
221
229
|
className?: string;
|
|
230
|
+
/**
|
|
231
|
+
* Target of the URL to open.
|
|
232
|
+
*/
|
|
233
|
+
target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];
|
|
222
234
|
};
|
|
223
235
|
}
|
|
224
236
|
export interface MenuPropsWithStaticContent extends BaseMenuProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/menu/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,6CAA6C,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE/C,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC1B;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;CAC3C;AAED,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,UAAW,SAAQ,MAAM,EAAE,YAAY;IACtD;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAA;AAE7C,MAAM,WAAW,YAAa,SAAQ,MAAM;IAC1C;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B;;OAEG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB;;OAEG;IACH,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,MAAM;IACzC;;OAEG;IACH,IAAI,EAAE,YAAY,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,kBAAkB,GAAG,CAAC,MAAM,kBAAkB,CAAC,CAAC;IAC1D;;;;;OAKG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/menu/types.ts"],"names":[],"mappings":"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"}
|
package/dist/layout.css
CHANGED
|
@@ -180,18 +180,20 @@ body {
|
|
|
180
180
|
background: transparent;
|
|
181
181
|
border: none;
|
|
182
182
|
width: var(--menu-sections-width);
|
|
183
|
-
height: var(--menu-item-height);
|
|
184
183
|
display: flex;
|
|
185
184
|
flex-direction: column;
|
|
186
185
|
gap: 10px;
|
|
187
186
|
align-items: flex-start;
|
|
188
187
|
justify-content: center;
|
|
189
|
-
transition: background-color 0.2s;
|
|
190
188
|
cursor: pointer;
|
|
191
189
|
position: relative;
|
|
192
190
|
z-index: 2;
|
|
193
191
|
}
|
|
194
192
|
|
|
193
|
+
#menuSections .toggle.sections-footer {
|
|
194
|
+
height: auto;
|
|
195
|
+
}
|
|
196
|
+
|
|
195
197
|
.gradient-svg {
|
|
196
198
|
width: 100px;
|
|
197
199
|
height: 100px;
|
|
@@ -261,9 +263,8 @@ body {
|
|
|
261
263
|
}
|
|
262
264
|
|
|
263
265
|
#menuSections .toggle:hover,
|
|
264
|
-
#menuSections > ul li a:hover
|
|
265
|
-
|
|
266
|
-
#menuSections > ul li a:focus {
|
|
266
|
+
#menuSections > ul li a:hover
|
|
267
|
+
{
|
|
267
268
|
background: var(--light-500);
|
|
268
269
|
border-right: 1px solid var(--light-300);
|
|
269
270
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stack-spot/portal-layout",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.11.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
},
|
|
12
12
|
"peerDependencies": {
|
|
13
13
|
"@citric/core": "^6.0.0",
|
|
14
|
-
"@citric/icons": "^5.
|
|
14
|
+
"@citric/icons": "^5.9.0",
|
|
15
15
|
"@citric/ui": "^6.1.1",
|
|
16
16
|
"@stack-spot/portal-theme": "^1.0.0",
|
|
17
17
|
"@stack-spot/portal-translate": "^1.0.0",
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { theme } from '@stack-spot/portal-theme'
|
|
2
|
+
import styled from 'styled-components'
|
|
3
|
+
import { MENU_CONTENT_PADDING as PADDING } from './constants'
|
|
4
|
+
|
|
5
|
+
export const MenuSectionGroup: React.FC<React.HTMLAttributes<HTMLUListElement>> = styled.ul`
|
|
6
|
+
padding: 0 0 0 16px;
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
visibility: hidden;
|
|
10
|
+
transition: visibility 0s 0.3s;
|
|
11
|
+
|
|
12
|
+
&.no-indentation {
|
|
13
|
+
padding: 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.item-row {
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-direction: row;
|
|
19
|
+
gap: 8px;
|
|
20
|
+
align-items: center;
|
|
21
|
+
|
|
22
|
+
&.root {
|
|
23
|
+
padding: 0 16px;
|
|
24
|
+
margin-top: 16px;
|
|
25
|
+
border-radius: 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.label {
|
|
29
|
+
flex: 1;
|
|
30
|
+
&.hidden, &.ellipsis {
|
|
31
|
+
white-space: nowrap;
|
|
32
|
+
overflow: hidden;
|
|
33
|
+
}
|
|
34
|
+
&.ellipsis {
|
|
35
|
+
text-overflow: ellipsis;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
li a {
|
|
41
|
+
position: relative;
|
|
42
|
+
height: 0;
|
|
43
|
+
overflow: hidden;
|
|
44
|
+
transition: height 0.3s, background-color 0.2s;
|
|
45
|
+
|
|
46
|
+
&:hover {
|
|
47
|
+
background-color: ${theme.color.light['500']};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&.action {
|
|
51
|
+
&:before {
|
|
52
|
+
content: '';
|
|
53
|
+
position: absolute;
|
|
54
|
+
left: 2px;
|
|
55
|
+
width: 2px;
|
|
56
|
+
height: 0;
|
|
57
|
+
background: inherit;
|
|
58
|
+
transition: height 0.2s;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
&.active {
|
|
62
|
+
|
|
63
|
+
&:hover {
|
|
64
|
+
background-color: transparent;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
&:before {
|
|
68
|
+
background: ${theme.color.primary['500']};
|
|
69
|
+
height: 24px;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
&:not(.active):hover:before {
|
|
74
|
+
background: ${theme.color.light.contrastText};
|
|
75
|
+
height: 24px;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.chevron {
|
|
80
|
+
transition: transform 0.5s;
|
|
81
|
+
&:not(.open) {
|
|
82
|
+
transform: rotate(180deg);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.item-row-title {
|
|
87
|
+
opacity: 0.7;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
&.open {
|
|
92
|
+
visibility: visible;
|
|
93
|
+
transition: unset;
|
|
94
|
+
& > li > a {
|
|
95
|
+
height: 56px;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
&:not(.open) &.open > li > a {
|
|
100
|
+
height: 0;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
&.root {
|
|
104
|
+
/* margin-bottom: ${PADDING}px; */
|
|
105
|
+
|
|
106
|
+
& > li {
|
|
107
|
+
.group-title {
|
|
108
|
+
margin-left: ${PADDING}px;
|
|
109
|
+
margin-bottom: 5px;
|
|
110
|
+
margin-top: 40px;
|
|
111
|
+
display: block;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
&:first-child {
|
|
115
|
+
.group-title {
|
|
116
|
+
margin-top: 0;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
`
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { Flex, IconBox, Text } from '@citric/core'
|
|
2
|
-
import { ChevronRight, Cog, Collapse, Expand,
|
|
1
|
+
import { Divider, Flex, IconBox, Text } from '@citric/core'
|
|
2
|
+
import { ChevronRight, Cog, Collapse, Expand, MobileComments, ChevronUpFill } from '@citric/icons'
|
|
3
3
|
import { useKeyboardControls } from '@stack-spot/portal-components'
|
|
4
4
|
import { useAnchorTag } from '@stack-spot/portal-components/anchor'
|
|
5
|
+
import { listToClass } from '@stack-spot/portal-theme'
|
|
5
6
|
import { Dictionary, interpolate, useTranslate } from '@stack-spot/portal-translate'
|
|
6
7
|
import { useCallback, useEffect, useMemo, useState } from 'react'
|
|
7
8
|
import { elementIds, getLayoutElements } from '../../elements'
|
|
8
9
|
import { StarFillWithGradient } from '../../svg/StarFillWithGradient'
|
|
9
10
|
import { isLessThan30Days } from '../Rate/hook'
|
|
10
11
|
import { MenuContent } from './MenuContent'
|
|
12
|
+
import { MenuSectionGroup } from './MenuSectionGroup'
|
|
11
13
|
import { MenuProps, MenuSection } from './types'
|
|
12
14
|
|
|
13
15
|
/**
|
|
@@ -108,11 +110,12 @@ const Section = ({
|
|
|
108
110
|
content,
|
|
109
111
|
customContent,
|
|
110
112
|
setCurrentOverlay,
|
|
111
|
-
id,
|
|
112
113
|
hasContent,
|
|
113
|
-
|
|
114
|
+
id,
|
|
114
115
|
}: MenuSection & {
|
|
115
|
-
id: number,
|
|
116
|
+
id: number,
|
|
117
|
+
setCurrentOverlay: (id: number | undefined) => void,
|
|
118
|
+
hasContent: boolean,
|
|
116
119
|
}) => {
|
|
117
120
|
const Link = useAnchorTag()
|
|
118
121
|
const contentToRender = typeof content === 'function' ? content() : content
|
|
@@ -145,11 +148,7 @@ const Section = ({
|
|
|
145
148
|
const labelText = typeof label === 'string' ? label : label.id
|
|
146
149
|
|
|
147
150
|
return (
|
|
148
|
-
|
|
149
|
-
role="menuitem"
|
|
150
|
-
key={labelText}
|
|
151
|
-
title={labelText}
|
|
152
|
-
className={`section-submenu ${className || ''} ${active ? 'active' : ''}`}>
|
|
151
|
+
<>
|
|
153
152
|
<Link
|
|
154
153
|
href={href}
|
|
155
154
|
target={target}
|
|
@@ -181,7 +180,7 @@ const Section = ({
|
|
|
181
180
|
<ChevronRight />
|
|
182
181
|
</IconBox>
|
|
183
182
|
}
|
|
184
|
-
|
|
183
|
+
</>
|
|
185
184
|
)
|
|
186
185
|
}
|
|
187
186
|
|
|
@@ -219,14 +218,17 @@ export const MenuSections = ({ sections = [], ...props }: MenuProps) => {
|
|
|
219
218
|
const t = useTranslate(dictionary)
|
|
220
219
|
// this is a mock state only used to force an update on the component.
|
|
221
220
|
const [_, setUpdate] = useState(0)
|
|
221
|
+
const [isMenuCollapsed, setIsMenuCollapsed] = useState(false)
|
|
222
222
|
|
|
223
223
|
const toggleMenu = useCallback((hasContent: boolean) => {
|
|
224
224
|
const layout = document.getElementById('layout')
|
|
225
225
|
if (!layout) return
|
|
226
226
|
if (layout.classList.contains('menu-compact')) {
|
|
227
227
|
layout.classList.remove('menu-compact')
|
|
228
|
+
setIsMenuCollapsed(false)
|
|
228
229
|
} else {
|
|
229
230
|
layout.classList.add('menu-compact')
|
|
231
|
+
setIsMenuCollapsed(true)
|
|
230
232
|
}
|
|
231
233
|
|
|
232
234
|
if (hasContent) {
|
|
@@ -241,17 +243,33 @@ export const MenuSections = ({ sections = [], ...props }: MenuProps) => {
|
|
|
241
243
|
// the current overlay showing, when the user hovers the section icon. This is the index of the item in the sections array.
|
|
242
244
|
const [currentOverlay, setCurrentOverlay] = useState<number | undefined>()
|
|
243
245
|
|
|
246
|
+
const sectionItemsOverlay = useMemo(
|
|
247
|
+
() => sections.flatMap((s) => 'children' in s ? s.children?.map((c) => c) : s),
|
|
248
|
+
[sections],
|
|
249
|
+
)
|
|
250
|
+
|
|
244
251
|
const sectionItems = useMemo(
|
|
245
252
|
() => sections.reduce<JSX.Element[]>(
|
|
246
253
|
(result, s, i) => s.hidden
|
|
247
254
|
? result
|
|
248
255
|
: [
|
|
249
256
|
...result,
|
|
250
|
-
<
|
|
257
|
+
<li
|
|
258
|
+
role="menuitem"
|
|
259
|
+
key={s.label as string}
|
|
260
|
+
title={s.label as string}
|
|
261
|
+
className={`section-submenu no-indentation ${s.className || ''} ${s.active ? 'active' : undefined}`}>
|
|
262
|
+
{'children' in s ?
|
|
263
|
+
<CollapsibleSection listItems={sectionItemsOverlay} isMenuCollapsed={isMenuCollapsed}
|
|
264
|
+
{...s} setCurrentOverlay={setCurrentOverlay} />
|
|
265
|
+
:
|
|
266
|
+
<Section key={i} id={sectionItemsOverlay.findIndex((sio) => sio?.label === s.label)}
|
|
267
|
+
{...s} setCurrentOverlay={setCurrentOverlay} hasContent={!!props.content || !!props.customContent} />}
|
|
268
|
+
</li>,
|
|
251
269
|
],
|
|
252
270
|
[],
|
|
253
271
|
),
|
|
254
|
-
[sections],
|
|
272
|
+
[sections, isMenuCollapsed],
|
|
255
273
|
)
|
|
256
274
|
|
|
257
275
|
function onPressEscape() {
|
|
@@ -276,18 +294,18 @@ export const MenuSections = ({ sections = [], ...props }: MenuProps) => {
|
|
|
276
294
|
hook, this would cause some serious problems. */
|
|
277
295
|
function renderMenuOverlay() {
|
|
278
296
|
if (currentOverlay === undefined) return null
|
|
279
|
-
const shouldRenderMenuContentInstead = !isMenuContentVisible() &&
|
|
297
|
+
const shouldRenderMenuContentInstead = !isMenuContentVisible() && sectionItemsOverlay[currentOverlay]?.active &&
|
|
280
298
|
(!!props.content || !!props.customContent)
|
|
281
299
|
return shouldRenderMenuContentInstead
|
|
282
300
|
? <OverlayRenderer key={'contentKey' in props ? props.contentKey : undefined} content={props.content}
|
|
283
301
|
customContent={props.customContent} />
|
|
284
|
-
: <OverlayRenderer key={currentOverlay} content={
|
|
285
|
-
customContent={
|
|
302
|
+
: <OverlayRenderer key={currentOverlay} content={sectionItemsOverlay[currentOverlay]?.content}
|
|
303
|
+
customContent={sectionItemsOverlay[currentOverlay]?.customContent} />
|
|
286
304
|
}
|
|
287
305
|
|
|
288
306
|
return (
|
|
289
307
|
<>
|
|
290
|
-
<
|
|
308
|
+
<MenuSectionGroup className="open root no-indentation">{sectionItems}</MenuSectionGroup>
|
|
291
309
|
|
|
292
310
|
<Flex mb={7} alignItems="center">
|
|
293
311
|
<RateAndContactUsItem {...props} />
|
|
@@ -322,6 +340,7 @@ const RateAndContactUsItem = ({ ...props }: Omit<MenuProps, 'sections'>) => {
|
|
|
322
340
|
const t = useTranslate(dictionary)
|
|
323
341
|
const alreadyAnswered = localStorage.getItem('RATED_US_IN')
|
|
324
342
|
const hasAnsweredLess30Days = alreadyAnswered ? isLessThan30Days(new Date(+alreadyAnswered), new Date(Date.now())) : false
|
|
343
|
+
const Link = useAnchorTag()
|
|
325
344
|
|
|
326
345
|
//This effect is only used to remove from local storage unused keys from
|
|
327
346
|
//previous rate us and contact us versions. We do not want to fill the users storage
|
|
@@ -344,18 +363,76 @@ const RateAndContactUsItem = ({ ...props }: Omit<MenuProps, 'sections'>) => {
|
|
|
344
363
|
</button>
|
|
345
364
|
}
|
|
346
365
|
{(props.contactUs?.show) &&
|
|
347
|
-
<
|
|
348
|
-
{...(props.contactUs.active ? { 'aria-current': 'page' } : undefined)}>
|
|
366
|
+
<Link href={props.contactUs?.href} className="toggle sections-footer" onClick={props.contactUs?.onClick}
|
|
367
|
+
{...(props.contactUs.active ? { 'aria-current': 'page' } : undefined)} target={props.contactUs?.target}>
|
|
349
368
|
<IconBox aria-label={t.contactIcon}>
|
|
350
|
-
<
|
|
369
|
+
<MobileComments />
|
|
351
370
|
</IconBox>
|
|
352
|
-
<Text appearance="microtext1" ml={8} sx={{ marginTop: '3px' }}
|
|
371
|
+
<Text appearance="microtext1" ml={8} sx={{ marginTop: '3px' }}
|
|
353
372
|
className="collapse" colorScheme="light.contrastText">{t.contactUs}</Text>
|
|
354
|
-
</
|
|
373
|
+
</Link>
|
|
355
374
|
}
|
|
356
375
|
</>
|
|
357
376
|
}
|
|
358
377
|
|
|
378
|
+
/**
|
|
379
|
+
* A menu item that is actually a subgroup and can be collapsed/expanded.
|
|
380
|
+
* @param props the props for the component {@link MenuSectionGroup} & { root: boolean }.
|
|
381
|
+
|
|
382
|
+
*/
|
|
383
|
+
const CollapsibleSection = ({ label, open: initialValue, children, icon, setCurrentOverlay, listItems, isMenuCollapsed = true }
|
|
384
|
+
: MenuSection
|
|
385
|
+
& {setCurrentOverlay: (id: number | undefined) => void, listItems: (MenuSection | undefined)[], isMenuCollapsed?: boolean }) => {
|
|
386
|
+
|
|
387
|
+
const [open, setOpen] = useState(initialValue || false)
|
|
388
|
+
const menuGroupId = `menuGroup${label}`
|
|
389
|
+
const items = useMemo(() => children?.filter(i => !i.hidden).map(
|
|
390
|
+
(c) => (
|
|
391
|
+
<li
|
|
392
|
+
role="menuitem"
|
|
393
|
+
key={c.label as string}
|
|
394
|
+
title={c.label as string}
|
|
395
|
+
className={`section-submenu ${c.className} ${c.active ? 'active' : ''}`}>
|
|
396
|
+
<Section
|
|
397
|
+
id={listItems?.findIndex((item) => item?.label === c.label)} key={c.label as string}
|
|
398
|
+
{...c} hasContent={false} setCurrentOverlay={setCurrentOverlay} />
|
|
399
|
+
</li>
|
|
400
|
+
)),
|
|
401
|
+
[children])
|
|
402
|
+
|
|
403
|
+
return (
|
|
404
|
+
<>
|
|
405
|
+
{
|
|
406
|
+
isMenuCollapsed ? <Divider /> :
|
|
407
|
+
<a
|
|
408
|
+
onClick={() => setOpen(!open)}
|
|
409
|
+
onKeyDown={e => e.key === 'Enter' && setOpen(!open)}
|
|
410
|
+
className={listToClass(['item-row'])}
|
|
411
|
+
tabIndex={0}
|
|
412
|
+
aria-controls={menuGroupId}
|
|
413
|
+
aria-expanded={open}
|
|
414
|
+
>
|
|
415
|
+
<Flex alignItems="center" justifyContent="center" px={6}>
|
|
416
|
+
{icon}
|
|
417
|
+
<Text appearance="microtext1" className="section-label" ml={3} colorScheme="light.contrastText">
|
|
418
|
+
{label as string}
|
|
419
|
+
</Text>
|
|
420
|
+
<IconBox sx={{ ml: '14' }}>
|
|
421
|
+
<ChevronUpFill className={listToClass(['chevron', open ? 'open' : ''])} />
|
|
422
|
+
{/* <ChevronDown className={listToClass(['chevron', open ? 'open' : ''])} /> */}
|
|
423
|
+
</IconBox>
|
|
424
|
+
</Flex>
|
|
425
|
+
</a>
|
|
426
|
+
}
|
|
427
|
+
<MenuSectionGroup id={menuGroupId}
|
|
428
|
+
className={`${isMenuCollapsed || open ? 'open' : ''} root no-indentation`}
|
|
429
|
+
aria-hidden={!open}>
|
|
430
|
+
{items}
|
|
431
|
+
</MenuSectionGroup>
|
|
432
|
+
</>
|
|
433
|
+
)
|
|
434
|
+
}
|
|
435
|
+
|
|
359
436
|
const dictionary = {
|
|
360
437
|
en: {
|
|
361
438
|
toggle: 'Show or hide the menu',
|
|
@@ -363,7 +440,7 @@ const dictionary = {
|
|
|
363
440
|
settings: 'Settings',
|
|
364
441
|
settingsIcon: 'Settings icon',
|
|
365
442
|
hide: 'Hide',
|
|
366
|
-
contactUs: '
|
|
443
|
+
contactUs: 'Support',
|
|
367
444
|
contactIcon: 'Contact icon',
|
|
368
445
|
rateUs: 'Rate us',
|
|
369
446
|
rateUsIcon: 'Rate us icon',
|
|
@@ -374,7 +451,7 @@ const dictionary = {
|
|
|
374
451
|
settings: 'Configurações',
|
|
375
452
|
settingsIcon: 'Ícone de configurações',
|
|
376
453
|
hide: 'Esconder',
|
|
377
|
-
contactUs: '
|
|
454
|
+
contactUs: 'Suporte',
|
|
378
455
|
contactIcon: 'Ícone de contato',
|
|
379
456
|
rateUs: 'Avalie-nos',
|
|
380
457
|
rateUsIcon: 'Avalie-nos icon',
|
|
@@ -142,6 +142,14 @@ export interface MenuSection extends Action {
|
|
|
142
142
|
*/
|
|
143
143
|
className?: string,
|
|
144
144
|
hidden?: boolean,
|
|
145
|
+
/**
|
|
146
|
+
* The items in this group. This property will create a accordion to include the items
|
|
147
|
+
*/
|
|
148
|
+
children?: MenuSection[],
|
|
149
|
+
/**
|
|
150
|
+
* initial value to accordion when using children prop
|
|
151
|
+
*/
|
|
152
|
+
open?: boolean,
|
|
145
153
|
}
|
|
146
154
|
|
|
147
155
|
interface BaseMenuProps {
|
|
@@ -228,6 +236,10 @@ interface BaseMenuProps {
|
|
|
228
236
|
* A css class to pass to the button.
|
|
229
237
|
*/
|
|
230
238
|
className?: string,
|
|
239
|
+
/**
|
|
240
|
+
* Target of the URL to open.
|
|
241
|
+
*/
|
|
242
|
+
target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'],
|
|
231
243
|
},
|
|
232
244
|
}
|
|
233
245
|
|
package/src/layout.css
CHANGED
|
@@ -180,18 +180,20 @@ body {
|
|
|
180
180
|
background: transparent;
|
|
181
181
|
border: none;
|
|
182
182
|
width: var(--menu-sections-width);
|
|
183
|
-
height: var(--menu-item-height);
|
|
184
183
|
display: flex;
|
|
185
184
|
flex-direction: column;
|
|
186
185
|
gap: 10px;
|
|
187
186
|
align-items: flex-start;
|
|
188
187
|
justify-content: center;
|
|
189
|
-
transition: background-color 0.2s;
|
|
190
188
|
cursor: pointer;
|
|
191
189
|
position: relative;
|
|
192
190
|
z-index: 2;
|
|
193
191
|
}
|
|
194
192
|
|
|
193
|
+
#menuSections .toggle.sections-footer {
|
|
194
|
+
height: auto;
|
|
195
|
+
}
|
|
196
|
+
|
|
195
197
|
.gradient-svg {
|
|
196
198
|
width: 100px;
|
|
197
199
|
height: 100px;
|
|
@@ -261,9 +263,8 @@ body {
|
|
|
261
263
|
}
|
|
262
264
|
|
|
263
265
|
#menuSections .toggle:hover,
|
|
264
|
-
#menuSections > ul li a:hover
|
|
265
|
-
|
|
266
|
-
#menuSections > ul li a:focus {
|
|
266
|
+
#menuSections > ul li a:hover
|
|
267
|
+
{
|
|
267
268
|
background: var(--light-500);
|
|
268
269
|
border-right: 1px solid var(--light-300);
|
|
269
270
|
}
|