diff --git a/.changeset/clever-rivers-look.md b/.changeset/clever-rivers-look.md new file mode 100644 index 0000000000..ed480551a2 --- /dev/null +++ b/.changeset/clever-rivers-look.md @@ -0,0 +1,5 @@ +--- +'@graphcommerce/hygraph-ui': patch +--- + +Solve issue where the preview mode wouldn't initialize if the hygraphLocales weren't defined diff --git a/.changeset/fifty-points-tap.md b/.changeset/fifty-points-tap.md new file mode 100644 index 0000000000..dd0cfe6f32 --- /dev/null +++ b/.changeset/fifty-points-tap.md @@ -0,0 +1,5 @@ +--- +'@graphcommerce/algolia-insights': patch +--- + +Solve issue where the item.filters would sometimes be invalid diff --git a/.changeset/five-stingrays-sort.md b/.changeset/five-stingrays-sort.md new file mode 100644 index 0000000000..da145950ff --- /dev/null +++ b/.changeset/five-stingrays-sort.md @@ -0,0 +1,5 @@ +--- +'@graphcommerce/magento-product': patch +--- + +Prevent forwarding the isBack prop to the DOM element diff --git a/.changeset/four-dancers-beg.md b/.changeset/four-dancers-beg.md new file mode 100644 index 0000000000..72dac81887 --- /dev/null +++ b/.changeset/four-dancers-beg.md @@ -0,0 +1,5 @@ +--- +'@graphcommerce/magento-cart-shipping-address': patch +--- + +When a Customer deselected their shipping address, but had a shipping note filled in it would try to submit the form causing an error. By making the customer_address_id field required we prevent this. diff --git a/.changeset/fuzzy-carrots-visit.md b/.changeset/fuzzy-carrots-visit.md new file mode 100644 index 0000000000..1d29921599 --- /dev/null +++ b/.changeset/fuzzy-carrots-visit.md @@ -0,0 +1,6 @@ +--- +'@graphcommerce/magento-cart-items': patch +'@graphcommerce/misc': patch +--- + +Solve issue where the cart item edit form wasn't aligned in the middle diff --git a/.changeset/light-pumpkins-clean.md b/.changeset/light-pumpkins-clean.md new file mode 100644 index 0000000000..e6887774ed --- /dev/null +++ b/.changeset/light-pumpkins-clean.md @@ -0,0 +1,5 @@ +--- +'@graphcommerce/magento-category': patch +--- + +Solve an issue where CategoryChildren wouldn't be rendered on mobile when using the ProductListLayoutSidebar component. diff --git a/.changeset/pretty-dancers-hammer.md b/.changeset/pretty-dancers-hammer.md new file mode 100644 index 0000000000..9b514a0e22 --- /dev/null +++ b/.changeset/pretty-dancers-hammer.md @@ -0,0 +1,5 @@ +--- +'@graphcommerce/magento-search-overlay': patch +--- + +Solve issue with the SearchField throwing an error in production. diff --git a/.changeset/RELEASE-9.0.0.md b/.changeset/releases/RELEASE-9.0.0.md similarity index 64% rename from .changeset/RELEASE-9.0.0.md rename to .changeset/releases/RELEASE-9.0.0.md index 8780afc481..ae0b1b1b75 100644 --- a/.changeset/RELEASE-9.0.0.md +++ b/.changeset/releases/RELEASE-9.0.0.md @@ -2,117 +2,75 @@ ## šŸš€ New Features -- Added `` with `` and `` to shipping and billing forms. (@Giovanni-Schroevers) - [magento-cart](#package-magento-cart) [magento-cart-billing-address](#package-magento-cart-billing-address) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-customer](#package-magento-customer) [next-config](#package-next-config) [magento-graphcms](#package-magento-graphcms) +- Added `` with `` and `` to shipping and billing forms. (@Giovanni-Schroevers) [magento-cart](#package-magento-cart) [magento-cart-billing-address](#package-magento-cart-billing-address) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-customer](#package-magento-customer) [next-config](#package-next-config) [magento-graphcms](#package-magento-graphcms) - Add `permissions` configuration to disable functionalities. - Added new `permissions` configuration for GraphCommerce - Added `permissions.cart`: `ENABLED` | `CUSTOMER_ONLY` | `DISABLED` - Added `permissions.checkout`: `ENABLED` | `CUSTOMER_ONLY` | `DISABLED` - - Adedd `permissions.customerAccount`: `ENABLED` | `DISABLE_REGISTRATION` | `DISABLE` ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) -- INP improvements: Moved all usages of `useFormPersist` to the `` component to prevent rerenders. (@FrankHarland) - [magento-cart](#package-magento-cart) [magento-cart-payment-method](#package-magento-cart-payment-method) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-cart-shipping-method](#package-magento-cart-shipping-method) [magento-compare](#package-magento-compare) [magento-customer](#package-magento-customer) [magento-newsletter](#package-magento-newsletter) [magento-payment-adyen](#package-magento-payment-adyen) [magento-payment-multisafepay](#package-magento-payment-multisafepay) [mollie-magento-payment](#package-mollie-magento-payment) + - Added `permissions.customerAccount`: `ENABLED` | `DISABLE_REGISTRATION` | `DISABLE` ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) -- Added the ability to edit cart items with full support for all product types and custom options (@Jessevdpoel) - [magento-cart-items](#package-magento-cart-items) +- INP improvements: Moved all usages of `useFormPersist` to the `` component to prevent rerenders. (@FrankHarland) [magento-cart](#package-magento-cart) [magento-cart-payment-method](#package-magento-cart-payment-method) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-cart-shipping-method](#package-magento-cart-shipping-method) [magento-compare](#package-magento-compare) [magento-customer](#package-magento-customer) [magento-newsletter](#package-magento-newsletter) [magento-payment-adyen](#package-magento-payment-adyen) [magento-payment-multisafepay](#package-magento-payment-multisafepay) [mollie-magento-payment](#package-mollie-magento-payment) -- Add a 'Save in address book' checkbox to the shipping address form. (@Giovanni-Schroevers) - [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-graphcms](#package-magento-graphcms) +- Added the ability to edit cart items with full support for all product types and custom options (@Jessevdpoel) [magento-cart-items](#package-magento-cart-items) -- Add the `customerNote` field to the shipping and customer address forms. Added configuration `customerAddressNoteEnable` to enable or disable the field. (@Giovanni-Schroevers) - [magento-cart-shipping-address](#package-magento-cart-shipping-address) [next-config](#package-next-config) +- Add a 'Save in address book' checkbox to the shipping address form. (@Giovanni-Schroevers) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-graphcms](#package-magento-graphcms) -- Added support for real `` on the frontend. (@Jessevdpoel) - [magento-category](#package-magento-category) [magento-product](#package-magento-product) [next-ui](#package-next-ui) +- Add the `customerNote` field to the shipping and customer address forms. Added configuration `customerAddressNoteEnable` to enable or disable the field. (@Giovanni-Schroevers) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [next-config](#package-next-config) -- Show category siblings if a category has no children, will be shown in location where children are located. (@Jessevdpoel) - [magento-category](#package-magento-category) +- Added support for real `` on the frontend. (@Jessevdpoel) [magento-category](#package-magento-category) [magento-product](#package-magento-product) [next-ui](#package-next-ui) -- Added option to change sort order (ASC / DESC) for sort options (Name, price, position etc) on catalog and search pages. (@FrankHarland) - [magento-category](#package-magento-category) [magento-product](#package-magento-product) [next-config](#package-next-config) [magento-graphcms](#package-magento-graphcms) +- Show category siblings if a category has no children, will be shown in location where children are located. (@Jessevdpoel) [magento-category](#package-magento-category) -- Magento 2.4.7: Implemented `cancelOrder` mutation and added a cancel order overlay to the account section. (@Giovanni-Schroevers) - [magento-customer](#package-magento-customer) [magento-store](#package-magento-store) [magento-graphcms](#package-magento-graphcms) +- Added option to change sort order (ASC / DESC) for sort options (Name, price, position etc) on catalog and search pages. (@FrankHarland) [magento-category](#package-magento-category) [magento-product](#package-magento-product) [next-config](#package-next-config) [magento-graphcms](#package-magento-graphcms) -- Magento 2.4.7: Imlemented `deleteCustomer` mutation to the account section. Disabled by default and can be enabled through the config. (@Giovanni-Schroevers) - [magento-customer](#package-magento-customer) [next-ui](#package-next-ui) [next-config](#package-next-config) [magento-graphcms](#package-magento-graphcms) +- Magento 2.4.7: Implemented `cancelOrder` mutation and added a cancel order overlay to the account section. (@Giovanni-Schroevers) [magento-customer](#package-magento-customer) [magento-store](#package-magento-store) [magento-graphcms](#package-magento-graphcms) -- Add `reorderItems` mutation, add `reorder` button to order detail page. (@Giovanni-Schroevers) - [magento-customer](#package-magento-customer) +- Magento 2.4.7: Imlemented `deleteCustomer` mutation to the account section. Disabled by default and can be enabled through the config. (@Giovanni-Schroevers) [magento-customer](#package-magento-customer) [next-ui](#package-next-ui) [next-config](#package-next-config) [magento-graphcms](#package-magento-graphcms) -- Replace deprecated `updateCustomer` mutations with `updateCustomerV2`. (@Giovanni-Schroevers) - [magento-customer](#package-magento-customer) [magento-newsletter](#package-magento-newsletter) +- Add `reorderItems` mutation, add `reorder` button to order detail page. (@Giovanni-Schroevers) [magento-customer](#package-magento-customer) -- Magento 2.4.7: Implement the `contactUs` mutation, add contact us overlay. (@Giovanni-Schroevers) - [magento-customer](#package-magento-customer) [magento-graphcms](#package-magento-graphcms) +- Magento 2.4.7: Implement the `contactUs` mutation, add contact us overlay. (@Giovanni-Schroevers) [magento-customer](#package-magento-customer) [magento-graphcms](#package-magento-graphcms) -- Added support `X-Magento-Cache-Id` to allow Varnish to cache requests that are made in the browser while users are logged in. For example the products query can now be cached for logged in users. Functionality can be disabled by setting `customerXMagentoCacheIdDisable: true` in your configuration. (@paales) - [magento-customer](#package-magento-customer) +- Added support `X-Magento-Cache-Id` to allow Varnish to cache requests that are made in the browser while users are logged in. For example the products query can now be cached for logged in users. Functionality can be disabled by setting `customerXMagentoCacheIdDisable: true` in your configuration. (@paales) [magento-customer](#package-magento-customer) -- Magento 2.4.7: Add `guestOrder` functionality. (@Giovanni-Schroevers) - [magento-customer](#package-magento-customer) [graphql](#package-graphql) [next-ui](#package-next-ui) [magento-graphcms](#package-magento-graphcms) +- Magento 2.4.7: Add `guestOrder` functionality. (@Giovanni-Schroevers) [magento-customer](#package-magento-customer) [graphql](#package-graphql) [next-ui](#package-next-ui) [magento-graphcms](#package-magento-graphcms) -- Magento 2.4.7: implement confirmEmail mutation (@Giovanni-Schroevers) - [magento-customer](#package-magento-customer) [magento-store](#package-magento-store) [magento-graphcms](#package-magento-graphcms) +- Magento 2.4.7: implement confirmEmail mutation (@Giovanni-Schroevers) [magento-customer](#package-magento-customer) [magento-store](#package-magento-store) [magento-graphcms](#package-magento-graphcms) -- Magento 2.4.7: To make the `custom_attribute` field more valueable, we've added an `attribute`-field to the `AttributeValueInterface` to be able to retrieve attribute metadata from the value of an attribute. To be able to retieve the attribute label for an attribute value. (@paales) - [magento-graphql](#package-magento-graphql) +- Magento 2.4.7: Created a GraphQL query field for products: `custom_attribute(attribute_code: "attribute_code")` to retrieve attribute option value labels. This is different from the `custom_attributes` endpoint (note the plural) and allows for retrieving singular attribute values, like brand or any other select or multiselect attribute. (@paales) [magento-graphql](#package-magento-graphql) -- Magento 2.4.7: Created a GraphQL query field for products: `custom_attribute(attribute_code: "attribute_code")` to retrieve attribute option value labels. This is different from the `custom_attributes` endpoint (note the plural) and allows for retrieving singular attribute values, like brand or any other select or multiselect attribute. (@paales) - [magento-graphql](#package-magento-graphql) +- Magento 2.4.7: Added a `magentoVersion` configuration value to be able to differentiate features based on the Magento version. GraphCommerce will automatically load any schema's that are defined in later version of Magento, allowing GraphCommerce to be forward compatible. See [schema-246](https://github.com/graphcommerce-org/graphcommerce/tree/canary/packages/magento-graphql/schema-246) and [schema-247](https://github.com/graphcommerce-org/graphcommerce/tree/canary/packages/magento-graphql/schema-247) directories for the changes made to the schema. This is only for compatibility and doesn't make the functionality work. (@paales) [magento-graphql](#package-magento-graphql) -- Magento 2.4.7: Added a `magentoVersion` configuration value to be able to differentiate features based on the Magento version. GraphCommerce will automatically load any schema's that are defined in later version of Magento, allowing GraphCommerce to be forward compatible. See [schema-246](https://github.com/graphcommerce-org/graphcommerce/tree/canary/packages/magento-graphql/schema-246) and [schema-247](https://github.com/graphcommerce-org/graphcommerce/tree/canary/packages/magento-graphql/schema-247) directories for the changes made to the schema. This is only for compatibility and doesn't make the functionality work. (@paales) - [magento-graphql](#package-magento-graphql) +- Created a new `@graphcommerce/magento-graphql-rest` package to integrate with Magento's REST API. By default allows you to retrieve the customer with `m2rest_GetV1CustomersMe` and only provides the `group_id` additionally on the customer. (@Renzovh) [magento-graphql-rest](#package-magento-graphql-rest) -- Created a new `@graphcommerce/magento-graphql-rest` package to integrate with Magento's REST API. By default allows you to retrieve the customer with `m2rest_GetV1CustomersMe` and only provides the `group_id` additionally on the customer. (@Renzovh) - [magento-graphql-rest](#package-magento-graphql-rest) +- Add option to show an extended version of the pagination component. Configurable via the `productListPaginationVariant` key in your `graphcommerce.config.js`. `COMPACT` means: `< Page X of Y >` and `EXTENDED` means: `< 1 2 ... [5] ... 10 11 >` (@FrankHarland) [magento-product](#package-magento-product) [next-ui](#package-next-ui) [next-config](#package-next-config) [docs](#package-docs) -- Add option to show an extended version of the pagination component. Configurable via the `productListPaginationVariant` key in your `graphcommerce.config.js`. `COMPACT` means: `< Page X of Y >` and `EXTENDED` means: `< 1 2 ... [5] ... 10 11 >` (@FrankHarland) - [magento-product](#package-magento-product) [next-ui](#package-next-ui) [next-config](#package-next-config) [docs](#package-docs) +- Magento 2.4.7: Use `custom_attributesV2` for product specs. (@Giovanni-Schroevers) [magento-product](#package-magento-product) [magento-graphcms](#package-magento-graphcms) -- Magento 2.4.7: Use `custom_attributesV2` for product specs. (@Giovanni-Schroevers) - [magento-product](#package-magento-product) [magento-graphcms](#package-magento-graphcms) +- Added functionality to constrain the container sizing of the frontend. Added a new configuration `containerSizingShell` and `containerSizingContent` configuration options. Actual sizing can be configured in the `theme.ts`. (@StefanAngenent) [magento-product](#package-magento-product) [magento-graphcms](#package-magento-graphcms) -- Added functionality to constrain the container sizing of the frontend. Added a new configuration `containerSizingShell` and `containerSizingContent` configuration options. Actual sizing can be configured in the `theme.ts`. (@StefanAngenent) - [magento-product](#package-magento-product) [magento-graphcms](#package-magento-graphcms) +- Completely new SearchOverlay package this is compatible with Magento's default search as well as any other implementation like Algolia and Adobe Sensei. (@paales) [magento-search](#package-magento-search) [magento-search-overlay](#package-magento-search-overlay) -- Completely new SearchOverlay package this is compatible with Magento's default search as well as any other implementation like Algolia and Adobe Sensei. (@paales) - [magento-search](#package-magento-search) [magento-search-overlay](#package-magento-search-overlay) +- Algolia: Enables Algolia category search in GraphQL Mesh. Integrated Algolia category search into the `categories` type within the Mesh. This will only be used on search pages. (@Renzovh) [algolia-categories](#package-algolia-categories) -- Algolia: Enables Algolia category search in GraphQL Mesh. Integrated Algolia category search into the `categories` type within the Mesh. This will only be used on search pages. (@Renzovh) - [algolia-categories](#package-algolia-categories) +- Algolia: Integrated algolia personalisation and algolia analytics into GraphQL Mesh. Built user profiles and gives user personalised results. Keep track of the user data and view in algolia analytics dashboard. (@Renzovh) [algolia-personalization](#package-algolia-personalization) -- Algolia: Integrated algolia personalisation and algolia analytics into GraphQL Mesh. Built user profiles and gives user personalised results. Keep track of the user data and view in algolia analytics dashboard. (@Renzovh) - [algolia-personalization](#package-algolia-personalization) +- Algolia: Added search suggestions (@Renzovh) [algolia-products](#package-algolia-products) -- Algolia: Added search suggestions (@Renzovh) - [algolia-products](#package-algolia-products) +- Algolia: Magento 2 implemented as a GraphQL Mesh resolver: Allows full integration without modying any frontend components. (@Renzovh) [algolia-products](#package-algolia-products) -- Algolia: Magento 2 implemented as a GraphQL Mesh resolver: Allows full integration without modying any frontend components. (@Renzovh) - [algolia-products](#package-algolia-products) +- Algolia: Integrated product queries into graphql-mesh. Provides fast and accurate searches, that can be personalised via magento-algolia and its algolia dashboard (@Renzovh) [algolia-products](#package-algolia-products) -- Algolia: Integrated product queries into graphql-mesh. Provides fast and accurate searches, that can be personalised via magento-algolia and its algolia dashboard (@Renzovh) - [algolia-products](#package-algolia-products) +- Algolia: Integrated algolia recommend queries into graphql mesh. Provide accurate upsells and related products on pdp pages (@Renzovh) [algolia-recommend](#package-algolia-recommend) -- Algolia: Integrated algolia recommend queries into graphql mesh. Provide accurate upsells and related products on pdp pages (@Renzovh) - [algolia-recommend](#package-algolia-recommend) +- Update manifest for app store submission (@ErwinOtten) [google-playstore](#package-google-playstore) -- Update manifest for app store submission (@ErwinOtten) - [google-playstore](#package-google-playstore) +- Added Draft Mode support. When enabled it will be shown. (@paales) [graphcms-ui](#package-graphcms-ui) [graphql](#package-graphql) [hygraph-dynamic-rows-ui](#package-hygraph-dynamic-rows-ui) -- Added Draft Mode support. When enabled it will be shown. (@paales) - [graphcms-ui](#package-graphcms-ui) [graphql](#package-graphql) [hygraph-dynamic-rows-ui](#package-hygraph-dynamic-rows-ui) +- Created a new `@graphql-mesh` plugin to forward headers from backends as `forwardedHeaders` in extensions. (@paales) [graphql-mesh](#package-graphql-mesh) -- Created a new `@graphql-mesh` plugin to forward headers from backends as `forwardedHeaders` in extensions. (@paales) - [graphql-mesh](#package-graphql-mesh) - -- Added Intl components, deprecated `useNumberFormat` and `useDateTimeFormatter`, and replaced usage sites. New components and hooks: - - - `` and `useIntlDisplayNames` - - ``, ``, `` and `useIntlDateTimeFormat` - - `` and `useIntlListFormat` - - ``, ``, ``, `` and `useIntlNumberFormat` ([@paales](https://github.com/paales)) - Added `` Component: Render (and hydrate) a Component based on a media query given. ```tsx @@ -128,29 +86,23 @@ 1. useMediaQuery: When you are now using useMediaQuery to conditionally render content for mobile or desktop. a. Is very slow as it has to wait for the JS to initialize on pageload. b. Can cause CLS problems if the useMediaQuery is used to render elements in the viewport. c. Can cause LCP issues if useMediaQuery is used to render the LCP element. d. Causes TBT problems as a component always needs to be rerendered. (And bad TBT can cause INP problems) e. HTML isn't present in the DOM, which can cause SEO issues. 2. CSS Media query: When you are using CSS to show or hide content based on media queries. a. Causes TBT problems as both code paths need to be rendered. (And bad TBT can cause INP problems) - It wraps the component in a div that has 'display: contents;' when shown and 'display: none;' when hidden so it should not interfere with other styling. It conditionally hydrates the component if the query matches. If it doesn't match, it will NOT hydrate the component (and thus not execute the JS). (@bramvanderholst) - [next-ui](#package-next-ui) + It wraps the component in a div that has 'display: contents;' when shown and 'display: none;' when hidden so it should not interfere with other styling. It conditionally hydrates the component if the query matches. If it doesn't match, it will NOT hydrate the component (and thus not execute the JS). (@bramvanderholst) [next-ui](#package-next-ui) -- Created a `cssFlags` functionality which allows showing content based on a value in the local storage. This allows hiding/showing small things (is logged in / light or darkmode) (@Giovanni-Schroevers) - [next-ui](#package-next-ui) +- Created a `cssFlags` functionality which allows showing content based on a value in the local storage. This allows hiding/showing small things (is logged in / light or darkmode) (@Giovanni-Schroevers) [next-ui](#package-next-ui) -- Big INP improvments: Moved all usages of `useFormPersist` to the `` component to prevent rerenders. (@FrankHarland) - [react-hook-form](#package-react-hook-form) +- Big INP improvments: Moved all usages of `useFormPersist` to the `` component to prevent rerenders. (@FrankHarland) [react-hook-form](#package-react-hook-form) -- Moved to [serwist](https://serwist.pages.dev/) for service workers. (@paales) - [service-worker](#package-service-worker) [docs](#package-docs) +- Moved to [serwist](https://serwist.pages.dev/) for service workers. (@paales) [service-worker](#package-service-worker) [docs](#package-docs) -- All fragments are now `@injectable` by default and the `@injectable` directive isn't required anymore. Always accept `@inject` directives. (@paales) - [graphql-codegen-near-operation-file](#package-graphql-codegen-near-operation-file) +- All fragments are now `@injectable` by default and the `@injectable` directive isn't required anymore. Always accept `@inject` directives. (@paales) [graphql-codegen-near-operation-file](#package-graphql-codegen-near-operation-file) -- Migrated to `next.config.ts` (@paales) - [next-config](#package-next-config) +- Migrated to `next.config.ts` (@paales) [next-config](#package-next-config) - Big improvements to the plugin system: Typescript validated, deeper resolution, new configuration object, replace plugins, and more ifConfig options. - 1. Plugins now use TypeScript's `"moduleSuffixes": [".interceptor", ""]` [functionality](https://www.typescriptlang.org/tsconfig#moduleSuffixes) which means that plugins now correctly resolve via TypeScript. So if you *go to reference* in VSCode (or any other editor), you go to the interceptor directly and see which plugins are applied there. This also means that plugins are automatically checked during build (and will fail if there are errors). + 1. Plugins now use TypeScript's `"moduleSuffixes": [".interceptor", ""]` [functionality](https://www.typescriptlang.org/tsconfig#moduleSuffixes) which means that plugins now correctly resolve via TypeScript. So if you _go to reference_ in VSCode (or any other editor), you go to the interceptor directly and see which plugins are applied there. This also means that plugins are automatically checked during build (and will fail if there are errors). - 2. The exported type of an *intercepted component* now has the types of all plugins applied. This means that plugins can modify the props of components (and is still validated with TypeScript). To make this work a plugin must always forward props to the `` to ensure that values are correctly passed on. + 2. The exported type of an _intercepted component_ now has the types of all plugins applied. This means that plugins can modify the props of components (and is still validated with TypeScript). To make this work a plugin must always forward props to the `` to ensure that values are correctly passed on. 3. Plugins will now always be applied to deepest resolved path. This means that a plugin automatically applies to internal usages as well. This thus means that plugins do not need to be written with an internal path, but can keep the parent path. Istead of writing `@graphcommerce/magento-cart-items/components/RemoveItemFromCart/RemoveItemFromCartFab` you can now write `@graphcommerce/magento-cart-items`. @@ -164,7 +116,7 @@ } ``` - This also means that the *name of the export* dictates the name of the component/function the plugin is applied. + This also means that the _name of the export_ dictates the name of the component/function the plugin is applied. 5. We now support replace plugins (`type: 'replace'`), which allow you to replace the original component/function/const completely (and type checked of course). @@ -196,410 +148,289 @@ ``` This allows you to support multiple builds with different plugins applied. For example one build with `GC_THEME=my-theme` and another with `GC_THEME=my-other-theme`. ([@paales](https://github.com/paales)) -- Fully replaced the sitemap and robots.txt generation. We previously relied on next-sitemap to generate the sitemap based on static generated pages. However with bigger shops the SSG woudn't be complete. Full support for multi domain setups. (@bramvanderholst) - [magento-graphcms](#package-magento-graphcms) [docs](#package-docs) -- Play store publishing to be able to submit to the playstore. (@ErwinOtten) - [magento-graphcms](#package-magento-graphcms) +- Fully replaced the sitemap and robots.txt generation. We previously relied on next-sitemap to generate the sitemap based on static generated pages. However with bigger shops the SSG woudn't be complete. Full support for multi domain setups. (@bramvanderholst) [magento-graphcms](#package-magento-graphcms) [docs](#package-docs) +- Play store publishing to be able to submit to the playstore. (@ErwinOtten) [magento-graphcms](#package-magento-graphcms) ## āœØ Small Improvements -- Created a new `` component to make re-use easier. (@Giovanni-Schroevers) - [magento-cart](#package-magento-cart) [magento-cart-email](#package-magento-cart-email) [magento-customer](#package-magento-customer) [magento-newsletter](#package-magento-newsletter) [ecommerce-ui](#package-ecommerce-ui) +- Created a new `` component to make re-use easier. (@Giovanni-Schroevers) [magento-cart](#package-magento-cart) [magento-cart-email](#package-magento-cart-email) [magento-customer](#package-magento-customer) [ecommerce-ui](#package-ecommerce-ui) + +- Created a new `` component to make re-use easier. (@Giovanni-Schroevers) [magento-cart-billing-address](#package-magento-cart-billing-address) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-customer](#package-magento-customer) [ecommerce-ui](#package-ecommerce-ui) -- Created a new `` component to make re-use easier. (@Giovanni-Schroevers) - [magento-cart-billing-address](#package-magento-cart-billing-address) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-customer](#package-magento-customer) [ecommerce-ui](#package-ecommerce-ui) +- Replace deprecated `updateCustomer` mutations with `updateCustomerV2`. (@Giovanni-Schroevers) [magento-customer](#package-magento-customer) [magento-newsletter](#package-magento-newsletter) -- Allow Lingui to use `linguiLocale` with country identifiers like `en-us`, it would always load `en` in this case. Introduced a new `useLocale` hook to use the correct locale string to use in Intl methods. (@paales) - [magento-product](#package-magento-product) [magento-product-configurable](#package-magento-product-configurable) [lingui-next](#package-lingui-next) [next-ui](#package-next-ui) [next-config](#package-next-config) [docs](#package-docs) +- Magento 2.4.7: To make the `custom_attribute` field more valueable, we've added an `attribute`-field to the `AttributeValueInterface` to be able to retrieve attribute metadata from the value of an attribute. To be able [magento-graphql](#package-magento-graphql) -- When generating the mesh the configuration is passed through `@graphcommerce/graphql-mesh/meshConfig` allowing plugins to modify the mesh configuration without having to change the `.meshrc.yaml` itself. (@Renzovh) - [cli](#package-cli) [graphql-mesh](#package-graphql-mesh) +- Created a new \` [magento-newsletter](#package-magento-newsletter) -- Added separate sitemap for Hygraph pages (@bramvanderholst) - [hygraph-ui](#package-hygraph-ui) [magento-graphcms](#package-magento-graphcms) +- Allow Lingui to use `linguiLocale` with country identifiers like `en-us`, it would always load `en` in this case. Introduced a new `useLocale` hook to use the correct locale string to use in Intl methods. (@paales) [magento-product](#package-magento-product) [magento-product-configurable](#package-magento-product-configurable) [lingui-next](#package-lingui-next) [next-ui](#package-next-ui) [next-config](#package-next-config) [docs](#package-docs) -- Add props to `` to disable dark/light mode or to change the default ssr mode. Save user chosen mode in localStorage. (@Giovanni-Schroevers) - [next-ui](#package-next-ui) +- When generating the mesh the configuration is passed through `@graphcommerce/graphql-mesh/meshConfig` allowing plugins to modify the mesh configuration without having to change the `.meshrc.yaml` itself. (@Renzovh) [cli](#package-cli) [graphql-mesh](#package-graphql-mesh) + +- Added separate sitemap for Hygraph pages (@bramvanderholst) [hygraph-ui](#package-hygraph-ui) [magento-graphcms](#package-magento-graphcms) + +- Added Intl components, deprecated `useNumberFormat` and `useDateTimeFormatter`, and replaced usage sites. New components and hooks: + + - `` and `useIntlDisplayNames` + - ``, ``, `` and `useIntlDateTimeFormat` + - `` and `useIntlListFormat` + - ``, ``, ``, `` and `useIntlNumberFormat` ([@paales](https://github.com/paales)) -- Added a new `` component to be used in combination with the `` component. (@JoshuaS98) - [next-ui](#package-next-ui) +- Add props to `` to disable dark/light mode or to change the default ssr mode. Save user chosen mode in localStorage. (@Giovanni-Schroevers) [next-ui](#package-next-ui) -- The `` component now accepts a `height` prop that allows deferring of rendering of the child component when initially rendered on the client. This improves performance when used. (@paales) - [next-ui](#package-next-ui) +- Added a new `` component to be used in combination with the `` component. (@JoshuaS98) [next-ui](#package-next-ui) -- Added `` and `` and `useIntlRelativeTimeFormat` to display relative dates in all locales. (@paales) - [next-ui](#package-next-ui) +- The `` component now accepts a `height` prop that allows deferring of rendering of the child component when initially rendered on the client. This improves performance when used. (@paales) [next-ui](#package-next-ui) -- Added new plugin insertion points: ``, ``, ``, `` for the `_document.app` to allow creating plugins for those locations to insert scripts etc. (@paales) - [next-ui](#package-next-ui) +- Added `` and `` and `useIntlRelativeTimeFormat` to display relative dates in all locales. (@paales) [next-ui](#package-next-ui) -- Added a functionality to copy directories from packages to the project and keep them managed by the package. This allows for injecting additional routes etc. (@paales) - [next-config](#package-next-config) +- Added new plugin insertion points: ``, ``, ``, `` for the `_document.app` to allow creating plugins for those locations to insert scripts etc. (@paales) [next-ui](#package-next-ui) -- Added `PRIVATE_ADDITIONAL_DEPENDENCIES` env variable support to enable packages that we do not want to have in the examples directory but we do want to be able to demo. (@paales) - [next-config](#package-next-config) +- Added a functionality to copy directories from packages to the project and keep them managed by the package. This allows for injecting additional routes etc. (@paales) [next-config](#package-next-config) -- Added `PRIVATE_PACKAGE_NAMESPACES` env variable to have additional namespaces to be considered to be a graphcommerce package. (@paales) - [next-config](#package-next-config) +- Added `PRIVATE_ADDITIONAL_DEPENDENCIES` env variable support to enable packages that we do not want to have in the examples directory but we do want to be able to demo. (@paales) [next-config](#package-next-config) -- Created dedicated sitemap route for categories so it isn't dependend on static generation. (@bramvanderholst) - [next-config](#package-next-config) [magento-graphcms](#package-magento-graphcms) +- Added `PRIVATE_PACKAGE_NAMESPACES` env variable to have additional namespaces to be considered to be a graphcommerce package. (@paales) [next-config](#package-next-config) -- Created dedicated sitemap route for products so it isn't dependend on static generation. (@bramvanderholst) - [next-config](#package-next-config) [magento-graphcms](#package-magento-graphcms) +- Created dedicated sitemap route for categories so it isn't dependend on static generation. (@bramvanderholst) [next-config](#package-next-config) [magento-graphcms](#package-magento-graphcms) +- Created dedicated sitemap route for products so it isn't dependend on static generation. (@bramvanderholst) [next-config](#package-next-config) [magento-graphcms](#package-magento-graphcms) ## šŸ› Fixes -- Get `shippingMethodPrices` from selected shipping method if supported on the magento version (@Giovanni-Schroevers) - [magento-cart](#package-magento-cart) +- Get `shippingMethodPrices` from selected shipping method if supported on the magento version (@Giovanni-Schroevers) [magento-cart](#package-magento-cart) -- When signing in make sure the cart isn't merged if the login is unsuccesful. (@paales) - [magento-cart](#package-magento-cart) +- When signing in make sure the cart isn't merged if the login is unsuccesful. (@paales) [magento-cart](#package-magento-cart) -- Upgrade input components to no longer use `muiRegister`, which improves INP scores. (@FrankHarland) - [magento-cart](#package-magento-cart) [magento-cart-billing-address](#package-magento-cart-billing-address) [magento-cart-coupon](#package-magento-cart-coupon) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-customer](#package-magento-customer) [magento-payment-adyen](#package-magento-payment-adyen) [magento-payment-included](#package-magento-payment-included) [magento-product](#package-magento-product) [magento-product-configurable](#package-magento-product-configurable) [magento-review](#package-magento-review) [ecommerce-ui](#package-ecommerce-ui) [next-ui](#package-next-ui) [react-hook-form](#package-react-hook-form) [next-config](#package-next-config) [magento-graphcms](#package-magento-graphcms) +- Upgrade input components to no longer use `muiRegister`, which improves INP scores. (@FrankHarland) [magento-cart](#package-magento-cart) [magento-cart-billing-address](#package-magento-cart-billing-address) [magento-cart-coupon](#package-magento-cart-coupon) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-customer](#package-magento-customer) [magento-payment-adyen](#package-magento-payment-adyen) [magento-payment-included](#package-magento-payment-included) [magento-product](#package-magento-product) [magento-product-configurable](#package-magento-product-configurable) [magento-review](#package-magento-review) [ecommerce-ui](#package-ecommerce-ui) [next-ui](#package-next-ui) [react-hook-form](#package-react-hook-form) [next-config](#package-next-config) [magento-graphcms](#package-magento-graphcms) -- Solve an issue where the cart would be sometimes undefined, but a typescript `Partial` was too general. (@paales) - [magento-cart](#package-magento-cart) +- Solve an issue where the cart would be sometimes undefined, but a typescript `Partial` was too general. (@paales) [magento-cart](#package-magento-cart) -- Enable the use of one or more anchor links within the `checkbox_text` field and customize their paths. (@carlocarels90) - [magento-cart](#package-magento-cart) +- Enable the use of one or more anchor links within the `checkbox_text` field and customize their paths. (@carlocarels90) [magento-cart](#package-magento-cart) -- Pass `sx` props to `` component. (@JoshuaS98) - [magento-cart](#package-magento-cart) +- Pass `sx` props to `` component. (@JoshuaS98) [magento-cart](#package-magento-cart) -- Fix bug with persist not applying saved changes by moving `` below the form components. (@Giovanni-Schroevers) - [magento-cart](#package-magento-cart) [magento-cart-payment-method](#package-magento-cart-payment-method) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-compare](#package-magento-compare) [magento-customer](#package-magento-customer) [magento-newsletter](#package-magento-newsletter) [magento-payment-adyen](#package-magento-payment-adyen) [magento-payment-multisafepay](#package-magento-payment-multisafepay) [mollie-magento-payment](#package-mollie-magento-payment) [react-hook-form](#package-react-hook-form) +- Fix bug with persist not applying saved changes by moving `` below the form components. (@Giovanni-Schroevers) [magento-cart](#package-magento-cart) [magento-cart-payment-method](#package-magento-cart-payment-method) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-compare](#package-magento-compare) [magento-customer](#package-magento-customer) [magento-newsletter](#package-magento-newsletter) [magento-payment-adyen](#package-magento-payment-adyen) [magento-payment-multisafepay](#package-magento-payment-multisafepay) [mollie-magento-payment](#package-mollie-magento-payment) [react-hook-form](#package-react-hook-form) -- Made all component prop types exported (@bramvanderholst) - [magento-cart](#package-magento-cart) [magento-cart-items](#package-magento-cart-items) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-cart-shipping-method](#package-magento-cart-shipping-method) [magento-category](#package-magento-category) [magento-compare](#package-magento-compare) [magento-customer](#package-magento-customer) [magento-newsletter](#package-magento-newsletter) [magento-pagebuilder](#package-magento-pagebuilder) [magento-product](#package-magento-product) [magento-product-bundle](#package-magento-product-bundle) [magento-product-configurable](#package-magento-product-configurable) [magento-product-downloadable](#package-magento-product-downloadable) [magento-product-grouped](#package-magento-product-grouped) [magento-review](#package-magento-review) [magento-search](#package-magento-search) [magento-store](#package-magento-store) [magento-wishlist](#package-magento-wishlist) [algolia-search](#package-algolia-search) [ecommerce-ui](#package-ecommerce-ui) [framer-scroller](#package-framer-scroller) [graphcms-ui](#package-graphcms-ui) [mollie-magento-payment](#package-mollie-magento-payment) [next-ui](#package-next-ui) +- Made all component prop types exported (@bramvanderholst) [magento-cart](#package-magento-cart) [magento-cart-items](#package-magento-cart-items) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-cart-shipping-method](#package-magento-cart-shipping-method) [magento-category](#package-magento-category) [magento-compare](#package-magento-compare) [magento-customer](#package-magento-customer) [magento-newsletter](#package-magento-newsletter) [magento-pagebuilder](#package-magento-pagebuilder) [magento-product](#package-magento-product) [magento-product-bundle](#package-magento-product-bundle) [magento-product-configurable](#package-magento-product-configurable) [magento-product-downloadable](#package-magento-product-downloadable) [magento-product-grouped](#package-magento-product-grouped) [magento-review](#package-magento-review) [magento-search](#package-magento-search) [magento-store](#package-magento-store) [magento-wishlist](#package-magento-wishlist) [algolia-search](#package-algolia-search) [ecommerce-ui](#package-ecommerce-ui) [framer-scroller](#package-framer-scroller) [graphcms-ui](#package-graphcms-ui) [mollie-magento-payment](#package-mollie-magento-payment) [next-ui](#package-next-ui) -- Add missing gutter to /checkout/item page (@bramvanderholst) - [magento-cart](#package-magento-cart) [magento-graphcms](#package-magento-graphcms) +- Add missing gutter to /checkout/item page (@bramvanderholst) [magento-cart](#package-magento-cart) [magento-graphcms](#package-magento-graphcms) -- Forward BadgeProps to WishlistFab, CartFab and CustomerFab (@paales) - [magento-cart](#package-magento-cart) [magento-customer](#package-magento-customer) [magento-wishlist](#package-magento-wishlist) +- Forward BadgeProps to WishlistFab, CartFab and CustomerFab (@paales) [magento-cart](#package-magento-cart) [magento-customer](#package-magento-customer) [magento-wishlist](#package-magento-wishlist) -- Prevent a reloading the `ShippingPage` query when selecting a shipping method. (@Giovanni-Schroevers) - [magento-cart-checkout](#package-magento-cart-checkout) +- Prevent a reloading the `ShippingPage` query when selecting a shipping method. (@Giovanni-Schroevers) [magento-cart-checkout](#package-magento-cart-checkout) -- Rename `configurable_customizable` back to `customizable_options`. (@Giovanni-Schroevers) - [magento-cart-items](#package-magento-cart-items) [magento-product](#package-magento-product) [magento-product-configurable](#package-magento-product-configurable) +- Rename `configurable_customizable` back to `customizable_options`. (@Giovanni-Schroevers) [magento-cart-items](#package-magento-cart-items) [magento-product](#package-magento-product) [magento-product-configurable](#package-magento-product-configurable) -- Rename `experimental_useV2` prop to `deprecated_useV1` in `useFromGql` and enable it by default. (@Giovanni-Schroevers) - [magento-cart-items](#package-magento-cart-items) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-cart-shipping-method](#package-magento-cart-shipping-method) [magento-customer](#package-magento-customer) [magento-payment-braintree](#package-magento-payment-braintree) [magento-product](#package-magento-product) [react-hook-form](#package-react-hook-form) +- Rename `experimental_useV2` prop to `deprecated_useV1` in `useFromGql` and enable it by default. (@Giovanni-Schroevers) [magento-cart-items](#package-magento-cart-items) [magento-cart-shipping-address](#package-magento-cart-shipping-address) [magento-cart-shipping-method](#package-magento-cart-shipping-method) [magento-customer](#package-magento-customer) [magento-payment-braintree](#package-magento-payment-braintree) [magento-product](#package-magento-product) [react-hook-form](#package-react-hook-form) -- Removed `useMediaQuery` from the `` and `` and replaced it with a new responsive `size` prop. (@Jessevdpoel) - [magento-cart-items](#package-magento-cart-items) [magento-wishlist](#package-magento-wishlist) [next-ui](#package-next-ui) [magento-graphcms](#package-magento-graphcms) +- Removed `useMediaQuery` from the `` and `` and replaced it with a new responsive `size` prop. (@Jessevdpoel) [magento-cart-items](#package-magento-cart-items) [magento-wishlist](#package-magento-wishlist) [next-ui](#package-next-ui) [magento-graphcms](#package-magento-graphcms) -- Make sure the edit cart item isn't shown for an order (@paales) - [magento-cart-items](#package-magento-cart-items) +- Make sure the edit cart item isn't shown for an order (@paales) [magento-cart-items](#package-magento-cart-items) -- Solve issue where the `` would temporarily show an empty cart after saving. (@Giovanni-Schroevers) - [magento-cart-items](#package-magento-cart-items) +- Solve issue where the `` would temporarily show an empty cart after saving. (@Giovanni-Schroevers) [magento-cart-items](#package-magento-cart-items) -- Create `useRemoveItemFromCart` hook to allow for reuse while keeping compatibility with plugins. (@Jessevdpoel) - [magento-cart-items](#package-magento-cart-items) [google-datalayer](#package-google-datalayer) +- Create `useRemoveItemFromCart` hook to allow for reuse while keeping compatibility with plugins. (@Jessevdpoel) [magento-cart-items](#package-magento-cart-items) [google-datalayer](#package-google-datalayer) -- Use the non resolved payment methods as a placeholder for the actual payment methods (@FrankHarland) - [magento-cart-payment-method](#package-magento-cart-payment-method) +- Use the non resolved payment methods as a placeholder for the actual payment methods (@FrankHarland) [magento-cart-payment-method](#package-magento-cart-payment-method) -- Solve issue where Braintree wouldn't place the order after successfully validating a Credit Card. (@paales) - [magento-cart-payment-method](#package-magento-cart-payment-method) [magento-payment-braintree](#package-magento-payment-braintree) +- Solve issue where Braintree wouldn't place the order after successfully validating a Credit Card. (@paales) [magento-cart-payment-method](#package-magento-cart-payment-method) [magento-payment-braintree](#package-magento-payment-braintree) -- Due to a cyclic dependency the actual `` button would sometimes be undefined. (@paales) - [magento-cart-payment-method](#package-magento-cart-payment-method) +- Due to a cyclic dependency the actual `` button would sometimes be undefined. (@paales) [magento-cart-payment-method](#package-magento-cart-payment-method) -- Prevent the `` query from rerunning on each mutation. (@FrankHarland) - [magento-cart-payment-method](#package-magento-cart-payment-method) [magento-payment-adyen](#package-magento-payment-adyen) [magento-payment-braintree](#package-magento-payment-braintree) [magento-product](#package-magento-product) [google-datalayer](#package-google-datalayer) +- Prevent the `` query from rerunning on each mutation. (@FrankHarland) [magento-cart-payment-method](#package-magento-cart-payment-method) [magento-payment-adyen](#package-magento-payment-adyen) [magento-payment-braintree](#package-magento-payment-braintree) [magento-product](#package-magento-product) [google-datalayer](#package-google-datalayer) -- Moved plugins to new format (@paales) - [magento-cart-pickup](#package-magento-cart-pickup) [magento-compare](#package-magento-compare) [magento-payment-adyen](#package-magento-payment-adyen) [magento-payment-braintree](#package-magento-payment-braintree) [magento-payment-included](#package-magento-payment-included) [magento-payment-klarna](#package-magento-payment-klarna) [magento-payment-multisafepay](#package-magento-payment-multisafepay) [magento-payment-paypal](#package-magento-payment-paypal) [demo-magento-graphcommerce](#package-demo-magento-graphcommerce) [google-datalayer](#package-google-datalayer) [googleanalytics](#package-googleanalytics) [googlerecaptcha](#package-googlerecaptcha) [googletagmanager](#package-googletagmanager) [graphcms-ui](#package-graphcms-ui) [hygraph-dynamic-rows](#package-hygraph-dynamic-rows) [mollie-magento-payment](#package-mollie-magento-payment) +- Moved plugins to new format (@paales) [magento-cart-pickup](#package-magento-cart-pickup) [magento-compare](#package-magento-compare) [magento-payment-adyen](#package-magento-payment-adyen) [magento-payment-braintree](#package-magento-payment-braintree) [magento-payment-included](#package-magento-payment-included) [magento-payment-klarna](#package-magento-payment-klarna) [magento-payment-multisafepay](#package-magento-payment-multisafepay) [magento-payment-paypal](#package-magento-payment-paypal) [demo-magento-graphcommerce](#package-demo-magento-graphcommerce) [google-datalayer](#package-google-datalayer) [googleanalytics](#package-googleanalytics) [googlerecaptcha](#package-googlerecaptcha) [googletagmanager](#package-googletagmanager) [graphcms-ui](#package-graphcms-ui) [hygraph-dynamic-rows](#package-hygraph-dynamic-rows) [mollie-magento-payment](#package-mollie-magento-payment) -- In the shipping step show errors with a `` instead of a ``. (@Giovanni-Schroevers) - [magento-cart-shipping-address](#package-magento-cart-shipping-address) +- In the shipping step show errors with a `` instead of a ``. (@Giovanni-Schroevers) [magento-cart-shipping-address](#package-magento-cart-shipping-address) -- When saving a shipping address it would always save the company after it was once saved. (@Giovanni-Schroevers) - [magento-cart-shipping-address](#package-magento-cart-shipping-address) +- When saving a shipping address it would always save the company after it was once saved. (@Giovanni-Schroevers) [magento-cart-shipping-address](#package-magento-cart-shipping-address) -- Fixed shipping address not getting set for logged-in customers with default address. (@bramvanderholst) - [magento-cart-shipping-address](#package-magento-cart-shipping-address) +- Fixed shipping address not getting set for logged-in customers with default address. (@bramvanderholst) [magento-cart-shipping-address](#package-magento-cart-shipping-address) -- Fixed `` resetting to a saved address when trying to use a new address. (@bramvanderholst) - [magento-cart-shipping-address](#package-magento-cart-shipping-address) +- Fixed `` resetting to a saved address when trying to use a new address. (@bramvanderholst) [magento-cart-shipping-address](#package-magento-cart-shipping-address) -- The billing and shipping address of a customer would not be recognized as the same address although they would effectively be the same (@FrankHarland) - [magento-cart-shipping-address](#package-magento-cart-shipping-address) +- The billing and shipping address of a customer would not be recognized as the same address although they would effectively be the same (@FrankHarland) [magento-cart-shipping-address](#package-magento-cart-shipping-address) -- Select the only available shipping method as the current cart shipping method when there is only one shipping method available. (@LaurensFranken) - [magento-cart-shipping-method](#package-magento-cart-shipping-method) +- Select the only available shipping method as the current cart shipping method when there is only one shipping method available. (@LaurensFranken) [magento-cart-shipping-method](#package-magento-cart-shipping-method) -- Prevent rendering `null` when `method_title` is not provided. (@carlocarels90) - [magento-cart-shipping-method](#package-magento-cart-shipping-method) +- Prevent rendering `null` when `method_title` is not provided. (@carlocarels90) [magento-cart-shipping-method](#package-magento-cart-shipping-method) -- Allow changing various props for internal components (@bramvanderholst) - [magento-cart-shipping-method](#package-magento-cart-shipping-method) [magento-customer](#package-magento-customer) [magento-product](#package-magento-product) [magento-product-configurable](#package-magento-product-configurable) [magento-wishlist](#package-magento-wishlist) [ecommerce-ui](#package-ecommerce-ui) [next-ui](#package-next-ui) +- Allow changing various props for internal components (@bramvanderholst) [magento-cart-shipping-method](#package-magento-cart-shipping-method) [magento-customer](#package-magento-customer) [magento-product](#package-magento-product) [magento-product-configurable](#package-magento-product-configurable) [magento-wishlist](#package-magento-wishlist) [ecommerce-ui](#package-ecommerce-ui) [next-ui](#package-next-ui) -- When a user access a category page which is beyond the available total\_pages, the user will be redirected to the last available page. (@paales) - [magento-category](#package-magento-category) [magento-product](#package-magento-product) [magento-store](#package-magento-store) +- When a user access a category page which is beyond the available total_pages, the user will be redirected to the last available page. (@paales) [magento-category](#package-magento-category) [magento-product](#package-magento-product) [magento-store](#package-magento-store) -- Redirect users to homepage after password reset as `router.back()` often returns an empty or invalid history state. (@carlocarels90) - [magento-customer](#package-magento-customer) [magento-graphcms](#package-magento-graphcms) +- Redirect users to homepage after password reset as `router.back()` often returns an empty or invalid history state. (@carlocarels90) [magento-customer](#package-magento-customer) [magento-graphcms](#package-magento-graphcms) -- In some cases the `xMagentoCacheId` wasn't defined in the returned query, making sure the application doesn't crash. (@paales) - [magento-customer](#package-magento-customer) +- In some cases the `xMagentoCacheId` wasn't defined in the returned query, making sure the application doesn't crash. (@paales) [magento-customer](#package-magento-customer) -- Show actual order status from the backend, improve order state logic. (@Giovanni-Schroevers) - [magento-customer](#package-magento-customer) [magento-graphcms](#package-magento-graphcms) +- Show actual order status from the backend, improve order state logic. (@Giovanni-Schroevers) [magento-customer](#package-magento-customer) [magento-graphcms](#package-magento-graphcms) -- Fix issues when using non-hex colors in theme (@bramvanderholst) - [magento-customer](#package-magento-customer) [next-ui](#package-next-ui) +- Fix issues when using non-hex colors in theme (@bramvanderholst) [magento-customer](#package-magento-customer) [next-ui](#package-next-ui) -- The `` component would show a warning if the countries weren't loaded yet. It will now show a readonly field with the country code. (@Giovanni-Schroevers) - [magento-customer](#package-magento-customer) +- The `` component would show a warning if the countries weren't loaded yet. It will now show a readonly field with the country code. (@Giovanni-Schroevers) [magento-customer](#package-magento-customer) -- Replace useWatch with watch in order to prevent email from being undefinded when already being prefilled for expired sessions (@Giovanni-Schroevers) - [magento-customer](#package-magento-customer) +- Replace useWatch with watch in order to prevent email from being undefinded when already being prefilled for expired sessions (@Giovanni-Schroevers) [magento-customer](#package-magento-customer) -- Solve issue where persisted Form-data would remain in the sessionStorage after logging out. (@paales) - [magento-customer](#package-magento-customer) +- Solve issue where persisted Form-data would remain in the sessionStorage after logging out. (@paales) [magento-customer](#package-magento-customer) -- The `useSignInForm` hook now optionally accepts an email prop. (@paales) - [magento-customer](#package-magento-customer) +- The `useSignInForm` hook now optionally accepts an email prop. (@paales) [magento-customer](#package-magento-customer) -- fix session expired email not always available in cache (@StefanAngenent) - [magento-customer](#package-magento-customer) +- fix session expired email not always available in cache (@StefanAngenent) [magento-customer](#package-magento-customer) -- Prevent overlap between autofilled data and input label for all TextFieldElements and its derivatives. (@carlocarels90) - [magento-customer](#package-magento-customer) +- Prevent overlap between autofilled data and input label for all TextFieldElements and its derivatives. (@carlocarels90) [magento-customer](#package-magento-customer) -- The `` toggle wouldn't be valid when Private was selected and would only validate if Business was selected. (@Giovanni-Schroevers) - [magento-customer](#package-magento-customer) +- The `` toggle wouldn't be valid when Private was selected and would only validate if Business was selected. (@Giovanni-Schroevers) [magento-customer](#package-magento-customer) -- Check validation of email field in SignInForm and SignUpForm (@Giovanni-Schroevers) - [magento-customer](#package-magento-customer) +- Check validation of email field in SignInForm and SignUpForm (@Giovanni-Schroevers) [magento-customer](#package-magento-customer) -- The `formData.region` value could be `undefined` when creating new address (@FrankHarland) - [magento-customer](#package-magento-customer) +- The `formData.region` value could be `undefined` when creating new address (@FrankHarland) [magento-customer](#package-magento-customer) -- Add `disableMargin` prop to `` component. (@JoshuaS98) - [magento-customer](#package-magento-customer) +- Add `disableMargin` prop to `` component. (@JoshuaS98) [magento-customer](#package-magento-customer) -- Prevent success message from showing up when updating the users email while the form is still submitting a new request to update the users email. (@Giovanni-Schroevers) - [magento-customer](#package-magento-customer) +- Prevent success message from showing up when updating the users email while the form is still submitting a new request to update the users email. (@Giovanni-Schroevers) [magento-customer](#package-magento-customer) -- Remove the privateContext directive from the query before sending to the server (@paales) - [magento-customer](#package-magento-customer) +- Remove the privateContext directive from the query before sending to the server (@paales) [magento-customer](#package-magento-customer) -- fix session expired email not always available in cache (@StefanAngenent) - [magento-customer](#package-magento-customer) +- fix session expired email not always available in cache (@StefanAngenent) [magento-customer](#package-magento-customer) -- Renamed useInContextQuery to usePrivateQuery (@paales) - [magento-customer](#package-magento-customer) [magento-product](#package-magento-product) [magento-search](#package-magento-search) [algolia-personalization](#package-algolia-personalization) [graphql](#package-graphql) +- Renamed useInContextQuery to usePrivateQuery (@paales) [magento-customer](#package-magento-customer) [magento-product](#package-magento-product) [magento-search](#package-magento-search) [algolia-personalization](#package-algolia-personalization) [graphql](#package-graphql) -- Avoid displaying `undefined` for `countryName` or `regionName`. (@carlocarels90) - [magento-customer](#package-magento-customer) +- Avoid displaying `undefined` for `countryName` or `regionName`. (@carlocarels90) [magento-customer](#package-magento-customer) -- Add `X-Forwarded-For` header to mesh requests. (@SumVur) - [magento-graphql](#package-magento-graphql) +- Add `X-Forwarded-For` header to mesh requests. (@SumVur) [magento-graphql](#package-magento-graphql) -- Payment method will now throw an error in `onComplete` to handle obscure errors. (@Giovanni-Schroevers) - [magento-payment-adyen](#package-magento-payment-adyen) [magento-payment-included](#package-magento-payment-included) [magento-payment-multisafepay](#package-magento-payment-multisafepay) [mollie-magento-payment](#package-mollie-magento-payment) +- Payment method will now throw an error in `onComplete` to handle obscure errors. (@Giovanni-Schroevers) [magento-payment-adyen](#package-magento-payment-adyen) [magento-payment-included](#package-magento-payment-included) [magento-payment-multisafepay](#package-magento-payment-multisafepay) [mollie-magento-payment](#package-mollie-magento-payment) -- Fixed the Place order button not working (in dev mode) for certain payment methods. (@bramvanderholst) - [magento-payment-included](#package-magento-payment-included) +- Fixed the Place order button not working (in dev mode) for certain payment methods. (@bramvanderholst) [magento-payment-included](#package-magento-payment-included) -- Move render logic from `` to `` so this can be reused outside of ``. (@Giovanni-Schroevers) - [magento-product](#package-magento-product) +- Move render logic from `` to `` so this can be reused outside of ``. (@Giovanni-Schroevers) [magento-product](#package-magento-product) -- Hide ProductScroller components when no items are available (@bramvanderholst) - [magento-product](#package-magento-product) +- Hide ProductScroller components when no items are available (@bramvanderholst) [magento-product](#package-magento-product) -- Hide the `` or `` when there is only a single filter option. (@Renzovh) - [magento-product](#package-magento-product) +- Hide the `` or `` when there is only a single filter option. (@Renzovh) [magento-product](#package-magento-product) -- When applying a filter it would not always scroll to the `#products`. (@FrankHarland) - [magento-product](#package-magento-product) +- When applying a filter it would not always scroll to the `#products`. (@FrankHarland) [magento-product](#package-magento-product) -- Move to `attributesList` to get a list of filterable attributes instead of using an introspection query. `productFiltersProSectionRenderer` and `productFiltersProChipRenderer` keys now use `AttributeFrontendInputEnum`. (@paales) - [magento-product](#package-magento-product) [magento-search](#package-magento-search) +- Move to `attributesList` to get a list of filterable attributes instead of using an introspection query. `productFiltersProSectionRenderer` and `productFiltersProChipRenderer` keys now use `AttributeFrontendInputEnum`. (@paales) [magento-product](#package-magento-product) [magento-search](#package-magento-search) -- Fixed the products sitemap not containing more than 100 products when limit SSG is enabled (@rustmaestro) - [magento-product](#package-magento-product) +- Fixed the products sitemap not containing more than 100 products when limit SSG is enabled (@rustmaestro) [magento-product](#package-magento-product) -- Allow adding elements after/between product list items (e.g. banners) (@bramvanderholst) - [magento-product](#package-magento-product) +- Allow adding elements after/between product list items (e.g. banners) (@bramvanderholst) [magento-product](#package-magento-product) -- Render multiple items in the `RowSpecs` table as a list. (@paales) - [magento-product](#package-magento-product) +- Render multiple items in the `RowSpecs` table as a list. (@paales) [magento-product](#package-magento-product) -- Add requireOptionSelection boolean to prevent users from deselecting configurable options (@carlocarels90) - [magento-product-configurable](#package-magento-product-configurable) [ecommerce-ui](#package-ecommerce-ui) +- Add requireOptionSelection boolean to prevent users from deselecting configurable options (@carlocarels90) [magento-product-configurable](#package-magento-product-configurable) [ecommerce-ui](#package-ecommerce-ui) -- Disable configurable product options that are unavailable for selection. (@carlocarels90) - [magento-product-configurable](#package-magento-product-configurable) +- Disable configurable product options that are unavailable for selection. (@carlocarels90) [magento-product-configurable](#package-magento-product-configurable) -- Fixed tier prices not working for non-configurable products. (@bramvanderholst) - [magento-product-configurable](#package-magento-product-configurable) +- Fixed tier prices not working for non-configurable products. (@bramvanderholst) [magento-product-configurable](#package-magento-product-configurable) -- Respect configurableVariantValues.gallery config when selecting a configurable variant. The image should only change to the simple product image when the config is set to true, otherwise the configurable image should remain. To keep this functionality, please set `configurableVariantValues: { gallery: true }` in your graphcommerce.config.js (@bramvanderholst) - [magento-product-configurable](#package-magento-product-configurable) +- Respect configurableVariantValues.gallery config when selecting a configurable variant. The image should only change to the simple product image when the config is set to true, otherwise the configurable image should remain. To keep this functionality, please set `configurableVariantValues: { gallery: true }` in your graphcommerce.config.js (@bramvanderholst) [magento-product-configurable](#package-magento-product-configurable) -- Added clear upgrade instructions for `linguiLocale`. (@paales) - [magento-product-configurable](#package-magento-product-configurable) [lingui-next](#package-lingui-next) [next-ui](#package-next-ui) [next-config](#package-next-config) [docs](#package-docs) +- Added clear upgrade instructions for `linguiLocale`. (@paales) [magento-product-configurable](#package-magento-product-configurable) [lingui-next](#package-lingui-next) [next-ui](#package-next-ui) [next-config](#package-next-config) [docs](#package-docs) -- Moved product reviews to the `relatedUpsells` query so we do not pass the queryComplexity limit. (@paales) - [magento-product-configurable](#package-magento-product-configurable) [magento-review](#package-magento-review) +- Moved product reviews to the `relatedUpsells` query so we do not pass the queryComplexity limit. (@paales) [magento-product-configurable](#package-magento-product-configurable) [magento-review](#package-magento-review) -- Solved issue where Recently Viewed Products would execute a query even if there were no products to display. (@paales) - [magento-recently-viewed-products](#package-magento-recently-viewed-products) +- Solved issue where Recently Viewed Products would execute a query even if there were no products to display. (@paales) [magento-recently-viewed-products](#package-magento-recently-viewed-products) -- Add early return when there are no reviews to prevent invalid enhanced results. (@carlocarels90) - [magento-review](#package-magento-review) +- Add early return when there are no reviews to prevent invalid enhanced results. (@carlocarels90) [magento-review](#package-magento-review) -- Solved an issue where the Search Input field wouldn't open and wouldn't be focussed on render. (@Renzovh) - [magento-search](#package-magento-search) +- Solved an issue where the Search Input field wouldn't open and wouldn't be focussed on render. (@Renzovh) [magento-search](#package-magento-search) -- Solve issue: Warning: Cannot update a component (`FormAutoSubmitBase`) while rendering a different component (`ActionCardListForm`). (@paales) - [magento-search](#package-magento-search) [ecommerce-ui](#package-ecommerce-ui) +- Solve issue: Warning: Cannot update a component (`FormAutoSubmitBase`) while rendering a different component (`ActionCardListForm`). (@paales) [magento-search](#package-magento-search) [ecommerce-ui](#package-ecommerce-ui) -- Handle the case where one switches from using the default `.html` URL suffix, to not using one. (@hnsr) - [magento-store](#package-magento-store) +- Handle the case where one switches from using the default `.html` URL suffix, to not using one. (@hnsr) [magento-store](#package-magento-store) -- Default to permanent redirects unless specified (@hnsr) - [magento-store](#package-magento-store) +- Default to permanent redirects unless specified (@hnsr) [magento-store](#package-magento-store) -- Contain ripple to wishlist button instead of propagating to product list item (@bramvanderholst) - [magento-wishlist](#package-magento-wishlist) +- Contain ripple to wishlist button instead of propagating to product list item (@bramvanderholst) [magento-wishlist](#package-magento-wishlist) -- Add to wishlist message missed the product name (@paales) - [magento-wishlist](#package-magento-wishlist) +- Add to wishlist message missed the product name (@paales) [magento-wishlist](#package-magento-wishlist) -- Algolia: Added support for Adobe Commerce for Algolia. (@paales) - [algolia-products](#package-algolia-products) [algolia-recommend](#package-algolia-recommend) +- Algolia: Added support for Adobe Commerce for Algolia. (@paales) [algolia-products](#package-algolia-products) [algolia-recommend](#package-algolia-recommend) -- Algolia: Added support for customer group pricing in Algolia. (@Renzovh) - [algolia-products](#package-algolia-products) +- Algolia: Added support for customer group pricing in Algolia. (@Renzovh) [algolia-products](#package-algolia-products) -- Algolia: Prevent errors by returning string instead of array (@Renzovh) - [algolia-products](#package-algolia-products) +- Algolia: Prevent errors by returning string instead of array (@Renzovh) [algolia-products](#package-algolia-products) -- Algolia: Automatically fall back to existing upsells/related products if they are defined and Algolia returns an error (@paales) - [algolia-recommend](#package-algolia-recommend) +- Algolia: Automatically fall back to existing upsells/related products if they are defined and Algolia returns an error (@paales) [algolia-recommend](#package-algolia-recommend) -- [@paales](https://github.com/paales)(@paales) - [cli](#package-cli) +- [@paales](https://github.com/paales)(@paales) [cli](#package-cli) -- Solve issue where `customFetch` couldn't be loaded correctly. (@paales) - [cli](#package-cli) [graphql-mesh](#package-graphql-mesh) [magento-graphcms](#package-magento-graphcms) +- Solve issue where `customFetch` couldn't be loaded correctly. (@paales) [cli](#package-cli) [graphql-mesh](#package-graphql-mesh) [magento-graphcms](#package-magento-graphcms) -- [@paales](https://github.com/paales)(@paales) - [cli](#package-cli) +- [@paales](https://github.com/paales)(@paales) [cli](#package-cli) -- Resolve peer dependency issues so we get a clean install (@paales) - [cli](#package-cli) [google-datalayer](#package-google-datalayer) [googleanalytics](#package-googleanalytics) [googletagmanager](#package-googletagmanager) [graphql](#package-graphql) [graphql-mesh](#package-graphql-mesh) [hygraph-cli](#package-hygraph-cli) [next-ui](#package-next-ui) [react-hook-form](#package-react-hook-form) [eslint-config-pwa](#package-eslint-config-pwa) [graphql-codegen-markdown-docs](#package-graphql-codegen-markdown-docs) [graphql-codegen-near-operation-file](#package-graphql-codegen-near-operation-file) [graphql-codegen-relay-optimizer-plugin](#package-graphql-codegen-relay-optimizer-plugin) [next-config](#package-next-config) [prettier-config-pwa](#package-prettier-config-pwa) +- Resolve peer dependency issues so we get a clean install (@paales) [cli](#package-cli) [google-datalayer](#package-google-datalayer) [googleanalytics](#package-googleanalytics) [googletagmanager](#package-googletagmanager) [graphql](#package-graphql) [graphql-mesh](#package-graphql-mesh) [hygraph-cli](#package-hygraph-cli) [next-ui](#package-next-ui) [react-hook-form](#package-react-hook-form) [eslint-config-pwa](#package-eslint-config-pwa) [graphql-codegen-markdown-docs](#package-graphql-codegen-markdown-docs) [graphql-codegen-near-operation-file](#package-graphql-codegen-near-operation-file) [graphql-codegen-relay-optimizer-plugin](#package-graphql-codegen-relay-optimizer-plugin) [next-config](#package-next-config) [prettier-config-pwa](#package-prettier-config-pwa) -- Make sure the interceptors are generated before the typecheck is ran. (@paales) - [cli](#package-cli) [next-config](#package-next-config) +- Make sure the interceptors are generated before the typecheck is ran. (@paales) [cli](#package-cli) [next-config](#package-next-config) -- The mesh would always include all graphqls files even though they aren't necessary for Magento 2.4.7 (@Giovanni-Schroevers) - [cli](#package-cli) +- The mesh would always include all graphqls files even though they aren't necessary for Magento 2.4.7 (@Giovanni-Schroevers) [cli](#package-cli) -- Remove large demo item, as it doesn't properly work and isn't as pretty as it can be (@paales) - [demo-magento-graphcommerce](#package-demo-magento-graphcommerce) +- Remove large demo item, as it doesn't properly work and isn't as pretty as it can be (@paales) [demo-magento-graphcommerce](#package-demo-magento-graphcommerce) -- Added ref forwarding for the inputRef (@paales) - [ecommerce-ui](#package-ecommerce-ui) +- Added ref forwarding for the inputRef (@paales) [ecommerce-ui](#package-ecommerce-ui) -- Updated all form `` components to also accept `defaultValue`, `shouldUnregister` and `disabled`. Moved ``, ``, ``, ``, ``, `` to `useController`. Removed all `parseError` props. (@Giovanni-Schroevers) - [ecommerce-ui](#package-ecommerce-ui) +- Updated all form `` components to also accept `defaultValue`, `shouldUnregister` and `disabled`. Moved ``, ``, ``, ``, ``, `` to `useController`. Removed all `parseError` props. (@Giovanni-Schroevers) [ecommerce-ui](#package-ecommerce-ui) -- Make sure the `` doesnā€™t give a uncontrolled to controlled warning. Convert `` to `useController` instead of a separate Controller component. Make sure the original `endAdornment` is always shown only until the value is valid. (@FrankHarland) - [ecommerce-ui](#package-ecommerce-ui) +- Make sure the `` doesnā€™t give a uncontrolled to controlled warning. Convert `` to `useController` instead of a separate Controller component. Make sure the original `endAdornment` is always shown only until the value is valid. (@FrankHarland) [ecommerce-ui](#package-ecommerce-ui) -- The `` component now uses the `useIsSSR` hook which prevents loading spinners when navigating on the client, which make all account/cart/checkout pages faster. (@FrankHarland) - [ecommerce-ui](#package-ecommerce-ui) +- The `` component now uses the `useIsSSR` hook which prevents loading spinners when navigating on the client, which make all account/cart/checkout pages faster. (@FrankHarland) [ecommerce-ui](#package-ecommerce-ui) -- Omit disableUnderline prop for ā€˜outlinedā€™ variant, because its not supported. (@carlocarels90) - [ecommerce-ui](#package-ecommerce-ui) +- Omit disableUnderline prop for ā€˜outlinedā€™ variant, because its not supported. (@carlocarels90) [ecommerce-ui](#package-ecommerce-ui) -- Moved `` to `@graphcommerce/ecommerce-ui` to resolve issue with circular dependencies. (@Giovanni-Schroevers) - [ecommerce-ui](#package-ecommerce-ui) +- Moved `` to `@graphcommerce/ecommerce-ui` to resolve issue with circular dependencies. (@Giovanni-Schroevers) [ecommerce-ui](#package-ecommerce-ui) -- Destructure InputProps to ensure they are passed only to relevant components. (@carlocarels90) - [ecommerce-ui](#package-ecommerce-ui) +- Destructure InputProps to ensure they are passed only to relevant components. (@carlocarels90) [ecommerce-ui](#package-ecommerce-ui) -- Solve issue where `` would allow numbers below zero when `min = 0`. (@JoshuaS98) - [ecommerce-ui](#package-ecommerce-ui) +- Solve issue where `` would allow numbers below zero when `min = 0`. (@JoshuaS98) [ecommerce-ui](#package-ecommerce-ui) -- Prevent checkout from looping back and forth with the cart overlay when navigating directly to the checkout. (@Giovanni-Schroevers) - [framer-next-pages](#package-framer-next-pages) +- Prevent checkout from looping back and forth with the cart overlay when navigating directly to the checkout. (@Giovanni-Schroevers) [framer-next-pages](#package-framer-next-pages) -- Loading an overlay page directly would animate in the overlay instead of directly showing it. (@paales) - [framer-next-pages](#package-framer-next-pages) [next-ui](#package-next-ui) +- Loading an overlay page directly would animate in the overlay instead of directly showing it. (@paales) [framer-next-pages](#package-framer-next-pages) [next-ui](#package-next-ui) -- Prevent retriggering a `scrollTo` animation in Firefox when the current `scrollLeft/scrollTop` is a float. (@Giovanni-Schroevers) - [framer-scroller](#package-framer-scroller) +- Prevent retriggering a `scrollTo` animation in Firefox when the current `scrollLeft/scrollTop` is a float. (@Giovanni-Schroevers) [framer-scroller](#package-framer-scroller) -- The `` now supports two more props: `disableSticky` and `variantMd` (`default | oneColumn`). (@Jessevdpoel) - [framer-scroller](#package-framer-scroller) +- The `` now supports two more props: `disableSticky` and `variantMd` (`default | oneColumn`). (@Jessevdpoel) [framer-scroller](#package-framer-scroller) -- Prevent `` from scrolling the page horizontally. (@Giovanni-Schroevers) - [framer-scroller](#package-framer-scroller) +- Prevent `` from scrolling the page horizontally. (@Giovanni-Schroevers) [framer-scroller](#package-framer-scroller) -- Prevent gallery thumbnails from scrolling when opening or closing a layout overlay. (@Giovanni-Schroevers) - [framer-scroller](#package-framer-scroller) [next-ui](#package-next-ui) +- Prevent gallery thumbnails from scrolling when opening or closing a layout overlay. (@Giovanni-Schroevers) [framer-scroller](#package-framer-scroller) [next-ui](#package-next-ui) -- All `sendEvent` calls are now the return type of `useSendEvent`, to allow plugins to use hooks themselves. (@Renzovh) - [google-datalayer](#package-google-datalayer) +- All `sendEvent` calls are now the return type of `useSendEvent`, to allow plugins to use hooks themselves. (@Renzovh) [google-datalayer](#package-google-datalayer) -- Solved an issue where the `BillingPage` query would be re-queried after setting the payment method. (@Giovanni-Schroevers) - [google-datalayer](#package-google-datalayer) +- Solved an issue where the `BillingPage` query would be re-queried after setting the payment method. (@Giovanni-Schroevers) [google-datalayer](#package-google-datalayer) -- Moved import locations of Google Analytics and Google Tagmanager scripts to their officialrecommended locations. (@paales) - [googleanalytics](#package-googleanalytics) [googletagmanager](#package-googletagmanager) +- Moved import locations of Google Analytics and Google Tagmanager scripts to their officialrecommended locations. (@paales) [googleanalytics](#package-googleanalytics) [googletagmanager](#package-googletagmanager) -- Solve an issue where the `grecaptcha.execute` method would throw `null` causing the checkout to break in unexpected ways. (@paales) - [googlerecaptcha](#package-googlerecaptcha) +- Solve an issue where the `grecaptcha.execute` method would throw `null` causing the checkout to break in unexpected ways. (@paales) [googlerecaptcha](#package-googlerecaptcha) -- fix: Google tag manager noscript tag would output escaped html causing hydration errors (@FrankHarland) - [googletagmanager](#package-googletagmanager) +- fix: Google tag manager noscript tag would output escaped html causing hydration errors (@FrankHarland) [googletagmanager](#package-googletagmanager) -- Renamed from `@graphcommerce/graphcms-ui` to `@graphcommerce/hygraph-ui`. (@paales) - [graphcms-ui](#package-graphcms-ui) [hygraph-ui](#package-hygraph-ui) +- Renamed from `@graphcommerce/graphcms-ui` to `@graphcommerce/hygraph-ui`. (@paales) [graphcms-ui](#package-graphcms-ui) [hygraph-ui](#package-hygraph-ui) -- Remove ā€˜upā€™ data from the blogoverview page. (@carlocarels90) - [graphcms-ui](#package-graphcms-ui) [magento-graphcms](#package-magento-graphcms) +- Remove ā€˜upā€™ data from the blogoverview page. (@carlocarels90) [graphcms-ui](#package-graphcms-ui) [magento-graphcms](#package-magento-graphcms) -- Allow blog pages to be nested. (@Jessevdpoel) - [graphcms-ui](#package-graphcms-ui) +- Allow blog pages to be nested. (@Jessevdpoel) [graphcms-ui](#package-graphcms-ui) -- Added helper method to get Hygraph paths (@bramvanderholst) - [graphcms-ui](#package-graphcms-ui) +- Added helper method to get Hygraph paths (@bramvanderholst) [graphcms-ui](#package-graphcms-ui) -- Add support for linebreaks in Hygraph content (@FrankHarland) - [graphcms-ui](#package-graphcms-ui) +- Add support for linebreaks in Hygraph content (@FrankHarland) [graphcms-ui](#package-graphcms-ui) -- The `` component now only warns when a block is rendered during the initial SSR render. (@Giovanni-Schroevers) - [graphql](#package-graphql) +- The `` component now only warns when a block is rendered during the initial SSR render. (@Giovanni-Schroevers) [graphql](#package-graphql) -- When loading a page, always create a new GraphQL client, so that cache isn't shared for each request, causing an unnecessary large page size. (@paales) - [graphql](#package-graphql) +- When loading a page, always create a new GraphQL client, so that cache isn't shared for each request, causing an unnecessary large page size. (@paales) [graphql](#package-graphql) -- Added back ApolloClient caching for SSR requests to projects (@paales) - [graphql](#package-graphql) +- Added back ApolloClient caching for SSR requests to projects (@paales) [graphql](#package-graphql) -- Added eslint rule: Importing `\*.interceptor` is NOT allowed (@paales) - [graphql](#package-graphql) [eslint-config-pwa](#package-eslint-config-pwa) +- Added eslint rule: Importing `\*.interceptor` is NOT allowed (@paales) [graphql](#package-graphql) [eslint-config-pwa](#package-eslint-config-pwa) -- measurePerformanceLink now reports queries made in the subgraph and is only included during development and not in production. (@paales) - [graphql](#package-graphql) +- measurePerformanceLink now reports queries made in the subgraph and is only included during development and not in production. (@paales) [graphql](#package-graphql) -- When a `usePrivateQuery` is called, only execute when there is no `PrivateQueryMaskContext` defined above. (@paales) - [graphql](#package-graphql) +- When a `usePrivateQuery` is called, only execute when there is no `PrivateQueryMaskContext` defined above. (@paales) [graphql](#package-graphql) - Solves the issue `TypeError: url?.startsWith is not a function`. The generated `.mesh/index.ts` would be generated as a requirejs module while next.js expects an esm module. In the end we properly generated the mesh correctly and now there is an `import.meta.url` instead of using `require('node:url')`. To solve this we needed to solve a chain of issues: @@ -607,192 +438,130 @@ 2) To properly convert the module to an esm module we've migrated the build of the cli package to use 'pkgroll' instead of tsc, because tsc is limited in what it outputs and can't really convert classic imports to esm. 3) To load possible mesh plugins we require additional .ts files to be loaded with [tsx](https://tsx.is/). To get the tsx loader to work properly in combination with esm modules, we need at least [node 18.19.0](https://nodejs.org/en/blog/release/v18.19.0#new-nodemodule-api-register-for-module-customization-hooks-new-initialize-hook). Minimal Node version upped to 18.19.0 and add support for node 22. ([@paales](https://github.com/paales)) -- Added `traverseSelectionSet` utility function to extract a child selection set from the parent. (@Renzovh) - [graphql-mesh](#package-graphql-mesh) -- Fix cors issues with Dynamic Row Property Picker App (@JoshuaS98) - [graphql-mesh](#package-graphql-mesh) +- Added `traverseSelectionSet` utility function to extract a child selection set from the parent. (@Renzovh) [graphql-mesh](#package-graphql-mesh) -- [@paales](https://github.com/paales)(@paales) - [graphql-mesh](#package-graphql-mesh) +- Fix cors issues with Dynamic Row Property Picker App (@JoshuaS98) [graphql-mesh](#package-graphql-mesh) -- Revert Pin versions of @graphql-mesh/config and utils (@paales) - [graphql-mesh](#package-graphql-mesh) +- [@paales](https://github.com/paales)(@paales) [graphql-mesh](#package-graphql-mesh) -- Made all graphql mesh dependencies peer dependencies so users can upgrade without problems (@paales) - [graphql-mesh](#package-graphql-mesh) +- Revert Pin versions of @graphql-mesh/config and utils (@paales) [graphql-mesh](#package-graphql-mesh) -- Suppress warning where a dependency is an expression, Added uglify-es and long as the dependencies couldnā€™t be found (@paales) - [graphql-mesh](#package-graphql-mesh) [next-config](#package-next-config) +- Made all graphql mesh dependencies peer dependencies so users can upgrade without problems (@paales) [graphql-mesh](#package-graphql-mesh) -- Remove `row` field on DynamicRows\` model (@JoshuaS98) - [hygraph-dynamic-rows](#package-hygraph-dynamic-rows) +- Suppress warning where a dependency is an expression, Added uglify-es and long as the dependencies couldnā€™t be found (@paales) [graphql-mesh](#package-graphql-mesh) [next-config](#package-next-config) -- Solve issue where an Apollo object couldn't be modified as it is read only when Dynamic rows are added to the project. (@JoshuaS98) - [hygraph-dynamic-rows](#package-hygraph-dynamic-rows) +- Remove `row` field on DynamicRows\` model (@JoshuaS98) [hygraph-dynamic-rows](#package-hygraph-dynamic-rows) -- Resolve issue where the dynamic rows UI wouldnā€™t load any definitions (@paales) - [hygraph-dynamic-rows-ui](#package-hygraph-dynamic-rows-ui) +- Solve issue where an Apollo object couldn't be modified as it is read only when Dynamic rows are added to the project. (@JoshuaS98) [hygraph-dynamic-rows](#package-hygraph-dynamic-rows) -- Solve bugs in the Dynamic Row UI module and styled the config screen. (@JoshuaS98) - [hygraph-dynamic-rows-ui](#package-hygraph-dynamic-rows-ui) +- Resolve issue where the dynamic rows UI wouldnā€™t load any definitions (@paales) [hygraph-dynamic-rows-ui](#package-hygraph-dynamic-rows-ui) -- Allow attributes with deprecationReasons (e.g. custom attributes) as PropertyPicker value (@carlocarels90) - [hygraph-dynamic-rows-ui](#package-hygraph-dynamic-rows-ui) +- Solve bugs in the Dynamic Row UI module and styled the config screen. (@JoshuaS98) [hygraph-dynamic-rows-ui](#package-hygraph-dynamic-rows-ui) -- When viewing the website on a 1x monitor, serve a little bit smaller images. (@paales) - [image](#package-image) +- Allow attributes with deprecationReasons (e.g. custom attributes) as PropertyPicker value (@carlocarels90) [hygraph-dynamic-rows-ui](#package-hygraph-dynamic-rows-ui) -- Solve an issue where image sizes are served in higher resolution than expected. (@bramvanderholst) - [image](#package-image) +- When viewing the website on a 1x monitor, serve a little bit smaller images. (@paales) [image](#package-image) -- Solve issue where the page would reload during development when the first call to `/graphql` was made. (@paales) - [lingui-next](#package-lingui-next) [next-ui](#package-next-ui) +- Solve an issue where image sizes are served in higher resolution than expected. (@bramvanderholst) [image](#package-image) -- Resolve the overlay issue when navigating from the 'Forgot Password' page to the 'Sign In' page. (@carlocarels90) - [next-ui](#package-next-ui) [magento-graphcms](#package-magento-graphcms) +- Solve issue where the page would reload during development when the first call to `/graphql` was made. (@paales) [lingui-next](#package-lingui-next) [next-ui](#package-next-ui) -- Fix back button transparency on hover (@bramvanderholst) - [next-ui](#package-next-ui) +- Resolve the overlay issue when navigating from the 'Forgot Password' page to the 'Sign In' page. (@carlocarels90) [next-ui](#package-next-ui) [magento-graphcms](#package-magento-graphcms) -- Added `useIsSSR` hook that will properly resolve when the page is rendered on the server and on first render, but will return false when a component is rendered on the client directly. (@FrankHarland) - [next-ui](#package-next-ui) +- Fix back button transparency on hover (@bramvanderholst) [next-ui](#package-next-ui) -- USPS would be loaded after other queries, causing unnecessary slowdown. (@paales) - [next-ui](#package-next-ui) +- Added `useIsSSR` hook that will properly resolve when the page is rendered on the server and on first render, but will return false when a component is rendered on the client directly. (@FrankHarland) [next-ui](#package-next-ui) -- Added the possibility to place content before or after the scroller. (@carlocarels90) - [next-ui](#package-next-ui) +- USPS would be loaded after other queries, causing unnecessary slowdown. (@paales) [next-ui](#package-next-ui) -- Mark the menu item as active if router.asPath matches the href, or if the first URL segment matches, indicating it's the parent item. (@carlocarels90) - [next-ui](#package-next-ui) +- Added the possibility to place content before or after the scroller. (@carlocarels90) [next-ui](#package-next-ui) -- Solve an issue where the success page would show a back button which would go back to the payment page (which would be empty) (@carlocarels90) - [next-ui](#package-next-ui) [magento-graphcms](#package-magento-graphcms) +- Mark the menu item as active if router.asPath matches the href, or if the first URL segment matches, indicating it's the parent item. (@carlocarels90) [next-ui](#package-next-ui) -- Move arguments of `responsiveVal` around so the `minBreakpoint` can be given as third argument. (@paales) - [next-ui](#package-next-ui) +- Solve an issue where the success page would show a back button which would go back to the payment page (which would be empty) (@carlocarels90) [next-ui](#package-next-ui) [magento-graphcms](#package-magento-graphcms) -- OverlayBase now supports disableAnimation and disableDrag (@paales) - [next-ui](#package-next-ui) +- Move arguments of `responsiveVal` around so the `minBreakpoint` can be given as third argument. (@paales) [next-ui](#package-next-ui) -- Updated canonicalize helper for better multi domain support (@bramvanderholst) - [next-ui](#package-next-ui) +- OverlayBase now supports disableAnimation and disableDrag (@paales) [next-ui](#package-next-ui) -- Added locale prop support for all `` components and exposed all functionality as hooks. (@paales) - [next-ui](#package-next-ui) +- Updated canonicalize helper for better multi domain support (@bramvanderholst) [next-ui](#package-next-ui) -- `memoDeep` function that is a deep compare variant of `React.memo`. Performance seems to be pretty good, but should only be used as a result of a profiling session. (@paales) - [next-ui](#package-next-ui) +- Added locale prop support for all `` components and exposed all functionality as hooks. (@paales) [next-ui](#package-next-ui) -- Solve an issue where internal full URL's would cause prefetching errors and would use a hard navigation. (@paales) - [next-ui](#package-next-ui) +- `memoDeep` function that is a deep compare variant of `React.memo`. Performance seems to be pretty good, but should only be used as a result of a profiling session. (@paales) [next-ui](#package-next-ui) -- Added functionality to constrain the container sizing of the frontend. Added a new configuration `containerSizingShell` and `containerSizingContent` configuration options. Actual sizing can be configured in the `theme.ts`. (@StefanAngenent) - [next-ui](#package-next-ui) +- Solve an issue where internal full URL's would cause prefetching errors and would use a hard navigation. (@paales) [next-ui](#package-next-ui) -- Exclude ā€˜disableBackNavigationā€™ prop from LinkOrButton in LayoutHeaderBack. (@carlocarels90) - [next-ui](#package-next-ui) +- Added functionality to constrain the container sizing of the frontend. Added a new configuration `containerSizingShell` and `containerSizingContent` configuration options. Actual sizing can be configured in the `theme.ts`. (@StefanAngenent) [next-ui](#package-next-ui) -- The `` can now recieve focus, allowing form submissions to scroll to the field. Focussed fields now are now highlighted even when there is an error. (@Giovanni-Schroevers) - [next-ui](#package-next-ui) +- Exclude ā€˜disableBackNavigationā€™ prop from LinkOrButton in LayoutHeaderBack. (@carlocarels90) [next-ui](#package-next-ui) -- Hide the back button on desktop pages where breadcrumbs are displayed. (@carlocarels90) - [next-ui](#package-next-ui) [magento-graphcms](#package-magento-graphcms) +- The `` can now recieve focus, allowing form submissions to scroll to the field. Focussed fields now are now highlighted even when there is an error. (@Giovanni-Schroevers) [next-ui](#package-next-ui) -- Properly align cart loading state (and other FullPageMessage usages) (@bramvanderholst) - [next-ui](#package-next-ui) +- Hide the back button on desktop pages where breadcrumbs are displayed. (@carlocarels90) [next-ui](#package-next-ui) [magento-graphcms](#package-magento-graphcms) -- Make the back/up buttons translatable (@carlocarels90) - [next-ui](#package-next-ui) [magento-graphcms](#package-magento-graphcms) +- Properly align cart loading state (and other FullPageMessage usages) (@bramvanderholst) [next-ui](#package-next-ui) -- Date strings (12-12-2012) are not supported by older Safari browser versions. must be converted (12/12/2012) in order for it to function; otherwise, it will return NaN if we attempt to access the getTime() on an object. (@Vignesh-M21) - [next-ui](#package-next-ui) [magento-graphcms](#package-magento-graphcms) +- Make the back/up buttons translatable (@carlocarels90) [next-ui](#package-next-ui) [magento-graphcms](#package-magento-graphcms) -- MediaQuery component now accepts a display prop to not always render with display contents. Implement the MediaQuery component for the DesktopNavBar and filter page for StickyBelowHeader and ProductFiltersPro sidebar (@paales) - [next-ui](#package-next-ui) +- Date strings (12-12-2012) are not supported by older Safari browser versions. must be converted (12/12/2012) in order for it to function; otherwise, it will return NaN if we attempt to access the getTime() on an object. (@Vignesh-M21) [next-ui](#package-next-ui) [magento-graphcms](#package-magento-graphcms) -- `useFormGql` and it's derived hooks now have a new `skipUnchanged` prop. The form will only be submitted when there are fields dirty in a form. This reduces the amount of queries ran in the checkout greatly. (@Giovanni-Schroevers) - [react-hook-form](#package-react-hook-form) +- MediaQuery component now accepts a display prop to not always render with display contents. Implement the MediaQuery component for the DesktopNavBar and filter page for StickyBelowHeader and ProductFiltersPro sidebar (@paales) [next-ui](#package-next-ui) -- Added deprecation warnings for `useFormMuiRegister`. Refactored `useFormPersist` to use `useWatch` and added a separate `` component to prevent rerenders. (@FrankHarland) - [react-hook-form](#package-react-hook-form) +- `useFormGql` and it's derived hooks now have a new `skipUnchanged` prop. The form will only be submitted when there are fields dirty in a form. This reduces the amount of queries ran in the checkout greatly. (@Giovanni-Schroevers) [react-hook-form](#package-react-hook-form) -- Solve an issue where `onBeforeSubmit` and `onComplete` would become an 'stale closure' where variables inside wouldn't be updated. By wrapping `onBeforeSubmit` and `onComplete` in `useEventCallback` these functions are updated when outside values get changed. (@Giovanni-Schroevers) - [react-hook-form](#package-react-hook-form) +- Added deprecation warnings for `useFormMuiRegister`. Refactored `useFormPersist` to use `useWatch` and added a separate `` component to prevent rerenders. (@FrankHarland) [react-hook-form](#package-react-hook-form) -- Prevent overwriting custom context in useFormGqlMutation by merging operationOptions before execution. (@wimvdputten) - [react-hook-form](#package-react-hook-form) +- Solve an issue where `onBeforeSubmit` and `onComplete` would become an 'stale closure' where variables inside wouldn't be updated. By wrapping `onBeforeSubmit` and `onComplete` in `useEventCallback` these functions are updated when outside values get changed. (@Giovanni-Schroevers) [react-hook-form](#package-react-hook-form) -- When a `useFormGql` throws an error in the `onBeforeSubmit` method or `onComplete` method it will be set as an ApolloError with the message, allowing it to be displayed somewhere. The `` will now render this as an ``. (@Giovanni-Schroevers) - [react-hook-form](#package-react-hook-form) +- Prevent overwriting custom context in useFormGqlMutation by merging operationOptions before execution. (@wimvdputten) [react-hook-form](#package-react-hook-form) -- Added missing dependencies of `lodash` and `@types/lodash`. (@paales) - [react-hook-form](#package-react-hook-form) +- When a `useFormGql` throws an error in the `onBeforeSubmit` method or `onComplete` method it will be set as an ApolloError with the message, allowing it to be displayed somewhere. The `` will now render this as an ``. (@Giovanni-Schroevers) [react-hook-form](#package-react-hook-form) -- Mark `useFormValidFields` as deprecated: Please use ``, ``, etc. with the `showValid` prop. (@FrankHarland) - [react-hook-form](#package-react-hook-form) +- Added missing dependencies of `lodash` and `@types/lodash`. (@paales) [react-hook-form](#package-react-hook-form) -- Let eslint also work for js/mjs files (@paales) - [eslint-config-pwa](#package-eslint-config-pwa) +- Mark `useFormValidFields` as deprecated: Please use ``, ``, etc. with the `showValid` prop. (@FrankHarland) [react-hook-form](#package-react-hook-form) -- [@paales](https://github.com/paales)(@paales) - [eslint-config-pwa](#package-eslint-config-pwa) +- Let eslint also work for js/mjs files (@paales) [eslint-config-pwa](#package-eslint-config-pwa) -- Removed the `ProductPage.graphql` query from the examples directory as it isn't used anymore. (@paales) - [next-config](#package-next-config) +- [@paales](https://github.com/paales)(@paales) [eslint-config-pwa](#package-eslint-config-pwa) -- Make sure categories and products create the correct URL's in sitemaps (@paales) - [next-config](#package-next-config) +- Removed the `ProductPage.graphql` query from the examples directory as it isn't used anymore. (@paales) [next-config](#package-next-config) -- Added graphql.config.ts to projects (@paales) - [next-config](#package-next-config) +- Make sure categories and products create the correct URL's in sitemaps (@paales) [next-config](#package-next-config) -- Added robotsAllow to storefront config (@bramvanderholst) - [next-config](#package-next-config) +- Added graphql.config.ts to projects (@paales) [next-config](#package-next-config) -- All automatically generated interceptor files are now read-only in vscode to prevent accidental changes. (@paales) - [next-config](#package-next-config) +- Added robotsAllow to storefront config (@bramvanderholst) [next-config](#package-next-config) -- Reduce bundlesize of `@apollo/client`. (@paales) - [next-config](#package-next-config) +- All automatically generated interceptor files are now read-only in vscode to prevent accidental changes. (@paales) [next-config](#package-next-config) -- Solved an issue where the plugins would be generated with the wrong path (@paales) - [next-config](#package-next-config) +- Reduce bundlesize of `@apollo/client`. (@paales) [next-config](#package-next-config) -- Solve an issue where an env variable wouldn't be coerced to a Number if a `Config.graphqls` value is defined as an `Int`/`Float`. (@paales) - [next-config](#package-next-config) +- Solved an issue where the plugins would be generated with the wrong path (@paales) [next-config](#package-next-config) -- Solve an issue where interceptors were immediately deleted after generating (@paales) - [next-config](#package-next-config) +- Solve an issue where an env variable wouldn't be coerced to a Number if a `Config.graphqls` value is defined as an `Int`/`Float`. (@paales) [next-config](#package-next-config) -- Be able to handle plugin runtime values values when parsing the source. Also, make sure parsed plugin sources do not return duplicate plugins. (@paales) - [next-config](#package-next-config) +- Solve an issue where interceptors were immediately deleted after generating (@paales) [next-config](#package-next-config) -- Solve peer dependency issues for webpack and framer-motion (@paales) - [next-config](#package-next-config) +- Be able to handle plugin runtime values values when parsing the source. Also, make sure parsed plugin sources do not return duplicate plugins. (@paales) [next-config](#package-next-config) -- Added better interceptor comments and link to original files (@paales) - [next-config](#package-next-config) +- Solve peer dependency issues for webpack and framer-motion (@paales) [next-config](#package-next-config) -- Enable prettier-plugin-jsdoc (@paales) - [prettier-config-pwa](#package-prettier-config-pwa) +- Added better interceptor comments and link to original files (@paales) [next-config](#package-next-config) -- Added docs about caching. (@paales) - [docs](#package-docs) +- Enable prettier-plugin-jsdoc (@paales) [prettier-config-pwa](#package-prettier-config-pwa) -- Added documentation about the Canonical URL and Sitemap handling (@paales) - [docs](#package-docs) +- Added docs about caching. (@paales) [docs](#package-docs) -- Document patch `custom_attributesV2` for null attribute values issue. (@SimonPrins) - [docs](#package-docs) +- Added documentation about the Canonical URL and Sitemap handling (@paales) [docs](#package-docs) -- Create a 'Third-Party Libraries' page that includes further details on tools such as Google Analytics and Google Tag Manager. (@carlocarels90) - [docs](#package-docs) +- Document patch `custom_attributesV2` for null attribute values issue. (@SimonPrins) [docs](#package-docs) -- Added web vitals document (@paales) - [docs](#package-docs) +- Create a 'Third-Party Libraries' page that includes further details on tools such as Google Analytics and Google Tag Manager. (@carlocarels90) [docs](#package-docs) +- Added web vitals document (@paales) [docs](#package-docs) ## Packages diff --git a/.changeset/shy-foxes-drop.md b/.changeset/shy-foxes-drop.md new file mode 100644 index 0000000000..3b454ec645 --- /dev/null +++ b/.changeset/shy-foxes-drop.md @@ -0,0 +1,5 @@ +--- +'@graphcommerce/docs': patch +--- + +Solve issue with documentation parsing markdown files as mdx diff --git a/.changeset/two-ligers-hide.md b/.changeset/two-ligers-hide.md new file mode 100644 index 0000000000..a157f0542e --- /dev/null +++ b/.changeset/two-ligers-hide.md @@ -0,0 +1,5 @@ +--- +'@graphcommerce/hygraph-ui': patch +--- + +Support for new asset system of Hygraph diff --git a/docs/framework/seo.md b/docs/framework/seo.md index 3a91e7550d..68a03efb78 100644 --- a/docs/framework/seo.md +++ b/docs/framework/seo.md @@ -23,7 +23,7 @@ We integrated [JSON-LD](https://json-ld.org/) for pages. A [``](https://github.com/graphcommerce-org/graphcommerce/blob/main/packages/next-ui/JsonLd/JsonLd.tsx) component provides Json-LD metadata for your pages. See -[](https://github.com/graphcommerce-org/graphcommerce/blob/main/packages/magento-product/components/JsonLdProduct/ProductPageJsonLd.tsx) +[``](https://github.com/graphcommerce-org/graphcommerce/blob/main/packages/magento-product/components/JsonLdProduct/ProductPageJsonLd.tsx) or [``](https://github.com/graphcommerce-org/graphcommerce/blob/main/packages/next-ui/BreadcrumbJsonLd/BreadcrumbJsonLd.tsx) for examples. diff --git a/docs/framework/theming.md b/docs/framework/theming.md index 602ebdb5a6..18deb2f98f 100644 --- a/docs/framework/theming.md +++ b/docs/framework/theming.md @@ -11,9 +11,10 @@ as well as some common theming needs. ## Changing the color palette -The global styles or your GraphCommerce app are located in /components/theme.ts. -To customize the app with your preferred colors, change the primary, secondary -and text colors. Save the file to see your changes updated in real-time: +The global styles or your GraphCommerce app are located in +/components/theme.ts.` To customize the app with your preferred colors, change +the primary, secondary and text colors. Save the file to see your changes +updated in real-time: ```json primary: { @@ -248,7 +249,7 @@ should not be scaled with responsiveVal. To learn more, look into ## Disabling darkmode or lightmode site wide -Remove light={lightTheme} or dark={darkTheme} from the +Remove `light={lightTheme}` or `dark={darkTheme}` from the `` in \_app.tsx to disable darkmode or lightmode site wide. diff --git a/docs/getting-started/improving-core-web-vitals.md b/docs/getting-started/improving-core-web-vitals.md index 1cd09a5309..86eaded0c5 100644 --- a/docs/getting-started/improving-core-web-vitals.md +++ b/docs/getting-started/improving-core-web-vitals.md @@ -4,9 +4,9 @@ GraphCommerce has a strict focus on getting great scores on Google's Core Web Vitals. This document outlines the steps we take to ensure that our frontend is performant. -- LCP: Good: <=2.5s Needs Improvement: <=4s Bad: >4s -- CLS: Good: <=0.1 Needs improvement: <=0.25 Bad: >0.25 -- INP: Good: <=200ms Needs improvement: <=500ms Bad: >500ms +- LCP: Good: \<=2.5s Needs Improvement: \<=4s Bad: \>4s +- CLS: Good: \<=0.1 Needs improvement: \<=0.25 Bad: \>0.25 +- INP: Good: \<=200ms Needs improvement: \<=500ms Bad: \>500ms To get a good LCP and CLS there are a few things we need to do. diff --git a/examples/magento-graphcms/CHANGELOG.md b/examples/magento-graphcms/CHANGELOG.md index e5be8a778f..66ce46b2ab 100644 --- a/examples/magento-graphcms/CHANGELOG.md +++ b/examples/magento-graphcms/CHANGELOG.md @@ -19,7 +19,7 @@ - Added new `permissions` configuration for GraphCommerce - Added `permissions.cart`: `ENABLED` | `CUSTOMER_ONLY` | `DISABLED` - Added `permissions.checkout`: `ENABLED` | `CUSTOMER_ONLY` | `DISABLED` - - Adedd `permissions.customerAccount`: `ENABLED` | `DISABLE_REGISTRATION` | `DISABLE` ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) + - Added `permissions.customerAccount`: `ENABLED` | `DISABLE_REGISTRATION` | `DISABLE` ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) - [#2324](https://github.com/graphcommerce-org/graphcommerce/pull/2324) [`1c8b1e4`](https://github.com/graphcommerce-org/graphcommerce/commit/1c8b1e441ac44935bfd2215d62a71c02b3ba7e6f) - Magento 2.4.7: Implement the `contactUs` mutation, add contact us overlay. ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) diff --git a/examples/magento-graphcms/components/ProductListLayout/ProductListLayoutSidebar.tsx b/examples/magento-graphcms/components/ProductListLayout/ProductListLayoutSidebar.tsx index 7084773c20..94c00bb2ef 100644 --- a/examples/magento-graphcms/components/ProductListLayout/ProductListLayoutSidebar.tsx +++ b/examples/magento-graphcms/components/ProductListLayout/ProductListLayoutSidebar.tsx @@ -1,4 +1,8 @@ -import { CategoryBreadcrumbs, CategoryDescription } from '@graphcommerce/magento-category' +import { + CategoryBreadcrumbs, + CategoryChildren, + CategoryDescription, +} from '@graphcommerce/magento-category' import { ProductFiltersPro, ProductFiltersProAggregations, @@ -96,6 +100,9 @@ export const ProductListLayoutSidebar = memoDeep((props: ProductListLayoutProps) textAlignSm='start' description={category?.description} /> + theme.breakpoints.down('md')}> + {category?.children} + ) : ( <> diff --git a/examples/magento-graphcms/lib/graphql/graphqlSsrClient.ts b/examples/magento-graphcms/lib/graphql/graphqlSsrClient.ts index 3777f7496d..8ddb39e650 100644 --- a/examples/magento-graphcms/lib/graphql/graphqlSsrClient.ts +++ b/examples/magento-graphcms/lib/graphql/graphqlSsrClient.ts @@ -48,6 +48,7 @@ function client(context: GetStaticPropsContext, fetchPolicy: FetchPolicy = 'no-c * browser's cache. */ export function graphqlSharedClient(context: GetStaticPropsContext) { + if (context.preview || context.draftMode) return client(context, 'no-cache') return client(context, 'cache-first') } @@ -56,6 +57,7 @@ const ssrClient: { } = {} export function graphqlSsrClient(context: GetStaticPropsContext) { + if (context.preview || context.draftMode) return client(context, 'no-cache') const locale = context.locale ?? storefrontConfigDefault().locale i18nSsrLoader(locale) diff --git a/examples/magento-graphcms/pages/checkout/item/[url].tsx b/examples/magento-graphcms/pages/checkout/item/[url].tsx index 7f71566c3d..cf7daf33a6 100644 --- a/examples/magento-graphcms/pages/checkout/item/[url].tsx +++ b/examples/magento-graphcms/pages/checkout/item/[url].tsx @@ -15,6 +15,7 @@ import { } from '@graphcommerce/magento-cart-items' import { ProductPageGallery, ProductPageName } from '@graphcommerce/magento-product' import { + Container, FullPageMessage, GetServerSideProps, LayoutOverlay, @@ -27,7 +28,7 @@ import { } from '@graphcommerce/next-ui' import { i18n } from '@lingui/core' import { Trans } from '@lingui/react' -import { CircularProgress, Container, Typography } from '@mui/material' +import { CircularProgress, Typography } from '@mui/material' import { LayoutNavigationProps, AddProductsToCartView } from '../../../components' import { Props, getStaticProps } from '../../p/[url]' @@ -72,7 +73,7 @@ function CartItemEdit(props: Props) { )} {cartItem && ( - + ({ - maxWidth: '500px', mb: 0, '& .SidebarGallery-sidebar': { display: 'grid', rowGap: theme.spacings.sm }, })} diff --git a/examples/magento-open-source/components/ProductListLayout/ProductListLayoutSidebar.tsx b/examples/magento-open-source/components/ProductListLayout/ProductListLayoutSidebar.tsx index 7084773c20..9b44bc43a7 100644 --- a/examples/magento-open-source/components/ProductListLayout/ProductListLayoutSidebar.tsx +++ b/examples/magento-open-source/components/ProductListLayout/ProductListLayoutSidebar.tsx @@ -1,4 +1,8 @@ -import { CategoryBreadcrumbs, CategoryDescription } from '@graphcommerce/magento-category' +import { + CategoryBreadcrumbs, + CategoryChildren, + CategoryDescription, +} from '@graphcommerce/magento-category' import { ProductFiltersPro, ProductFiltersProAggregations, @@ -21,11 +25,12 @@ import { ProductFiltersProCategorySectionSearch, ProductFiltersProSearchTerm, } from '@graphcommerce/magento-search' -import { MediaQuery, memoDeep, Container, StickyBelowHeader } from '@graphcommerce/next-ui' +import { Container, MediaQuery, memoDeep, StickyBelowHeader } from '@graphcommerce/next-ui' import { Trans } from '@lingui/macro' import { Box, Typography } from '@mui/material' import { ProductListItems } from '../ProductListItems' -import { ProductListLayoutProps, useLayoutConfiguration } from './types' +import type { ProductListLayoutProps } from './types' +import { useLayoutConfiguration } from './types' export const ProductListLayoutSidebar = memoDeep((props: ProductListLayoutProps) => { const { filters, filterTypes, params, products, handleSubmit, category, title, menu } = props @@ -96,6 +101,9 @@ export const ProductListLayoutSidebar = memoDeep((props: ProductListLayoutProps) textAlignSm='start' description={category?.description} /> + theme.breakpoints.down('md')}> + {category?.children} + ) : ( <> diff --git a/examples/magento-open-source/lib/graphql/graphqlSsrClient.ts b/examples/magento-open-source/lib/graphql/graphqlSsrClient.ts index 9bbc3a8aeb..aee0976741 100644 --- a/examples/magento-open-source/lib/graphql/graphqlSsrClient.ts +++ b/examples/magento-open-source/lib/graphql/graphqlSsrClient.ts @@ -7,14 +7,14 @@ import type { import { ApolloClient, ApolloLink, - InMemoryCache, errorLink, fragments, graphqlConfig, + InMemoryCache, measurePerformanceLink, mergeTypePolicies, } from '@graphcommerce/graphql' -import { MeshApolloLink, getBuiltMesh } from '@graphcommerce/graphql-mesh' +import { getBuiltMesh, MeshApolloLink } from '@graphcommerce/graphql-mesh' import { storefrontConfig, storefrontConfigDefault } from '@graphcommerce/next-ui' import type { GetStaticPropsContext } from 'next' import { i18nSsrLoader } from '../i18n/I18nProvider' @@ -50,6 +50,7 @@ function client(context: GetStaticPropsContext, fetchPolicy: FetchPolicy = 'no-c * browser's cache. */ export function graphqlSharedClient(context: GetStaticPropsContext) { + if (context.preview || context.draftMode) return client(context, 'no-cache') return client(context, 'cache-first') } @@ -58,6 +59,7 @@ const ssrClient: { } = {} export function graphqlSsrClient(context: GetStaticPropsContext) { + if (context.preview || context.draftMode) return client(context, 'no-cache') const locale = context.locale ?? storefrontConfigDefault().locale i18nSsrLoader(locale) diff --git a/examples/magento-open-source/pages/checkout/item/[url].tsx b/examples/magento-open-source/pages/checkout/item/[url].tsx index 0a399b489c..97f259590c 100644 --- a/examples/magento-open-source/pages/checkout/item/[url].tsx +++ b/examples/magento-open-source/pages/checkout/item/[url].tsx @@ -16,17 +16,18 @@ import { import { ProductPageGallery, ProductPageName } from '@graphcommerce/magento-product' import type { GetServerSideProps, LayoutOverlayProps } from '@graphcommerce/next-ui' import { + Container, FullPageMessage, + iconShoppingBag, LayoutOverlay, LayoutOverlayHeader, LayoutTitle, OverlayStickyBottom, PageMeta, - iconShoppingBag, } from '@graphcommerce/next-ui' import { i18n } from '@lingui/core' import { Trans } from '@lingui/react' -import { CircularProgress, Container, Typography } from '@mui/material' +import { CircularProgress, Typography } from '@mui/material' import type { LayoutNavigationProps } from '../../../components' import { AddProductsToCartView } from '../../../components' import type { Props } from '../../p/[url]' @@ -73,7 +74,7 @@ function CartItemEdit(props: Props) { )} {cartItem && ( - + ({ - maxWidth: '500px', mb: 0, '& .SidebarGallery-sidebar': { display: 'grid', rowGap: theme.spacings.sm }, })} diff --git a/packages/algolia-insights/hooks/useSendAlgoliaEvent.ts b/packages/algolia-insights/hooks/useSendAlgoliaEvent.ts index e9179b9429..d5a85843c1 100644 --- a/packages/algolia-insights/hooks/useSendAlgoliaEvent.ts +++ b/packages/algolia-insights/hooks/useSendAlgoliaEvent.ts @@ -183,7 +183,7 @@ const dataLayerToAlgoliaMap: { const mapping = getObjectIDToQuery() const objectIDs = eventData.items.map((item) => atob(item.item_uid)) - const relevant = objectIDs.map((objectID) => mapping[objectID]) + const relevant = objectIDs.map((objectID) => mapping[objectID]).filter(Boolean) const queryID = relevant?.[0]?.queryID const filters = [...new Set(...relevant.map((item) => item.filters))] diff --git a/packages/ecommerce-ui/CHANGELOG.md b/packages/ecommerce-ui/CHANGELOG.md index 5a44ee2d9d..888fe8d967 100644 --- a/packages/ecommerce-ui/CHANGELOG.md +++ b/packages/ecommerce-ui/CHANGELOG.md @@ -9,7 +9,7 @@ - Added new `permissions` configuration for GraphCommerce - Added `permissions.cart`: `ENABLED` | `CUSTOMER_ONLY` | `DISABLED` - Added `permissions.checkout`: `ENABLED` | `CUSTOMER_ONLY` | `DISABLED` - - Adedd `permissions.customerAccount`: `ENABLED` | `DISABLE_REGISTRATION` | `DISABLE` ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) + - Added `permissions.customerAccount`: `ENABLED` | `DISABLE_REGISTRATION` | `DISABLE` ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) ### Minor Changes diff --git a/packages/hygraph-ui/plugins/hygraphGraphqlConfig.ts b/packages/hygraph-ui/plugins/hygraphGraphqlConfig.ts index ea9d6f78c3..4fdce5dbb4 100644 --- a/packages/hygraph-ui/plugins/hygraphGraphqlConfig.ts +++ b/packages/hygraph-ui/plugins/hygraphGraphqlConfig.ts @@ -18,11 +18,9 @@ export const graphqlConfig: FunctionPlugin = (prev, co const locales = conf.storefront.hygraphLocales - if (!locales) return prev(conf) - const hygraphLink = setContext((_, context) => { if (!context.headers) context.headers = {} - context.headers['gcms-locales'] = locales.join(',') + if (locales) context.headers['gcms-locales'] = locales.join(',') const stage = conf.previewData?.hygraphStage ?? 'DRAFT' if (conf.preview) { diff --git a/packages/magento-cart-email/CHANGELOG.md b/packages/magento-cart-email/CHANGELOG.md index d5570fc61f..58c9aeb237 100644 --- a/packages/magento-cart-email/CHANGELOG.md +++ b/packages/magento-cart-email/CHANGELOG.md @@ -9,7 +9,7 @@ - Added new `permissions` configuration for GraphCommerce - Added `permissions.cart`: `ENABLED` | `CUSTOMER_ONLY` | `DISABLED` - Added `permissions.checkout`: `ENABLED` | `CUSTOMER_ONLY` | `DISABLED` - - Adedd `permissions.customerAccount`: `ENABLED` | `DISABLE_REGISTRATION` | `DISABLE` ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) + - Added `permissions.customerAccount`: `ENABLED` | `DISABLE_REGISTRATION` | `DISABLE` ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) ### Minor Changes diff --git a/packages/magento-cart-shipping-address/components/CustomerAddressForm/CustomerAddressForm.tsx b/packages/magento-cart-shipping-address/components/CustomerAddressForm/CustomerAddressForm.tsx index b5ac7ac30c..dce7ffe4f0 100644 --- a/packages/magento-cart-shipping-address/components/CustomerAddressForm/CustomerAddressForm.tsx +++ b/packages/magento-cart-shipping-address/components/CustomerAddressForm/CustomerAddressForm.tsx @@ -158,6 +158,7 @@ export function CustomerAddressForm(props: CustomerAddressListProps) { collapse size='large' color='secondary' + required items={[ ...customerAddresses.map((address) => ({ ...address, value: address.id })), { value: -1 }, diff --git a/packages/magento-cart/CHANGELOG.md b/packages/magento-cart/CHANGELOG.md index 3f17308e52..9697184d6c 100644 --- a/packages/magento-cart/CHANGELOG.md +++ b/packages/magento-cart/CHANGELOG.md @@ -11,7 +11,7 @@ - Added new `permissions` configuration for GraphCommerce - Added `permissions.cart`: `ENABLED` | `CUSTOMER_ONLY` | `DISABLED` - Added `permissions.checkout`: `ENABLED` | `CUSTOMER_ONLY` | `DISABLED` - - Adedd `permissions.customerAccount`: `ENABLED` | `DISABLE_REGISTRATION` | `DISABLE` ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) + - Added `permissions.customerAccount`: `ENABLED` | `DISABLE_REGISTRATION` | `DISABLE` ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) - [#2234](https://github.com/graphcommerce-org/graphcommerce/pull/2234) [`530076e`](https://github.com/graphcommerce-org/graphcommerce/commit/530076e3664703cb8b577b7fcf1998a420819f60) - INP improvements: Moved all usages of `useFormPersist` to the `` component to prevent rerenders. ([@FrankHarland](https://github.com/FrankHarland)) diff --git a/packages/magento-customer/CHANGELOG.md b/packages/magento-customer/CHANGELOG.md index 354fd313dd..9a818bde3e 100644 --- a/packages/magento-customer/CHANGELOG.md +++ b/packages/magento-customer/CHANGELOG.md @@ -12,14 +12,12 @@ - [#2327](https://github.com/graphcommerce-org/graphcommerce/pull/2327) [`af83d81`](https://github.com/graphcommerce-org/graphcommerce/commit/af83d81656a4c1a014802fb052a94a079e9f60c1) - Add `reorderItems` mutation, add `reorder` button to order detail page. ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) -- [#2320](https://github.com/graphcommerce-org/graphcommerce/pull/2320) [`dc5e85c`](https://github.com/graphcommerce-org/graphcommerce/commit/dc5e85c95dad6145fde02a6e54f0fbd1cdfe9e3d) - Replace deprecated `updateCustomer` mutations with `updateCustomerV2`. ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) - - [#2366](https://github.com/graphcommerce-org/graphcommerce/pull/2366) [`3612c99`](https://github.com/graphcommerce-org/graphcommerce/commit/3612c994b80bb3b1bc02de10668f69a332402dc4) - Add `permissions` configuration to disable functionalities. - Added new `permissions` configuration for GraphCommerce - Added `permissions.cart`: `ENABLED` | `CUSTOMER_ONLY` | `DISABLED` - Added `permissions.checkout`: `ENABLED` | `CUSTOMER_ONLY` | `DISABLED` - - Adedd `permissions.customerAccount`: `ENABLED` | `DISABLE_REGISTRATION` | `DISABLE` ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) + - Added `permissions.customerAccount`: `ENABLED` | `DISABLE_REGISTRATION` | `DISABLE` ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) - [#2324](https://github.com/graphcommerce-org/graphcommerce/pull/2324) [`1c8b1e4`](https://github.com/graphcommerce-org/graphcommerce/commit/1c8b1e441ac44935bfd2215d62a71c02b3ba7e6f) - Magento 2.4.7: Implement the `contactUs` mutation, add contact us overlay. ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) @@ -37,6 +35,8 @@ - [#2301](https://github.com/graphcommerce-org/graphcommerce/pull/2301) [`13d0649`](https://github.com/graphcommerce-org/graphcommerce/commit/13d06498d121f93b52c25930e50aa3b0bd12a818) - Created a new `` component to make re-use easier. ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) +- [#2320](https://github.com/graphcommerce-org/graphcommerce/pull/2320) [`dc5e85c`](https://github.com/graphcommerce-org/graphcommerce/commit/dc5e85c95dad6145fde02a6e54f0fbd1cdfe9e3d) - Replace deprecated `updateCustomer` mutations with `updateCustomerV2`. ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) + ### Patch Changes - [#2392](https://github.com/graphcommerce-org/graphcommerce/pull/2392) [`1c0bde3`](https://github.com/graphcommerce-org/graphcommerce/commit/1c0bde328035de75b165c40e4a0fe80c7de2267b) - Redirect users to homepage after password reset as `router.back()` often returns an empty or invalid history state. ([@carlocarels90](https://github.com/carlocarels90)) diff --git a/packages/magento-graphql/CHANGELOG.md b/packages/magento-graphql/CHANGELOG.md index 380dcfdef0..897ded4eae 100644 --- a/packages/magento-graphql/CHANGELOG.md +++ b/packages/magento-graphql/CHANGELOG.md @@ -4,12 +4,16 @@ ### Major Changes -- [#2416](https://github.com/graphcommerce-org/graphcommerce/pull/2416) [`53af256`](https://github.com/graphcommerce-org/graphcommerce/commit/53af25671d3aca7f3daa2dd45ccd2237697e9254) - Magento 2.4.7: To make the `custom_attribute` field more valueable, we've added an `attribute`-field to the `AttributeValueInterface` to be able to retrieve attribute metadata from the value of an attribute. To be able to retieve the attribute label for an attribute value. ([@paales](https://github.com/paales)) - - [#2416](https://github.com/graphcommerce-org/graphcommerce/pull/2416) [`651eea0`](https://github.com/graphcommerce-org/graphcommerce/commit/651eea0bdda1ed0f46f4c73d7edf52c8c1da5b54) - Magento 2.4.7: Created a GraphQL query field for products: `custom_attribute(attribute_code: "attribute_code")` to retrieve attribute option value labels. This is different from the `custom_attributes` endpoint (note the plural) and allows for retrieving singular attribute values, like brand or any other select or multiselect attribute. ([@paales](https://github.com/paales)) +to retieve the attribute label for an attribute value. ([@paales](https://github.com/paales)) + - [#2299](https://github.com/graphcommerce-org/graphcommerce/pull/2299) [`c6ac45b`](https://github.com/graphcommerce-org/graphcommerce/commit/c6ac45b8ff41dcaa47f1e5d40d04e120990870aa) - Magento 2.4.7: Added a `magentoVersion` configuration value to be able to differentiate features based on the Magento version. GraphCommerce will automatically load any schema's that are defined in later version of Magento, allowing GraphCommerce to be forward compatible. See [schema-246](https://github.com/graphcommerce-org/graphcommerce/tree/canary/packages/magento-graphql/schema-246) and [schema-247](https://github.com/graphcommerce-org/graphcommerce/tree/canary/packages/magento-graphql/schema-247) directories for the changes made to the schema. This is only for compatibility and doesn't make the functionality work. ([@paales](https://github.com/paales)) +### Minor Changes + +- [#2416](https://github.com/graphcommerce-org/graphcommerce/pull/2416) [`53af256`](https://github.com/graphcommerce-org/graphcommerce/commit/53af25671d3aca7f3daa2dd45ccd2237697e9254) - Magento 2.4.7: To make the `custom_attribute` field more valueable, we've added an `attribute`-field to the `AttributeValueInterface` to be able to retrieve attribute metadata from the value of an attribute. To be able + ### Patch Changes - [#2204](https://github.com/graphcommerce-org/graphcommerce/pull/2204) [`42843eb`](https://github.com/graphcommerce-org/graphcommerce/commit/42843eb760f8301eb7901bb0d888c95792ff0b4b) - Add `X-Forwarded-For` header to mesh requests. ([@SumVur](https://github.com/SumVur)) diff --git a/packages/magento-newsletter/CHANGELOG.md b/packages/magento-newsletter/CHANGELOG.md index 23056170e3..19d46e856e 100644 --- a/packages/magento-newsletter/CHANGELOG.md +++ b/packages/magento-newsletter/CHANGELOG.md @@ -4,13 +4,14 @@ ### Major Changes -- [#2320](https://github.com/graphcommerce-org/graphcommerce/pull/2320) [`dc5e85c`](https://github.com/graphcommerce-org/graphcommerce/commit/dc5e85c95dad6145fde02a6e54f0fbd1cdfe9e3d) - Replace deprecated `updateCustomer` mutations with `updateCustomerV2`. ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) - - [#2234](https://github.com/graphcommerce-org/graphcommerce/pull/2234) [`530076e`](https://github.com/graphcommerce-org/graphcommerce/commit/530076e3664703cb8b577b7fcf1998a420819f60) - INP improvements: Moved all usages of `useFormPersist` to the `` component to prevent rerenders. ([@FrankHarland](https://github.com/FrankHarland)) ### Minor Changes -- [#2301](https://github.com/graphcommerce-org/graphcommerce/pull/2301) [`13d0649`](https://github.com/graphcommerce-org/graphcommerce/commit/13d06498d121f93b52c25930e50aa3b0bd12a818) - Created a new `` component to make re-use easier. ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) +- [#2301](https://github.com/graphcommerce-org/graphcommerce/pull/2301) [`13d0649`](https://github.com/graphcommerce-org/graphcommerce/commit/13d06498d121f93b52c25930e50aa3b0bd12a818) - Created a new ` +- [#2320](https://github.com/graphcommerce-org/graphcommerce/pull/2320) [`dc5e85c`](https://github.com/graphcommerce-org/graphcommerce/commit/dc5e85c95dad6145fde02a6e54f0fbd1cdfe9e3d) - Replace deprecated `updateCustomer` mutations with `updateCustomerV2`. ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) + +` component to make re-use easier. ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) ### Patch Changes diff --git a/packages/magento-product/components/ProductFiltersPro/ProductFiltersProCategorySection.tsx b/packages/magento-product/components/ProductFiltersPro/ProductFiltersProCategorySection.tsx index a7769282b4..80912c1d1a 100644 --- a/packages/magento-product/components/ProductFiltersPro/ProductFiltersProCategorySection.tsx +++ b/packages/magento-product/components/ProductFiltersPro/ProductFiltersProCategorySection.tsx @@ -7,8 +7,8 @@ import { ActionCardAccordion, ActionCardList, Button, - IconSvg, iconChevronLeft, + IconSvg, responsiveVal, } from '@graphcommerce/next-ui' import { Trans } from '@lingui/react' @@ -64,8 +64,8 @@ export function ProductFiltersProCategoryAccordion(props: ProductFiltersProCateg await onChange(item) }} > - {categoryTree.map((item) => { - const indent = item.isBack ? 0 : item.indent + 1 + {categoryTree.map(({ isBack, indent, ...item }) => { + const indentVal = isBack ? 0 : indent + 1 return ( - {item.isBack ? ( + {isBack ? ( {item.title} @@ -91,10 +91,10 @@ export function ProductFiltersProCategoryAccordion(props: ProductFiltersProCateg } sx={{ - '&.sizeSmall': { pl: responsiveVal(8 * indent, 12 * indent) }, - '&.sizeMedium': { pl: responsiveVal(10 * indent, 14 * indent) }, - '&.sizeLarge': { pl: responsiveVal(12 * indent, 16 * indent) }, - '&.sizeResponsive': { pl: responsiveVal(8 * indent, 16 * indent) }, + '&.sizeSmall': { pl: responsiveVal(8 * indentVal, 12 * indentVal) }, + '&.sizeMedium': { pl: responsiveVal(10 * indentVal, 14 * indentVal) }, + '&.sizeLarge': { pl: responsiveVal(12 * indentVal, 16 * indentVal) }, + '&.sizeResponsive': { pl: responsiveVal(8 * indentVal, 16 * indentVal) }, '& .ActionCard-title.selected': { fontWeight: 'bold' }, }} /> diff --git a/packages/magento-search-overlay/plugins/SearchOverlayFieldPlugin.tsx b/packages/magento-search-overlay/plugins/SearchOverlayFieldPlugin.tsx index 0ccad0b3c3..761ceeeeff 100644 --- a/packages/magento-search-overlay/plugins/SearchOverlayFieldPlugin.tsx +++ b/packages/magento-search-overlay/plugins/SearchOverlayFieldPlugin.tsx @@ -18,9 +18,12 @@ export function SearchField( if (isSearchPage) return if (!searchField) { - throw new Error( - ' required when rendering the SearchOverlay', - ) + if (process.env.NODE_ENV !== 'production') { + throw new Error( + ' required when rendering the SearchOverlay', + ) + } + return null } return ( diff --git a/packages/next-ui/CHANGELOG.md b/packages/next-ui/CHANGELOG.md index 96ad7a68fc..93d2b4582a 100644 --- a/packages/next-ui/CHANGELOG.md +++ b/packages/next-ui/CHANGELOG.md @@ -4,13 +4,6 @@ ### Major Changes -- [#2216](https://github.com/graphcommerce-org/graphcommerce/pull/2216) [`74eb239`](https://github.com/graphcommerce-org/graphcommerce/commit/74eb2393a64988649178d59f53b33d41fecdd769) - Added Intl components, deprecated `useNumberFormat` and `useDateTimeFormatter`, and replaced usage sites. New components and hooks: - - - `` and `useIntlDisplayNames` - - ``, ``, `` and `useIntlDateTimeFormat` - - `` and `useIntlListFormat` - - ``, ``, ``, `` and `useIntlNumberFormat` ([@paales](https://github.com/paales)) - - [#2405](https://github.com/graphcommerce-org/graphcommerce/pull/2405) [`39a2df4`](https://github.com/graphcommerce-org/graphcommerce/commit/39a2df46c26be390cd8d65200ab347e12b217f9e) - Added `` Component: Render (and hydrate) a Component based on a media query given. ```tsx @@ -40,6 +33,13 @@ ### Minor Changes +- [#2216](https://github.com/graphcommerce-org/graphcommerce/pull/2216) [`74eb239`](https://github.com/graphcommerce-org/graphcommerce/commit/74eb2393a64988649178d59f53b33d41fecdd769) - Added Intl components, deprecated `useNumberFormat` and `useDateTimeFormatter`, and replaced usage sites. New components and hooks: + + - `` and `useIntlDisplayNames` + - ``, ``, `` and `useIntlDateTimeFormat` + - `` and `useIntlListFormat` + - ``, ``, ``, `` and `useIntlNumberFormat` ([@paales](https://github.com/paales)) + - [#2274](https://github.com/graphcommerce-org/graphcommerce/pull/2274) [`4a24813`](https://github.com/graphcommerce-org/graphcommerce/commit/4a248130041484833768fe6018f91d05a59522de) - Add props to `` to disable dark/light mode or to change the default ssr mode. Save user chosen mode in localStorage. ([@Giovanni-Schroevers](https://github.com/Giovanni-Schroevers)) - [#2348](https://github.com/graphcommerce-org/graphcommerce/pull/2348) [`61b66ef`](https://github.com/graphcommerce-org/graphcommerce/commit/61b66efeab9b377c8daa322015d4b55cdf3db4c1) - Added a new `` component to be used in combination with the `` component. ([@JoshuaS98](https://github.com/JoshuaS98)) diff --git a/packagesDev/next-config/dist/generated/config.js b/packagesDev/next-config/dist/generated/config.js index 74cee66360..870b7349be 100644 --- a/packagesDev/next-config/dist/generated/config.js +++ b/packagesDev/next-config/dist/generated/config.js @@ -1,135 +1,215 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.WebsitePermissionsSchema = exports.SidebarGalleryPaginationVariantSchema = exports.ProductFiltersLayoutSchema = exports.PaginationVariantSchema = exports.CustomerAccountPermissionsSchema = exports.ContainerSizingSchema = exports.CompareVariantSchema = exports.CartPermissionsSchema = exports.definedNonNullAnySchema = exports.isDefinedNonNullAny = void 0; -exports.DatalayerConfigSchema = DatalayerConfigSchema; -exports.GraphCommerceConfigSchema = GraphCommerceConfigSchema; -exports.GraphCommerceDebugConfigSchema = GraphCommerceDebugConfigSchema; -exports.GraphCommerceGooglePlaystoreConfigSchema = GraphCommerceGooglePlaystoreConfigSchema; -exports.GraphCommercePermissionsSchema = GraphCommercePermissionsSchema; -exports.GraphCommerceStorefrontConfigSchema = GraphCommerceStorefrontConfigSchema; -exports.MagentoConfigurableVariantValuesSchema = MagentoConfigurableVariantValuesSchema; -exports.RecentlyViewedProductsConfigSchema = RecentlyViewedProductsConfigSchema; -exports.SidebarGalleryConfigSchema = SidebarGalleryConfigSchema; -/* eslint-disable */ -const zod_1 = require("zod"); -const isDefinedNonNullAny = (v) => v !== undefined && v !== null; -exports.isDefinedNonNullAny = isDefinedNonNullAny; -exports.definedNonNullAnySchema = zod_1.z.any().refine((v) => (0, exports.isDefinedNonNullAny)(v)); -exports.CartPermissionsSchema = zod_1.z.enum(['CUSTOMER_ONLY', 'DISABLED', 'ENABLED']); -exports.CompareVariantSchema = zod_1.z.enum(['CHECKBOX', 'ICON']); -exports.ContainerSizingSchema = zod_1.z.enum(['BREAKPOINT', 'FULL_WIDTH']); -exports.CustomerAccountPermissionsSchema = zod_1.z.enum(['DISABLED', 'DISABLE_REGISTRATION', 'ENABLED']); -exports.PaginationVariantSchema = zod_1.z.enum(['COMPACT', 'EXTENDED']); -exports.ProductFiltersLayoutSchema = zod_1.z.enum(['DEFAULT', 'SIDEBAR']); -exports.SidebarGalleryPaginationVariantSchema = zod_1.z.enum(['DOTS', 'THUMBNAILS_BOTTOM']); -exports.WebsitePermissionsSchema = zod_1.z.enum(['ENABLED']); +/* eslint-disable */ "use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +function _export(target, all) { + for(var name in all)Object.defineProperty(target, name, { + enumerable: true, + get: all[name] + }); +} +_export(exports, { + CartPermissionsSchema: function() { + return CartPermissionsSchema; + }, + CompareVariantSchema: function() { + return CompareVariantSchema; + }, + ContainerSizingSchema: function() { + return ContainerSizingSchema; + }, + CustomerAccountPermissionsSchema: function() { + return CustomerAccountPermissionsSchema; + }, + DatalayerConfigSchema: function() { + return DatalayerConfigSchema; + }, + GraphCommerceConfigSchema: function() { + return GraphCommerceConfigSchema; + }, + GraphCommerceDebugConfigSchema: function() { + return GraphCommerceDebugConfigSchema; + }, + GraphCommerceGooglePlaystoreConfigSchema: function() { + return GraphCommerceGooglePlaystoreConfigSchema; + }, + GraphCommercePermissionsSchema: function() { + return GraphCommercePermissionsSchema; + }, + GraphCommerceStorefrontConfigSchema: function() { + return GraphCommerceStorefrontConfigSchema; + }, + MagentoConfigurableVariantValuesSchema: function() { + return MagentoConfigurableVariantValuesSchema; + }, + PaginationVariantSchema: function() { + return PaginationVariantSchema; + }, + ProductFiltersLayoutSchema: function() { + return ProductFiltersLayoutSchema; + }, + RecentlyViewedProductsConfigSchema: function() { + return RecentlyViewedProductsConfigSchema; + }, + SidebarGalleryConfigSchema: function() { + return SidebarGalleryConfigSchema; + }, + SidebarGalleryPaginationVariantSchema: function() { + return SidebarGalleryPaginationVariantSchema; + }, + WebsitePermissionsSchema: function() { + return WebsitePermissionsSchema; + }, + definedNonNullAnySchema: function() { + return definedNonNullAnySchema; + }, + isDefinedNonNullAny: function() { + return isDefinedNonNullAny; + } +}); +const _zod = require("zod"); +const isDefinedNonNullAny = (v)=>v !== undefined && v !== null; +const definedNonNullAnySchema = _zod.z.any().refine((v)=>isDefinedNonNullAny(v)); +const CartPermissionsSchema = _zod.z.enum([ + 'CUSTOMER_ONLY', + 'DISABLED', + 'ENABLED' +]); +const CompareVariantSchema = _zod.z.enum([ + 'CHECKBOX', + 'ICON' +]); +const ContainerSizingSchema = _zod.z.enum([ + 'BREAKPOINT', + 'FULL_WIDTH' +]); +const CustomerAccountPermissionsSchema = _zod.z.enum([ + 'DISABLED', + 'DISABLE_REGISTRATION', + 'ENABLED' +]); +const PaginationVariantSchema = _zod.z.enum([ + 'COMPACT', + 'EXTENDED' +]); +const ProductFiltersLayoutSchema = _zod.z.enum([ + 'DEFAULT', + 'SIDEBAR' +]); +const SidebarGalleryPaginationVariantSchema = _zod.z.enum([ + 'DOTS', + 'THUMBNAILS_BOTTOM' +]); +const WebsitePermissionsSchema = _zod.z.enum([ + 'ENABLED' +]); function DatalayerConfigSchema() { - return zod_1.z.object({ - coreWebVitals: zod_1.z.boolean().nullish() + return _zod.z.object({ + coreWebVitals: _zod.z.boolean().nullish() }); } function GraphCommerceConfigSchema() { - return zod_1.z.object({ - breadcrumbs: zod_1.z.boolean().default(false).nullish(), - canonicalBaseUrl: zod_1.z.string().min(1), - cartDisplayPricesInclTax: zod_1.z.boolean().nullish(), - compare: zod_1.z.boolean().nullish(), - compareVariant: exports.CompareVariantSchema.default("ICON").nullish(), - configurableVariantForSimple: zod_1.z.boolean().default(false).nullish(), + return _zod.z.object({ + breadcrumbs: _zod.z.boolean().default(false).nullish(), + canonicalBaseUrl: _zod.z.string().min(1), + cartDisplayPricesInclTax: _zod.z.boolean().nullish(), + compare: _zod.z.boolean().nullish(), + compareVariant: CompareVariantSchema.default("ICON").nullish(), + configurableVariantForSimple: _zod.z.boolean().default(false).nullish(), configurableVariantValues: MagentoConfigurableVariantValuesSchema().nullish(), - containerSizingContent: exports.ContainerSizingSchema.default("FULL_WIDTH").nullish(), - containerSizingShell: exports.ContainerSizingSchema.default("FULL_WIDTH").nullish(), - crossSellsHideCartItems: zod_1.z.boolean().default(false).nullish(), - crossSellsRedirectItems: zod_1.z.boolean().default(false).nullish(), - customerAddressNoteEnable: zod_1.z.boolean().nullish(), - customerCompanyFieldsEnable: zod_1.z.boolean().nullish(), - customerDeleteEnabled: zod_1.z.boolean().nullish(), - customerXMagentoCacheIdDisable: zod_1.z.boolean().nullish(), + containerSizingContent: ContainerSizingSchema.default("FULL_WIDTH").nullish(), + containerSizingShell: ContainerSizingSchema.default("FULL_WIDTH").nullish(), + crossSellsHideCartItems: _zod.z.boolean().default(false).nullish(), + crossSellsRedirectItems: _zod.z.boolean().default(false).nullish(), + customerAddressNoteEnable: _zod.z.boolean().nullish(), + customerCompanyFieldsEnable: _zod.z.boolean().nullish(), + customerDeleteEnabled: _zod.z.boolean().nullish(), + customerXMagentoCacheIdDisable: _zod.z.boolean().nullish(), dataLayer: DatalayerConfigSchema().nullish(), debug: GraphCommerceDebugConfigSchema().nullish(), - demoMode: zod_1.z.boolean().default(true).nullish(), - enableGuestCheckoutLogin: zod_1.z.boolean().nullish(), - googleAnalyticsId: zod_1.z.string().nullish(), + demoMode: _zod.z.boolean().default(true).nullish(), + enableGuestCheckoutLogin: _zod.z.boolean().nullish(), + googleAnalyticsId: _zod.z.string().nullish(), googlePlaystore: GraphCommerceGooglePlaystoreConfigSchema().nullish(), - googleRecaptchaKey: zod_1.z.string().nullish(), - googleTagmanagerId: zod_1.z.string().nullish(), - hygraphEndpoint: zod_1.z.string().min(1), - hygraphManagementApi: zod_1.z.string().nullish(), - hygraphProjectId: zod_1.z.string().nullish(), - hygraphWriteAccessToken: zod_1.z.string().nullish(), - limitSsg: zod_1.z.boolean().nullish(), - magentoEndpoint: zod_1.z.string().min(1), - magentoVersion: zod_1.z.number(), + googleRecaptchaKey: _zod.z.string().nullish(), + googleTagmanagerId: _zod.z.string().nullish(), + hygraphEndpoint: _zod.z.string().min(1), + hygraphManagementApi: _zod.z.string().nullish(), + hygraphProjectId: _zod.z.string().nullish(), + hygraphWriteAccessToken: _zod.z.string().nullish(), + limitSsg: _zod.z.boolean().nullish(), + magentoEndpoint: _zod.z.string().min(1), + magentoVersion: _zod.z.number(), permissions: GraphCommercePermissionsSchema().nullish(), - previewSecret: zod_1.z.string().nullish(), - productFiltersLayout: exports.ProductFiltersLayoutSchema.default("DEFAULT").nullish(), - productFiltersPro: zod_1.z.boolean().nullish(), - productListPaginationVariant: exports.PaginationVariantSchema.default("COMPACT").nullish(), - productRoute: zod_1.z.string().nullish(), + previewSecret: _zod.z.string().nullish(), + productFiltersLayout: ProductFiltersLayoutSchema.default("DEFAULT").nullish(), + productFiltersPro: _zod.z.boolean().nullish(), + productListPaginationVariant: PaginationVariantSchema.default("COMPACT").nullish(), + productRoute: _zod.z.string().nullish(), recentlyViewedProducts: RecentlyViewedProductsConfigSchema().nullish(), - robotsAllow: zod_1.z.boolean().nullish(), + robotsAllow: _zod.z.boolean().nullish(), sidebarGallery: SidebarGalleryConfigSchema().nullish(), - storefront: zod_1.z.array(GraphCommerceStorefrontConfigSchema()), - wishlistHideForGuests: zod_1.z.boolean().nullish(), - wishlistShowFeedbackMessage: zod_1.z.boolean().nullish() + storefront: _zod.z.array(GraphCommerceStorefrontConfigSchema()), + wishlistHideForGuests: _zod.z.boolean().nullish(), + wishlistShowFeedbackMessage: _zod.z.boolean().nullish() }); } function GraphCommerceDebugConfigSchema() { - return zod_1.z.object({ - cart: zod_1.z.boolean().nullish(), - pluginStatus: zod_1.z.boolean().nullish(), - sessions: zod_1.z.boolean().nullish(), - webpackCircularDependencyPlugin: zod_1.z.boolean().nullish(), - webpackDuplicatesPlugin: zod_1.z.boolean().nullish() + return _zod.z.object({ + cart: _zod.z.boolean().nullish(), + pluginStatus: _zod.z.boolean().nullish(), + sessions: _zod.z.boolean().nullish(), + webpackCircularDependencyPlugin: _zod.z.boolean().nullish(), + webpackDuplicatesPlugin: _zod.z.boolean().nullish() }); } function GraphCommerceGooglePlaystoreConfigSchema() { - return zod_1.z.object({ - packageName: zod_1.z.string().min(1), - sha256CertificateFingerprint: zod_1.z.string().min(1) + return _zod.z.object({ + packageName: _zod.z.string().min(1), + sha256CertificateFingerprint: _zod.z.string().min(1) }); } function GraphCommercePermissionsSchema() { - return zod_1.z.object({ - cart: exports.CartPermissionsSchema.nullish(), - checkout: exports.CartPermissionsSchema.nullish(), - customerAccount: exports.CustomerAccountPermissionsSchema.nullish(), - website: exports.WebsitePermissionsSchema.nullish() + return _zod.z.object({ + cart: CartPermissionsSchema.nullish(), + checkout: CartPermissionsSchema.nullish(), + customerAccount: CustomerAccountPermissionsSchema.nullish(), + website: WebsitePermissionsSchema.nullish() }); } function GraphCommerceStorefrontConfigSchema() { - return zod_1.z.object({ - canonicalBaseUrl: zod_1.z.string().nullish(), - cartDisplayPricesInclTax: zod_1.z.boolean().nullish(), - customerCompanyFieldsEnable: zod_1.z.boolean().nullish(), - defaultLocale: zod_1.z.boolean().nullish(), - domain: zod_1.z.string().nullish(), - googleAnalyticsId: zod_1.z.string().nullish(), - googleRecaptchaKey: zod_1.z.string().nullish(), - googleTagmanagerId: zod_1.z.string().nullish(), - hygraphLocales: zod_1.z.array(zod_1.z.string().min(1)).nullish(), - linguiLocale: zod_1.z.string().nullish(), - locale: zod_1.z.string().min(1), - magentoStoreCode: zod_1.z.string().min(1), + return _zod.z.object({ + canonicalBaseUrl: _zod.z.string().nullish(), + cartDisplayPricesInclTax: _zod.z.boolean().nullish(), + customerCompanyFieldsEnable: _zod.z.boolean().nullish(), + defaultLocale: _zod.z.boolean().nullish(), + domain: _zod.z.string().nullish(), + googleAnalyticsId: _zod.z.string().nullish(), + googleRecaptchaKey: _zod.z.string().nullish(), + googleTagmanagerId: _zod.z.string().nullish(), + hygraphLocales: _zod.z.array(_zod.z.string().min(1)).nullish(), + linguiLocale: _zod.z.string().nullish(), + locale: _zod.z.string().min(1), + magentoStoreCode: _zod.z.string().min(1), permissions: GraphCommercePermissionsSchema().nullish(), - robotsAllow: zod_1.z.boolean().nullish() + robotsAllow: _zod.z.boolean().nullish() }); } function MagentoConfigurableVariantValuesSchema() { - return zod_1.z.object({ - content: zod_1.z.boolean().nullish(), - gallery: zod_1.z.boolean().nullish(), - url: zod_1.z.boolean().nullish() + return _zod.z.object({ + content: _zod.z.boolean().nullish(), + gallery: _zod.z.boolean().nullish(), + url: _zod.z.boolean().nullish() }); } function RecentlyViewedProductsConfigSchema() { - return zod_1.z.object({ - enabled: zod_1.z.boolean().nullish(), - maxCount: zod_1.z.number().nullish() + return _zod.z.object({ + enabled: _zod.z.boolean().nullish(), + maxCount: _zod.z.number().nullish() }); } function SidebarGalleryConfigSchema() { - return zod_1.z.object({ - paginationVariant: exports.SidebarGalleryPaginationVariantSchema.nullish() + return _zod.z.object({ + paginationVariant: SidebarGalleryPaginationVariantSchema.nullish() }); } diff --git a/packagesDev/next-config/dist/withGraphCommerce.js b/packagesDev/next-config/dist/withGraphCommerce.js index a0fc3fda36..53f4b27c69 100644 --- a/packagesDev/next-config/dist/withGraphCommerce.js +++ b/packagesDev/next-config/dist/withGraphCommerce.js @@ -57,7 +57,7 @@ function withGraphCommerce(nextConfig, cwd = process.cwd()) { ...nextConfig.images, remotePatterns: [ { hostname: new URL(graphcommerceConfig.magentoEndpoint).hostname }, - { hostname: 'media.graphassets.com' }, + { hostname: '**.graphassets.com' }, { hostname: '*.graphcommerce.org' }, ...(nextConfig.images?.remotePatterns ?? []), ], diff --git a/packagesDev/next-config/src/withGraphCommerce.ts b/packagesDev/next-config/src/withGraphCommerce.ts index e0c1ee6968..51e6524f54 100644 --- a/packagesDev/next-config/src/withGraphCommerce.ts +++ b/packagesDev/next-config/src/withGraphCommerce.ts @@ -71,7 +71,7 @@ export function withGraphCommerce(nextConfig: NextConfig, cwd: string = process. ...nextConfig.images, remotePatterns: [ { hostname: new URL(graphcommerceConfig.magentoEndpoint).hostname }, - { hostname: 'media.graphassets.com' }, + { hostname: '**.graphassets.com' }, { hostname: '*.graphcommerce.org' }, ...(nextConfig.images?.remotePatterns ?? []), ],