diff --git a/apps/cms/config/sync/config_ignore.settings.yml b/apps/cms/config/sync/config_ignore.settings.yml index 22621eec1..3e06627a5 100644 --- a/apps/cms/config/sync/config_ignore.settings.yml +++ b/apps/cms/config/sync/config_ignore.settings.yml @@ -3,4 +3,5 @@ _core: mode: simple ignored_config_entities: - 'webform.webform*' + - ~webform.webform.inquiry enable_export_filtering: true diff --git a/apps/cms/config/sync/webform.webform.inquiry.yml b/apps/cms/config/sync/webform.webform.inquiry.yml new file mode 100644 index 000000000..b81b4b274 --- /dev/null +++ b/apps/cms/config/sync/webform.webform.inquiry.yml @@ -0,0 +1,222 @@ +uuid: abe65e3d-4e21-4079-9f3e-dcb8f5cf4f7b +langcode: en +status: open +dependencies: { } +weight: 0 +open: null +close: null +uid: 1 +template: false +archive: false +id: inquiry +title: Inquiry +description: 'Ask a simple question.' +categories: { } +elements: |- + name: + '#title': 'Your Name' + '#type': textfield + '#required': true + '#default_value': '[current-user:display-name]' + email: + '#title': 'Your Email' + '#type': email + '#required': true + '#default_value': '[current-user:mail]' + subject: + '#title': Subject + '#type': textfield + '#test': 'Testing contact webform from [site:name]' + question: + '#type': textarea + '#title': Question + '#required': true + actions: + '#type': webform_actions + '#title': 'Submit button(s)' + '#submit__label': 'Send message' +css: '' +javascript: '' +settings: + ajax: false + ajax_scroll_top: form + ajax_progress_type: '' + ajax_effect: '' + ajax_speed: null + page: true + page_submit_path: '' + page_confirm_path: '' + page_theme_name: '' + form_title: both + form_submit_once: false + form_open_message: '' + form_close_message: '' + form_exception_message: '' + form_previous_submissions: true + form_confidential: false + form_confidential_message: '' + form_disable_remote_addr: false + form_convert_anonymous: false + form_prepopulate: false + form_prepopulate_source_entity: false + form_prepopulate_source_entity_required: false + form_prepopulate_source_entity_type: '' + form_unsaved: false + form_disable_back: false + form_submit_back: false + form_disable_autocomplete: false + form_novalidate: false + form_disable_inline_errors: false + form_required: false + form_autofocus: false + form_details_toggle: false + form_reset: false + form_access_denied: default + form_access_denied_title: '' + form_access_denied_message: '' + form_access_denied_attributes: { } + form_file_limit: '' + form_attributes: { } + form_method: '' + form_action: '' + share: false + share_node: false + share_theme_name: '' + share_title: true + share_page_body_attributes: { } + submission_label: '' + submission_exception_message: '' + submission_locked_message: '' + submission_log: false + submission_excluded_elements: { } + submission_exclude_empty: false + submission_exclude_empty_checkbox: false + submission_views: { } + submission_views_replace: { } + submission_user_columns: { } + submission_user_duplicate: false + submission_access_denied: default + submission_access_denied_title: '' + submission_access_denied_message: '' + submission_access_denied_attributes: { } + previous_submission_message: '' + previous_submissions_message: '' + autofill: false + autofill_message: '' + autofill_excluded_elements: { } + wizard_progress_bar: true + wizard_progress_pages: false + wizard_progress_percentage: false + wizard_progress_link: false + wizard_progress_states: false + wizard_start_label: '' + wizard_preview_link: false + wizard_confirmation: true + wizard_confirmation_label: '' + wizard_auto_forward: true + wizard_auto_forward_hide_next_button: false + wizard_keyboard: true + wizard_track: '' + wizard_prev_button_label: '' + wizard_next_button_label: '' + wizard_toggle: false + wizard_toggle_show_label: '' + wizard_toggle_hide_label: '' + wizard_page_type: container + wizard_page_title_tag: h2 + preview: 0 + preview_label: '' + preview_title: '' + preview_message: '' + preview_attributes: { } + preview_excluded_elements: { } + preview_exclude_empty: true + preview_exclude_empty_checkbox: false + draft: none + draft_multiple: false + draft_auto_save: false + draft_saved_message: '' + draft_loaded_message: '' + draft_pending_single_message: '' + draft_pending_multiple_message: '' + confirmation_type: url_message + confirmation_url: /page-minimal + confirmation_title: '' + confirmation_message: 'Confirmation message for Contact webform' + confirmation_attributes: { } + confirmation_back: true + confirmation_back_label: '' + confirmation_back_attributes: { } + confirmation_exclude_query: false + confirmation_exclude_token: false + confirmation_update: false + limit_total: null + limit_total_interval: null + limit_total_message: '' + limit_total_unique: false + limit_user: null + limit_user_interval: null + limit_user_message: '' + limit_user_unique: false + entity_limit_total: null + entity_limit_total_interval: null + entity_limit_user: null + entity_limit_user_interval: null + purge: none + purge_days: null + results_disabled: false + results_disabled_ignore: false + results_customize: false + token_view: false + token_update: false + token_delete: false + serial_disabled: false +access: + create: + roles: + - anonymous + - authenticated + users: { } + permissions: { } + view_any: + roles: { } + users: { } + permissions: { } + update_any: + roles: { } + users: { } + permissions: { } + delete_any: + roles: { } + users: { } + permissions: { } + purge_any: + roles: { } + users: { } + permissions: { } + view_own: + roles: { } + users: { } + permissions: { } + update_own: + roles: { } + users: { } + permissions: { } + delete_own: + roles: { } + users: { } + permissions: { } + administer: + roles: { } + users: { } + permissions: { } + test: + roles: { } + users: { } + permissions: { } + configuration: + roles: { } + users: { } + permissions: { } +handlers: { } +variants: { } diff --git a/apps/website/gatsby-node.mjs b/apps/website/gatsby-node.mjs index 62ae7f61e..ffce8e751 100644 --- a/apps/website/gatsby-node.mjs +++ b/apps/website/gatsby-node.mjs @@ -89,11 +89,11 @@ export const createPages = async ({ actions }) => { }); }); - // Create a contact page in each language. + // Create a inquiry page in each language. Object.values(Locale).forEach((locale) => { actions.createPage({ - path: `/${locale}/contact`, - component: resolve(`./src/templates/contact.tsx`), + path: `/${locale}/inquiry`, + component: resolve(`./src/templates/inquiry.tsx`), }); }); diff --git a/apps/website/src/templates/contact.tsx b/apps/website/src/templates/contact.tsx deleted file mode 100644 index 5889f02d9..000000000 --- a/apps/website/src/templates/contact.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import { Contact } from '@custom/ui/routes/Contact'; -import React from 'react'; - -export default function ContactPage() { - return ; -} diff --git a/apps/website/src/templates/inquiry.tsx b/apps/website/src/templates/inquiry.tsx new file mode 100644 index 000000000..eb90f5fa2 --- /dev/null +++ b/apps/website/src/templates/inquiry.tsx @@ -0,0 +1,6 @@ +import { Inquiry } from '@custom/ui/routes/Inquiry'; +import React from 'react'; + +export default function InquiryPage() { + return ; +} diff --git a/packages/ui/src/components/Molecules/ContactForm.stories.tsx b/packages/ui/src/components/Molecules/InquiryForm.stories.tsx similarity index 78% rename from packages/ui/src/components/Molecules/ContactForm.stories.tsx rename to packages/ui/src/components/Molecules/InquiryForm.stories.tsx index e9e27264d..853793c16 100644 --- a/packages/ui/src/components/Molecules/ContactForm.stories.tsx +++ b/packages/ui/src/components/Molecules/InquiryForm.stories.tsx @@ -7,26 +7,26 @@ import { Meta, StoryObj } from '@storybook/react'; import { userEvent, within } from '@storybook/test'; import React from 'react'; -import { ContactForm } from './ContactForm'; +import { InquiryForm } from './InquiryForm'; -type ContactFormExecutor = () => Promise< +type InquiryFormExecutor = () => Promise< OperationResult >; export default { - title: 'Components/Molecules/ContactForm', + title: 'Components/Molecules/InquiryForm', render: (args) => { return ( - + ); }, -} satisfies Meta<{ exec: ContactFormExecutor }>; +} satisfies Meta<{ exec: InquiryFormExecutor }>; -export const Empty = {} satisfies StoryObj; +export const Empty = {} satisfies StoryObj; -export const FilledForm: StoryObj = { +export const FilledForm: StoryObj = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); const nameInput = canvas.getByPlaceholderText('Name'); @@ -41,10 +41,10 @@ export const FilledForm: StoryObj = { await userEvent.type(subjectInput, 'Lorem ipsum', { delay: 5, }); - const messageInput = canvas.getByPlaceholderText('Message'); + const questionInput = canvas.getByPlaceholderText('Question'); await userEvent.type( - messageInput, - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', + questionInput, + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit?', { delay: 5, }, @@ -52,7 +52,7 @@ export const FilledForm: StoryObj = { }, }; -export const WithValidationErrors: StoryObj<{ exec: ContactFormExecutor }> = { +export const WithValidationErrors: StoryObj<{ exec: InquiryFormExecutor }> = { args: { exec: async () => { return { @@ -83,10 +83,10 @@ export const WithValidationErrors: StoryObj<{ exec: ContactFormExecutor }> = { await userEvent.type(subjectInput, 'Lorem ipsum', { delay: 5, }); - const messageInput = canvas.getByPlaceholderText('Message'); + const questionInput = canvas.getByPlaceholderText('Question'); await userEvent.type( - messageInput, - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', + questionInput, + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit?', { delay: 5, }, @@ -96,7 +96,7 @@ export const WithValidationErrors: StoryObj<{ exec: ContactFormExecutor }> = { }, }; -export const WithSuccessfulSubmission: StoryObj<{ exec: ContactFormExecutor }> = +export const WithSuccessfulSubmission: StoryObj<{ exec: InquiryFormExecutor }> = { args: { exec: async () => { @@ -122,10 +122,10 @@ export const WithSuccessfulSubmission: StoryObj<{ exec: ContactFormExecutor }> = await userEvent.type(subjectInput, 'Lorem ipsum', { delay: 5, }); - const messageInput = canvas.getByPlaceholderText('Message'); + const questionInput = canvas.getByPlaceholderText('Question'); await userEvent.type( - messageInput, - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', + questionInput, + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit?', { delay: 5, }, diff --git a/packages/ui/src/components/Molecules/ContactForm.tsx b/packages/ui/src/components/Molecules/InquiryForm.tsx similarity index 93% rename from packages/ui/src/components/Molecules/ContactForm.tsx rename to packages/ui/src/components/Molecules/InquiryForm.tsx index ce09588b0..c58db3309 100644 --- a/packages/ui/src/components/Molecules/ContactForm.tsx +++ b/packages/ui/src/components/Molecules/InquiryForm.tsx @@ -11,10 +11,10 @@ const formValueSchema = z.object({ name: z.string(), email: z.string(), subject: z.string().optional(), - message: z.string(), + question: z.string(), }); -export function ContactForm() { +export function InquiryForm() { const intl = useIntl(); type FormValue = z.infer; const { register, handleSubmit } = useForm(); @@ -33,8 +33,8 @@ export function ContactForm() { !isMutating && data && data.createWebformSubmission?.submission ? [ intl.formatMessage({ - defaultMessage: 'The contact has been submitted.', - id: 'gD5ZU1', + defaultMessage: 'The inquiry has been submitted.', + id: 'SEJ9ng', }), ] : null; @@ -48,7 +48,7 @@ export function ContactForm() { className="mt-5 sm:items-center" onSubmit={handleSubmit((values) => { trigger({ - webformId: 'contact', + webformId: 'inquiry', submittedData: JSON.stringify(values), }); })} @@ -102,18 +102,18 @@ export function ContactForm() { />
-