fix: add missing footer links
This commit is contained in:
@@ -1,17 +1,32 @@
|
||||
import { FooterNavigationProps } from "@/types/components/current/footer"
|
||||
import { InternalLink, ExternalLink } from "@/types/requests/footer"
|
||||
import {
|
||||
FooterNavigationProps,
|
||||
FooterNavigationItemProps,
|
||||
} from "@/types/components/current/footer"
|
||||
import Link from "next/link"
|
||||
|
||||
function getLink(linkObject: InternalLink | ExternalLink) {
|
||||
function NavigationItem({ linkObject, lang }: FooterNavigationItemProps) {
|
||||
if (linkObject.__typename === "FooterNavigationLinksInternalLink") {
|
||||
return {
|
||||
title: linkObject.internal_link.link_text,
|
||||
href: linkObject.internal_link.pageConnection.edges[0].node.url,
|
||||
}
|
||||
console.log({ foobar: JSON.stringify(linkObject) })
|
||||
const href = `/${lang}${linkObject.internal_link.pageConnection.edges[0].node.url}`
|
||||
return (
|
||||
<li>
|
||||
<Link href={href}>{linkObject.internal_link.link_text}</Link>
|
||||
</li>
|
||||
)
|
||||
}
|
||||
return linkObject.external_link.link
|
||||
return (
|
||||
<li>
|
||||
<a href={linkObject.external_link.link.href}>
|
||||
{linkObject.external_link.link.title}
|
||||
</a>
|
||||
</li>
|
||||
)
|
||||
}
|
||||
|
||||
export default function Navigation({ linkGroups }: FooterNavigationProps) {
|
||||
export default function Navigation({
|
||||
linkGroups,
|
||||
lang,
|
||||
}: FooterNavigationProps) {
|
||||
return (
|
||||
<ul className="l-footer-sections global-footer__content__sections">
|
||||
{linkGroups.map((group) => {
|
||||
@@ -20,9 +35,12 @@ export default function Navigation({ linkGroups }: FooterNavigationProps) {
|
||||
<div className="link-list">
|
||||
<h3 className="link-list-header">{group.title}</h3>
|
||||
<ul className="list-footer-pages">
|
||||
{group.links.map((link) => {
|
||||
const linkItem = getLink(link)
|
||||
return <li key={linkItem.title}>{linkItem.title}</li>
|
||||
{group.links.map((link, idx) => {
|
||||
console.log({ foobar: link })
|
||||
|
||||
return (
|
||||
<NavigationItem key={idx} linkObject={link} lang={lang} />
|
||||
)
|
||||
})}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
import { request } from "@/lib/request";
|
||||
import type { LangParams } from "@/types/params";
|
||||
import { GetFooterData } from "@/types/requests/footer";
|
||||
import { GetFooter } from "@/lib/graphql/Query/Footer.graphql";
|
||||
import Script from "next/script";
|
||||
import Image from "next/image";
|
||||
import Navigation from "./Navigation";
|
||||
import { request } from "@/lib/request"
|
||||
import type { LangParams } from "@/types/params"
|
||||
import { GetFooterData } from "@/types/requests/footer"
|
||||
import { GetFooter } from "@/lib/graphql/Query/Footer.graphql"
|
||||
import Script from "next/script"
|
||||
import Image from "next/image"
|
||||
import Navigation from "./Navigation"
|
||||
|
||||
export default async function Footer({ lang }: LangParams) {
|
||||
const response = await request<GetFooterData>(GetFooter, {
|
||||
locale: lang,
|
||||
});
|
||||
})
|
||||
|
||||
const footerData = response.data.all_footer.items[0];
|
||||
const footerData = response.data.all_footer.items[0]
|
||||
|
||||
return (
|
||||
<footer className="global-footer">
|
||||
@@ -38,8 +38,11 @@ export default async function Footer({ lang }: LangParams) {
|
||||
})}
|
||||
</ul>
|
||||
|
||||
<div data-js-collapsible="global-footer" className="collapsible-global-footer">
|
||||
<Navigation linkGroups={footerData.navigation} />
|
||||
<div
|
||||
data-js-collapsible="global-footer"
|
||||
className="collapsible-global-footer"
|
||||
>
|
||||
<Navigation lang={lang} linkGroups={footerData.navigation} />
|
||||
|
||||
<div className="global-footer__content__bottom">
|
||||
<p className="newFooterTitle">
|
||||
@@ -74,10 +77,14 @@ export default async function Footer({ lang }: LangParams) {
|
||||
>
|
||||
<Image
|
||||
alt={
|
||||
footerData.app_downloads.app_store.imageConnection.edges[0].node.title
|
||||
footerData.app_downloads.app_store.imageConnection
|
||||
.edges[0].node.title
|
||||
}
|
||||
height={45}
|
||||
src={footerData.app_downloads.app_store.imageConnection.edges[0].node.url}
|
||||
src={
|
||||
footerData.app_downloads.app_store.imageConnection
|
||||
.edges[0].node.url
|
||||
}
|
||||
unoptimized
|
||||
width={135}
|
||||
/>
|
||||
@@ -98,11 +105,13 @@ export default async function Footer({ lang }: LangParams) {
|
||||
>
|
||||
<Image
|
||||
alt={
|
||||
footerData.app_downloads.google_play.imageConnection.edges[0].node.title
|
||||
footerData.app_downloads.google_play.imageConnection
|
||||
.edges[0].node.title
|
||||
}
|
||||
height={45}
|
||||
src={
|
||||
footerData.app_downloads.google_play.imageConnection.edges[0].node.url
|
||||
footerData.app_downloads.google_play.imageConnection
|
||||
.edges[0].node.url
|
||||
}
|
||||
unoptimized
|
||||
width={135}
|
||||
@@ -159,7 +168,9 @@ display: none;
|
||||
</p>
|
||||
</div>
|
||||
<div className="global-footer__social-media" id="social-icons">
|
||||
<h3 className="heading-5 u-uppercase">{footerData.social_media.title}</h3>
|
||||
<h3 className="heading-5 u-uppercase">
|
||||
{footerData.social_media.title}
|
||||
</h3>
|
||||
<a
|
||||
href={footerData.social_media.facebook.href}
|
||||
rel="noopener"
|
||||
@@ -174,7 +185,9 @@ display: none;
|
||||
role="img"
|
||||
aria-labelledby="social-icons facebook-icon"
|
||||
>
|
||||
<title id="facebook-icon">{footerData.social_media.facebook.title}</title>
|
||||
<title id="facebook-icon">
|
||||
{footerData.social_media.facebook.title}
|
||||
</title>
|
||||
<use xlinkHref="/Static/img/icons/sprites.svg#icon-facebook"></use>
|
||||
</svg>
|
||||
</a>
|
||||
@@ -192,7 +205,9 @@ display: none;
|
||||
role="img"
|
||||
aria-labelledby="social-icons twitter-icon"
|
||||
>
|
||||
<title id="twitter-icon">{footerData.social_media.twitter.title}</title>
|
||||
<title id="twitter-icon">
|
||||
{footerData.social_media.twitter.title}
|
||||
</title>
|
||||
<use xlinkHref="/Static/img/icons/sprites.svg#icon-twitter"></use>
|
||||
</svg>
|
||||
</a>
|
||||
@@ -210,13 +225,17 @@ display: none;
|
||||
role="img"
|
||||
aria-labelledby="social-icons instagram-icon"
|
||||
>
|
||||
<title id="instagram-icon">{footerData.social_media.instagram.title}</title>
|
||||
<title id="instagram-icon">
|
||||
{footerData.social_media.instagram.title}
|
||||
</title>
|
||||
<use xlinkHref="/Static/img/icons/sprites.svg#icon-instagram"></use>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div className="global-footer__trip-advisor">
|
||||
<h3 className="heading-5 u-uppercase">{footerData.trip_advisor.title}</h3>
|
||||
<h3 className="heading-5 u-uppercase">
|
||||
{footerData.trip_advisor.title}
|
||||
</h3>
|
||||
<Image
|
||||
alt="Trip Advisor logotype"
|
||||
height={24}
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
import { NavigationItem } from "@/types/requests/footer"
|
||||
import { Lang } from "@/types/lang"
|
||||
import {
|
||||
ExternalLink,
|
||||
InternalLink,
|
||||
NavigationItem,
|
||||
} from "@/types/requests/footer"
|
||||
|
||||
export type FooterNavigationProps = {
|
||||
linkGroups: NavigationItem[]
|
||||
lang: Lang
|
||||
}
|
||||
|
||||
export type FooterNavigationItemProps = {
|
||||
linkObject: InternalLink | ExternalLink
|
||||
lang: Lang
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user