Files
web/components/ButtonLink/index.tsx
Fredrik Thorsson e0996b3464 Merged in feat/SW-1064-restaurant-and-bar-subpage (pull request #1299)
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
2025-02-11 12:05:49 +00:00

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>
)
}