define(['uiComponent','Magento_Customer/js/customer-data','jquery','ko','underscore','matchMedia','mage/dropdown','sidebar','mage/translate'],function(Component,customerData,$,ko,_,mediaCheck,dropdownDialog){'use strict' var sidebarInitialized=false var addToCartCalls=0 var miniCart miniCart=$('[data-block=\'minicart\']') function initSidebar(){if(miniCart.data('mageSidebar')){miniCart.sidebar('update')} if(!$('[data-role=product-item]').length){return false} miniCart.trigger('contentUpdated') if(sidebarInitialized){return false} sidebarInitialized=true miniCart.sidebar({'targetElement':'div.block.block-minicart','url':{'checkout':window.checkout.checkoutUrl,'update':window.checkout.updateItemQtyUrl,'remove':window.checkout.removeItemUrl,'loginUrl':window.checkout.customerLoginUrl,'isRedirectRequired':window.checkout.isRedirectRequired},'button':{'checkout':'[data-role=button-checkout]','remove':'#mini-cart a.action.delete','close':'#btn-minicart-close'},'showcart':{'parent':'span.counter','qty':'span.counter-number','label':'span.counter-label'},'minicart':{'list':'#mini-cart','content':'#minicart-content-wrapper','qty':'div.items-total','subtotal':'div.subtotal span.price','maxItemsVisible':window.checkout.minicartMaxItemsVisible},'item':{'qty':':input.cart-item-qty','button':':button.update-cart-item'},'confirmMessage':$.mage.__('Are you sure you would like to remove this item from the shopping cart?')})} var $body=$('body') miniCart.on('dropdowndialogopen',function(){initSidebar() $body.addClass('minicart-visible') window.location.href=window.checkout.shoppingCartUrl;}) miniCart.on('dropdowndialogclose',function(){$body.removeClass('minicart-visible') window.location.href=window.checkout.shoppingCartUrl;}) return Component.extend({shoppingCartUrl:window.checkout.shoppingCartUrl,maxItemsToDisplay:window.checkout.maxItemsToDisplay,cart:{},showPricing:window.checkout.showPrice,initialize:function(){var self=this var cartData=customerData.get('cart') self.toggleMinicartVisibility() self.toggleSidebarVisibility() self.acustomerData.subscribe(function(){self.toggleMinicartVisibility()},this) this.update(cartData()) cartData.subscribe(function(updatedCart){addToCartCalls-- this.isLoading(addToCartCalls>0) sidebarInitialized=false this.update(updatedCart) initSidebar()},this) $('[data-block="minicart"]').on('contentLoading',function(){addToCartCalls++ self.isLoading(true)}) if(cartData()['website_id']!==window.checkout.websiteId){customerData.reload(['cart'],false)} return this._super()},acustomerData:customerData.get('customer'),showMinicart:ko.observable(true),isLoading:ko.observable(false),showSidebar:ko.observable(false),initSidebar:initSidebar,closeMinicart:function(){var $minicart=$('[data-block="minicart"]') var $dropdown=$minicart.find('[data-role="dropdownDialog"]') if($dropdown.dropdownDialog()){$dropdown.dropdownDialog('close')}},closeSidebar:function(){var $minicart=$('[data-block="minicart"]') var $dropdown=$minicart.find('[data-role="dropdownDialog"]') $minicart.on('click','[data-action="close"]',function(event){event.stopPropagation() if($dropdown.dropdownDialog()){$dropdown.dropdownDialog('close')}}) return true},getItemRenderer:function(productType){return this.itemRenderer[productType]||'defaultRenderer'},update:function(updatedCart){_.each(updatedCart,function(value,key){if(!this.cart.hasOwnProperty(key)){this.cart[key]=ko.observable()} this.cart[key](value)},this)},getCartParam:function(name){if(!_.isUndefined(name)){if(!this.cart.hasOwnProperty(name)){this.cart[name]=ko.observable()}} return this.cart[name]()},getCartItems:function(){var items=this.getCartParam('items')||[] items=items.slice(parseInt(-this.maxItemsToDisplay,10)) return items},getCartLineItemsCount:function(){var items=this.getCartParam('items')||[] return parseInt(items.length,10)},toggleMinicartVisibility:function(){var self=this if(!self.acustomerData().firstname){self.showMinicart(false);$('.megaext').hide();}else{self.showMinicart(true) $('.header-bottom').addClass('logged-in');$('.page-wrapper').addClass('logged-in');miniCart[0].classList.remove('hide');}},toggleSidebarVisibility:function(){var self=this var screenMd=768 var media='only screen and (min-width: '+screenMd+'px)' var $dropdownTrigger=$('.action.showcart') var $minicartDropdown=$('.block-minicart[data-role=dropdownDialog]') mediaCheck({media:media,entry:function(){self.showSidebar(true) var options={appendTo:'[data-block=minicart]',triggerTarget:'.showcart',timeout:'2000',closeOnMouseLeave:false,closeOnEscape:true,triggerClass:'active',parentClass:'active',buttons:[]} dropdownDialog(options,$minicartDropdown)},exit:function(){if($minicartDropdown.dropdownDialog()){$minicartDropdown.dropdownDialog('close') $minicartDropdown.dropdownDialog('destroy') $dropdownTrigger.unbind('click')} self.showSidebar(false)}})},getCartLineItemsVisibleTotalCount:function(){var count=0;var items=this.getCartItems();var itemsLength=items.length;for(var i=0;i