{"version":3,"sources":["webpack:///./modules/SearchOverlay.ts","webpack:///./modules/FilterSearch.ts","webpack:///./modules/SearchResults.ts"],"names":["__webpack_require__","r","__webpack_exports__","_modules_SearchResults__WEBPACK_IMPORTED_MODULE_0__","SearchOverlay","element","this","addBodyNavSpaceWindows","changeSearchIconOnClick","closeSearchOverlay","_iOSDevice","navigator","platform","match","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","prototype","_this","infoBar","querySelector","parentWrapper","closest","searchBtn","searchInputField","searchOverlay","nextElementSibling","addEventListener","event","preventDefault","classList","toggle","setTimeout","focus","contains","trackOpenEvent","add","trackCloseEvent","remove","style","paddingBottom","closeOverlayContent","Eucerin","window","dataLayer","push","eventCategory","eventAction","eventLabel","undefined","eventNonInteraction","_TrackingGA4__WEBPACK_IMPORTED_MODULE_0__","FilterSearch","searchInitialElement","init","countNumberOnScreens","SearchFilterClick","closeOnXBtn","isMobile","toggleSearchMobileFilter","isTablet","e","target","currentTarget","searchAjax","getAttribute","inputEl","inputVal","value","filterQuery","replace","countNumber","fetchAndUpdate","innerText","openButtonFilterText","isDesktop","filterBtn","xBtn","layerShadow","url","filterElementText","fetch","credentials","then","res","text","updateFilterSearchContent","data","innerHTML","dispatchEvent","CustomEvent","RegExp","initModules","trackFilterItems","Object","index","filterItem","_helpers_DOMHelpers__WEBPACK_IMPORTED_MODULE_0__","_helpers_helperFunctions__WEBPACK_IMPORTED_MODULE_1__","_modules_FilterSearch__WEBPACK_IMPORTED_MODULE_2__","SearchResults","filterSearch","searchLayerInit","initAutoSuggestion","resultsField","noResultsField","debouncedOnTyping","onSearch","searchInitialState","currentSearchBtn","inputHasNoValue","isPopularSearch","scrollTop","clearTimeout","getSearchContent","timeout","autoSuggEl","suggElement","isSuggestionSearch","suggestText","ajaxRespond","replaceSearchContent","isNoSearchResults","isSearchResults","fetchLoadMore","trackSubmitEvent","trackPopularSearches","trackSuggestion","loadMoreOnScroll","debounceLoadChank","removeEventListener","offsetHeight","scrollHeight","loadMoreAjaxElement","loadMoreAjax","appendLoadMoreContent","insertAdjacentHTML","matchSuggestionValue","searchValue","event_name","search_term","_clear","suggValue","popularItem"],"mappings":"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","file":"./modules/SearchOverlay.3ddaadcb.js","sourcesContent":["const moduleSelector = '[data-module=\"SearchOverlay\"]';\r\nimport SearchResults from '../modules/SearchResults';\r\n\r\n\r\nexport default class SearchOverlay {\r\n    searchIcon: HTMLElement;\r\n    searchInputField: HTMLInputElement;\r\n    searchOverlayClose: HTMLElement;\r\n    infoBar: HTMLElement;\r\n    parentWrapper;\r\n    searchBtn: HTMLElement;\r\n    searchOverlay: HTMLElement;\r\n    closeOverlayContent: HTMLElement;\r\n    _iOSDevice;\r\n\r\n    static setup(selector: string = moduleSelector): void {\r\n        Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n            new SearchOverlay(element);\r\n            element.dataset.moduleInitialized = 'true';\r\n        });\r\n    }\r\n\r\n    constructor(public element: HTMLElement) {\r\n        this.addBodyNavSpaceWindows();\r\n        this.changeSearchIconOnClick();\r\n        this.closeSearchOverlay();\r\n\r\n        new SearchResults(this.element);\r\n        this._iOSDevice = !!navigator.platform.match(/iPhone|iPod|iPad/);\r\n    }\r\n\r\n    public changeSearchIconOnClick() {\r\n        this.infoBar = document.querySelector(\".header-info-bar\");\r\n        this.parentWrapper = this.element.closest('.search-wrapper');\r\n        this.searchBtn = this.parentWrapper.querySelector(\".search.search-btn\");\r\n        this.searchInputField = this.searchBtn.closest(\".search-wrapper\").querySelector(\".uk-search-input\") as HTMLInputElement;\r\n        this.searchOverlay = this.searchBtn.nextElementSibling as HTMLElement;\r\n\r\n        this.searchBtn.addEventListener(\"click\", (event) => {\r\n            event.preventDefault();\r\n            this.searchBtn.classList.toggle(\"visible\");\r\n            document.querySelector(\"body\").classList.toggle(\"overflow-hidden\");\r\n            document.querySelector(\"body\").classList.toggle(\"search-overlay-active\")\r\n\r\n            setTimeout(() => {\r\n                this.searchInputField.focus();\r\n            }, 500)\r\n\r\n            setTimeout(() => {\r\n                if (this.searchBtn.classList.contains(\"visible\")) {\r\n                    this.trackOpenEvent()\r\n                    document.querySelector(\"body\").classList.add(\"overflow-hidden\");\r\n                    document.querySelector(\"body\").classList.add(\"search-overlay-active\");\r\n                } else {\r\n                    this.trackCloseEvent();\r\n                    document.querySelector(\"body\").classList.remove(\"overflow-hidden\");\r\n                    document.querySelector(\"body\").classList.remove(\"search-overlay-active\")\r\n                }\r\n            }, 100)\r\n\r\n            if (this._iOSDevice && !(this.infoBar)) {\r\n                this.searchOverlay.style.paddingBottom = \"130px\"\r\n            } else if (this._iOSDevice && (this.infoBar)) {\r\n                this.searchOverlay.style.paddingBottom = \"180px\"\r\n            }\r\n        })\r\n    }\r\n\r\n    private closeSearchOverlay() {\r\n        this.parentWrapper = this.element.closest('.search-wrapper');\r\n        this.closeOverlayContent = this.parentWrapper.querySelector(\".close-overlay\");\r\n        this.searchBtn = this.parentWrapper.querySelector(\".search.search-btn\");\r\n\r\n        this.closeOverlayContent.addEventListener(\"click\", () => {\r\n            this.searchBtn.classList.remove(\"visible\");\r\n            this.trackCloseEvent();\r\n            if (document.querySelector(\"body\").classList.contains('overflow-hidden')) {\r\n                document.querySelector(\"body\").classList.remove(\"overflow-hidden\");\r\n            }\r\n\r\n            if (document.querySelector(\"body\").classList.contains('search-overlay-active')) {\r\n                document.querySelector(\"body\").classList.remove(\"search-overlay-active\");\r\n            }\r\n\r\n            if (document.querySelector(\"body\").classList.contains('search-modal')) {\r\n                document.querySelector(\"body\").classList.remove(\"search-modal\");\r\n            }\r\n        })\r\n    }\r\n\r\n    private addBodyNavSpaceWindows() {\r\n        !(Eucerin.isMac)\r\n            ? document.querySelector(\"body\").classList.add(\"no-mac\")\r\n            : document.querySelector(\"body\").classList.add(\"mac\");\r\n    }\r\n\r\n    private trackOpenEvent() {\r\n        window.dataLayer.push({\r\n            event: 'ga_event',\r\n            eventCategory: 'Search',\r\n            eventAction: 'Open',\r\n            eventLabel: undefined,\r\n            eventNonInteraction: false\r\n        });\r\n    }\r\n\r\n    private trackCloseEvent() {\r\n        window.dataLayer.push({\r\n            event: 'ga_event',\r\n            eventCategory: 'Search',\r\n            eventAction: 'Close',\r\n            eventLabel: undefined,\r\n            eventNonInteraction: false\r\n        });\r\n    }\r\n}\r\n\r\nnew SearchOverlay.setup();","import { trackFilterGA4 } from '../TrackingGA4';\r\n\r\nconst moduleSelector = '[data-module=\"FilterSearch\"]';\r\n\r\nexport default class FilterSearch {\r\n    countNumber: string;\r\n    searchInitialElement: HTMLElement;\r\n    static setup(selector: string = moduleSelector): void {\r\n        Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n            new FilterSearch(element);\r\n            element.dataset.moduleInitialized = 'true';\r\n        });\r\n    }\r\n\r\n    constructor(public element: HTMLElement) {\r\n        this.searchInitialElement = this.element.querySelector(\".search-initial-state\");\r\n        this.init();\r\n    }\r\n\r\n    public init() {\r\n        this.countNumberOnScreens();\r\n        this.SearchFilterClick();\r\n        this.closeOnXBtn();\r\n        Eucerin.isMobile ? this.toggleSearchMobileFilter() : \"\" || Eucerin.isTablet ? this.toggleSearchMobileFilter() : \"\";\r\n    }\r\n\r\n    private SearchFilterClick() {\r\n        const filterListEl = document.querySelectorAll(\".filter-search-results li:not(.desktop-hidden)\");\r\n\r\n        filterListEl.forEach((element: HTMLElement) => {\r\n            element.addEventListener(\"click\", (e) => {\r\n                this.searchInitialElement.classList.add(\"loader\");\r\n                const target = e.currentTarget as any,\r\n                    searchAjax = target.closest(\".overlay-content\").getAttribute(\"data-search-ajax-url\"),\r\n                    inputEl = target.closest(\".overlay-content\").querySelector(\".uk-search-input\") as HTMLInputElement,\r\n                    inputVal = inputEl.value,\r\n                    ajaxRespond = searchAjax.replace(\"{query}\", inputVal).replace(\"{count}\", this.countNumber),\r\n                    filterQuery = ajaxRespond + target.getAttribute(\"data-option-id\");\r\n                this.fetchAndUpdate(filterQuery, inputEl, element.innerText, element);\r\n            })\r\n        })\r\n        Eucerin.isMobile ? this.openButtonFilterText() : \"\";\r\n    }\r\n    \r\n    private countNumberOnScreens() {\r\n        if (Eucerin.isDesktop) {\r\n            this.countNumber = \"10\";\r\n        } else if (Eucerin.isTablet) {\r\n            this.countNumber = \"12\";\r\n        } else if (Eucerin.isMobile) {\r\n            this.countNumber = \"8\";\r\n        }\r\n    }\r\n    \r\n    public toggleSearchMobileFilter() {\r\n        const filterBtn = this.element.querySelector(\".filter-search-results .hdl-3\") as HTMLElement;\r\n        filterBtn && filterBtn.addEventListener(\"click\", () => {\r\n            this.element.querySelector(\".search-initial-state .filter-search-results\").classList.toggle(\"visible\");\r\n        })\r\n    }\r\n\r\n    public closeOnXBtn() {\r\n        const xBtn = this.element.querySelector(\".desktop-hidden .close-filter-mobile-btn\");\r\n        const layerShadow = this.element.querySelector(\".layer-shadow\");\r\n        \r\n        xBtn && xBtn.addEventListener(\"click\", () => {\r\n            this.element.querySelector(\".search-initial-state .filter-search-results\").classList.remove(\"visible\");\r\n        })\r\n        \r\n        layerShadow && layerShadow.addEventListener(\"click\", () => {\r\n            this.element.querySelector(\".search-initial-state .filter-search-results\").classList.remove(\"visible\");\r\n        })\r\n    }\r\n    \r\n    private fetchAndUpdate(url, inputEl, filterElementText, element) {\r\n        fetch(url, { credentials: \"include\" })\r\n        .then((res) => res.text())\r\n            .then((res) => this.updateFilterSearchContent(res, inputEl, filterElementText, element))\r\n        }\r\n        \r\n        private updateFilterSearchContent(data, inputEl, filterElementText, element) {\r\n            this.element.querySelector(\".results-field\").innerHTML = data;\r\n            this.searchInitialElement.classList.remove(\"loader\");\r\n            this.SearchFilterClick();\r\n            document.dispatchEvent(new CustomEvent(\"FaceLiftLoadMore\"));\r\n            this.toggleSearchMobileFilter();\r\n            var text = document.querySelectorAll('.autosuggestion-list li');\r\n            text.forEach((e: HTMLElement) => {\r\n                e.innerText == inputEl.value\r\n                ? e.remove()\r\n                : e.innerHTML = e.innerHTML.replace(new RegExp(inputEl.value, \"i\"), \"<span class='thin'>$&</span>\");\r\n            })\r\n            document.dispatchEvent(new CustomEvent(\"FaceLiftOnFilter\"));\r\n            window.Eucerin.initModules();\r\n            this.trackFilterItems(filterElementText);\r\n            trackFilterGA4(element, 'search')\r\n    }\r\n\r\n    private openButtonFilterText() {\r\n        const filterBtn = this.element.querySelector(\".filter-search-results .hdl-3 p\") as HTMLElement;\r\n        \r\n        Array.from(document.querySelectorAll(\".filter-option\")).forEach((element, index) => {\r\n            if (element.classList.contains('selected') && index != 0) {\r\n                filterBtn.innerText = element.innerHTML;\r\n            }\r\n        });\r\n    }\r\n    \r\n    private trackFilterItems(filterItem) {\r\n        window.dataLayer.push({\r\n            event: 'ga_event',\r\n            eventCategory: 'Search',\r\n            eventAction: 'Filter',\r\n            eventLabel: filterItem,\r\n            eventNonInteraction: false\r\n          });\r\n        }\r\n    }\r\n    \r\n    new FilterSearch.setup();","const moduleSelector = '[data-module=\"SearchResults\"]';\r\nimport { createElementFromString } from '../helpers/DOMHelpers';\r\nimport { debounce } from '../helpers/helperFunctions';\r\nimport FilterSearch from '../modules/FilterSearch';\r\n\r\nclass SearchResults {\r\n    searchInputField: HTMLInputElement;\r\n    searchInitialState: HTMLElement;\r\n    resultsField: HTMLElement;\r\n    noResultsField: HTMLElement;\r\n    searchCountNumber: HTMLElement;\r\n    parenthesesField: HTMLElement;\r\n    currentSearchBtn: HTMLElement;\r\n    parentWrapper;\r\n    searchBtn: HTMLElement;\r\n    autoSuggEl;\r\n    countNumber: string;\r\n    filterSearch: FilterSearch;\r\n    isPopularSearch: boolean;\r\n    isSuggestionSearch: boolean;\r\n\r\n    static setup(selector: string = moduleSelector): void {\r\n        Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n            new SearchResults(element);\r\n            element.dataset.moduleInitialized = 'true';\r\n        });\r\n    }\r\n\r\n    constructor(public element: HTMLElement) {\r\n        if (Eucerin.isDesktop) {\r\n            this.countNumber = \"10\";\r\n        } else if (Eucerin.isTablet) {\r\n            this.countNumber = \"12\";\r\n        } else if (Eucerin.isMobile) {\r\n            this.countNumber = \"8\";\r\n        }\r\n        this.filterSearch = new FilterSearch(this.element);\r\n        this.searchLayerInit();\r\n        let timeout = null;\r\n        document.addEventListener('FaceLiftOnFilter', () => this.initAutoSuggestion(this.searchBtn, this.searchInputField, timeout))\r\n\r\n    }\r\n\r\n    private searchLayerInit() {\r\n        this.parentWrapper = this.element.closest('.search-wrapper');\r\n        this.searchBtn = this.parentWrapper.querySelector(\".search.search-btn\");\r\n        this.searchInputField = this.searchBtn.closest(\".search-wrapper\").querySelector(\".uk-search-input\");\r\n        this.resultsField = this.element.querySelector(\".results-field\");\r\n        this.noResultsField = this.element.querySelector(\".no-results-field\");\r\n        const debouncedOnTyping = debounce(() => this.onSearch(this.searchBtn, this.searchInputField), 600);\r\n        this.searchInitialState = this.element.querySelector('.search-initial-state');\r\n\r\n        this.currentSearchBtn = this.element.closest('.search-wrapper').querySelector(\".search-btn\");\r\n        this.searchInputField.addEventListener('keyup', () => {\r\n            this.searchInitialState.classList.add('loader');\r\n            (!(this.searchInputField.value === \"\")) ? debouncedOnTyping() : this.inputHasNoValue();\r\n        });\r\n\r\n        this.searchInputField.addEventListener(\"popular-search-init\", (event: CustomEvent) => {\r\n            this.isPopularSearch = true;\r\n            this.onSearch(this.searchBtn, this.searchInputField);\r\n        })\r\n        this.element.addEventListener(\"scroll\", () => {\r\n            if (this.element.scrollTop == 0) {\r\n                this.currentSearchBtn.classList.add(\"to-top\")\r\n                this.currentSearchBtn.classList.remove(\"not-to-top\")\r\n            } else {\r\n                this.currentSearchBtn.classList.remove(\"to-top\");\r\n                this.currentSearchBtn.classList.add(\"not-to-top\");\r\n            }\r\n        })\r\n    }\r\n\r\n    private onSearch(element, target) {\r\n        let timeout = null;\r\n        clearTimeout(timeout);\r\n        setTimeout(() => {\r\n            this.searchInitialState.classList.add('loader');\r\n        }, 500);\r\n        this.getSearchContent(element, target, timeout);\r\n    }\r\n    private initAutoSuggestion(searchBtn, target, timeout) {\r\n        this.autoSuggEl = this.element.querySelectorAll(\".autosuggestion-list li\");\r\n        this.autoSuggEl.forEach((suggElement: HTMLElement) => {\r\n            suggElement.addEventListener(\"click\", (e) => {\r\n                this.isSuggestionSearch = true;\r\n                this.searchInitialState.classList.add('loader');\r\n                const suggestText = suggElement.innerText;\r\n                this.searchInputField.value = suggestText;\r\n                this.getSearchContent(searchBtn, target, timeout);\r\n                suggElement.remove();\r\n            })\r\n        })\r\n    }\r\n    private getSearchContent(element, target, timeout) {\r\n        timeout = setTimeout(() => {\r\n            let searchAjax = element.nextElementSibling.getAttribute(\"data-search-ajax-url\");\r\n            let ajaxRespond = searchAjax.replace(\"{query}\", target.value).replace(\"{count}\", this.countNumber);\r\n            fetch(ajaxRespond, { credentials: \"include\" })\r\n                .then((res) => res.text())\r\n                .then((res) => !(target.value === \"\") ? this.replaceSearchContent(res, target) : this.inputHasNoValue())\r\n        }, 500);\r\n    }\r\n\r\n    private replaceSearchContent(res, target) {\r\n        let searchMarkup = createElementFromString(res)\r\n        if (!(searchMarkup.classList.contains(\"no-search-results\"))) {\r\n            this.isSearchResults(res, target)\r\n            this.fetchLoadMore(target);\r\n        } else {\r\n            this.isNoSearchResults(res)\r\n        }\r\n        this.filterSearch.init();\r\n        this.trackSubmitEvent(target.value);\r\n        if(this.isPopularSearch){\r\n            this.trackPopularSearches(target.value);\r\n            this.isPopularSearch = false;\r\n        }\r\n        \r\n        if(this.isSuggestionSearch){\r\n            this.trackSuggestion(target.value);\r\n            this.isSuggestionSearch = false;\r\n        }\r\n    }\r\n\r\n    private fetchLoadMore(target) {\r\n        if (document.querySelector(\".search-load-more-ajax\")) {\r\n            this.loadMoreOnScroll(target)\r\n        }\r\n    }\r\n\r\n    private loadMoreOnScroll(target) {\r\n        const debounceLoadChank = debounce(() => {\r\n            document.dispatchEvent(new CustomEvent(\"FaceLiftLoadMore\"));\r\n            if (document.querySelector(\".end-results\")) {\r\n                this.element.removeEventListener('scroll', debounceLoadChank);\r\n                return;\r\n            }\r\n            if ((this.element.offsetHeight + this.element.scrollTop + 80 >= this.element.scrollHeight) && document.querySelector(\".search-load-more-ajax\")) {\r\n\r\n                const loadMoreAjaxElement = this.element.querySelector(\".search-load-more-ajax\").getAttribute(\"data-next-search-results-ajax-url\");\r\n                this.element.querySelector(\".search-results\").classList.add('loader');\r\n                this.element.querySelector(\".search-load-more-ajax\").remove();\r\n\r\n                let loadMoreAjax = loadMoreAjaxElement.replace(\"{query}\", target.value)\r\n\r\n                fetch(loadMoreAjax, { credentials: \"include\" })\r\n                    .then((res) => res.text())\r\n                    .then((res) => {\r\n                        this.appendLoadMoreContent(createElementFromString(`<div>${res}</div>`).querySelector(\".teasers\").innerHTML)\r\n                    })\r\n            }\r\n        }, 500);\r\n\r\n        this.element.addEventListener('scroll', debounceLoadChank);\r\n    }\r\n\r\n    private appendLoadMoreContent(data: any) {\r\n        const teasrs = this.element.querySelector(\".search-results .teasers\");\r\n        teasrs.insertAdjacentHTML(\"beforeend\", data);\r\n        document.dispatchEvent(new CustomEvent(\"FaceLiftLoadMore\"));\r\n        this.element.querySelector(\".search-results\").classList.remove('loader');\r\n        new FilterSearch(this.element);\r\n    }\r\n\r\n    private inputHasNoValue() {\r\n        this.resultsField.classList.remove('fill')\r\n        this.element.classList.remove('filled');\r\n        if (this.noResultsField.classList.contains(\"fill\")) {\r\n            this.noResultsField.classList.remove('fill')\r\n        }\r\n        this.searchInitialState.classList.remove('loader')\r\n    }\r\n\r\n    private isNoSearchResults(res) {\r\n        this.noResultsField.innerHTML = res\r\n        this.resultsField.classList.remove('fill')\r\n        this.element.classList.remove('filled');\r\n        this.noResultsField.classList.add('fill');\r\n        setTimeout(() => {\r\n            this.searchInitialState.classList.remove('loader')\r\n        }, 500);\r\n    }\r\n\r\n    private isSearchResults(res, target) {\r\n        let timeout = null;\r\n\r\n        this.noResultsField.classList.remove('fill')\r\n        this.resultsField.classList.add('fill');\r\n        this.element.classList.add('filled');\r\n        this.resultsField.innerHTML = res;\r\n        this.searchInitialState.classList.remove('loader')\r\n        document.dispatchEvent(new CustomEvent(\"FaceLiftLoadMore\"));\r\n        this.initAutoSuggestion(this.searchBtn, this.searchInputField, timeout);\r\n        this.matchSuggestionValue(target);\r\n        window.Eucerin.initModules();\r\n    }\r\n\r\n    private matchSuggestionValue(target) {\r\n        var text = document.querySelectorAll('.autosuggestion-list li');\r\n        text.forEach((e: HTMLElement) => {\r\n            e.innerText == target.value\r\n                ? e.remove()\r\n                : e.innerHTML = e.innerHTML.replace(new RegExp(target.value, \"i\"), \"<span class='thin'>$&</span>\");\r\n        })\r\n    }\r\n\r\n    private trackSubmitEvent(searchValue) {\r\n        window.dataLayer.push({\r\n            event: 'ga_event',\r\n            eventCategory: 'Search',\r\n            eventAction: 'Submit',\r\n            eventLabel: searchValue,\r\n            eventNonInteraction: false\r\n        });\r\n        \r\n        //GA4 Search Tracking\r\n        window.dataLayer.push({\r\n            event: \"ga4_event\",\r\n            event_name: \"search\",   \r\n            search_term: searchValue,\r\n            _clear: true\r\n          });\r\n    }\r\n\r\n    private trackSuggestion(suggValue) {\r\n        window.dataLayer.push({\r\n            event: 'ga_event',\r\n            eventCategory: 'Search',\r\n            eventAction: 'Suggestion',\r\n            eventLabel: suggValue,\r\n            eventNonInteraction: false\r\n        });\r\n    }\r\n\r\n    private trackPopularSearches(popularItem) {\r\n        window.dataLayer.push({\r\n            event: 'ga_event',\r\n            eventCategory: 'Search',\r\n            eventAction: 'Popular Search',\r\n            eventLabel: popularItem,\r\n            eventNonInteraction: false\r\n        });\r\n    }\r\n}\r\n\r\nexport default SearchResults;\r\n"],"sourceRoot":""}