Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/visual-editor/locales/cs/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/da/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/de/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/en-GB/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/en/visual-editor.json
Original file line number Diff line number Diff line change
Expand Up @@ -597,6 +597,7 @@
"hiddenOnLivePage": "Secondary Footer (Hidden on live page)"
},
"secondaryHeader": "Secondary Header",
"secondaryHeaderHiddenOnLivePage": "Secondary Header (Hidden on live page)",
"secondaryHeaderLinks": "Secondary Header Links",
"section": "Section",
"selectAnOption": "Select an option",
Expand Down
1 change: 1 addition & 0 deletions packages/visual-editor/locales/es/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/et/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/fi/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/fr/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/hr/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/hu/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/it/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/ja/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/lt/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/lv/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/nb/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/nl/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/pl/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/pt/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/ro/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/sk/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/sv/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/tr/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/zh-TW/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/visual-editor/locales/zh/visual-editor.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

80 changes: 47 additions & 33 deletions packages/visual-editor/src/components/header/HeaderLinks.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ const HeaderLinksComponent: PuckComponent<HeaderLinksProps> = ({
parentData,
puck,
}) => {
const { i18n, t } = useTranslation();
const { i18n } = useTranslation();
const streamDocument = useDocument();
const MAX_VISIBLE = 5;
const type = parentData?.type || "Primary";
Expand All @@ -98,30 +98,51 @@ const HeaderLinksComponent: PuckComponent<HeaderLinksProps> = ({
/>
);

return data.links ? (
const validLinks = data.links?.filter((item) => !!item?.link) || [];

if (validLinks.length === 0) {
if (puck.isEditing) {
return (
<nav
aria-label={
type === "Primary"
? pt("primaryHeaderLinks", "Primary Header Links")
: pt("secondaryHeaderLinks", "Secondary Header Links")
}
>
<ul className="flex flex-col md:flex-row gap-0 md:gap-6 md:items-center">
<li className="py-4 md:py-0">
<div className="h-5 min-w-[100px]" />
</li>
</ul>
</nav>
);
}
return <></>;
}

return (
<nav
aria-label={
type === "Primary"
? t("primaryHeaderLinks", "Primary Header Links")
: t("secondaryHeaderLinks", "Secondary Header Links")
? pt("primaryHeaderLinks", "Primary Header Links")
: pt("secondaryHeaderLinks", "Secondary Header Links")
}
>
<ul className="flex flex-col md:flex-row gap-0 md:gap-6 md:items-center">
{data.links
.filter((item) => !!item?.link)
.map((item, index) => {
const isOverflowed = isSecondary && index >= MAX_VISIBLE;
return (
<li
key={`${type.toLowerCase()}.${index}`}
className={`py-4 md:py-0 ${isOverflowed ? "md:hidden" : ""}`}
>
{renderLink(item, index, type.toLowerCase())}
</li>
);
})}
{validLinks.map((item, index) => {
const isOverflowed = isSecondary && index >= MAX_VISIBLE;
return (
<li
key={`${type.toLowerCase()}.${index}`}
className={`py-4 md:py-0 ${isOverflowed ? "md:hidden" : ""}`}
>
{renderLink(item, index, type.toLowerCase())}
</li>
);
})}

{isSecondary && data.links.length > MAX_VISIBLE && (
{isSecondary && validLinks.length > MAX_VISIBLE && (
<li className="hidden md:block py-4 md:py-0">
<DropdownMenu>
<DropdownMenuTrigger className="flex flex-row md:items-center gap-4 justify-between w-full">
Expand All @@ -130,27 +151,20 @@ const HeaderLinksComponent: PuckComponent<HeaderLinksProps> = ({
</div>
</DropdownMenuTrigger>
<DropdownMenuContent className="bg-white border rounded shadow-md p-2 min-w-[200px] z-[9999]">
{data.links
.filter((item) => !!item?.link)
.slice(MAX_VISIBLE)
.map((item, index) => (
<DropdownMenuItem
key={`overflow-${index}`}
className="cursor-pointer p-2 text-body-sm-fontSize hover:bg-gray-100"
>
{renderLink(item, index + MAX_VISIBLE, "overflow")}
</DropdownMenuItem>
))}
{validLinks.slice(MAX_VISIBLE).map((item, index) => (
<DropdownMenuItem
key={`overflow-${index}`}
className="cursor-pointer p-2 text-body-sm-fontSize hover:bg-gray-100"
>
{renderLink(item, index + MAX_VISIBLE, "overflow")}
</DropdownMenuItem>
))}
</DropdownMenuContent>
</DropdownMenu>
</li>
)}
</ul>
</nav>
) : puck.isEditing ? (
<div className="h-10" />
) : (
<></>
);
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {
parseDocumentForLanguageDropdown,
} from "./languageDropdown";
import { defaultHeaderLinkProps, HeaderLinksProps } from "./HeaderLinks";
import { pt } from "../../utils/i18n/platform";

export interface SecondaryHeaderSlotProps {
data: {
Expand Down Expand Up @@ -96,7 +97,26 @@ const SecondaryHeaderSlotWrapper: PuckComponent<SecondaryHeaderSlotProps> = ({
const showLanguageSelector =
languageDropDownProps && languageDropDownProps.locales?.length > 1;

return data.show ? (
const { show } = data;

if (puck.isEditing && !show) {
return (
<div className="border-2 border-dashed border-gray-400 bg-gray-100 p-4 opacity-50 min-h-[60px] flex items-center justify-center cursor-pointer">
<p className="text-sm text-gray-600">
{pt(
"secondaryHeaderHiddenOnLivePage",
"Secondary Header (Hidden on live page)"
)}
</p>
</div>
);
}

if (!show) {
return <></>;
}

return (
<PageSection
maxWidth={parentStyles?.maxWidth}
verticalPadding={"sm"}
Expand All @@ -108,10 +128,6 @@ const SecondaryHeaderSlotWrapper: PuckComponent<SecondaryHeaderSlotProps> = ({
<LanguageDropdown {...languageDropDownProps} />
)}
</PageSection>
) : puck.isEditing ? (
<div className="h-20" />
) : (
<></>
);
};

Expand Down