From f1636d9057a4785e0cda9b128a01cd109bb314d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joe=20K=C3=BCng?= Date: Mon, 9 Feb 2026 17:59:51 +0100 Subject: [PATCH] feat(web): success message contact us --- .../contact-form/contact-form.component.html | 146 ++++++++++-------- .../contact-form/contact-form.component.scss | 38 +++++ .../contact-form/contact-form.component.ts | 11 +- frontend/src/assets/i18n/en.json | 5 +- frontend/src/assets/i18n/it.json | 5 +- 5 files changed, 132 insertions(+), 73 deletions(-) diff --git a/frontend/src/app/features/contact/components/contact-form/contact-form.component.html b/frontend/src/app/features/contact/components/contact-form/contact-form.component.html index 69b02af..23bba83 100644 --- a/frontend/src/app/features/contact/components/contact-form/contact-form.component.html +++ b/frontend/src/app/features/contact/components/contact-form/contact-form.component.html @@ -1,73 +1,87 @@ -
- -
- - -
- -
- - - - -
- - -
-
- {{ 'CONTACT.TYPE_PRIVATE' | translate }} -
-
- {{ 'CONTACT.TYPE_COMPANY' | translate }} +@if (sent()) { +
+
+ + + +
+

{{ 'CONTACT.SUCCESS_TITLE' | translate }}

+

{{ 'CONTACT.SUCCESS_DESC' | translate }}

+ {{ 'CONTACT.SEND_ANOTHER' | translate }}
- - - - - -
- - -
- -
- - -
- - -
- -

{{ 'CONTACT.UPLOAD_HINT' | translate }}

- -
- -

{{ 'CONTACT.DROP_FILES' | translate }}

+} @else { + + +
+ +
-
-
- - -
- PDF - 3D -
-
{{ file.file.name }}
+
+ + + + +
+ + +
+
+ {{ 'CONTACT.TYPE_PRIVATE' | translate }} +
+
+ {{ 'CONTACT.TYPE_COMPANY' | translate }}
-
-
- - {{ sent() ? ('CONTACT.MSG_SENT' | translate) : ('CONTACT.SEND' | translate) }} - -
- + + + + +
+ + +
+ +
+ + +
+ + +
+ +

{{ 'CONTACT.UPLOAD_HINT' | translate }}

+ +
+ +

{{ 'CONTACT.DROP_FILES' | translate }}

+
+ +
+
+ + +
+ PDF + 3D +
+
{{ file.file.name }}
+
+
+
+ +
+ + {{ sent() ? ('CONTACT.MSG_SENT' | translate) : ('CONTACT.SEND' | translate) }} + +
+ +} diff --git a/frontend/src/app/features/contact/components/contact-form/contact-form.component.scss b/frontend/src/app/features/contact/components/contact-form/contact-form.component.scss index 299a2d0..e8437e2 100644 --- a/frontend/src/app/features/contact/components/contact-form/contact-form.component.scss +++ b/frontend/src/app/features/contact/components/contact-form/contact-form.component.scss @@ -131,3 +131,41 @@ app-input.col { width: 100%; } display: flex; align-items: center; justify-content: center; line-height: 1; &:hover { background: red; } } + +/* Success State */ +.success-state { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + padding: var(--space-8) var(--space-4); + gap: var(--space-4); + min-height: 300px; /* Ensure visual balance */ + + .success-icon { + width: 64px; + height: 64px; + color: var(--color-success, #10b981); + margin-bottom: var(--space-2); + + svg { + width: 100%; + height: 100%; + } + } + + h3 { + font-size: 1.5rem; + font-weight: 600; + color: var(--color-text); + margin: 0; + } + + p { + color: var(--color-text-muted); + max-width: 400px; + margin-bottom: var(--space-4); + line-height: 1.5; + } +} diff --git a/frontend/src/app/features/contact/components/contact-form/contact-form.component.ts b/frontend/src/app/features/contact/components/contact-form/contact-form.component.ts index 8889620..f46b7da 100644 --- a/frontend/src/app/features/contact/components/contact-form/contact-form.component.ts +++ b/frontend/src/app/features/contact/components/contact-form/contact-form.component.ts @@ -161,13 +161,14 @@ export class ContactFormComponent { console.log('Form Submit:', formData); this.sent.set(true); - setTimeout(() => { - this.sent.set(false); - this.form.reset({ requestType: 'custom', isCompany: false }); - this.files.set([]); - }, 3000); } else { this.form.markAllAsTouched(); } } + + resetForm() { + this.sent.set(false); + this.form.reset({ requestType: 'custom', isCompany: false }); + this.files.set([]); + } } diff --git a/frontend/src/assets/i18n/en.json b/frontend/src/assets/i18n/en.json index 938928f..a44cb04 100644 --- a/frontend/src/assets/i18n/en.json +++ b/frontend/src/assets/i18n/en.json @@ -126,6 +126,9 @@ "LABEL_EMAIL": "Email *", "LABEL_NAME": "Name *", "MSG_SENT": "Sent!", - "ERR_MAX_FILES": "Max 15 files limit reached." + "ERR_MAX_FILES": "Max 15 files limit reached.", + "SUCCESS_TITLE": "Message Sent Successfully", + "SUCCESS_DESC": "Thank you for contacting us. We have received your message and will send you a recap email shortly.", + "SEND_ANOTHER": "Send Another Message" } } diff --git a/frontend/src/assets/i18n/it.json b/frontend/src/assets/i18n/it.json index 98e4dc8..70a7190 100644 --- a/frontend/src/assets/i18n/it.json +++ b/frontend/src/assets/i18n/it.json @@ -105,6 +105,9 @@ "LABEL_EMAIL": "Email *", "LABEL_NAME": "Nome *", "MSG_SENT": "Inviato!", - "ERR_MAX_FILES": "Limite massimo di 15 file raggiunto." + "ERR_MAX_FILES": "Limite massimo di 15 file raggiunto.", + "SUCCESS_TITLE": "Messaggio Inviato con Successo", + "SUCCESS_DESC": "Grazie per averci contattato. Abbiamo ricevuto il tuo messaggio e ti invieremo una email di riepilogo a breve.", + "SEND_ANOTHER": "Invia un altro messaggio" } }