@dnanpm/styleguide 3.9.13 → 3.10.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/build/cjs/components/Box/Box.d.ts +4 -0
- package/build/cjs/components/Box/Box.js +1 -1
- package/build/cjs/components/Button/Button.d.ts +4 -0
- package/build/cjs/components/Button/Button.js +1 -1
- package/build/cjs/components/ButtonArrow/ButtonArrow.js +9 -2
- package/build/cjs/components/ButtonIcon/ButtonIcon.d.ts +4 -0
- package/build/cjs/components/ButtonIcon/ButtonIcon.js +49 -13
- package/build/cjs/components/Carousel/Carousel.js +4 -1
- package/build/cjs/components/Checkbox/Checkbox.js +1 -1
- package/build/cjs/components/EnergyLabel/EnergyLabel.d.ts +65 -0
- package/build/cjs/components/EnergyLabel/EnergyLabel.js +98 -0
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/BusinessMenu.js +2 -3
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/DesktopMenu.js +15 -16
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/LanguageSelector.js +1 -2
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/LinkModifier.d.ts +2 -2
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/LinkModifier.js +5 -7
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/LoginTooltip.js +3 -5
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.js +5 -5
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.js +4 -4
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.d.ts +3 -2
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.js +6 -10
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/MobileMenu.js +3 -3
- package/build/cjs/components/MainHeaderNavigation/ChildComponents/PageSearch.js +3 -5
- package/build/cjs/components/MainHeaderNavigation/MainHeaderNavigation.d.ts +5 -1
- package/build/cjs/components/MainHeaderNavigation/MainHeaderNavigation.js +7 -7
- package/build/cjs/components/MainHeaderNavigation/globalNavStyles.js +6 -0
- package/build/cjs/components/Notification/Notification.js +3 -3
- package/build/cjs/components/Overlay/Overlay.d.ts +64 -3
- package/build/cjs/components/Overlay/Overlay.js +11 -8
- package/build/cjs/components/Pill/Pill.js +1 -1
- package/build/cjs/components/PriorityNavigation/PriorityNavigation.d.ts +0 -4
- package/build/cjs/components/PriorityNavigation/PriorityNavigation.js +18 -9
- package/build/cjs/components/RadioButton/RadioButton.js +1 -1
- package/build/cjs/components/Switch/Switch.js +1 -1
- package/build/cjs/components/index.d.ts +1 -0
- package/build/cjs/index.js +2 -0
- package/build/es/components/Box/Box.d.ts +4 -0
- package/build/es/components/Box/Box.js +1 -1
- package/build/es/components/Button/Button.d.ts +4 -0
- package/build/es/components/Button/Button.js +1 -1
- package/build/es/components/ButtonArrow/ButtonArrow.js +10 -3
- package/build/es/components/ButtonIcon/ButtonIcon.d.ts +4 -0
- package/build/es/components/ButtonIcon/ButtonIcon.js +49 -13
- package/build/es/components/Carousel/Carousel.js +4 -1
- package/build/es/components/Checkbox/Checkbox.js +1 -1
- package/build/es/components/EnergyLabel/EnergyLabel.d.ts +65 -0
- package/build/es/components/EnergyLabel/EnergyLabel.js +90 -0
- package/build/es/components/MainHeaderNavigation/ChildComponents/BusinessMenu.js +2 -3
- package/build/es/components/MainHeaderNavigation/ChildComponents/DesktopMenu.js +15 -16
- package/build/es/components/MainHeaderNavigation/ChildComponents/LanguageSelector.js +1 -2
- package/build/es/components/MainHeaderNavigation/ChildComponents/LinkModifier.d.ts +2 -2
- package/build/es/components/MainHeaderNavigation/ChildComponents/LinkModifier.js +5 -7
- package/build/es/components/MainHeaderNavigation/ChildComponents/LoginTooltip.js +3 -5
- package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenu.js +5 -5
- package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.js +4 -4
- package/build/es/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.d.ts +3 -2
- package/build/es/components/MainHeaderNavigation/ChildComponents/MinicartTooltip.js +6 -10
- package/build/es/components/MainHeaderNavigation/ChildComponents/MobileMenu.js +3 -3
- package/build/es/components/MainHeaderNavigation/ChildComponents/PageSearch.js +3 -5
- package/build/es/components/MainHeaderNavigation/MainHeaderNavigation.d.ts +5 -1
- package/build/es/components/MainHeaderNavigation/MainHeaderNavigation.js +8 -8
- package/build/es/components/MainHeaderNavigation/globalNavStyles.js +6 -0
- package/build/es/components/Notification/Notification.js +3 -3
- package/build/es/components/Overlay/Overlay.d.ts +64 -3
- package/build/es/components/Overlay/Overlay.js +11 -8
- package/build/es/components/Pill/Pill.js +1 -1
- package/build/es/components/PriorityNavigation/PriorityNavigation.d.ts +0 -4
- package/build/es/components/PriorityNavigation/PriorityNavigation.js +18 -9
- package/build/es/components/RadioButton/RadioButton.js +1 -1
- package/build/es/components/Switch/Switch.js +1 -1
- package/build/es/components/index.d.ts +1 -0
- package/build/es/index.js +1 -0
- package/package.json +2 -2
|
@@ -7,6 +7,47 @@ import { getDividedSize, media } from '../../utils/styledUtils.js';
|
|
|
7
7
|
import Icon from '../Icon/Icon.js';
|
|
8
8
|
import PixelLoader from '../PixelLoader/PixelLoader.js';
|
|
9
9
|
|
|
10
|
+
const getStandardStyle = ({ isLinkStyle }) => {
|
|
11
|
+
const colorValue = isLinkStyle ? theme.color.default.pink : theme.color.text.black;
|
|
12
|
+
const colorHoverValue = isLinkStyle ? theme.color.hover.pink : theme.color.text.black;
|
|
13
|
+
return `
|
|
14
|
+
color: ${colorValue};
|
|
15
|
+
&:focus-visible {
|
|
16
|
+
border: 2px solid ${theme.color.focus.light};
|
|
17
|
+
box-shadow: 0px 0px 0px 2px ${theme.color.focus.dark};
|
|
18
|
+
}
|
|
19
|
+
&:hover {
|
|
20
|
+
color: ${colorHoverValue};
|
|
21
|
+
}
|
|
22
|
+
&:active {
|
|
23
|
+
color: ${theme.color.text.black + theme.color.transparency.T80};
|
|
24
|
+
}
|
|
25
|
+
&:disabled,
|
|
26
|
+
&[disabled] {
|
|
27
|
+
color: ${theme.color.text.gray};
|
|
28
|
+
}
|
|
29
|
+
`;
|
|
30
|
+
};
|
|
31
|
+
const getDarkBgStyle = () => {
|
|
32
|
+
const colorValue = theme.color.text.white;
|
|
33
|
+
return `
|
|
34
|
+
color: ${colorValue};
|
|
35
|
+
&:focus-visible {
|
|
36
|
+
border: 2px solid ${theme.color.focus.dark};
|
|
37
|
+
box-shadow: 0px 0px 0px 2px ${theme.color.focus.light};
|
|
38
|
+
}
|
|
39
|
+
&:hover {
|
|
40
|
+
color: ${colorValue};
|
|
41
|
+
}
|
|
42
|
+
&:active {
|
|
43
|
+
color: ${colorValue + theme.color.transparency.T90};
|
|
44
|
+
}
|
|
45
|
+
&:disabled,
|
|
46
|
+
&[disabled] {
|
|
47
|
+
color: ${colorValue + theme.color.transparency.T70};
|
|
48
|
+
}
|
|
49
|
+
`;
|
|
50
|
+
};
|
|
10
51
|
const ButtonElement = styled__default.button `
|
|
11
52
|
display: inline-flex;
|
|
12
53
|
align-items: center;
|
|
@@ -15,10 +56,11 @@ const ButtonElement = styled__default.button `
|
|
|
15
56
|
font-size: ${({ small }) => (small ? theme.fontSize.s : theme.fontSize.default)};
|
|
16
57
|
line-height: ${({ small }) => (small ? theme.lineHeight.xs : theme.lineHeight.default)};
|
|
17
58
|
cursor: pointer;
|
|
18
|
-
color: ${({ darkBg }) => (darkBg ? theme.color.text.white : theme.color.text.black)};
|
|
19
59
|
background-color: transparent;
|
|
20
60
|
border: 2px solid transparent;
|
|
21
61
|
padding: ${getDividedSize(theme.base.baseWidth, 5)} 0;
|
|
62
|
+
text-align: left;
|
|
63
|
+
transition: all 0.2s ease-in-out;
|
|
22
64
|
|
|
23
65
|
& svg {
|
|
24
66
|
pointer-events: none;
|
|
@@ -26,29 +68,23 @@ const ButtonElement = styled__default.button `
|
|
|
26
68
|
|
|
27
69
|
${({ isReversed }) => isReversed && `flex-direction: row-reverse;`}
|
|
28
70
|
|
|
71
|
+
${({ darkBg, isLinkStyle }) => (darkBg ? getDarkBgStyle() : getStandardStyle({ isLinkStyle }))}
|
|
72
|
+
|
|
29
73
|
&:focus-visible {
|
|
30
74
|
border-radius: ${theme.radius.s};
|
|
31
75
|
text-decoration: underline;
|
|
32
|
-
border: 2px solid
|
|
33
|
-
${({ darkBg }) => (darkBg ? theme.color.focus.dark : theme.color.focus.light)};
|
|
34
|
-
box-shadow: 0px 0px 0px 2px
|
|
35
|
-
${({ darkBg }) => (darkBg ? theme.color.focus.light : theme.color.focus.dark)};
|
|
36
76
|
outline: none;
|
|
37
77
|
}
|
|
38
78
|
|
|
39
79
|
&:hover {
|
|
40
80
|
text-decoration: underline;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
color: ${({ darkBg }) => darkBg
|
|
45
|
-
? theme.color.text.white + theme.color.transparency.T90
|
|
46
|
-
: theme.color.text.black + theme.color.transparency.T80};
|
|
81
|
+
text-underline-offset: 0.2em;
|
|
82
|
+
text-decoration-skip-ink: auto;
|
|
83
|
+
text-decoration-thickness: from-font;
|
|
47
84
|
}
|
|
48
85
|
|
|
49
86
|
&:disabled,
|
|
50
87
|
&[disabled] {
|
|
51
|
-
color: ${({ darkBg }) => darkBg ? theme.color.text.white + theme.color.transparency.T70 : theme.color.text.gray};
|
|
52
88
|
pointer-events: none;
|
|
53
89
|
}
|
|
54
90
|
|
|
@@ -83,7 +119,7 @@ const ButtonElement = styled__default.button `
|
|
|
83
119
|
const ButtonIcon = forwardRef((_a, ref) => {
|
|
84
120
|
var { icon = EditUnderline, 'data-testid': dataTestId, 'data-no-close': dataNoClose, 'data-track-value': dataTrackValue } = _a, props = __rest(_a, ["icon", 'data-testid', 'data-no-close', 'data-track-value']);
|
|
85
121
|
const position = props.isReversed ? 'right' : 'left';
|
|
86
|
-
return (React__default.createElement(ButtonElement, Object.assign({ ref: ref, id: props.id, name: props.name, type: props.type, onClick: props.onClick, onMouseDown: props.onMouseDown, small: props.small, darkBg: props.darkBg, "$loading": props.loading, tabIndex: props.loading ? -1 : 0, "data-loading": props.loading, disabled: props.disabled, hideChildrenMobile: props.hideChildrenMobile, isReversed: props.isReversed, className: props.className, "data-testid": dataTestId, "data-no-close": dataNoClose, "data-track-value": dataTrackValue, "aria-expanded": props.ariaExpanded, "aria-label": props.ariaLabel }, props.dataAttributes), props.loading ? (React__default.createElement(PixelLoader, { color: props.darkBg ? theme.color.default.white : theme.color.default.black, label: props.loadingLabel })) : (React__default.createElement(React__default.Fragment, null,
|
|
122
|
+
return (React__default.createElement(ButtonElement, Object.assign({ ref: ref, id: props.id, name: props.name, type: props.type, onClick: props.onClick, onMouseDown: props.onMouseDown, small: props.small, darkBg: props.darkBg, "$loading": props.loading, tabIndex: props.loading ? -1 : 0, "data-loading": props.loading, disabled: props.disabled, hideChildrenMobile: props.hideChildrenMobile, isReversed: props.isReversed, className: props.className, "data-testid": dataTestId, "data-no-close": dataNoClose, "data-track-value": dataTrackValue, "aria-expanded": props.ariaExpanded, "aria-label": props.ariaLabel, isLinkStyle: props.isLinkStyle }, props.dataAttributes), props.loading ? (React__default.createElement(PixelLoader, { color: props.darkBg ? theme.color.default.white : theme.color.default.black, label: props.loadingLabel })) : (React__default.createElement(React__default.Fragment, null,
|
|
87
123
|
React__default.createElement(Icon, { icon: icon, color: props.darkBg ? theme.color.default.white : theme.color.default.pink, size: props.small ? '1.25rem' : '1.5rem', position: props.children ? position : undefined, "aria-hidden": true }),
|
|
88
124
|
props.children && (React__default.createElement("span", { "data-testid": dataTestId && `${dataTestId}-text`, "data-no-close": dataNoClose }, props.children))))));
|
|
89
125
|
});
|
|
@@ -176,7 +176,8 @@ const Carousel = (_a) => {
|
|
|
176
176
|
};
|
|
177
177
|
const visibleItems = props.visibleItems || calculatedItems;
|
|
178
178
|
const slidesWrapperGapSizePx = 20;
|
|
179
|
-
const
|
|
179
|
+
const slidesCount = Children.count(props.children);
|
|
180
|
+
const slideScreensCount = Math.max(1, slidesCount - Math.floor(visibleItems) + 1);
|
|
180
181
|
const step = getStep((_b = props.swipeStep) !== null && _b !== void 0 ? _b : 1, visibleItems);
|
|
181
182
|
const currentStepIndex = Math.ceil(currentIndex / step);
|
|
182
183
|
const totalSwipeSteps = Math.ceil(slideScreensCount / step + ((slideScreensCount - 1) % step !== 0 ? 1 : 0));
|
|
@@ -298,6 +299,8 @@ const Carousel = (_a) => {
|
|
|
298
299
|
setIsSwiping(false);
|
|
299
300
|
};
|
|
300
301
|
const handleSlidesPointerDown = (e) => {
|
|
302
|
+
if (e.button !== 0)
|
|
303
|
+
return;
|
|
301
304
|
if (slidesWrapperRef.current && scrollbarRef.current && knobRef.current) {
|
|
302
305
|
data.startX = e.pageX;
|
|
303
306
|
data.startTime = Date.now();
|
|
@@ -110,7 +110,7 @@ const Checkbox = (_a) => {
|
|
|
110
110
|
};
|
|
111
111
|
return (React__default.createElement(React__default.Fragment, null,
|
|
112
112
|
React__default.createElement(Container, null,
|
|
113
|
-
React__default.createElement(Input, { id: props.id, name: props.name, type: "checkbox", className: props.className, checked: Boolean(props.value), onChange: handleChange, disabled: props.disabled, "data-testid": dataTestId, "aria-required": props.required, "aria-invalid": props.error ? 'true' : undefined, "aria-errormessage": props.error && props.errorMessage ? errorId : undefined }),
|
|
113
|
+
React__default.createElement(Input, { id: props.id, name: props.name, type: "checkbox", className: props.className, checked: Boolean(props.value), onChange: handleChange, disabled: props.disabled, "data-testid": dataTestId, "aria-required": props.required, "aria-invalid": props.error ? 'true' : undefined, "aria-errormessage": props.error && props.errorMessage ? errorId : undefined, "data-checked": Boolean(props.value) }),
|
|
114
114
|
React__default.createElement("label", { htmlFor: props.id, "data-testid": dataTestId && `${dataTestId}-label` },
|
|
115
115
|
props.label,
|
|
116
116
|
props.required && React__default.createElement(Mandatory, null, "*"))),
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface Props {
|
|
3
|
+
/**
|
|
4
|
+
* Unique ID for the component
|
|
5
|
+
*/
|
|
6
|
+
id?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Allows to pass a custom className
|
|
9
|
+
*/
|
|
10
|
+
className?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Allows to pass testid string for testing purposes
|
|
13
|
+
*/
|
|
14
|
+
'data-testid'?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Allows to pass a screen reader label to the component
|
|
17
|
+
*/
|
|
18
|
+
ariaLabel?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Allows to set property `aria-label` for `ButtonClose` element
|
|
21
|
+
*/
|
|
22
|
+
closeButtonLabel?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Allows to set the source of the badge image
|
|
25
|
+
*/
|
|
26
|
+
badgeSrc: string;
|
|
27
|
+
/**
|
|
28
|
+
* Allows to set the title of the modal
|
|
29
|
+
*/
|
|
30
|
+
modalTitle?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Allows to set the source of the image in the modal
|
|
33
|
+
*/
|
|
34
|
+
modalImageSrc?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Allows to set the label of the modal
|
|
37
|
+
*/
|
|
38
|
+
modalLabel?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Allows to set the label of the button that opens the PDF
|
|
41
|
+
*/
|
|
42
|
+
pdfButtonLabel?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Allows to set the href of the PDF file
|
|
45
|
+
*/
|
|
46
|
+
pdfHref?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Allows to set the label for the error state
|
|
49
|
+
*/
|
|
50
|
+
errorLabel?: string;
|
|
51
|
+
/**
|
|
52
|
+
* Allows to set the title for the error state
|
|
53
|
+
*/
|
|
54
|
+
errorTitle?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Allows to hide application from assistive screenreaders and other assistive technologies while the modal is open
|
|
57
|
+
*
|
|
58
|
+
* @default '#__next'
|
|
59
|
+
*/
|
|
60
|
+
modalAppElement?: string;
|
|
61
|
+
}
|
|
62
|
+
/** @visibleName Energy Label */
|
|
63
|
+
declare const EnergyLabel: ({ "data-testid": dataTestId, modalAppElement, ...props }: Props) => React.JSX.Element | null;
|
|
64
|
+
/** @component */
|
|
65
|
+
export default EnergyLabel;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { __rest } from 'tslib';
|
|
2
|
+
import React__default, { useState } from 'react';
|
|
3
|
+
import { Open } from '@dnanpm/icons';
|
|
4
|
+
import Modal from '../Modal/Modal.js';
|
|
5
|
+
import styled from '../../themes/styled.js';
|
|
6
|
+
import { media, getMultipliedSize } from '../../utils/styledUtils.js';
|
|
7
|
+
import Button from '../Button/Button.js';
|
|
8
|
+
import theme from '../../themes/theme.js';
|
|
9
|
+
|
|
10
|
+
const ERROR_IMAGE = 'https://res.cloudinary.com/dnaoyj/image/upload/v1731073400/Assets/KLT/Enriched%20icons/enriched-error-state.png';
|
|
11
|
+
const ButtonElement = styled.button `
|
|
12
|
+
display: flex;
|
|
13
|
+
align-items: center;
|
|
14
|
+
justify-content: center;
|
|
15
|
+
background-color: transparent;
|
|
16
|
+
border: 0;
|
|
17
|
+
padding: 0;
|
|
18
|
+
cursor: pointer;
|
|
19
|
+
`;
|
|
20
|
+
const StyledModal = styled(Modal) `
|
|
21
|
+
> div > div {
|
|
22
|
+
max-height: 100%;
|
|
23
|
+
height: 100%;
|
|
24
|
+
width: 100%;
|
|
25
|
+
margin: 0;
|
|
26
|
+
|
|
27
|
+
${media.xs `
|
|
28
|
+
width: 23.438rem;
|
|
29
|
+
height: 50rem;
|
|
30
|
+
border-radius: ${theme.radius.default};
|
|
31
|
+
`};
|
|
32
|
+
|
|
33
|
+
> div {
|
|
34
|
+
border-radius: 0;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
`;
|
|
38
|
+
const ModalLabel = styled.p `
|
|
39
|
+
font-size: ${theme.fontSize.s};
|
|
40
|
+
margin: 0;
|
|
41
|
+
`;
|
|
42
|
+
const ButtonContent = styled.span `
|
|
43
|
+
display: inline-flex;
|
|
44
|
+
align-items: center;
|
|
45
|
+
gap: ${getMultipliedSize(theme.base.baseWidth, 0.5)};
|
|
46
|
+
`;
|
|
47
|
+
const ErrorContainer = styled.div `
|
|
48
|
+
display: flex;
|
|
49
|
+
padding-top: ${getMultipliedSize(theme.base.baseHeight, 2)};
|
|
50
|
+
flex-direction: column;
|
|
51
|
+
text-align: center;
|
|
52
|
+
align-items: center;
|
|
53
|
+
flex-direction: column;
|
|
54
|
+
gap: ${getMultipliedSize(theme.base.baseHeight, 3)};
|
|
55
|
+
`;
|
|
56
|
+
const Image = styled.img `
|
|
57
|
+
width: ${p => p.imgWidth};
|
|
58
|
+
`;
|
|
59
|
+
/** @visibleName Energy Label */
|
|
60
|
+
const EnergyLabel = (_a) => {
|
|
61
|
+
var { 'data-testid': dataTestId, modalAppElement = '#__next' } = _a, props = __rest(_a, ['data-testid', "modalAppElement"]);
|
|
62
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
63
|
+
const [hasError, setHasError] = useState(false);
|
|
64
|
+
const [imgError, setImgError] = useState(false);
|
|
65
|
+
const handleOpen = () => {
|
|
66
|
+
setIsOpen(true);
|
|
67
|
+
};
|
|
68
|
+
const handleClose = () => {
|
|
69
|
+
setIsOpen(false);
|
|
70
|
+
};
|
|
71
|
+
const renderFooter = () => (React__default.createElement(Button, { fullWidth: true, href: props.pdfHref, target: "_blank" },
|
|
72
|
+
React__default.createElement(ButtonContent, null,
|
|
73
|
+
props.pdfButtonLabel,
|
|
74
|
+
" ",
|
|
75
|
+
React__default.createElement(Open, null))));
|
|
76
|
+
if (imgError) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
return (React__default.createElement(React__default.Fragment, null,
|
|
80
|
+
React__default.createElement(ButtonElement, { onClick: handleOpen, "aria-label": props.ariaLabel, "data-testid": dataTestId, id: props.id, className: props.className },
|
|
81
|
+
React__default.createElement(Image, { src: props.badgeSrc, alt: "", "aria-hidden": true, imgWidth: "55px", onError: () => setImgError(true) })),
|
|
82
|
+
React__default.createElement(StyledModal, { appElement: modalAppElement, isOpen: isOpen, onRequestClose: handleClose, title: props.modalTitle, closeLabel: props.closeButtonLabel, footer: renderFooter() }, hasError || !props.modalImageSrc ? (React__default.createElement(ErrorContainer, null,
|
|
83
|
+
React__default.createElement("h3", null, props.errorTitle),
|
|
84
|
+
React__default.createElement(Image, { src: ERROR_IMAGE, alt: "", imgWidth: "160px" }),
|
|
85
|
+
React__default.createElement("p", null, props.errorLabel))) : (React__default.createElement(React__default.Fragment, null,
|
|
86
|
+
React__default.createElement(Image, { src: props.modalImageSrc, alt: "", imgWidth: "100%", onError: () => setHasError(true) }),
|
|
87
|
+
React__default.createElement(ModalLabel, null, props.modalLabel))))));
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export { EnergyLabel as default };
|
|
@@ -39,8 +39,7 @@ const BusinessMenuLink = styled.a `
|
|
|
39
39
|
const BusinessMenuList = styled.nav `
|
|
40
40
|
display: flex;
|
|
41
41
|
gap: ${getMultipliedSize(theme.base.baseWidth, 1)};
|
|
42
|
-
padding: ${getMultipliedSize(theme.base.baseHeight, 0.5)}
|
|
43
|
-
${getMultipliedSize(theme.base.baseWidth, 1)};
|
|
42
|
+
padding: ${getMultipliedSize(theme.base.baseHeight, 0.5)} ${getMultipliedSize(theme.base.baseWidth, 1)};
|
|
44
43
|
${media.md `
|
|
45
44
|
padding: ${getMultipliedSize(theme.base.baseHeight, 1)} ${getMultipliedSize(theme.base.baseWidth, 1.5)};
|
|
46
45
|
`};
|
|
@@ -49,7 +48,7 @@ const BusinessMenu = ({ ariaLabel, currentBusinessId, items, lang }) => {
|
|
|
49
48
|
if (!(items === null || items === void 0 ? void 0 : items.length)) {
|
|
50
49
|
return null;
|
|
51
50
|
}
|
|
52
|
-
return (React__default.createElement(BusinessMenuList, { "aria-label": ariaLabel, "data-testid": "business-menu"
|
|
51
|
+
return (React__default.createElement(BusinessMenuList, { "aria-label": ariaLabel, "data-testid": "business-menu" }, items.map(item => (React__default.createElement(BusinessMenuLink, { className: `menu-link ${item.businessId === currentBusinessId ? 'active-site' : ''}`, href: item.urls[lang], isActive: item.businessId === currentBusinessId, key: item.businessId }, item.titles[lang])))));
|
|
53
52
|
};
|
|
54
53
|
|
|
55
54
|
export { BusinessMenu as default };
|
|
@@ -28,13 +28,12 @@ const noAnimation = css `
|
|
|
28
28
|
const MegaMenuContent = styled.ul `
|
|
29
29
|
display: grid;
|
|
30
30
|
grid-template-columns: 25% 25% 25% 25%;
|
|
31
|
-
padding-left: 0;
|
|
32
31
|
`;
|
|
33
|
-
const CategoryTitle = styled.
|
|
32
|
+
const CategoryTitle = styled.h2 `
|
|
34
33
|
display: flex;
|
|
35
34
|
font-size: ${theme.fontSize.default};
|
|
36
35
|
line-height: ${theme.lineHeight.default};
|
|
37
|
-
|
|
36
|
+
margin: 0;
|
|
38
37
|
padding: 0 ${getMultipliedSize(theme.base.baseHeight, 2)}
|
|
39
38
|
${getMultipliedSize(theme.base.baseWidth, 1)};
|
|
40
39
|
${media.xl `
|
|
@@ -121,21 +120,21 @@ const SubMenuLevel1 = ({ menuItem }) => {
|
|
|
121
120
|
const pagesWithSubItems = menuItem.pages.filter(element => element.pages.length > 0);
|
|
122
121
|
// Helper function to render a sub menu item
|
|
123
122
|
const renderSubMenuItem = (element, index, currUrl) => (React__default.createElement(SubMenuItem, { key: element.id, isHighlighted: isSelected(currUrl, element.urls[lang], true), "data-testid": `desktop-nav-item-level-2-${index + 1}` },
|
|
124
|
-
React__default.createElement(LinkModifier, { menuItem: element,
|
|
123
|
+
React__default.createElement(LinkModifier, { menuItem: element, disabledTabIndex: false })));
|
|
125
124
|
if (!level1HasElements) {
|
|
126
125
|
return null;
|
|
127
126
|
}
|
|
128
127
|
return (React__default.createElement(SubMenuList, { "aria-hidden": false, menuStates: menuLevel, navItemId: menuItem.id, navZIndex: navZIndex },
|
|
129
|
-
React__default.createElement(MegaMenuContent,
|
|
128
|
+
React__default.createElement(MegaMenuContent, { "aria-labelledby": `menu-id-${menuItem.id}` },
|
|
130
129
|
pagesWithSubItems.slice(0, 5).map(element => (React__default.createElement(CategoryBlock, { key: element.id },
|
|
131
|
-
React__default.createElement(CategoryTitle,
|
|
132
|
-
React__default.createElement("ul", { "data-testid": "desktop-nav-menu-ul-level-2" }, element.pages.map((subElement, index) => renderSubMenuItem(subElement, index, currentUrl)))))),
|
|
130
|
+
React__default.createElement(CategoryTitle, { id: `menu-id-${element.id}` }, element.titles[lang]),
|
|
131
|
+
React__default.createElement("ul", { "aria-labelledby": `menu-id-${element.id}`, "data-testid": "desktop-nav-menu-ul-level-2" }, element.pages.map((subElement, index) => renderSubMenuItem(subElement, index, currentUrl)))))),
|
|
133
132
|
pagesWithSubItems.length > 5 && (React__default.createElement(CategoryCollectionBlock, null,
|
|
134
|
-
React__default.createElement(CategoryTitle,
|
|
135
|
-
React__default.createElement("ul", { "data-testid": "desktop-nav-menu-ul-level-2" }, pagesWithSubItems
|
|
133
|
+
React__default.createElement(CategoryTitle, { id: "misc-categories" }, categoryCollectionText),
|
|
134
|
+
React__default.createElement("ul", { "aria-labelledby": "misc-categories", "data-testid": "desktop-nav-menu-ul-level-2" }, pagesWithSubItems
|
|
136
135
|
.slice(5)
|
|
137
136
|
.map((element, index) => renderSubMenuItem(element, index, currentUrl))))),
|
|
138
|
-
React__default.createElement(FeaturedBlock, { collapseSize: collapseSize, "data-testid": "desktop-nav-menu-level-2-featured" }, menuItem.pages.map(element => element.pages.length ? null : (React__default.createElement(LinkModifier, { key: element.id, showIcon: true, menuItem: element,
|
|
137
|
+
React__default.createElement(FeaturedBlock, { collapseSize: collapseSize, "data-testid": "desktop-nav-menu-level-2-featured" }, menuItem.pages.map(element => element.pages.length ? null : (React__default.createElement(LinkModifier, { key: element.id, showIcon: true, menuItem: element, disabledTabIndex: false })))))));
|
|
139
138
|
};
|
|
140
139
|
const MenuItemWithChildren = ({ menuItem, currentLevel }) => {
|
|
141
140
|
const { lang, handleNavMenuClick, currentUrl, menuLevel } = useContext(NavContext);
|
|
@@ -144,9 +143,9 @@ const MenuItemWithChildren = ({ menuItem, currentLevel }) => {
|
|
|
144
143
|
e.preventDefault();
|
|
145
144
|
handleNavMenuClick(element.id, 'level1');
|
|
146
145
|
};
|
|
147
|
-
return (React__default.createElement(DesktopMenuItem, { isActive: isSelected(currentUrl,
|
|
148
|
-
React__default.createElement(MenuLinkWithChildren, { isOpen: menuLevel.level1 === menuItem.id, onClick: menuClickMain(menuItem), "data-testid": "menu-button-with-children", href: linkUrl },
|
|
149
|
-
React__default.createElement("span",
|
|
146
|
+
return (React__default.createElement(DesktopMenuItem, { isActive: isSelected(currentUrl, linkUrl), "data-testid": `desktop-nav-item-level-1-${currentLevel + 1}` },
|
|
147
|
+
React__default.createElement(MenuLinkWithChildren, { isOpen: menuLevel.level1 === menuItem.id, onClick: menuClickMain(menuItem), "data-testid": "menu-button-with-children", "aria-current": isSelected(currentUrl, linkUrl) ? 'true' : undefined, "aria-expanded": menuLevel.level1 === menuItem.id, href: linkUrl },
|
|
148
|
+
React__default.createElement("span", { id: `menu-id-${menuItem.id}` }, menuItem.titles[lang]),
|
|
150
149
|
React__default.createElement(ChevronRight, { size: "1rem" })),
|
|
151
150
|
React__default.createElement(SubMenuLevel1, { menuItem: menuItem })));
|
|
152
151
|
};
|
|
@@ -166,10 +165,10 @@ const DesktopMenu = () => {
|
|
|
166
165
|
return (React__default.createElement(MenuList, { "aria-hidden": false, ref: ref, "data-testid": "desktop-nav-menu-ul" }, mainNavigation.map((navElement, index) => {
|
|
167
166
|
const displaySubMenu = !navElement.pageIsLinkInDesktopNavigation && !!navElement.pages.length;
|
|
168
167
|
if (displaySubMenu) {
|
|
169
|
-
return (React__default.createElement(MenuItemWithChildren, {
|
|
168
|
+
return (React__default.createElement(MenuItemWithChildren, { currentLevel: index, key: navElement.id, menuItem: navElement }));
|
|
170
169
|
}
|
|
171
|
-
return (React__default.createElement(DesktopMenuItem, {
|
|
172
|
-
React__default.createElement(LinkModifier, { menuItem: navElement,
|
|
170
|
+
return (React__default.createElement(DesktopMenuItem, { "data-testid": `desktop-nav-item-level-1-${index + 1}`, isActive: isSelected(currentUrl, navElement.urls[lang]), key: navElement.id },
|
|
171
|
+
React__default.createElement(LinkModifier, { menuItem: navElement, disabledTabIndex: false })));
|
|
173
172
|
})));
|
|
174
173
|
};
|
|
175
174
|
|
|
@@ -4,7 +4,6 @@ import styled from '../../../themes/styled.js';
|
|
|
4
4
|
import theme from '../../../themes/theme.js';
|
|
5
5
|
import { navIconSize } from '../../../themes/themeComponents/navigation.js';
|
|
6
6
|
import { getMultipliedSize } from '../../../utils/styledUtils.js';
|
|
7
|
-
import Icon from '../../Icon/Icon.js';
|
|
8
7
|
import NavContext from '../context/NavContext.js';
|
|
9
8
|
import { MenuLink } from '../globalNavStyles.js';
|
|
10
9
|
import MainNavTooltipMenu from './MainNavTooltipMenu.js';
|
|
@@ -24,7 +23,7 @@ const LanguageSelector = ({ currentLanguage, languagesObject, languageSelectorLa
|
|
|
24
23
|
return null;
|
|
25
24
|
}
|
|
26
25
|
return (React__default.createElement(MainNavTooltipMenu, { ariaLabel: languageSelectorLabel, closeWhenTagClicked: ['a'], contentComponent: LngComponent, contentWidth: "5rem", globalStateString: "lang", tooltipRight: isMobileMenu ? '13.8rem' : '11.8rem', zIndex: navZIndex + 1 },
|
|
27
|
-
React__default.createElement(
|
|
26
|
+
React__default.createElement(Globe, { size: navIconSize }),
|
|
28
27
|
React__default.createElement("span", { "data-testid": "header-lang-label" }, currentLanguage.toUpperCase())));
|
|
29
28
|
};
|
|
30
29
|
|
|
@@ -2,9 +2,9 @@ import React from 'react';
|
|
|
2
2
|
import type { MenuLevelItem } from '../types/globalNavProps';
|
|
3
3
|
interface LinkModifierProps {
|
|
4
4
|
menuItem: MenuLevelItem;
|
|
5
|
-
|
|
5
|
+
disabledTabIndex?: boolean;
|
|
6
6
|
showIcon?: boolean;
|
|
7
7
|
}
|
|
8
8
|
export declare const isSelected: (currentUrl: string, linkUrl: string, exactMatch?: boolean) => boolean;
|
|
9
|
-
declare const LinkModifier: ({ menuItem,
|
|
9
|
+
declare const LinkModifier: ({ menuItem, disabledTabIndex, showIcon }: LinkModifierProps) => React.JSX.Element;
|
|
10
10
|
export default LinkModifier;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { Open, ArrowRight } from '@dnanpm/icons';
|
|
2
2
|
import React__default, { useContext } from 'react';
|
|
3
|
-
import theme from '../../../themes/theme.js';
|
|
4
|
-
import Icon from '../../Icon/Icon.js';
|
|
5
3
|
import NavContext from '../context/NavContext.js';
|
|
6
4
|
import { MenuLink } from '../globalNavStyles.js';
|
|
7
5
|
|
|
@@ -16,12 +14,12 @@ const isSelected = (currentUrl, linkUrl, exactMatch = false) => {
|
|
|
16
14
|
return false;
|
|
17
15
|
};
|
|
18
16
|
const isMenuItemLinkAbsolute = (menuItemLink) => menuItemLink.includes('http');
|
|
19
|
-
const LinkModifier = ({ menuItem,
|
|
20
|
-
const { lang, nextJSLinkComponent, resetMenuEvents } = useContext(NavContext);
|
|
21
|
-
const menuItemLink = menuItem.urls[lang]
|
|
17
|
+
const LinkModifier = ({ menuItem, disabledTabIndex, showIcon }) => {
|
|
18
|
+
const { lang, currentUrl, nextJSLinkComponent, resetMenuEvents } = useContext(NavContext);
|
|
19
|
+
const menuItemLink = menuItem.urls[lang];
|
|
22
20
|
const isExternalLink = menuItem.target === '_blank';
|
|
23
|
-
const MenuLinkComponent = (React__default.createElement(MenuLink, { href: menuItemLink, id: menuItem.id, onClick: resetMenuEvents, tabIndex:
|
|
24
|
-
showIcon && (React__default.createElement(
|
|
21
|
+
const MenuLinkComponent = (React__default.createElement(MenuLink, { "aria-current": isSelected(currentUrl, menuItemLink) ? 'page' : undefined, href: menuItemLink, id: menuItem.id, onClick: resetMenuEvents, tabIndex: disabledTabIndex ? -1 : undefined, target: isExternalLink ? '_blank' : '_self' },
|
|
22
|
+
showIcon && (isExternalLink ? React__default.createElement(Open, null) : React__default.createElement(ArrowRight, null)),
|
|
25
23
|
React__default.createElement("span", null, menuItem.titles[lang])));
|
|
26
24
|
if (nextJSLinkComponent && !isMenuItemLinkAbsolute(menuItemLink)) {
|
|
27
25
|
const NextJSLinkComponent = nextJSLinkComponent;
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { User } from '@dnanpm/icons';
|
|
2
2
|
import React__default, { useContext } from 'react';
|
|
3
|
-
import { navIconSize } from '../../../themes/themeComponents/navigation.js';
|
|
4
|
-
import Icon from '../../Icon/Icon.js';
|
|
5
3
|
import NavContext from '../context/NavContext.js';
|
|
6
4
|
import MainNavTooltipMenu from './MainNavTooltipMenu.js';
|
|
7
5
|
|
|
8
6
|
const LoginTooltip = ({ isLogged, loginLabel }) => {
|
|
9
|
-
const { navZIndex, isMobileMenu, loginComponent
|
|
10
|
-
return (React__default.createElement(MainNavTooltipMenu, { ariaLabel: loginLabel, closeWhenTagClicked: ['a', 'button'], contentComponent:
|
|
11
|
-
React__default.createElement(
|
|
7
|
+
const { navZIndex, isMobileMenu, loginComponent } = useContext(NavContext);
|
|
8
|
+
return (React__default.createElement(MainNavTooltipMenu, { ariaLabel: loginLabel, closeWhenTagClicked: ['a', 'button'], contentComponent: loginComponent, globalStateString: "login", tooltipRight: isMobileMenu ? '3rem' : '1rem', zIndex: navZIndex + 1 }, !isLogged ? (loginLabel) : (React__default.createElement(React__default.Fragment, null,
|
|
9
|
+
React__default.createElement(User, null),
|
|
12
10
|
React__default.createElement("span", { "data-testid": "header-login-label" }, loginLabel)))));
|
|
13
11
|
};
|
|
14
12
|
|
|
@@ -20,19 +20,19 @@ const IconContainer = styled.div `
|
|
|
20
20
|
min-width: ${IconContainerMinWidth};
|
|
21
21
|
transition: color 0.2s ease-in-out;
|
|
22
22
|
|
|
23
|
-
>
|
|
23
|
+
> svg {
|
|
24
24
|
display: block;
|
|
25
25
|
height: ${navIconSize};
|
|
26
26
|
width: ${navIconSize};
|
|
27
27
|
}
|
|
28
|
-
>
|
|
29
|
-
|
|
28
|
+
> svg,
|
|
29
|
+
+ span {
|
|
30
30
|
color: ${p => (p.isActive ? theme.color.text.pink : 'inherit')};
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
@media (min-width: ${p => p.collapseSize + 1}px) {
|
|
34
34
|
min-width: ${getMultipliedSize(theme.base.baseWidth, 6)};
|
|
35
|
-
|
|
35
|
+
+ span {
|
|
36
36
|
display: block;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -103,7 +103,7 @@ const MainNavTooltipMenu = (_a) => {
|
|
|
103
103
|
}
|
|
104
104
|
});
|
|
105
105
|
return (React__default.createElement(IconContainer, { "data-testid": `header-${globalStateKey}-container`, collapseSize: collapseSize, ref: ref },
|
|
106
|
-
globalStateKey === 'login' && !isLoggedIn ? (React__default.createElement(ButtonPrimary, { onClick: ContentComponent ? toggleState : undefined, small: true }, children)) : (React__default.createElement(TooltipWrapper, { "aria-label": ariaLabel, isLoggedIn: isLoginItemAndLoggedIn, collapseSize: collapseSize, isHighlighted: tooltipItems[globalStateKey] || isLoginItemAndLoggedIn, onClick: props.onCartButtonClick || (ContentComponent ? toggleState : undefined) }, children)),
|
|
106
|
+
globalStateKey === 'login' && !isLoggedIn ? (React__default.createElement(ButtonPrimary, { onClick: ContentComponent ? toggleState : undefined, small: true }, children)) : (React__default.createElement(TooltipWrapper, { "aria-label": ariaLabel, "aria-expanded": tooltipItems[globalStateKey], isLoggedIn: isLoginItemAndLoggedIn, collapseSize: collapseSize, isHighlighted: tooltipItems[globalStateKey] || isLoginItemAndLoggedIn, onClick: props.onCartButtonClick || (ContentComponent ? toggleState : undefined) }, children)),
|
|
107
107
|
tooltipItems[globalStateKey] && ContentComponent && (React__default.createElement(React__default.Fragment, null,
|
|
108
108
|
React__default.createElement(Caret, { zIndex: zIndex, collapseSize: collapseSize }),
|
|
109
109
|
React__default.createElement(Tooltip, { zIndex: zIndex, tooltipRight: tooltipRight, contentWidth: contentWidth, collapseSize: collapseSize, fullWidthDesktop: fullWidthDesktop, fullWidthBreakpoint: fullWidthBreakpoint },
|
package/build/es/components/MainHeaderNavigation/ChildComponents/MainNavTooltipMenuExportedStyles.js
CHANGED
|
@@ -20,7 +20,7 @@ const TooltipWrapper = styled.button `
|
|
|
20
20
|
border-left: ${p => (p.isLoggedIn ? `2px solid ${theme.color.line.L03}` : 'none')};
|
|
21
21
|
&:active,
|
|
22
22
|
&:focus {
|
|
23
|
-
|
|
23
|
+
> svg,
|
|
24
24
|
> span {
|
|
25
25
|
color: ${theme.color.text.pink};
|
|
26
26
|
}
|
|
@@ -30,12 +30,12 @@ const TooltipWrapper = styled.button `
|
|
|
30
30
|
border-radius: ${theme.radius.s};
|
|
31
31
|
box-shadow: 0px 0px 0px 2px ${theme.color.focus.light},
|
|
32
32
|
0px 0px 0px 4px ${theme.color.focus.dark};
|
|
33
|
-
|
|
33
|
+
> svg,
|
|
34
34
|
> span {
|
|
35
35
|
color: ${theme.color.text.black};
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
> svg {
|
|
39
39
|
align-content: center;
|
|
40
40
|
display: flex;
|
|
41
41
|
margin: 0 auto;
|
|
@@ -44,7 +44,7 @@ const TooltipWrapper = styled.button `
|
|
|
44
44
|
width: 1.625em;
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
> span {
|
|
48
48
|
display: none;
|
|
49
49
|
@media (min-width: ${p => p.collapseSize + 1}px) {
|
|
50
50
|
font-size: ${theme.fontSize.xs};
|
|
@@ -2,7 +2,8 @@ import React from 'react';
|
|
|
2
2
|
import type { MainHeaderNavigationProps } from '../MainHeaderNavigation';
|
|
3
3
|
interface MinicartTooltipProps extends Pick<MainHeaderNavigationProps, 'onCartButtonClick'> {
|
|
4
4
|
minicartAmount: number;
|
|
5
|
-
minicartLabel
|
|
5
|
+
minicartLabel: string;
|
|
6
|
+
minicartAmountLabel: string;
|
|
6
7
|
}
|
|
7
|
-
declare const MinicartTooltip: ({ minicartAmount, minicartLabel,
|
|
8
|
+
declare const MinicartTooltip: ({ minicartAmount, minicartAmountLabel, minicartLabel, onCartButtonClick, }: MinicartTooltipProps) => React.JSX.Element;
|
|
8
9
|
export default MinicartTooltip;
|
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
import { __rest } from 'tslib';
|
|
2
1
|
import { Cart } from '@dnanpm/icons';
|
|
3
2
|
import React__default, { useContext } from 'react';
|
|
4
3
|
import theme from '../../../themes/theme.js';
|
|
5
|
-
import { navIconSize } from '../../../themes/themeComponents/navigation.js';
|
|
6
|
-
import Icon from '../../Icon/Icon.js';
|
|
7
4
|
import NotificationBadge from '../../NotificationBadge/NotificationBadge.js';
|
|
8
5
|
import NavContext from '../context/NavContext.js';
|
|
9
6
|
import MainNavTooltipMenu from './MainNavTooltipMenu.js';
|
|
10
7
|
|
|
11
|
-
const MinicartTooltip = (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
React__default.createElement(
|
|
16
|
-
React__default.createElement("
|
|
17
|
-
minicartAmount > 0 && (React__default.createElement(NotificationBadge, { top: "-5px", right: "5px", "data-testid": "header-minicart-amount" }, minicartAmount))));
|
|
8
|
+
const MinicartTooltip = ({ minicartAmount, minicartAmountLabel, minicartLabel, onCartButtonClick, }) => {
|
|
9
|
+
const { navZIndex, minicartComponent } = useContext(NavContext);
|
|
10
|
+
return (React__default.createElement(MainNavTooltipMenu, { ariaLabel: minicartLabel, closeWhenTagClicked: ['a', 'button'], onCartButtonClick: onCartButtonClick, contentComponent: minicartComponent, contentWidth: "35rem", fullWidthBreakpoint: theme.breakpoints.md, globalStateString: "minicart", tooltipRight: "5rem", zIndex: navZIndex + 1 },
|
|
11
|
+
React__default.createElement(Cart, null),
|
|
12
|
+
React__default.createElement("span", { "aria-hidden": true }, minicartLabel),
|
|
13
|
+
minicartAmount > 0 && (React__default.createElement(NotificationBadge, { "data-testid": "header-minicart-amount", right: "5px", top: "-5px", visuallyHiddenText: minicartAmountLabel }, minicartAmount))));
|
|
18
14
|
};
|
|
19
15
|
|
|
20
16
|
export { MinicartTooltip as default };
|
|
@@ -124,7 +124,7 @@ const CreateSubMenuItem = ({ menuItem, currentLevel, itemIndex }) => {
|
|
|
124
124
|
menuItem.titles[lang],
|
|
125
125
|
React__default.createElement(ChevronRight, { color: theme.color.default.pink })));
|
|
126
126
|
}
|
|
127
|
-
return renderMenuItem(React__default.createElement(LinkModifier, { menuItem: menuItem,
|
|
127
|
+
return renderMenuItem(React__default.createElement(LinkModifier, { menuItem: menuItem, disabledTabIndex: tabNavigationDisabled }));
|
|
128
128
|
};
|
|
129
129
|
const SubMenuMobile = ({ currentLevel, menuItem }) => {
|
|
130
130
|
const featuredItems = menuItem.pages.filter(subMenuItem => !subMenuItem.pages.length && currentLevel === 2);
|
|
@@ -136,7 +136,7 @@ const SubMenuMobile = ({ currentLevel, menuItem }) => {
|
|
|
136
136
|
}
|
|
137
137
|
return (React__default.createElement(React__default.Fragment, null,
|
|
138
138
|
currentLevel > 1 && React__default.createElement(MenuItemBackLink, { currentLevel: currentLevel }),
|
|
139
|
-
featuredItems.length > 0 && (React__default.createElement(FeaturedBlock, { collapseSize: collapseSize }, featuredItems.map(subMenuItem => (React__default.createElement(LinkModifier, { key: subMenuItem.id, menuItem: subMenuItem, showIcon: true,
|
|
139
|
+
featuredItems.length > 0 && (React__default.createElement(FeaturedBlock, { collapseSize: collapseSize }, featuredItems.map(subMenuItem => (React__default.createElement(LinkModifier, { key: subMenuItem.id, menuItem: subMenuItem, showIcon: true, disabledTabIndex: tabNavigationDisabled }))))),
|
|
140
140
|
menuItem.pages
|
|
141
141
|
.filter(subMenuItem => !featuredItems.includes(subMenuItem))
|
|
142
142
|
.map((subMenuItem, index) => (React__default.createElement(CreateSubMenuItem, { currentLevel: currentLevel, itemIndex: index, key: subMenuItem.id, menuItem: subMenuItem })))));
|
|
@@ -147,7 +147,7 @@ const NavigationMenuMobile = () => {
|
|
|
147
147
|
if (!(mainNavigation === null || mainNavigation === void 0 ? void 0 : mainNavigation.pages.length)) {
|
|
148
148
|
return null;
|
|
149
149
|
}
|
|
150
|
-
const renderMenuList = (scrollPosition, level, menuItem) => (React__default.createElement(MenuList, {
|
|
150
|
+
const renderMenuList = (scrollPosition, level, menuItem) => (React__default.createElement(MenuList, { "aria-hidden": menuLevel.scrollPosition !== scrollPosition, "aria-disabled": menuLevel.scrollPosition !== scrollPosition, "data-testid": `mobile-nav-menu-level-${level}`, isInView: menuLevel.scrollPosition === scrollPosition },
|
|
151
151
|
React__default.createElement(SubMenuMobile, { currentLevel: level, menuItem: menuItem })));
|
|
152
152
|
return (React__default.createElement(React__default.Fragment, null,
|
|
153
153
|
renderMenuList(0, 1, mainNavigation),
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { Search } from '@dnanpm/icons';
|
|
2
2
|
import React__default, { useContext } from 'react';
|
|
3
|
-
import { navIconSize } from '../../../themes/themeComponents/navigation.js';
|
|
4
|
-
import Icon from '../../Icon/Icon.js';
|
|
5
3
|
import NavContext from '../context/NavContext.js';
|
|
6
4
|
import MainNavTooltipMenu from './MainNavTooltipMenu.js';
|
|
7
5
|
|
|
8
6
|
const PageSearch = ({ searchLabel }) => {
|
|
9
|
-
const { navZIndex, searchComponent
|
|
10
|
-
return (React__default.createElement(MainNavTooltipMenu, { ariaLabel: searchLabel, closeWhenTagClicked: ['a'], contentComponent:
|
|
11
|
-
React__default.createElement(
|
|
7
|
+
const { navZIndex, searchComponent } = useContext(NavContext);
|
|
8
|
+
return (React__default.createElement(MainNavTooltipMenu, { ariaLabel: searchLabel, closeWhenTagClicked: ['a'], contentComponent: searchComponent, contentWidth: "100%", "data-testid": "header-search-container", fullWidthDesktop: true, globalStateString: "search", tooltipRight: "0", zIndex: navZIndex + 1 },
|
|
9
|
+
React__default.createElement(Search, null),
|
|
12
10
|
React__default.createElement("span", null, searchLabel)));
|
|
13
11
|
};
|
|
14
12
|
|