Skip to content

Props-referanse ​

Komplett oversikt over alle props for LumiSurveyDock-komponenten.

Top-level props ​

PropTypePåkrevdBeskrivelse
surveyIdstring✅Unik identifikator for surveyen (f.eks. "soknad-kvittering")
surveyLumiSurveyConfig✅Konfigurasjonsobjekt med spørsmålene
transportLumiSurveyTransport✅Objekt med submit-funksjon for innsending
contextLumiSurveyContext❌Metadata/tags/debug for segmentering
behaviorLumiSurveyBehavior❌Styrer åpning, lukking, cooldown og storage
eventsLumiSurveyEvents❌Event-callbacks for sporing og livssyklus
labelsLumiSurveyLabels❌Tekster for UI-elementer
successLumiSurveySuccessConfig❌Konfigurer suksess-visning
styleLumiSurveyStyle❌Visuell styling (posisjon, farger, classNames)
introLumiSurveyIntroConfig❌Intro-skjerm før første spørsmål

survey — LumiSurveyConfig ​

ts
interface LumiSurveyConfig {
  /** Survey-type for analytics. Default: "custom" */
  type?: "rating" | "topTasks" | "discovery" | "taskPriority" | "custom";

  /** Alle spørsmål, i rekkefølge */
  questions: LumiSurveyQuestion[];
}

Se Spørsmålstyper for detaljer om spørsmål-objektene.

transport — LumiSurveyTransport ​

ts
interface LumiSurveyTransport {
  submit: (submission: LumiSurveySubmission) => Promise<void>;
}

submission.transportPayload er den ferdig-formaterte payloaden du kan sende direkte til Lumi API fra nettleseren med en API-nøkkel, eller via en egen backend hvis du vil proxy/videreprosessere. Se Koble til backend → Sjekkliste for oppsett.

behavior — LumiSurveyBehavior ​

Styrer åpning, lukking, lagring og layout.

PropertyTypeDefaultBeskrivelse
initialOpenbooleantrueOm docken starter åpen
resetOnClosebooleantrueNullstill skjema ved lukking
dismissCooldownDaysnumber30Dager før dismissed dock vises igjen
hideAfterSubmitbooleantrueSkjul helt etter vellykket innsending
questionLayout"auto" | "singlePage" | "steps""auto"Hvordan spørsmål presenteres
showPersonalDataNoticebooleantrueVis personverninfo
personalDataNoticeReactNode❌Tilpasset personverninfo
collectLocationbooleanfalseAuto-collect pathname fra URL
storageStrategy"localStorage" | "sessionStorage" | "none""localStorage"Lagringsstrategi for dismissed-tilstand
consentResolverLumiSurveyConsentResolver—Callback som avgjør om storage kan brukes
storageAdapterStorageAdapter—Custom lagringsadapter for dismissed-tilstand
deduplicationKeystring—Opaque ikke-PII token for backend-deduplisering når browser storage er av
showProgressbooleanfalseVis fremdriftslinje i step-modus

consentResolver evalueres før lesing, skriving og sletting av dismissal-state. Når den returnerer false eller { storage: false }, gjør widgeten ingen storage-operasjoner; eksisterende dismissal-nøkler kan derfor bli liggende til samtykke gis igjen eller host-appen rydder dem.

storageAdapter.write kan returnere void for suksess. Returner StorageWriteResult når adapteren må uttrykke no-op, nektet lagring eller skrivefeil. storageAdapter overstyrer storageStrategy, men er fortsatt gated av consentResolver hvis begge er satt.

deduplicationKey skal være en stabil opaque token, ikke fødselsnummer, e-post, rå bruker-id eller andre direkte identifikatorer.

questionLayout-verdier
  • "auto" (default): Step-modus brukes automatisk når branching-logikk (logic) finnes. Ellers vises alle synlige spørsmål på én side.
  • "singlePage": Alle synlige spørsmål vises alltid på én side.
  • "steps": Alltid ett spørsmål om gangen med Neste/Tilbake-knapper.

labels — LumiSurveyLabels ​

Tekster for UI-elementer. Alle har fornuftige norske defaults.

PropertyTypeDefaultBeskrivelse
submitstring"Send inn"Send-knapp
submitPendingstring"Sender inn..."Send-knapp under innsending
cancelstring"Lukk"Lukk-knapp
validationErrorstring"Vennligst fyll ut alle påkrevde felt"Valideringsfeilmelding
transportErrorstring"Noe gikk galt ved innsending. Prøv igjen senere."Innsendingsfeil
minimizedButtonstring"Gi tilbakemelding"Tekst på minimert knapp
tsx
<LumiSurveyDock
  labels={{
    submit: "Send tilbakemelding",
    cancel: "Avbryt",
    minimizedButton: "Hjelp oss å bli bedre",
  }}
/>

success — LumiSurveySuccessConfig ​

Konfigurer suksess-skjermen etter innsending.

PropertyTypeDefaultBeskrivelse
titlestring"Takk for tilbakemeldingen!"Overskrift
bodyReactNode—Valgfri tekst under overskriften
primaryLabelstring"Lukk"Knappetekst
autoClosebooleanfalseLukk automatisk etter suksess
autoCloseDelayMsnumber1600Forsinkelse før auto-lukk (ms)
tsx
<LumiSurveyDock
  success={{
    title: "Tusen takk!",
    body: "Tilbakemeldingen din hjelper oss å forbedre tjenesten.",
    autoClose: true,
    autoCloseDelayMs: 2000,
  }}
/>

style — LumiSurveyStyle ​

Visuell tilpasning av dock-panelet.

PropertyTypeDefaultBeskrivelse
position"bottom-right" | "bottom-left""bottom-right"Posisjon på skjermen
offsetnumber24Avstand fra viewport-kant i px
containerClassNamestring—Ekstra CSS-klasse for container
panelClassNamestring—Ekstra CSS-klasse for panelet
panelBackground--lumi-* CSS custom property eller CSS-fargestreng"default"Bakgrunnsfarge
panelBorderColor--lumi-* CSS custom property eller CSS-fargestreng"neutral-subtle"Kantfarge
tsx
<LumiSurveyDock
  style={{
    position: "bottom-left",
    offset: 16,
    panelBackground: "surface-subtle",
  }}
/>

Se Styling for mer om visuell tilpasning.

events — LumiSurveyEvents ​

Event-callbacks for livssyklus og sporing. Se Events for fullstendig dokumentasjon med brukseksempler.

intro — LumiSurveyIntroConfig ​

Viser en intro-skjerm før første spørsmål.

PropertyTypeDefaultBeskrivelse
titlestring✅ (påkrevd)Overskrift på intro-skjermen
bodyReactNode—Valgfri brødtekst
startLabelstring"Start"Knappetekst for å starte surveyen
tsx
<LumiSurveyDock
  intro={{
    title: "Hjelp oss å forbedre tjenesten",
    body: "Det tar bare 30 sekunder. Alle svar er anonyme.",
    startLabel: "Gi tilbakemelding",
  }}
/>

context — LumiSurveyContext ​

Metadata for segmentering og feilsøking. Se Context & tags for fullstendig dokumentasjon.

ts
interface LumiSurveyContext {
  // Auto-collected
  viewport?: { width: number; height: number };
  deviceType?: "mobile" | "tablet" | "desktop";
  userAgent?: string;

  // Opt-in (krever collectLocation: true)
  url?: string;
  pathname?: string;

  // Manuelt satt
  tags?: Record<string, string | number | boolean>;
  debug?: Record<string, unknown>;
}

Lumi Analytics — bygget på navikt/lumi (MIT-lisens)