{"version":3,"file":"default/js/productTile.js","sources":["webpack://rws/./dependencies/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js","webpack://rws/./dependencies/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/product/base.js","webpack://rws/./dependencies/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/product/quickView.js","webpack://rws/./dependencies/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/util.js","webpack://rws/./dependencies/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/productTile.js"],"sourcesContent":["'use strict';\n\nmodule.exports = {\n setTabNextFocus: function (focusParams) {\n var KEYCODE_TAB = 9;\n var isTabPressed = (focusParams.event.key === 'Tab' || focusParams.event.keyCode === KEYCODE_TAB);\n\n if (!isTabPressed) {\n return;\n }\n\n var firstFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.firstElementSelector);\n var lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.lastElementSelector);\n\n if ($(focusParams.containerSelector + ' ' + focusParams.lastElementSelector).is(':disabled')) {\n lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.nextToLastElementSelector);\n if ($('.product-quickview.product-set').length > 0) {\n var linkElements = $(focusParams.containerSelector + ' a#fa-link.share-icons');\n lastFocusableEl = linkElements[linkElements.length - 1];\n }\n }\n\n if (focusParams.event.shiftKey) /* shift + tab */ {\n if ($(':focus').is(firstFocusableEl)) {\n lastFocusableEl.focus();\n focusParams.event.preventDefault();\n }\n } else /* tab */ {\n if ($(':focus').is(lastFocusableEl)) { // eslint-disable-line\n firstFocusableEl.focus();\n focusParams.event.preventDefault();\n }\n }\n }\n};\n","'use strict';\nvar focusHelper = require('../components/focus');\n\n/**\n * Retrieves the relevant pid value\n * @param {jquery} $el - DOM container for a given add to cart button\n * @return {string} - value to be used when adding product to cart\n */\nfunction getPidValue($el) {\n var pid;\n\n if ($('#quickViewModal').hasClass('show') && !$('.product-set').length) {\n pid = $($el).closest('.modal-content').find('.product-quickview').data('pid');\n } else if ($('.product-set-detail').length || $('.product-set').length) {\n pid = $($el).closest('.product-detail').find('.product-id').text();\n } else {\n pid = $('.product-detail:not(\".bundle-item\")').data('pid');\n }\n\n return pid;\n}\n\n/**\n * Retrieve contextual quantity selector\n * @param {jquery} $el - DOM container for the relevant quantity\n * @return {jquery} - quantity selector DOM container\n */\nfunction getQuantitySelector($el) {\n var quantitySelected;\n if ($el && $('.set-items').length) {\n quantitySelected = $($el).closest('.product-detail').find('.quantity-select');\n } else if ($el && $('.product-bundle').length) {\n var quantitySelectedModal = $($el).closest('.modal-footer').find('.quantity-select');\n var quantitySelectedPDP = $($el).closest('.bundle-footer').find('.quantity-select');\n if (quantitySelectedModal.val() === undefined) {\n quantitySelected = quantitySelectedPDP;\n } else {\n quantitySelected = quantitySelectedModal;\n }\n } else {\n quantitySelected = $('.quantity-select');\n }\n return quantitySelected;\n}\n\n/**\n * Retrieves the value associated with the Quantity pull-down menu\n * @param {jquery} $el - DOM container for the relevant quantity\n * @return {string} - value found in the quantity input\n */\nfunction getQuantitySelected($el) {\n return getQuantitySelector($el).val();\n}\n\n/**\n * Process the attribute values for an attribute that has image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction processSwatchValues(attr, $productContainer, msgs) {\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer.find('[data-attr=\"' + attr.id + '\"] [data-attr-value=\"' +\n attrValue.value + '\"]');\n var $swatchButton = $attrValue.parent();\n\n if (attrValue.selected) {\n $attrValue.addClass('selected');\n $attrValue.siblings('.selected-assistive-text').text(msgs.assistiveSelectedText);\n } else {\n $attrValue.removeClass('selected');\n $attrValue.siblings('.selected-assistive-text').empty();\n }\n\n if (attrValue.url) {\n $swatchButton.attr('data-url', attrValue.url);\n } else {\n $swatchButton.removeAttr('data-url');\n }\n\n // Disable if not selectable\n $attrValue.removeClass('selectable unselectable');\n\n $attrValue.addClass(attrValue.selectable ? 'selectable' : 'unselectable');\n });\n}\n\n/**\n * Process attribute values associated with an attribute that does not have image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction processNonSwatchValues(attr, $productContainer) {\n var $attr = '[data-attr=\"' + attr.id + '\"]';\n var $defaultOption = $productContainer.find($attr + ' .select-' + attr.id + ' option:first');\n $defaultOption.attr('value', attr.resetUrl);\n\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer\n .find($attr + ' [data-attr-value=\"' + attrValue.value + '\"]');\n $attrValue.attr('value', attrValue.url)\n .removeAttr('disabled');\n\n if (!attrValue.selectable) {\n $attrValue.attr('disabled', true);\n }\n });\n}\n\n/**\n * Routes the handling of attribute processing depending on whether the attribute has image\n * swatches or not\n *\n * @param {Object} attrs - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {jQuery} $productContainer - DOM element for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction updateAttrs(attrs, $productContainer, msgs) {\n // Currently, the only attribute type that has image swatches is Color.\n var attrsWithSwatches = ['color'];\n\n attrs.forEach(function (attr) {\n if (attrsWithSwatches.indexOf(attr.id) > -1) {\n processSwatchValues(attr, $productContainer, msgs);\n } else {\n processNonSwatchValues(attr, $productContainer);\n }\n });\n}\n\n/**\n * Updates the availability status in the Product Detail Page\n *\n * @param {Object} response - Ajax response object after an\n * attribute value has been [de]selected\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateAvailability(response, $productContainer) {\n var availabilityValue = '';\n var availabilityMessages = response.product.availability.messages;\n if (!response.product.readyToOrder) {\n availabilityValue = '
  • ' + response.resources.info_selectforstock + '
  • ';\n } else {\n availabilityMessages.forEach(function (message) {\n availabilityValue += '
  • ' + message + '
  • ';\n });\n }\n\n $($productContainer).trigger('product:updateAvailability', {\n product: response.product,\n $productContainer: $productContainer,\n message: availabilityValue,\n resources: response.resources\n });\n}\n\n/**\n * Generates html for product attributes section\n *\n * @param {array} attributes - list of attributes\n * @return {string} - Compiled HTML\n */\nfunction getAttributesHtml(attributes) {\n if (!attributes) {\n return '';\n }\n\n var html = '';\n\n attributes.forEach(function (attributeGroup) {\n if (attributeGroup.ID === 'mainAttributes') {\n attributeGroup.attributes.forEach(function (attribute) {\n html += '
    ' + attribute.label + ': '\n + attribute.value + '
    ';\n });\n }\n });\n\n return html;\n}\n\n/**\n * @typedef UpdatedOptionValue\n * @type Object\n * @property {string} id - Option value ID for look up\n * @property {string} url - Updated option value selection URL\n */\n\n/**\n * @typedef OptionSelectionResponse\n * @type Object\n * @property {string} priceHtml - Updated price HTML code\n * @property {Object} options - Updated Options\n * @property {string} options.id - Option ID\n * @property {UpdatedOptionValue[]} options.values - Option values\n */\n\n/**\n * Updates DOM using post-option selection Ajax response\n *\n * @param {OptionSelectionResponse} optionsHtml - Ajax response optionsHtml from selecting a product option\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction updateOptions(optionsHtml, $productContainer) {\n\t// Update options\n $productContainer.find('.product-options').empty().html(optionsHtml);\n}\n\n/**\n * Dynamically creates Bootstrap carousel from response containing images\n * @param {Object[]} imgs - Array of large product images,along with related information\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction createCarousel(imgs, $productContainer) {\n var carousel = $productContainer.find('.carousel');\n $(carousel).carousel('dispose');\n var carouselId = $(carousel).attr('id');\n $(carousel).empty().append('
      ' + $(carousel).data('prev') + '' + $(carousel).data('next') + '');\n for (var i = 0; i < imgs.length; i++) {\n $('
      \"'
      ').appendTo($(carousel).find('.carousel-inner'));\n $('
    1. ').appendTo($(carousel).find('.carousel-indicators'));\n }\n $($(carousel).find('.carousel-item')).first().addClass('active');\n $($(carousel).find('.carousel-indicators > li')).first().addClass('active');\n if (imgs.length === 1) {\n $($(carousel).find('.carousel-indicators, a[class^=\"carousel-control-\"]')).detach();\n }\n $(carousel).carousel();\n $($(carousel).find('.carousel-indicators')).attr('aria-hidden', true);\n}\n\n/**\n * Parses JSON from Ajax call made whenever an attribute value is [de]selected\n * @param {Object} response - response from Ajax call\n * @param {Object} response.product - Product object\n * @param {string} response.product.id - Product ID\n * @param {Object[]} response.product.variationAttributes - Product attributes\n * @param {Object[]} response.product.images - Product images\n * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required\n * attributes have been selected. Used partially to\n * determine whether the Add to Cart button can be enabled\n * @param {jQuery} $productContainer - DOM element for a given product.\n */\nfunction handleVariantResponse(response, $productContainer) {\n var isChoiceOfBonusProducts =\n $productContainer.parents('.choose-bonus-product-dialog').length > 0;\n var isVaraint;\n if (response.product.variationAttributes) {\n updateAttrs(response.product.variationAttributes, $productContainer, response.resources);\n isVaraint = response.product.productType === 'variant';\n if (isChoiceOfBonusProducts && isVaraint) {\n $productContainer.parent('.bonus-product-item')\n .data('pid', response.product.id);\n\n $productContainer.parent('.bonus-product-item')\n .data('ready-to-order', response.product.readyToOrder);\n }\n }\n\n // Update primary images\n var primaryImageUrls = response.product.images.large;\n createCarousel(primaryImageUrls, $productContainer);\n\n // Update pricing\n if (!isChoiceOfBonusProducts) {\n var $priceSelector = $('.prices .price', $productContainer).length\n ? $('.prices .price', $productContainer)\n : $('.prices .price');\n $priceSelector.replaceWith(response.product.price.html);\n }\n\n // Update promotions\n $productContainer.find('.promotions').empty().html(response.product.promotionsHtml);\n\n updateAvailability(response, $productContainer);\n\n if (isChoiceOfBonusProducts) {\n var $selectButton = $productContainer.find('.select-bonus-product');\n $selectButton.trigger('bonusproduct:updateSelectButton', {\n product: response.product, $productContainer: $productContainer\n });\n } else {\n // Enable \"Add to Cart\" button if all required attributes have been selected\n $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', {\n product: response.product, $productContainer: $productContainer\n }).trigger('product:statusUpdate', response.product);\n }\n\n // Update attributes\n $productContainer.find('.main-attributes').empty()\n .html(getAttributesHtml(response.product.attributes));\n}\n\n/**\n * @typespec UpdatedQuantity\n * @type Object\n * @property {boolean} selected - Whether the quantity has been selected\n * @property {string} value - The number of products to purchase\n * @property {string} url - Compiled URL that specifies variation attributes, product ID, options,\n * etc.\n */\n\n/**\n * Updates the quantity DOM elements post Ajax call\n * @param {UpdatedQuantity[]} quantities -\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction updateQuantities(quantities, $productContainer) {\n if ($productContainer.parent('.bonus-product-item').length <= 0) {\n var optionsHtml = quantities.map(function (quantity) {\n var selected = quantity.selected ? ' selected ' : '';\n return '';\n }).join('');\n getQuantitySelector($productContainer).empty().html(optionsHtml);\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelect(selectedValueUrl, $productContainer) {\n if (selectedValueUrl) {\n $('body').trigger('product:beforeAttributeSelect',\n { url: selectedValueUrl, container: $productContainer });\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n handleVariantResponse(data, $productContainer);\n updateOptions(data.product.optionsHtml, $productContainer);\n updateQuantities(data.product.quantities, $productContainer);\n $('body').trigger('product:afterAttributeSelect',\n { data: data, container: $productContainer });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @return {string} - The provided URL to use when adding a product to the cart\n */\nfunction getAddToCartUrl() {\n return $('.add-to-cart-url').val();\n}\n\n/**\n * Parses the html for a modal window\n * @param {string} html - representing the body and footer of the modal window\n *\n * @return {Object} - Object with properties body and footer.\n */\nfunction parseHtml(html) {\n var $html = $('
      ').append($.parseHTML(html));\n\n var body = $html.find('.choice-of-bonus-product');\n var footer = $html.find('.modal-footer').children();\n\n return { body: body, footer: footer };\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @param {Object} data - data object used to fill in dynamic portions of the html\n */\nfunction chooseBonusProducts(data) {\n $('.modal-body').spinner().start();\n\n if ($('#chooseBonusProductModal').length !== 0) {\n $('#chooseBonusProductModal').remove();\n }\n var bonusUrl;\n if (data.bonusChoiceRuleBased) {\n bonusUrl = data.showProductsUrlRuleBased;\n } else {\n bonusUrl = data.showProductsUrlListBased;\n }\n\n var htmlString = ''\n + '
      '\n + ''\n + '
      '\n + ''\n + '
      '\n + '
      '\n + ' ' + data.labels.selectprods + ''\n + ' '\n + '
      '\n + '
      '\n + '
      '\n + '
      '\n + '
      '\n + '
      ';\n $('body').append(htmlString);\n $('.modal-body').spinner().start();\n\n $.ajax({\n url: bonusUrl,\n method: 'GET',\n dataType: 'json',\n success: function (response) {\n var parsedHtml = parseHtml(response.renderedTemplate);\n $('#chooseBonusProductModal .modal-body').empty();\n $('#chooseBonusProductModal .enter-message').text(response.enterDialogMessage);\n $('#chooseBonusProductModal .modal-header .close .sr-only').text(response.closeButtonText);\n $('#chooseBonusProductModal .modal-body').html(parsedHtml.body);\n $('#chooseBonusProductModal .modal-footer').html(parsedHtml.footer);\n $('#chooseBonusProductModal').modal('show');\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n}\n\n/**\n * Updates the Mini-Cart quantity value after the customer has pressed the \"Add to Cart\" button\n * @param {string} response - ajax response from clicking the add to cart button\n */\nfunction handlePostCartAdd(response) {\n $('.minicart').trigger('count:update', response);\n var messageType = response.error ? 'alert-danger' : 'alert-success';\n // show add to cart toast\n if (response.newBonusDiscountLineItem\n && Object.keys(response.newBonusDiscountLineItem).length !== 0) {\n chooseBonusProducts(response.newBonusDiscountLineItem);\n } else {\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append(\n '
      '\n );\n }\n\n $('.add-to-cart-messages').append(\n '
      '\n + response.message\n + '
      '\n );\n\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n }, 5000);\n }\n}\n\n/**\n * Retrieves the bundle product item ID's for the Controller to replace bundle master product\n * items with their selected variants\n *\n * @return {string[]} - List of selected bundle product item ID's\n */\nfunction getChildProducts() {\n var childProducts = [];\n $('.bundle-item').each(function () {\n childProducts.push({\n pid: $(this).find('.product-id').text(),\n quantity: parseInt($(this).find('label.quantity').data('quantity'), 10)\n });\n });\n\n return childProducts.length ? JSON.stringify(childProducts) : [];\n}\n\n/**\n * Retrieve product options\n *\n * @param {jQuery} $productContainer - DOM element for current product\n * @return {string} - Product options and their selected values\n */\nfunction getOptions($productContainer) {\n var options = $productContainer\n .find('.product-option')\n .map(function () {\n var $elOption = $(this).find('.options-select');\n var urlValue = $elOption.val();\n var selectedValueId = $elOption.find('option[value=\"' + urlValue + '\"]')\n .data('value-id');\n return {\n optionId: $(this).data('option-id'),\n selectedValueId: selectedValueId\n };\n }).toArray();\n\n return JSON.stringify(options);\n}\n\n/**\n * Makes a call to the server to report the event of adding an item to the cart\n *\n * @param {string | boolean} url - a string representing the end point to hit so that the event can be recorded, or false\n */\nfunction miniCartReportingUrl(url) {\n if (url) {\n $.ajax({\n url: url,\n method: 'GET',\n success: function () {\n // reporting urls hit on the server\n },\n error: function () {\n // no reporting urls hit on the server\n }\n });\n }\n}\n\nmodule.exports = {\n attributeSelect: attributeSelect,\n methods: {\n editBonusProducts: function (data) {\n chooseBonusProducts(data);\n }\n },\n\n focusChooseBonusProductModal: function () {\n $('body').on('shown.bs.modal', '#chooseBonusProductModal', function () {\n $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'true');\n $('#chooseBonusProductModal .close').focus();\n });\n },\n\n onClosingChooseBonusProductModal: function () {\n $('body').on('hidden.bs.modal', '#chooseBonusProductModal', function () {\n $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'false');\n });\n },\n\n trapChooseBonusProductModalFocus: function () {\n $('body').on('keydown', '#chooseBonusProductModal', function (e) {\n var focusParams = {\n event: e,\n containerSelector: '#chooseBonusProductModal',\n firstElementSelector: '.close',\n lastElementSelector: '.add-bonus-products'\n };\n focusHelper.setTabNextFocus(focusParams);\n });\n },\n\n colorAttribute: function () {\n $(document).on('click', '[data-attr=\"color\"] button', function (e) {\n e.preventDefault();\n\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n\n attributeSelect($(this).attr('data-url'), $productContainer);\n });\n },\n\n selectAttribute: function () {\n $(document).on('change', 'select[class*=\"select-\"], .options-select', function (e) {\n e.preventDefault();\n\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect(e.currentTarget.value, $productContainer);\n });\n },\n\n availability: function () {\n $(document).on('change', '.quantity-select', function (e) {\n e.preventDefault();\n\n var $productContainer = $(this).closest('.product-detail');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.modal-content').find('.product-quickview');\n }\n\n if ($('.bundle-items', $productContainer).length === 0) {\n attributeSelect($(e.currentTarget).find('option:selected').data('url'),\n $productContainer);\n }\n });\n },\n\n addToCart: function () {\n $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function () {\n var addToCartUrl;\n var pid;\n var pidsObj;\n var setPids;\n\n if ($(this).hasClass('disabled')) {\n return;\n }\n\n $('body').trigger('product:beforeAddToCart', this);\n\n if ($('.set-items').length && $(this).hasClass('add-to-cart-global')) {\n setPids = [];\n\n $('.product-detail').each(function () {\n if (!$(this).hasClass('product-set-detail')) {\n setPids.push({\n pid: $(this).find('.product-id').text(),\n qty: $(this).find('.quantity-select').val(),\n options: getOptions($(this))\n });\n }\n });\n pidsObj = JSON.stringify(setPids);\n }\n\n pid = getPidValue($(this));\n\n var $productContainer = $(this).closest('.product-detail');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.quick-view-dialog').find('.product-detail');\n }\n\n addToCartUrl = getAddToCartUrl();\n\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: getChildProducts(),\n quantity: getQuantitySelected($(this))\n };\n\n if (!$('.bundle-item').length) {\n form.options = getOptions($productContainer);\n }\n\n $(this).trigger('updateAddToCartFormData', form);\n if (addToCartUrl) {\n $.ajax({\n url: addToCartUrl,\n method: 'POST',\n data: form,\n success: function (data) {\n handlePostCartAdd(data);\n $('body').trigger('product:afterAddToCart', data);\n $.spinner().stop();\n miniCartReportingUrl(data.reportingURL);\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n });\n },\n selectBonusProduct: function () {\n $(document).on('click', '.select-bonus-product', function () {\n var $choiceOfBonusProduct = $(this).parents('.choice-of-bonus-product');\n var pid = $(this).data('pid');\n var maxPids = $('.choose-bonus-product-dialog').data('total-qty');\n var submittedQty = parseInt($choiceOfBonusProduct.find('.bonus-quantity-select').val(), 10);\n var totalQty = 0;\n $.each($('#chooseBonusProductModal .selected-bonus-products .selected-pid'), function () {\n totalQty += $(this).data('qty');\n });\n totalQty += submittedQty;\n var optionID = $choiceOfBonusProduct.find('.product-option').data('option-id');\n var valueId = $choiceOfBonusProduct.find('.options-select option:selected').data('valueId');\n if (totalQty <= maxPids) {\n var selectedBonusProductHtml = ''\n + '
      '\n + '
      '\n + $choiceOfBonusProduct.find('.product-name').html()\n + '
      '\n + '
      '\n + '
      '\n ;\n $('#chooseBonusProductModal .selected-bonus-products').append(selectedBonusProductHtml);\n $('.pre-cart-products').html(totalQty);\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\n } else {\n $('.selected-bonus-products .bonus-summary').addClass('alert-danger');\n }\n });\n },\n removeBonusProduct: function () {\n $(document).on('click', '.selected-pid', function () {\n $(this).remove();\n var $selected = $('#chooseBonusProductModal .selected-bonus-products .selected-pid');\n var count = 0;\n if ($selected.length) {\n $selected.each(function () {\n count += parseInt($(this).data('qty'), 10);\n });\n }\n\n $('.pre-cart-products').html(count);\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\n });\n },\n enableBonusProductSelection: function () {\n $('body').on('bonusproduct:updateSelectButton', function (e, response) {\n $('button.select-bonus-product', response.$productContainer).attr('disabled',\n (!response.product.readyToOrder || !response.product.available));\n var pid = response.product.id;\n $('button.select-bonus-product', response.$productContainer).data('pid', pid);\n });\n },\n showMoreBonusProducts: function () {\n $(document).on('click', '.show-more-bonus-products', function () {\n var url = $(this).data('url');\n $('.modal-content').spinner().start();\n $.ajax({\n url: url,\n method: 'GET',\n success: function (html) {\n var parsedHtml = parseHtml(html);\n $('.modal-body').append(parsedHtml.body);\n $('.show-more-bonus-products:first').remove();\n $('.modal-content').spinner().stop();\n },\n error: function () {\n $('.modal-content').spinner().stop();\n }\n });\n });\n },\n addBonusProductsToCart: function () {\n $(document).on('click', '.add-bonus-products', function () {\n var $readyToOrderBonusProducts = $('.choose-bonus-product-dialog .selected-pid');\n var queryString = '?pids=';\n var url = $('.choose-bonus-product-dialog').data('addtocarturl');\n var pidsObject = {\n bonusProducts: []\n };\n\n $.each($readyToOrderBonusProducts, function () {\n var qtyOption =\n parseInt($(this)\n .data('qty'), 10);\n\n var option = null;\n if (qtyOption > 0) {\n if ($(this).data('optionid') && $(this).data('option-selected-value')) {\n option = {};\n option.optionId = $(this).data('optionid');\n option.productId = $(this).data('pid');\n option.selectedValueId = $(this).data('option-selected-value');\n }\n pidsObject.bonusProducts.push({\n pid: $(this).data('pid'),\n qty: qtyOption,\n options: [option]\n });\n pidsObject.totalQty = parseInt($('.pre-cart-products').html(), 10);\n }\n });\n queryString += JSON.stringify(pidsObject);\n queryString = queryString + '&uuid=' + $('.choose-bonus-product-dialog').data('uuid');\n queryString = queryString + '&pliuuid=' + $('.choose-bonus-product-dialog').data('pliuuid');\n $.spinner().start();\n $.ajax({\n url: url + queryString,\n method: 'POST',\n success: function (data) {\n $.spinner().stop();\n if (data.error) {\n $('#chooseBonusProductModal').modal('hide');\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append('
      ');\n }\n $('.add-to-cart-messages').append(\n '
      '\n + data.errorMessage + '
      '\n );\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n }, 3000);\n } else {\n $('.configure-bonus-product-attributes').html(data);\n $('.bonus-products-step2').removeClass('hidden-xl-down');\n $('#chooseBonusProductModal').modal('hide');\n\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append('
      ');\n }\n $('.minicart-quantity').html(data.totalQty);\n $('.add-to-cart-messages').append(\n '
      '\n + data.msgSuccess + '
      '\n );\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n if ($('.cart-page').length) {\n location.reload();\n }\n }, 1500);\n }\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n },\n\n getPidValue: getPidValue,\n getQuantitySelected: getQuantitySelected,\n miniCartReportingUrl: miniCartReportingUrl\n};\n","'use strict';\nvar base = require('./base');\nvar focusHelper = require('../components/focus');\n\n/**\n * Generates the modal window on the first call.\n * Customization: added aria-modal and aria-label attributes\n */\nfunction getModalHtmlElement() {\n if ($('#quickViewModal').length !== 0) {\n $('#quickViewModal').remove();\n }\n var htmlString = ''\n + '
      '\n + ''\n + '
      '\n + ''\n + '
      '\n + '
      '\n + ' '\n + ' '\n + '
      '\n + '
      '\n + '
      '\n + '
      '\n + '
      '\n + '
      ';\n $('body').append(htmlString);\n}\n\n/**\n * @typedef {Object} QuickViewHtml\n * @property {string} body - Main Quick View body\n * @property {string} footer - Quick View footer content\n */\n\n/**\n * Parse HTML code in Ajax response\n *\n * @param {string} html - Rendered HTML from quickview template\n * @return {QuickViewHtml} - QuickView content components\n */\nfunction parseHtml(html) {\n var $html = $('
      ').append($.parseHTML(html));\n\n var body = $html.find('.product-quickview');\n var footer = $html.find('.modal-footer').children();\n\n return { body: body, footer: footer };\n}\n\n/**\n * replaces the content in the modal window on for the selected product variation.\n * @param {string} selectedValueUrl - url to be used to retrieve a new product model\n */\nfunction fillModalElement(selectedValueUrl) {\n $('.modal-body').spinner().start();\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n dataType: 'json',\n success: function (data) {\n var parsedHtml = parseHtml(data.renderedTemplate);\n\n $('.modal-body').empty();\n $('.modal-body').html(parsedHtml.body);\n $('.modal-footer').html(parsedHtml.footer);\n $('.full-pdp-link').text(data.quickViewFullDetailMsg);\n $('#quickViewModal .full-pdp-link').attr('href', data.productUrl);\n $('#quickViewModal .size-chart').attr('href', data.productUrl);\n $('#quickViewModal .modal-header .close .sr-only').text(data.closeButtonText);\n $('#quickViewModal .enter-message').text(data.enterDialogMessage);\n $('#quickViewModal').modal('show');\n $('body').trigger('quickview:ready');\n\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n}\n\nmodule.exports = {\n showQuickview: function () {\n $('body').on('click', '.quickview', function (e) {\n e.preventDefault();\n var selectedValueUrl = $(this).closest('a.quickview').attr('href');\n $(e.target).trigger('quickview:show');\n getModalHtmlElement();\n fillModalElement(selectedValueUrl);\n // Customization: Added active class to initiating link\n $(this).addClass('is-active');\n });\n },\n focusQuickview: function () {\n $('body').on('shown.bs.modal', '#quickViewModal', function () {\n $('#quickViewModal .close').focus();\n });\n },\n trapQuickviewFocus: function () {\n $('body').on('keydown', '#quickViewModal', function (e) {\n var focusParams = {\n event: e,\n containerSelector: '#quickViewModal',\n firstElementSelector: '.full-pdp-link',\n lastElementSelector: '.add-to-cart-global',\n nextToLastElementSelector: '.modal-footer .quantity-select'\n };\n focusHelper.setTabNextFocus(focusParams);\n });\n },\n // Customization: Return focus to initiating link on modal close\n returnFocusQuickview: function () {\n $('body').on('hide.bs.modal', '#quickViewModal', function () {\n var initiatingLink = $('.js-quickview-link.is-active');\n $(initiatingLink).parents('.js-product-tile').find('.js-product-name').focus();\n $(initiatingLink).removeClass('is-active');\n });\n },\n colorAttribute: base.colorAttribute,\n selectAttribute: base.selectAttribute,\n removeBonusProduct: base.removeBonusProduct,\n selectBonusProduct: base.selectBonusProduct,\n enableBonusProductSelection: base.enableBonusProductSelection,\n showMoreBonusProducts: base.showMoreBonusProducts,\n addBonusProductsToCart: base.addBonusProductsToCart,\n availability: base.availability,\n addToCart: base.addToCart,\n showSpinner: function () {\n $('body').on('product:beforeAddToCart', function (e, data) {\n $(data).closest('.modal-content').spinner().start();\n });\n },\n hideDialog: function () {\n $('body').on('product:afterAddToCart', function () {\n $('#quickViewModal').modal('hide');\n });\n },\n beforeUpdateAttribute: function () {\n $('body').on('product:beforeAttributeSelect', function () {\n $('.modal.show .modal-content').spinner().start();\n });\n },\n updateAttribute: function () {\n $('body').on('product:afterAttributeSelect', function (e, response) {\n if ($('.modal.show .product-quickview>.bundle-items').length) {\n $('.modal.show').find(response.container).data('pid', response.data.product.id);\n $('.modal.show').find(response.container)\n .find('.product-id').text(response.data.product.id);\n } else if ($('.set-items').length) {\n response.container.find('.product-id').text(response.data.product.id);\n } else {\n $('.modal.show .product-quickview').data('pid', response.data.product.id);\n $('.modal.show .full-pdp-link')\n .attr('href', response.data.product.selectedProductUrl);\n }\n });\n },\n updateAddToCart: function () {\n $('body').on('product:updateAddToCart', function (e, response) {\n // update local add to cart (for sets)\n if (!response.product.readyToOrder || !response.product.available) {\n $('button.add-to-cart', response.$productContainer).addClass('disabled');\n } else {\n $('button.add-to-cart', response.$productContainer).removeClass('disabled');\n }\n\n // update global add to cart (single products, bundles)\n var dialog = $(response.$productContainer)\n .closest('.quick-view-dialog');\n\n $('.add-to-cart-global', dialog).attr('disabled',\n !$('.global-availability', dialog).data('ready-to-order')\n || !$('.global-availability', dialog).data('available')\n );\n });\n },\n updateAvailability: function () {\n $('body').on('product:updateAvailability', function (e, response) {\n // bundle individual products\n $('.product-availability', response.$productContainer)\n .data('ready-to-order', response.product.readyToOrder)\n .data('available', response.product.available)\n .find('.availability-msg')\n .empty()\n .html(response.message);\n\n\n var dialog = $(response.$productContainer)\n .closest('.quick-view-dialog');\n\n if ($('.product-availability', dialog).length) {\n // bundle all products\n var allAvailable = $('.product-availability', dialog).toArray()\n .every(function (item) { return $(item).data('available'); });\n\n var allReady = $('.product-availability', dialog).toArray()\n .every(function (item) { return $(item).data('ready-to-order'); });\n\n $('.global-availability', dialog)\n .data('ready-to-order', allReady)\n .data('available', allAvailable);\n\n $('.global-availability .availability-msg', dialog).empty()\n .html(allReady ? response.message : response.resources.info_selectforstock);\n } else {\n // single product\n $('.global-availability', dialog)\n .data('ready-to-order', response.product.readyToOrder)\n .data('available', response.product.available)\n .find('.availability-msg')\n .empty()\n .html(response.message);\n }\n });\n }\n};\n","'use strict';\n\nmodule.exports = function (include) {\n if (typeof include === 'function') {\n include();\n } else if (typeof include === 'object') {\n Object.keys(include).forEach(function (key) {\n if (typeof include[key] === 'function') {\n include[key]();\n }\n });\n }\n};\n","'use strict';\n\nvar processInclude = require('./util');\n\n$(document).ready(function () {\n processInclude(require('./product/quickView'));\n});\n"],"names":["module","focusParams","KEYCODE_TAB","isTabPressed","firstFocusableEl","$","lastFocusableEl","linkElements","focusHelper","require","getPidValue","$el","pid","getQuantitySelector","quantitySelected","quantitySelectedModal","quantitySelectedPDP","undefined","getQuantitySelected","processSwatchValues","attr","$productContainer","msgs","attrValue","$attrValue","$swatchButton","processNonSwatchValues","$attr","$defaultOption","updateAttrs","attrs","attrsWithSwatches","updateAvailability","response","availabilityValue","availabilityMessages","message","getAttributesHtml","attributes","html","attributeGroup","attribute","updateOptions","optionsHtml","createCarousel","imgs","carousel","carouselId","i","parseInt","handleVariantResponse","isChoiceOfBonusProducts","isVaraint","primaryImageUrls","$priceSelector","$selectButton","updateQuantities","quantities","quantity","selected","attributeSelect","selectedValueUrl","data","getAddToCartUrl","parseHtml","$html","body","footer","chooseBonusProducts","bonusUrl","htmlString","parsedHtml","handlePostCartAdd","messageType","Object","setTimeout","getChildProducts","childProducts","JSON","getOptions","options","$elOption","urlValue","selectedValueId","miniCartReportingUrl","url","e","document","addToCartUrl","pidsObj","setPids","form","$choiceOfBonusProduct","maxPids","submittedQty","totalQty","optionID","valueId","selectedBonusProductHtml","$selected","count","$readyToOrderBonusProducts","queryString","pidsObject","qtyOption","option","location","base","getModalHtmlElement","fillModalElement","initiatingLink","dialog","allAvailable","item","allReady","include","key","processInclude"],"mappings":"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"}