Yireo_LokiCheckout

Core
magento-unit-tests success
#magento-unit-tests 39
Latest Release 1.0.1

This is the main core package of the LokiCheckout.

Installation

Install this package via composer (assuming you have setup the composer.yireo.com repository correctly already):

composer require yireo/magento2-loki-checkout

Next, enable this module:

bin/magento module:enable Yireo_LokiCheckout

Settings

In the Magento Admin Panel, you can navigate to Store > Configuration > Yireo > Yireo LokiCheckout for various settings.

Support

For getting support, create an Issue under the following project URL:

https://gitlab.yireo.com/loki-checkout/Yireo_LokiCheckout

Configuration Options

The following options of this module can be configured via the Store Configuration:

yireo_loki_checkout/general/enable
Enable
yireo_loki_checkout/general/theme
Theme
yireo_loki_checkout/general/grid_layout
Grid Layout
yireo_loki_checkout/general/license_key
License Key
yireo_loki_checkout/debug/enable
Enable Debugging
yireo_loki_checkout/debug/html_hints
Add Hints to HTML Output
yireo_loki_checkout/debug/debug_block
Add Debug Block
yireo_loki_checkout/fields/use_required_block
Use required block
yireo_loki_checkout/fields/enable_same_as_billing
Enable Same As Billing Checkbox
yireo_loki_checkout/fields/hide_region_when_optional
Hide Region When Optional
yireo_loki_checkout/fields/enable_vat_id_only_for_company
Enable Vat ID Only For Companies
yireo_loki_checkout/shipping/select_default_shipping_method
Select Default Shipping Method
yireo_loki_checkout/billing/select_default_payment_method
Select Default Payment Method
Loki Components

The following LokiComponents are created or references in this module:

loki-checkout.steps loki-checkout.progressbar loki-checkout.shipping.address loki-checkout.shipping.address.billing-as-shipping loki-checkout.shipping.address.toggle-select loki-checkout.shipping.address.select loki-checkout.shipping.address.view loki-checkout.shipping.methods loki-checkout.billing.address loki-checkout.billing.address.shipping-as-billing loki-checkout.billing.address.toggle-select loki-checkout.billing.address.select loki-checkout.billing.address.view loki-checkout.payment.methods loki-checkout.sidebar.coupon_code loki-checkout.sidebar.items loki-checkout.sidebar loki-checkout.sidebar.totals loki-checkout.sidebar.preview.quote_details loki-checkout.sidebar.preview.shipping_details loki-checkout.sidebar.preview.billing_address loki-checkout.sidebar.preview.payment_details loki-checkout.newsletter loki-checkout.agreements loki-checkout.steps.shipping loki-checkout.steps.billing loki-checkout.steps.one loki-checkout.customer.customer_email loki-checkout.customer.customer_gender loki-checkout.customer.customer_dob loki-checkout.shipping.address.prefix loki-checkout.shipping.address.firstname loki-checkout.shipping.address.middlename loki-checkout.shipping.address.lastname loki-checkout.shipping.address.suffix loki-checkout.shipping.address.postcode loki-checkout.shipping.address.city loki-checkout.shipping.address.region loki-checkout.shipping.address.country_id loki-checkout.shipping.address.company loki-checkout.shipping.address.telephone loki-checkout.shipping.address.fax loki-checkout.shipping.address.vat_id loki-checkout.shipping.address.save_in_address_book loki-checkout.billing.address.prefix loki-checkout.billing.address.firstname loki-checkout.billing.address.middlename loki-checkout.billing.address.lastname loki-checkout.billing.address.suffix loki-checkout.billing.address.postcode loki-checkout.billing.address.city loki-checkout.billing.address.region loki-checkout.billing.address.country_id loki-checkout.billing.address.company loki-checkout.billing.address.telephone loki-checkout.billing.address.fax loki-checkout.billing.address.vat_id loki-checkout.billing.address.save_in_address_book loki-checkout.shipping.address.street0 loki-checkout.shipping.address.street1 loki-checkout.shipping.address.street2 loki-checkout.shipping.address.street3 loki-checkout.billing.address.street0 loki-checkout.billing.address.street1 loki-checkout.billing.address.street2 loki-checkout.billing.address.street3 loki-checkout.steps.shipping.backward-button loki-checkout.steps.shipping.forward-button loki-checkout.steps.billing.backward-button loki-checkout.steps.billing.forward-button
Module Dependencies

The following dependencies are declared in the module its `etc/module.xml` file:

Magento_Backend Magento_Catalog Magento_Checkout Magento_CheckoutAgreements Magento_Customer Magento_Directory Magento_Eav Magento_Newsletter Magento_Payment Magento_Quote Magento_Sales Magento_Shipping Magento_Store Yireo_LokiComponents Yireo_LokiFieldComponents Yireo_CspUtilities Yireo_HyvaThemeAutoRegistration
Composer details
Magento module name
Yireo_LokiCheckout
Composer name
yireo/magento2-loki-checkout
Composer version
1.0.1
Default branch
main
Requirements
magento/framework: ^103.0
magento/module-backend: ^102.0
magento/module-catalog: ^103.0 | ^104.0
magento/module-checkout-agreements: ^100.0
magento/module-checkout: ^100.0
magento/module-customer: ^103.0
magento/module-directory: ^100.0
magento/module-eav: ^102.0
magento/module-newsletter: ^100.0
magento/module-payment: ^100.0
magento/module-quote: ^101.0
magento/module-sales: ^103.0
magento/module-shipping: ^100.0
magento/module-store: ^101.0
magento/module-vault: ^101.0
yireo/magento2-loki-components: ~0.0 | ^1.0
yireo/magento2-loki-field-components: ~0.0 | ^1.0
yireo/magento2-csp-utilities: ^1.0
guzzlehttp/guzzle: ^7.0
php: ^8.3
ext-intl: *
ext-pcre: *
ext-json: *
ext-dom: *
Releases
dev-main 06 May 2025
1.0.1 28 April 2025
1.0.0 25 April 2025
0.1.21 16 April 2025
0.1.20 10 April 2025
0.1.19 10 April 2025
0.1.18 10 April 2025
0.1.17 09 April 2025
0.1.16 09 April 2025
0.1.15 08 April 2025
0.1.14 04 April 2025
0.1.13 04 April 2025
0.1.12 04 April 2025
0.1.11 11 March 2025
0.1.10 11 March 2025
0.1.9 25 February 2025
0.1.8 24 February 2025
0.1.7 24 February 2025
0.1.6 24 February 2025
0.1.5 24 February 2025
0.1.4 23 February 2025
Changelog
  • Prevent error with only optional regions (@RikWillems)

[1.0.1] - 28 April 2025

Fixed

  • Apply Rector fixes
  • Loosen support for magento/module-catalog
  • Remove unused imports
  • Remove deprecated classes
  • Update composer and module deps

[1.0.0] - 25 April 2025

Fixed

  • Allow upgrading to LokiFieldComponents and LokiComponents 1.0
  • Remove x-model because of CSP compliance
  • Fix wrong saveQuote call
  • Failsave for null values in repositories
  • CSP fixes
  • Add additional Loki modules to Hyva Theme autoregistration
  • Add composer suggest
  • Customize backdrop of modal dialog
  • Draft of fast checkout option for PSPs
  • Consolidate vault access in core module
  • Intercept unwanted exceptions while rendering
  • Optimize guest checkout flags
  • Move from x-init-data to separate text/x-loki-init script to prevent escaping issues
  • Implement core customer address validation
  • Move Mollie fixture from core to Mollie module
  • Fix possible issue when LokiCheckout config is used outside of checkout
  • Add lazyloading to cart image
  • Finish grid layout JS switching
  • Add LokiCheckoutGrid component
  • Add empty grid for later usage
  • Remove gridClass, add colSpan and mdColSpan in grid layouts
  • Allow switching of grid layout per country ID
  • Add new Alpine directives x-time, x-datetime, x-date
  • Remove CheckoutSession from context
  • Remove FieldTemplateLocator from context
  • Remove CartRepository from all contexts
  • Rewrite getCartRepository()->save() to getCheckoutState()->saveQuote()
  • Reduce dependencies with CheckoutState::saveQuote()
  • Make loader icon in fields depend on Alpine and activate only after configurable timeout
  • Rename JS validators/ folder to validator/
  • Fix invalid HTML in shipping method input

[0.1.21] - 16 April 2025

Fixed

  • Always persist chosen customer address ID
  • When creating a new address, also reset the customer_address_id on load
  • Change address toggle label on billing step to "Add new billing address"
  • Skip shipping address validation for virtual quotes
  • Fix issue with one-line street being saved earlier
  • Move image from PostNl to core
  • Move common templates from PostNL to core
  • Unify locations and addresses for any maps
  • Turn login into modal popup
  • Add JS password complexity validation
  • Move scripts from "before.body.end" to new "loki-scripts" container
  • Add configurable password complexity
  • Rename LokiCheckoutValidator to LokiComponentValidator
  • Add handle prefixes for Hyva, Luma and Breeze
  • Implement label for gridlayouts
  • Add optional countryId to grid XML
  • Add label to grid

[0.1.20] - 10 April 2025

Fixed

  • Exit after redirecting

[0.1.19] - 10 April 2025

Fixed

  • Use a normal redirect when quote is dead and AJAX is not there

[0.1.18] - 10 April 2025

Fixed

  • Move dep with "yireo/magento2-hyva-theme-auto-registration" to Hyva module
  • Add yireo:loki-checkout:modules:dump command

[0.1.17] - 09 April 2025

Fixed

  • Restructure loki classes for Luma
  • Fix width definition of icon in step button

[0.1.16] - 09 April 2025

Fixed

  • Switch from TimezoneInterface to Timezone because of DI arg scopeType issue
  • Allow switching shipping details in sidebar to alternate template
  • Finalize Post NL templating and abstract Shipping classes
  • Add ext/intl requirement
  • If street is 1 line, explode by space

[0.1.15] - 08 April 2025

Fixed

  • Working version of Post NL form with saved values and tab selection
  • Simplify loading state of target components
  • Remove redundant address-select template
  • Remove unneeded important flag
  • Remove select-icon when loading select-field
  • Add warning if coupon code failed to apply
  • Add generic Location, Timeframe and Address classes, fi with Post NL
  • Mobile fixes

[0.1.14] - 04 April 2025

Fixed

  • Remove overlay when reloading StepForwardButton component

[0.1.13] - 04 April 2025

Fixed

  • StepBackwardButtonViewModel was missing required method

[0.1.12] - 04 April 2025

Fixed

  • Add Playwright functional tests
  • Move to Mollie-specific DI config to Mollie plugin
  • Allow for specific exceptions to redirect back to checkout/cart
  • Remove specific step button templates in favor of FieldComponents
  • Modify overlay when loading next step
  • Add icons to step button
  • Refactoring of Integration Tests
  • Refactor FinalStep to get rid of legacy OneStep code
  • Disable autocomplete for coupon code
  • Implement better DOM ID for shipments too
  • Add better DOM ID for payment methods
  • Remove positive_number filter from telephone and fax
  • Fix issue with duplicate DOM IDs again (but now with test)
  • First draft of pickup locations
  • Resolving of shipping method icons
  • Enhance CSS of method listings
  • Refactor PaymentRedirectUrl plugin to resolver
  • Refactor PaymentMethodIcon plugins into resolvers
  • Enable hide_region_when_optional by default
  • Implement LokiCheckoutRepositoryTestCase
  • Enable GitLab CI/CD
  • Add help text depending upon enable_vat_id_only_for_company
  • Refactor BillingAddress and ShippingAddress components to generic Address components
  • Use separate template for billing address form title
  • Do not ever copy address if the SameAddress service says no

[0.1.11] - 11 March 2025

Fixed

  • Fix issue with grid CSS classes
  • Add better exception message when Context::getStepProvider() is missing

[0.1.10] - 11 March 2025

Fixed

  • Fix order completion for virtual orders
  • Move GridLayout from XML layout to config
  • Remove default grid class
  • Implement option yireo_loki_checkout/general/default_grid_class
  • Dynamically change title of shipping address form
  • Rename field_name to fieldName
  • Fix client-side validation after refactoring to LokiFieldComponents
  • Fix age verification in test
  • Fix gender validation in test
  • Replace PrefixValidator with more generic OptionsValidator
  • Add proper date validation of date of birth
  • Fix possible error if somebody is spoofing value
  • Make sure gender and DOB are required if set so in config
  • Accessibility fixes
  • Fix styling of country box when there is an error
  • Fix location of buttons
  • Move required block
  • Add module dependencies
  • Huge refactoring to move logic into new LokiFieldComponents
  • System Check for module dependencies
  • Add test for new ViewModel
  • Add button label for quote without payment required
  • Add default responsiveness to all fields
  • Fix name of defaults block
  • Re-enable postcode format validator test
  • Refactor and adjust styling
  • Refactor SystemCheck architecture in admin
  • Check for dev modules not being enabled in Production Mode
  • Move EmailValidatorTest
  • Add missing Dutch translations
  • Move email availability in separate validator email_available
  • Rename loki-checkout.css_classes to loki-components.css_classes
  • Rewrite Alpine.store() APIs
  • Add datetime to module overview

[0.1.9] - 25 February 2025

Fixed

  • Standardize JS event names
  • Rename checkout:payment:method-activate to loki-checkout prefix
  • Rename loki-checkout-before-redirect to loki-checkout.before-redirect
  • Rename loki:dom-update to loki-components:dom-update
  • Rename yireo-loki-checkout.component-change to loki-components.component.update
  • Add generic LokiComponentsLogger
  • Refactor yireoLokiCheckoutLogger to LokiCheckoutLogger object
  • StepForwardButton not activated after component updates (use $nextTick)

[0.1.8] - 24 February 2025

Fixed

  • Rerun LokiCheckoutStepsShippingForwardButton.updateValid() at every update

[0.1.7] - 24 February 2025

Fixed

  • Hide payment method component by default
  • Fix non-existing method NewsletterRepository::getDefaultValue()
  • Change Place Order label when virtual quote
  • Add missing Dutch translation

[0.1.6] - 24 February 2025

Added

  • Save in Address Book checkbox
  • Add more translation strings

Fixed

  • Prevent null from throwing TypeError / Beautify shipping method label
  • Allow saving more variable types
  • Call to undefined method getDefaultValue()
  • Wrong exception caught
  • Prevent saving non-existing payment method still set as default

[0.1.5] - 24 February 2025

Fixed

  • Prevent exception when selecting shipping method repeatedly
  • Allow default value in field to be saved automatically
  • Retrieve option model from ViewModel
  • Remove empty option for gender
  • Remove bgcolor from login card
  • Add Dutch translations
  • Remove demo field label "Surname"

[0.1.4] - 23 February 2025

Fixed

  • Intercept exception with addShippingRate

[0.1.3] - 23 February 2025

Fixed

  • Remove unneeded collectTotals
  • Cleanup totals calculation
  • Cleanup cart totals rendering
  • Failsafe to skip loading shipping methods if country ID is empty
  • Make sure default country ID is saved to quote
  • Prevent endless loop when submitting to AJAX which then fails
  • Simplify shipping method calculation
  • Recalculate totals properly via AJAX
  • Fix shipping methods test except totals
  • Re-enable default shipping method pick
  • Dont render address template when HTML is empty anyway
  • Add doc link to module overview
  • Carrier label not found if carrier no longer active

[0.1.2] - 22 February 2025

Fixed

  • Update loki_checkout.xml grid CSS for mobile

[0.1.1] - 22 February 2025

  • Small responsive fixes
  • Show no billing step title if quote is virtual
  • Simplify customer fields block in onestep theme
  • Allow customer fields to be shown in either billing or shipping step
  • Hide shipping address view and shipping methods for virtual quote
  • Hide same-as-billing for virtual quotes
  • Empty address was still showing country
  • Disable Same as Shipping if quote is virtual
  • Allow hiding billing title via XML layout
  • Default payment method was not saved to quote
  • Lift requirements

[0.1.0] - 21 February 2025

  • Version bump

[0.0.7] - 21 February 2025

Added

  • New admin page for Module Status
  • New admin page for System Checks
  • Add reusable RegionProvider

Fixed

  • Set disabled CSS for select as well
  • Fix issue with HTML attributes for nested components
  • Fix JS numeric validator
  • Simplify Agreements handling
  • Add DI plugin as workaround for non-working free_shipping_subtotal
  • Improve streetlines logic with faulty values
  • Append streetline values if streetlines config is wrong
  • Add "not available" text to unavailable shipping methods
  • Add address tag to shipping address preview
  • Fix newsletter subscribe for logged in customers
  • Rewrite newsletter subscribe logic
  • Rename console message from INFO to DEBUG

Removed

  • Remove deprecated {component_name} variable for HTML attribute

Refactor

  • Better handling of streetlines
  • Rename plugin classes to include Plugin suffix
  • Refactor LocalMessageRegistry methods
  • Refactor text_select to avoid unneeded ID suffix

[0.0.6] - 13 February 2025

Fixed

  • Fix address when customer is logged in and has no addresses to select yet
  • Prefix options are separated by semicolumn, not column
  • Properly switch shipping method after initial saving
  • Fix issue in refreshing other targets
  • Fix forms without proper name
  • Enhance payment method icon logic
  • Redirect to cart when AJAX fails with empty quote
  • Load default theme if theme is messed up
  • Add proper UnknownThemeException

Refactor

  • Refactor Validator to remove dependency with component
  • Huge refactor to move context dependencies in the open
  • Move CssClass to LokiComponents

[0.0.5] - 21 January 2025

  • Initial public release

[0.0.4] - 13 January 2025

  • Reach MVP level

[0.0.3] - 19 December 2024

  • Move from Magewire to Loki Components

[0.0.2] - 2 October 2024

  • Copy from GitHub repository to GitLab repository
  • Rename to FriggaCheckout and then LokiCheckout

[0.0.1] - 11 July 2024

  • Initial proof-of-concept (MagewireCheckout)

Last modified: April 30, 2025