diff --git a/assets/js/theme/common/product-details-base.js b/assets/js/theme/common/product-details-base.js index 0ea8d23d7e..d084b31c4b 100644 --- a/assets/js/theme/common/product-details-base.js +++ b/assets/js/theme/common/product-details-base.js @@ -199,6 +199,9 @@ export default class ProductDetailsBase { $text: $('.incrementTotal', $scope), $input: $('[name=qty\\[\\]]', $scope), }, + backorderAvailabilityPrompt: { + $container: $('[data-backorder-availability-prompt]', $scope), + }, $bulkPricing: $('.productView-info-bulkPricing', $scope), $walletButtons: $('[data-add-to-cart-wallet-buttons]', $scope), }; @@ -273,6 +276,29 @@ export default class ProductDetailsBase { viewModel.stock.$input.text(data.stock); } + // Update backorder availability prompt for complex products + const $backorderAvailabilityPromptContainer = viewModel.backorderAvailabilityPrompt.$container; + + if ($backorderAvailabilityPromptContainer.length && this.context.showBackorderAvailabilityPrompt) { + const $prompt = $backorderAvailabilityPromptContainer.find('.productView-backorder-availability-prompt'); + + if (typeof data.stock === 'number' && data.stock > 0) { + if ($prompt.length) { + $prompt.show(); + } else { + const promptText = this.context.backorderAvailabilityPrompt; + + if (promptText) { + $backorderAvailabilityPromptContainer.html( + `(${promptText})`, + ); + } + } + } else { + $prompt.hide(); + } + } + this.updateDefaultAttributesForOOS(data); this.updateWalletButtonsView(data); diff --git a/templates/components/products/product-view.html b/templates/components/products/product-view.html index ece23c029e..056ba48095 100644 --- a/templates/components/products/product-view.html +++ b/templates/components/products/product-view.html @@ -1,4 +1,6 @@ {{inject 'outOfStockDefaultMessage' (lang 'products.out_of_stock_default_message')}} +{{inject 'showBackorderAvailabilityPrompt' product.show_backorder_availability_prompt}} +{{inject 'backorderAvailabilityPrompt' product.backorder_availability_prompt}}
{{> components/products/add-to-cart with_wallet_buttons=true}}