From 4fd386b5bd7a46189471cf076f8c147713c203bc Mon Sep 17 00:00:00 2001 From: Alexandre Lara Date: Fri, 8 Mar 2024 16:08:20 -0300 Subject: [PATCH] [Experimental] Product Filter: Price (Beta) block: Prevent invalid price range selection in Product Filter Price block (#45403) * Prevent invalid price range selection in Product Filter Price block * Add changefile(s) from automation for the following project(s): woocommerce-blocks --------- Co-authored-by: github-actions --- .../inner-blocks/price-filter/frontend.ts | 17 ++++++++++++++--- ...ange-selection-in-product-filter-price-block | 4 ++++ 2 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 plugins/woocommerce/changelog/45403-fix-45361-invalid-price-range-selection-in-product-filter-price-block diff --git a/plugins/woocommerce-blocks/assets/js/blocks/product-filter/inner-blocks/price-filter/frontend.ts b/plugins/woocommerce-blocks/assets/js/blocks/product-filter/inner-blocks/price-filter/frontend.ts index f208101010650..715d3c50dff66 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/product-filter/inner-blocks/price-filter/frontend.ts +++ b/plugins/woocommerce-blocks/assets/js/blocks/product-filter/inner-blocks/price-filter/frontend.ts @@ -1,7 +1,7 @@ /** * External dependencies */ -import { store, getContext } from '@woocommerce/interactivity'; +import { store, getContext, getElement } from '@woocommerce/interactivity'; import { formatPrice, getCurrency } from '@woocommerce/price-format'; import { HTMLElementEvent } from '@woocommerce/types'; @@ -70,17 +70,28 @@ store< PriceFilterStore >( 'woocommerce/product-filter-price', { type === 'min' ? Math.min( Number.isNaN( value ) ? minRange : value, - maxRange - 1 + maxPrice ) : minPrice; const currentMaxPrice = type === 'max' ? Math.max( Number.isNaN( value ) ? maxRange : value, - minRange + 1 + minPrice ) : maxPrice; + // In some occasions the input element is updated with the incorrect value. + // By using the element that triggered the event, we can ensure the correct value is used for the input. + const element = getElement(); + if ( type === 'min' ) { + element.ref.value = currentMinPrice; + } + + if ( type === 'max' ) { + element.ref.value = currentMaxPrice; + } + context.minPrice = currentMinPrice; context.maxPrice = currentMaxPrice; diff --git a/plugins/woocommerce/changelog/45403-fix-45361-invalid-price-range-selection-in-product-filter-price-block b/plugins/woocommerce/changelog/45403-fix-45361-invalid-price-range-selection-in-product-filter-price-block new file mode 100644 index 0000000000000..c1851ce8760d3 --- /dev/null +++ b/plugins/woocommerce/changelog/45403-fix-45361-invalid-price-range-selection-in-product-filter-price-block @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fix an issue where shoppers could select invalid price ranges in the Product Filter: Price (Beta) block \ No newline at end of file