@fremtind/jkl-feedback-react
Version:
Jøkul react feedback component
51 lines (50 loc) • 2.56 kB
TypeScript
import { BaseTextAreaProps } from "@fremtind/jkl-text-input-react/src/BaseTextArea";
import { ReactElement, ReactNode, ComponentProps } from "react";
import { Followup } from "./followup/Followup";
import { ContactQuestion } from "./questions";
import { FeedbackOption, FeedbackType } from "./types";
type FollowupProps = ComponentProps<typeof Followup>;
type ContactQuestionProps = ComponentProps<typeof ContactQuestion>;
type Props = {
className?: string;
/** Velg typen alternativer, Smiley eller RadioButtons. */
type: "radio" | "smiley";
/** Spørsmålet som stilles til brukeren */
label: string;
/** Hjelpetekst til hovedspørsmålet */
helpLabel?: string;
/** Svaralternativer til spørsmålet */
options: FeedbackOption[];
/** Dersom du vil stille et åpent spørsmål i tillegg kan du sette denne til en truthy verdi */
addOnQuestion?: {
/** Spørsmålet du vil stille */
label?: string;
/** Eventuell hjelpetekst. Om du ikke spesifiserer en vil det vises en påminnelse om å ikke skrive inn personling informasjon. */
helpLabel?: string;
} | boolean;
/** Lar deg tilpasse meldingen som kommer når brukeren sender inn tilbakemeldingen. */
successMessage?: {
title: string;
children: ReactNode;
};
/**
* Funksjon for å håndtere innsending av tilbakemelding
* @param value Verdien av tilbakemeldingen. Dette er et objekt med følgende egenskaper:
* - `feedbackValue`: Selve verdien av tilbakemeldingen (format varierer etter spørsmålstype)
* - `intentionalSubmit`: Er `true` hvis brukeren aktivt sendte inn skjemaet, `false` hvis skjemaet ble sendt inn automatisk
* - `message`: Eventuell utfyllende melding fra bruker. Blir kun sendt inn ved aktiv innsending
*/
onSubmit: (value: FeedbackType) => void;
followup?: FollowupProps;
contactQuestion?: ContactQuestionProps;
/**
* Hvis du ønsker at Feedback formen skal eksponeres som et landmark kan du sende inn
* hva du ønsker at en skjermleser skal kalle den her. Bare eksponer Feedback som et
* landmark på sider der den er en viktig del av innholdet, feks en kvitteringsside
* eller et annet sted det å kunne gi tilbakemelding vil føles naturlig eller forventet
* for brukeren.
*/
landmarkLabel?: string;
} & Pick<BaseTextAreaProps, "counter">;
export declare const Feedback: ({ className, followup, contactQuestion, counter, landmarkLabel, ...mainQuestionProps }: Props) => ReactElement;
export {};