Skip to content

Changelog - Hyvä Checkout

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

Unreleased

1.1.5 - 2023-09-27

Added

  • Allow disabling form modifiers using a null argument item

Form modifiers are now filtered to allow for the disabling of existing modifiers within di.xml.

For more information, please refer to issue #176.

Many thanks to Jeroen Balk (Adwise) for the contribution!

  • Allow street field labels to be configured per store

For more information, please refer to merge request #170

Many thanks to Ronald Bethlehem (Freelancer) for the contribution!

  • Fields now have a hasAttributesStartingWith method

You can now check if a field possesses an attribute that begins with a specific string. This feature can be useful for determining whether a particular setting needs to be configured within a Form Modifier callback.

For more information, please refer to issue #173

Changed

  • Removed Checkmo payment method content margin on empty context

For more information, please refer to issue #165.

  • Fixed exception on empty terms and condition message

When the terms and conditions are configured to display a message, but no message is provided, the checkout used to raise an exception. This issue has been resolved by requiring the config field and returning an empty string for backward compatibility.

For more information, please refer to issue #171.

Many thanks to Jeroen Balk (Adwise) for the contribution!

  • Upgrade Magewire from 1.10.7 to 1.10.8

For more information, please refer to merge request #184.

  • Call loader.stop with dummy component to avoid error

For more information, please refer to merge request #180.

  • Billing address shows email field only for virtual quotes

In the past, guest users were presented with an email address form field in the shipping and billing address.
This email address was also used as the order contact email. However, this has since changed, with the shipping email address now serving as the primary contact email for orders. The email field for billing addresses will now only be displayed for quotes containing only virtual items.

For more information, please refer to issue #164

Many thanks to Rocky Notten (Wickey) for the contribution!

Removed

  • Removed an unused data argument from the frontend payment.placeOrder() method

For more information, please refer to issue #118.

Many thanks to Andrzej Wiaderny (Hatimeria) for the contribution!

  • Removed dependency on default hyva-theme styles in favor of default tailwindcss classes

This is a backward incompatible change. If you rely on a customized text-primary class for the breadcrumb text color, be aware that it will change to text-gray-800 after the upgrade. To revert the change, customize the css in your theme to apply text-primary again to the selector css #hyva-checkout-main .breadcrumbs .item.

For more information, please refer to issue #57.

1.1.4 - 2023-08-29

Added

  • Added built-with HTTP response header to hyva checkout routes

We've added an x-built-with: Hyva Checkout header to Hyvä Checkout pages.

For more information, please refer to merge request #164.

Changed

  • Improve default checkout header

Previously the checkout used the checkout page layout.
This was changed to 1column to provide better styling and improved compatibility with the Hyvä theme out-of-the-box.
To remove the top menu, search box, and customer account menu, a new header template was introduced.

This is a backward-compatibility breaking change. Please refer to the 1.1.4 upgrade notes for more information on how to upgrade.

For even more details, please refer to issue #149 and merge request #166.

  • Fix critical error when customer enters percent sign in order comment

Previously order comments containing a percent symbol broke rendering in the frontend and admin area.

For more information, please refer to merge request #163.

Many thanks to Jeroen Noten (iO Digital) for the contribution!

  • Immediately clear Magewire validation errors on user input

Previously the error message remained visible until after the field lost focus. Now the message is hidden as soon as a user changes the value.

For more information, please refer to issue #162.

Removed

  • Nothing removed

1.1.3 - 2023-08-15

Added

  • Nothing added.

Changed

  • Apply sales rules Free shipping, table-rate etc price adjustments to shipping method on address change

Please refer to issue #131 for more information.

Many thanks to Justin van Elst (Publicus) for the contribution!

  • Check Country and Region fields are present before applying modifications

Hyva\Checkout\Model\Form\EntityFormModifier\WithRegionModifier attempted modifications on the region field without verifying the presence of both the essential country_id and region fields on the form. This led to issues when the fields were removed. Now they can be removed safely from address forms.

Please refer to merge request #157 for more information.

  • Showing shipping method prices incl. or excl. tax according to configuration

Please refer to issue #133 for more information.

Many thanks to Justin van Elst (Publicus) for the contribution!

  • Billing address email not captured when shipping email changed

When a guest customer enters their email address and the shipping address is the same as the billing address, the email is processed successfully. However, when a customer then modifies the shipping email address, the changed email was not set for the billing address.

Please refer to issue #140 for more information.

Many thanks to Ameer Potrik for the contribution!

  • Form field method getPreviousValue() improved

In the 1.1.2 release, we introduced a new form field feature to get the previous value. This feature is handy during form updates to check if a specific field was changed. We've since noticed some flaws in the flow, which are now improved. Also, we've added form:boot and a form:{form_namespace}:boot modification hooks to apply changes on both preceding and subsequent form boot.

Please refer to merge request #155 for more information.

  • Select input renderer template now uses $key instead of $option

The template for the form field select input has been enhanced. It now uses the $key variable for all string-type options. This enhancement provides developers with a more effective approach to associating values with options, especially in cases where the $option variable is dynamic or subject to change.

Please refer to merge request #115 for more information.

Removed

  • Nothing removed.

1.1.2 - 2023-08-09

Added

  • New form modification hooks form:updated & form:field:updated

Two new modification hooks empower you to make alterations to forms and their fields if the modification is not specific to a single field being updated. Previously this was achieved using distinct field hooks.

Please refer to merge request #145 for more information.

  • Add field method AbstractEntityField::getPreviousValue()

Performing comparisons to the previous field value using a modification hook proved to be challenging, often resulting in situations where an if-statement within a form modification lacked certainty about whether a particular change should be applied.

Please refer to merge request #145 for more information.

Changed

  • Upgraded Magewire dependency from v1.10.5 to v1.10.7

Please refer to merge request #145 for more information.

  • Creating typed input fields no longer requires an input data argument

When generating a field through form modifiers, it was necessary to include an argument containing an input key with the corresponding input type. This approach could be perplexing, given that the method inherently demanded the $type to be specified.
With this change improvement, the data type is automatically assigned if it is not specified.

Please refer to merge request #145 for more information.

  • Navigating backward via breadcrumbs bugfix

The default navigation button allowed backward navigation without validation. However, navigating backward using the breadcrumbs, the checkout process triggered validation, potentially preventing stepping backward to a previous step. Now the validation is bypassed when navigating to a previous step.

Please refer to merge request #140 for more information.

Many thanks to Marcus Venghaus for the contribution!

  • Moving wire:key from the field to its wrapper element

Previously, Magewire faced issues in tracking changes made by form modifiers when the wire:key attribute was assigned to the innermost element of a field renderer template. To address this, the key is now placed on a wrapper element.
By relocating the key, Magewire is able to accurately understand where to perform DOM morphing. This change resolves a scenario where a text input was transformed into a select input during subsequent requests.

Please refer to merge request #143 for more information.

  • Form field mutation check bugfix

Preiously checking for a difference between the current address values and the updated ones would not work with null values.

Please refer to merge request #144 for more information.

  • Checkout JS API: Fixed a missing config object on validation exception

Please refer to merge request #147 for more information.

  • Checkout JS API: Now works with the Magewire loader plugin

The events loader:start and loader:stop no longer are dispatched to start and stop the loader.
Instead, methods on the Magewire loader are called directly. The events are still dispatched, but now from within Magewire.

Please refer to merge request #148 for more information.

Removed

  • Nothing removed.

1.1.1 - 2023-07-25

Added

  • Form field checkbox type template

When creating and adding a form field of type checkbox, the checkbox field rendering view was missing. Now, a dedicated checkbox template is available with the option to also render option relatives.

Please refer to issue #144 for more information.

Many thanks to Filipe Bicho (Refusion) for the contribution!

  • Emit event Address Submitted now carrying the save result

Previously, you could listen for a shipping_address_submitted or billing_address_submitted emit event without knowing if the save was successful or returned false.
Now, an emit carries the save result giving developers the option to change course based on it.

Please refer to issue #139 for more information.

  • Main component redirect template on order place completion

There are situations where the Main component is trying to rerender itself despite the quote now being an order.
Because of not having the quote object, the component relying on it would possibly break. Therefore, when the PlaceOrderService finishes the order with a redirect, the main component will render with a template notifying the customer about the redirect.

Please refer to issue #122 for more information.

Many thanks to Francesco Marangi (Y1) for the contribution!

  • Form element label renderer

Previously each element renderer needed to implement its own hard-coded label HTML creating inconsistency, bad maintainability and not being able to swap a label HTML without rewriting a form element renderer. Therefore a label template has been introduced used as the default element label renderer.

Please refer to issue #142 for more information.

Many thanks to Tjitse Efdé (Vendic) for the contribution!

  • Shipping- & Billing street grid renderer (optional)

Depending on the street width configuration and checkout developer settings, a new street field renderer will show street fields in a two-column grid instead of the default, where ancestor relatives are rendered underneath each other.

Please refer to merge request #133 for more information.

  • Added missing en_US translations

Please refer to issue #117 for more information.

Changed

  • Fix PSR-autoload standard issue

The class Hyva\Checkout\Model\Form\EntityField\Primary has been renamed to Hyva\Checkout\Model\Form\EntityField\PrimaryKey which matches the file name.

Please refer to issue #141 for more information.

Many thanks to Gérald CANN (Sdkweb) for the contribution!

  • Improved default styling consistency

The default checkout(s) now are closer to the Hyvä Theme styling having a more consistent look and feel over the entire store.

Please refer to issue #116 for more information.

Many thanks to Sean van Zuidam (Siteation) for the contribution!

  • Fix to show a different address book view for billing addresses

Previously the billing address book view listened for the shipping address book view setting making it not possible to define a different look and feel. This has been fixed and the view now uses its own config setting.

Please refer to issue #115 for more information.

  • Creating a form field without a predefined class

Previously creating a form field without a predefined class in di.xml was not possible. Now, a form field can be created by giving it a name, some arguments, and an input type resulting in a field using a default implementation of Hyva\Checkout\Model\Form\EntityField\AbstractEntityField.

Please refer to issue #143 for more information.

Many thanks to Thijs de Witt (Trinos) for the contribution!

Removed

  • Nothing removed.

1.1.0 - 2023-07-10

Added

  • Form modification listener API

This new API allows for a wide range of customizations to checkout address forms.
It allows callbacks to be triggered when form field values are changed, and modify the form based on it.

Please refer to the form customization documentation for more information.

  • Grouping of form fields

A form field can now be assigned as related to another field.
This causes the fields to be rendered together, as well as the values to be combined in an array (for example, the street fields use this).

Please refer to the form customization documentation for more information.

  • New checkout emit messages

A couple of new checkout emit messages have been added.

Please refer to the form customization documentation for more information.

Changed

  • Fix checkout for new customers with downloadable product or virtual product

Previously this resulted in a stack-trace.

For more information, please refer to issue #48.

Many thanks to Dung La (JaJuMa) for the contribution!

  • Fix unchecking "My billing and shipping address are the same"

Previously this caused an address to be rendered as only ,,,,,,,.

For more information, please refer to issue #130.

  • Require Magewire 1.10.5

This change requires the latest version of Magewire.

For more information, please refer to merge request #116.

  • Add referer information to log-in and create an account links

This allows customers to be correctly redirected back to the checkout after logging into their account.

For more information, please refer to merge request #117.

  • Fix typo in CSS class

In the template src/view/frontend/templates/breadcrumbs.phtml, the CSS class nav-braincrumbs now is correctly spelled nav-breadcrumbs.

For more information, please refer to merge request #117.

Removed

  • Removed classes, interfaces, methods, and properties

A number of classes, interfaces, methods, and properties were removed.
However, we do not expect this to impact any customizations of Hyvä Checkout.

Removed classes:

- `\Hyva\Checkout\Model\Form\EntityField\Renderer\Regular` (replaced by `\Hyva\Checkout\Model\Form\EntityFormElement\Renderer\Element`)
- `\Hyva\Checkout\Model\Form\EntityFormFieldsFilterInterface` (no replacement as it was never used)

The removed properties and methods are not listed here.
Please refer to the backward compatibility breaking changes in 1.1.0 document for details.

1.0.7 - 2023-06-19

Added

  • Nothing added.

Changed

  • Require Magewire 1.10.4

From this release forward, Hyvä Checkout releases will depend on a specific Magewire version.
This will improve reliability and make future upgrades less complex.

For more information, please refer to issue #125

  • [Bugfix] Add missing resolver argument in di.xml to process hyva_checkout.xml

This change fixes a regeression introduced in release 1.0.6.
The issue caused additional hyva_checkout.xml files not to be evaluated.

For more information, please refer to issue #126

  • [Bugfix] Add missing check if nested JS object property is set

The missing check could result in an error Cannot read property of undefined (reading 'id').

For more information, please refer to issue #123

Removed

  • Nothing removed.

1.0.6 - 2023-06-09

Added

  • Added Customer Address selection list view

The default address selection with grid tiles was not ideal for stores where customers tend to have a lot of records in their address book.
The list view address selection can be configured for a checkout in the system configuration at Components > Shipping and Components > Billing.

For more information, please refer to issue #64 and the referenced merge requests.

Changed

  • Display shipping totals in checkout with VAT

Previously, the shipping totals were missing VAT if configured.

For more information, please refer to issue #56.

Removed

  • Nothing removed.

1.0.5 - 2023-06-01

Added

  • Allow saving of billing address to customer address book

Previously this was only possible for shipping addresses.

Please refer to issue #83 for more information.

  • "Weee tax" order totals renderer

Please refer to issue #100 for more information.

  • Option to add a subtitle and SVG logo icon to a Payment method

It is now possible to add additional display information to payment methods using layout XML as "metadata".
For now, a subtitle and a payment provider logo SVG icon can be added. Additional properties might be added in the future.

Please refer to issue #98 for more information.

  • Navigation button now can have nested elements

This feature allows adding DOM elements, for example, SVGs, inside the navigation buttons.

Please refer to issue #95 for more information.

  • Enable the Hyvä Checkout cache by default

After running bin/magento setup:upgrade for the first time after installing the Hyvä Checkout 1.0.5 or newer, the checkout cache will be automatically enabled.

Please refer to issue #91 for more information.

Changed

  • Fix phrase "No shipping address set." to "No shipping method selected." when no shipping method is selected

Please refer to issue #25 for more information.

  • Improve Discount Code component default styling

We have tried to make the coupon code component less prominent, in other words, less visibly apparent. Both the field and the apply button are now responsive to smaller viewports sizes.

Please refer to issue #101 for more information.

  • 2- and 3-columns checkout layout breakpoint revision

Previously, the 2- and 3-column layout would break on medium-sized screens, but now it has been changed to break on large screens instead. This change ensures better visibility on smaller screen sizes, such as mobile or tablet devices.

Please refer to issue #101 for more information.

  • Default email sort order for shipping and billing form fields

The email field will now have a default sort order to be rendered as the first field for both the shipping and billing address forms.

Please refer to issue #109 for more information.

  • Fixed an issue where it would not render a custom cart item type renderer when it was set via layout xml

Please refer to issue #110 for more information.

Removed

  • Nothing was removed.

1.0.4 - 2023-05-17

Release 1.0.1 included a default totals renderer, which caused a lot of issues. We announced in the Slack support channel that the default totals renderer will be removed again in the next release. Now every total that needs to be rendered must be declared in layout XML as a child block of price-summary.total-segments. The block alias must match the total code, as in as="discount".

Added

  • Address & Country change listeners for the payment method list

By default, when an address is changed or a country is selected, the payment methods were not refreshed, potentially leading to situations where payment methods needed to be displayed or hidden based on changes in the shipping or billing address.

Please refer to merge request #55 for more information.

Many thanks to Francesco Marangi (Y1) for the contribution!

  • Add checkout page type as widget instance target location

Please refer to issue #89 for more information.

  • Narrowed down the Composer PHP requirement between 7.4 and 8.3

Please refer to issue #88 for more information.

  • Checkout (Magewire) Component Resolver sort order

You now possess the capability to decide whether your custom checkout component resolver should execute before or after the core checkout component resolver. Previously, achieving this required utilizing a negative sort order in the DI.xml file. However, you can now employ positive numeric values to precisely specify the desired position.

Please refer to merge request #74 for more information.

Changed

  • Fix scrolling in terms agreement dialog when the content exceeds page height

On certain screen sizes, it was not possible to scroll within a terms agreement dialog when it was opened with a context that exceeded the height of the screen. As a result, customers were unable to close the dialog since they were unable to scroll to the bottom.

Please refer to merge request #66 for more information.

Many thanks to Mitchel van Kleef (Made by Mouses) for the contribution!

  • Fix for using the undeclared function 'array_first'

Please refer to merge request #93 for more information.

Many thanks to Adam Crossland (ZERO-1) for the contribution!

  • Empty Billing Address Form Replaces Pre-Filled Shipping Data

Previously, a new guest billing address form would appear with pre-filled shipping address data that could be modified. However, it has now been updated so that the billing address form opens empty, without any pre-existing information.

Please refer to issue #81 for more information.

Removed

  • Removed the default total segment renderer (block) and its fallback mechanism

In merge request #44, a default total segment renderer was implemented to ensure that items are always rendered without the need to manually add the necessary block into the Layout XML. However, this led to unintended behavior by rendering items that should not be rendered, without providing the option to remove them, as it would default to the standard rendering.

Please refer to issue #87 for more information.

1.0.3 - 2023-05-09

Added

  • Nothing was added.

Changed

  • Fix checkout layout resolver to only match on checkout route

The layout resolver fix introduced in 1.0.2 matches any page on a store with Hyvä Checkout, causing non-checkout pages using Magewire to break.

Please refer to issue #58 for more information.

Many thanks to Marcus Venghaus for the contribution!

Removed

  • Nothing was removed.

1.0.2 - 2023-05-02

Added

  • Nothing was added.

Changed

  • Fix unresolvable nested components

Components that were dynamically loaded without a page reload or step navigation became unresolvable since the Hyva Checkout component ResolverInterface was unable to comply with its conditions and therefore would fallback on the default Magewire Layout ResolverInterface, which isn’t aware of any additional checkout/step layout handles. Because of this, Blocks couldn’t be found which result in Magewire throwing a 404 - component not found.

For more information, please refer to merge request #57.

Many thanks to Ivascu Madalin (Buckaroo) & Filipe Bicho (Refusion) for the contribution!

Removed

  • Nothing was removed.

1.0.1 - 2023-05-02

Added

  • Compatibility with PHP 8.2

For more information, please refer to issue #35.

  • Default totals renderer

Previously, custom totals where not rendered, unless they where explicitly added as a child to the price-summary.total-segments block with the total code as the block alias.
Now, if there is no child matching the total modal, the default renderer is used rendering the total code and value.

For more information, please refer to issue #37.

Many thanks to Marcus Venghaus for the contribution!

Changed

  • Fix shipping total rendering

Previouly the shipping total was not shown because the block was missing the as="shipping" attribute in the layout xml, so it was rendered using the default total renderer instead.

For more information, please refer to merge request #48.

Many thanks to Thijs de Witt (Trinos) for the contribution!

  • Changed the checkout cache ID from checkout to hyva_checkout

This low impact change was made to avoid potential cache key name collisions with other extensions or possible future Magento core changes.

For more information, please refer to merge request #48.

  • Change type of Phone number field from "text" to "tel"

This change can improve the keyboard layout on mobile devices when entering a value.

  • Session expiration Alert popup message

When a customer session expires while idling for a long time during checkout, a informative message is displayed rather than an error message.

  • Fix validation error for newly registered customers without address in address book

Previously, customers who had just created an account and tried to checkout where unable to place an order because the billing address was not properly initialized on the quote.

For more information, please refer to issue #55.

Many thanks to Jacek Lopuszynski for the contribution!

  • Fix coupon code component being incorrectly disabled

For more information, please refer to issue #50.

Many thanks to Marcus Venghaus for the contribution!

  • Update README to refer to the correct composer package names

Previously old package names used during development that are no longer valid where referenced in the README file.

For more information, please refer to issue #43.

  • When a customer address is deleted, the address ID is removed from the quote

Previously an exception was thrown when the address ID on the quote referenced a non-existing customer address.

For more information, please refer to issue #39.

Many thanks to Marcus Venghaus for the contribution!

  • Update the price summary after changing the payment method

Some payment methods like cash on delivery have an effect on the price summary.

For more information, please refer to issue #36.

Many thanks to Marcus Venghaus for the contribution!

  • Fix possible bypass of required form fields

For more information, please refer to issue #24 and merge request #49.

  • Fix issue with Magewire loading spinner remaining visible after session timeout

For more information, please refer to issue #5.

  • Handle session corruption because of cookie domain conflicts more gracefully

In the rare situation, where the main store is running on a second level domain (e.g. test.com),
and the staging environment was running on a subdomain of the same domain (e.g. staging.test.com),
the main store cookie conflicted with the subdomain cookie, resulting in lost sessions.
This caused a problem where the checkout was trying to collect Magewire components based on data of the main domain when on the subdomain.

For more information, please refer to issue #42.

  • Select inputs like COUNTRY_ID will now wait to update when a user starts typing

For more information, please refer to issue #34.

  • Magewire error alert overlay is now hidden in production mode

For more information, please refer to issue #21.

  • Make system configuration for shipping and billing form management more user-friendly

For more information, please refer to issue #7.

  • The default checkout login step now uses the 1column "layout"

Removed

  • Nothing was removed.

1.0.0 - 2023-02-24

Added

  • Initial Release

Changed

  • Nothing was changed.

Removed

  • Nothing was removed.