Skip to content

Changelog - Theme Module

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

The format is based on Keep a Changelog.

Unreleased

1.4.1 - 2025-11-17

Added

  • Added installation instructions to README

  • Add notes about unsupported PageBilder slider features Autoplay is no longer supported for A11Y with the CSS SnapSlider introduced in Hyvä 1.4.0. Also, Infinite Scroll is not supported by the CSS slider.

Changed

  • Fix error when default-theme or default-theme-csp are composer replaced
    For more information, please refer to issue #488

  • Fix table name prefixing in recurring data setup script
    Previously, the script was broken if global table name prefixes were configured.

For more information, please refer to issue #489

  • Fix a number of minor bugs in the Snap Slider
  • Fix scroll-bounce edge case when there is not enough space available.
  • Exclude <style> tags from slider contents.
  • Prevent error when group-pager is set and there are no slides

For more information, please refer to issue #490

Removed

  • Nothing removed

1.4.0 - 2025-11-10

Added

  • Add new AlpineJS Slider
    This also replaces the Slider viewmodal for this simpler AlpineJS plugin and in so the slider viewmodal has been marked for deprecation.

For more information, please refer to issue #98

  • Add AlpineJs based HTML Dialog
    For more information, please refer to issue #481

  • Add Support for bfcache
    For more information, please refer to merge request #567

  • Add Theme Module version in the footer next to the Magento version
    For more information, please refer to issue #358

  • Add speculation rules to the theme as a stable feature
    For more information, please refer to merge request #571

Changed

  • Fixed TypeError in PageJsDependencyRegistry when block HTML contains Phrase object
    For more information, please refer to issue #480

Removed

  • Nothing removed

1.3.20 - 2025-11-04

Added

  • Nothing added

Changed

  • Resolve critical bug in the isHyvaTheme function for static assets
    The isHyvaTheme function, introduced in 1.3.18 for the Base Layout Reset used by Theme 1.4, could cause a 500 error due to a NULL theme value. This is now resolved by handling this condition.

Removed

  • Nothing removed

1.3.19 - 2025-11-04

Added

  • Nothing added

Changed

  • Resolve critical bug in setup script
    In 1.3.18, the parent_id of the default theme was set to NULL when the theme was older than 1.4.0.
    This is now fixed and is only applied if the installed default theme has a version >= 1.4.0.

Removed

  • Nothing removed

1.3.18 - 2025-11-03

Added

  • Add HyvaThemes service class This class can be used to check if a theme is a Hyvä theme.

Changed

  • Disable SVG icon caching by default
    For more information, please refer to issue #462

  • Fix integration tests with default-theme-csp installed
    For more information, please refer to issue #482

  • Fixed Regular and Special Pricing does not work on Product List with Magento 2.4.8
    For more information, please refer to issue #470

Many thanks to Pieter Hoste (Baldwin) for the contribution!

  • Removed Hard dependency on Magento's PageBuilder module
    It is now possible to remove the Magento's PageBuilder using a composer replace.

For more information, please refer to issue #478

  • Fixed Auto-deferred Alpine components selector causes issues with nested custom option components
    For more information, please refer to issue #473

Removed

  • Nothing removed

1.3.17 - 2025-09-02

Added

  • Nothing added

Changed

  • Move Alpine Plugin Files to Base Area
    For more information, please refer to merge request #560

  • Reverse picture tag source inclusion for MediaHtmlProvider
    For more information, please refer to issue #477

Removed

  • Nothing removed

1.3.16 - 2025-08-19

Added

  • Add addPriceData option to ProductList view model
    For more information, please refer to issue #446

  • Add ViewModel to expose Magento versions
    For more information, please refer to issue #476

  • Add optional arguments for ProductListItem view model pricerenderer
    For more information, please refer to merge request #513

Many thanks to Akif Gumussu (Aquive) for the contribution!

Changed

  • Avoid duplicate queries to load CSP fetch policies
    For more information, please refer to merge request #547

Many thanks to Igor Wulff (Youwe) for the contribution!

  • Improve Speculation rules exclude list for none subdomains
    For more information, please refer to merge request #554

  • Allow disabling block level caching of product list item templates
    For more information, please refer to issue #466

  • Fix error in Safari 18 for missing Navigation Api
    For more information, please refer to issue #469

  • Fix check if block is cached in RegisterPageJsDependencies
    For more information, please refer to merge request #468

  • Fix CLI command events:generate:module by not checking app state code
    For more information, please refer to issue #467

  • Fix issue with missing tax rates from http context
    For more information, please refer to issue #443

Many thanks to Jakub Idziak (Macopedia) for the contribution!

  • Improve in-memory path IDs
    For more information, please refer to issue #443

Many thanks to Thomas Klein (ATI4 Group) for the contribution!

Removed

  • Nothing removed

1.3.15 - 2025-07-03

Added

  • Some new methods to the Media viewmodel that allow more advanced features when the Hyva Commerce media optimization module is installed
    For more information, please refer to merge request #543

  • HyvaCSP View Model to Admin Block Dictionary
    For more information, please refer to merge request #540

  • Add Lucide Icons for Hyvä Commerce
    For more information, please refer to issue #460

Changed

  • Fixed getPriceDisplayType can return string as config values could also be returned as strings "1", "2", "3" and this would end up with exception
    For more information, please refer to merge request #544

  • Move Alpine Files to Base Area
    For more information, please refer to merge request #538

Removed

  • Remove private TTL hardcode
    For more information, please refer to issue #441

1.3.14 - 2025-05-26

Added

  • Nothing added

Changed

  • Fixed one more usage of implicit nullable param which is deprecated since PHP 8.4 For more information, please refer to merge request #535

    Many thanks to Pieter Hoste (Baldwin) for the contribution!

  • Resolve a minor difference between Alpine CSP and non Alpine CSP For more information, please refer to merge request #525

Removed

  • Nothing removed

Added

  • Lucide Icons

    To transition all Hyvä Commerce and Hyvä Projects to a unified icon set, we're now introducing Lucide Icons as an alternative to Heroicons.
    New projects will begin using them immediately, and we plan to update the default Hyvä theme with this new icon set in an upcoming release.

    A huge thank you to Siteation for their valuable contribution in creating and sharing this icon pack with us.
    We also recommend checking out their dedicated Hyvä Lucide Icons and their other excellent Hyvä icon options.

    For more information, please refer to issue #460

1.3.13 - 2025-04-22

Added

  • Script type to hyva.activateScripts For more information, please refer to issue #445

Changed

  • Explicitly mark nullable parameters for PHP 8.4 compatibility For more information, please refer to issue #459

  • Make code to initially show modal dialogs CSP compatible For more information, please refer to issue #458

  • Improve HtmlPageContent class For more information, please refer to issue #457

    Many thanks to Christoph Hendreich (In Session) for the contribution!

  • Downgrade AlpineJS to v3.14.3 For more information, please refer to merge request #457 and Alpinejs merge request #4509

  • Fix Area code is not set error in CLI commands instantiating HyvaCsp template variable For more information, please refer to issue #455

  • Fix phpdoc in src/Model/ViewModelRegistry.php For more information, please refer to merge request #483

    Many thanks to Frederik Rommel (WEBiDEA) for the contribution!

Removed

  • Nothing removed

1.3.12 - 2025-03-17

Added

  • Authorize speculation rules script tag on page without unsafe-inline policy

    The <?php $hyvaCsp->registerInlineScript() ?> call was previously missing.
    For more information, please refer to issue #449

    Many thanks to Christoph Hendreich (In Session) for the contribution!

  • Add frontend extension point for section data

    A new method window.processSectionDataBeforeDispatch can be intercepted by extensions to mutate section data before it is dispatched.

    For more information, please refer to merge request #523

Changed

  • Fix error handling existing script tag attributes with spaces in the value when injecting a nonce attribute

    For more information, please refer to issue #450

  • Improve hyva.createBooleanObject resilience

    When migrating non-csp alpine components, it could happen that the value property was accidentally overwritten using the = operator. This change protects against this and will assign the value to the internal value property instead.

    For more information, please refer to issue #448

Removed

  • Nothing removed

1.3.11 - 2025-03-06

Added

  • Support strict CSP mode

    These changes support using a Hyvä theme or other Hyvä products like the checkout without the Content-Security-Policies unsafe-eval and unsafe-inline. However, the required changes to the theme or other products are not part of this release.

    Most notably, this release will use Alpine-CSP if the unsafe-eval script-src CSP is not present.

    For more information, please refer to the Hyvä CSP Developer documentation for theme and the checkout.

Changed

  • Change init-external-scripts event trigger

    Replaced mouseover with mousemoved event as one of the triggers for the init-external-scripts event, since the other one was triggered on page-load in page speed insights tests now.

    For details, please refer to merge request #512.

    Many thanks to Sergiy Pikhterev (Transform-Agency) for the contribution!

Removed

  • Nothing removed

1.3.10 - 2024-12-06

Added

  • Add experimental view transitions

    View Transitions is a new browser API allowing for smooth and engaging animations during page transitions.
    This can significantly improve user experience by providing visual cues and reducing the perception of page load times.
    The feature is disabled by default. It can be enabled in the "Hyvä Themes > Experimental > Enable View Transitions" system configuration.

    Further resources: - caniuse: https://caniuse.com/mdn-css_at-rules_view-transition
    - Release notes of Chrome 126: https://developer.chrome.com/blog/new-in-chrome-126#cross-document-transitions
    - Learn more about cross-document View Transitions: https://developer.chrome.com/docs/web-platform/view-transitions/cross-document

    For details, please refer to merge request #467.

  • Lazy load PageBuilder slider background images

    Lazy loading can be enabled for each slider background individually.
    The default can be configured in the system configuration at "Hyvä Themes > PageBuilder > Images > Enable lazy-loading by default for background images".

    For details, please refer to merge request #472.

  • Allow lazy loading PageBuilder images / add image dimensions

    For details, please refer to merge request #475.

  • Add position none to ModalBuilder

    This allows the manual positioning of the modal box.

    For details, please refer to merge request #435.

    Many thanks to Andy Eades (elevate web) for the contribution!

  • Add Image view model

    The view model only has the method getPlaceholderImageUrl. The method is required by Hyvä Enterprise.

    For details, please refer to merge request #462.

  • Add Vimeo player host to CSP policy

    For details, please refer to merge request #468.

    Many thanks to Ole Schäfer (Customgento) for the contribution!

  • Add Date and Locale PHP view models

    The view models are used in Hyvä Enterprise and could also be useful in general.
    - Date::getDateYMD(?string $date = null): Return the input date or the current date in UTC timezone ('Y-m-d')
    - Locale::getLocale(): return the store locale, for example, en-US.

    For details, please refer to merge request #470.

  • Add an explanatory comment in the template for crossorigin attribute on script element

    For details, please refer to merge request #473.

    Many Thanks to Alex Galdin (IT-Delight) for the contribution!

  • Allow overriding hyva.formatPrice grouping and decimal separator with custom options

    Previously, customizing the decimal or thousands separator character required overriding the formatPrice function.
    Now the groupSeparator or decimalSeparator options can be used instead. For example:

    hyva.formatPrice(price, false, {decimalSeparator: ' : '})
    

    For details, please refer to issue #378.

    Many Thanks to Alex Galdin (IT-Delight) for the contribution!

  • Add Notice to Old CAPTCHA Config Area

    For details, please refer to issue #415.

  • Add customer attribute validate_rules frontend validations

    The new validation rules are used by Hyvä Enterprise but could be useful in a broader context.

    For details, please refer to issue #357.

  • Add config option to disable homepage demo content

    For details, please refer to merge request #490.

  • Add Google Maps API view model

    The GoogleMapsApi view model provides all the public methods of the Magento\PageBuilder\Block\GoogleMapsApi core class.
    It allows rendering the PageBuilder Google Maps template using a generic Template block.

    For details, please refer to merge request #495.

Changed

  • Upgrade Alpine.js from 3.12.3 to 3.14.6

    For details on what changed, please refer to the Alpine.js release notes.

  • Fix PageBuilder Products content-type admin preview

    Previously, the preview of product carousels or product grids in PageBuilder was broken, if a Hyvä frontend theme was used.

    For details, please refer to merge request #478.

  • Bundle mollie payments integration

    For details, please refer to merge request #497.

  • Allow SVG Icon titles containing ampersand

    Previously this caused an error to be thrown.

    For details, please refer to issue #391.

  • Fix PHP type error on getConfiguredMaxCrosssellItemCount

    For details, please refer to issue #393.

    Many thanks to Emils Malovka (magebit) for the contribution!

  • Improve browser speculation rules

    Speculation Rules no longer cause an error in Microsoft Edge.
    Also, the default speculation rules now include cached pages without a .html suffix.
    Finally, type="speculationrules" is used instead of JavaScript to render the rules.

    For details, please refer to merge request #466.

    Many thanks to David Lambauer (run-as-root) for contributing to the improvements!

  • Fix hyva-themes.json generation during setup:upgrade on Magento 2.4.7+

    For details, please refer to issue #399.

    Many thanks to Pieter Hoste (Baldwin) for the contribution!

  • Use x-defer="idle" for cookie-banner to make it more reliable

    For details, please refer to merge request #492.

  • Switch from getBaseUrl to getDirectUrl in LogoPathResolver

    This improvement allows for easier modifications via plugins.

    For details, please refer to merge request #476.

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

  • Fix SVG icon view model accidentally changing hex color values while disambiguating IDs

    For details, please refer to issue #362.

  • Skip CSS and JS minification for assets from Hyvä Themes

    The minification implementation in core Magento is not beneficial (as modern HTTP compression does a better job), and in some cases introduces incompatibilities with Hyvä code.

    For details, please refer to merge request #482.

  • Change default-section-data script type so it does not confuse Chrome on Linux

    For details, please refer to issue #409.

  • Set version cookie to fix Login as customer from admin

    For details, please refer to issue #413.

  • Access cache_lifetime with the magic method in case it is implemented on a block

    For details, please refer to issue #395.

  • Merge records with duplicate src path in hyva-themes.json

    For details, please refer to issue #382.

  • Exclude tailwind container query classes from being masked

    For details, please refer to issue #419.

  • Allow specifying the product attribute to render using the attribute code as a string argument

    For details, please refer to issue #424.

  • Fix caching of block identities in block_html cache during ESI requests

    For details, please refer to issue #418.

  • Only apply page JavaScript dependencies to Hyvä themes

    Third-party extensions using the feature previously could cause side effects during email rendering.

    For details, please refer to issue #429.

Removed

  • Nothing removed

1.3.9 - 2024-05-10

Added

  • Nothing added

Changed

  • Fixed: Default section data not dispatched on reload

Previously the default section data for new visitors was only dispatched once. This only affected visitors without a session.

For details, please refer to merge request #457.

  • Fixed phpdoc type for class-string in ViewModelRegistry

For details, please refer to merge request #458.

Many thanks to Thomas Hauschild (E3n) for the contribution!

Removed

  • Remove accidental aria-hidden on SVG attributes

In version 1.3.6, the icon update unintentionally included an additional aria-hidden="true" attribute from the heroicon source on all bundled heroicons. This attribute is now removed so it is possible to use the SVG icons together with accessible technology.

For details, please refer to issue #387.

1.3.8 - 2024-04-25

Added

  • Nothing added

Changed

  • Move the General section to the top of Hyvä system configuration setting sections

For details, please refer to issue #363.

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

  • Verify the form key for customer/ajax/login after the fallback theme is applied

This plugin sort order change is part of a fix for the guest login in checkout for the Luma fallback checkout.

For details, please refer to merge request #452.

  • Exclude products not visible in catalog from custom sliders

For details, please refer to issue 368.

Removed

  • Nothing removed

1.3.7 - 2024-04-08

Added

  • Add Alpine.js x-defer directive

This new directive allows deferring the initialization of an alpine component until a given condition. Possible attribute values are interact, intersect, idle, and event:eventname.
It can help reducing the TBT on pages with many Alpine components. The theme-module automatically injects the directive into a number of components with JavaScript.
These automatically deferred components can be configured with both layout XML and in the Magento system configuration.

For details, please refer to merge request #444 and the x-defer documentation.

  • Add Alpine.js x-ignore directive

The x-ignore directive - available in Alpine v3 - has been backported to Alpine v2 for Hyvä 1.3.7.
It is utilized in the x-defer directive implementation.

For details, please refer to merge request #444 and the x-defer documentation.

  • Add PHP View Model to support Magento_OrderCancellationUi

For details, please refer to merge request #445.

  • Speculation-rules-api Page Pre-Render Experiment

The new speculation rule browser API allows for an improved user experience by pre-rendering pages a user is likely to visit next based on JSON based rules. For more information on the browser API please visit developer.chrome.com/docs/web-platform/prerender-pages and nitropack.io/blog/post/speculation-rules-api.

By default the feature is disabled. It can be enabled in the system configuration found at
Hyvä Themes > Experimental > Experimental Features > Enable Preloading Speculation Rules

For details, please refer to merge request 448.

  • Call IsCaptchaEnabledInterface::isCaptchaEnabledFor for extension compatibility

Previously the recaptcha implementation only accessed the system configuration values directly.
By also using the interface compatiblity with related third party modules is improved.

For details, please refer to issue 356.

Changed

  • Gracefully handle browsers without intersection observer

Now intersection observer callbacks will fall back to executing immediately on supported browsers that don't implement InteractionObserver natively (currently Mobile Opera v73 is the only one of the supported browsers missing InteractionObserver).

For details, please refer to merge request 449.

  • Fix default section data generation

Previously the default section data implementation introduced in 1.3.6 caused some issues with the Magento_InstantPurchase module under some circumstances as well as potentially causing messages not to be shown to the customer.

For details, please refer to issue 371.

Removed

  • Nothing removed

1.3.6 - 2024-03-28

Added

  • Allow JS to be rendered on a page only when it is needed

This feature enables several performance improvements on product listing pages.
JavaScript can now be rendered on a page only when it is required.

For details, please refer to merge request #425.

  • Add hyva.activateScripts method

The hyva.activateScripts method can be used to have a browser process scripts in HTML snippets from Ajax reponses.

For details, please refer to merge request #434.

  • Make the amount of crosssell items configurable in admin

For details, please refer to issue #257 and the associated merge request.

Many thanks to Antonio Carboni (Magenio) for the contribution!

  • Enable the title attribute for SVG icons in CMS content

Allow icon directives in the backend to assign a title, e.g. {{icon "heroicons/solid/shopping-cart" classes="w-12 h-12" title="Shopping Cart"}}

For details, please refer to merge request #426.

Many thanks to Andreas Pointner (Copex) for the contribution!

  • Add formatting options argument to hyva.formatPrice()

This change allows for easier customization of frontend price rendering.

For details, please refer to merge request #431.

Changed

  • Avoid loading section data for customers without a session

This is a performance improvement to reduce the number of Ajax requests to the server.
We don't expect this will affect many extensions (if any), but just in case please refer to the 1.3.6 upgrade notes for more information.

For details, please refer to issue #279 and the associated merge request.

  • Restore view model registry param annotation to avoid having to type hint return values

This functionality was originally contributed to release 1.1.9 by Thijs de Witt and was accidentally removed in 1.1.18.

For details, please refer to merge request #411.

Many thanks to Matthijs Perik (Ecomni) for the contribution!

  • Memoize category tree data

This is a performance improvement to reduce server load in case both the mobile and the desktop category menus have the same depth.

For details, please refer to merge request #386.

Many thanks to Jeroen Boersma (Elgentos) for the contribution!

  • Fix Exception Return value must be of type string, null returned for payment method title

For details, please refer to issue #339 and the associated merge request.

Many thanks to Michiel Gerritsen for the contribution!

  • Fix input validation message with step nearest allowed values

For details, please refer to issue #340.

  • Reload section data if a request fails

Previously the frontend would get stuck without section data if the request failed at the wrong moment.

For details, please refer to issue #347.

Many thanks to Harsh Tank (Graas.ai) for the contribution!

  • Use optimized versions of Heroicons

Previously some Heroicons contained static colors or stroke width inside the SVG on the path element.

For details, please refer to merge request #429.

  • Add missing form key validation for customer Ajax login controller

For details, please refer to merge request #430.

Many thanks to Talesh Seeparsan for reporting the issue!

  • Use hyva.trapFocus for modals

Previously the Hyvä modal library used a different implementation relying on the inert element attribute.
This change to the more lightweight implementation improves consistency and resolves issues with some third-party libraries when used inside of modals.

For details, please refer to merge request #432.

  • Fix: exclude hidden elements from focus targets

Previously hidden elements were used as focus targets leading to inconsistent behavior.

For details, please refer to merge request #433.

  • Fix: do not call focus() on window object when modal is closed

Previously, if no valid focus-after-close target was specified when showing a modal dialog, the focus() method was called on the window object.

For details, please refer to issue #361.

Removed

  • Nothing removed

1.3.5 - 2023-12-20

Added

  • Add method hyva.setSessionCookie

The method was added because hyva.setCookie does not allow setting a cookie with Session duration if a default cookie lifetime is configured.

For details, please refer to issue #313.

  • Add feature for showing HTML form validation messages

Previously all form validation messages were rendered as text. By returning a JS object with a type and a content property from the form validation rule it will render the HTML without escaping it:
`{ type: 'html', content 'click me"' }

For details, please refer to merge request #413.

  • Allow adding input type or attribute-based form validation rules

This change allows hooking into default INPUT types (e.g. url) and browser attributes (e.g. accept for allowed file extensions) and associate form validation rules that way.

For details, please refer to merge request #410.

  • Add aria-expanded attribute state to modal trigger

Previously it was not possible to specify the element to focus after a modal was closed, if the element was outside of the modal component, or if the modal was opened by triggering a custom event.

When opening a modal by calling the show() method, the element to focus after it is closed can be specified as a selector string argument, e.g. @some-event.window="show('#some-trigger')".
When opening a modal with an hyva-modal-show event, the element to focus after it is closed can be specified as an argument in the event details: {detail: {name: 'my-dialog', focusAfterHide: '#some-trigger'}}
When rendering the JS to open the modal with the modal view model in PHP, the element selector can be specified as an argument to getShowJs: @click="<?= $modal->getShowJs('#some-trigger') ?>"

For details, please refer to merge request #381.

Changed

  • Nothing changed

Removed

  • Nothing removed

1.3.4 - 2023-11-21

Added

  • Nothing added

Changed

  • Restore Alpine.js v2 compatibility

The hyva-themes/magento2-theme-module has been incompatible with themes using Alpine v2 since release 1.2.6.

For more details, please refer to merge request #402.

  • Fix etc/module.xml sequence tags

Previously the module sequence was declared in a way that it did not have any effect.

For details, please refer to issue #323.

  • Apply cookie_secure setting instead of hardcoding to false

Previously the cookie_secure value was hardcoded to false instead of using the value set for PHP.

For details, please refer to issue #322.

Removed

  • Nothing removed

1.3.3 - 2023-11-16

Added

  • Add method getCustomerEmailsForReviews to ReviewList view model

    This method is useful when rendering Gravatars for customer reviews.

    For details, please refer to issue #321.

  • Allow custom titles for SVG icons

    Previously, the icon name was rendered as the title on SVG icons for accessibility purposes.
    Now a custom title can be specified to replace the default, by passing it as a title in the attributes argument: ['title' => 'Example'].

    For details, please refer to issue #315.

Changed

  • Fix: Properly render boolean value SVG attributes

    Previously, boolean attributes to SVG icons had to be specified as strings, for example ['aria-hidden' => 'true'].
    Specifying the value as a boolean true or false failed. With this change, both string and boolean values work as expected.

    For details, please refer to merge request #387.

    Many thanks Stephanie Ehrling (ECOPLAN) for the contribution!

  • Fix: Do not render SVG icon title if aria-hidden is 'true'

    Previously the title was only omitted if the aria-hidden value was specified as a boolean true.

    For details, please refer to merge request #388.

    Many thanks Stephanie Ehrling (ECOPLAN) for the contribution!

  • Fix: Move SortableItemInterface preference into global scope

    This change resolves the issue "Error: Cannot instantiate interface Hyva\Theme\Block\SortableItemInterface" when editing CMS content in the admin.

    For details, please refer to merge request #391.

Removed

  • Nothing removed

1.3.2 - 2023-09-30

Added

  • Nothing added

Changed

  • Build account top menu form individual blocks instead of a hardcoded template

    This is a much-requested, although backward compatibility breaking, change. It allows items to be added to the account top menu using layout XML without requiring a template override.
    In the past, this has often led to conflicting template overrides from third-party extensions.

    Please refer to merge request #378, or see the 1.3.2 upgrade notes for more information.

  • Allow fields without rules have an @input="onChange" callback

    This is a fix for a regression introduced with release 1.3.0.

    For more information please refer to issue #314.

  • Make section data cache handling more robust

    This change fixes a reported but unreproducible issue on Adobe Cloud installations.

    For more information please refer to issue #317.

Removed

  • Nothing removed

1.3.1 - 2023-09-06

Added

  • Nothing added

Changed

  • Dispatch messages from cookie during alpine:initialize for Safari on iOS compatibility

    Previously a theoretical race condition on cached pages could cause messages not to show on Safari on iOS.

    For more information please refer to issue #309.

  • Instantiate default product price renderer block if not present

    During custom Ajax requests that render a single block without loading the default layout, the price renderer block
    is not be instantiated. Previously this would cause no price to be rendered during such requests.

    For more information please refer to issue #240.

Removed

  • Nothing removed

1.3.0 - 2023-08-31

Added

  • Added aria-live and aria-state to validation library

  • Add title child node and role="img" attribute to SVG icons if missing

  • Added ViewModel to render payment titles in order info if available

    The class \Hyva\Theme\ViewModel\Sales\PaymentInfo was added.

  • Added ViewModel to format radio option price adjustments

    The class \Hyva\Theme\ViewModel\Product\RadioPriceRenderer was added.

Changed

  • Nothing changed

Removed

  • Nothing removed

1.2.9 - 2023-12-21

Added

  • Nothing added

Changed

  • Fix typo in CSS class 'ointer' to 'pointer'

The previous release 1.2.8 introduced a typo in the class name in Magento_Swatches/templates/product/swatch-item.phtml that is fixed now.

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

Many thanks to Lars de Weert (Made by Mouses) for their contribution!

  • Fix layout XML schema violation regression

This change fixes a regression introduced in release 1.2.8. The tailwind class md:grid-cols-2 is not compatible with the native Magento layout container htmlClass attribute regular expression, resulting in a broken customer login page.
The error made it into production because test instances used a patched XSD as described as a workaround in the docs.

The offending class was moved into the web/tailwind/components/customer.css file as part of the customer-login-container class.

For more details, please refer to merge request #998.

Removed

  • Nothing removed

1.2.8 - 2023-11-22

Added

  • Nothing added

Changed

  • Accommodate additional blocks on customer login page without breaking layout

Previously, when adding another widget to the login container, the layout did not automatically wrap the widget to the next line, leading to a broken layout. BC Note: the web/tailwind/components/customer.css styles need to be manually removed from existing themes after the upgrade for a theme to profit from this change.

For more information, please refer to issue #775.

  • Update Tailwindcss from 3.2.4 to 3.2.7

This change is backward compatible. The newer tailwind version fixes some issues.

For a list of changes in Tailwindcss, please refer to issue #820.

  • Fix: layered navigation on 1column page layouts hidden

For more information, please refer to issue #678.

Many thanks to Ivan Matsii (Perspective Magento Team) for the contribution!

Removed

  • Nothing removed

1.2.7 - 2023-11-17

Added

  • Added new containers for Customer Custom Attributes

Containers were added to the customer_account_create, customer_account_edit, customer_address_form, and layout XML instructions to facilitate rendering custom customer attributes with Hyvä Enterprise.

Note: while these changes reference features in Adobe Commerce, no Commerce code is depended upon.

For more information, please refer to issue #812.

Changed

  • Fix: Mobile Safari iOS double click required to start swatch selection

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

  • Allow adding additional links to header customer menu

Previously, it was not possible to add additional links to the customer-menu.phtml template without overriding the template.

For more information please refer to the 1.2.7 upgrade notes or issue #730.

  • Facilitate Gift Wrapping support (for Hyvä Enterprise)

These changes allow gift-wrapping support in the cart page for Hyvä Enterprise to function as expected.

Note: while these changes reference features in Adobe Commerce, no Commerce code is depended upon.
All checks are based on configuration values which always return null or false in Magento Open Source

For more information, please refer to issue #807.

  • Hide view/reorder links for received async orders

This change renders orders as expected if asynchronous order processing in Adobe Commerce is enabled.

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

  • Render customer.account.dashboard.info.blocks container on customer dashboard

Additional blocks can now be rendered by assigning them as children of the customer.account.dashboard.info.blocks container.

For more information, please refer to issue #812.

  • Render SVG icons on customer dashboard with view model

Previously the SVG icons were declared as inline markup in the template without using the SVG icons view model.

For more information, please refer to issue #812.

  • Update version constraint for hyva-themes/magento2-reset-theme to 1.1.5

The updated reset theme contains the resets for the Adobe Sensei related modules.

For more information please refer to merge request #894.

Removed

  • Nothing removed

1.2.6 - 2023-08-28

Added

  • Add hyva.trapFocus() and hyva.releaseFocus() methods

The trapFocus method causes keyboard tab navigation to iterate only over focusable elements inside the given root element.

Please refer to the documentation for more information.

Changed

  • Update Hero icon library from 0.4.2 to 1.0.6

This is a backward-compatible upgrade.

For more information, please refer to issue #222.

Many thanks to Oleksandr Hasniuk (planeta-web.com.ua) for the contribution!

  • Add product list item template name to product item cache key in ProductListItem view model

Previously the parent block template was used, which made it impossible to use a different list item template for different uses.

For more information, please refer to issue #296.

  • Set product list item parent block

Previously it was not possible to refer to the parent block from within the product list item template.

For more information, please refer to issue #294.

  • Add a missing quote to the exception thrown in the SVG icon view model

Previously the phrase Unable to find the SVG icon "%1 was used. This now was changed to Unable to find the SVG icon "%1".
This is a backward compatibility-breaking change, however, we do not believe it will have a wide impact.
Be sure to update your localization CSV files if they contain a translation if they include this phrase.
The i18n/en_US.csv translation file in hyva-themes/magento2-default-theme has also been updated to match this change in release 1.2.6.

  • Ensure ID attributes inside of SVG icons are unique

Previously, rendering an SVG icon with internal IDs multiple times on a page would cause duplicate ID warnings.
Now, if an ID is used multiple times within separate SVGs, the ID value is changed to be unique each time the SVG is rendered.
This only applies to SVG icons rendered with the SvgIcons view model.

For more information, please refer to issue #275.

Many thanks to the development team at Fronius for the contribution!

  • Fix private-content not being loaded on Mobile Safari on iOS

This change fixes an annoying safari behavior change for pages cached in the local browser HTTP cache.

For more information, please refer to issue #304.

  • Use staging product link field for crosssell items on commerce

This improves the fix introduced in 1.2.4.

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

Many thanks to Sandra Kotowska from PHPro for the fix!

Removed

  • Nothing removed

1.2.5 - 2023-07-31

Added

  • Nothing added

Changed

  • Fix property name reference in modal click handler

For more information, please refer to issue #292.

  • Fix Template Processor Plugin Regex to avoid matching non-alpine attributes

The previous release 1.2.4 introduced a regression that caused non-alpine attributes to be matched.

For more information, please refer to issue #291.

  • Patch Alpine 3.12.3 for full mobile Safari 13 compatibility

The previous release 1.2.4 upgraded Alpine to 3.12.3. This release makes use of the nullish coalescing operator ??, which is not supported by mobile Safari 13.3 and earlier (This roughly corresponds to the iPhone 6). This release contains a custom build of 3.12.3 that replaces the ?? operator with backward-compatible code.

For more information, please refer to issue #293.

Removed

  • Nothing removed

1.2.4 - 2023-07-21

Added

  • Magento_GTag compatibility

This release now provides compatibility with the Magento_GoogleGtag module.
It provided a basic Google Analytics 4 and Google Ads Gtag integration.

  • Add JavaScript method to access currently active modal dialog

The method hyva.modal.peek() will now return the currently active modal dialog (or false if there is none).

For more information, please refer to issue #272.

  • Add optional argument to allow skipping the uenc parameter in hyva.postForm

Previously the hyva.postForm method always automatically added the unec parameter to the payload.
Now it is possible to skip it by providing the key unec: false in the postParams argument.

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

  • Add system configuration setting to specify a success message default timeout

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

  • Add viewmodel for escaping anchor tags keeping attributes intact

The default Magento $escaper->escapeHtml method removes all <a> tag attributes except href.
The new \Hyva\Theme\ViewModel\Escaper\EscapeHtmlAllowingAnchorAttributes view model allows escaping anchor tags while keeping attributes like rel and target intact.

For more information, please refer to issue #284.

  • Add methods to get cart shipping total display config to TotalsOutput view model

The methods displayCartShippingExclTax, displayCartShippingInclTax, displayCartShippingBoth were added to be able to display the shipping total incl. or excl. tax on the cart page.

For more information, please refer to issue #345.

Changed

  • Upgrade Alpine.js from 3.10.4 to 3.12.3

For details on what changed, please refer to the Alpine.js release notes.

  • Fixed: typo in variable in hyva.modal.excludeSelectorsFromFocusTrap

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

Many thanks to Jesse de Boer (Elgentos) for the contribution!

  • Adjusted workaround for PHP 8.1 core bug in Magento\Tax\Pricing\Render\Adjustment

The previously applied fix was subtely different from the one introduced upstream by Magento. Now the behavior of the backport in Hyvä behaves identically.

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

Many thanks to Pieter Hoste (Baldwin) for the contribution!

  • Fixed: model open event listener

Opening modal by events now works.

For more information, please refer to issue #2547.

Many thanks to Valentyn Kuchak (Perspective) for the contribution!

  • Fixed: ESI Block causing whole page to be invalidated in Varnish

Previously, changes to categories caused all catalog FPC records to be invalidated, even though only the top menu ESI block should have been needed regenerated.

For more information, please refer to issue #256.

Many thansk to Matt Walsh for the detailed report!

  • Fixed: PageBuilder HTML content processing

Previously, subsequent HTML content elements would be escaped, thus rendering the HTML tags visibly on the page.

For more information, please refer to issue #267.

  • Add . to PageBuilder CSS class name validation rule

Previously, classes such as mx-1.5, mb-4.5 and md:mb-3.75 could not be saved because they contained a period . character.

For more information, please refer to issue #277.

  • Increase modal click-guard time

Previously, under some circumstances, possibly heavy main-thread load, the click opening the modal was registered as a closing click.

For more information, please refer to issue #270.

  • Fixed: not-visible products in from product relations are shown

Products not visible in the catalog were previously included in related, upsell and crosssell product sliders.
Now products set to not-visible-individually or only-visible-in-search are excluded, as well as deactivated products.

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

Removed

  • Nothing removed.

1.2.3 - 2023-03-17

Added

  • Nothing added

Changed

  • Avoid dynamic class properties for PHP 8.2 compatibility

Previously the class property \Hyva\Theme\Plugin\FrontController\HyvaHeaderPlugin::$theme was undeclared, and thus treated as a dynamic public property. Now the property is declared with private visibility. Technically this is a backward compatibility-breaking change, as any child class referring to the parent class property will no longer work. However, we believe this scenario to be unlikely, and it is simple to work around by declaring and assigning the property in the child class, too.

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

Many thanks to Pieter Hoste (Baldwin) for the contribution!

  • Refactor string variable interpolation deprecated in PHP 8.2

In the template files src/view/frontend/templates/page/js/plugins/intersect.phtml and src/view/frontend/templates/page/js/alpinejs.phtml a variable was interpolated into a string using the "${varname}". This syntax has been deprecated in PHP 8.2.
Instead, the syntax "{$varname}" is now used.

For more information, please refer to merge request #309 and #322.

Many thanks to Pieter Hoste (Baldwin) and Peter Jaap Blaakmeer (Elgentos) for the contribution!

Removed

  • Nothing removed

1.2.2 - 2023-03-06

Added

  • Nothing added

Changed

  • Extract PageBuilder HTML content with ungreedy regex

Previously, the regular expression would extract PageBuilder content elements following a HTML content element as part of the HTML content element data.

For more information, please refer to issue #258.

Many thanks to Aad Mathijssen (iO) for reporting!

Removed

  • Nothing removed

1.2.1 - 2023-01-19

Added

  • Make $viewModels template variable available in Luma again

The template variable was removed in Hyvä release 1.2.0, but it turned out it had been used by many people, so it was decided to make it available again.

For more information please refer to issue #238.

  • Add support for the pattern attribute to advanced form validation

For more information please refer to merge request #290.

Many thanks to Aad Mathijssen (Isaac) for the contribution!

  • Add missing requirement for Magento_QuoteGraphQl

A class from the module is used by the theme-module, so it needs to be declared as a composer dependency and in the etc/module.xml file.

For more information please refer to issue #244.

Many thanks to Thomas Hauschild (E3n) for the contribution!

Changed

  • Improve minlength and maxlength translations for advanced form validation

Previously there was no distinction between singlular and plural numbers.

For more information please refer to merge request #288.

Many thanks to Aad Mathijssen (Isaac) for the contribution!

  • Replace deprecated string interpolation to support PHP 8.2

Two instances of a deprecated string interpolation syntax are changed to be PHP 8.2 compatible.

For more information please refer to issue #241.

Many thanks to Pieter Hoste (Baldwin) for opening the issue and providing helpful information on automated checks!

  • Make client-side breadcrumbs more compatible with third-party modules

Previously an exception was thrown if no path property was set for a category.

For more information please refer to issue #242.

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

Removed

  • Nothing removed

1.2.0 - 2022-12-21

Added

  • Added Alpine v3 support

Alpine v3 was added in addition to Alpine v2. Backward compatibility is preserved. Please refer to the upgrade documentation for details.

For more information please refer to Merge Request #83.

  • Added ThemeLibrariesConfig view model

This class can be used to determine the version of Alpine that should be loaded for the current theme.

For more information please refer to Merge Request #83

  • Added require-alpine-v3 block class as extension point

Extensions may add a child block to require-alpine-v3 in layout XML using the module name as the child block name.
If a theme then loads the module using a Alpine v2 theme, a warning is displayed in the browser console.

For more information please refer to Merge Request #83

Changed

  • Nothing changed

Removed

  • Nothing removed

1.1.26 - 2023-11-17

Added

  • Added new containers for Customer Custom Attributes

Containers were added to the customer_account_create, customer_account_edit, customer_address_form, and layout XML instructions to facilitate rendering custom customer attributes.

Note: while these changes reference features in Adobe Commerce, no Commerce code is depended upon.

For more information, please refer to issue #812.

Changed

  • Fix: Mobile Safari iOS double click required to start swatch selection

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

  • Allow adding additional links to header customer menu

Previously, it was not possible to add additional links to the customer-menu.phtml template without overriding the template.

For more information please refer to the 1.1.26 upgrade notes or issue #730.

  • Render customer.account.dashboard.info.blocks container on customer dashboard

Additional blocks can now be rendered by assigning them as children of the customer.account.dashboard.info.blocks container.

For more information, please refer to issue #812.

  • Render SVG icons on customer dashboard with view model

Previously the SVG icons were declared as inline markup in the template without using the SVG icons view model.

For more information, please refer to issue #812.

  • Update version constraint for hyva-themes/magento2-reset-theme to 1.1.5

The updated reset theme contains the resets for the Adobe Sensei related modules.

For more information please refer to merge request #951.

Removed

  • Nothing removed

1.1.25 - 2023-07-31

Added

  • Nothing added

Changed

  • Improve product option value check before setting

Under some conditions it previously was possible to set invalid product option values, for example when configuring an unconfigured product from the wishlist, which in turn led to option dropdowns being empty.

For more information please refer to issue 714.

Removed

  • Nothing removed

1.1.24 - 2023-07-21

Added

  • Nothing added

Changed

  • Fixed: Prevent the contact-us page from being stored in the full-page cache

For logged-in customers, the contact form is prepopulated, so if the FPC record happened to be by a logged-in customer, their name would be shown to subsequent visitors.

For more information, please refer to issue #687.

Special to Aad Mathijssen (Isaac) for alerting us to the issue!

  • Do not apply top-menu ESI block cache tags to the regular page if Varnish is enabled

Previously the category cache tags were also added to the regular page FPC record.

For more information, please refer to merge request #777 or the theme-module issue #256.

  • Reduce contact form CSS

Replaced the custom class flex-columns-wrapper with native tailwind classes to reduce the CSS size a little bit.

For more information, please refer to merge request #659

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

  • Remove excessive bracket in shipping totals label

Previously a superfluous ) was rendered after the total.

For more information, please refer to issue #588.

Many Thanks to Valentyn Kuchak (Perspective) for their contribution!

  • Update @hyva-themes/hyva-modules to dependency

The default-theme now depends on release ^1.0.9 of @hyva-themes/hyva-modules.
Changes in this version: - Allow excluding module CSS from being merged (see GitHub PR #6). - Allow tailwind.config.js to be in the project base directory (see this GitHub PR #8).

For more information, please refer to issue #657.

Many thanks to Sean van Zuidam (Siteation) and Thijs de Witt (Trinos) for their contribution to @hyva-themes/hyva-modules!

  • Show out-of-stock options as disabled in text and color swatches

Previously the saleable state for out-of-stock options of configurable products with a single configurable attribute was not correctly disabled.

For more information, please refer to issue #564.

  • Avoid loading external ReCaptcha script if no API keys are configured

For more information, please refer to issue #609.

Many Thanks to Rostislav Sulejmanov (Perspective) for their contribution!

  • Update hyva-themes/magento2-reset-theme dependency to 1.1.4

In the new version all Layout XML resets are updated, so they are based on the latest 2.4.6 Magento version.
All email related XML instructions for b2b + commerce that were previously added by mistake are now removed, so emails work as expected on Adobe Commerce/B2B instances.

Removed

  • Nothing removed

1.1.23 - 2023-03-17

Added

  • Nothing added

Changed

  • Make region selection code more robust under Alpine v2

In Magento_Customer/templates/address/edit.phtml a small change was made to avoid a race condition. Previously, with Alpine v2, it could happen that a change of the region selection was not seen by the form validation.

For more information, please refer to merge request #724

Removed

  • Nothing removed

1.1.22 - 2023-03-06

This default-theme release only exists to keep the version synchronized with the theme-module. It contains no functional changes.

Added

  • Nothing added

Changed

  • Nothing changed

Removed

  • Nothing removed

1.1.21 - 2023-01-19

Added

  • Support system config setting to hide or display stock status on PDP

Previously, the stock status was always shown, regardless of the config setting.

For more information, please refer to the merge request #652.

Many thanks to Kiel Pykett (Youwe) for the contribution!

Changed

  • Fix display of original price excl. tax

Previously, if catalog prices where configured to be displayed incl. and excl. tax, the price excl. tax was displayed without taking a special price into account.

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

Many thanks to Rich Jones (Aware Digital) for the contribution!

  • Fix hardcoded custom option ID in html5 date picker template

In the HTML5 version of the datetime custom option template (which is not used by default), the custom option ID was hardcoded.

For more information, please refer to the merge request #666.

Many thanks to Kiel Pykett (Youwe) for the contribution!

  • Render loader above open modals

Previously the loader was displayed behind open modals.

For more information please refer to merge request #654.

Many thanks to Anil Suthar (Dolphin Web Solution) for the contribution!

  • Change input type for customer telephone number to from "number" to "tel"

For more information please refer to issue #540.

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

Removed

  • Nothing removed

1.1.20 - 2022-12-21

Added

  • Add support for show prices incl. + excl. tax on catalog pages

For more information please refer to merge request #259, merge request #606 and the theme-module merge request #266.

Many thanks to Dave Baker, Rich Jones and Ryan Hissey (all from Aware Digital) for the contribution!

  • Add option to render PDP breadcrumbs with JavaScript

Client side rendered PDP breadcrumbs are turned off by default and need to be enabled in the system configuration at
Hyvä Themes > Catalog > Hyvä Client-Side Breadcrumbs rendering.

Client side rendering shows the correct breadcrumbs path on PDP when a product is used in more than one category.

For more information please refer to issue #434.

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

  • Make product relation type available in list item template

If the product list was loaded as one of the relations upsell, crosssell or related, this is now available in the product list item.phtml template via $block->getData('item_relation_type').

For more information please refer to the default-theme merge request #603 and the theme-module merge request #264.

  • Add Password strength meter

For more information please refer to merge request #540.

Many thanks to Quyen D (Burgesscommerce) for the contribution!

  • Bypass waiting for user interaction when loading external scripts on the order success page

For more information please refer to issue #537 and theme-module issue #226.

Many thanks to John Hughes (Youwe) for the contribution!

  • Eagerly load the first images in product listings

The number of images to preload can be set in layout XML by specifying an argument eager_load_images_count on the category.products.list block.
By default, the first three images are eagerly loaded.

For more information please refer to issue #522.

  • Add layout directory to default theme purge config path

For more information please refer to issue #533.

Changed

  • Fix order email total rendering

Previously the totals were rendered above the order items.
In Luma, the totals.phtml and the tax.phtml templates are used both for order emails and for the customer order history.
In the past, Hyvä used the same template for both, too, which caused either the frontend or the emails not to be rendered properly.
This release moves the templates that are used in the store front to a new location, which means the standard Luma templates are used for the order emails.

This is a backward compatibility breaking change, but sadly there was no way around that while still fixing the order emails.

For more information please refer to issue #485.

  • Fix one-off max-width for layered navigation mobile breakpoint detection

For more information please refer to issue #507.

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

  • Avoid transition-all in sliders for better CSS layout render performance

For more information please refer to issue #509.

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

  • Require reset-theme version 1.1.3 for product-main-full-width styling to work

This version of the reset theme changes the main container CSS class if the product-full-width page layout is selected, and styling in the 1.1.20 default-theme uses that to remove the max-width from the container.

For more information please refer to merge request #639.

  • Remove redundant duplicate noEscape annotation comments

For more information please refer to issue #510.

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

  • Correct order of PHPDoc annotation to type var

For more information please refer to issue #511.

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

  • Clean up aria labels in pager

For more information please refer to issue #512.

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

  • Enable all recaptcha buttons after recaptcha script load

Previously, if more than one recaptcha form was present on a page, only the button for the first one was enabled.

For more information please refer to issue #515.

  • Fix PageBuilder column responsiveness

For more information please refer to issue #516.

  • Separate contact details from contact form as a child block/template

This allows easier placement of store contact information or other content next to the form.

For more information please refer to merge request #580.

  • Fix type numeric error with PHP 8.1 if pager limit "all" is enabled

For more information please refer to merge request #584 and issue #530.

Many thanks to Barry vd. Heuvel (Fruitcake) for the contribution!

  • Update postcss-import plugin to 14.0

This resolves an issue when empty .css files are imported in the tailwind-source.css.

For more information please refer to issue #517.

  • Show swatches properly for out-of-stock options

Previously, if "Display Out Of Stock Products" was enabled, out-of-stock product options were displayed as available for configurable products.

For more information please refer to issue #506.

  • Show telephone input as required correctly

Previously the input field was rendered as optional even if it was configured to be required.

For more information please refer to merge request #595.

Thanks to Aad Mathijssen (Isaac) for the contribution!

  • Fix typo in css class name on customer account registration

The old misspelled class name still is present for backward compatibility in addition to the new corrected class.
Old incorrect class name: registation-container
New corrected class name: registration-container

  • Fix region select label in customer form when country without regions is selected

For more information please refer to issue #391.

  • Allow single option bundled products to be added to the cart from PLP

For more information please refer to issue #531.

  • Translate cart total labels when updated by JavaScript

For more information, please refer to issue #524.

  • Fix carrier_code TypeError: Cannot read properties of undefined

For more information please refer to issue #532.

  • Apply configured top destinations to country select

For more information please refer to merge request #633.

Many thanks to Mark van der Sanden (Ecomni) for the contribution!

  • Fix error with invalid recaptcha action name if block name had invalid characters

For more information please refer to merge request #634.

Many thanks to Alexander Menk (iMi digital GmbH) for the contribution!

  • Fix gift-message form submission on cart page

For more information please refer to issue #555.

Removed

  • Nothing removed

1.1.19 - 2022-10-22

Added

  • Show/Hide password in forms with an Eye-EyeOff icon

Passwords can now be hidden or shown by clicking on an eye/eye-off icon in the login, registration and edit account customer forms.

For more information, please refer to issue #498.

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

Changed

  • Fix double h1 tag on PDP

For more information, please refer to issue #452 and merge request #542

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

  • Fix Structured Data for Product Item (Missing Image)

This is a SEO related improvement.
For more information, please refer to issue #495.

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

  • Fix form submission if recaptcha is enabled

This change fixes a regression that was introduced with 1.2.0-beta1.

For more information, please refer to issue #497.

  • Remove customer-review-list anchor in pagination URL on PLP

In release 1.1.18 a #customer-review-list anchor was added to the pagination URLs, to fix an issue with product review pagination.
However, this anchor was also rendered on product listing pagination URLs.
This change now makes the pagination URL configurable via layout XML, and now only renders the review list anchor on product review pagination URLs.

For more information, please refer to issue #492.

Removed

  • Remove character ')' in subtotal cart page

For more information, please refer to issue #494.

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

1.1.18 - 2022-10-15

Added

  • Add support for Gift Messages

Previously this feature was not supported in Hyvä.

For more information please refer to merge request #505.

Many thanks to Ross McHugh (Monsoon Consulting) for the contribution!

  • Add extension point for shipping method selection in PHP Cart

Child blocks added to the checkout.cart.shipping block on checkout_cart_index will now be automatically rendered.
Also, the region code is now provided as a data-code attribute on the region select options.

For more information please refer to merge request #503.

Many thanks to Lucas van Staden (ProxiBlue) for the contribution!

  • Add extension point to cart drawer template

Four new layout containers are now available to customize the cart drawer: cart-drawer.top, cart-drawer.items.before, cart-drawer.items.after, cart-drawer.bottom.

For more information please refer to merge request #514.

Many thanks to Kiel Pykett (Youwe - formerly Fisheye) for the contribution!

  • Allow displaying products assigned to child categories for anchor category sliders

For sliders configured with a single category ID, the property include_child_category_products can now be set in layout XML on the slider block to cause products assigned to child categories to be displayed, too.

For more information please refer to issue #473.

  • Added missing customer widget templates

Before the Luma version of the templates was used due to missing overrides in Hyvä. The new templates are Magento_Customer::widget/fax.phtml, Magento_Customer::widget/gender.phtml and Magento_Customer::widget/taxvat.phtml.

For more information please refer to merge request #543.

Changed

  • Validation of Postcode and Telephone fields in customer address form

The validation for the customer/address/edit form now uses the advanced validation library to validate postcode and region according to the selected country, and also applies telephone validation according to the store configuration.

For more information please refer to issue #114.

Many thanks to Oleksandr Melnychuk (Atwix) for the contribution!

  • Automatically scroll to review section on review pagination

Previously, the page reloaded at the page top, and a visitor would have to manually scroll down to the reviews page they navigated to.

For more information please refer to issue #453.

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

  • Fix wrong product name used in review section when editing wishlist items

For more information please refer to issue #462.

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

  • Open the overlay keyboard when user clicks on search icon on mobile

This allows visitors to start typing right away, without first having to tap the search bar.

For more information please refer to issue #456.

Many thanks to Nick Hall (MFG Supply) for the contribution!

  • Fix gallery images not compatible with many images

Previously, when quite a lot of images where added to a product, say 6 or more, the full-screen gallery view on mobile was filled up with thumbnails.

For more information please refer to issue #136.

Many thanks to Oleksandr Melnychuk (Atwix) for the contribution!

  • The cart drawer should use the QuoteShortcutButtons block instead of InCatalog

Third party extensions can now correctly use the is_catalog_product property to determine if the product actions are being rendered on a PDP / PLP or on a checkout related page.

For more information please refer to merge request #504.

Many thanks to Ravinder (redChamps) for the contribution!

  • A11y improvement: use aside tag for sidebars

The aside tag is used to mark certain elements as complimentary to the main content.
The sidebar main and additional are always complimentary to the catalog page so it makes sense to use the aside html tag instead of a generic div.

For more information please refer to issue #458.

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

  • Fix comment description of the meaning of the assistance_allowed value

Previously the comment reversed the meaning of the value.

For more information please refer to issue #461.

Many thanks to Jerke Combee (Elgentos) for the contribution!

  • Fix the URL suffix determination for recently viewed products

This fixes a bug that occurred when the product URL suffix was configured to be empty.

For more information please refer to issue #463.

  • Fix crosssell slider on the PHP-Cart page if PageBuilder is disabled

For more information please refer to issue #457.

Many thanks to Rich Jones (Aware Digital) for the contribution!

  • Allow some HTML tags in order comments

Since Magento 2.4.4 the HTML tags ['b', 'br', 'strong', 'i', 'u', 'a'] are allowed to be rendered in order comments on the frontend.

For more information please refer to issue #465.

  • Fix configurable-selection-changed event arguments

For more information please refer to issue #468.

Many thanks to Richard Brown (Lawson-His) for the report and the suggested fix!

  • Fix edit and remove icons for bundled products in the PHP-Cart

For more information please refer to issue #469.

  • Use PHP reCaptcha view model constants instead of strings to refer to reCaptcha configuration

The ReCaptcha view model now has constants for the different built-in forms supporting ReCaptcha.

For more information please refer to merge request #517.

Many thanks to Kiel Pykett (Youwe - formerly Fisheye) for the contribution!

  • Simplify password confirmation match checking function

For more information please refer to merge request #521.

Many thanks to Kiel Pykett (Youwe - formerly Fisheye) for the contribution!

  • Integrate changes from Magento 2.4.5

These changes include rendering numbers with a LocalFormatter, and adding new view models to that allow disabling some functionality in Adobe Commerce.
Because Hyvä supports Magento since 2.4.0 wrapper classes are used to provide the same functionality in Magento versions before 2.4.5.

For more information please refer to issue #479.

Many thanks to Peter Jaap Blaakmeer (Elgentos) for the contribution!

  • Replace h2 in authentication-popup with strong tag to avoid wrong title tag order

This change is a SEO improvement.

For more information please refer to issue #486.

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

  • Fix broken review summary link and unintentional scroll

For more information please refer to issue #486.

Many thanks to Kenneth Danielsen (Novicell) for the contribution!

Removed

  • Nothing removed

1.1.17 - 2022-08-16

Added

  • Specify the minimum node version >=12.13.0 in package.json

This is currently for informational purpose only since it will not be automatically checked without a .npmrc file with strict-engine=true.
The version constraint >=12.13.0 matches the one of TailwindCSS v2.

For more information please refer to the issue #423.

  • Add show password functionality

The "Show Password" functionality was added to Luma in Magento versions 2.4.3-p2 and 2.4.4. This MR adds support for this feature to Hyvä.

For more information please refer to the merge request #484.

Many thanks to Guus Portegies (Cees en Co) for the contribution!

  • Add .gitlab-ci file

Some tests and checks are now automatically executed in GitLab pipelines for new merge requests.
Currently some do not have to succeed (for example the code style check), but this will change at some point in the future.

  • Add absolute footer block

Hyvä now also contains this customization point (like Luma).

For more information please refer to the merge request #486.

Many thanks to Erwin Romkes (Moore) for the contribution!

  • Add Out Of Stock label in product list item template

For more information please refer to the issue #412.

Many thanks to Nataly Gorupaha (Atwix) for the contribution!

  • Add default red textColor

The css class text-red was used in several templates, but no default text color was declared for the default theme.

For more information please refer to the merge request #497.

Changed

  • Bugfix: Resolve "Cannot use object of type stdClass as array"

For more information please refer to the issue #435.

  • Bugfix: Add missing bundled product cart item renderers

Previously the selected options on bundled products where not shown on the PHP cart page.
For more information please refer to the issue #440.

Many thanks to Laura Folco for the report and suggesting a fix!

  • Bugfix: Use JS to determine redirect target after addToCart in cached product list item template

For more information please refer to the issue #445.

Many thanks to Zach Nanninga (DEG Digital) for the detailed report and suggested solution!

  • Use new hyva.getUenc function to encode the current URL

Previously, a number of templates used '&unec=' + btoa(window.location.href) to add the `uenc query parameter to an url. This is missing additional encoding of+,/and=done by\Magento\Framework\Url\Encoder::encode()`.

For more information please refer to the issue #450.

  • Bugfix: Fix ReCaptcha loader if no ReCaptcha v3 website key is configured

For more information please refer to the merge request #475.

Many thanks to Laura Folco for the help debugging the issue!

  • Bugfix: Fix call to replaceDomElement within reloadCartContent()

For more information please refer to the issue #439.

  • Bugfix: Shipping methods with underscores in method code break the PHP cart

For more information please refer to the issue #433.

Many thanks to Stephanie Ehrling (Artplants) for the report and suggesting a fix!

  • Bugfix: Show new password mismatch method on customer edit form

For more information please refer to the issue #422.

Many thanks to Nataly Gorupaha (Atwix) for the contribution!

  • Update the minimum version requirement for @hyva-themes/hyva-modules

This change is only applicable to new installs and ensures the node version 12 compatible release of @hyva-themes/hyva-modules is installed by npm install.
Previously an older version of the library was installed by default that required node version 14 or newer.

For more information please refer to the issue #423.

  • Fix: Google PageSpeed warning "Links are not crawlable"

For more information please refer to the issue #429.

Many thanks to Ryan Hissey (Aware Digital) for the contribution!

  • Improvement: Reset PDP Gallery when all options are reset to "Choose an option..."

For more information please refer to the issue #432.

  • Improvement: Sort the updated PDP Gallery when configurable options are selected

Previously only the initial gallery was sorted according to the image position specified on the product.

For more information please refer to the issue #426.

Many thanks to Irina Smidt (Customgento) for the contribution!

  • Bugfix: add missing closing HTML tag on cart page

For more information please refer to the merge request #481.

Many thanks to Simon Sprankel (Customgento) for the contribution!

  • Improvement: Correctly associate labels to fields in login form

For more information please refer to the merge request #482.

Many thanks to Lucas van Staden (ProxiBlue) for the contribution!

  • Improvement: Add missing import for ViewModelRegistry in template

The class name is only referenced from a PHPDoc annotation, so previously no error was thrown, but now, with this change, IDE autocompletion correctly works for the $viewModels variable.

For more information please refer to the issue #442.

Many thanks to Guus Portegies (Cees en Co) for the contribution!

  • Improvement: fix minor CLS on mobile menu

The "X" SVG to close the mobile menu was displayed on page load and then hidden by JS, causing it to be displayed briefly and causing a small CLS.

For more information please refer to the merge request #485.

Many thanks to Nick Hall (MFG Supply) for the contribution!

Removed

  • Remove hover classes for mobile

The hover state is generally not available on mobile devices, thus the classes previously had no effect.

For more information please refer to the issue #444.

Many thanks to Jesse de Boer (Elgentos) for the contribution!

1.1.16 - 2022-06-16

Release 1.1.16 is a backward compatible bugfix release.

Added

  • Nothing added

Changed

  • Fix rendering of newsletter subscription form in footer

In 1.1.15 a bug was introduced while extracting the copyright into a separate template. This bug is now fixed.

For more information please refer to the Merge Request #470.

Removed

  • Nothing removed

1.1.15 - 2022-06-13

Upgrade guide

Backward incompatible warning The default cart page has been replaced with a Server-Side-Rendered version using PHP and AlpineJS, if you're upgrading and want to keep the GraphQL cart you need to install the GraphQL cart separately. You should be able to keep using the GraphQL cart without further customizations and we will keep supporting both versions of the cart.

If you're upgrading from <1.1.15 please check the documentation page on upgrading. Any additional information and known bugs/issues to this release will be documented there.

Added

  • Support for reCaptcha v2 "I'm not a robot" and v2 invisible

This now provides feature parity with Luma. The implementation was also improved to make it easier to implement custom captcha integrations.

More details can be found in the Merge Request #340 and the theme module Merge Request #153.

Many thanks to Amanda Bradley (Youwe - formerly Fisheye) for the contribution!

  • Add additional actions container to product detail page

This allows adding additional actions to the list of add-to-wishlist, add-to-compare and so on.

For more information please refer to the Merge Request #448.

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

  • Add recently ordered sidebar

Please refer to the Issue #452 for more details.

Many thanks to Nataly Gorupaha (Atwix) for the contribution!

  • Add wishlist sidebar

Please refer to the Issue #384 for more details.

Many thanks to Nataly Gorupaha (Atwix) for the contribution!

Changed

  • Replace the GraphQL cart with a PHP cart implementation using AlpineJS and Ajax

This is a backward incompatible change, but existing sites can install the hyva-themes/magento2-graphql-cart extension to restore the previous functionality in a backward compatible way.

For more information please refer to the Merge Request #397.

  • Use SVG ViewModel instead of hardcoded SVGs in default theme

This includes adding the SVG loader to the theme web folder instead of hardcoding it in the loader template.

For more information please refer to the Merge Requests #431 and #432.

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

  • Rely on automatic purge config for theme-module

By default, the automatic merging of tailwind.config.js is now used to add the theme module templates to the content path config of any Hyvä theme.

Please refer to the Issue #398 for more details.

  • Support multiple ratings

Previously only a single rating was shown.

Please refer to the Issue #374 for more details.

Many thanks to Nguyen Miha (JaJuMa) for the contribution!

  • Use a tag on current breadcrumb to improve a11y

This improves a11y since the aria-current attribute is only allowed on anchors.

For more information please refer to the Merge Request #436.

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

  • Fix layout XML parent for Send Friend icon in product info

Previously the icon was not rendered.

For more information please refer to the Merge Request #437.

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

  • Correct spacing beside toolbar pager dropdown

For more information please refer to the Merge Request #438.

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

  • Fix rendering of sidebar on desktop for categories with empty content area

Please refer to the Issue #312 for more details.

Many thanks to Nataly Gorupaha (Atwix) for the contribution!

  • Move footer copyright into separate template file

Also include a comment to make it easier to render the copyright configured in the admin.

For more information please refer to the Merge Request #442.

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

  • Reserve space for form validation message on validation container, not input field

The previous solution required awkward workarounds for multiple inputs like radio buttons within a container.

For more information please refer to the Merge Request #445.

  • The minicart now shows the configured amount of items

Please refer to the Issue #386 for more details.

Many thanks to Nataly Gorupaha (Atwix) for the contribution!

  • Fix: Selecting country with no regions hides region field but retains label

Please refer to the Issue #391 for more details.

Many thanks to Nataly Gorupaha (Atwix) for the contribution!

  • Use better reCaptcha v3 action names for better stats collection

For more information please refer to the Merge Request #422.

Many thanks to Lucas van Staden (ProxiBlue) for the contribution!

  • Fix: Render product image for selected attributes

This is accomplished by rendering the product image using $block->getImage() instead of the view model, so the swatch logic is applied automatically.

Please refer to the Issue #402 for more details.

  • Add required attribute to email and password fields in login form

Many thanks to Nataly Gorupaha (Atwix) for the contribution!

  • Fix PayPal in context JSON deserialization issue

Please refer to the Issue #403 for more details.

Many thanks to Nataly Gorupaha (Atwix) for the contribution!

  • Improve column width in compare product table

For more information please refer to the Merge Request #439.

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

  • Improve pager a11y

The improvements consist of a number of changes.

For more information please refer to the Merge Request #435.

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

  • Move sales order totals template to correct folder

Previously the Luma template was used accidentally.

Please refer to the Issue #405 for more details.

  • Fix: search field renders quotes as escaped HTML entity

Please refer to the Issue #408 for more details.

  • Fix: initConfigurableOptions is not defined on out of stock configurable product page

Please refer to the Issue #410 for more details.

  • Fix ApplePay shortcut button throwing an exception when logged in on FPC cache pages

The virtual type Magento\Catalog\Block\ShortcutButtons\InCatalog is now used instead of the original type Magento\Catalog\Block\ShortcutButtons.

Please refer to the Issue #413 for more details.

  • Use image of product matching partial option selection

Previously, the product image was only swapped when a full option selection was made. Now the image is updated already after the first selection (like in Luma). Also, images already in the initial image set will not be added to the gallery as duplicates when "append to gallery" is selected.

For more information please refer to the Merge Request #462.

Removed

  • Removed the composer.lock file from the hyva-themes/magento2-default-theme package

1.1.14 - 2022-04-29

Added

  • Allow modules to automatically add tailwind config and css to styles.css compilation

This feature allows modules to be ready to use after installation, without manual adjustments to a themes purge config. The feature is enabled for new themes automatically, but can also be used in older themes by installing the npm module @hyva-themes/hyva-modules, and making two small adjustments to the tailwind.config.js and the postcss.config.js files.

More information can be found in merge request #394.
The documentation for this new feature will be published shortly, too.

Changed

  • Compress default-theme background hero image

This change reduces the file size by 92%!

Many thanks to Jesse de Boer (Elgentos) for the contribution!

  • Do not cache preconfigured swatch options while editing cart

This change in addition to small change in the swatches JS allows setting default product options in PHP again.

For more information see issue #368.

Removed

  • Nothing

1.1.13 - 2022-04-12

Added

  • Support for Magento_Vault

The payment vault on the customer account area is now supported. Support during checkout depends on the installed checkout.

  • Show configurable product option price adjustments in attribute dropdowns

Previously the price adjustments where not displayed in hyvä (but where shown in Luma).

More information can be found in the merge request #401

  • Add id parameter to reset password form required in 2.4.3-p2 and 2.4.4

This backward compatible change is required for Magento 2.4.4.

More information can be found in the issue #363

  • Add i18n/en_US.csv with all Hyvä specific strings

This can serve as a base for custom translations.
Note: Some pre-made localizations are available at https://gitlab.hyva.io/hyva-themes/internationalization (de_DE, es_ES, fr_FR, it_IRT, nl_NL, pl_PL)

More information can be found in the merge request #223

Many thanks to Alexander Menk (iMi digital GmbH) for the contribution!

Changed

  • Fix z-index issue on homepage for page messages

Both the page messages and the section below the hero image have a z-index of 10, which results in the section covering the page message.

More information can be found in issue #342

  • Fix Safari Customer account icon display bug

The Customer Account icon button in the top menu previously displayed wrong in Safari.

More information can be found in issue #341

Big thanks to Sean van Zuidam (Mooore) for the contribution!

  • Fix priority of x-cloak css so it works in all cases

Previously more specific styles prevented elements with the x-cloak attribute from being hidden.

More information can be found in issue #328.

Many thanks to Eduard Chyzhyk (Mageworx) for the contribution!

  • Fix inconsistent currency format

So far only the store language was used to determine how to format the currency, but in some cases that is not enough, for example de_CH (Switzerland German) vs de_DE (Germany German).

More information can be found in the issue #345

  • Fix log "Broken reference: the 'div.sidebar.additional' tries to reorder itself"

The error message previously was logged on most requests.

More information can be found in the issue #348.

Big thanks to Sean van Zuidam (Mooore) for the contribution!

  • Consistently use hyva.formatPrice() reducing code duplication

More information can be found in the merge request #404

  • Fix: GraphQL queries in recently viewed product widgets assume top level Magento install

Previously the store code was missing from GraphQL queries, so in stores with a subfolder in the path, the GraphQL query was be broken.

More information can be found in the issue #336

Many thanks to Salvatore Capritta (Synthetic) for the contribution!

  • Bugfix: Can't Override Product Slider Item Template Using Layout XML

More information can be found in the issue #340

  • Bugfix: Add all items to cart from wishlist not working

More information can be found in the issue #358

Many thanks to Krijn van de Kerkhof (X-com) for the contribution!

  • Bugfix: Google Map API SDK link broken

More information can be found in the issue #357

  • Centralize product list item rendering to remove code duplication

Previously the same logic to render product list items was repeated in multiple templates.
This required keeping changes in sync, especially when a new cache key item needed to be added.
A new method was introduced to the ProductListItem view model in the theme module, that now is used by all the templates.

More information can be found in the theme module issue #155

  • Fix typo in HTML id attribute in checkout discount form toggle

More information can be found in the issue #343

  • Apply system configuration setting to show grand total in cart incl. or excl. tax

More information can be found in the issue #334

  • Fix: Edit cart item causes default values to be cached for PDP

More information can be found in the issue #283

  • Display unavailable shipping rates like in Luma in shipping estimation

Depending on the system configuration settings Luma hides or displays unavailable shipping methods during the shipping rate estimation. This change replicates that behavior in Hyvä.

More information can be found in the issue #292

  • Show image of configurable product in cart if configured

Previously the image of the selected simple product was shown.

More information can be found in issue #326

Many thanks to Lucas van Staden (ProxiBlue) for the contribution!

  • Fix pager jump styles

Previously the "gap" in the pager buttons was missing some styles.

More information can be found in the merge request #419

Many thanks to Alex Galdin (IT-Delight) for the contribution!

  • Fix PageBuilder full width row support

Previously full width and full bleed row content elements did not break out of the main content container.

More information can be found in the issue #361

Removed

  • Remove dependency on Magento_SendFriend

Previously, static-content:deploy failed if the Magento_SendFriend module was replaced/removed.

More details can be found in the merge request #344

Many thanks to Peter Jaap Blaakmeer (Elgentos) for the contribution!

1.1.12 - 2022-02-07

Added

  • Add extra action block to cart drawer

This is new extension point that allows displaying additional checkout option buttons. In Luma, this block was rendered as HTML server side but then displayed using JavaScript. In Hyvä, the block is rendered server side.

More information can be found in the merge request #386

Many thanks to Ravinder (redChamps) for the contribution!

Changed

  • Bugfix: Resolve "Users cannot scroll on mobile menu"

Please refer to issue #301 for more information.

Thanks to Ben Crook (Space48) for reporting!

Removed

  • Nothing

1.1.11 - 2022-01-28

Added

  • Add testing selector attributes to the PDP

More information can be found in the merge request #367

Many thanks to Andrew Millar (Elgentos) for the contribution!

  • Add missing cart totals container as extension point

More information can be found in issue #324

  • Added missing 'form_additional_info' container to login form

This adds a missing extension point that also is present in Luma.

More information can be found in the merge request #378

Many thanks to Ravinder (redChamps) for the patch!

  • Add Hyvä theme-module to default tailwind purge list config

Previously tailwind classes used in the modal templates where not picked up by default.

More information can be found in issue #327

Changed

  • Bugfix: Fix cache key for all instances of product_list_item

The PageBuilder carousel and grid content type used the shared product list item block, but previously did not set the full cache information on the instance before rendering. This caused the previously rendered product to be shown.

More information can be found in issue #323

  • Bugfix: Fix broken "Track your order" link on order view page

More information can be found in issue #329

Many thanks to Alex Galdin (IT Delight) for the contribution!

  • Bugfix: Fix rendering of escaped html entities in product names in compare list

Previously special characters in the product name where escaped twice in the product compare list.

More information can be found in issue #313

Many thanks to Matt Walsh for the contribution!

  • Fix checkbox custom option checked property update

Previously it was not possible to programmatically alter the checkbox state after a user interacted with it.

More information can be found in issue #332

Many thanks to Simon Sprankel (Customgento) for the contribution!

  • Fix structured data for product reviews on the product detail page

More information can be found in issue #321

Many thanks to Lucas Vu (JaJuMa) for the contribution!

  • Fix noisy messages in error log on search result page

Previously the redeclaration of a container on the search results page polluted the exception.log with main.CRITICAL: The element "search_result_list" can't have a child because "search_result_list" already has a child with alias "additional"

More information can be found in issue #304

  • Add guard clause against undefined index in swatch renderer template

Previously, if a product attribute was set to "Used in Layered Navigation": "Filterable (no results)", an error was displayed.

More information can be found in issue #325

  • Prohibit search with less than 3 characters

More information can be found in issue #330

Removed

  • Nothing

1.1.10 - 2022-01-14

Added

  • Add container extension point to product list item template

This allows extensions to add new items to the element containing the add-to-cart, wishlist and compare buttons.

More information can be found in the merge request #361

  • Add product_sku filter for SSR product sliders

This provides feature parity with the GraphQL Hyvä product slider.

More information can be found in issue #293

  • Add Order Status to Order Detail page in Customer Account

More information can be found in issue #318

  • Many thanks to Lucas Vu (JaJuMa) for the contribution!

Changed

  • Allow installation in PHP 8 environments

More information can be found in issue #297

  • Bugfix: Do not render max allowed amount if "falsy" in add-to-cart form

More information can be found in issue #295

  • Apply logo_file if set in layout XML and no logo is configured in the admin area

This allows setting the logo with a block argument in layout XML as documented in the devdocs.

More information can be found in issue #309

  • Bugfix: swatch options type number type mismatch in switch statement

More information can be found in issue #307

  • Bugfix: hide swatch options for disabled products

More information can be found in issue #307

  • Initialize Send Friend form with one input (instead of zero)

More information can be found in issue #310

  • Bugfix: do not apply position sort order in product sliders if flat catalog is enabled

More information can be found in issue #308

  • Bugfix: on the cart page, keep discount in totals after estimating shipping and tax

More information can be found in issue #296

  • Bugfix: handle multiple tax rates when estimating shipping and tax

More information can be found in issue #280

  • Bugfix: Can't remove product from compare list

More information can be found in issue #300

  • Bugfix: Fixed class name typo to change the width of totals on large screens

More information can be found in merge request #366

Thanks to Guus Portegies (Cees en Co) for the contribution!

  • Improvement: Better SSR slider styling for overflowing pagination bullets and equal item heights

More information can be found in issue #320

Removed

  • Nothing removed

1.1.9 - 2021-11-29

Upgrade guide

If you're upgrading from <1.1.8 please check the documentation page on upgrading. Any additional information and known bugs/issues to this release will be documented there.

1.1.9 Upgrading docs

Added

  • Use Tailwind CSS JIT mode

Update the default theme css and tailwind config so it is compatible with the Tailwind CSS JIT mode.

  • Use npm run build-prod to build a product bundle with the JIT compiler.
  • Use npm run build-dev to build a unpurged development bundle with the AOT compiler.
  • Use npm run watch to run the JIT file watcher recompiling the css after any change.
  • Use npm run browser-sync to start the browser-sync file watcher.
    Use PROXY_URL="https://my-magento.test npm run browser-sync to specify the backend host.

  • Support recently viewed products

In addition to the regular Recently Viewed Product widget, Hyvä also supports configuring recently viewed products using the system configuration.

More information can be found in the merge request #243

Many thanks to Faran Cheema (Aware Digital) for the contribution!

  • Add react-container.phtml to example purge config section in tailwind config

With this change uncommenting the line is all that is required after installing the react checkout.

More information can be found in merge request #292.

Many thanks to Peter Jaap Blaakmeer (Elgentos) for the contribution!

  • Add PageBuilder widgets, styles & product templates

Since PageBuilder is now bundled with Magento Open Source, it makes sense to support it out of the box in Hyvä.

More information can be found in the merge request #295

Many thanks to John Hughes (Fisheye) for the contribution!

  • Add .gitignore to web/tailwind with node_modules/ entry

More information can be found in the merge request #303

Many thanks to Lorenzo Stramaccia (magespecialist) for the contribution!

  • Bugfix: display values for all custom option types on cart page

More information is available on the issue #187

  • Support reCAPTCHA on product review form

More information is available on the issue #70

  • Add product search autocomplete

More information is available on the merge request #325

  • Add popular search terms page

More information is available on the merge request #326

  • Add advanced search page and advanced search results page

More information is available on the issue #126

  • Add support for downloadable product link selection on PDP

More information is available on the issue #209

Many thanks to Daniel Bello (Sherocommerce) for the contribution!

Changed

  • Use SSR rendering for product sliders instead of GraphQL

The product sliders no longer use GraphQL. The graphql product slider template still is present for backward compatibility, but it is no longer used.
The items use the product listing template, so add-to-cart and swatches are now supported, too.

More information can be found on the merge request #294

  • Improve Send to Friend

The form has been improved a lot, including support for reCAPTCHA.

More details can be found in the merge request #228

Many thanks to Lucas van Staden (Proxiblue) for the contribution!

  • Remove defer attribute on CSS link as it has no effect

More details can be found in the merge request #249

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

  • Improve Breadcrumbs markup accessibility

More details can be found in the merge request #288

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

  • Improve compare and wishlist scripts for product list items

Previously the scripts to initialize the Alpine.js components where rendered for each product list item. With this change they are only rendered once, thus reducing the pagesize.

More details can be found in the merge request #289

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

  • Improve YouTube integration

  • make sure to use youtube-nocookie.com if possible

  • only initialise / embed YouTube once
  • update iframe API URL

More details can be found in the merge request #290

Many thanks to Simon Sprankel (Customgento) for the contribution!

  • Bugfix: Apply logo configuration in Magento 2.4.3 and newer

More information can be found in the issue #252

  • Adds fieldset as secondary parent selector to custom field styles

Previously field styles where not applied if no form parent tag was present.

More details can be found in the merge request #296

Many thanks to Josh Cairney (Swarmingtech) for the contribution!

  • Remove img tag from list of allowed HTML when using escaper::escapeHTML because it throws error

More details can be found in the merge request #297

Many thanks to Wilfried Wolf (Sandstein) for the contribution!

  • Bugfix: Fix custom option price calculation

Custom option prices where wrong if the last custom option has no price assigned.

More details can be found in the merge request #298

Many thanks to Simon Sprankel (Customgento) for the contribution!

  • Use GraphQL variables instead of string replacements

This fixes a number of issues related to parameter escaping and serialization as well as making the queries editable with the GraphqlEditor as described in the docs.

A new GraphQlQueriesWithVariables view model provides the matching queries. The old GraphQlQueries view model still exists unchanged for backward compatibility.

All queries and mutations now are named, which should help with debugging.

More information can be found in the issue #261

  • Move GA block to before.body.end by default

By default the GA block is meant to be placed in before.body.end for performance reasons.

More details can be found in the merge request #305

Many thanks to Josh Cairney (Swarmingtech) for the contribution!

  • Do not render HTML items with duplicate id attributes on product list toolbar

This change increases ARIA accessibility compliance.

More information can be found in the issue #279

  • Apply product settings to qty input

Previously many product settings where ignored.

More details can be found in the merge request #308

  • Make translated string consistent with Luma

Previously Hyvä used the string "Please enter a coupon code", while in Luma the string "Please enter a coupon code!" is used.

More details can be found in the issue #212

  • Disable page scrolling if cart loader overlay is visible

More information can be found in the issue #218

  • Validate message length according to configured constraints when sharing the wishlist

More information can be found in the issue #223

  • Apply configuration "Redirect Customer to Account Dashboard"

Previously customers where always redirected to the customer account page regardless of the configuration setting.

More information can be found in the issue #234

  • Hide zero product price if it is not salable

Products that are not salable and have a price > zero still are displayed with the price. This does not matche the behavior in Luma.

More information can be found in the issue #314

  • Bugfix: Preselect product options when editing from cart

More information can be found in the issue #240

  • Bugfix: Escape customizable product option title in JS string

Previously product option titles included a ' caused a JavaScript error.

More information can be found in the issue #241

  • Bugfix: On PDP, uncaught TypeError: Cannot read property 'type' of undefined at Proxy.isTextSwatch

The issue only occurred with a configurable product set up with only one configurable attribute that is a swatch while at least one child product is out of stock and at least one child product is disabled.

More information can be found in the issue #190

Thanks to Guus Portegies (Cees en Co) for figuring out the steps to reproduce the issue!

  • Bugfix: On Cart Page, JavaScript error on invalid country configuration

The error occurred if the configured default shipping country was not included in the list of allowed countries. Now the checkout will continue to work, but an explanatory error message is logged to the browser console.

More information can be found in the issue #259

  • Bugfix: include the current category ID in product list item cache key

More information can be found in the issue #260

  • Bugfix: On PDP, remove duplicate HTML element ID customer-reviews

More information can be found in the issue #262

  • Bugfix: Fix product reviews pagination

More information can be found in the issue #161

  • Bugfix: Apply sort by relevance URL parameter on product list page

More information can be found in the issue #273

  • Bugfix: prevent duplicate out-of-stock error messages on cart page

More information can be found in the issue #329

  • Bugfix: specify proper order for sidebar in sm breakpoint

Render the sidebar-main before the main content on sm screens.

More information can be found in the issue #242

  • Styling improvements

  • Moved container configuration from css to tailwind.config.js.

  • Reduce layout shifts on PHP sliders.
  • Since the refactor of columns from flex to grids, many pages have had double paddings. These nested container classes have now been removed.

More information can be found in the merge request #332

  • Replace stock image with the new Hyvä logo on default homepage content

More information can be found in the issue #278

  • Bugfix: hide scrollbar in Firefox like in webkit

More information can be found in the merge request #336

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

  • Bugfix: Hide configurable order item children in order page

More information can be found in the issue #281

  • Magento Coding Standard compliance and code improvements

Many small changes where made to make the code pass the Magento Coding Standards phpcs rules. Besides following the Magento Coding Standard, many small refactorings where made so the code complies with our own standards. All these changes should be backward compatible. The changes include: - Removing underscore prefixs from PHP variables in templates - Use let and const instead of var in JavaScript code - Remove usages of $this = this in JavaScript code

More information can be found in the merge request #344

Removed

  • Nothing removed

1.1.8 - 2021-09-24

Added

  • Add estimate shipping form to cart page

More details can be found via the issue #147.

  • Add customer account update email checkbox

The customer account edit form was previously missing this checkbox.

Thank you to Josh Cairney @ Swarming Technology (@joshcairney) for the contribution.

  • Add container on cart page for custom product type options

This container allows rendering additional options for cart line items.
More details can be found in the commit 029d2b.

  • Add Date-of-Birth form field template with datepicker

Thanks to Alex Galdin @ integer_net (@alexgaldin) for the contribution!

  • Add additional information container to cart page

The container is rendered below the coupon form field on the cart page. More details can be found in the commit 097918.

  • Add container to totals on cart page to render custom totals

The container is rendered below the existing totals but before the grand total. More details can be found in the commit 58f447.

  • Allow setting css classes on generic slider

If a value is set for the property maybe_purged_tailwind_section_classes on block class rendering the slider, it will be used as the container class="" attribute value. If the property is not set, the previous value is used, meaning this is a backward compatible change.

More details can be found in merge request #246.

  • Bugfix: add page content for customer/account/confirmation page

Previously, if customer registration required email confirmation, clicking the link on the on-page message triggered a stack trace on the page customer/account/confirmation.

More information can be found in the issue #245.

  • Add meta og tags to PDP

Add meta og tags to the PDP.

Changed

  • Bugfix: Escape product review gql mutation payload values

More information about this backward compatible change can be found in the commit ff9095

  • Bugfix: Fix issues with old Safari browser

Details on backward compatible change can be found in the merge request #261

Thank you to Guus Portegies @ Cees en Co (@gjportegies) for the contribution!

  • Bugfix: Make Google Analytics compatible with Magento_GoogleTagManager

Previously Google Analytics revenue data was not collected on the frontend order success page on Adobe Commerce.

Thanks to Jesse de Boer @ Elgentos (@jesse) for investigating!

  • Bugfix: Align subtotal excl. tax value on cart page to the right like the other total modals

  • Split mobile and desktop menu into separate .phtml files

Decoupling the two makes customizing one of the views possible without influencing the other menu.
The change is backward compatible.

  • Update TailwindCSS to the latest version

The version constraint in the package.json is now set to 2.2.9.
This is a backward compatible change.

  • Apply Logo Dimensions set in the Adminhtml Theme Configuration

Previously the logo height and width set in the admin theme config where not applied. As long as there is no size configured on the theme, the previous dimensions set in layout XML are still used. Because the related view models where added to Magento only in version 2.4.3, they where copied into the Hyva_Theme module to provide forward compatiblity for older Magento versions.

More details can be found in the issue #221.

Thanks to Tomas Kalasz @ CS2 (@TKalasz) for investigating and to Ravinder @ redChamps (@rav-redchamps) for the patch!

Removed

  • Removed topmenu_static.phtml template

The template is now part of the hyva-ui repository.

1.1.7 - 2021-08-25

Added

  • nothing

Changed

  • Bugfix: Remove trailing space in customer prefix option values

See commit

Thanks to Daniel Galla (IMI)!

  • Bugfix: Allow authentication-popup to be resubmitted

In the authentication popup (when guest checkout is disabled), once incorrect information is entered and the form is submitted, the submit button is “disabled” and re-submitting with the correct information is not possible.

See issue #214

Removed

  • nothing

1.1.6 - 2021-08-12

Version 1.1.6 of the Hyva_Theme module is required for this update

Critical

  • Fix for: Subtotals break if address set without shipping method

In some edge cases an address could be set on a quote item without a shipping method. This would break the cart total display. If default behaviour to quote shipping address is changed, for instance by a third-party module, where an address is set on the quote by default, but no shipping method, this would break the cart instantly.

A direct patch/diff for this issue can be downloaded from commit 9a78264f diff

See commit 9a78264f.

  • Page columns layout refactored from flex to grids

For a more solid handling of 2columns-right and 3columns, the page layout was refactored to CSS grids. This means all pages now have 'containered' content by default, since the .columns div now has the tailwind container class applied.

If you want to build custom pages that are full-width, you now need to define your own page-layout. This means when you're creating custom pages, you no longer need to add in containers on all blocks you add, making layouts more consistent.

The changes were made in web/tailwind/components/structure.css and require you to remove the extra wrapper container we previously introduced in Magento_Theme/page_layout/override/base/2columns-left.xml. These changes can be viewed in commit 54c7f6d5.

In existing projects, you might end up with double margins on containers after this change. We would advise to either: 1. remove extra containers you added in your content 2. in case you don't want to update your existing content, keep the previous version of the files Magento_Theme/page_layout/override/base/2columns-left.xml and web/tailwind/components/structure.css in your child-theme.

Added

  • The current page is recalculated when toggling limiter in toolbar

In Magento_Catalog/templates/product/list/toolbar.phtml, the active page is now recalculated when you switch the limiter in the toolbar. This change reflects an update in Magento core that was introduced in version 2.4.0.

See commit db90fc6a

  • Regions now work as expected on customer account address forms

See commit 78f144fe

  • A lot of A11Y changed were made
    • Button focus styles are improved (using Tailwind ring classes)
    • Removed nested <nav> and <footer> elements
    • header search icon had empty ref, changed to button
    • header search was missing submit button
    • header customer account had no focus state
    • PLP toolbar now has logical tab order
    • Swatches are now visibly focusable
    • "skip header" link was missing
    • Sliders now have a focus-within border when focused

See Issue #204, Issue #205 and related Merge requests.

Thanks to Clever Age for reporting.

NB: if you report other A11Y issues to us we'd be happy to address them

  • Cart error messages are improved

General error messages in the cart are now styled (because they are now rendered by the global messages component). Cart-items that contain errors now show these errors in-line.

This requires an update of the hyva-themes/magento2-theme-module to version 1.1.6.

See all commits in Merge Request !249.

Changed

  • Fix for invalid aria-label on PDP swatches

aria-labelledby="radiogroup-label" was removed on the swatch render container div.

See Magento_Swatches/templates/product/view/renderer.phtml and commit (8970a96a)[https://gitlab.hyva.io/hyva-themes/magento2-default-theme/-/commit/8970a96adca6195012196b06550d11d50c7bd9a3]

Thanks to Hitesh Koshti (Ontapgroup) for contributing.

  • Fix for activeSelectOptions on Bundled product Radio options

Previously, when a radio option's quantity on a bundle product was set to user defined, the activeSelectOptions were improperly defined and the quantity input fields did not have their value or state properly set. The value got set to 0 and this negatively impacted the price calculation as well. Additionally, if the radio bundle option is required, there was no change binding on the "None" field.

See Magento_Bundle/templates/catalog/product/view/type/bundle/option/radio.phtml and commit dd51fdfb

Thanks to Josh Cairney (Swarming Tech) for contributing.

  • Fixed issue where Cart items qty input fields have no label on cart page

The cartItem quantity change input field now has a label for screenreaders

See Magento_Checkout/templates/cart/items.phtml

Thanks to Hitesh Koshti (Ontapgroup) for contributing.

  • Customer Login legends are now consistently styled

The form titles/legends for customer login and account registration are now consistently styled

Thanks to Hitesh Koshti (Ontapgroup) for contributing.

  • Fix for bundled product Radio/Select if only one option present

When either the radio or select is a single option the user defined checkbox did not take effect which disables the qty input.

See commit a3aaf192

Thanks to Ryan Hissey (Aware Digital) for contributing.

  • Bundled product qtyHelper method is now defined in parent component

The qtyHelper methods that memorize bundle option quantities selected by vistitors is now no longer generated for all bundle option, but defined once in the initBundleOptions component.

See commit 7d452495

Thanks to Ryan Hissey (Aware Digital) for contributing.

  • Cart display of totals and coupon are improved

We've refactored how cart subtotals look.

See commit e4efe6cc or related issue with screenshots #195

  • Fix re-definition of category.view.container in layout xml

In Magento_Catalog/layout/catalog_category_view.xml, the category.view.container is no longer redefined.

See commit 3ce5c6c1

Thanks to John Hughes (Fisheye) for contributing

  • The category.product.list.additional has moved to Magento_Catalog/layout/catalog_category_view.xml

Thanks to Nathan Day (Fisheye) for contributing

  • The Checkout button in cart is no longer disabled on error

The state of the cart can change by changing quantities in the cart. Clicking "Proceed to Checkout" performs a serverside validation of the cart and will return back at the cart in case the cart is still invalid.

An example is "Minimum order amount". If the minimum is not met, it will show a warning. If you would increase the quantity of an item so that the minimum is met, the message disappears. Validation takes place again when you continue to checkout.

See commit 1d5747d8

  • The product sections renderer trim on boolean error is fixed

The following error would occur: TypeError: trim() expects parameter 1 to be string, bool given in Magento_Catalog/templates/product/view/sections/product-sections.phtml

See commit e1459009

Thanks to Victor Chiriac (Magecheck) for reporting

Removed

  • none

[1.1.5] - version number SKIPPED

  • 1.1.5 was skipped in order to stay in sync with hyva-themes/magento2-theme-module

1.1.4 - 2021-06-16

Version 1.1.4 of the Hyva_Theme module is required for this update

Added

  • A Dispatch event that is triggered after accepting cookies

After accepting cookies window.dispatchEvent(new CustomEvent('user-allowed-save-cookie')); is now being triggered.

In the Hyva_Theme module (v1.1.4) cookies are not stored until this event is triggered.

See Magento_Cookie/templates/notices.phtml

Thanks to Mirko Cesaro (Bitbull) for contributing

  • Initial active gallery image now defaults to 0 if no main image set

If no main image is set, the initial active image is now set to 0.

See Magento_Catalog/templates/product/view/gallery.phtml

Thanks to Simon Sprankel (CustomGento) for contributing

  • In customer account area, sales items are now showing child-items

See Magento_Sales/templates/order/invoice/items.phtml, Magento_Sales/templates/order/items.phtml and commit 72751505

  • Customer account sales now show prices including tax

The layout file at Magento_Tax/layout/sales_order_item_price.xml was added, which adds tax to sales items in customer account, when needed.

  • Add-to-cart button on PDP has its original ID back

The add-to-cart button now contains id="product-addtocart-button" again, as it does in core Magento. This would help frontend testing frameworks in functioning.

See Magento_Catalog/templates/product/view/addtocart.phtml

Thanks to Laura Folco for contributing

  • Switching configurable options now dispatches an event

The event configurable-selection-changed is now dispatched from Magento_ConfigurableProduct/templates/product/view/type/options/js/configurable-options.phtml

This allows you to hook into this event in 3rd party modules or custom code.

Thanks to Simon Sprankel (CustomGento) for contributing

  • A generic slider template was added

Magento_Theme/templates/elements/slider-generic.phtml was added. Hyva_Theme module version 1.1.4 or higher is needed to use the generic slider.

Please refer to Rendering Sliders in the Hyvä Documentation for full details on how to use the generic slider.

  • Out of stock swatches are now shown

Out of stock swatches are now implemented on PLP and PDP. Also, the phtml that renders swatches is consolidated to a single file: Magento_Swatches/templates/product/swatch-item.phtml Same goes for swatch tooltips: Magento_Swatches/templates/product/tooltip.phtml

See commit fd3f3aa3

  • Email To Friend Button was added to PDP

The EmailToFried/SendFriend button has been added to the Product Detail Page.

See commit a5211128

Changed

  • Product List items are now cached in block_html cache

This reduces cost for products with swatches, as they are loaded for each product individually and not as part of the product collection.

See Magento_Catalog/templates/product/list.phtml

  • Top Menu now uses generic template block with viewmodel cache tags

Now that the Navigation View Model uses getIdentities() we can set the cache_tags on the topmenu and properly cache the menu in Full Page Cache.

See Magento_Theme/templates/html/header/topmenu.phtml and commit 6736ae66

  • PLP Titles have been reintroduced and Styled

We no longer remove the title in Magento_Catalog/layout/catalog_category_view.xml.

Beside that, the titles are restyled a bit overall.

Thanks to Rich Jones (Aware Digital) for contributing

  • Swatch options now correctly return label before value

See Magento_Swatches/templates/product/js/swatch-options.phtml

Thanks to Rich Jones (Aware Digital) for contributing

  • Swatch labels are now properly closed with

See Magento_Swatches/templates/product/view/renderer.phtml

Thanks to Rich Jones (Aware Digital) for contributing

  • Product Description is now rendering Directives properly

$productViewModel->productAttributeHtml() is now used to render product descriptions. That means variables in {{directives}} are now rendered.

See Magento_Catalog/templates/product/view/description.phtml

  • An empty product description no longer renders the parent element on PDP

See Magento_Catalog/templates/product/product-detail-page.phtml

Thanks to Victor Chiriac (Mage Check) for contributing.

  • Additional product data on PDP is now rendered with a renderer

As in default Magento (Luma), additional data is now rendered with a renderer (Magento_Catalog/templates/product/view/product-sections.phtml) which allows you to change the display of these sections to a custom implementation. This makes it a lot easier to implement a tabbed display or accordeon. It also enables you to render additional data from 3rd party modules using the standard Magento layout group:

<block class="Magento\Catalog\Block\Product\View\Attributes" template="Magento_Catalog::product/view/description.phtml" group="detailed_info"/>

See - Magento_Catalog/layout/catalog_product_view.xml and files in Magento_Catalog/templates/product/view/sections/ - or all commits in Merge Request 201

  • Customer account registration pages are no longer cached

If any error occurred during customer signup & customer was being redirected back to the registration form with error message. But the form data would not be preserved due to full-page caching.

cacheable="false" has now been added to the customer_form_register block.

See Magento_Customer/layout/customer_account_create.xml

Thanks to Ravinder (redMonks/redChamps) for contributing

  • Shopping assistance checkbox has been added to registration form

See Magento_Customer/templates/form/register.phtml and Magento_LoginAsCustomerAssistance/layout/customer_account_create.xml

Thanks to Ravinder (redMonks/redChamps) for contributing

  • Logo image size variables are now correct

In Magento_Theme/layout/default.xml the variables logo_img_width and logo_img_height were renamed to logo_width and logo_height This changed in 2.3.5+ in Magento Core.

Thanks to Guus Portegies (Cees en Co) for reporting

  • The checkout url in de minicart/cart-drawer changed

checkout/index was changed to checkout, which normally renders the same page/url. But, some 3rd party extensions (such as Mageplaza_OneStepCheckout) replace the checkout url to alter the path to a checkout page.

See Magento_Theme/templates/html/cart/cart-drawer.phtml

  • Empty cart continue shopping now links to homepage

Previously, this linked back to the cart.

Thanks to Daniel Galla (iMi) for contributing

Removed

  • Standard Quantity field is no longer shown on Grouped products

See Magento_Catalog/templates/product/view/quantity.phtml

Thanks to Rich Jones (Aware Digital) for contributing

  • Pagination was removed from customer account order print

See Magento_Sales/layout/sales_order_print.xml

  • Aria labelledby has been removed from PLP swatch-items

aria-labelledby="radiogroup-label" was causing LightHouse best practice warnings and thus has been removed.

See Magento_Swatches/templates/product/listing/renderer.phtml

Thanks to Hitesh Koshti (On Tap) for contributing

1.1.3 - 2021-05-07

Version 1.1.3 of the Hyva_Theme module is required for this update

Added

  • none

Changed

  • Pass product instance to price view model instead of relying on internal state

This improves reusability of templates and allows changing the order in which they are rendered.

Removed

  • none

1.1.2 - 2021-05-03

Version 1.1.2 of the Hyva_Theme module is required for this update

Added

  • Added clear-messages event to the messages-component

Messages from the messages component can now be cleared with an event that removes all messages in Magento_Theme/templates/messages.phtml

Can be used as window.dispatchEvent(new CustomEvent('clear-messages'));

  • Select template for custom-options

Custom options of the type dropdown and multiple are now rendered by a .pthml file, instead of using \Magento\Catalog\Block\Product\View\Options\Type\Select\Multiple::_toHtml A new viewModel and method were created for this: \Hyva\Theme\ViewModel\CustomOption::getOptionHtml

This viewModel renders Magento_Catalog/templates/product/composte/fieldset/options/view/multiple.phtml (new) or Magento_Catalog/templates/product/composite/fieldset/options/view/checkable.phtml (existing).

  • Custom options are added for Bundled products

Turns out, when dynamic pricing is disabled, bundled products can have custom options. Who knew? We didn't. So now, bundled products contain custom options.

This means that mostly extra logic was added to pricing at Magento_Bundle/templates/catalog/product/view/price.phtml

Also the container product_info_bundle_options_top was re-added from core Magento and product_info_bundle_options_bottom was newly created.

Changed

  • Added robots.txt file back to layout

See Magento_Sitemap/layout/robots_index_index.xml

Thanks to Rik Willems (RedKiwi) for contributing.

  • Fix hardcoded required company field on customer account

See Magento_Customer/templates/widget/company.phtml

Thanks to Aad Mathijssen (Isaac) for contributing.

  • Fix hardcoded required region field on customer account

See Magento_Customer/templates/address/edit.phtml

Thanks to Aad Mathijssen (Isaac) for contributing.

  • Replaced removeEventListener with { once: true } on addEventListener

See Magento_ReCaptchaFrontendUi/templates/js/script_loader.phtml: document.body.addEventListener("input", loadRecaptchaScript, { once: true });

Thanks to Javier Villanueva (Media Lounge) for contributing.

  • FIX: reload customerData in cart after applying coupon code

See Magento_Checkout/templates/cart/js/cart.phtml

  • Fix: don't show PLP Swatches for attributes with getUsedInProductListing disabled

See Magento_Swatches/templates/product/listing/renderer.phtml

  • Swatch display improvements
    • set height and width on all non-text swatches
    • use swatch value and fall back to swatch label
    • hide image container in tooltip if no image/color available
    • add whitespace-nowrap to swatch and tooltip text

See commit 2ebc7a5c

  • **Added .editorconfig for unified whitespace handling

See .editorconfig

Thanks to Sean van Zuidam (Mooore) for reporting.

  • Added initActive event to gallery that activates the main image

Previously, the first image in the image list would show as initial image. Now, the main image is activated on load.

See Magento_Catalog/templates/product/view/gallery.phtml

Thanks to Rik Willems (RedKiwi) for contributing.

  • Fix price calculation for bundled tier prices

Previously, the tierPrice price-reduction was calculated, instead of adding the result price.

See Magento_Bundle/templates/catalog/product/view/price.phtml

Thanks to Gautier Masdupuy (Diglin) for reporting.

  • Change item qty change event to input event in cart

Previously, cart item quantity changes in the cart were triggered onBlur, this was changed to onInput. This results in quicker feedback. Changes are still debounced with 1 second: x-on:input.debounce.1000="mutateItemQty(item.id, $event.target.value);"

  • Quality improvements on the cart page

    • Direct customerData retrieval from localStorage was removed and replace with the private-content-loaded event only.
    • Replaced $this instances combined with function(){} for ES6 arrow functions and this
    • Added error feedback to fetch() methods, report errors to console and show general error message to visitors
    • Report
  • Fix adding multiple select options to wishlist

Selected product options (custom, configurable, bundle and grouped) of the type select-multiple are now properly sent to the wishlist.

See Magento_Catalog/templates/product/view/addtowishlist.phtml

Thanks to Gautier Masdupuy (Diglin) for reporting.

  • Fix price calculation for bundled options

A bug was introduced in 1.1.1 that removed x-ref from bundle-option input fields, replacing then with
document.querySelector(option[data-option-id="${optionId}-${selectionId}"]

Two issues occured: - not all inputs had the data-option-id attribute - not all inputs are of the type option

The querySelector was changed to [data-option-id="${optionId}-${selectionId}"] and the attribute was added to the missing option types

See Magento_Bundle/templates/catalog/product/view/type/bundle/options.phtml and Magento_Bundle/templates/catalog/product/view/type/bundle/option/*.phtml

  • Only validate 1 option for custom option checkboxes

Thanks to Hrvoje Jurišić (Favicode) for reporting.

  • Calculate product final price when configuring a product in cart with custom options

Previously, when editing a product in the cart, the product final price was only updated after changing custom options. Now, already selected options are properly selected when loading the configure cart-product page.

See initSelectedOptions in Magento_Catalog/templates/product/view/options/options.phtml

  • Fix uploading new custom option file

Previously when editing a product in the cart with an uploaded custom-option-file, a new file would not be uploaded. Now, the value save_new is properly set on the hidden file-field.

See Magento_Catalog/templates/product/view/options/type/file.phtml

  • Styling of bundled options was improved on smaller viewports

Mostly: input fields would break out of the containing columns because of the browsers default min-width value of <fieldset>

See Magento_Catalog/templates/product/view/options/wrapper/bottom.phtml, Magento_Bundle/templates/catalog/product/view/summary.phtml and Magento_Bundle/templates/catalog/product/view/type/bundle/options.phtml

  • Escaping of additional attributes was removed to allow html to be rendered

Thanks to Vinai Kopp for contributing.

  • PDP prices are overhauled to respect all tax-settings

Tax display was inconsistent, mostly when selecting catalog prices include tax and display product page prices excluding tax.

Price retrieval was refactored into a viewModel in Hyva_Theme: \Hyva\Theme\ViewModel\ProductPrice. This applies to: - Product price - custom options - tier prices - bundle options

See commit 61b3f1a0

Removed

  • Hyva_Theme/templates/js/localStorageConfig.phtml

The file localStorageConfig.phtml was removed, since it is an anti-pattern to retrieve customerData from localStorage directly. Instead the private-content-loaded event should be used. Please refer to the documentation for more information on the private-content-loaded mechanism.

1.1.1 - 2021-04-08

Added

  • none

Changed

  • Resolved issues with Configurables/Swatches:
    • Empty swatches now render correctly
    • Dropdown attributes now render correctly with Swatches enabled. Therefore Magento_ConfigurableProduct/templates/product/view/options/configurable.phtml needed to be moved to Magento_ConfigurableProduct/templates/product/view/type/options/configurable.phtml
    • initConfigurableOptions_{product_id}() changed to initConfigurableDropdownOptions_{product_id}() in order to add $block->getJsonConfig() in a <script> block instead passing it through the x-data= attribute.
    • PLPs no longer try to render non-swatch attributes

Thanks to Antonio Carboni (Magenio) for reporting

Please refer to 1.1.1 for all diff changes

Removed

  • none

1.1.0 - 2021-04-02

Added

  • Compare products sidebar added

Thanks to Timon de Groot and Sean van Zuidam (Mooore) for contributing.

  • Product Attributes listing added

The product.attributes was added to product detail pages, which list all available attributes for a product (as an addition to the 'featured attributes' listed on top of PDPs).

Thanks to Sean van Zuidam (Mooore) for contributing.

  • In Product Listings, price and image can now be updated

To support swatches on PLPs, the price and image can now be updated with events: update-gallery-<?= (int)$productId ?> and update-prices-<?= (int)$productId ?>

See Magento_Catalog/templates/product/list/item.phtml

  • Empty checkout now shows message

If no checkout installed, a message is now being shown.

See Magento_Checkout/layout/checkout_index_index.xml

  • Checkout registration now works

After checkout, the registration option is now shown.

See Magento_Checkout/templates/registration.phtml

Thanks to Vincent Marmiesse (PH2M) for contributing.

  • A footer column container was introduced

A wrapper column for the footer was added Magento_Theme::html/footer/column.phtml

See Magento_Directory/layout/default.xml for usage.

  • Login as customer is now fully compatible

The default login as customer from the admin area now works, including the customer-account-area toggle to allow accounts to be controlled by store-owners.

See /Magento_LoginAsCustomerFrontendUi/

Thanks to Barry vd. Heuvel (Fruitcake) for contributing.

  • Currency switchers were added

The footer now loads a currency switcher.

See Magento_Directory/layout/default.xml and Magento_Directory/templates/currency.phtml

  • Store and Language switchers were added

The footer now loads a store and language switcher, if required.

See Magento_Store/layout/default.xml, Magento_Store/templates/switch/languages.phtml and Magento_Store/templates/switch/stores.phtml

  • Configurable swatches were added

Swatches are now loaded on PLP and PDP pages. The swatches in layered navigation were already present but are now better styled and include tooltips.

See /Magento_Swatches/ for all changes.

An important new pattern is the extension of already existing Alpine Components by merging/extending the initObjects. As present in Magento_Swatches/templates/product/view/renderer.phtml:

    <?= $block->getChildHtml('options_configurable_js') ?>
    <?= $block->getChildHtml('options_swatch_js') ?>

    <script>
        function initConfigurableSwatchOptions_<?= (int) $productId ?>() {
            const configurableOptionsComponent = initConfigurableOptions(
                '<?= (int) $productId ?>',
                <?= /* @noEscape */ $block->getJsonConfig() ?>
            );
            const swatchOptionsComponent = initSwatchOptions(
                <?= /* @noEscape */ $block->getJsonSwatchConfig() ?>
            );

            // here we merge `configurableOptionsComponent` with `swatchOptionsComponent`
            return Object.assign(
                configurableOptionsComponent,
                swatchOptionsComponent
            );
        }
    </script>
- Default Footer links were added

A static phtml file was added to load common footer links.

See Magento_Theme/layout/default.xml and Magento_Theme/templates/html/footer/links.phtml

Changed

  • Improved bundle option performance

On bundled products with large amount of options, x-ref used excessively in a loop caused performance issues. These were refactored to document.querySelector() and document.getElementById() lookups.

See Magento_Bundle/templates/catalog/product/view/type/bundle/options.phtml and https://gitlab.hyva.io/hyva-themes/magento2-default-theme/-/issues/93

Thanks to Gautier Masdupuy (Diglin) for reporting.

  • product.info.options.wrapper was reintroduced

https://gitlab.hyva.io/hyva-themes/magento2-default-theme/-/issues/117

For compatibility with 3rd party modules / extensibility. See Magento_Catalog/layout/catalog_product_view.xml

Thanks to Laura Folco for reporting.

  • Limiter and ViewMode in toolbar no longer break layout when empty

The Limiter and ViewMode now render empty containers to prevent the layout from breaking when they are disabled.

Thanks to Judith Demets (Storefront) for contributing

  • Alt and Title fallbacks are added to the PDP image gallery

See Magento_Catalog/templates/product/view/gallery.phtml

Thanks to Aad Mathijssen (Isaac) for contributing.

  • Tax display on PDP is now correct

https://gitlab.hyva.io/hyva-themes/magento2-default-theme/-/issues/115

Previously, if catalog prices were excluding tax but displayed with tax, the tax would not be added correctly.

Thanks to Antonio Carboni (Magenio) for reporting

  • Configurable prices now show 'as low as' until all options selected

See Magento_Catalog/templates/product/view/price.phtml

Thanks to Konrad Langenberg (imi) for contributing.

  • min and max screenheight values are better named

Previously, min-height: 50vh was declared as min-h-50, this has been changed to min-h-screen-50.

See web/tailwind/tailwind.config.js

Please check your codebase for any instance of min-h-{25,50,75} as well as max-h-{25,50,75} and replace with min-h-screen-X and max-h-screen-X values.

Thanks to Sean Zuidam (Mooore) for reporting

  • Cart shipping totals now display correctly

See Magento_Checkout/templates/cart/totals.phtml

Thanks to Victor Chiriac (Mage Check) for contributing.

  • Alpine Component JS for Configruable options moved to child block

In order to make initConfigurableOptions() reusable and extendable, it was moved into Magento_ConfigurableProduct::product/view/options/js/configurable-options.phtml

This was needed for integration of Configurable Swatches without duplication of a large amount of JavaScript code.

See Magento_ConfigurableProduct/layout/catalog_product_view_type_configurable.xml, Magento_ConfigurableProduct/templates/product/view/options/configurable.phtml and Magento_ConfigurableProduct/templates/product/view/options/js/configurable-options.phtml.

  • Customer account edit page password error message moved

for better layout stability, the structure of Magento_Customer/templates/form/edit.phtml changed to prevent layout shifts.

  • Customer menu in header now respects isAllowed setting for account registration

See Magento_Customer/templates/header/customer-menu.phtml

Thanks to Barry vd. Heuvel (Fruitcake) for contributing.

  • Customer account edit prefix field now respects isPrefixRequired setting

Thanks to Philipp Neuteufel (Limesoda) for reporting.

  • Footer newsletter subscription styled more consistently

The footer newsletter form is now styled more in line with the rest of the layout.

  • PDP reviews now take current storeview in account

The store header was previously missing from GraphQL calls.

See Magento_Review/templates/customer/list.phtml and Magento_Review/templates/form.phtml

  • **Orders and Returns for guests now correctly toggles between Email and ZIP code`

Previously, the change event of the "Find Order By" dropdown was handling the wrong event data.

event.originalTarget.value was changed into event.target.value.

See Magento_Sales/templates/guest/form.phtml

  • The cart drawer now respects the display sidebar setting for minicart

If checkout/sidebar/display is set to no, the cart-drawer is no longer loaded.

See Magento_Theme/layout/default.xml

Thanks to Rik Willems (RedKiwi) for contributing.

  • The product slider now checks for visiblity and status of linked products

Upsells, Cross-sells and Related products are not filtered by graphql on storefront visiblity. We therefore added the visibility and status attributes to the graphql result so that we can filter on them.

See Magento_Theme/templates/elements/slider.phtml

  • Escaping was improved in the topmenu

See Magento_Theme/templates/html/header/topmenu.phtml

Thanks to Aad Mathijssen (Isaac) for contributing.

  • Browsersync improvements

Improvements to browsersync config were made to prevent form-key issues.

Thanks to Javier Villanueva (Media Lounge) for contributing.

Removed

  • <script> tags no longer contain the defer attribute

Since these have no effect...

  • Duplicate function declarations in Alpine Components

For IE11 compatibility we used to declare function names in Alpine init objects with an explicit function name. These have now been removed. For example:

{ addToWishlist: function addToWishlist(productId) { ... } }
became:
{ addTowishList(productId) { ... } }

1.0.0 - 2021-02-15

Added

  • Initial Release added

Changed

Removed

  • none

Beta releases

0.2.0 - 2021-02-03

0.1.0 - 202-12-09