{"version":3,"sources":["ecom.productlist.js"],"names":["e4","productlist","debug","jProductList","jQuery","init","length","initialLoad","require","js","settings","handlebars","registerHelpers","registerTemplates","registerPartials","event","util","registerEvents","bindEvents","history","filters","on","setSort","target","preventDefault","navigateToProductPage","currentTarget","lazyload","loadNextItems","find","toggleFavoriteCreateList","window","debounce","toggleMarkupPlacement","debounceDelay","resize","ecom","cleanUrl","clearState","jElement","text","data","removeClass","addClass","builded","jsonData","showLoadMoreButtonOrAutoLoad","stopPropagation","jTarget","closest","collapse","ajax","objAjaxSettings","strUrlParam","undefined","getParamsFromForm","jqXHR","extend","method","dataType","url","getFeedUrl","cache","fail","textStatus","errorThrown","html","always","loading","resolveWait","setParams","strCustomUrl","serialize","hasMorePages","moduleSettings","pageCount","isLastPage","currentPage","isAutoLazyload","productCount","autoLoadCount","showLoadMoreButton","hideLoadMoreButton","arrObservables","last","toArray","observer","bind","onLastItemIntersection","observerOptions","domElm","off","when","getPageNumberByProductItemIndex","then","intPageNumber","setState","PageNum","location","href","isSupported","objProductlistSettings","arrObservableSkeletons","filter","jLastItem","setSkeletonItemHeight","onSkeletonIntersection","isInViewport","prop","intCurrentPageNum","getPageNumber","lazyloadProducts","appendItems","objEntry","objObserver","isIntersecting","unobserve","each","products","intIndex","objProduct","listItemHtml","bloomingville","regexReplace","convert","append","partial","productlistProductPartial","trigger","inserted","setPageNumber","pageNum","bindAutoLoadOrShowLoadMoreButton","jEntryTarget","is","parseInt","replaceSkeletonItems","intPagenum","jSkeletonItem","getSkeletonItem","parent","replaceWith","isShowInterval","buttonShowInterval","isNextPageFull","pageSize","intFirstItemHeight","first","outerHeight","css","height","popper","loadListAndFilters","applyFilters","removeFilter","document","resetAll","resetGroup","which","val","search","clearInput","intWindowWidth","width","removeAttr","toggle","reference","dataset","referenceParentSiblingsTrigger","siblings","Popper","placement","modifiers","flip","behavior","index","toggleClass","isTriggerElement","hasTriggerChildren","parents","isTargetElement","hasTargetChildren","refresh","jThis","jFilterGroupAllOptionInput","intFilterGroupAppliedOptionCount","strValue","jFilters","strFiltersHtml","trim","jFiltersModalBody","strFiltersModalBodyHtml","isNaN","intPageSize","intProductItemIndex","Math","ceil","strDefaultVal","eq","arrSelectSortValue","split","setStoredSortVal","clearStoredSortVal","setScrollTop","intScrollTop","getScrollTop","jWindow","jFirstItem","scrollTop","scrollToAnchor","nudge","animate","header","hide","offset","top","params","title","state","serverBuild","objParams","isEmptyObject","updateParams","stateObj","getParams","boolCleanUrl","replaceState","pathname","strUrlParams","arrUpdatedUrlParams","i","arrKeyValue","join","push","Object","keys","forEach","key","jInput","fnCallback","done","beforeSend","build","buildFilters","buildList","convertedHtml","tmpl","productlistProducts","getSectionId","getStoredSortVal","localStorage","getItem","removeItem","setItem","jSort","productlistFilters","productlistSort","filtersAppliedCount"],"mappings":"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","file":"ecom.productlist.js","sourcesContent":["e4.productlist = {\r\n debug: false,\r\n jProductList: jQuery( '.js-e-productlist' ),\r\n init: function () {\r\n\r\n if ( e4.productlist.jProductList.length === 1 ) {\r\n e4.productlist.initialLoad = true;\r\n e4.require.js( e4.settings.require.handlebars, function () {\r\n e4.handlebars.registerHelpers( 'compare' );\r\n e4.handlebars.registerTemplates( '#js-e-handlebars-tmpl-productlist-filters #js-e-handlebars-tmpl-productlist-products #js-e-handlebars-tmpl-productlist-sort #js-e-handlebars-tmpl-favorite-list' );\r\n e4.handlebars.registerPartials( '#js-e-handlebars-tmpl-productlist-product-partial' );\r\n e4.productlist.event = e4.util.registerEvents( 'build builded insert inserted', 'productlist' );\r\n e4.productlist.bindEvents();\r\n e4.productlist.history.init();\r\n e4.productlist.filters.init();\r\n } );\r\n }\r\n },\r\n bindEvents: function () {\r\n e4.productlist.jProductList.on( 'change', '.js-e-productlist-sort-select', function ( event ) {\r\n e4.productlist.setSort( event.target );\r\n } );\r\n e4.productlist.jProductList.on( 'click', '.js-e-productlist-item a', function ( event ) {\r\n event.preventDefault();\r\n e4.productlist.navigateToProductPage( event.currentTarget );\r\n } );\r\n e4.productlist.jProductList.on( 'click', '.js-e-productlist-load-more-products-btn', function ( event ) {\r\n event.preventDefault();\r\n e4.productlist.lazyload.loadNextItems();\r\n } );\r\n\r\n e4.productlist.jProductList.find( '.js-e-productlist-favorite-list-add-button' ).on( 'click', e4.productlist.toggleFavoriteCreateList );\r\n e4.productlist.jProductList.on( 'click', '.js-e-productlist-favorite-list-add-button', e4.productlist.toggleFavoriteCreateList );\r\n\r\n jQuery( window )\r\n .on( 'resize', e4.util.debounce( e4.productlist.filters.toggleMarkupPlacement, e4.settings.debounceDelay.resize ) )\r\n .on( 'beforeunload', function () {\r\n if ( e4.settings.ecom.filters.cleanUrl === true ) {\r\n e4.productlist.history.clearState();\r\n }\r\n } );\r\n\r\n e4.productlist.jProductList.on('click', '.js-bloomingville-addtocart-btn', function(event){\r\n var jElement = jQuery(event.target);\r\n jElement.text(jElement.data('addedText'));\r\n jElement.removeClass();\r\n jElement.addClass('btn bg-light border mb-0 text-dark btn-block px-0');\r\n });\r\n\r\n e4.productlist.jProductList.on( e4.productlist.event.builded, function ( event, jsonData ) {\r\n e4.productlist.showLoadMoreButtonOrAutoLoad( jsonData );\r\n } );\r\n },\r\n toggleFavoriteCreateList: function ( event ) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n var jTarget = jQuery( event.target ).closest( '.js-e-productlist-favorite-list-container' ).find( '.js-e-product-favorite-list-add' );\r\n jTarget.collapse( 'toggle' );\r\n },\r\n ajax: function ( objAjaxSettings, strUrlParam ) {\r\n if ( strUrlParam === undefined ) {\r\n strUrlParam = e4.productlist.getParamsFromForm();\r\n }\r\n\r\n var jqXHR = jQuery.ajax( jQuery.extend( {\r\n method: 'GET',\r\n dataType: 'json',\r\n url: e4.productlist.getFeedUrl(),\r\n cache: false,\r\n data: strUrlParam,\r\n }, objAjaxSettings ) );\r\n\r\n jqXHR.fail( function ( jqXHR, textStatus, errorThrown ) {\r\n jQuery( '#js-e-productlist-products' ).html( '

' + errorThrown + '

' );\r\n } );\r\n jqXHR.always( function () {\r\n e4.loading.resolveWait( '.js-e-productlist' );\r\n e4.productlist.history.setParams( strUrlParam );\r\n jQuery( '.js-e-productlist-loading-overlay' ).removeClass( 'is-loading' );\r\n // console.trace(jsonData);\r\n } );\r\n return jqXHR;\r\n },\r\n getFeedUrl: function () {\r\n // Get custom filters data-feed url if any, to support alternative feeds.\r\n var strCustomUrl = e4.productlist.jProductList.find( '.js-e-productlist-form' ).data( 'action' );\r\n return strCustomUrl !== '' ? strCustomUrl : e4.settings.ecom.filters.url;\r\n },\r\n getParamsFromForm: function () {\r\n return e4.productlist.jProductList.find( '.js-e-productlist-form' ).serialize();\r\n },\r\n showLoadMoreButtonOrAutoLoad: function ( jsonData ) {\r\n // Callback for the builded event\r\n var hasMorePages = jsonData.moduleSettings.pageCount > 1,\r\n isLastPage = e4.productlist.lazyload.currentPage === jsonData.moduleSettings.pageCount,\r\n isAutoLazyload = jsonData.moduleSettings.productCount < e4.settings.ecom.lazyload.autoLoadCount;\r\n\r\n if ( hasMorePages === true && isLastPage === false && isAutoLazyload === false ) {\r\n // Show load-more btn if we have more pages and the setting for auto-lazyload is not achieved by the total count of products\r\n e4.productlist.lazyload.showLoadMoreButton();\r\n }\r\n else {\r\n // Hide load-more button if it is the last page (or the setting for auto-lazyload is achieved by the total count of products)\r\n e4.productlist.lazyload.hideLoadMoreButton();\r\n if ( isAutoLazyload === true ) {\r\n var arrObservables = jQuery( '#js-e-productlist-products' ).find( '.js-e-productlist-item' ).last().toArray();\r\n e4.util.observer.bind( arrObservables, e4.productlist.lazyload.onLastItemIntersection, e4.settings.ecom.lazyload.observerOptions );\r\n }\r\n }\r\n },\r\n navigateToProductPage: function ( domElm ) {\r\n jQuery( window ).off( 'beforeunload' );\r\n jQuery.when( e4.productlist.getPageNumberByProductItemIndex( domElm ) ).then( function ( intPageNumber ) {\r\n e4.productlist.history.setState( { PageNum: intPageNumber } );\r\n location.href = domElm.href;\r\n } );\r\n },\r\n lazyload: {\r\n init: function () {\r\n // Get settings from data-attr and set global variables to use in the global scope\r\n if ( e4.util.observer.isSupported === true ) {\r\n var objProductlistSettings = e4.productlist.jProductList.data();\r\n e4.productlist.lazyload.currentPage = objProductlistSettings.currentPage;\r\n e4.productlist.lazyload.pageCount = objProductlistSettings.pageCount;\r\n\r\n var arrObservableSkeletons = jQuery( '.js-e-productlist-skeleton-item' ).filter( '.is-observable' ).toArray(),\r\n jLastItem = jQuery( '#js-e-productlist-products' ).find( '.js-e-productlist-item' ).last(),\r\n isLastPage = e4.productlist.lazyload.currentPage === e4.productlist.lazyload.pageCount;\r\n\r\n if ( arrObservableSkeletons.length > 0 ) {\r\n e4.productlist.lazyload.setSkeletonItemHeight();\r\n e4.util.observer.bind( arrObservableSkeletons, e4.productlist.lazyload.onSkeletonIntersection, e4.settings.ecom.lazyload.observerOptions );\r\n if ( isLastPage === false ) {\r\n // Load the next page automatically if the last product-item is visible in the viewport\r\n if ( e4.util.isInViewport( jLastItem ) === true ) {\r\n e4.productlist.lazyload.loadNextItems();\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n e4.util.debug(\r\n [\r\n 'IntersectionObserver not available',\r\n 'switching to pagination'],\r\n e4.productlist.debug );\r\n jQuery( '.js-e-productlist-pagination' ).prop( 'hidden', false );\r\n e4.productlist.jProductList.addClass( 'is-pagination' );\r\n }\r\n\r\n\r\n },\r\n loadNextItems: function () {\r\n // Manually load next batch on click load-more btn or if last server-loaded productitem is in viewport\r\n var intCurrentPageNum = e4.productlist.getPageNumber();\r\n e4.productlist.lazyload.hideLoadMoreButton();\r\n e4.productlist.lazyloadProducts( ( intCurrentPageNum + 1 ), e4.productlist.lazyload.appendItems );\r\n },\r\n onLastItemIntersection: function ( objEntry, objObserver ) {\r\n if ( objEntry.isIntersecting === true ) {\r\n var intPageNumber = e4.productlist.getPageNumber();\r\n intPageNumber++;\r\n objObserver.unobserve( objEntry.target );\r\n e4.productlist.lazyloadProducts( intPageNumber, e4.productlist.lazyload.appendItems );\r\n }\r\n },\r\n appendItems: function ( jsonData ) {\r\n // append each product in fetched json to end of productlist with partial\r\n jQuery.each( jsonData.products, function ( intIndex, objProduct ) {\r\n /*e4.productlist.jProductList.trigger( e4.productlist.event.insert, objProduct );*/\r\n objProduct.listItemHtml = bloomingville.regexReplace.convert(objProduct.listItemHtml);\r\n jQuery( '#js-e-productlist-products' ).append( e4.handlebars.partial.productlistProductPartial( objProduct.listItemHtml ) );\r\n e4.productlist.jProductList.trigger( e4.productlist.event.inserted, objProduct );\r\n } );\r\n e4.productlist.setPageNumber( jsonData.moduleSettings.pageNum );\r\n e4.productlist.lazyload.bindAutoLoadOrShowLoadMoreButton( jsonData );\r\n },\r\n onSkeletonIntersection: function ( objEntry, objObserver ) {\r\n if ( objEntry.isIntersecting === true ) {\r\n var jEntryTarget = jQuery( objEntry.target ),\r\n intPageNumber = e4.productlist.getPageNumber();\r\n if ( jEntryTarget.is( '.is-observable' ) === true ) {\r\n intPageNumber = parseInt( jEntryTarget.data( 'page' ) );\r\n }\r\n objObserver.unobserve( objEntry.target );\r\n e4.productlist.lazyloadProducts( intPageNumber, e4.productlist.lazyload.replaceSkeletonItems );\r\n }\r\n },\r\n replaceSkeletonItems: function ( jsonData ) {\r\n // replace each matching skeleton item (by pagenum and index) with matching product in fetched json with partial\r\n jQuery.each( jsonData.products, function ( intIndex, objProduct ) {\r\n var intPagenum = jsonData.moduleSettings.pageNum,\r\n jSkeletonItem = e4.productlist.lazyload.getSkeletonItem( intPagenum, intIndex );\r\n if ( jSkeletonItem !== undefined ) {\r\n jSkeletonItem.parent().replaceWith( e4.handlebars.partial.productlistProductPartial( objProduct.listItemHtml ) );\r\n e4.productlist.jProductList.trigger( e4.productlist.event.inserted, objProduct );\r\n }\r\n } );\r\n },\r\n bindAutoLoadOrShowLoadMoreButton: function ( jsonData ) {\r\n if ( jsonData.moduleSettings.pageNum < jsonData.moduleSettings.pageCount ) {\r\n var isShowInterval = jsonData.moduleSettings.pageNum % e4.settings.ecom.lazyload.buttonShowInterval === 0,\r\n isNextPageFull = jsonData.moduleSettings.productCount - ( jsonData.moduleSettings.pageSize * jsonData.moduleSettings.pageNum ) > jsonData.moduleSettings.pageSize,\r\n isAutoLazyload = jsonData.moduleSettings.productCount < e4.settings.ecom.lazyload.autoLoadCount;\r\n if ( isShowInterval === true && isNextPageFull === true && isAutoLazyload === false ) {\r\n // if current pageNum matches the setting for the load-more button show interval (by modulus)\r\n // and the next page is calculated to be a full pagesize\r\n // and the setting for auto-lazyload is not achieved by the total count of products\r\n e4.productlist.lazyload.showLoadMoreButton();\r\n }\r\n else {\r\n var arrObservables = jQuery( '#js-e-productlist-products' ).find( '.js-e-productlist-item' ).last().toArray();\r\n e4.util.observer.bind( arrObservables, e4.productlist.lazyload.onLastItemIntersection, e4.settings.ecom.lazyload.observerOptions );\r\n }\r\n }\r\n else {\r\n e4.productlist.lazyload.hideLoadMoreButton();\r\n }\r\n },\r\n showLoadMoreButton: function () {\r\n jQuery( '.js-e-productlist-load-more-products-btn' ).removeClass( 'd-none' );\r\n },\r\n hideLoadMoreButton: function () {\r\n jQuery( '.js-e-productlist-load-more-products-btn' ).addClass( 'd-none' );\r\n },\r\n getSkeletonItem: function ( intPageNumber, intIndex ) {\r\n return jQuery( '#js-e-productlist-products' ).find( '.js-e-productlist-skeleton-item[data-page=\"' + intPageNumber + '\"][data-index=\"' + intIndex + '\"]' );\r\n },\r\n setSkeletonItemHeight: function () {\r\n // Get and set the height of the skeleton items.\r\n var intFirstItemHeight = jQuery( '#js-e-productlist-products' ).find( '.js-e-productlist-item' ).first().outerHeight();\r\n jQuery( '.js-e-productlist-skeleton-item' ).css( { height: intFirstItemHeight } );\r\n }\r\n },\r\n filters: {\r\n init: function () {\r\n e4.productlist.filters.bindEvents();\r\n e4.productlist.filters.popper.init();\r\n },\r\n bindEvents: function () {\r\n e4.productlist.jProductList.find( '.js-e-productlist-form' ).on( 'submit', function ( event ) {\r\n event.preventDefault();\r\n e4.productlist.loadListAndFilters();\r\n } );\r\n e4.productlist.jProductList.on( 'change', '.js-e-productlist-filter', function ( event ) {\r\n e4.productlist.filters.applyFilters( event.target );\r\n } );\r\n e4.productlist.jProductList.on( 'click', '.js-e-productlist-filters-remove', function ( event ) {\r\n event.preventDefault();\r\n e4.productlist.filters.removeFilter( event.currentTarget );\r\n } );\r\n jQuery( document ).on( 'click', '.js-e-productlist-filters-clear-all', function ( event ) {\r\n event.preventDefault();\r\n e4.productlist.filters.resetAll();\r\n } );\r\n e4.productlist.jProductList.on( 'change', '.js-e-productlist-filters-option-reset-group', function ( event ) {\r\n event.preventDefault();\r\n if ( jQuery( event.target ).is( ':checked' ) === true ) {\r\n e4.productlist.filters.resetGroup( event.target );\r\n }\r\n else {\r\n jQuery( event.target ).prop( 'checked', true );\r\n }\r\n } );\r\n // Search.\r\n e4.productlist.jProductList.on( 'keyup', '.js-e-search-input', function ( event ) {\r\n if ( event.which === 13 ) {\r\n e4.productlist.filters.applyFilters( event.target );\r\n }\r\n } );\r\n e4.productlist.jProductList.on( 'click', '.js-e-productlist-filters-search-clear', function ( event ) {\r\n event.preventDefault();\r\n e4.productlist.jProductList.find( '.js-e-search-input' ).val( '' );\r\n e4.productlist.filters.applyFilters( event.target );\r\n } );\r\n e4.productlist.jProductList.on( 'click', '.js-e-search-clear', function ( event ) {\r\n e4.search.clearInput( event.target );\r\n } );\r\n\r\n\r\n },\r\n popper: {\r\n init: function () {\r\n var intWindowWidth = jQuery( window ).width();\r\n if ( intWindowWidth > 1364 ) {\r\n e4.productlist.filters.popper.bindEvents();\r\n }\r\n },\r\n bindEvents: function () {\r\n jQuery( '.js-e-productlist' ).on( 'builded.e4.productlist', function ( event ) {\r\n jQuery('.js-e-productlist-filters-group .e-productlist-filters-group-collapse-toggle').removeAttr(\"data-toggle\");\r\n });\r\n jQuery( 'body' ).on( 'click', '[data-popper=\"trigger\"]', function ( event ) {\r\n e4.productlist.filters.popper.trigger( event.currentTarget );\r\n } ).on( 'click', function ( event ) {\r\n e4.productlist.filters.popper.toggle( event.target );\r\n } );\r\n },\r\n trigger: function ( domElm ) {\r\n var reference = jQuery( domElm ),\r\n popper = reference.closest( '.js-e-productlist-filters-group' ).find( domElm.dataset.target ),\r\n referenceParentSiblingsTrigger = reference.closest( '.js-e-productlist-filters-group' ).siblings();\r\n\r\n\r\n var popit = new Popper( reference, popper, {\r\n placement: 'bottom',\r\n modifiers: {\r\n flip: {\r\n behavior: [\r\n 'left',\r\n 'right'\r\n ]\r\n }\r\n }\r\n } );\r\n\r\n jQuery.each( referenceParentSiblingsTrigger, function ( index, domElm ) {\r\n jQuery( domElm ).find( '[data-popper=\"trigger\"]' ).removeClass( 'open' );\r\n jQuery( domElm ).find( '[data-popper=\"target\"]' ).addClass( 'closed' );\r\n } );\r\n reference.toggleClass( 'open' );\r\n jQuery( popper ).toggleClass( 'closed' );\r\n },\r\n toggle: function ( domElm ) {\r\n var isTriggerElement = jQuery( domElm ).data( 'popper' ) === 'trigger',\r\n hasTriggerChildren = jQuery( domElm ).parents( '[data-popper=\"trigger\"]' ).length > 0,\r\n isTargetElement = jQuery( domElm ).data( 'popper' ) === 'target',\r\n hasTargetChildren = jQuery( domElm ).parents( '[data-popper=\"target\"]' ).length > 0;\r\n if ( isTriggerElement === false && hasTriggerChildren === false && isTargetElement === false && hasTargetChildren === false ) {\r\n jQuery( '[data-popper=\"trigger\"]' ).removeClass( 'open' );\r\n jQuery( '[data-popper=\"target\"]' ).addClass( 'closed' );\r\n }\r\n }\r\n },\r\n refresh: function () {\r\n e4.productlist.filters.collapse.init();\r\n },\r\n applyFilters: function ( domElm ) {\r\n var jThis = jQuery( domElm ),\r\n jFilterGroupAllOptionInput = jThis.closest( '.js-e-productlist-filters-group' ).find( '.js-e-productlist-filters-option-reset-group' ),\r\n intFilterGroupAppliedOptionCount = jThis.closest( '.js-e-productlist-filters-group' ).find( '.js-e-productlist-filter' ).filter( ':checked' ).length;\r\n if ( jFilterGroupAllOptionInput.length > 0 ) {\r\n // Un-check the \"all-option\" in current group if any other options is checked and vice versa.\r\n if ( intFilterGroupAppliedOptionCount > 0 ) {\r\n jFilterGroupAllOptionInput.prop( 'checked', false );\r\n }\r\n else {\r\n jFilterGroupAllOptionInput.prop( 'checked', true );\r\n\r\n }\r\n }\r\n e4.productlist.setPageNumber( 1 );\r\n e4.productlist.loadListAndFilters();\r\n },\r\n removeFilter: function ( domElm ) {\r\n var strValue = jQuery( domElm ).data( 'value' );\r\n e4.productlist.jProductList.find( '.js-e-productlist-filter[value=\"' + strValue + '\"]' ).prop( 'checked', false );\r\n e4.productlist.setPageNumber( 1 );\r\n e4.productlist.loadListAndFilters();\r\n },\r\n resetGroup: function ( domElm ) {\r\n jQuery( domElm ).closest( '.js-e-productlist-filters-group' ).find( '.js-e-productlist-filter' ).prop( 'checked', false );\r\n e4.productlist.setPageNumber( 1 );\r\n e4.productlist.loadListAndFilters();\r\n },\r\n resetAll: function () {\r\n e4.productlist.jProductList.find( '.js-e-productlist-filter' ).prop( 'checked', false );\r\n e4.productlist.jProductList.find( '.js-e-search-input' ).val( '' );\r\n e4.productlist.setPageNumber( 1 );\r\n e4.productlist.loadListAndFilters();\r\n },\r\n toggleMarkupPlacement: function () {\r\n var jFilters = jQuery( '#js-e-productlist-filters' ),\r\n strFiltersHtml = jQuery.trim( jFilters.html() ),\r\n jFiltersModalBody = jQuery( '#js-e-productlist-filters-modal' ).find( '#js-e-productlist-filters-modal-body' ),\r\n strFiltersModalBodyHtml = jQuery.trim( jFiltersModalBody.html() );\r\n if ( jFilters.is( ':visible' ) === true ) {\r\n if ( strFiltersHtml === '' ) {\r\n jFilters.html( strFiltersModalBodyHtml );\r\n jFiltersModalBody.html( '' );\r\n }\r\n }\r\n else {\r\n if ( strFiltersModalBodyHtml === '' ) {\r\n jFiltersModalBody.html( strFiltersHtml );\r\n jFilters.html( '' );\r\n }\r\n }\r\n }\r\n },\r\n setPageNumber: function ( intPageNumber ) {\r\n e4.productlist.jProductList.find( 'input[name=\"PageNum\"]' ).val( intPageNumber );\r\n },\r\n getPageNumber: function () {\r\n var intPageNumber = parseInt( e4.productlist.jProductList.find( 'input[name=\"PageNum\"]' ).val() );\r\n if ( isNaN( intPageNumber ) === true ) {\r\n intPageNumber = 1;\r\n }\r\n return intPageNumber;\r\n },\r\n getPageNumberByProductItemIndex: function ( domElm ) {\r\n var intPageSize = parseInt( e4.productlist.jProductList.data( 'pageSize' ) ),\r\n intProductItemIndex = ( jQuery( domElm ).closest( '.js-e-productlist-item' ).parent().index() + 1 ),\r\n intPageNumber = Math.ceil( intProductItemIndex / intPageSize );\r\n return intPageNumber;\r\n },\r\n setSort: function ( domElm ) {\r\n if(jQuery( domElm ).val() === null){\r\n var strDefaultVal = jQuery( domElm ).find('option').eq(0).val();\r\n jQuery( domElm ).val(strDefaultVal).trigger('change');\r\n return false;\r\n }\r\n var arrSelectSortValue = jQuery( domElm ).val().split( ' ' );\r\n\r\n if ( arrSelectSortValue.length === 2 ) {\r\n e4.productlist.setStoredSortVal(e4.productlist.jProductList, jQuery( domElm ).val());\r\n e4.productlist.jProductList.find( 'input[name=\"Sort\"]' ).val( arrSelectSortValue[ 0 ] + ' ' + arrSelectSortValue[ 1 ] );\r\n e4.productlist.jProductList.find( 'input[name=\"SortBy\"]' ).val( arrSelectSortValue[ 0 ] );\r\n e4.productlist.jProductList.find( 'input[name=\"SortOrder\"]' ).val( arrSelectSortValue[ 1 ] );\r\n }\r\n else {\r\n e4.productlist.clearStoredSortVal(e4.productlist.jProductList);\r\n\r\n e4.productlist.jProductList.find( 'input[name=\"SortBy\"], input[name=\"SortOrder\"]' ).val( '' );\r\n }\r\n e4.productlist.setPageNumber( 1 );\r\n e4.productlist.loadListAndFilters();\r\n },\r\n setScrollTop: function ( intScrollTop ) {\r\n // If no value is passed with arguments, we set default scroll position to product list root node position.\r\n if ( intScrollTop === undefined ) {\r\n intScrollTop = e4.productlist.getScrollTop();\r\n var jWindow = jQuery( window ),\r\n jFirstItem = e4.productlist.jProductList.find( '.js-e-productlist-item' ).first();\r\n if ( intScrollTop < jWindow.scrollTop() && jFirstItem.length === 1 && e4.util.isInViewport( jFirstItem ) === false ) {\r\n intScrollTop -= jWindow.height() / 100 * e4.settings.scrollToAnchor.nudge;\r\n e4.scrollToAnchor.animate( intScrollTop, e4.header.hide );\r\n }\r\n }\r\n // If a value is passed with arguments, we are restoring af history state with a scroll position saved when clicking a product.\r\n else {\r\n jQuery( 'html,body' ).scrollTop( intScrollTop );\r\n }\r\n },\r\n getScrollTop: function () {\r\n return Math.ceil( e4.productlist.jProductList.offset().top );\r\n },\r\n history: { // TODO rename det er det styrende namespace som loader listen første gang og navnet konflikter hårdt med det native js api 'history'\r\n params: null,\r\n init: function () {\r\n e4.productlist.history.title = document.title;\r\n if ( history.state !== null && history.state.params !== '' ) {\r\n e4.productlist.serverBuild = false;\r\n e4.productlist.history.title = history.state.title || '';\r\n e4.productlist.loadListAndFilters( history.state.scrollTop, history.state.params );\r\n }\r\n else {\r\n var intPageNumber = e4.productlist.getPageNumber();\r\n if ( intPageNumber > 1 ) {\r\n var jFirstItem = e4.productlist.jProductList.find( '.js-e-productlist-item' ).first(),\r\n intScrollTop = intPageNumber > 1 ? jFirstItem.offset().top : 0;\r\n e4.productlist.loadListAndFilters( intScrollTop );\r\n }\r\n else {\r\n e4.productlist.loadListAndFilters();\r\n }\r\n\r\n }\r\n },\r\n setState: function ( objParams ) {\r\n objParams = objParams || {};\r\n\r\n if ( jQuery.isEmptyObject( objParams ) === false ) {\r\n e4.productlist.history.updateParams( objParams );\r\n }\r\n\r\n var stateObj = {\r\n params: e4.productlist.history.getParams(),\r\n scrollTop: jQuery( window ).scrollTop(),\r\n title: e4.productlist.history.title\r\n },\r\n boolCleanUrl = e4.settings.ecom.filters.cleanUrl;\r\n\r\n if ( objParams.PageNum !== undefined ) {\r\n boolCleanUrl = false;\r\n }\r\n\r\n history.replaceState( stateObj, e4.productlist.history.title, location.pathname + ( boolCleanUrl ? '' : '?' + e4.productlist.history.getParams() ) );\r\n document.title = e4.productlist.history.title;\r\n },\r\n clearState: function () {\r\n history.replaceState( null, '', null );\r\n },\r\n setParams: function ( strUrlParam ) {\r\n e4.productlist.history.params = strUrlParam;\r\n },\r\n getParams: function () {\r\n return e4.productlist.history.params;\r\n },\r\n updateParams: function ( objParams ) {\r\n var strUrlParams = e4.productlist.history.getParams(),\r\n arrUpdatedUrlParams = [];\r\n if ( strUrlParams === '' ) {\r\n strUrlParams = e4.productlist.getParamsFromForm();\r\n }\r\n strUrlParams = strUrlParams.split( '&' );\r\n\r\n if ( objParams !== undefined ) {\r\n for ( var i = 0; i < strUrlParams.length; i++ ) {\r\n var arrKeyValue = strUrlParams[ i ].split( '=' );\r\n if ( objParams[ arrKeyValue[ 0 ] ] ) {\r\n arrKeyValue[ 1 ] = objParams[ arrKeyValue[ 0 ] ];\r\n }\r\n strUrlParams[ i ] = arrKeyValue.join( '=' );\r\n arrUpdatedUrlParams.push( strUrlParams[ i ] );\r\n }\r\n\r\n Object.keys( objParams ).forEach( function ( key ) {\r\n var jInput = jQuery( 'input[name=\"' + key + '\"]' );\r\n if ( jInput.length > 0 ) {\r\n jInput.val( objParams[ key ] );\r\n }\r\n } );\r\n\r\n strUrlParams = arrUpdatedUrlParams.join( '&' );\r\n e4.productlist.history.setParams( strUrlParams );\r\n }\r\n }\r\n },\r\n lazyloadProducts: function ( intPageNumber, fnCallback ) {\r\n e4.productlist.setPageNumber( intPageNumber );\r\n e4.productlist.ajax().done( function ( jsonData ) {\r\n if ( typeof fnCallback === 'function' ) {\r\n fnCallback( jsonData );\r\n }\r\n } );\r\n },\r\n loadListAndFilters: function ( intScrollTop, strUrlParam ) {\r\n e4.productlist.ajax( {\r\n beforeSend: function () {\r\n if ( e4.productlist.initialLoad !== true ) {\r\n jQuery( '.js-e-productlist-loading-overlay' ).addClass( 'is-loading' );\r\n }\r\n }\r\n }, strUrlParam ).done( function ( jsonData ) {\r\n e4.productlist.jProductList.trigger( e4.productlist.event.build );\r\n e4.productlist.history.setState();\r\n e4.productlist.buildFilters( jsonData );\r\n e4.productlist.buildList( jsonData );\r\n e4.productlist.setScrollTop( intScrollTop );\r\n e4.productlist.jProductList.trigger( e4.productlist.event.builded, jsonData );\r\n } );\r\n },\r\n buildList: function ( jsonData ) {\r\n jQuery( '.js-e-productlist-product-count' ).html( jsonData.moduleSettings.productCount );\r\n if ( e4.productlist.initialLoad !== true ) {\r\n var convertedHtml = bloomingville.regexReplace.convert(e4.handlebars.tmpl.productlistProducts( jsonData ));\r\n jQuery( '#js-e-productlist-products' ).html( convertedHtml );\r\n }\r\n else {\r\n e4.productlist.lazyload.init();\r\n }\r\n e4.productlist.initialLoad = false;\r\n },\r\n serverBuild: true,\r\n getSectionId: function(jProductList){\r\n return 'global.productlist.sort';// jProductList.closest('.js-e-productlist').data('paragraphid');\r\n },\r\n getStoredSortVal: function(jProductList){\r\n return window.localStorage.getItem(e4.productlist.getSectionId(jProductList));\r\n },\r\n clearStoredSortVal: function(jProductList){\r\n window.localStorage.removeItem(e4.productlist.getSectionId(jProductList));\r\n },\r\n setStoredSortVal: function(jProductList, strValue){\r\n window.localStorage.setItem(e4.productlist.getSectionId(jProductList), strValue);\r\n },\r\n buildFilters: function ( jsonData ) {\r\n var jFilters = jQuery( '#js-e-productlist-filters' ),\r\n jFiltersModalBody = jQuery( '#js-e-productlist-filters-modal' ).find( '#js-e-productlist-filters-modal-body' ),\r\n jSort = jQuery( '.js-e-productlist-sort' );\r\n if ( jFilters.length === 1 ) {\r\n var strFiltersHtml = e4.handlebars.tmpl.productlistFilters( jsonData );\r\n if ( jFilters.is( ':visible' ) === true ) {\r\n jFilters.html( strFiltersHtml );\r\n jFiltersModalBody.html( '' );\r\n }\r\n else {\r\n jFiltersModalBody.html( strFiltersHtml );\r\n jFilters.html( '' );\r\n }\r\n }\r\n if ( jSort.length > 0 ) {\r\n jSort.html( e4.handlebars.tmpl.productlistSort( jsonData ) );\r\n if(e4.productlist.serverBuild && e4.productlist.getStoredSortVal(e4.productlist.jProductList) != null){\r\n e4.productlist.jProductList.find( '.js-e-productlist-sort-select').val(e4.productlist.getStoredSortVal(e4.productlist.jProductList));\r\n e4.productlist.jProductList.find( '.js-e-productlist-sort-select').trigger('change');\r\n e4.productlist.serverBuild = false;\r\n }\r\n }\r\n jQuery( '.js-e-productlist-filters-applied-count' ).html( jsonData.filtersAppliedCount === 0 ? '' : jsonData.filtersAppliedCount );\r\n }\r\n};\r\n"],"sourceRoot":"/source/"}