Skip to main content

· 4 min read
geins.io

[22.1.0] - 2024-03-20

This update includes performance improvements and some bug fixes. It is recommended to update your storefront to Ralph Storefront v2.3.0 with this update to really se some performance improvements.

Added

  • Emitting the PointerEvent from CaClickable
  • Option to set preloaded image sizes for product page through $config.preLoadedProductImageSizes (Array). This is good to improve the LCP metric for the product page
  • Prop fetchProductsOnServer for CaWidgetArea to fetch products server side, which by default is set to false

Changed

  • Async and lazy loading for a lot of components
  • Cart is not fetched server side, instead it's fetched in MixGlobalInit in mounted hook
  • $ralphLog will now log both server and client side if active. Option to set $config.ralphLog.onlyInClient to turn off SSR logging

Fixed

  • Ctrl + click to open in new tab now works for prodcut card through MixProductCard
  • Routing to other list page from search page bug

[22.0.2] - 2024-03-11

Fixed

  • Fixed an issue with the cart cookie not being removed properly on the confirm page for external checkout
  • Cart ID is now always saved as cookie even before anything is added to the cart
  • External checkout will now init when it has data even if data does not exist at mounted
  • Auto resetting cart if not valid

[22.0.1] - 2024-03-06

Fixed

  • Fixed a bug with CaFilterMultiTreeView where no children was added to the item and therefore not showing any sub tree
  • Fixed a CSS bug in ca-list-filters making the container too large on smaller screens if having long filter names
  • No longer deselecting parents when deselecting children in CaFilterMultiTreeView
  • CSS bug with CaSkeleton in CaListFilters

[22.0.0] - 2024-02-29

This major update will require you to update your storefront to Ralph Storefront v2.2.0 and to use Node v.16.x.x.

Added

  • New mixin MixFetch, used for fetching and mutating data from the api instead of apollo smart queries in components
  • New global function $fetchData, used for fetching data from the api in asyncData or in the store
  • New global function $error404, used for redirecting to 404 page
  • New global function $redirectToCanonical, used for redirecting to the canonical url
  • A more consistent and reliable way of handling errors
  • New global function $ralphLogError, used for logging errors to the console
  • New error events emitted to the store:
    • error:api - data payload: error
    • error:404 - data payload: error
    • error:500 - data payload: error
  • A way to control what $ralphLog logs to the console in debug mode through the $config variable ralphLog, see Ralph Storefront v.2.2.0
  • Some missing documentation for components and mixins
  • Improved error feedback for CaCheckoutInvoice

Changed

  • All queries and mutations are now using the functionality from MixFetch instead of apollo smart queries, and are made in the asyncData or in the fetch hook
  • CaCheckoutExternal is refactored and is no longer fetching is own confirm frame, use the one you get in MixConfirmPage instead
  • Replaced all uses of eventbus with this.$ralphBus
  • Option to set refetchQueires as a param for the auth/update action
  • Refactoring of CaWidgetArea to use MixFetch or to get data from the parent, if it's a page. This to make a better handling of 404 errors amongst other things
  • Refactoring of MixVariantHandler and make it work properly when variants has the same value

Removed

  • Removed MixApolloRefetch mixin, functionality exists in MixFetch instead
  • Removed CaCheckoutCarismar component, use CaCheckoutInvoice instead
  • Unnecessary isSign in AuthClient

Fixed

  • Correct 404 handling for Pages through MixContentPage
  • Suspention of external checkout frame now works properly
  • Prevents refetching of queries on first init auth refresh, it's not needed
  • Latest products and favorites mode in CaWidgetProductList now works properly
  • Close product image modal gallery when backing from PDP
  • Added missing ca-account-header.scss

· 2 min read
geins.io

[21.1.0] - 2024-02-12

WARNING!

We strongly recommend that you skip this version and upgrade straight to version 22.0.0 instead. This is because of a memory leak that was discovered after the release of 21.0.0.

Added

  • CaCheckoutInvoice - component for manual invoice checkout
  • Zip code data to order object for checkout confirm data

Changed

  • Changed trigger for global loading state
  • Replaced Timeout in Vuex to remove POJO warning
  • Using checkoutMarket instead of global market when adding promo code to cart

Deprecated

  • CaCheckoutCarismar - use CaCheckoutInvoice instead

Fixed

  • Correct name for authenticated middleware fixing "my account" issues
  • Stop loading if current variant is picked

[21.0.0] - 2023-12-14

WARNING!

We strongly recommend that you skip this version and upgrade straight to version 22.0.0 instead. This is because of a memory leak that was discovered after the release of this version.

This major update will require you to update your storefront to Ralph Storefront v2.0.0.

Added

  • Support for Node 16 ✨
  • Internal function to persist Vuex state

Changed

  • Changed name of package changed from @ralph/ralph-ui to @geins/ralph-ui
  • No support for Node 14
  • Updated/Added/Removed dependencies
  • Updated js and scss linting
  • Routing to products is now done programatically instead of using <NuxtLink>
  • Function sizeChangeHandler in MixProductPage is now called skuChangeHandler
  • Changed name of CaUdc component to CaNshift
  • Getting cart on confirm page from checkout query instead of getCart query
  • Moved changelog to CHANGELOG.md
  • Using asyncData instead of nuxt apollo module for fetching data on product page
  • Renaming of plugins to kebab-case

Removed

  • Nosto integration
  • Graphql combined query on product page

Fixed

  • Correct 404 handling on product page

· 4 min read
geins.io

[20.3.5] - 2023-12-04

Fixed

  • The navigation menus to only display items with labels and eliminating empty items

[20.3.4] - 2023-11-27

Fixed

  • CaFilterMultiTreeView: unselect children when parent is unselected
  • CaImage: invalid property value (CSS)

[20.3.3] - 2023-11-22

Fixed

  • Prevent closing CaHeaderNavigation when clicking between links

[20.3.2] - 2023-11-06

Fixed

  • Added missed return

[20.3.1] - 2023-11-06

Fixed

  • Made sure that no setInterval could keep running forever in case of error
  • Prevent default on 'dragstart' event causing bug in CaSlide when using Firefox

[20.3.0] - 2023-10-12

Added

  • Rows that shows if balance is being used to pay the order in cart summary

Changed

  • Apollo cache is now always cleared on log in and log out, not only when using price lists

Fixed

  • Bug that displayed current max count higher than total count in pagination
  • Correct default values for checkbox bg color and border color

[20.2.2] - 2023-10-05

Fixed

  • Bug that in some cases generates SSR errors because of conditional rendering
  • Not showing title if CaWidgetProductList has no products

[20.2.1] - 2023-10-03

Changed

  • Supply all image sizes for isThumbnailModeGrid in CaProductGallery.

[20.2.0] - 2023-09-26

NOTE!

When upgrading your storefront, make sure to add the language keys "REFUNDS" and "REFUNDED"

Added

  • Support in cart to show refunded items
  • Showing refunds on order detail page under "My account"
  • Generated documentation files

[20.1.0] - 2023-09-06

Added

  • Limit of tries to relocate product in list pages to protect against infinite loops in erreoneous listings
  • Option to scroll to top in resetCurrentPage function
  • regularPriceIncVat and regularPriceExVat to price fragment
  • Correct route handling for checkout confirm if using manual invoice
  • Correct data for the checkout:purchase event when using manual invoice

Fixed

  • Bug that breaks the confirm page when using manual invoice
  • Bug that in some cases showed the second page twice in list pagination
  • Bug that didn't relocate product properly when backing from PDP to list page
  • Retaining query and hash in multi lang / multi market pages when adding lang and market to url when it's missing
  • Clear cache on auth refresh to ensure correct prices for customers with price lists

[20.0.2] - 2023-08-15

Fixed

  • Meta data from API now works again for list pages that doesn't use MixListPage, for example list pages from external services (e.g. Voyado Elevate)

Changed

  • MixMetaReplacement and head() for list pages is moved from MixListPage to MixListInfo

[20.0.1] - 2023-08-14

Fixed

  • Typo in CaMarketPanel classname
  • Broken image filenames in CaProductGalleryModal (revert to previous code)
  • Exclude duplicated first image in CaProductGallery when using thumbnail-mode="grid"

[20.0.0] - 2023-07-24

This version has a lot of overall SEO improvements and also introduces full flexibility in creating your own widgets.

Breaking changes in this major release

You will need to make these updates to your storefront to be able to use this version of Ralph UI:

  • Update all list pages to use MixListInfo or staticListInfo

  • Update everywhere ProductType is used to use product.productImages instead of product.images

  • Update CaListPage so that CaWidgetArea is fetched by itself

  • Remove the use of @nuxtjs/gtm and implement the use of @geins/ralph-module-gtm instead

    See guide for implementation

Added

  • Slot in CaFeedback that can be used instead of message
  • Custom defaultSort for a page via customSortRoutes in $config
  • Improved SEO for pagination
  • Gtin13 option in product schema
  • Enabled product change in product card, passing an array insted of one product
  • Prop fetchProductsOnlyClientSide for widget areas
  • Overridable widget type
  • JSON widget
  • Mixin for brands page functionality
  • Possibility to link directly to an active cart, like so: www.example.com?action=cart#{cartId}

Fixed

  • Bug in pagination
  • Remove non-POJOs warning
  • Bug with variant pickers showing more than 1 active variant when they share title
  • Correct request url in page impression event
  • Do not break checkout if no consents

Changed

  • Splitted listPageInfo into it's own query to allow externally fetched products and filters
  • Product list and product are now fetched server side for SEO reasons
  • Decreased number of api calls to products
  • Separating top widget area from list page query

Deprecated

  • getCheckout & getCheckoutAndOrder queries, use checkout instead
  • Use of Ralph UI internal GTM - use @geins/ralph-module-gtm instead (removing $config.useExternalGtm from config)
  • The use of product.images on ProductType - use product.productImages instead

· 4 min read
geins.io

[19.5.3] - 2023-06-30

Fixed

  • Hide show-all link in <CaPanelNavigation /> if url is empty

[19.5.2] - 2023-06-09

Fixed

  • Handle outside click for <CaHeaderNavigation />

[19.5.1] - 2023-05-22

Fixed

  • Setting external shipping fee even if it's 0

[19.5.0] - 2023-05-20

NOTE!

If you want to use the more SEO-friendly version of the list pagination, you have to remove CaListPagination from your storefront to use the one from Ralph UI instead.

Added

  • CaListPagination component (moved from Ralph Storefront to Ralph UI and improved according to SEO standards)
  • Html attributes from i18n
  • Canonical from i18n

[19.4.0] - 2023-05-20

Added

  • Option to set $config.useExternalGtm to use disable the internal pushes to GTM
  • Added orderCart and orderId to checkout:purchase event payload

Fixed

  • Sending product-detail:impression event when changing variant on product page
  • Only sending page:impression if path has actually changed (not just query params)

[19.3.0] - 2023-05-17

Added

  • Added merchentData to the checkout store. Will get sent with createOrUpdateCheckout if set
  • Making articleNumber and sellingPriceIncVat always available
  • Added index and pageSize to the product:impression event payload

Fixed

  • Correct product to be sent with cart:add and cart:remove events

[19.2.1] - 2023-05-12

Fixed

  • Turned of debugging in checkout

[19.2.0] - 2023-05-12

Added

  • Possibility to add an external shipping fee in checkout
  • Possibility to add full product object to favorite data payload

Fixed

  • Updated vuese documentation

[19.1.1] - 2023-05-10

Fixed

  • Fixed bug with currentMaxCount being wrong when server side rendering paginated list

[19.1.0] - 2023-05-04

This update improves the events push and adds some events.

Added

  • Events:
    • widget:click - data payload: { href }
    • menu:click - data payload: { item }
    • search:click - data payload: { type, data }

Changed

  • Menus are now again fetched even server-side. Added a prop to MixMenu to fetch only client-side if needed: onlyClientSide
  • State removed from events payload since it's reachable anyways

[19.0.0] - 2023-04-21

Breaking changes in this major release

You will need to make these updates to your storefront to be able to use this version of Ralph UI:

  • Remove CaToggleFavorite from your storefront to use the one from Ralph UI instead

  • Remove plugins/get-path.js and use plugins/ralph.js instead

  • Add events.js to your store folder and import store from ralphevents (see commit in Ralph Storefront for reference)

  • Update click handlers for CaProductCard (see commit in Ralph Storefront for reference)

    See guide for implementation

Added

  • events (store/ralphevents.js) added to store with the following events emitted:

    • cart:add - data payload: { item, product }
    • cart:remove - data payload: { item, product }
    • page:impression - data payload: { route }
    • product:click - data payload: { product, page, index, pageSize }
    • product:impression - data payload: { product, page }
    • product-detail:impression - data payload: { product }
    • favorite:add - data payload: { productId }
    • favorite:remove - data payload: { productId }
    • checkout:impression - data payload: {}
    • checkout:update - data payload: { checkout }
    • checkout:purchase - data payload: { order }
    • user:login - data payload: {}
    • user:logout - data payload: {}
    • user:register - data payload: {}
    • user:password-reset - data payload: { email, resetKey }
    • user:delete - data payload: {}
    • newsletter:subscribe - data payload: { email }

    All events also has a payload of:

    • type - the type of event (e.g. cart:add)
    • timestamp - the timestamp of the event
  • CaToggleFavorite component (moved from Ralph Storefront to Ralph UI)

  • Global log function $ralphLog used like so: this.$ralphLog(message, ...args)

  • currentLocaleand currentCurencyin store/channel for it to be included in the state in event payload

Changed

  • Using toggleFavorite action instead of toggleFavorite mutation to be able to emit events

Fixed

  • Fixed error with server side rendering checkout page without cart id

Deprecated

  • plugins/get-path.js - use plugins/ralph.js instead
  • Mutation toggleFavorite - use action toggleFavorite instead

· 2 min read
geins.io

[18.1.2] - 2023-04-12

Fixed

  • Fixed error with sorting set to default when server-side rendering search page

[18.1.1] - 2023-03-30

Make sure your storefront does not overwrite the head() in layout/default.vue if you want to use the default meta data functionality. Also, if you have multilang support in your site, remove the meta settings of pwa module in nuxt.config.js to avoid problems with default meta not translating.

Fixed

  • Improved default meta

[18.1.0] - 2023-03-29

Added

  • Extended support for 2 level menu in CaInfoPageMenu.
  • New component CaAccordionNavigation with support for 2 level menu. For displaying a menu as an accordion.

[18.0.2] - 2023-03-24

Fixed

  • Secure being on search page before setting "RELEVANCE" as sort option (can happen while routing to search page)

[18.0.0] - 2023-03-24

Breaking changes in this major release

This update will require you to either:

  • Update your sortOptions data in CaListSettings.vue to include the new RELEVANCE option OR
  • Use the new MixProductListSort mixin (strongly recommended)

IF you use the mixin you will also need to:

Added

  • RELEVANCE sort option for product list (only used on search page)
  • Mixin MixProductListSort for handling product list sort options

· 2 min read
geins.io
Breaking changes in this major release

This update will require you to add:

  • channel.js to your store folder.
  • Domain and market settings to nuxt.config.js.
  • @mixin scrollbarStyle to your styles/helpers/_layout.scss file.
  • Settings showProductReviewSection, and showStarsInProductReviewForm to publicRuntimeConfig in nuxt.config.js

You will also need to:

  • Update .env file.

  • Update Dockerfile.

  • Update your .env-file to use FALLBACK_MARKET_ALIAS instead of FALLBACK_MARKET_ID and the format should be for example "se" for Sweden.

  • Fetch fallback markets from the api in nuxt.config.

    See guide for implementation

Added

Changed

  • .env-variable FALLBACK_MARKET_ID is now called FALLBACK_MARKET_ALIAS
  • Redirect for not allowed langugaes on market
  • channelId, marketAlias and markets are moved into new section of store: channel
  • All market routing is now handled through default middleware
  • Global $getPath function now takes market and locale as arguments
  • checkoutMarket and currentMarket has been separated to avoid routing to unavailable markets
  • currentWidget function has been separated from CaWidget to make it easier to override

Fixed

  • Fix for console error for enableBodyScroll when leaving PDP
  • Widget Flowbox - fixed bug with initialization (generating pseudo id), loading widget only on client side, handle dynamic product flow option

Deprecated

· One min read
geins.io
Breaking changes in this major release

This update will require you to add:

  • Settings marketInPath and useStartPage to publicRuntimeConfig in nuxt.config.js. Also some changes to start page/front page. See commit in Ralph for reference

You will also need to:

Added

  • Support for market in path / route
  • Global getPath function to get internal paths with market

Changed

  • Using @nuxtjs/router module with the router.js file to modify all routes

· 2 min read
geins.io

Added

  • Global multiple language, market and currency support

  • Country selector component

  • Global function to clear apollo cache in store

  • Broadcasting change of marketId between tabs

  • Define default host and port for Vuese

  • Script to run documentation in parallel during the development

  • New prop to control in which state to open the menu - hover or click. Defaults to hover. How to use:

<CaHeaderNavigation
menu-state="click"
class="only-computer"
menu-location-id="main-desktop"
/>

Changed

  • Favorites are now using product id instead of alias, but will support alias
  • Moved apollo-config.js into Ralph UI
  • Moved call for global meta into Ralph UI
  • Name of MixCache to more describing MixApolloRefetch
  • MarketId now only has one source of truth, removing unnecessary calls to createOrUpdateCheckout
  • Country selector now updating according to external changes in marketId
  • Improved input types in account settings and checkout for better user experience.

Fixed

  • Fix product list slider (add error in case of missing config variable). Clients' storefronts should be updated. Make sure in nuxt.config.js in property publicRuntimeConfig:
    • Check if property breakpoints and productListScrollSize have a property desktopBig with a value set
    • Changing marketId will now trigger refetch of active Apollo queries
    • Fix for non functioning favorite removal
    • Fix for nShift (udc) bug in setting externalShippingId. Needs addition of :data-is-set="udcDataSet" to CaUdc widget in CaCheckout
  • Checkout not updating when changing marketId but keeping same currency

· 4 min read
geins.io

Added

  • Graphql query for listpage info
  • Support to search for multi language
  • Component that displaying product price history as table or panel.
  • Option to hide filter values
  • Option to display variants using images
  • Pass widget variables to config object
  • Enable open class on toggle for accordions
  • Identifier in product query
  • Order filters by their order property
  • reduce timeout
  • Gender to meta replacment
  • Meta replacment for gender and brand
  • Moved requests client side to increase TTFB
  • Added Global cart id to load cart client side
  • Enable option of product card design for quick add products
  • Country selector for sotrefronts with multiple markets
  • Disabled lazy load if first widget of the page is image
  • Dynamic currency for gtm events
  • Added Tree view multi filter
  • Info page menu
  • Rich text widget
  • Brands query
  • Fix slow loading of layout components && move getMenuAtLocation to client
  • Theme support for a lot of components with css variables
  • Support for new full url routing for list pages
  • Added grid mode for product gallery thumbs
  • Support for price filter
  • Support for hidden header mode on scroll
  • Error handling and logging
  • Support for meta image with fallback
  • Props for sizes attributes in CaProductGallery
  • Fetching balanceFormatted in UserType query

Changed

  • Prevent cart from crashing application when id not found
  • Added check for if price is discounted in mixprice
  • Removed temp identifiers from genders
  • Removed opacity on checkout guards
  • Removed Lazy Hydration wrapper on CaWidgetContainer
  • It was wrapping all components in one therefor making it not do anything
  • Moved the lazy hydration on the widget that renders, so it hydrates when visible
  • Enable excludeFacets for products query filter in MixtListPage
  • Added ARIA label attributes & componentProps made optional for Modal
  • Hide plus icon if product gallery has no overlay
  • Split Tree view component into 2 separate components, one for logic one for recursion
  • Tree View no properly works with infinite number of child categories
  • Added mouseover and mouseleave events for CaHeaderNavigation items so that it can close when menu item is clicked
  • Made the product parameter optional for the AddToCart mixin to make it possible to use mixin without triggering the info popup.
  • Set default market id if only one market
  • Load menus serverside
  • Revert the way 404 are handled
  • Deselecting parent category in the tree view will deselect all children

Fixed

  • Fix 'Add to Cart' and 'Remove from Cart' gtm events
  • Optional chaining/null check for gtm config object
  • Linting issues for CaProductPriceHistory
  • Semantic improvements for presenting price data in price history component.
  • Add missing path attribute to cookie methods set/remove
  • Option to switch the key for GTM event items between products or items (defaults to products)
  • Added discount percentage to product object
  • Improve check for current breadcrumb level
  • Search check for multi language
  • Currency to gtm purchase event
  • Prevent duplicated price changes in product price history
  • Conditions for rendering in product price history
  • Wrong path in switchToCanonicalor404
  • Breadcrumbs component to show all categories
  • Separate nosto and gtm events in different conditionals
  • Set default color on icons and links fix for ios
  • Pass order id and currency to gtm and nosto
  • Gallery on ios devices
  • Hide footer acordions if there are no menu items
  • Check if the shipping is valid
  • Filters not showing due to interavl beeing cleared too soon
  • Pass product SKU to variant picker
  • Proper clear of setInterval
  • Removed last bit of LazyHydrate, it was preventing nosto from loading
  • Refresh cart on location change
  • Added support for discount filter
  • Proper check for product variant, to stop crashing the node server
  • Bug in authClient not setting token for some clients
  • Fixed an issue where auth client breaks if customer does not have nosto
  • Fixed an issue where accordion wouldn't toggle if a child is selected
  • Toggle parrent categories when rendering the tree and only a child is selected
  • When a child node is unmarked, in the filter tree view, the parent has to be unmarked as well. Otherwise nothing changes in the filtered list
  • Removed console log
  • Fixed problem with product gallery css
  • Fallback for no filters in filters callback
  • Added missing url variable for widgetArea call

Removed

  • Client render on widgets

· 2 min read
geins.io

This update will need you to add a channelSettings.js file in the config folder and to change your environment variables. See Project Ralph for reference

Added

  • Srcset prop for CaImage
  • Add filtermode to product request
  • Walley Checkout support
  • Added languageId to all endpoints
  • Added currentBaseUrl which is based on channelId
  • Added fallback for channelId
  • Added channelSettings to store
  • Divide requests, move filter request from withAreaCombine

Fixed

  • Fix view skeleton without apiKey
  • Fix layout shift title
  • Walley payment method fix for null orderId
  • Fix send headers after send to the client in checkout page
  • Fixes nShift bug related to input fields in nShift frame without debouncer
  • Fixed bug in gtm push that causes error in checkout on reload
  • Fix server requests to product widget in CaWidgetProductList
  • Fix static parameters for filters
  • Set Filtermode with any ui filters
  • Feedback for nShift/UDC handled correctly
  • Set Filtermode with right condition
  • Fix filters cache in category page
  • Cart items change when modifying promo code
  • Minor fix of product combine query
  • Minor nosto fix of checkout event
  • Reverted new baseUrl handling until better solution is found
  • JSON.parse for baseUrl
  • Fix search channelId empty value
  • Fix combine variables in no filter request
  • Fix nosto checkout event
  • Fix bug with latest/favorite widget

Removed

  • Unnecessary check for checkout-container element on external checkout init
  • Removed channel-settings from store

· One min read
geins.io

This update requires you to have a folder called config in your repo, with a file called localeDomains.js. You can use the update of the Ralph repo to 12.0.0 as a reference/merge it into your storefront.

Added

  • Add nosto checkout event
  • Extend WidgetProductList with latest viewed/favorites products mode
  • Add initial setup of nosto checkout
  • ChannelId to all graphql queries
  • Config folder for extendable default configs
  • Locale domains default config

Fixed

  • Fix headers errors
  • Fix channelId dublication error
  • Fix empty cart checkout
  • Channelid dublicate fix