diff --git a/addons/website_sale_comparison/__manifest__.py b/addons/website_sale_comparison/__manifest__.py index 36ab9953ca8..c4d5847f8b5 100644 --- a/addons/website_sale_comparison/__manifest__.py +++ b/addons/website_sale_comparison/__manifest__.py @@ -27,7 +27,7 @@ Finally, the module comes with an option to display an attribute summary table i 'assets': { 'web.assets_frontend': [ 'website_sale_comparison/static/src/scss/website_sale_comparison.scss', - 'website_sale_comparison/static/src/js/website_sale_comparison.js', + 'website_sale_comparison/static/src/js/**/*.js', ], 'web.assets_tests': [ 'website_sale_comparison/static/tests/**/*', diff --git a/addons/website_sale_comparison/static/src/js/website_sale.js b/addons/website_sale_comparison/static/src/js/website_sale.js new file mode 100644 index 00000000000..51fbcb8308f --- /dev/null +++ b/addons/website_sale_comparison/static/src/js/website_sale.js @@ -0,0 +1,16 @@ +/** @odoo-module **/ + +import { WebsiteSale } from 'website_sale.website_sale'; + +WebsiteSale.include({ + /** + * Toggles the add to cart button depending on the possibility of the + * current combination. + * + * @override + */ + _toggleDisable: function ($parent, isCombinationPossible) { + this._super(...arguments); + $parent.find('a.a-submit').toggleClass('disabled', !isCombinationPossible); + }, +}); diff --git a/addons/website_sale_comparison/static/src/js/website_sale_comparison.js b/addons/website_sale_comparison/static/src/js/website_sale_comparison.js index 34d4b66bb67..0e467206a73 100644 --- a/addons/website_sale_comparison/static/src/js/website_sale_comparison.js +++ b/addons/website_sale_comparison/static/src/js/website_sale_comparison.js @@ -313,9 +313,22 @@ publicWidget.registry.ProductComparison = publicWidget.Widget.extend(cartHandler productTrackingInfo.quantity = 1; $inputProduct.trigger('add_to_cart_event', [productTrackingInfo]); } - return this.addToCart({product_id: productId, add_qty: 1}); + return this.addToCart(this._getAddToCartParams(productId, $form)); } }, + /** + * Get the addToCart Params + * + * @param {number} productId + * @param {JQuery} $form + * @override + */ + _getAddToCartParams(productId, $form) { + return { + product_id: productId, + add_qty: 1, + }; + } }); return ProductComparison; }); diff --git a/addons/website_sale_comparison/views/website_sale_comparison_template.xml b/addons/website_sale_comparison/views/website_sale_comparison_template.xml index cdaf9034e9f..972e0ac1eb0 100644 --- a/addons/website_sale_comparison/views/website_sale_comparison_template.xml +++ b/addons/website_sale_comparison/views/website_sale_comparison_template.xml @@ -113,11 +113,11 @@
- + Price: - + diff --git a/addons/website_sale_wishlist/static/src/js/website_sale.js b/addons/website_sale_wishlist/static/src/js/website_sale.js new file mode 100644 index 00000000000..f62b0f04405 --- /dev/null +++ b/addons/website_sale_wishlist/static/src/js/website_sale.js @@ -0,0 +1,16 @@ +/** @odoo-module **/ + +import { WebsiteSale } from 'website_sale.website_sale'; + +WebsiteSale.include({ + /** + * Toggles the add to cart button depending on the possibility of the + * current combination. + * + * @override + */ + _toggleDisable: function ($parent, isCombinationPossible) { + this._super(...arguments); + $parent.find('button.o_wish_add').toggleClass('disabled', !isCombinationPossible); + }, +}); diff --git a/addons/website_sale_wishlist/static/src/js/website_sale_wishlist.js b/addons/website_sale_wishlist/static/src/js/website_sale_wishlist.js index 794285079d6..832a421581f 100644 --- a/addons/website_sale_wishlist/static/src/js/website_sale_wishlist.js +++ b/addons/website_sale_wishlist/static/src/js/website_sale_wishlist.js @@ -182,11 +182,7 @@ publicWidget.registry.ProductWishlist = publicWidget.Widget.extend(VariantMixin, } return this._rpc({ route: "/shop/cart/update_json", - params: { - product_id: parseInt(productID, 10), - add_qty: parseInt(qty, 10), - display: false, - }, + params: this._getCartUpdateJsonParams(productID, qty), }).then(function (resp) { if (resp.warning) { if (! $('#data_warning').length) { @@ -198,6 +194,19 @@ publicWidget.registry.ProductWishlist = publicWidget.Widget.extend(VariantMixin, $('.my_cart_quantity').html(resp.cart_quantity || ' '); }); }, + /** + * Get the cart update params. + * + * @param {string} productId + * @param {string} qty + */ + _getCartUpdateJsonParams(productId, qty) { + return { + product_id: parseInt(productId, 10), + add_qty: parseInt(qty, 10), + display: false, + }; + }, /** * @private */ @@ -270,6 +279,10 @@ publicWidget.registry.ProductWishlist = publicWidget.Widget.extend(VariantMixin, * @param {Event} ev */ _onClickWishAdd: function (ev) { + if (ev.currentTarget.classList.contains('disabled')) { + ev.preventDefault(); + return; + } var self = this; this.$('.wishlist-section .o_wish_add').addClass('disabled'); this._addOrMoveWish(ev).then(function () { diff --git a/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml b/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml index 7c93d0c4a23..128c5540e2b 100644 --- a/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml +++ b/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml @@ -171,20 +171,22 @@ Product image - +

- + - + - +