feat(SW-392): Added accordion click tracking for hotel amenities

This commit is contained in:
Erik Tiekstra
2025-01-09 13:19:25 +01:00
parent 14e8e2254c
commit 4bbd02f307
7 changed files with 21 additions and 0 deletions

View File

@@ -18,6 +18,7 @@ export default async function AccessibilityAmenity({
title={intl.formatMessage({ id: "Accessibility" })}
icon={IconName.Accessibility}
variant="sidepeek"
trackingId="amenities:accessibility"
>
<div className={styles.wrapper}>
{accessibility?.description && (

View File

@@ -16,6 +16,7 @@ export default async function BreakfastAmenity({
title={intl.formatMessage({ id: "Breakfast" })}
icon={IconName.CoffeeAlt}
variant="sidepeek"
trackingId="amenities:breakfast"
>
<OpeningHours
openingHours={openingHours}

View File

@@ -15,6 +15,7 @@ export default async function CheckInAmenity({
title={`${intl.formatMessage({ id: "Check-in" })}/${intl.formatMessage({ id: "Check-out" })}`}
icon={IconName.Business}
variant="sidepeek"
trackingId="amenities:check-in"
>
<Body textTransform="bold">{intl.formatMessage({ id: "Times" })}</Body>
<Body color="uiTextHighContrast">{`${intl.formatMessage({ id: "Check in from" })}: ${checkInTime}`}</Body>

View File

@@ -26,6 +26,7 @@ export default async function ParkingAmenity({
title={intl.formatMessage({ id: "Parking" })}
icon={IconName.Parking}
variant="sidepeek"
trackingId="amenities:parking"
>
<div className={styles.wrapper}>
{parking.map((data) => (

View File

@@ -8,4 +8,5 @@ export interface AccordionItemProps
VariantProps<typeof accordionItemVariants> {
title: string
icon?: IconName
trackingId?: string
}

View File

@@ -4,6 +4,7 @@ import { useRef } from "react"
import { ChevronDownIcon } from "@/components/Icons"
import { getIconByIconName } from "@/components/Icons/get-icon-by-icon-name"
import { trackAccordionClick } from "@/utils/tracking"
import Body from "../../Text/Body"
import Subtitle from "../../Text/Subtitle"
@@ -20,6 +21,7 @@ export default function AccordionItem({
theme,
variant,
className,
trackingId,
}: AccordionItemProps) {
const contentRef = useRef<HTMLDivElement>(null)
const detailsRef = useRef<HTMLDetailsElement>(null)
@@ -40,6 +42,9 @@ export default function AccordionItem({
},
{ once: true }
)
if (trackingId) {
trackAccordionClick(trackingId)
}
} else {
content.style.maxHeight = "0"
}

View File

@@ -66,6 +66,17 @@ export function trackHotelMapClick() {
pushToDataLayer(event)
}
export function trackAccordionClick(option: string) {
const event = {
event: "accordionClick",
accordion: {
action: "accordion open click",
option,
},
}
pushToDataLayer(event)
}
export function trackUpdatePaymentMethod(hotelId: string, method: string) {
const paymentSelectionEvent = {
event: "paymentSelection",