(function (moduleId) { $(document).ready(function () { function doOnOrientationChange() { switch(window.orientation) { case -90: case 90: $('#filters').removeAttr("style") break; default: break; } } function toggleQuantityFilter(element) { var visible = $(element).prop("checked"); var elements = $("[name='quantity']") if (elements && elements.length > 0) { var quantityInput = elements[0]; if (visible) { $(quantityInput).show() $(quantityInput).val(1); } else { $(quantityInput).hide(); $(quantityInput).val(null); } } } $('#minPriceOutput, #maxPriceOutput').change(function(event) { var value = $(this).val() if (value < 0) { $(this).val(0); } checkSearchCriteriaEmpty(); }); window.addEventListener('orientationchange', doOnOrientationChange); // Initial execution if needed doOnOrientationChange(); checkSearchCriteriaEmpty(); // Show filters panel on small and medium screen $('#show-filters').click(function() { $('#filters').css({ "-webkit-transform":"translate(315px,0px)", "-ms-transform":"translate(315px,0px)", "transform":"translate(315px,0px)" }); }); // Hide filters panel on small and medium screen $('#hide-filters').click(function() { $('#filters').css({ "-webkit-transform":"translate(-315px,0px)", "-ms-transform":"translate(-315px,0px)", "transform":"translate(-315px,0px)" }); }); // Show/hide quantity filter $('.filter-quantity-checkbox').change(function (event) { toggleQuantityFilter(event.currentTarget) }); // shows and hides filtered items $('.filter-category-button').click(function() { var value = $(this).attr('data-filter'); if(value === "all") { $('.filter-category-item').show('1000'); } else { $('.filter-category-item').not('.'+value).hide('3000'); $('.filter-category-item').filter('.'+value).show('3000'); } }); // changes active class on filter buttons $('.filter-category-button').click(function () { $(this).siblings().removeClass('is-active'); $(this).addClass('is-active'); }); // Hide "see more color" link $("#see-more-color").click(function () { $("#see-more-color").hide(); $("#see-less-color").show(); }); // Show "see more color" link $("#see-less-color").click(function () { $("#see-less-color").hide(); $("#see-more-color").show(500); }); // Show characteristics with select option $('select[name="characteristics"]').change(function(){ var id = "characteristic_" + $(this).val(); $('div.characteristics').hide(); $('#'+id).show(); }); // Add class is-active to wishlist icon $(".add-wishlist-icon").click(function () { var addWishlist = $(this).closest('.add-wishlist'); var addWishlistIcon = addWishlist.find('.add-wishlist-icon'); if ($(this).hasClass('is-active')) { addWishlistIcon.removeClass('is-active'); } else { addWishlistIcon.addClass('is-active'); } }); // region FILTERS function hasValue(element) { return !!element } $('.search-submit').click(function () { submitProductsSearch() }); $('.product-search-input').on('keypress', function (e) { // Check if enter key was pressed if(e.which === 13) { submitProductsSearch() } }); function submitProductsSearch() { var query = cleanedSearch(); var q = $('.product-filters input[name="query"]').val() var queryFilter = "query=" + q; var brandFilter = toSearchParam($('.brand-filter'), 'brands'); var flagFilter = toSearchParam($('.flag-filter'), 'flags'); var countryFilter = toSearchParam($('.country-filter'), 'countries'); var attributeFilter = toSearchParam($('.attribute-filter'), 'attributes'); var min = $('#minPriceOutput').val(); var max = $('#maxPriceOutput').val(); var quantity = $("[name='quantity']").val(); let queryCriterias = [ query, queryFilter, brandFilter, flagFilter, countryFilter, attributeFilter, (hasValue(min) ? 'min=' + min : null), (hasValue(max) ? 'max=' + max : null), (hasValue(quantity) ? 'quantity=' + quantity : null), ]; window.location.search = queryCriterias.filter(hasValue) .join('&'); } $('input[type=checkbox]').click(function () { checkSearchCriteriaEmpty(); }); function checkSearchCriteriaEmpty() { let q = $('.product-filters input[name="query"]').val() let brandFilter = toSearchParam($('.brand-filter'), 'brands'); let flagFilter = toSearchParam($('.flag-filter'), 'flags'); let countryFilter = toSearchParam($('.country-filter'), 'countries'); let attributeFilter = toSearchParam($('.attribute-filter'), 'attributes'); let min = $('#minPriceOutput').val(); let max = $('#maxPriceOutput').val(); let quantity = $("[name='quantity']").val(); let queryCriteria = [ q, brandFilter, flagFilter, countryFilter, attributeFilter, min, max, quantity ]; document.getElementById('m_0084_search_submit').disabled = queryCriteria.filter(criteria => criteria != null && criteria !== "").length <= 0; } var mutatedParams = ['query', 'attributes', 'brands', 'countries', 'flags', 'min', 'max', 'quantity']; /** * allow for quick exclusion of query params * @param {string} param the key-value string in the form "key=value" * @return {boolean} */ function paramIsNotAggregatorFilter(param) { return !mutatedParams.includes(param.split(/=/)[0]) } function cleanedSearch() { var query = window.location.search; return '?' + query .replace(/\?/, '') .split(/&/) .filter(paramIsNotAggregatorFilter) .join("&") } function isChecked() { return this.checked; } function id() { return this.id; } function toSearchParam($element, name) { var filters = $element .filter(isChecked) .map(id) .get() .join(','); if (hasValue(filters)) { return name + '=' + filters; } return null } // endregion $("select[name=per-page]").change(function () { const limit = $(this).val(); replaceSearch('limit', limit) }); $("select[name=order]").change(function () { const sort = $(this).val().split('-'); replaceSearchCriteriaWithoutReload('sort', sort[1]); replaceSearch('sortBy', sort[0]); }); $(".pagination-noncurrent").click(function () { const page = parseInt($(this).text()) - 1; replaceSearch('page', page) }); $(".pagination-next-arrow").click(function() { const page = getPage() replaceSearch('page', page + 1) }) $(".pagination-previous-arrow").click(function() { const page = getPage() replaceSearch('page', page - 1) }) $(".displayAsGrid").click(displayAsGrid); $('.displayAsList').click(displayAsList); function initDisplayStyle() { const displayStyleParam = window.location.search.split('&').find(function (param) { return param.includes('displayStyle'); }); if(displayStyleParam != null && displayStyleParam.split("=")[1] === "list") { displayAsList() } else { displayAsGrid() } } initDisplayStyle(); $('.topButton').click(function () { document.body.scrollTop = 0; document.documentElement.scrollTop = 0; }); $('.remove-filter').click(function() { const id = $(this).data("es-param-id"); const name = $(this).data("es-param-name"); if(name === 'categories') { removeSearchCriteriaWithoutReload('categories') } else { $('#' + id).attr('checked', false); } checkSearchCriteriaEmpty(); }); $('.category-filter').on('click', function () { const categoryId = $(this).data('category-id') if (getCurrentCategory() !== categoryId) { const categoryUrl = $(this).data('category-url'); window.location.replace(categoryUrl); } }); $('.top-level-category-filter').on('click', function () { var flagFilter = toSearchParam($('.flag-filter'), 'flags'); window.location.replace("/search/" + $(this).data('locale') + "/categories/"+$(this).data('category-label') + "?" + flagFilter); }); $('.accordion-toggle').on('click', function(event) { $(this).closest('.accordion').foundation('toggle', $(this).parent().next('.accordion-content')); event.stopPropagation(); }) $('.accordion') .on('down.zf.accordion', function(target) { const toggle = $(target.target).children('.is-active').children('.accordion-title').find('.accordion-toggle') toggle.html('') }).on('up.zf.accordion', function(target) { const toggle = $(target.target).children().children('.accordion-title').find('.accordion-toggle') toggle.html('') }) $('#remove-all-filter').click(function() { const searchParams = getSearchParams() const filterExceptDisplayAndQuery = function(item) { return item[0] === 'displayStyle' || item[0] === 'query'} setSearchParams(searchParams.filter(filterExceptDisplayAndQuery)) }); function getCurrentCategory() { return parseInt(getSearchParamValue("categories")) } function getPage() { const pageSearch = window.location.search.match(/page=(\d+)/); return (pageSearch && pageSearch.length) ? parseInt(pageSearch[1]) : 0; } function replaceSearch(name, value) { window.location.search = withSearchCriteria(window.location.search, name, value) } function displayAsList() { $('.displayAsList').addClass('is-active'); $('.displayAsGrid').removeClass('is-active'); $('.gridDisplay').hide(); $('.listDisplay').show(); replaceSearchCriteriaWithoutReload('displayStyle', 'list'); } function displayAsGrid() { $('.displayAsList').removeClass('is-active'); $('.displayAsGrid').addClass('is-active'); $('.listDisplay').hide(); $('.gridDisplay').show(); replaceSearchCriteriaWithoutReload('displayStyle', 'grid'); } function removeFilter(tag, url) { let result; const param = $(tag).data("es-param-name"); const value = $(tag).data("es-param-id"); if(url.includes(param)) { result = url.split('&').map(function(it) { if(it.includes(param)) { const key = it.split('=')[0]; const values = it.split('=')[1].split(',').filter(function (localeValue) { return localeValue != value }).join(','); return key + '=' + values; } return it }).join('&'); } else { result = url } return result; } $('.product-filters input[name="query"]').change(function () { checkSearchCriteriaEmpty(); }) $('#m_0084_clear_query_input').on('click', function () { $('.product-filters input[name="query"]').val('') checkSearchCriteriaEmpty(); }); }); })('u-92c6e7ef-3cd4-48f4-a632-452b0a59b7de');