feat/SW-1064 restaurant and bar subpage * feat(SW-1064): add appendToPath to buttonlink * feat(SW-1064): add sidebar template * feat(SW-1064): render pages from nameInUrl * feat(SW-1064): add content to restaurant sidebar * feat(SW-1064): change icon size * feat(SW-1064): move opening hours component * feat(SW-1064): update switch statement * feat(SW-1064): fix typo * feat(SW-1064): rebase * feat(SW-1064): remove accidentally added file * feat(SW-1064): undefined check for restaurant subpage Approved-by: Erik Tiekstra
50 lines
1.0 KiB
TypeScript
50 lines
1.0 KiB
TypeScript
"use client"
|
|
|
|
import NextLink from "next/link"
|
|
import { usePathname } from "next/navigation"
|
|
import { useMemo } from "react"
|
|
|
|
import Button from "@/components/TempDesignSystem/Button"
|
|
import { trackClick } from "@/utils/tracking"
|
|
|
|
import type { ButtonLinkProps } from "@/types/components/buttonLink"
|
|
|
|
export default function ButtonLink({
|
|
children,
|
|
href,
|
|
target,
|
|
trackingId,
|
|
trackingParams,
|
|
onClick = () => {},
|
|
appendToCurrentPath,
|
|
...buttonProps
|
|
}: ButtonLinkProps) {
|
|
const currentPageSlug = usePathname()
|
|
|
|
const fullUrl = useMemo(() => {
|
|
let newPath = href
|
|
if (appendToCurrentPath) {
|
|
newPath = `${currentPageSlug}${newPath}`
|
|
}
|
|
|
|
return newPath
|
|
}, [href, appendToCurrentPath, currentPageSlug])
|
|
|
|
return (
|
|
<Button {...buttonProps} asChild>
|
|
<NextLink
|
|
href={fullUrl}
|
|
target={target}
|
|
onClick={(e) => {
|
|
onClick(e)
|
|
if (trackingId) {
|
|
trackClick(trackingId, trackingParams)
|
|
}
|
|
}}
|
|
>
|
|
{children}
|
|
</NextLink>
|
|
</Button>
|
|
)
|
|
}
|