UNPKG

@ribajs/shopify

Version:

Shopify extension for Riba.js

81 lines 5.8 kB
import { Component } from "@ribajs/core"; import { Pjax } from "@ribajs/router"; import { ShopifyCartService } from "@ribajs/shopify"; import { onRoute } from "@ribajs/utils/src/url"; import { hasChildNodesTrim } from "@ribajs/utils/src/dom.js"; export class ShopifyCartButtonComponent extends Component { static tagName = "shopify-cart-button"; static cartUrl = "/cart"; static get observedAttributes() { return []; } scope = { cartItemCount: 0, toggle: this.toggle, pending: false, startAddAnimation: false, }; set cart(cart) { this.scope.cartItemCount = cart.item_count; this.scope.startAddAnimation = true; setTimeout(() => { this.scope.startAddAnimation = false; }, 3000); } constructor() { super(); } connectedCallback() { super.connectedCallback(); this.init(ShopifyCartButtonComponent.observedAttributes); } toggle(event) { event.preventDefault(); event.stopPropagation(); if (onRoute(ShopifyCartButtonComponent.cartUrl)) { window.history.back(); } else { if (ShopifyCartButtonComponent.cartUrl) { const pjax = Pjax.getInstance("main"); if (!pjax) { window.location.href = ShopifyCartButtonComponent.cartUrl; } else { pjax.goTo(ShopifyCartButtonComponent.cartUrl, false); } } } } async beforeBind() { await super.beforeBind(); ShopifyCartService.shopifyCartEventDispatcher.on("ShopifyCart:request:start", () => { this.scope.pending = true; }); ShopifyCartService.shopifyCartEventDispatcher.on("ShopifyCart:request:complete", (cart) => { if (cart) { this.cart = cart; } this.scope.pending = false; }); } async afterBind() { await super.afterBind(); return ShopifyCartService.get().catch((error) => { console.error("[ShopifyCartButtonComponent]", error); }); } requiredAttributes() { return []; } async template() { if (hasChildNodesTrim(this)) { return null; } else { const { default: template } = await import("./cart-button.component.html?raw"); return template; } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvY2FydC1idXR0b24vY2FydC1idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBcUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFTN0QsTUFBTSxPQUFPLDBCQUEyQixTQUFRLFNBQVM7SUFDaEQsTUFBTSxDQUFDLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQztJQUV2QyxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUVoQyxNQUFNLEtBQUssa0JBQWtCO1FBQzNCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVNLEtBQUssR0FBVTtRQUNwQixhQUFhLEVBQUUsQ0FBQztRQUNoQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07UUFDbkIsT0FBTyxFQUFFLEtBQUs7UUFDZCxpQkFBaUIsRUFBRSxLQUFLO0tBQ3pCLENBQUM7SUFFRixJQUFjLElBQUksQ0FBQyxJQUF1QjtRQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzNDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUN2QyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxD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