@asante-org/atlascopco-vt-litesitegenerator 1.2.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +366 -47
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.scss +1299 -105
- package/dist/index.js +365 -46
- package/dist/index.js.map +1 -1
- package/dist/index.scss +1299 -105
- package/dist/src/components/lsg/LsgButton/LsgButton.d.ts +1 -1
- package/dist/src/components/lsg/LsgButton/LsgButton.stories.d.ts +3 -3
- package/dist/src/components/lsg/LsgHeader/LsgHeader.d.ts +12 -0
- package/dist/src/components/lsg/LsgHeader/LsgHeader.stories.d.ts +4 -1
- package/dist/src/components/lsg/LsgLanguageSwitcher/LsgLanguageSwitcher.d.ts +2 -0
- package/dist/src/components/lsg/LsgNavigation/LsgNavigation.d.ts +4 -0
- package/dist/src/components/lsg/LsgTypography.stories.d.ts +5 -0
- package/dist/src/components/lsg/index.d.ts +2 -0
- package/dist/src/utils/LsgIcon.d.ts +8 -0
- package/dist/src/utils/index.d.ts +2 -0
- package/dist/themes/theme-1.css +938 -89
- package/dist/themes/theme-1.css.map +1 -1
- package/dist/themes/theme-2.css +789 -68
- package/dist/themes/theme-2.css.map +1 -1
- package/dist/themes/theme-3.css +789 -68
- package/dist/themes/theme-3.css.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useState, useRef, useEffect } from 'react';
|
|
1
|
+
import React, { useState, useRef, useId, useEffect } from 'react';
|
|
2
2
|
|
|
3
3
|
function _extends() {
|
|
4
4
|
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
|
@@ -11,10 +11,9 @@ function _extends() {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
var LsgButton = function (_a) {
|
|
14
|
-
var children = _a.children
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
_c = _a.disabled,
|
|
14
|
+
var children = _a.children;
|
|
15
|
+
_a.variant;
|
|
16
|
+
var _c = _a.disabled,
|
|
18
17
|
disabled = _c === void 0 ? false : _c,
|
|
19
18
|
href = _a.href,
|
|
20
19
|
onClick = _a.onClick,
|
|
@@ -24,7 +23,7 @@ var LsgButton = function (_a) {
|
|
|
24
23
|
className = _e === void 0 ? "" : _e,
|
|
25
24
|
_f = _a.external,
|
|
26
25
|
external = _f === void 0 ? false : _f;
|
|
27
|
-
var classNames = ["lsg-button",
|
|
26
|
+
var classNames = ["lsg-button", disabled ? "lsg-button--disabled" : "", className].filter(Boolean).join(" ");
|
|
28
27
|
if (href) {
|
|
29
28
|
return /*#__PURE__*/React.createElement("a", _extends({
|
|
30
29
|
href: disabled ? undefined : href,
|
|
@@ -34,7 +33,9 @@ var LsgButton = function (_a) {
|
|
|
34
33
|
}, external ? {
|
|
35
34
|
target: "_blank",
|
|
36
35
|
rel: "noopener noreferrer"
|
|
37
|
-
} : {}),
|
|
36
|
+
} : {}), /*#__PURE__*/React.createElement("span", {
|
|
37
|
+
className: "lsg-button__text"
|
|
38
|
+
}, children));
|
|
38
39
|
}
|
|
39
40
|
return /*#__PURE__*/React.createElement("button", {
|
|
40
41
|
type: type,
|
|
@@ -101,7 +102,7 @@ var LsgCard = function (_a) {
|
|
|
101
102
|
}, /*#__PURE__*/React.createElement(LsgButton, {
|
|
102
103
|
href: cta.href,
|
|
103
104
|
external: cta.external,
|
|
104
|
-
variant: "
|
|
105
|
+
variant: "primary"
|
|
105
106
|
}, cta.label))));
|
|
106
107
|
if (href) {
|
|
107
108
|
return /*#__PURE__*/React.createElement("article", {
|
|
@@ -159,23 +160,72 @@ var LsgLogo = function (_a) {
|
|
|
159
160
|
var LsgNavigation = function (_a) {
|
|
160
161
|
var items = _a.items,
|
|
161
162
|
_b = _a.label,
|
|
162
|
-
label = _b === void 0 ? "Main navigation" : _b
|
|
163
|
+
label = _b === void 0 ? "Main navigation" : _b,
|
|
164
|
+
_c = _a.variant,
|
|
165
|
+
variant = _c === void 0 ? "simple" : _c,
|
|
166
|
+
onItemClick = _a.onItemClick;
|
|
167
|
+
var renderItems = function (navItems, level) {
|
|
168
|
+
if (level === void 0) {
|
|
169
|
+
level = 0;
|
|
170
|
+
}
|
|
171
|
+
return /*#__PURE__*/React.createElement("ul", {
|
|
172
|
+
className: level === 0 ? "lsg-nav__list" : "lsg-nav__dropdown",
|
|
173
|
+
role: "list"
|
|
174
|
+
}, navItems.map(function (item) {
|
|
175
|
+
var _a;
|
|
176
|
+
var hasChildren = Boolean((_a = item.children) === null || _a === void 0 ? void 0 : _a.length);
|
|
177
|
+
return /*#__PURE__*/React.createElement("li", {
|
|
178
|
+
key: "".concat(item.href, "-").concat(level),
|
|
179
|
+
className: ["lsg-nav__item", hasChildren ? "lsg-nav__item--has-children" : "", item.open ? "lsg-nav__item--open" : ""].filter(Boolean).join(" ")
|
|
180
|
+
}, /*#__PURE__*/React.createElement("a", {
|
|
181
|
+
href: item.href,
|
|
182
|
+
onClick: function (event) {
|
|
183
|
+
if (onItemClick && hasChildren) {
|
|
184
|
+
event.preventDefault();
|
|
185
|
+
onItemClick(item, level);
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
className: ["lsg-nav__link", item.current ? "lsg-nav__link--current" : ""].filter(Boolean).join(" "),
|
|
189
|
+
"aria-current": item.current ? "page" : undefined,
|
|
190
|
+
"aria-expanded": variant === "dropdown" && hasChildren ? item.open : undefined
|
|
191
|
+
}, /*#__PURE__*/React.createElement("p", null, item.label), hasChildren && /*#__PURE__*/React.createElement("span", {
|
|
192
|
+
className: "lsg-nav__chevron",
|
|
193
|
+
"aria-hidden": "true"
|
|
194
|
+
}, /*#__PURE__*/React.createElement("svg", {
|
|
195
|
+
viewBox: "0 0 640 640",
|
|
196
|
+
focusable: "false"
|
|
197
|
+
}, /*#__PURE__*/React.createElement("path", {
|
|
198
|
+
d: "M471.1 297.4C483.6 309.9 483.6 330.2 471.1 342.7L279.1 534.7C266.6 547.2 246.3 547.2 233.8 534.7C221.3 522.2 221.3 501.9 233.8 489.4L403.2 320L233.9 150.6C221.4 138.1 221.4 117.8 233.9 105.3C246.4 92.8 266.7 92.8 279.2 105.3L471.2 297.3z"
|
|
199
|
+
})))), hasChildren && renderItems(item.children || [], level + 1));
|
|
200
|
+
}));
|
|
201
|
+
};
|
|
163
202
|
return /*#__PURE__*/React.createElement("nav", {
|
|
164
|
-
className: "lsg-nav",
|
|
203
|
+
className: ["lsg-nav", "lsg-nav--".concat(variant)].join(" "),
|
|
165
204
|
"aria-label": label
|
|
166
|
-
},
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
205
|
+
}, renderItems(items));
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
var LSG_ICON_PATHS = {
|
|
209
|
+
bars: "M96 160C96 142.3 110.3 128 128 128L512 128C529.7 128 544 142.3 544 160C544 177.7 529.7 192 512 192L128 192C110.3 192 96 177.7 96 160zM96 320C96 302.3 110.3 288 128 288L512 288C529.7 288 544 302.3 544 320C544 337.7 529.7 352 512 352L128 352C110.3 352 96 337.7 96 320zM544 480C544 497.7 529.7 512 512 512L128 512C110.3 512 96 497.7 96 480C96 462.3 110.3 448 128 448L512 448C529.7 448 544 462.3 544 480z",
|
|
210
|
+
chevronLeft: "M169.4 297.4C156.9 309.9 156.9 330.2 169.4 342.7L361.4 534.7C373.9 547.2 394.2 547.2 406.7 534.7C419.2 522.2 419.2 501.9 406.7 489.4L237.3 320L406.6 150.6C419.1 138.1 419.1 117.8 406.6 105.3C394.1 92.8 373.8 92.8 361.3 105.3L169.3 297.3z",
|
|
211
|
+
chevronRight: "M471.1 297.4C483.6 309.9 483.6 330.2 471.1 342.7L279.1 534.7C266.6 547.2 246.3 547.2 233.8 534.7C221.3 522.2 221.3 501.9 233.8 489.4L403.2 320L233.9 150.6C221.4 138.1 221.4 117.8 233.9 105.3C246.4 92.8 266.7 92.8 279.2 105.3L471.2 297.3z",
|
|
212
|
+
close: "M504.6 148.5C515.9 134.9 514.1 114.7 500.5 103.4C486.9 92.1 466.7 93.9 455.4 107.5L320 270L184.6 107.5C173.3 93.9 153.1 92.1 139.5 103.4C125.9 114.7 124.1 134.9 135.4 148.5L278.3 320L135.4 491.5C124.1 505.1 125.9 525.3 139.5 536.6C153.1 547.9 173.3 546.1 184.6 532.5L320 370L455.4 532.5C466.7 546.1 486.9 547.9 500.5 536.6C514.1 525.3 515.9 505.1 504.6 491.5L361.7 320L504.6 148.5z",
|
|
213
|
+
globe: "M367.2 477C345.7 520.7 325.8 528 320 528C314.2 528 294.3 520.7 272.8 477C255.8 442.5 243.6 395.4 240.7 344L399.3 344C396.3 395.5 384.1 442.6 367.2 477zM399.3 296L240.7 296C243.7 244.5 255.9 197.4 272.8 163C294.3 119.3 314.2 112 320 112C325.8 112 345.7 119.3 367.2 163C384.2 197.5 396.4 244.6 399.3 296zM447.4 344L526.6 344C518 418.6 469.9 481.3 403.8 510.4C427.8 467.6 444.1 408 447.4 344zM526.6 296L447.4 296C444.1 232 427.8 172.4 403.8 129.6C469.9 158.8 518 221.4 526.6 296zM192.6 296L113.4 296C122 221.4 170.1 158.7 236.2 129.6C212.2 172.4 195.9 232 192.6 296zM113.4 344L192.6 344C195.9 408 212.2 467.6 236.2 510.4C170.1 481.2 122 418.6 113.4 344zM320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 461.4 178.6 576 320 576z",
|
|
214
|
+
home: "M96 320L320 128L544 320H480V528H352V384H288V528H160V320H96z",
|
|
215
|
+
search: "M480 272C480 317.9 465.1 360.3 440 394.7L566.6 521.4C579.1 533.9 579.1 554.2 566.6 566.7C554.1 579.2 533.8 579.2 521.3 566.7L394.7 440C360.3 465.1 317.9 480 272 480C157.1 480 64 386.9 64 272C64 157.1 157.1 64 272 64C386.9 64 480 157.1 480 272zM272 416C351.5 416 416 351.5 416 272C416 192.5 351.5 128 272 128C192.5 128 128 192.5 128 272C128 351.5 192.5 416 272 416z"
|
|
216
|
+
};
|
|
217
|
+
var LsgIcon = function (_a) {
|
|
218
|
+
var name = _a.name,
|
|
219
|
+
className = _a.className;
|
|
220
|
+
return /*#__PURE__*/React.createElement("svg", {
|
|
221
|
+
className: className,
|
|
222
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
223
|
+
viewBox: "0 0 640 640",
|
|
224
|
+
"aria-hidden": "true",
|
|
225
|
+
focusable: "false"
|
|
226
|
+
}, /*#__PURE__*/React.createElement("path", {
|
|
227
|
+
d: LSG_ICON_PATHS[name]
|
|
228
|
+
}));
|
|
179
229
|
};
|
|
180
230
|
|
|
181
231
|
var ChevronIcon = function () {
|
|
@@ -203,13 +253,15 @@ var LsgLanguageSwitcher = function (_a) {
|
|
|
203
253
|
var currentLanguage = _a.currentLanguage,
|
|
204
254
|
languages = _a.languages,
|
|
205
255
|
_b = _a.label,
|
|
206
|
-
label = _b === void 0 ? "Select language" : _b
|
|
256
|
+
label = _b === void 0 ? "Select language" : _b,
|
|
257
|
+
onLanguageChange = _a.onLanguageChange;
|
|
207
258
|
var _c = useState(false),
|
|
208
259
|
isOpen = _c[0],
|
|
209
260
|
setIsOpen = _c[1];
|
|
210
261
|
var containerRef = useRef(null);
|
|
211
|
-
var
|
|
212
|
-
var
|
|
262
|
+
var reactId = useId();
|
|
263
|
+
var triggerId = "lsg-lang-trigger-".concat(reactId);
|
|
264
|
+
var dropdownId = "lsg-lang-dropdown-".concat(reactId);
|
|
213
265
|
// Close on outside click
|
|
214
266
|
useEffect(function () {
|
|
215
267
|
if (!isOpen) return;
|
|
@@ -251,7 +303,12 @@ var LsgLanguageSwitcher = function (_a) {
|
|
|
251
303
|
return !prev;
|
|
252
304
|
});
|
|
253
305
|
}
|
|
254
|
-
},
|
|
306
|
+
}, /*#__PURE__*/React.createElement(LsgIcon, {
|
|
307
|
+
name: "globe",
|
|
308
|
+
className: "lsg-lang-switcher__globe"
|
|
309
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
310
|
+
className: "lsg-lang-switcher__current"
|
|
311
|
+
}, currentLanguage), /*#__PURE__*/React.createElement(ChevronIcon, null)), isOpen && /*#__PURE__*/React.createElement("ul", {
|
|
255
312
|
id: dropdownId,
|
|
256
313
|
className: "lsg-lang-switcher__dropdown",
|
|
257
314
|
role: "listbox",
|
|
@@ -264,7 +321,13 @@ var LsgLanguageSwitcher = function (_a) {
|
|
|
264
321
|
}, /*#__PURE__*/React.createElement("a", {
|
|
265
322
|
href: lang.href,
|
|
266
323
|
className: ["lsg-lang-switcher__option-link", lang.code === currentLanguage ? "lsg-lang-switcher__option-link--active" : ""].filter(Boolean).join(" "),
|
|
267
|
-
"aria-current": lang.code === currentLanguage ? true : undefined
|
|
324
|
+
"aria-current": lang.code === currentLanguage ? true : undefined,
|
|
325
|
+
onClick: function (event) {
|
|
326
|
+
if (!onLanguageChange) return;
|
|
327
|
+
event.preventDefault();
|
|
328
|
+
onLanguageChange(lang);
|
|
329
|
+
setIsOpen(false);
|
|
330
|
+
}
|
|
268
331
|
}, lang.label));
|
|
269
332
|
})));
|
|
270
333
|
};
|
|
@@ -442,6 +505,81 @@ var LsgSearchOverlay = function (_a) {
|
|
|
442
505
|
};
|
|
443
506
|
|
|
444
507
|
var SEARCH_OVERLAY_ID = "lsg-header-search-overlay";
|
|
508
|
+
var LsgHeaderIcon = function (_a) {
|
|
509
|
+
var name = _a.name,
|
|
510
|
+
className = _a.className;
|
|
511
|
+
return /*#__PURE__*/React.createElement(LsgIcon, {
|
|
512
|
+
name: name,
|
|
513
|
+
className: ["lsg-header__icon", className || ""].filter(Boolean).join(" ")
|
|
514
|
+
});
|
|
515
|
+
};
|
|
516
|
+
var getItemByPath = function (items, activePath, depth) {
|
|
517
|
+
var currentItems = items;
|
|
518
|
+
var currentItem;
|
|
519
|
+
var _loop_1 = function (i) {
|
|
520
|
+
currentItem = currentItems.find(function (item) {
|
|
521
|
+
return item.label === activePath[i];
|
|
522
|
+
});
|
|
523
|
+
currentItems = (currentItem === null || currentItem === void 0 ? void 0 : currentItem.children) || [];
|
|
524
|
+
};
|
|
525
|
+
for (var i = 0; i <= depth; i += 1) {
|
|
526
|
+
_loop_1(i);
|
|
527
|
+
}
|
|
528
|
+
return currentItem;
|
|
529
|
+
};
|
|
530
|
+
var getItemsAtLevel = function (items, activePath, level) {
|
|
531
|
+
var _a;
|
|
532
|
+
if (level <= 1) {
|
|
533
|
+
return items;
|
|
534
|
+
}
|
|
535
|
+
return ((_a = getItemByPath(items, activePath, level - 2)) === null || _a === void 0 ? void 0 : _a.children) || [];
|
|
536
|
+
};
|
|
537
|
+
var getMegaColumns = function (items, activePath, maxDepth) {
|
|
538
|
+
if (maxDepth === void 0) {
|
|
539
|
+
maxDepth = 4;
|
|
540
|
+
}
|
|
541
|
+
var columns = [items];
|
|
542
|
+
var currentItems = items;
|
|
543
|
+
activePath.slice(0, maxDepth - 1).forEach(function (label) {
|
|
544
|
+
var _a;
|
|
545
|
+
var activeItem = currentItems.find(function (item) {
|
|
546
|
+
return item.label === label;
|
|
547
|
+
});
|
|
548
|
+
if ((_a = activeItem === null || activeItem === void 0 ? void 0 : activeItem.children) === null || _a === void 0 ? void 0 : _a.length) {
|
|
549
|
+
columns.push(activeItem.children);
|
|
550
|
+
currentItems = activeItem.children;
|
|
551
|
+
}
|
|
552
|
+
});
|
|
553
|
+
return columns.slice(0, maxDepth);
|
|
554
|
+
};
|
|
555
|
+
var isCurrentOrActiveAtLevel = function (item, activePath, level) {
|
|
556
|
+
return item.current || activePath[level] === item.label;
|
|
557
|
+
};
|
|
558
|
+
var isSelectedAtLevel = function (item, activePath, level) {
|
|
559
|
+
return activePath[level] === item.label;
|
|
560
|
+
};
|
|
561
|
+
var hasOpenNavItem = function (items) {
|
|
562
|
+
return items.some(function (item) {
|
|
563
|
+
return item.open || hasOpenNavItem(item.children || []);
|
|
564
|
+
});
|
|
565
|
+
};
|
|
566
|
+
var HeaderActionButton = function (_a) {
|
|
567
|
+
var label = _a.label,
|
|
568
|
+
icon = _a.icon,
|
|
569
|
+
onClick = _a.onClick,
|
|
570
|
+
controls = _a.controls,
|
|
571
|
+
className = _a.className;
|
|
572
|
+
return /*#__PURE__*/React.createElement("button", {
|
|
573
|
+
type: "button",
|
|
574
|
+
className: ["lsg-header__icon-button", className || ""].filter(Boolean).join(" "),
|
|
575
|
+
"aria-label": label,
|
|
576
|
+
"aria-controls": controls,
|
|
577
|
+
onClick: onClick,
|
|
578
|
+
"data-lsg-search-trigger": icon === "search" ? "" : undefined
|
|
579
|
+
}, /*#__PURE__*/React.createElement(LsgHeaderIcon, {
|
|
580
|
+
name: icon
|
|
581
|
+
}));
|
|
582
|
+
};
|
|
445
583
|
var LsgHeader = function (_a) {
|
|
446
584
|
var logo = _a.logo,
|
|
447
585
|
_b = _a.navItems,
|
|
@@ -450,35 +588,216 @@ var LsgHeader = function (_a) {
|
|
|
450
588
|
languages = _c === void 0 ? [] : _c,
|
|
451
589
|
_d = _a.currentLanguage,
|
|
452
590
|
currentLanguage = _d === void 0 ? "EN" : _d,
|
|
591
|
+
onLanguageChange = _a.onLanguageChange,
|
|
453
592
|
_e = _a.searchLabel,
|
|
454
593
|
searchLabel = _e === void 0 ? "Open search" : _e,
|
|
455
594
|
_f = _a.searchPlaceholder,
|
|
456
|
-
searchPlaceholder = _f === void 0 ? "Search products, documents
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
595
|
+
searchPlaceholder = _f === void 0 ? "Search products, documents..." : _f,
|
|
596
|
+
_g = _a.variant,
|
|
597
|
+
variant = _g === void 0 ? "simple" : _g,
|
|
598
|
+
_h = _a.menuOpen,
|
|
599
|
+
menuOpen = _h === void 0 ? false : _h,
|
|
600
|
+
_j = _a.mobileLevel,
|
|
601
|
+
mobileLevel = _j === void 0 ? 0 : _j,
|
|
602
|
+
_k = _a.activePath,
|
|
603
|
+
activePath = _k === void 0 ? [] : _k,
|
|
604
|
+
mobileSelectedLabel = _a.mobileSelectedLabel,
|
|
605
|
+
onMenuToggle = _a.onMenuToggle,
|
|
606
|
+
onNavItemClick = _a.onNavItemClick,
|
|
607
|
+
onDropdownClose = _a.onDropdownClose,
|
|
608
|
+
onMegaItemClick = _a.onMegaItemClick,
|
|
609
|
+
onMobileItemClick = _a.onMobileItemClick,
|
|
610
|
+
onMobileBreadcrumbClick = _a.onMobileBreadcrumbClick;
|
|
611
|
+
var _l = useState(false),
|
|
612
|
+
searchOpen = _l[0],
|
|
613
|
+
setSearchOpen = _l[1];
|
|
614
|
+
var headerRef = useRef(null);
|
|
615
|
+
var mobileOpen = menuOpen || mobileLevel > 0;
|
|
616
|
+
var columns = getMegaColumns(navItems, activePath);
|
|
617
|
+
var mobileItems = getItemsAtLevel(navItems, activePath, mobileLevel || 1);
|
|
618
|
+
var dropdownOpen = variant === "dropdown" && hasOpenNavItem(navItems);
|
|
619
|
+
useEffect(function () {
|
|
620
|
+
if (!menuOpen && !dropdownOpen) {
|
|
621
|
+
return undefined;
|
|
622
|
+
}
|
|
623
|
+
var closeOnOutsidePointerDown = function (event) {
|
|
624
|
+
var _a;
|
|
625
|
+
if ((_a = headerRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target)) {
|
|
626
|
+
return;
|
|
627
|
+
}
|
|
628
|
+
if (menuOpen) {
|
|
629
|
+
onMenuToggle === null || onMenuToggle === void 0 ? void 0 : onMenuToggle();
|
|
630
|
+
}
|
|
631
|
+
if (dropdownOpen) {
|
|
632
|
+
onDropdownClose === null || onDropdownClose === void 0 ? void 0 : onDropdownClose();
|
|
633
|
+
}
|
|
634
|
+
};
|
|
635
|
+
document.addEventListener("mousedown", closeOnOutsidePointerDown);
|
|
636
|
+
document.addEventListener("touchstart", closeOnOutsidePointerDown);
|
|
637
|
+
return function () {
|
|
638
|
+
document.removeEventListener("mousedown", closeOnOutsidePointerDown);
|
|
639
|
+
document.removeEventListener("touchstart", closeOnOutsidePointerDown);
|
|
640
|
+
};
|
|
641
|
+
}, [dropdownOpen, menuOpen, onDropdownClose, onMenuToggle]);
|
|
642
|
+
var openSearch = function () {
|
|
643
|
+
return setSearchOpen(true);
|
|
644
|
+
};
|
|
645
|
+
var renderActions = function (showMenu) {
|
|
646
|
+
if (showMenu === void 0) {
|
|
647
|
+
showMenu = false;
|
|
648
|
+
}
|
|
649
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
650
|
+
className: "lsg-header__actions"
|
|
651
|
+
}, showMenu && variant === "mega" && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("button", {
|
|
652
|
+
type: "button",
|
|
653
|
+
className: "lsg-header__menu-trigger",
|
|
654
|
+
"aria-expanded": menuOpen,
|
|
655
|
+
onClick: onMenuToggle
|
|
656
|
+
}, /*#__PURE__*/React.createElement(LsgHeaderIcon, {
|
|
657
|
+
name: menuOpen ? "close" : "bars"
|
|
658
|
+
}), /*#__PURE__*/React.createElement("span", null, menuOpen ? "CLOSE" : "MENU")), /*#__PURE__*/React.createElement("span", {
|
|
659
|
+
className: "lsg-header__separator",
|
|
660
|
+
"aria-hidden": "true"
|
|
661
|
+
}, "|")), /*#__PURE__*/React.createElement(HeaderActionButton, {
|
|
662
|
+
label: searchLabel,
|
|
663
|
+
icon: "search",
|
|
664
|
+
controls: SEARCH_OVERLAY_ID,
|
|
665
|
+
onClick: openSearch
|
|
666
|
+
}), languages.length > 0 && /*#__PURE__*/React.createElement(LsgLanguageSwitcher, {
|
|
667
|
+
currentLanguage: currentLanguage,
|
|
668
|
+
languages: languages,
|
|
669
|
+
label: "Current language: ".concat(currentLanguage),
|
|
670
|
+
onLanguageChange: onLanguageChange
|
|
671
|
+
}));
|
|
672
|
+
};
|
|
673
|
+
var renderMegaPanel = function () {
|
|
674
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
675
|
+
className: "lsg-header__mega-panel"
|
|
676
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
677
|
+
className: "lsg-header__mega-inner"
|
|
678
|
+
}, columns.map(function (columnItems, columnIndex) {
|
|
679
|
+
return /*#__PURE__*/React.createElement("ul", {
|
|
680
|
+
key: "mega-column-".concat(columnIndex),
|
|
681
|
+
className: "lsg-header__mega-column",
|
|
682
|
+
role: "list"
|
|
683
|
+
}, columnItems.map(function (item) {
|
|
684
|
+
var _a;
|
|
685
|
+
var hasChildren = Boolean((_a = item.children) === null || _a === void 0 ? void 0 : _a.length);
|
|
686
|
+
return /*#__PURE__*/React.createElement("li", {
|
|
687
|
+
key: "".concat(item.href, "-").concat(columnIndex),
|
|
688
|
+
className: ["lsg-header__mega-item", hasChildren ? "lsg-header__mega-item--has-children" : "", isSelectedAtLevel(item, activePath, columnIndex) ? "lsg-header__mega-item--active" : ""].filter(Boolean).join(" ")
|
|
689
|
+
}, /*#__PURE__*/React.createElement("a", {
|
|
690
|
+
href: item.href,
|
|
691
|
+
className: "lsg-header__mega-link",
|
|
692
|
+
onClick: function (event) {
|
|
693
|
+
if (onMegaItemClick && hasChildren) {
|
|
694
|
+
event.preventDefault();
|
|
695
|
+
onMegaItemClick(item, columnIndex);
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
}, /*#__PURE__*/React.createElement("span", null, item.label), hasChildren && /*#__PURE__*/React.createElement(LsgHeaderIcon, {
|
|
699
|
+
name: "chevronRight"
|
|
700
|
+
})));
|
|
701
|
+
}));
|
|
702
|
+
})));
|
|
703
|
+
};
|
|
704
|
+
var renderMobileMenu = function () {
|
|
705
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
706
|
+
className: "lsg-header__mobile-panel"
|
|
707
|
+
}, mobileLevel > 1 && /*#__PURE__*/React.createElement("nav", {
|
|
708
|
+
className: "lsg-header__breadcrumb",
|
|
709
|
+
"aria-label": "Breadcrumb"
|
|
710
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
711
|
+
type: "button",
|
|
712
|
+
className: "lsg-header__breadcrumb-home",
|
|
713
|
+
"aria-label": "Back to top-level menu",
|
|
714
|
+
onClick: function () {
|
|
715
|
+
return onMobileBreadcrumbClick === null || onMobileBreadcrumbClick === void 0 ? void 0 : onMobileBreadcrumbClick(1);
|
|
716
|
+
}
|
|
717
|
+
}, /*#__PURE__*/React.createElement(LsgHeaderIcon, {
|
|
718
|
+
name: "home"
|
|
719
|
+
})), activePath.map(function (label, index) {
|
|
720
|
+
var isCurrent = index === activePath.length - 1;
|
|
721
|
+
var isMiddleBreadcrumb = index > 0 && !isCurrent;
|
|
722
|
+
return /*#__PURE__*/React.createElement(React.Fragment, {
|
|
723
|
+
key: "".concat(label, "-").concat(index)
|
|
724
|
+
}, /*#__PURE__*/React.createElement(LsgHeaderIcon, {
|
|
725
|
+
name: "chevronRight"
|
|
726
|
+
}), /*#__PURE__*/React.createElement("button", {
|
|
727
|
+
type: "button",
|
|
728
|
+
className: [isCurrent ? "lsg-header__breadcrumb-current" : "lsg-header__breadcrumb-ancestor", isMiddleBreadcrumb ? "lsg-header__breadcrumb-ancestor--ellipsis" : ""].filter(Boolean).join(" "),
|
|
729
|
+
"aria-label": isMiddleBreadcrumb ? label : undefined,
|
|
730
|
+
title: isMiddleBreadcrumb ? label : undefined,
|
|
731
|
+
onClick: function () {
|
|
732
|
+
return onMobileBreadcrumbClick === null || onMobileBreadcrumbClick === void 0 ? void 0 : onMobileBreadcrumbClick(index + 1);
|
|
733
|
+
}
|
|
734
|
+
}, isMiddleBreadcrumb ? "…" : label));
|
|
735
|
+
})), /*#__PURE__*/React.createElement("ul", {
|
|
736
|
+
className: "lsg-header__mobile-list",
|
|
737
|
+
role: "list"
|
|
738
|
+
}, mobileItems.map(function (item, index) {
|
|
739
|
+
var _a;
|
|
740
|
+
var hasChildren = Boolean((_a = item.children) === null || _a === void 0 ? void 0 : _a.length);
|
|
741
|
+
var isSelected = mobileSelectedLabel ? item.label === mobileSelectedLabel : isCurrentOrActiveAtLevel(item, activePath, Math.max(0, mobileLevel - 1));
|
|
742
|
+
return /*#__PURE__*/React.createElement("li", {
|
|
743
|
+
key: "".concat(item.href, "-mobile-").concat(index),
|
|
744
|
+
className: ["lsg-header__mobile-item", hasChildren ? "lsg-header__mobile-item--has-children" : "", isSelected ? "lsg-header__mobile-item--active" : ""].filter(Boolean).join(" ")
|
|
745
|
+
}, /*#__PURE__*/React.createElement("a", {
|
|
746
|
+
href: item.href,
|
|
747
|
+
className: "lsg-header__mobile-link",
|
|
748
|
+
onClick: function (event) {
|
|
749
|
+
if (onMobileItemClick && hasChildren) {
|
|
750
|
+
event.preventDefault();
|
|
751
|
+
onMobileItemClick(item, Math.max(1, mobileLevel || 1));
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
}, /*#__PURE__*/React.createElement("span", null, item.label), hasChildren && /*#__PURE__*/React.createElement(LsgHeaderIcon, {
|
|
755
|
+
name: "chevronRight"
|
|
756
|
+
})));
|
|
757
|
+
})));
|
|
758
|
+
};
|
|
460
759
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("header", {
|
|
461
|
-
|
|
760
|
+
ref: headerRef,
|
|
761
|
+
className: ["lsg-header", "lsg-header--".concat(variant), menuOpen ? "lsg-header--menu-open" : "", "lsg-header--mobile-level-".concat(mobileLevel)].filter(Boolean).join(" ")
|
|
462
762
|
}, /*#__PURE__*/React.createElement("div", {
|
|
463
763
|
className: "lsg-header__inner"
|
|
464
764
|
}, /*#__PURE__*/React.createElement("div", {
|
|
465
|
-
className: "lsg-
|
|
466
|
-
}, /*#__PURE__*/React.createElement(
|
|
765
|
+
className: "lsg-logo-decorator"
|
|
766
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
767
|
+
className: "lsg-logo"
|
|
768
|
+
}, /*#__PURE__*/React.createElement(LsgLogo, logo))), variant !== "mega" && navItems.length > 0 && /*#__PURE__*/React.createElement("div", {
|
|
467
769
|
className: "lsg-header__nav"
|
|
468
770
|
}, /*#__PURE__*/React.createElement(LsgNavigation, {
|
|
469
|
-
items: navItems
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
},
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
771
|
+
items: navItems,
|
|
772
|
+
variant: variant,
|
|
773
|
+
onItemClick: onNavItemClick
|
|
774
|
+
})), variant === "mega" && /*#__PURE__*/React.createElement("div", {
|
|
775
|
+
className: "lsg-header__desktop-menu"
|
|
776
|
+
}, renderActions(true)), variant !== "mega" && /*#__PURE__*/React.createElement("div", {
|
|
777
|
+
className: "lsg-header__desktop-actions"
|
|
778
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
779
|
+
className: "lsg-header__separator",
|
|
780
|
+
"aria-hidden": "true"
|
|
781
|
+
}, "|"), renderActions(false)), /*#__PURE__*/React.createElement("div", {
|
|
782
|
+
className: "lsg-header__mobile-actions"
|
|
783
|
+
}, /*#__PURE__*/React.createElement(HeaderActionButton, {
|
|
476
784
|
label: searchLabel,
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
785
|
+
icon: "search",
|
|
786
|
+
controls: SEARCH_OVERLAY_ID,
|
|
787
|
+
onClick: openSearch
|
|
788
|
+
}), languages.length > 0 && /*#__PURE__*/React.createElement(LsgLanguageSwitcher, {
|
|
789
|
+
currentLanguage: currentLanguage,
|
|
790
|
+
languages: languages,
|
|
791
|
+
label: "Current language: ".concat(currentLanguage),
|
|
792
|
+
onLanguageChange: onLanguageChange
|
|
793
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
794
|
+
className: "lsg-header__separator",
|
|
795
|
+
"aria-hidden": "true"
|
|
796
|
+
}, "|"), /*#__PURE__*/React.createElement(HeaderActionButton, {
|
|
797
|
+
label: mobileOpen ? "Close menu" : "Open menu",
|
|
798
|
+
icon: mobileOpen ? "close" : "bars",
|
|
799
|
+
onClick: onMenuToggle
|
|
800
|
+
}))), variant === "mega" && menuOpen && renderMegaPanel(), mobileOpen && renderMobileMenu()), /*#__PURE__*/React.createElement(LsgSearchOverlay, {
|
|
482
801
|
id: SEARCH_OVERLAY_ID,
|
|
483
802
|
isOpen: searchOpen,
|
|
484
803
|
onClose: function () {
|