From ef94a3444614f91065f1852312f474ea32a00f7b Mon Sep 17 00:00:00 2001 From: yurytut1993 Date: Thu, 21 Mar 2024 17:50:14 +0200 Subject: [PATCH] feat(core): add FormFields fragment --- .changeset/healthy-needles-deny.md | 5 ++ apps/core/client/fragments/form-fields.ts | 54 +++++++++++++++ .../client/queries/get-address-form-fields.ts | 67 ++++--------------- .../queries/get-customer-form-fields.ts | 67 ++++--------------- 4 files changed, 83 insertions(+), 110 deletions(-) create mode 100644 .changeset/healthy-needles-deny.md create mode 100644 apps/core/client/fragments/form-fields.ts diff --git a/.changeset/healthy-needles-deny.md b/.changeset/healthy-needles-deny.md new file mode 100644 index 000000000..352c11682 --- /dev/null +++ b/.changeset/healthy-needles-deny.md @@ -0,0 +1,5 @@ +--- +"@bigcommerce/catalyst-client": patch +--- + +add customer & address form fields queries diff --git a/apps/core/client/fragments/form-fields.ts b/apps/core/client/fragments/form-fields.ts new file mode 100644 index 000000000..dfacf9c59 --- /dev/null +++ b/apps/core/client/fragments/form-fields.ts @@ -0,0 +1,54 @@ +import { graphql } from '../graphql'; + +export const FORM_FIELDS_FRAGMENT = graphql(` + fragment FormFields on FormField { + entityId + label + sortOrder + isBuiltIn + isRequired + __typename + ... on CheckboxesFormField { + options { + entityId + label + } + } + ... on DateFormField { + defaultDate + minDate + maxDate + } + ... on MultilineTextFormField { + defaultText + rows + } + ... on NumberFormField { + defaultNumber + maxLength + minNumber + maxNumber + } + ... on PasswordFormField { + defaultText + maxLength + } + ... on PicklistFormField { + choosePrefix + options { + entityId + label + } + } + ... on RadioButtonsFormField { + options { + entityId + label + } + } + ... on TextFormField { + defaultText + maxLength + } + } +`); diff --git a/apps/core/client/queries/get-address-form-fields.ts b/apps/core/client/queries/get-address-form-fields.ts index f18669959..6e9c888ec 100644 --- a/apps/core/client/queries/get-address-form-fields.ts +++ b/apps/core/client/queries/get-address-form-fields.ts @@ -1,6 +1,7 @@ import { cache } from 'react'; import { client } from '..'; +import { FORM_FIELDS_FRAGMENT } from '../fragments/form-fields'; import { FormFieldFiltersInput, FormFieldSortInput } from '../generated/graphql'; import { graphql } from '../graphql'; import { revalidate } from '../revalidate-target'; @@ -10,66 +11,22 @@ interface AddressFormFields { sortBy?: FormFieldSortInput; } -const GET_ADDRESS_FORM_FIELDS = graphql(` - query getAddressFormFields($filters: FormFieldFiltersInput, $sortBy: FormFieldSortInput) { - site { - settings { - formFields { - shippingAddress(filters: $filters, sortBy: $sortBy) { - entityId - label - sortOrder - isBuiltIn - isRequired - __typename - ... on CheckboxesFormField { - options { - entityId - label - } - } - ... on DateFormField { - defaultDate - minDate - maxDate - } - ... on MultilineTextFormField { - defaultText - rows - } - ... on NumberFormField { - defaultNumber - maxLength - minNumber - maxNumber - } - ... on PasswordFormField { - defaultText - maxLength - } - ... on PicklistFormField { - choosePrefix - options { - entityId - label - } - } - ... on RadioButtonsFormField { - options { - entityId - label - } - } - ... on TextFormField { - defaultText - maxLength +const GET_ADDRESS_FORM_FIELDS = graphql( + ` + query getAddressFormFields($filters: FormFieldFiltersInput, $sortBy: FormFieldSortInput) { + site { + settings { + formFields { + shippingAddress(filters: $filters, sortBy: $sortBy) { + ...FormFields } } } } } - } -`); + `, + [FORM_FIELDS_FRAGMENT], +); export const getAddressFormFields = cache(async ({ filters, sortBy }: AddressFormFields) => { const response = await client.fetch({ diff --git a/apps/core/client/queries/get-customer-form-fields.ts b/apps/core/client/queries/get-customer-form-fields.ts index cb3a19d25..aecdbf01a 100644 --- a/apps/core/client/queries/get-customer-form-fields.ts +++ b/apps/core/client/queries/get-customer-form-fields.ts @@ -1,6 +1,7 @@ import { cache } from 'react'; import { client } from '..'; +import { FORM_FIELDS_FRAGMENT } from '../fragments/form-fields'; import { FormFieldFiltersInput, FormFieldSortInput } from '../generated/graphql'; import { graphql } from '../graphql'; import { revalidate } from '../revalidate-target'; @@ -10,66 +11,22 @@ interface CustomerFormFields { sortBy?: FormFieldSortInput; } -const GET_CUSTOMER_FORM_FIELDS = graphql(` - query getCustomerFormFields($filters: FormFieldFiltersInput, $sortBy: FormFieldSortInput) { - site { - settings { - formFields { - customer(filters: $filters, sortBy: $sortBy) { - entityId - label - sortOrder - isBuiltIn - isRequired - __typename - ... on CheckboxesFormField { - options { - entityId - label - } - } - ... on DateFormField { - defaultDate - minDate - maxDate - } - ... on MultilineTextFormField { - defaultText - rows - } - ... on NumberFormField { - defaultNumber - maxLength - minNumber - maxNumber - } - ... on PasswordFormField { - defaultText - maxLength - } - ... on PicklistFormField { - choosePrefix - options { - entityId - label - } - } - ... on RadioButtonsFormField { - options { - entityId - label - } - } - ... on TextFormField { - defaultText - maxLength +const GET_CUSTOMER_FORM_FIELDS = graphql( + ` + query getCustomerFormFields($filters: FormFieldFiltersInput, $sortBy: FormFieldSortInput) { + site { + settings { + formFields { + customer(filters: $filters, sortBy: $sortBy) { + ...FormFields } } } } } - } -`); + `, + [FORM_FIELDS_FRAGMENT], +); export const getCustomerFormFields = cache(async ({ filters, sortBy }: CustomerFormFields) => { const response = await client.fetch({