chore: fix linting errors and ts bugs.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import type { Media } from '@/payload-types'
|
||||
import type { Footer, Header, Media } from '@/payload-types'
|
||||
|
||||
export type SpaIconName = 'instagram' | 'linkedin' | 'facebook'
|
||||
export type SpaLink = { label: string; path: string }
|
||||
@@ -167,29 +167,50 @@ const mediaToSpa = (value: unknown, fallback?: SpaMedia): SpaMedia | undefined =
|
||||
return fallback
|
||||
}
|
||||
|
||||
export function normalizeHeaderData(header: any): SpaHeaderData {
|
||||
type HeaderLanguage = string | { label?: string }
|
||||
|
||||
type FooterPartnerLogo = {
|
||||
alt?: string
|
||||
image?: unknown
|
||||
}
|
||||
|
||||
export function normalizeHeaderData(header?: Partial<Header>): SpaHeaderData {
|
||||
return {
|
||||
...defaultHeaderData,
|
||||
...header,
|
||||
logo: mediaToSpa(header?.logo, defaultHeaderData.logo),
|
||||
navItems: header?.navItems?.length ? header.navItems : defaultHeaderData.navItems,
|
||||
secondaryLinks: header?.secondaryLinks?.length ? header.secondaryLinks : defaultHeaderData.secondaryLinks,
|
||||
socialLinks: header?.socialLinks?.length ? header.socialLinks : defaultHeaderData.socialLinks,
|
||||
ctas: header?.ctas?.length ? header.ctas : defaultHeaderData.ctas,
|
||||
languages: header?.languages?.length ? header.languages.map((item: any) => item.label || item).filter(Boolean) : defaultHeaderData.languages,
|
||||
navItems: header?.navItems?.length
|
||||
? (header.navItems as unknown as SpaHeaderNavItem[])
|
||||
: defaultHeaderData.navItems,
|
||||
secondaryLinks: header?.secondaryLinks?.length
|
||||
? (header.secondaryLinks as unknown as SpaLink[])
|
||||
: defaultHeaderData.secondaryLinks,
|
||||
socialLinks: header?.socialLinks?.length
|
||||
? (header.socialLinks as unknown as SpaSocialLink[])
|
||||
: defaultHeaderData.socialLinks,
|
||||
ctas: header?.ctas?.length ? (header.ctas as unknown as SpaCtaLink[]) : defaultHeaderData.ctas,
|
||||
languages: header?.languages?.length
|
||||
? (header.languages as HeaderLanguage[])
|
||||
.map((item) => (typeof item === 'string' ? item : item.label))
|
||||
.filter((label): label is string => Boolean(label))
|
||||
: defaultHeaderData.languages,
|
||||
}
|
||||
}
|
||||
|
||||
export function normalizeFooterData(footer: any): SpaFooterData {
|
||||
export function normalizeFooterData(footer?: Partial<Footer>): SpaFooterData {
|
||||
return {
|
||||
...defaultFooterData,
|
||||
...footer,
|
||||
logo: mediaToSpa(footer?.logo, defaultFooterData.logo),
|
||||
ctas: footer?.ctas?.length ? footer.ctas : defaultFooterData.ctas,
|
||||
linkColumns: footer?.linkColumns?.length ? footer.linkColumns : defaultFooterData.linkColumns,
|
||||
socialLinks: footer?.socialLinks?.length ? footer.socialLinks : defaultFooterData.socialLinks,
|
||||
ctas: footer?.ctas?.length ? (footer.ctas as unknown as SpaCtaLink[]) : defaultFooterData.ctas,
|
||||
linkColumns: footer?.linkColumns?.length
|
||||
? (footer.linkColumns as unknown as SpaFooterData['linkColumns'])
|
||||
: defaultFooterData.linkColumns,
|
||||
socialLinks: footer?.socialLinks?.length
|
||||
? (footer.socialLinks as unknown as SpaSocialLink[])
|
||||
: defaultFooterData.socialLinks,
|
||||
partnerLogos: footer?.partnerLogos?.length
|
||||
? footer.partnerLogos.map((item: any, index: number) => ({
|
||||
? (footer.partnerLogos as FooterPartnerLogo[]).map((item, index) => ({
|
||||
alt: item.alt || defaultFooterData.partnerLogos[index]?.alt || '',
|
||||
image: mediaToSpa(item.image, defaultFooterData.partnerLogos[index]?.image),
|
||||
}))
|
||||
|
||||
Reference in New Issue
Block a user