export interface CustomDimension { id: string; value: string; } export type UrlTransformMethod = | "trackPageView" | "trackLink" | "trackLinkClick" | "trackDownload" | "trackSiteSearchResultClick" | "trackMapInteraction"; export interface UrlTransformMeta { method: UrlTransformMethod; } export type UrlTransformer = (meta: UrlTransformMeta, url: string) => string; export interface UserOptions { urlBase?: string; siteId: string; disabled?: boolean; urlTransformer?: UrlTransformer; heartBeat?: { active: boolean; seconds?: number; }; nonce?: string; } interface TrackBaseParams { customDimensions?: CustomDimension[]; } export interface TrackPageViewParams extends TrackBaseParams { href: string; } export interface TrackLinkParams extends TrackBaseParams { href: string; linkType?: "download" | "link"; linkTitle: string; } export interface TrackLinkClickParams extends TrackBaseParams { componentName: string; isInternalDestination: boolean; href: string; linkTitle: string; } export interface TrackAnchorLinkParams extends TrackBaseParams { anchor: string; linkTitle: string; } export interface TrackMapInteractionParams extends TrackBaseParams { clickText: string; clickUrl?: string; action: | "checkboxClickOn" | "checkboxClickOff" | "radioButtonClick" | "pinClick" | "detailOverlayClick" | "closeOverlayClick"; } export interface TrackVisibilityParams extends TrackBaseParams { action: "getoond" | "verborgen"; nameOfElementBecameVisible: string; } export interface TrackSiteSearchParams extends TrackBaseParams { keyword: string; searchMachine: string; count?: number; type: "autocomplete" | "manueel"; } export interface TrackSiteSearchResultClickParams extends TrackBaseParams { keyword: string; // de zoekopdracht van de gebruiker (minimaal drie karakters) searchResult: { title: string; // de titel van het aangeklikt element url: string; // de url waarop wordt geklikt (zonder ? parameters) type: string; // het type van het zoekresultaat (bijv. persbericht of nieuwsbericht.) position: number; // het hoeveelste zoekresultaat wordt aangeklikt van boven }; amountOfResults: number; // aantal zoekresultaten op het moment amountOfResultsShown: number; // hoeveel zoekresultaten had de gebruiker beschikbaar om te kiezen type: "autocomplete" | "manueel"; // heeft iemand het zoekresultaat helemaal zelf getypt of via Autocomplete aangeklikt } /** * @deprecated Use `TrackSiteSearchResultClickParams` instead. */ export type TrackSiteSearchResultClick = TrackSiteSearchResultClickParams; export interface TrackDownloadParams extends TrackBaseParams { downloadDescription: string; // Het soort (functioneel) document (b.v. jaaropgave, wmo-besluit, vergunning, etc.) fileType: string; // Het type document downloadUrl: string; // De download url } export interface Instruction { event: string; meta: Record; } declare global { interface Window { dataLayer: Instruction[]; } }