From 18f0adcf70763629814a1a3285c47bc3128c1f24 Mon Sep 17 00:00:00 2001 From: Purusoth Thushyanthan Date: Tue, 3 Sep 2024 13:05:26 +0200 Subject: [PATCH 01/13] feat(utils): new error messages --- tavla/app/(admin)/utils/index.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tavla/app/(admin)/utils/index.ts b/tavla/app/(admin)/utils/index.ts index 51fb5cce1..fdb478464 100644 --- a/tavla/app/(admin)/utils/index.ts +++ b/tavla/app/(admin)/utils/index.ts @@ -234,6 +234,20 @@ export function getFormFeedbackForError( variant: 'error', } } + case 'contact/message-missing': { + return { + form_type: 'user', + feedback: 'Vennligst legg igjen en melding', + variant: 'error', + } + } + case 'success': { + return { + form_type: 'general', + feedback: '', + variant: 'success', + } + } } return { From e914ba78ca90864c1c2f82d183dd17e2922f31c0 Mon Sep 17 00:00:00 2001 From: Purusoth Thushyanthan Date: Wed, 4 Sep 2024 08:04:49 +0200 Subject: [PATCH 02/13] feat(landing): contact form --- tavla/app/(admin)/utils/index.ts | 7 --- tavla/app/components/ContactForm.tsx | 92 ++++++++++++++++++++++++++++ tavla/app/components/Expandable.tsx | 34 ++++++++++ tavla/app/components/actions.ts | 32 ++++++++++ tavla/app/layout.tsx | 4 +- 5 files changed, 160 insertions(+), 9 deletions(-) create mode 100644 tavla/app/components/ContactForm.tsx create mode 100644 tavla/app/components/Expandable.tsx create mode 100644 tavla/app/components/actions.ts diff --git a/tavla/app/(admin)/utils/index.ts b/tavla/app/(admin)/utils/index.ts index fdb478464..bc4c33b41 100644 --- a/tavla/app/(admin)/utils/index.ts +++ b/tavla/app/(admin)/utils/index.ts @@ -241,13 +241,6 @@ export function getFormFeedbackForError( variant: 'error', } } - case 'success': { - return { - form_type: 'general', - feedback: '', - variant: 'success', - } - } } return { diff --git a/tavla/app/components/ContactForm.tsx b/tavla/app/components/ContactForm.tsx new file mode 100644 index 000000000..a769b631a --- /dev/null +++ b/tavla/app/components/ContactForm.tsx @@ -0,0 +1,92 @@ +'use client' +import { TextArea, TextField } from '@entur/form' +import { Heading4, Label, Paragraph } from '@entur/typography' +import { SubmitButton } from 'components/Form/SubmitButton' +import { useFormState } from 'react-dom' +import { postForm } from './actions' +import { getFormFeedbackForField } from 'app/(admin)/utils' +import { useEffect, useRef, useState } from 'react' +import { FormError } from 'app/(admin)/components/FormError' +import { useToast } from '@entur/alert' +import { Expandable } from './Expandable' + +export function ContactForm() { + const formRef = useRef(null) + const { addToast } = useToast() + const [state, action] = useFormState(postForm, undefined) + const [isOpen, setIsOpen] = useState(false) + + useEffect(() => { + if (!formRef.current) return + if (state?.feedback) { + setIsOpen(true) + } else { + formRef.current?.reset() + setIsOpen(false) + addToast('Takk for din tilbakemelding!') + } + }, [state, addToast]) + return ( +
+ +
+ + Har du spørsmål/innspill eller ønsker hjelp med å komme + i gang? + +
+ + + +
+
+ +