summaryrefslogtreecommitdiff
path: root/assets/js/unminified/mobile-cart.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/js/unminified/mobile-cart.js')
-rw-r--r--assets/js/unminified/mobile-cart.js152
1 files changed, 152 insertions, 0 deletions
diff --git a/assets/js/unminified/mobile-cart.js b/assets/js/unminified/mobile-cart.js
new file mode 100644
index 0000000..7a1ff65
--- /dev/null
+++ b/assets/js/unminified/mobile-cart.js
@@ -0,0 +1,152 @@
+/**
+ *
+ * Handle Mobile Cart events.
+ *
+ * @since 3.1.0
+ * @package Astra
+ */
+
+(function () {
+
+ var cart_flyout = document.getElementById('astra-mobile-cart-drawer'),
+ main_header_masthead = document.getElementById('masthead');
+
+ // Return if masthead not exixts.
+ if (!main_header_masthead) {
+ return;
+ }
+
+ var woo_data = '',
+ mobileHeader = main_header_masthead.querySelector("#ast-mobile-header"),
+ edd_data = '';
+
+ if (undefined !== cart_flyout && '' !== cart_flyout && null !== cart_flyout) {
+ woo_data = cart_flyout.querySelector('.widget_shopping_cart.woocommerce');
+ edd_data = cart_flyout.querySelector('.widget_edd_cart_widget');
+ }
+
+ /**
+ * Opens the Cart Flyout.
+ */
+ cartFlyoutOpen = function (event) {
+ event.preventDefault();
+ var current_cart = event.currentTarget.cart_type;
+
+ if ('woocommerce' === current_cart && document.body.classList.contains('woocommerce-cart')) {
+ return;
+ }
+ cart_flyout.classList.remove('active');
+ cart_flyout.classList.remove('woocommerce-active');
+ cart_flyout.classList.remove('edd-active');
+ if (undefined !== cart_flyout && '' !== cart_flyout && null !== cart_flyout) {
+ cart_flyout.classList.add('active');
+ document.documentElement.classList.add('ast-mobile-cart-active');
+ if (undefined !== edd_data && '' !== edd_data && null !== edd_data) {
+ edd_data.style.display = 'block';
+ if ('woocommerce' === current_cart) {
+ edd_data.style.display = 'none';
+ cart_flyout.classList.add('woocommerce-active');
+ }
+ }
+ if (undefined !== woo_data && '' !== woo_data && null !== woo_data) {
+ woo_data.style.display = 'block';
+ if ('edd' === current_cart) {
+ woo_data.style.display = 'none';
+ cart_flyout.classList.add('edd-active');
+ }
+ }
+ }
+ }
+
+ /**
+ * Closes the Cart Flyout.
+ */
+ cartFlyoutClose = function (event) {
+ event.preventDefault();
+ if (undefined !== cart_flyout && '' !== cart_flyout && null !== cart_flyout) {
+ cart_flyout.classList.remove('active');
+ document.documentElement.classList.remove('ast-mobile-cart-active');
+ }
+ }
+
+ /**
+ * Main Init Function.
+ */
+ function cartInit() {
+ // Close Popup if esc is pressed.
+ document.addEventListener('keyup', function (event) {
+ // 27 is keymap for esc key.
+ if (event.keyCode === 27) {
+ event.preventDefault();
+ cart_flyout.classList.remove('active');
+ document.documentElement.classList.remove('ast-mobile-cart-active');
+ updateTrigger();
+ }
+ });
+
+ // Close Popup on outside click.
+ document.addEventListener('click', function (event) {
+ var target = event.target;
+ var cart_modal = document.querySelector('.ast-mobile-cart-active .astra-mobile-cart-overlay');
+
+ if (target === cart_modal) {
+ cart_flyout.classList.remove('active');
+ document.documentElement.classList.remove('ast-mobile-cart-active');
+ }
+ });
+
+ if (undefined !== mobileHeader && '' !== mobileHeader && null !== mobileHeader) {
+
+ // Mobile Header Cart Flyout.
+ var woo_carts = document.querySelectorAll('.ast-mobile-header-wrap .ast-header-woo-cart');
+ var edd_cart = document.querySelector('.ast-mobile-header-wrap .ast-header-edd-cart');
+ var cart_close = document.querySelector('.astra-cart-drawer-close');
+
+ if( 0 < woo_carts.length ){
+ woo_carts.forEach(function callbackFn(woo_cart) {
+ if (undefined !== woo_cart && '' !== woo_cart && null !== woo_cart) {
+ woo_cart.addEventListener("click", cartFlyoutOpen, false);
+ woo_cart.cart_type = 'woocommerce';
+ }
+ })
+ }
+ if (undefined !== edd_cart && '' !== edd_cart && null !== edd_cart) {
+ edd_cart.addEventListener("click", cartFlyoutOpen, false);
+ edd_cart.cart_type = 'edd';
+ }
+ if (undefined !== cart_close && '' !== cart_close && null !== cart_close) {
+ cart_close.addEventListener("click", cartFlyoutClose, false);
+ }
+ }
+
+ }
+
+ window.addEventListener('resize', function () {
+ // Close Cart
+ var cart_close = document.querySelector('.astra-cart-drawer-close');
+ if (undefined !== cart_close && '' !== cart_close && null !== cart_close && 'INPUT' !== document.activeElement.tagName ) {
+ cart_close.click();
+ }
+ });
+
+ window.addEventListener('load', function () {
+ cartInit();
+ });
+ document.addEventListener('astLayoutWidthChanged', function () {
+ cartInit();
+ });
+
+ document.addEventListener('astPartialContentRendered', function () {
+ cartInit();
+ });
+
+ var layoutChangeDelay;
+ window.addEventListener('resize', function () {
+ clearTimeout(layoutChangeDelay);
+ layoutChangeDelay = setTimeout(function () {
+ cartInit();
+ document.dispatchEvent(new CustomEvent("astLayoutWidthChanged", {"detail": {'response': ''}}));
+ }, 50);
+ });
+
+})();