{"version":3,"file":"stock-check.js","sources":["../../../resources/javascript/features/pdp/stock-check/index.js","../../../resources/javascript/entrypoint/stock-check.js"],"sourcesContent":["import { dataLayerPush } from '../../tracking';\n\nexport const initStockChecker = function () {\n    const trigger = document.querySelector('.js-stock-check-trigger');\n    trigger?.addEventListener('click', handleRolloutOpen);\n\n    let sizeOptions = document.querySelectorAll('.size-selector__item');\n    let selected = Array.from(sizeOptions).filter((option) => option.classList.contains('size-selector__item--selected'));\n    let container = document.querySelector('.product-details__stock-check');\n\n    if (sizeOptions.length == 0) {\n        container.style.display = 'flex';\n    } else if (sizeOptions.length > 0 && selected.length == 1) {\n        container.style.display = 'flex';\n    } else {\n        const sizes = $('.js-change-size').filter(function () { return !$(this).closest('.js-quick-atb-wrapper').length });\n        sizes.on('click', function (e) {\n            container.style.display = 'flex';\n        });\n    }\n\n};\n\nconst handleRolloutOpen = (e) => {\n    e.preventDefault();\n\n    const url = new URL(window.location.href);\n    url.pathname += '/stock-check';\n    url.searchParams.set(...window.cacheString.split('='));\n\n    const flipflopParams = MV.getFlipFlopUrlParams();\n    Object.entries(flipflopParams).forEach(([key, value]) => {\n        url.searchParams.set(key, value);\n    });\n\n    const options = {\n        items: { src: url },\n        type: 'ajax',\n        callbacks: {\n            ajaxContentAdded: function () {\n                $(this.content).filter('.popup').addClass('popup--open');\n\n                dataLayerPush({\n                    event: 'StockCheckOpen',\n                });\n\n                const searchForm = document.querySelector('#js-store-stock-search');\n                searchForm.addEventListener('submit', (e) => handleStoreSearch(e));\n            },\n        },\n    };\n\n    window.MV.modal.open({ options });\n};\n\n\n\n// triggered when the search form is submitted\nconst handleStoreSearch = (e) => {\n    e.preventDefault();\n\n    const store = e.target.querySelector('input').value;\n\n    if (store.length < 1) {\n        return;\n    }\n    dataLayerPush({\n        event: 'StockCheckSearch',\n        stockCheck: {\n            search: store,\n        }\n    });\n\n    const url = new URL(window.location.href);\n    url.pathname += '/stock-check';\n    url.searchParams.set('cityOrPostcode', store);\n    url.searchParams.set(...window.cacheString.split('='));\n\n    const flipflopParams = MV.getFlipFlopUrlParams();\n    Object.entries(flipflopParams).forEach(([key, value]) => {\n        url.searchParams.set(key, value);\n    });\n\n    const options = {\n        items: { src: url },\n        type: 'ajax',\n        callbacks: {\n            ajaxContentAdded: function () {\n                $(this.content).filter('.popup').addClass('popup--open');\n\n                // get number of children inside .stock-check__rollout--results\n                let storeResults = document.querySelector('.stock-check__rollout--results');\n                // filter out the no results element\n                storeResults = Array.from(storeResults.children).filter(\n                    (store) => !store.classList.contains('stock-check__no-results')\n                );\n\n                dataLayerPush({\n                    event: 'StockCheckResults',\n                    stockCheck: {\n                        results: storeResults.length,\n                    }\n                });\n\n                const detailLinks = document.querySelectorAll('.js-store-detail-trigger');\n\n                const searchForm = document.querySelector('#js-store-stock-search');\n                searchForm.addEventListener('submit', (e) => {\n                    window.MV.modal.close();\n                    handleStoreSearch(e)\n                });\n\n                detailLinks.forEach((link) => {\n                    link.addEventListener('click', handleStoreDetails);\n                });\n\n                handleCloseAllButtons();\n            },\n        },\n    };\n\n    window.MV.modal.open({ options });\n};\n\n// triggered when 'store details' link is clicked in the results\nconst handleStoreDetails = (e) => {\n    e.preventDefault();\n\n    const storeId = e.target.dataset.storeId;\n\n    const url = new URL(window.location.href);\n\n    Object.entries(MV.getFlipFlopUrlParams()).forEach(([key, value]) => {\n        url.searchParams.set(key, value);\n    });\n\n    url.pathname += '/stock-check';\n    url.searchParams.set('store', storeId);\n\n    const options = {\n        items: { src: url },\n        type: 'ajax',\n        callbacks: {\n            ajaxContentAdded: function () {\n                $(this.content).filter('.popup').addClass('popup--open');\n                dataLayerPush({\n                    event: 'StockCheckStoreDetails',\n                    stockCheck: {\n                        storeId: storeId,\n                    }\n                });\n\n\n                handleCloseAllButtons();\n\n            },\n        },\n    };\n\n    window.MV.modal.open({ options });\n};\n\nconst handleCloseAllButtons = () => {\n    const content = document.querySelector('.mfp-content');\n    content.querySelector('.mfp-close.popup__close').addEventListener('click', () => {\n        dataLayerPush({\n            event: 'StockCheckCloseAll',\n        });\n\n        MV.modal.close({clearStack: true});\n    });\n\n    content.querySelector('.mfp-close.popup__back').addEventListener('click', () => {\n        dataLayerPush({\n            event: 'StockCheckClose',\n        });\n    });\n};\n","import { initStockChecker } from '../features/pdp/stock-check';\nimport { onDOMContentLoaded } from '../util/loaded';\n\nonDOMContentLoaded(initStockChecker);\n\n"],"names":["handleRolloutOpen","e","preventDefault","url","URL","window","location","href","pathname","searchParams","set","cacheString","split","flipflopParams","MV","getFlipFlopUrlParams","Object","entries","forEach","key","value","options","items","src","type","callbacks","ajaxContentAdded","$","this","content","filter","addClass","dataLayerPush","event","document","querySelector","addEventListener","handleStoreSearch","modal","open","store","target","length","stockCheck","search","storeResults","Array","from","children","classList","contains","results","detailLinks","querySelectorAll","close","link","handleStoreDetails","handleCloseAllButtons","storeId","dataset","clearStack","onDOMContentLoaded","trigger","sizeOptions","selected","option","container","style","display","closest","on"],"mappings":"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"}