@@ -22,4 +22,47 @@ export default () => {
2222 initProductSlide ( ) ;
2323 prestashop . on ( events . updatedProduct , initProductSlide ) ;
2424 prestashop . on ( events . quickviewOpened , initProductSlide ) ;
25+
26+ function detectQuantityChange ( ) {
27+ const quantityInput = document . querySelector (
28+ SelectorsMap . qtyInput . quantityWanted ,
29+ ) as HTMLInputElement ;
30+ const incrementButton = document . querySelector (
31+ SelectorsMap . qtyInput . increment ,
32+ ) as HTMLButtonElement ;
33+ const decrementButton = document . querySelector (
34+ SelectorsMap . qtyInput . decrement ,
35+ ) as HTMLButtonElement ;
36+
37+ if ( quantityInput && incrementButton && decrementButton ) {
38+ // Function to trigger emit
39+ const triggerEmit = ( ) => {
40+ const inputValue = parseInt ( quantityInput . value , 10 ) ;
41+ const minValue = parseInt ( quantityInput . min , 10 ) ;
42+
43+ // Check if the input value is a valid and greater or equal than the minimum value
44+ if ( ! isNaN ( inputValue ) && inputValue >= minValue ) {
45+ quantityInput . value = inputValue . toString ( ) ;
46+ } else {
47+ quantityInput . value = minValue . toString ( ) ;
48+ }
49+
50+ prestashop . emit ( 'updateProduct' , {
51+ eventType : 'updatedProductQuantity' ,
52+ } ) ;
53+ } ;
54+
55+ // Attach event listener for input changes
56+ quantityInput . addEventListener ( 'input' , triggerEmit ) ;
57+ quantityInput . addEventListener ( 'keyup' , triggerEmit ) ;
58+ quantityInput . addEventListener ( 'keydown' , triggerEmit ) ;
59+
60+ // Attach event listener for increment / decrement button click
61+ incrementButton . addEventListener ( 'click' , triggerEmit ) ;
62+ decrementButton . addEventListener ( 'click' , triggerEmit ) ;
63+ }
64+ }
65+
66+ // Call the function to start listening for quantity changes
67+ detectQuantityChange ( ) ;
2568} ;
0 commit comments