{"version":3,"file":"Feedback.cjs","sources":["../../../../src/components/feedback/Feedback.tsx"],"sourcesContent":["import React, { type ReactElement, type ReactNode, useState } from \"react\";\nimport type { BaseTextAreaProps } from \"../text-area/types.js\";\nimport { FeedbackContextProvider } from \"./feedbackContext.js\";\nimport { Followup } from \"./followup/Followup.js\";\nimport { MainQuestion } from \"./main-question/MainQuestion.js\";\nimport { ContactQuestion } from \"./questions/ContactQuestion.js\";\nimport type {\n    ContactQuestionProps,\n    FeedbackOption,\n    FeedbackType,\n    FollowupProps,\n} from \"./types.js\";\n\nexport type FeedbackProps = {\n    className?: string;\n    /** Velg typen alternativer, Smiley eller RadioButtons. */\n    type: \"radio\" | \"smiley\";\n    /** Spørsmålet som stilles til brukeren */\n    label: string;\n    /** Hjelpetekst til hovedspørsmålet */\n    helpLabel?: string;\n    /** Svaralternativer til spørsmålet */\n    options: FeedbackOption[];\n    /** Dersom du vil stille et åpent spørsmål i tillegg kan du sette denne til en truthy verdi */\n    addOnQuestion?:\n        | {\n              /** Spørsmålet du vil stille */\n              label?: string;\n              /** Eventuell hjelpetekst. Om du ikke spesifiserer en vil det vises en påminnelse om å ikke skrive inn personling informasjon. */\n              helpLabel?: string;\n          }\n        | boolean;\n    /** Lar deg tilpasse meldingen som kommer når brukeren sender inn tilbakemeldingen.  */\n    successMessage?: {\n        title: string;\n        children: ReactNode;\n    };\n    /**\n     * Funksjon for å håndtere innsending av tilbakemelding\n     * @param value Verdien av tilbakemeldingen. Dette er et objekt med følgende egenskaper:\n     * - `feedbackValue`: Selve verdien av tilbakemeldingen (format varierer etter spørsmålstype)\n     * - `intentionalSubmit`: Er `true` hvis brukeren aktivt sendte inn skjemaet, `false` hvis skjemaet ble sendt inn automatisk\n     * - `message`: Eventuell utfyllende melding fra bruker. Blir kun sendt inn ved aktiv innsending\n     */\n    onSubmit: (value: FeedbackType) => void;\n    followup?: FollowupProps;\n    contactQuestion?: ContactQuestionProps;\n    /**\n     * Hvis du ønsker at Feedback formen skal eksponeres som et landmark kan du sende inn\n     * hva du ønsker at en skjermleser skal kalle den her. Bare eksponer Feedback som et\n     * landmark på sider der den er en viktig del av innholdet, feks en kvitteringsside\n     * eller et annet sted det å kunne gi tilbakemelding vil føles naturlig eller forventet\n     * for brukeren.\n     */\n    landmarkLabel?: string;\n} & Pick<BaseTextAreaProps, \"counter\">;\n\nexport const Feedback = ({\n    className,\n    followup,\n    contactQuestion,\n    counter,\n    landmarkLabel,\n    ...mainQuestionProps\n}: FeedbackProps): ReactElement => {\n    const [feedbackSubmitted, setFeedbackSubmitted] = useState(false);\n    const [followupStarted, setFollowupStarted] = useState(false);\n    const [followupSubmitted, setFollowupSubmitted] = useState(false);\n    const [contactSubmitted, setContactSubmitted] = useState(false);\n\n    return (\n        <div\n            className={`jkl-feedback ${className || \"\"}`}\n            data-testid=\"feedback\"\n        >\n            <FeedbackContextProvider\n                value={{\n                    feedbackSubmitted,\n                    followupStarted,\n                    followupSubmitted,\n                    contactSubmitted,\n                    counter,\n                    landmarkLabel,\n                    setFeedbackSubmitted,\n                    setFollowupStarted,\n                    setFollowupSubmitted,\n                    setContactSubmitted,\n                }}\n            >\n                {!followupStarted && <MainQuestion {...mainQuestionProps} />}\n                {feedbackSubmitted && !contactSubmitted && followup && (\n                    <Followup {...followup} />\n                )}\n                {contactQuestion && (\n                    <div aria-live=\"polite\">\n                        {/* Show contact question after followup, or after feedback if no followup */}\n                        {((!followup && feedbackSubmitted) ||\n                            followupSubmitted) && (\n                            <ContactQuestion {...contactQuestion} />\n                        )}\n                    </div>\n                )}\n            </FeedbackContextProvider>\n        </div>\n    );\n};\n"],"names":["className","followup","contactQuestion","counter","landmarkLabel","mainQuestionProps","feedbackSubmitted","setFeedbackSubmitted","useState","followupStarted","setFollowupStarted","followupSubmitted","setFollowupSubmitted","contactSubmitted","setContactSubmitted","jsx","children","jsxs","FeedbackContextProvider","value","MainQuestion","Followup","ContactQuestion"],"mappings":"4TAyDwB,EACpBA,UAAAA,EACAC,SAAAA,EACAC,gBAAAA,EACAC,QAAAA,EACAC,cAAAA,KACGC,MAEH,MAAOC,EAAmBC,GAAwBC,EAAAA,UAAS,IACpDC,EAAiBC,GAAsBF,EAAAA,UAAS,IAChDG,EAAmBC,GAAwBJ,EAAAA,UAAS,IACpDK,EAAkBC,GAAuBN,EAAAA,UAAS,GAEzD,OACIO,EAAAA,IAAC,MAAA,CACGf,UAAW,gBAAgBA,GAAa,KACxC,cAAY,WAEZgB,SAAAC,EAAAA,KAACC,EAAAA,wBAAA,CACGC,MAAO,CACHb,kBAAAA,EACAG,gBAAAA,EACAE,kBAAAA,EACAE,iBAAAA,EACAV,QAAAA,EACAC,cAAAA,EACAG,qBAAAA,EACAG,mBAAAA,EACAE,qBAAAA,EACAE,oBAAAA,GAGHE,SAAA,EAACP,GAAmBM,EAAAA,IAACK,EAAAA,aAAA,IAAiBf,IACtCC,IAAsBO,GAAoBZ,GACvCc,EAAAA,IAACM,WAAA,IAAapB,IAEjBC,GACGa,EAAAA,IAAC,MAAA,CAAI,YAAU,SAERC,WAACf,GAAYK,GACZK,IACAI,EAAAA,IAACO,EAAAA,gBAAA,IAAoBpB"}