<?xml version='1.0' encoding='UTF-8'?><uidget><metadata><name>Cart</name><description>Insert a cart</description><help><![CDATA[
      This block displays a cart button on your website. By clicking it, visitors are redirected to the closest Store block to see their cart content and choose a payment methods. Options allow you to display a custom icon and text, the number of items in the cart, the cart price and a content summary on mouse-over.
    ]]></help><api_version>1.0</api_version><size height='50' width='200' /><blog en='1149' /></metadata><view><content>&lt;div&gt;&lt;/div&gt;</content><properties><checkbox default='true' name='display_text' value='Display text' /><inputText class='prop_text' default='&apos;My cart&apos;' help='Button text' name='button_text' placeholder='My cart' /><checkbox default='true' name='display_icon' value='Display icon' /><icon_selector class='prop_icon' default='{id: 763, name: "local_grocery_store", service: "Google-material-icons", removable: false, tags: ""}' icon='folder' name='button_icon' value='Button icon' /><checkbox default='true' name='display_dropdown' value='Show cart content on mouse-over' /></properties><design_properties><checkbox default='true' name='display_price' value='Display price' /><checkbox default='true' name='display_amount' value='Display product number' /></design_properties></view><script>UI_Cart={cpts:[],addCpt:function(a){this.cpts.push(a)
},remCpt:function(a){this.cpts.remove(a)
},cptServer:function(){return this.cpts[0]
}};
UI_List.UI_Cart={initialize:function(a){this.cpt=a;
UI_Cart.addCpt(a);
a.setOptions([&quot;locked&quot;,&quot;fixed&quot;,&quot;footer&quot;,&quot;sticky&quot;])
},onDisplay:function(b){var a=this;
this.n={node:b,cart:{}};
this.n.node.css(&quot;overflow&quot;,&quot;visible&quot;);
this._create_cart();
this.initialize_ui_store();
try_initialize=function(){if(a.wait_for_store){a.wait_for_store=false;
a.initialize_ui_store(true)
}};
sigCtl.connect(&quot;UI_Store.saved&quot;,try_initialize);
sigCtl.connect(&quot;Version.saved&quot;,try_initialize);
sigCtl.connect(&quot;UI_Store.removed&quot;,function(d,c){if(c.page==a.cpt.page||a.cpt.page==v.page_bg){a.initialize_ui_store(false,true)
}});
this.n.node.hover(function(){a._setZ(true)
},function(){a._setZ()
});
this._setColors()
},onShow:function(){sigCtl.emit(&quot;UI_Cart.added&quot;)
},onSelect:function(){this._showProp()
},onPropertyChanged:function(a){if(a.include(&quot;display_text&quot;)||a.include(&quot;display_icon&quot;)){this._showProp()
}if(a.include(&quot;button_text&quot;)||a.include(&quot;button_icon&quot;)||a.include(&quot;display_icon&quot;)||a.include(&quot;display_text&quot;)||a.include(&quot;display_amount&quot;)||a.include(&quot;display_price&quot;)||a.include(&quot;display_dropdown&quot;)){this._create_cart();
this.createCartHeader();
this.updateCart()
}},_setZ:function(a){this.ori_z=this.cpt.Z_with_offset();
this.cpt.node.css(&quot;z-index&quot;,a?99999:this.ori_z)
},_create_cart:function(){this.n.node.generateComponentCart({display_text:this.cpt.data.display_text,display_icon:this.cpt.data.display_icon,display_amount:this.cpt.data.display_amount,display_price:this.cpt.data.display_price,main_text:this.cpt.data.button_text,main_icon:this.cpt.data.button_icon,cart_block:true,disable_dropdown:!this.cpt.data.display_dropdown})
},_showProp:function(){if(v.mode==&quot;viewer&quot;){return
}var a=$(this.cpt.propertyNode).add(this.cpt.propertyDesignNode);
$(&quot;.prop_text&quot;,a).toggle(this.cpt.data.display_text);
$(&quot;.prop_icon&quot;,a).toggle(this.cpt.data.display_icon)
},onRemove:function(){sigCtl.emit(&quot;UI_Cart.removed&quot;);
UI_Cart.remCpt(this.cpt)
},_setColors:function(){var a=this;
this.n.node.css({backgroundColor:ThemeConfig.colors.color1,color:&quot;#fff&quot;})
},initialize_ui_store:function(a,c){var b=this;
UI_Store.findCptServer().then(function(){if(UI_Store.cpt_server){if(c){if(UI_Store.cpt_server[2]==1){b.hide(a)
}}else{UI_Store.getCategories(b.cpt).done(function(){UI_Store.loadCookie();
b.createCartHeader();
sigCtl.emit(&quot;UI_Store.createCartHeader&quot;);
sigCtl.connect(&quot;UI_Store.updateCart&quot;,function(){b.updateCart()
})
})
}}else{b.hide(a)
}})
},hide:function(a){this.n.node.desactivate();
if(v.mode==&quot;editor&quot;){setTimeout(function(){statusController.message(&quot;The Cart blocks will not be displayed on your website because you do not have any Store block yet.&quot;,&quot;warning&quot;)
},(a?2000:0));
this.n.node.find(&quot;.uis_cresume .uis_pr&quot;).html(&quot;Please add one store block&quot;);
if(this.n.cart.items){this.n.cart.items.html(&quot;&quot;)
}this.wait_for_store=true
}else{this.n.node.hide()
}},createCartHeader:function(){var a=this;
if($.fn.hash_size(UI_Store.conf.methods)&gt;0){this.n.cart.items=this.n.node.find(&quot;.uis_ttl&quot;);
this.n.cart.price=this.n.node.find(&quot;.uis_pr&quot;);
this.n.cart.articles=this.n.node.find(&quot;.uis_cextend&quot;);
this.n.node.find(&quot;.uis_cresume, .uis_headf, .uis_exbtn&quot;).click(function(){if(UI_Store.cart.num&gt;0){Page.gotoCart()
}else{if(!v.selectedPageFg){return false
}var b=v.getSelectedPage().getVisibleCpts().find(function(d){return d.component_type&amp;&amp;d.component_type.class_name==&quot;UI_Store&quot;
});
if(b){b.onDisplayed.done(function(){v.scroll_to_component(b)
})
}else{Page.findCartPage().then(function(c){if(c&amp;&amp;c.pageid){v.selectPageFromUrl(c.pageid)
}})
}}});
sigCtl.connect(&quot;UI_Store.updateCart&quot;,function(){a.updateCart()
});
UI_Store.updateCartHtml()
}else{if(v.mode==&quot;viewer&quot;){this.n.node.find(&quot;.uis_pr&quot;).html(&quot;&quot;).hide()
}}},updateCart:function(){var b=this;
b.n.node.activate();
var c=UI_Store.cart.num;
if(this.n.cart.articles){var a=this.n.cart.articles.find(&quot;.uis_exbtn .uis_btn .uis_bsa&quot;);
if(c&gt;0){this.n.cart.articles.find(&quot;.uis_ul_w&quot;).html(UI_Store.cartHtmlProd.clone(true)).find(&quot;li&quot;).each(function(){var d=$(this).data(&quot;p&quot;);
$(this).on(&quot;click&quot;,function(){v.selectProduct(d.pageid,d.id);
return false
})
});
a.html(&quot;View cart&quot;)
}else{this.n.cart.articles.find(&quot;.uis_ul_w&quot;).html(&quot;&quot;).append($(&quot;&lt;div class=&apos;uis_cart_no_products&apos;&gt;Your cart is empty...&lt;/div&gt;&quot;));
this.n.cart.articles.find(&quot;.uis_shipping_infos_cart_summary&quot;).html(&quot;&quot;);
a.html(&quot;Go to store&quot;)
}}if(this.n.cart.items){this.n.cart.items.text(sprintf((c==1?&quot; %1$s item&quot;:&quot; %1$s items&quot;),c));
this.n.cart.price.html(&quot;&quot;+UI_Store.show_price(UI_Store.cart.price))
}}};</script><style>.UI_Cart .uis_headf&gt;.fonticon .custom_icon{font-size:inherit}
.detected_device_mobile .UI_Cart .uis_cextend{right:inherit;width:100%;min-width:inherit}</style></uidget>