@arc-ui/components 11.21.0 → 11.22.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/dist/Filter/Filter.cjs.js +1 -1
- package/dist/Filter/Filter.esm.js +1 -1
- package/dist/ImpactCard/ImpactCard.cjs.js +41 -0
- package/dist/ImpactCard/ImpactCard.esm.js +33 -0
- package/dist/ImpactCard/package.json +7 -0
- package/dist/InformationCard/InformationCard.cjs.js +6 -3
- package/dist/InformationCard/InformationCard.esm.js +8 -5
- package/dist/MediaCard/MediaCard.cjs.js +7 -5
- package/dist/MediaCard/MediaCard.esm.js +9 -7
- package/dist/Select/Select.cjs.js +1 -1
- package/dist/Select/Select.esm.js +1 -1
- package/dist/SiteHeaderV2/SiteHeaderV2.cjs.js +2 -1
- package/dist/SiteHeaderV2/SiteHeaderV2.esm.js +2 -1
- package/dist/TextArea/TextArea.cjs.js +8 -6
- package/dist/TextArea/TextArea.esm.js +8 -6
- package/dist/TypographyCard/TypographyCard.cjs.js +9 -7
- package/dist/TypographyCard/TypographyCard.esm.js +10 -8
- package/dist/_shared/cjs/{CardFooter-4a68a862.js → CardFooter-ff015d7d.js} +9 -7
- package/dist/_shared/cjs/{Filter-1bde635c.js → Filter-f4b73f5d.js} +16 -12
- package/dist/_shared/cjs/{SiteHeaderV2-301c765c.js → SiteHeaderV2-e0735a9d.js} +42 -32
- package/dist/_shared/esm/{CardFooter-a08b70ee.js → CardFooter-e13f77b0.js} +9 -7
- package/dist/_shared/esm/{Filter-58a42358.js → Filter-ad254e3d.js} +16 -12
- package/dist/_shared/esm/{SiteHeaderV2-0096e25b.js → SiteHeaderV2-c74b811b.js} +43 -33
- package/dist/index.es.js +112 -68
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +112 -67
- package/dist/index.js.map +1 -1
- package/dist/styles.css +4 -4
- package/dist/types/components/Filter/FilterItems/FilterItems.d.ts +1 -0
- package/dist/types/components/ImpactCard/ImpactCard.d.ts +52 -0
- package/dist/types/components/ImpactCard/index.d.ts +1 -0
- package/dist/types/components/InformationCard/InformationCard.d.ts +4 -0
- package/dist/types/components/MediaCard/MediaCard.d.ts +4 -0
- package/dist/types/components/SiteHeaderV2/SiteHeaderV2.d.ts +5 -0
- package/dist/types/components/TypographyCard/TypographyCard.d.ts +4 -0
- package/dist/types/components/index.d.ts +1 -0
- package/dist/types/private-components/CardFooter/CardFooter.d.ts +1 -1
- package/dist/types/styles.d.ts +1 -0
- package/package.json +1 -1
|
@@ -20,7 +20,7 @@ var FilterControl = function (_a) {
|
|
|
20
20
|
return (React__default["default"].createElement("button", { className: index.classNames("arc-FilterControl", {
|
|
21
21
|
"arc-FilterControl--onDarkSurface": surface === "dark",
|
|
22
22
|
"arc-FilterControl--selected": selected
|
|
23
|
-
}), onClick: onClickHandler, tabIndex: 0 },
|
|
23
|
+
}), onClick: onClickHandler, tabIndex: 0, "aria-pressed": selected },
|
|
24
24
|
React__default["default"].createElement("div", { className: "arc-FilterControl-text" }, children)));
|
|
25
25
|
};
|
|
26
26
|
|
|
@@ -38,16 +38,20 @@ var FilterItem = function (_a) {
|
|
|
38
38
|
};
|
|
39
39
|
|
|
40
40
|
var FilterItems = function (_a) {
|
|
41
|
-
var children = _a.children, _b = _a.displayType, displayType = _b === void 0 ? "grid" : _b, props = filterDataAttrs.__rest(_a, ["children", "displayType"]);
|
|
42
|
-
return
|
|
43
|
-
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
41
|
+
var children = _a.children, error = _a.error, _b = _a.displayType, displayType = _b === void 0 ? "grid" : _b, props = filterDataAttrs.__rest(_a, ["children", "error", "displayType"]);
|
|
42
|
+
return React__default["default"].Children.toArray(children).length > 0 ? (React__default["default"].createElement("div", null,
|
|
43
|
+
React__default["default"].createElement("div", { className: "arc-FilterItems-offscreen", "aria-live": "assertive" }, React__default["default"].Children.toArray(children).length > 0
|
|
44
|
+
? "".concat(React__default["default"].Children.toArray(children).length, " records listed.")
|
|
45
|
+
: null),
|
|
46
|
+
React__default["default"].createElement("div", filterDataAttrs.__assign({ className: index.classNames("arc-FilterItems", {
|
|
47
|
+
"arc-FilterItems--list": displayType === "list",
|
|
48
|
+
"arc-FilterItems--grid": displayType === "grid"
|
|
49
|
+
}) }, filterDataAttrs.filterDataAttrs(props)), displayType === "list"
|
|
50
|
+
? React__default["default"].Children.toArray(children).map(function (child, index, array) { return (React__default["default"].createElement(React__default["default"].Fragment, { key: index },
|
|
51
|
+
child,
|
|
52
|
+
index !== array.length - 1 && (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
53
|
+
React__default["default"].createElement("div", { className: "arc-FilterItems-separator", "data-testid": "arc-FilterItems-separator" }))))); })
|
|
54
|
+
: children))) : (React__default["default"].createElement("div", { "aria-live": "assertive" }, error));
|
|
51
55
|
};
|
|
52
56
|
|
|
53
57
|
/** use `Filter` for interactive elements that filter and categorise page content. */
|
|
@@ -107,7 +111,7 @@ var Filter = function (_a) {
|
|
|
107
111
|
React__default["default"].createElement(FilterControls, { controlsAlignment: controlsAlignment }, controls &&
|
|
108
112
|
React__default["default"].isValidElement(controls) &&
|
|
109
113
|
React__default["default"].Children.map(controls.props.children, function (control, index) { return (React__default["default"].createElement(FilterControl, { key: index, onClick: function () { return handleControlClick(control.props.children); }, isSelected: control.props.isSelected }, control.props.children)); })),
|
|
110
|
-
|
|
114
|
+
React__default["default"].createElement(FilterItems, { displayType: displayType, error: error }, filteredItems.map(function (item) { return item.props.children; }))));
|
|
111
115
|
};
|
|
112
116
|
Filter.Controls = FilterControls;
|
|
113
117
|
Filter.Control = FilterControl;
|
|
@@ -8,6 +8,7 @@ var BrandLogo = require('./BrandLogo-aea340c8.js');
|
|
|
8
8
|
var Surface = require('./Surface-038db6e1.js');
|
|
9
9
|
var handleLinkClick = require('./handle-link-click-17a44cf4.js');
|
|
10
10
|
var BtIconChevronRightMid_esm = require('./BtIconChevronRightMid.esm-d01ebbd4.js');
|
|
11
|
+
var ConditionalWrapper = require('./ConditionalWrapper-be3b2625.js');
|
|
11
12
|
var BtIconChevronRight2Px_esm = require('./BtIconChevronRight2Px.esm-dbf8cbee.js');
|
|
12
13
|
var Button = require('./Button-84533dc8.js');
|
|
13
14
|
var suffixModifier = require('./suffix-modifier-64dcd338.js');
|
|
@@ -24,8 +25,8 @@ var Item = function (_a) {
|
|
|
24
25
|
return (React__default["default"].createElement("li", filterDataAttrs.__assign({ className: index.classNames((_b = {},
|
|
25
26
|
_b["arc-SiteHeaderV2Item"] = true,
|
|
26
27
|
_b["arc-SiteHeaderV2Item--emphasised"] = true,
|
|
27
|
-
_b)) }, filterDataAttrs.filterDataAttrs(props)),
|
|
28
|
-
React__default["default"].createElement("a", { onClick: handleLinkClick.handleLinkClick({ handler: onClick }), className: "arc-SiteHeaderV2Item-link", href: href },
|
|
28
|
+
_b)) }, filterDataAttrs.filterDataAttrs(props), { role: "none" }),
|
|
29
|
+
React__default["default"].createElement("a", { onClick: handleLinkClick.handleLinkClick({ handler: onClick }), className: "arc-SiteHeaderV2Item-link", href: href, role: "menuitem" },
|
|
29
30
|
children,
|
|
30
31
|
React__default["default"].createElement("span", { className: "arc-SiteHeaderV2Item-linkIcon" },
|
|
31
32
|
React__default["default"].createElement(BtIconChevronRightMid_esm.BtIconChevronRightMid, null)))));
|
|
@@ -33,7 +34,6 @@ var Item = function (_a) {
|
|
|
33
34
|
|
|
34
35
|
var ItemGroup = function (_a) {
|
|
35
36
|
var children = _a.children, href = _a.href, title = _a.title, subtitle = _a.subtitle, onClick = _a.onClick, viewAllTitle = _a.viewAllTitle, props = filterDataAttrs.__rest(_a, ["children", "href", "title", "subtitle", "onClick", "viewAllTitle"]);
|
|
36
|
-
var _b = React.useState(false), hasClientSideJavaScript = _b[0], setHasClientSideJavaScript = _b[1];
|
|
37
37
|
var isMinWidthArcBreakpointL = useMediaQuery.useMediaQuery("(min-width: ".concat(useMediaQuery.ArcBreakpointL, "px)"));
|
|
38
38
|
React.useEffect(function () {
|
|
39
39
|
React__default["default"].Children.map(children, function (item) {
|
|
@@ -42,27 +42,18 @@ var ItemGroup = function (_a) {
|
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
44
|
}, [children]);
|
|
45
|
-
|
|
46
|
-
// useEffect does not run in ReactDomServer renders
|
|
47
|
-
setHasClientSideJavaScript(true);
|
|
48
|
-
}, [setHasClientSideJavaScript]);
|
|
49
|
-
var ElementType = "div";
|
|
50
|
-
if (title) {
|
|
51
|
-
ElementType = "details";
|
|
52
|
-
}
|
|
45
|
+
var ElementType = title ? "details" : "div";
|
|
53
46
|
return (React__default["default"].createElement("li", { className: "arc-SiteHeaderV2ItemGroup" },
|
|
54
47
|
React__default["default"].createElement(ElementType, filterDataAttrs.__assign({ className: "arc-SiteHeaderV2ItemGroup-details", open: Boolean(title && isMinWidthArcBreakpointL) }, filterDataAttrs.filterDataAttrs(props)),
|
|
55
48
|
title ? (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
56
|
-
React__default["default"].createElement("summary", {
|
|
57
|
-
React__default["default"].createElement("a", { onClick: handleLinkClick.handleLinkClick({
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
? 0
|
|
61
|
-
: -1 }, title),
|
|
49
|
+
React__default["default"].createElement("summary", { tabIndex: isMinWidthArcBreakpointL ? -1 : 0, className: "arc-SiteHeaderV2ItemGroup-summary" }, href ? (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2ItemGroup-heading" },
|
|
50
|
+
React__default["default"].createElement(ConditionalWrapper.ConditionalWrapper, { condition: isMinWidthArcBreakpointL, wrapper: function (children) { return (React__default["default"].createElement("a", { onClick: handleLinkClick.handleLinkClick({
|
|
51
|
+
handler: onClick
|
|
52
|
+
}), className: "arc-SiteHeaderV2ItemGroup-title", href: href }, children)); }, fallback: function (children) { return (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2ItemGroup-title" }, children)); } }, title),
|
|
62
53
|
React__default["default"].createElement("span", { className: "arc-SiteHeaderV2ItemGroup-titleIcon" },
|
|
63
54
|
React__default["default"].createElement(BtIconChevronRightMid_esm.BtIconChevronRightMid, null)))) : (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2ItemGroup-title" }, title))),
|
|
64
55
|
React__default["default"].createElement("span", { className: "arc-SiteHeaderV2ItemGroup-subtitle" }, subtitle))) : null,
|
|
65
|
-
React__default["default"].createElement("ul", { className: "arc-SiteHeaderV2ItemGroup-items" },
|
|
56
|
+
React__default["default"].createElement("ul", { className: "arc-SiteHeaderV2ItemGroup-items", role: "menubar" },
|
|
66
57
|
children,
|
|
67
58
|
href && title ? (React__default["default"].createElement("li", { className: "arc-SiteHeaderV2Item arc-SiteHeaderV2Item--viewAll" },
|
|
68
59
|
React__default["default"].createElement("a", { className: "arc-SiteHeaderV2Item-link", onClick: handleLinkClick.handleLinkClick({
|
|
@@ -79,8 +70,8 @@ var Column = function (_a) {
|
|
|
79
70
|
}
|
|
80
71
|
});
|
|
81
72
|
}, [children]);
|
|
82
|
-
return (React__default["default"].createElement("li", filterDataAttrs.__assign({ className: "arc-SiteHeaderV2Column" }, filterDataAttrs.filterDataAttrs(props)),
|
|
83
|
-
React__default["default"].createElement("ul", { className: "arc-SiteHeaderV2Column-items" }, children)));
|
|
73
|
+
return (React__default["default"].createElement("li", filterDataAttrs.__assign({ className: "arc-SiteHeaderV2Column" }, filterDataAttrs.filterDataAttrs(props), { role: "none" }),
|
|
74
|
+
React__default["default"].createElement("ul", { className: "arc-SiteHeaderV2Column-items", role: "none" }, children)));
|
|
84
75
|
};
|
|
85
76
|
|
|
86
77
|
var BackButton = function (_a) {
|
|
@@ -98,19 +89,21 @@ var Panel = function (_a) {
|
|
|
98
89
|
var _b, _c, _d, _e, _f;
|
|
99
90
|
var children = _a.children, navItemRef = _a.navItemRef, isNavItem = _a.isNavItem, open = _a.open, setOpen = _a.setOpen, setOpenPanelOnFirstClick = _a.setOpenPanelOnFirstClick, subNavItemRef = _a.subNavItemRef; _a.navLink; var _h = _a.subNavLink, subNavLink = _h === void 0 ? "" : _h, title = _a.title, subtitle = _a.subtitle, viewAll = _a.viewAll, withSubNav = _a.withSubNav; _a.fade; var isPrimary = _a.isPrimary, props = filterDataAttrs.__rest(_a, ["children", "navItemRef", "isNavItem", "open", "setOpen", "setOpenPanelOnFirstClick", "subNavItemRef", "navLink", "subNavLink", "title", "subtitle", "viewAll", "withSubNav", "fade", "isPrimary"]);
|
|
100
91
|
var isMinWidthArcBreakpointL = useMediaQuery.useMediaQuery("(min-width: ".concat(useMediaQuery.ArcBreakpointL, "px)"));
|
|
92
|
+
var menubarRef = useHeaderV2Context().menubarRef;
|
|
101
93
|
React.useEffect(function () {
|
|
102
94
|
// Where appropriate, close the Panel when clicking outside of it,
|
|
103
95
|
// by listening to clicks on the entire document and acting accordingly.
|
|
104
96
|
var handleClick = function (e) {
|
|
105
|
-
var _a, _b;
|
|
97
|
+
var _a, _b, _c, _d;
|
|
98
|
+
(_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.add("noFocus");
|
|
106
99
|
// Don't close the Panel…
|
|
107
100
|
if (
|
|
108
101
|
// The click is inside the current SubNavItem.
|
|
109
|
-
((
|
|
102
|
+
((_c = subNavItemRef === null || subNavItemRef === void 0 ? void 0 : subNavItemRef.current) === null || _c === void 0 ? void 0 : _c.contains(e.target)) ||
|
|
110
103
|
// The click is inside the current NavItem
|
|
111
104
|
// and the Panel is not inside a SubNavItem.
|
|
112
105
|
// and the target is not a link
|
|
113
|
-
(((
|
|
106
|
+
(((_d = navItemRef === null || navItemRef === void 0 ? void 0 : navItemRef.current) === null || _d === void 0 ? void 0 : _d.contains(e.target)) &&
|
|
114
107
|
!subNavItemRef &&
|
|
115
108
|
!e.target.getAttribute("href")) ||
|
|
116
109
|
// The Panel is inside a SubNavItem
|
|
@@ -142,9 +135,12 @@ var Panel = function (_a) {
|
|
|
142
135
|
subNavItemRef,
|
|
143
136
|
subNavLink,
|
|
144
137
|
setOpenPanelOnFirstClick,
|
|
138
|
+
menubarRef,
|
|
145
139
|
]);
|
|
146
140
|
React.useEffect(function () {
|
|
147
141
|
var handleClick = function (e) {
|
|
142
|
+
var _a, _b;
|
|
143
|
+
(_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.add("noFocus");
|
|
148
144
|
// Close the Panel…
|
|
149
145
|
if (e.target.classList.contains("arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel")) {
|
|
150
146
|
setOpenPanelOnFirstClick(false);
|
|
@@ -160,9 +156,10 @@ var Panel = function (_a) {
|
|
|
160
156
|
return function () {
|
|
161
157
|
document.removeEventListener("click", handleClick);
|
|
162
158
|
};
|
|
163
|
-
}, [navItemRef, setOpenPanelOnFirstClick]);
|
|
159
|
+
}, [navItemRef, setOpenPanelOnFirstClick, menubarRef]);
|
|
164
160
|
React.useEffect(function () {
|
|
165
161
|
var handleKeydown = function (e) {
|
|
162
|
+
var _a, _b;
|
|
166
163
|
// Check the viewport width at time of press
|
|
167
164
|
var isMinWidthArcBreakpointL = window.matchMedia("(min-width: ".concat(useMediaQuery.ArcBreakpointL, "px)")).matches;
|
|
168
165
|
if (e.key === "Escape" || e.keyCode === 27) {
|
|
@@ -173,12 +170,15 @@ var Panel = function (_a) {
|
|
|
173
170
|
}
|
|
174
171
|
return setOpen(false);
|
|
175
172
|
}
|
|
173
|
+
if (e.key === "Tab") {
|
|
174
|
+
(_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.remove("noFocus");
|
|
175
|
+
}
|
|
176
176
|
};
|
|
177
177
|
window.addEventListener("keydown", handleKeydown);
|
|
178
178
|
return function () {
|
|
179
179
|
window.removeEventListener("keydown", handleKeydown);
|
|
180
180
|
};
|
|
181
|
-
}, [setOpen, subNavItemRef]);
|
|
181
|
+
}, [setOpen, subNavItemRef, menubarRef]);
|
|
182
182
|
return (React__default["default"].createElement("div", { style: { display: "flex" } },
|
|
183
183
|
React__default["default"].createElement("div", filterDataAttrs.__assign({ className: index.classNames((_b = {},
|
|
184
184
|
_b["arc-SiteHeaderV2Panel"] = true,
|
|
@@ -267,8 +267,9 @@ var NavItem = function (_a) {
|
|
|
267
267
|
handler: onClick
|
|
268
268
|
}), className: "arc-SiteHeaderV2NavItem-link", href: href }, title)) : null) : (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
269
269
|
React__default["default"].createElement("div", { className: "arc-SiteHeaderV2NavItemWithSubNav-buttonContainer" },
|
|
270
|
-
React__default["default"].createElement("button", { "aria-expanded": panelOpen, className: index.classNames((_c = {},
|
|
270
|
+
React__default["default"].createElement("button", { "aria-expanded": panelOpen, role: "menuitem", "aria-haspopup": "true", "aria-label": title, className: index.classNames((_c = {},
|
|
271
271
|
_c["arc-SiteHeaderV2NavItem-link"] = true,
|
|
272
|
+
_c["arc-SiteHeaderV2NavItem-horizontalPanelFocus"] = !isPrimary,
|
|
272
273
|
_c["arc-SiteHeaderV2NavItem-link--itemHasChildren"] = true,
|
|
273
274
|
_c["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
|
|
274
275
|
_c["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
|
|
@@ -406,10 +407,11 @@ var NavItemWithSubNav = function (_a) {
|
|
|
406
407
|
? horizontalPanelOpen
|
|
407
408
|
: panelOpen,
|
|
408
409
|
_b["arc-SiteHeaderV2NavItemWithSubNav-active"] = panelOpen || (opensFirstWithPanel && openSecondaryWithSubNav),
|
|
409
|
-
_b)), ref: navItem }, filterDataAttrs.filterDataAttrs(props)),
|
|
410
|
+
_b)), role: "none", ref: navItem }, filterDataAttrs.filterDataAttrs(props)),
|
|
410
411
|
React__default["default"].createElement("div", { className: "arc-SiteHeaderV2NavItemWithSubNav-buttonContainer" },
|
|
411
|
-
React__default["default"].createElement("button", { "aria-expanded": horizontalPanelOpen, className: index.classNames((_c = {},
|
|
412
|
+
React__default["default"].createElement("button", { "aria-expanded": horizontalPanelOpen || panelOpen, role: "menuitem", "aria-label": title, "aria-haspopup": "true", tabIndex: 0, className: index.classNames((_c = {},
|
|
412
413
|
_c["arc-SiteHeaderV2NavItem-link"] = true,
|
|
414
|
+
_c["arc-SiteHeaderV2NavItem-horizontalPanelFocus"] = !isPrimary,
|
|
413
415
|
_c["arc-SiteHeaderV2NavItem-link--itemHasChildren"] = true,
|
|
414
416
|
_c["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
|
|
415
417
|
_c["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
|
|
@@ -542,7 +544,7 @@ var VerticalDivider = function () {
|
|
|
542
544
|
return React__default["default"].createElement("li", { className: "arc-SiteHeaderV2VerticalDivider-line" });
|
|
543
545
|
};
|
|
544
546
|
|
|
545
|
-
var defaultContext = { transparent: false };
|
|
547
|
+
var defaultContext = { transparent: false, menubarRef: null };
|
|
546
548
|
var Context = React.createContext(defaultContext);
|
|
547
549
|
var Provider = Context.Provider;
|
|
548
550
|
/**
|
|
@@ -554,6 +556,7 @@ var SiteHeaderV2 = function (_a) {
|
|
|
554
556
|
var _j = React.useState(false), hasClientSideJavaScript = _j[0], setHasClientSideJavaScript = _j[1];
|
|
555
557
|
var _k = React.useState(false), menuOpen = _k[0], setMenuOpen = _k[1];
|
|
556
558
|
var isMinWidthArcBreakpointL = useMediaQuery.useMediaQuery("(min-width: ".concat(useMediaQuery.ArcBreakpointL, "px)"));
|
|
559
|
+
var menubarRef = React.useRef();
|
|
557
560
|
React.useEffect(function () {
|
|
558
561
|
React__default["default"].Children.map(children, function (item) {
|
|
559
562
|
if (item &&
|
|
@@ -587,6 +590,10 @@ var SiteHeaderV2 = function (_a) {
|
|
|
587
590
|
window.removeEventListener("keydown", handleKeydown);
|
|
588
591
|
};
|
|
589
592
|
}, [setMenuOpen]);
|
|
593
|
+
React.useEffect(function () {
|
|
594
|
+
var _a, _b;
|
|
595
|
+
(_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.add("noFocus");
|
|
596
|
+
}, []);
|
|
590
597
|
React.useEffect(function () {
|
|
591
598
|
var handleClick = function (e) {
|
|
592
599
|
if (e.target.getAttribute("href")) {
|
|
@@ -602,7 +609,7 @@ var SiteHeaderV2 = function (_a) {
|
|
|
602
609
|
// useEffect does not run in ReactDomServer renders
|
|
603
610
|
setHasClientSideJavaScript(true);
|
|
604
611
|
}, [setHasClientSideJavaScript]);
|
|
605
|
-
return (React__default["default"].createElement(Provider, { value: { transparent: isTransparent } },
|
|
612
|
+
return (React__default["default"].createElement(Provider, { value: { transparent: isTransparent, menubarRef: menubarRef } },
|
|
606
613
|
React__default["default"].createElement("div", filterDataAttrs.__assign({ className: index.classNames((_b = {},
|
|
607
614
|
_b["arc-SiteHeaderV2"] = true,
|
|
608
615
|
_b["arc-SiteHeaderV2--menuOpen"] = menuOpen,
|
|
@@ -619,8 +626,8 @@ var SiteHeaderV2 = function (_a) {
|
|
|
619
626
|
children && (React__default["default"].createElement("nav", { className: "arc-SiteHeaderV2-nav" },
|
|
620
627
|
React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-menuButton" },
|
|
621
628
|
React__default["default"].createElement(MenuButton, { menuOpen: menuOpen, setMenuOpen: setMenuOpen })),
|
|
622
|
-
React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-main" },
|
|
623
|
-
React__default["default"].createElement("ul", { className: "arc-SiteHeaderV2-navItems" }, children),
|
|
629
|
+
React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-main", tabIndex: -1 },
|
|
630
|
+
React__default["default"].createElement("ul", { role: "menubar", "aria-label": "navigation", ref: menubarRef, className: "arc-SiteHeaderV2-navItems" }, children),
|
|
624
631
|
hasLogin && (React__default["default"].createElement(React__default["default"].Fragment, null, loginOnClick ? (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-mobileButtonContainer" },
|
|
625
632
|
React__default["default"].createElement("button", { className: "arc-SiteHeaderV2-mobileLogin", onClick: loginOnClick },
|
|
626
633
|
loginTitle,
|
|
@@ -635,6 +642,9 @@ var SiteHeaderV2 = function (_a) {
|
|
|
635
642
|
basket ? (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-basket" }, basket)) : null,
|
|
636
643
|
hasLogin && (React__default["default"].createElement(React__default["default"].Fragment, null, loginOnClick ? (React__default["default"].createElement("div", { className: "arc-SiteHeaderV2-loginLink arc-SiteHeaderV2-loginLink--function", onClick: loginOnClick }, loginTitle)) : (React__default["default"].createElement("a", { className: "arc-SiteHeaderV2-loginLink", href: loginHref }, loginTitle)))))))))));
|
|
637
644
|
};
|
|
645
|
+
function useHeaderV2Context() {
|
|
646
|
+
return React.useContext(Context);
|
|
647
|
+
}
|
|
638
648
|
SiteHeaderV2.Column = Column;
|
|
639
649
|
SiteHeaderV2.Item = Item;
|
|
640
650
|
SiteHeaderV2.ItemGroup = ItemGroup;
|
|
@@ -47,7 +47,7 @@ const BtIconPlayFill = (props) =>
|
|
|
47
47
|
);
|
|
48
48
|
|
|
49
49
|
var CardFooter = function (_a) {
|
|
50
|
-
var metaText = _a.metaText, _b = _a.buttonIcon, buttonIcon = _b === void 0 ? "arrow" : _b, _c = _a.isDarkPathway, isDarkPathway = _c === void 0 ? false : _c, _d = _a.showButton, showButton = _d === void 0 ? true : _d, _e = _a.
|
|
50
|
+
var metaText = _a.metaText, _b = _a.buttonIcon, buttonIcon = _b === void 0 ? "arrow" : _b, _c = _a.isDarkPathway, isDarkPathway = _c === void 0 ? false : _c, _d = _a.showButton, showButton = _d === void 0 ? true : _d, _e = _a.isHovered, isHovered = _e === void 0 ? false : _e;
|
|
51
51
|
var icons = {
|
|
52
52
|
arrow: {
|
|
53
53
|
regular: BtIconArrowRight,
|
|
@@ -59,16 +59,18 @@ var CardFooter = function (_a) {
|
|
|
59
59
|
}
|
|
60
60
|
};
|
|
61
61
|
return (React__default.createElement("div", { className: classNames("arc-CardFooter", {
|
|
62
|
-
"arc-CardFooter--darkPathway": isDarkPathway
|
|
63
|
-
"arc-CardFooter--showFilledIcon": showFilledIcon
|
|
62
|
+
"arc-CardFooter--darkPathway": isDarkPathway
|
|
64
63
|
}) },
|
|
65
64
|
React__default.createElement("div", { className: "arc-CardFooter-metaTextContainer" }, metaText && (React__default.createElement("span", { className: "arc-CardFooter-metaText" }, metaText))),
|
|
66
65
|
showButton && (React__default.createElement("div", null,
|
|
67
66
|
React__default.createElement("div", { className: "arc-CardFooter-button" },
|
|
68
|
-
React__default.createElement("div", { className:
|
|
69
|
-
React__default.createElement(
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
React__default.createElement("div", { className: "arc-CardFooter-buttonIcon" },
|
|
68
|
+
React__default.createElement("div", { className: classNames("arc-CardFooter-buttonIconRight", {
|
|
69
|
+
"arc-CardFooter-buttonIconRight--isHovered": isHovered
|
|
70
|
+
}) },
|
|
71
|
+
React__default.createElement(Icon, { icon: icons[buttonIcon].regular, size: 40 })),
|
|
72
|
+
React__default.createElement("div", { className: "arc-CardFooter-buttonIconLeft" },
|
|
73
|
+
React__default.createElement(Icon, { icon: icons[buttonIcon].regular, size: 40 }))))))));
|
|
72
74
|
};
|
|
73
75
|
|
|
74
76
|
export { CardFooter as C };
|
|
@@ -14,7 +14,7 @@ var FilterControl = function (_a) {
|
|
|
14
14
|
return (React__default.createElement("button", { className: classNames("arc-FilterControl", {
|
|
15
15
|
"arc-FilterControl--onDarkSurface": surface === "dark",
|
|
16
16
|
"arc-FilterControl--selected": selected
|
|
17
|
-
}), onClick: onClickHandler, tabIndex: 0 },
|
|
17
|
+
}), onClick: onClickHandler, tabIndex: 0, "aria-pressed": selected },
|
|
18
18
|
React__default.createElement("div", { className: "arc-FilterControl-text" }, children)));
|
|
19
19
|
};
|
|
20
20
|
|
|
@@ -32,16 +32,20 @@ var FilterItem = function (_a) {
|
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
var FilterItems = function (_a) {
|
|
35
|
-
var children = _a.children, _b = _a.displayType, displayType = _b === void 0 ? "grid" : _b, props = __rest(_a, ["children", "displayType"]);
|
|
36
|
-
return (React__default.createElement("div",
|
|
37
|
-
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
35
|
+
var children = _a.children, error = _a.error, _b = _a.displayType, displayType = _b === void 0 ? "grid" : _b, props = __rest(_a, ["children", "error", "displayType"]);
|
|
36
|
+
return React__default.Children.toArray(children).length > 0 ? (React__default.createElement("div", null,
|
|
37
|
+
React__default.createElement("div", { className: "arc-FilterItems-offscreen", "aria-live": "assertive" }, React__default.Children.toArray(children).length > 0
|
|
38
|
+
? "".concat(React__default.Children.toArray(children).length, " records listed.")
|
|
39
|
+
: null),
|
|
40
|
+
React__default.createElement("div", __assign({ className: classNames("arc-FilterItems", {
|
|
41
|
+
"arc-FilterItems--list": displayType === "list",
|
|
42
|
+
"arc-FilterItems--grid": displayType === "grid"
|
|
43
|
+
}) }, filterDataAttrs(props)), displayType === "list"
|
|
44
|
+
? React__default.Children.toArray(children).map(function (child, index, array) { return (React__default.createElement(React__default.Fragment, { key: index },
|
|
45
|
+
child,
|
|
46
|
+
index !== array.length - 1 && (React__default.createElement(React__default.Fragment, null,
|
|
47
|
+
React__default.createElement("div", { className: "arc-FilterItems-separator", "data-testid": "arc-FilterItems-separator" }))))); })
|
|
48
|
+
: children))) : (React__default.createElement("div", { "aria-live": "assertive" }, error));
|
|
45
49
|
};
|
|
46
50
|
|
|
47
51
|
/** use `Filter` for interactive elements that filter and categorise page content. */
|
|
@@ -101,7 +105,7 @@ var Filter = function (_a) {
|
|
|
101
105
|
React__default.createElement(FilterControls, { controlsAlignment: controlsAlignment }, controls &&
|
|
102
106
|
React__default.isValidElement(controls) &&
|
|
103
107
|
React__default.Children.map(controls.props.children, function (control, index) { return (React__default.createElement(FilterControl, { key: index, onClick: function () { return handleControlClick(control.props.children); }, isSelected: control.props.isSelected }, control.props.children)); })),
|
|
104
|
-
|
|
108
|
+
React__default.createElement(FilterItems, { displayType: displayType, error: error }, filteredItems.map(function (item) { return item.props.children; }))));
|
|
105
109
|
};
|
|
106
110
|
Filter.Controls = FilterControls;
|
|
107
111
|
Filter.Control = FilterControl;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { _ as __rest, a as __assign, f as filterDataAttrs } from './filter-data-attrs-ea8f4ed4.js';
|
|
2
2
|
import { u as useMediaQuery, b as ArcBreakpointL } from './use-media-query-4c807227.js';
|
|
3
3
|
import { c as classNames } from './index-2e73c2e9.js';
|
|
4
|
-
import React__default, {
|
|
4
|
+
import React__default, { useEffect, Fragment, useRef, useState, createContext, useContext } from 'react';
|
|
5
5
|
import { B as BrandLogo } from './BrandLogo-1af78f76.js';
|
|
6
6
|
import { S as Surface } from './Surface-0ca6817d.js';
|
|
7
7
|
import { h as handleLinkClick } from './handle-link-click-f64f55a2.js';
|
|
8
8
|
import { B as BtIconChevronRightMid } from './BtIconChevronRightMid.esm-32268f1a.js';
|
|
9
|
+
import { C as ConditionalWrapper } from './ConditionalWrapper-59be8f35.js';
|
|
9
10
|
import { B as BtIconChevronLeft2Px, a as BtIconChevronRight2Px } from './BtIconChevronRight2Px.esm-75e92636.js';
|
|
10
11
|
import { B as Button } from './Button-3f294e64.js';
|
|
11
12
|
import { s as suffixModifier } from './suffix-modifier-3d548e45.js';
|
|
@@ -18,8 +19,8 @@ var Item = function (_a) {
|
|
|
18
19
|
return (React__default.createElement("li", __assign({ className: classNames((_b = {},
|
|
19
20
|
_b["arc-SiteHeaderV2Item"] = true,
|
|
20
21
|
_b["arc-SiteHeaderV2Item--emphasised"] = true,
|
|
21
|
-
_b)) }, filterDataAttrs(props)),
|
|
22
|
-
React__default.createElement("a", { onClick: handleLinkClick({ handler: onClick }), className: "arc-SiteHeaderV2Item-link", href: href },
|
|
22
|
+
_b)) }, filterDataAttrs(props), { role: "none" }),
|
|
23
|
+
React__default.createElement("a", { onClick: handleLinkClick({ handler: onClick }), className: "arc-SiteHeaderV2Item-link", href: href, role: "menuitem" },
|
|
23
24
|
children,
|
|
24
25
|
React__default.createElement("span", { className: "arc-SiteHeaderV2Item-linkIcon" },
|
|
25
26
|
React__default.createElement(BtIconChevronRightMid, null)))));
|
|
@@ -27,7 +28,6 @@ var Item = function (_a) {
|
|
|
27
28
|
|
|
28
29
|
var ItemGroup = function (_a) {
|
|
29
30
|
var children = _a.children, href = _a.href, title = _a.title, subtitle = _a.subtitle, onClick = _a.onClick, viewAllTitle = _a.viewAllTitle, props = __rest(_a, ["children", "href", "title", "subtitle", "onClick", "viewAllTitle"]);
|
|
30
|
-
var _b = useState(false), hasClientSideJavaScript = _b[0], setHasClientSideJavaScript = _b[1];
|
|
31
31
|
var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
|
|
32
32
|
useEffect(function () {
|
|
33
33
|
React__default.Children.map(children, function (item) {
|
|
@@ -36,27 +36,18 @@ var ItemGroup = function (_a) {
|
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
}, [children]);
|
|
39
|
-
|
|
40
|
-
// useEffect does not run in ReactDomServer renders
|
|
41
|
-
setHasClientSideJavaScript(true);
|
|
42
|
-
}, [setHasClientSideJavaScript]);
|
|
43
|
-
var ElementType = "div";
|
|
44
|
-
if (title) {
|
|
45
|
-
ElementType = "details";
|
|
46
|
-
}
|
|
39
|
+
var ElementType = title ? "details" : "div";
|
|
47
40
|
return (React__default.createElement("li", { className: "arc-SiteHeaderV2ItemGroup" },
|
|
48
41
|
React__default.createElement(ElementType, __assign({ className: "arc-SiteHeaderV2ItemGroup-details", open: Boolean(title && isMinWidthArcBreakpointL) }, filterDataAttrs(props)),
|
|
49
42
|
title ? (React__default.createElement(React__default.Fragment, null,
|
|
50
|
-
React__default.createElement("summary", {
|
|
51
|
-
React__default.createElement("a", { onClick: handleLinkClick({
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
? 0
|
|
55
|
-
: -1 }, title),
|
|
43
|
+
React__default.createElement("summary", { tabIndex: isMinWidthArcBreakpointL ? -1 : 0, className: "arc-SiteHeaderV2ItemGroup-summary" }, href ? (React__default.createElement("div", { className: "arc-SiteHeaderV2ItemGroup-heading" },
|
|
44
|
+
React__default.createElement(ConditionalWrapper, { condition: isMinWidthArcBreakpointL, wrapper: function (children) { return (React__default.createElement("a", { onClick: handleLinkClick({
|
|
45
|
+
handler: onClick
|
|
46
|
+
}), className: "arc-SiteHeaderV2ItemGroup-title", href: href }, children)); }, fallback: function (children) { return (React__default.createElement("div", { className: "arc-SiteHeaderV2ItemGroup-title" }, children)); } }, title),
|
|
56
47
|
React__default.createElement("span", { className: "arc-SiteHeaderV2ItemGroup-titleIcon" },
|
|
57
48
|
React__default.createElement(BtIconChevronRightMid, null)))) : (React__default.createElement("div", { className: "arc-SiteHeaderV2ItemGroup-title" }, title))),
|
|
58
49
|
React__default.createElement("span", { className: "arc-SiteHeaderV2ItemGroup-subtitle" }, subtitle))) : null,
|
|
59
|
-
React__default.createElement("ul", { className: "arc-SiteHeaderV2ItemGroup-items" },
|
|
50
|
+
React__default.createElement("ul", { className: "arc-SiteHeaderV2ItemGroup-items", role: "menubar" },
|
|
60
51
|
children,
|
|
61
52
|
href && title ? (React__default.createElement("li", { className: "arc-SiteHeaderV2Item arc-SiteHeaderV2Item--viewAll" },
|
|
62
53
|
React__default.createElement("a", { className: "arc-SiteHeaderV2Item-link", onClick: handleLinkClick({
|
|
@@ -73,8 +64,8 @@ var Column = function (_a) {
|
|
|
73
64
|
}
|
|
74
65
|
});
|
|
75
66
|
}, [children]);
|
|
76
|
-
return (React__default.createElement("li", __assign({ className: "arc-SiteHeaderV2Column" }, filterDataAttrs(props)),
|
|
77
|
-
React__default.createElement("ul", { className: "arc-SiteHeaderV2Column-items" }, children)));
|
|
67
|
+
return (React__default.createElement("li", __assign({ className: "arc-SiteHeaderV2Column" }, filterDataAttrs(props), { role: "none" }),
|
|
68
|
+
React__default.createElement("ul", { className: "arc-SiteHeaderV2Column-items", role: "none" }, children)));
|
|
78
69
|
};
|
|
79
70
|
|
|
80
71
|
var BackButton = function (_a) {
|
|
@@ -92,19 +83,21 @@ var Panel = function (_a) {
|
|
|
92
83
|
var _b, _c, _d, _e, _f;
|
|
93
84
|
var children = _a.children, navItemRef = _a.navItemRef, isNavItem = _a.isNavItem, open = _a.open, setOpen = _a.setOpen, setOpenPanelOnFirstClick = _a.setOpenPanelOnFirstClick, subNavItemRef = _a.subNavItemRef; _a.navLink; var _h = _a.subNavLink, subNavLink = _h === void 0 ? "" : _h, title = _a.title, subtitle = _a.subtitle, viewAll = _a.viewAll, withSubNav = _a.withSubNav; _a.fade; var isPrimary = _a.isPrimary, props = __rest(_a, ["children", "navItemRef", "isNavItem", "open", "setOpen", "setOpenPanelOnFirstClick", "subNavItemRef", "navLink", "subNavLink", "title", "subtitle", "viewAll", "withSubNav", "fade", "isPrimary"]);
|
|
94
85
|
var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
|
|
86
|
+
var menubarRef = useHeaderV2Context().menubarRef;
|
|
95
87
|
useEffect(function () {
|
|
96
88
|
// Where appropriate, close the Panel when clicking outside of it,
|
|
97
89
|
// by listening to clicks on the entire document and acting accordingly.
|
|
98
90
|
var handleClick = function (e) {
|
|
99
|
-
var _a, _b;
|
|
91
|
+
var _a, _b, _c, _d;
|
|
92
|
+
(_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.add("noFocus");
|
|
100
93
|
// Don't close the Panel…
|
|
101
94
|
if (
|
|
102
95
|
// The click is inside the current SubNavItem.
|
|
103
|
-
((
|
|
96
|
+
((_c = subNavItemRef === null || subNavItemRef === void 0 ? void 0 : subNavItemRef.current) === null || _c === void 0 ? void 0 : _c.contains(e.target)) ||
|
|
104
97
|
// The click is inside the current NavItem
|
|
105
98
|
// and the Panel is not inside a SubNavItem.
|
|
106
99
|
// and the target is not a link
|
|
107
|
-
(((
|
|
100
|
+
(((_d = navItemRef === null || navItemRef === void 0 ? void 0 : navItemRef.current) === null || _d === void 0 ? void 0 : _d.contains(e.target)) &&
|
|
108
101
|
!subNavItemRef &&
|
|
109
102
|
!e.target.getAttribute("href")) ||
|
|
110
103
|
// The Panel is inside a SubNavItem
|
|
@@ -136,9 +129,12 @@ var Panel = function (_a) {
|
|
|
136
129
|
subNavItemRef,
|
|
137
130
|
subNavLink,
|
|
138
131
|
setOpenPanelOnFirstClick,
|
|
132
|
+
menubarRef,
|
|
139
133
|
]);
|
|
140
134
|
useEffect(function () {
|
|
141
135
|
var handleClick = function (e) {
|
|
136
|
+
var _a, _b;
|
|
137
|
+
(_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.add("noFocus");
|
|
142
138
|
// Close the Panel…
|
|
143
139
|
if (e.target.classList.contains("arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel")) {
|
|
144
140
|
setOpenPanelOnFirstClick(false);
|
|
@@ -154,9 +150,10 @@ var Panel = function (_a) {
|
|
|
154
150
|
return function () {
|
|
155
151
|
document.removeEventListener("click", handleClick);
|
|
156
152
|
};
|
|
157
|
-
}, [navItemRef, setOpenPanelOnFirstClick]);
|
|
153
|
+
}, [navItemRef, setOpenPanelOnFirstClick, menubarRef]);
|
|
158
154
|
useEffect(function () {
|
|
159
155
|
var handleKeydown = function (e) {
|
|
156
|
+
var _a, _b;
|
|
160
157
|
// Check the viewport width at time of press
|
|
161
158
|
var isMinWidthArcBreakpointL = window.matchMedia("(min-width: ".concat(ArcBreakpointL, "px)")).matches;
|
|
162
159
|
if (e.key === "Escape" || e.keyCode === 27) {
|
|
@@ -167,12 +164,15 @@ var Panel = function (_a) {
|
|
|
167
164
|
}
|
|
168
165
|
return setOpen(false);
|
|
169
166
|
}
|
|
167
|
+
if (e.key === "Tab") {
|
|
168
|
+
(_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.remove("noFocus");
|
|
169
|
+
}
|
|
170
170
|
};
|
|
171
171
|
window.addEventListener("keydown", handleKeydown);
|
|
172
172
|
return function () {
|
|
173
173
|
window.removeEventListener("keydown", handleKeydown);
|
|
174
174
|
};
|
|
175
|
-
}, [setOpen, subNavItemRef]);
|
|
175
|
+
}, [setOpen, subNavItemRef, menubarRef]);
|
|
176
176
|
return (React__default.createElement("div", { style: { display: "flex" } },
|
|
177
177
|
React__default.createElement("div", __assign({ className: classNames((_b = {},
|
|
178
178
|
_b["arc-SiteHeaderV2Panel"] = true,
|
|
@@ -261,8 +261,9 @@ var NavItem = function (_a) {
|
|
|
261
261
|
handler: onClick
|
|
262
262
|
}), className: "arc-SiteHeaderV2NavItem-link", href: href }, title)) : null) : (React__default.createElement(React__default.Fragment, null,
|
|
263
263
|
React__default.createElement("div", { className: "arc-SiteHeaderV2NavItemWithSubNav-buttonContainer" },
|
|
264
|
-
React__default.createElement("button", { "aria-expanded": panelOpen, className: classNames((_c = {},
|
|
264
|
+
React__default.createElement("button", { "aria-expanded": panelOpen, role: "menuitem", "aria-haspopup": "true", "aria-label": title, className: classNames((_c = {},
|
|
265
265
|
_c["arc-SiteHeaderV2NavItem-link"] = true,
|
|
266
|
+
_c["arc-SiteHeaderV2NavItem-horizontalPanelFocus"] = !isPrimary,
|
|
266
267
|
_c["arc-SiteHeaderV2NavItem-link--itemHasChildren"] = true,
|
|
267
268
|
_c["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
|
|
268
269
|
_c["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
|
|
@@ -400,10 +401,11 @@ var NavItemWithSubNav = function (_a) {
|
|
|
400
401
|
? horizontalPanelOpen
|
|
401
402
|
: panelOpen,
|
|
402
403
|
_b["arc-SiteHeaderV2NavItemWithSubNav-active"] = panelOpen || (opensFirstWithPanel && openSecondaryWithSubNav),
|
|
403
|
-
_b)), ref: navItem }, filterDataAttrs(props)),
|
|
404
|
+
_b)), role: "none", ref: navItem }, filterDataAttrs(props)),
|
|
404
405
|
React__default.createElement("div", { className: "arc-SiteHeaderV2NavItemWithSubNav-buttonContainer" },
|
|
405
|
-
React__default.createElement("button", { "aria-expanded": horizontalPanelOpen, className: classNames((_c = {},
|
|
406
|
+
React__default.createElement("button", { "aria-expanded": horizontalPanelOpen || panelOpen, role: "menuitem", "aria-label": title, "aria-haspopup": "true", tabIndex: 0, className: classNames((_c = {},
|
|
406
407
|
_c["arc-SiteHeaderV2NavItem-link"] = true,
|
|
408
|
+
_c["arc-SiteHeaderV2NavItem-horizontalPanelFocus"] = !isPrimary,
|
|
407
409
|
_c["arc-SiteHeaderV2NavItem-link--itemHasChildren"] = true,
|
|
408
410
|
_c["arc-SiteHeaderV2NavItem-link--itemHasChildren-closeFirstPanel"] = !isPrimary && !opensFirstWithPanel,
|
|
409
411
|
_c["arc-SiteHeaderV2NavItem-link--itemHasChildren-hasFirstPanel"] = opensFirstWithPanel,
|
|
@@ -536,7 +538,7 @@ var VerticalDivider = function () {
|
|
|
536
538
|
return React__default.createElement("li", { className: "arc-SiteHeaderV2VerticalDivider-line" });
|
|
537
539
|
};
|
|
538
540
|
|
|
539
|
-
var defaultContext = { transparent: false };
|
|
541
|
+
var defaultContext = { transparent: false, menubarRef: null };
|
|
540
542
|
var Context = createContext(defaultContext);
|
|
541
543
|
var Provider = Context.Provider;
|
|
542
544
|
/**
|
|
@@ -548,6 +550,7 @@ var SiteHeaderV2 = function (_a) {
|
|
|
548
550
|
var _j = useState(false), hasClientSideJavaScript = _j[0], setHasClientSideJavaScript = _j[1];
|
|
549
551
|
var _k = useState(false), menuOpen = _k[0], setMenuOpen = _k[1];
|
|
550
552
|
var isMinWidthArcBreakpointL = useMediaQuery("(min-width: ".concat(ArcBreakpointL, "px)"));
|
|
553
|
+
var menubarRef = useRef();
|
|
551
554
|
useEffect(function () {
|
|
552
555
|
React__default.Children.map(children, function (item) {
|
|
553
556
|
if (item &&
|
|
@@ -581,6 +584,10 @@ var SiteHeaderV2 = function (_a) {
|
|
|
581
584
|
window.removeEventListener("keydown", handleKeydown);
|
|
582
585
|
};
|
|
583
586
|
}, [setMenuOpen]);
|
|
587
|
+
useEffect(function () {
|
|
588
|
+
var _a, _b;
|
|
589
|
+
(_b = (_a = menubarRef === null || menubarRef === void 0 ? void 0 : menubarRef.current) === null || _a === void 0 ? void 0 : _a.classList) === null || _b === void 0 ? void 0 : _b.add("noFocus");
|
|
590
|
+
}, []);
|
|
584
591
|
useEffect(function () {
|
|
585
592
|
var handleClick = function (e) {
|
|
586
593
|
if (e.target.getAttribute("href")) {
|
|
@@ -596,7 +603,7 @@ var SiteHeaderV2 = function (_a) {
|
|
|
596
603
|
// useEffect does not run in ReactDomServer renders
|
|
597
604
|
setHasClientSideJavaScript(true);
|
|
598
605
|
}, [setHasClientSideJavaScript]);
|
|
599
|
-
return (React__default.createElement(Provider, { value: { transparent: isTransparent } },
|
|
606
|
+
return (React__default.createElement(Provider, { value: { transparent: isTransparent, menubarRef: menubarRef } },
|
|
600
607
|
React__default.createElement("div", __assign({ className: classNames((_b = {},
|
|
601
608
|
_b["arc-SiteHeaderV2"] = true,
|
|
602
609
|
_b["arc-SiteHeaderV2--menuOpen"] = menuOpen,
|
|
@@ -613,8 +620,8 @@ var SiteHeaderV2 = function (_a) {
|
|
|
613
620
|
children && (React__default.createElement("nav", { className: "arc-SiteHeaderV2-nav" },
|
|
614
621
|
React__default.createElement("div", { className: "arc-SiteHeaderV2-menuButton" },
|
|
615
622
|
React__default.createElement(MenuButton, { menuOpen: menuOpen, setMenuOpen: setMenuOpen })),
|
|
616
|
-
React__default.createElement("div", { className: "arc-SiteHeaderV2-main" },
|
|
617
|
-
React__default.createElement("ul", { className: "arc-SiteHeaderV2-navItems" }, children),
|
|
623
|
+
React__default.createElement("div", { className: "arc-SiteHeaderV2-main", tabIndex: -1 },
|
|
624
|
+
React__default.createElement("ul", { role: "menubar", "aria-label": "navigation", ref: menubarRef, className: "arc-SiteHeaderV2-navItems" }, children),
|
|
618
625
|
hasLogin && (React__default.createElement(React__default.Fragment, null, loginOnClick ? (React__default.createElement("div", { className: "arc-SiteHeaderV2-mobileButtonContainer" },
|
|
619
626
|
React__default.createElement("button", { className: "arc-SiteHeaderV2-mobileLogin", onClick: loginOnClick },
|
|
620
627
|
loginTitle,
|
|
@@ -629,6 +636,9 @@ var SiteHeaderV2 = function (_a) {
|
|
|
629
636
|
basket ? (React__default.createElement("div", { className: "arc-SiteHeaderV2-basket" }, basket)) : null,
|
|
630
637
|
hasLogin && (React__default.createElement(React__default.Fragment, null, loginOnClick ? (React__default.createElement("div", { className: "arc-SiteHeaderV2-loginLink arc-SiteHeaderV2-loginLink--function", onClick: loginOnClick }, loginTitle)) : (React__default.createElement("a", { className: "arc-SiteHeaderV2-loginLink", href: loginHref }, loginTitle)))))))))));
|
|
631
638
|
};
|
|
639
|
+
function useHeaderV2Context() {
|
|
640
|
+
return useContext(Context);
|
|
641
|
+
}
|
|
632
642
|
SiteHeaderV2.Column = Column;
|
|
633
643
|
SiteHeaderV2.Item = Item;
|
|
634
644
|
SiteHeaderV2.ItemGroup = ItemGroup;
|