Skip to content

Instantly share code, notes, and snippets.

View marioloncarek's full-sized avatar

Mario Loncarek marioloncarek

View GitHub Profile
@marioloncarek
marioloncarek / collection-blocks.liquid
Created September 5, 2018 09:18
Shopify collection blocks
<section class="collection-blocks">
{% for block in section.blocks %}
{%- assign collection = collections[block.settings.collection] -%}
{% if block.settings.collection-title != blank %}
<h2 class="collection-blocks__collection-title">{{ block.settings.collection-title | escape }}</h2>
{% else %}
<h2>{{ collection.title }}</h2>
@marioloncarek
marioloncarek / ajax-cart.js
Created September 26, 2018 14:06
complete shopify ajax cart solution with drawer and modal, adding and removing products - ugly AF
const defaults = {
cartModal: '.js-ajax-cart-modal', // classname
cartModalContent: '.js-ajax-cart-modal-content', // classname
cartModalClose: '.js-ajax-cart-modal-close', // classname
cartDrawer: '.js-ajax-cart-drawer', // classname
cartDrawerContent: '.js-ajax-cart-drawer-content', // classname
cartDrawerClose: '.js-ajax-cart-drawer-close', // classname
cartDrawerTrigger: '.js-ajax-cart-drawer-trigger', // classname
cartOverlay: '.js-ajax-cart-overlay', // classname
cartCounter: '.js-ajax-cart-counter', // classname
@marioloncarek
marioloncarek / ajax-cart-complete.liquid
Created September 26, 2018 07:41
ajax cart complete shopify
<!--ajax cart modal-->
<div class="ajax-cart__modal js-ajax-cart-modal">
<div class="ajax-cart-modal">
<!--ajax cart modal close-->
<div class="ajax-cart-modal__close js-ajax-cart-modal-close">
{% include 'icon-close' %}
</div>
<!--end ajax cart modal close-->
@marioloncarek
marioloncarek / shopify-ajax-add-to-cart.liquid
Last active September 12, 2022 04:54
shopify ajax add to cart
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<script>
var cartCount = {{ cart.item_count }};
$(document)
.ready(function() {
@marioloncarek
marioloncarek / ajax-cart.js
Created October 14, 2018 15:34
complete add bundle to cart shopify
import {formatMoney} from '@shopify/theme-currency/currency';
import {Power3, TweenMax} from 'gsap/TweenMax';
import $ from 'jquery';
const defaults = {
cartModal: '.js-ajax-cart-modal', // classname
cartModalClose: '.js-ajax-cart-modal-close', // classname
cartDrawer: '.js-ajax-cart-drawer', // classname
cartDrawerContent: '.js-ajax-cart-drawer-content', // classname
cartDrawerClose: '.js-ajax-cart-drawer-close', // classname
@marioloncarek
marioloncarek / ajax-cart.js
Created October 3, 2018 14:20
ajax cart full new
import {formatMoney} from '@shopify/theme-currency/currency';
const defaults = {
cartModal: '.js-ajax-cart-modal', // classname
cartModalContent: '.js-ajax-cart-modal-content', // classname
cartModalClose: '.js-ajax-cart-modal-close', // classname
cartDrawer: '.js-ajax-cart-drawer', // classname
cartDrawerContent: '.js-ajax-cart-drawer-content', // classname
cartDrawerClose: '.js-ajax-cart-drawer-close', // classname
cartDrawerTrigger: '.js-ajax-cart-drawer-trigger', // classname
import {Power3, TweenMax} from 'gsap/TweenMax';
import {formatMoney} from '@shopify/theme-currency/currency';
import 'whatwg-fetch';
import serialize from 'form-serialize';
export default class AjaxCart {
constructor() {
this.defaults = {
import CustomVideoPlayer from "./CustomVideoPlayer";
/**
* Custom video playlist using CustomVideoPlayer.js
*/
export default class VideoPlaylist {
constructor() {
/**
* Video playlist DOM elements and states
* @type {{currentDescription: string, currentTitle: string, videoPlaylist: string, videoDurationEl: string, playlistItem: string, video: string, timeInput: string, videoPlayer: string, videoProgressBarEl: string, states: {paused: string, playing: string}}}
{
"id": 6587416805442,
"title": "Rainbow Trout 2",
"handle": "rainbow-trout-2",
"description": "<meta charset=\"utf-8\"><meta charset=\"utf-8\"><!--(figmeta)eyJmaWxlS2V5IjoiMnpRVUV2ZXlVRFRGMHoxU1NoblFnTyIsInBhc3RlSUQiOjE3NjI2OTkwNDAsImRhdGFUeXBlIjoic2NlbmUifQo=(/figmeta)--><!--(figma)ZmlnLWtpd2kEAAAAvyIAALV7f5wsS1VfVc/sr7v33veTx3uIiIiIiPp+8d4DEent6dnpuzPT/bp7du99IkPvTO9uvzs7M0zP7L37RARCiCGIiPokiAQJUUSjqPgrQUVi1CSKvxERfyEakxhjfhljjMn3W9W/5u59fvJP7udzp06dOnXq1KlzTp2q6n1SduI0jQ7j8HQaC3HLJdfp9oPQ9EOBf123YfetltndtgNUZS+w/UrdUNR2twG4FjjbXbMNqB6EV9o2gBUF9AObvFYVreLcD3Ycr+/bbddkz7WuGzrNK/2g5fbajX7P2/bNBvuvZ2C/4XZZ38jrvt307aAF1LnAsrt2H2iv1X+0Z/tXgNysIn3baxN5vuE0mygvWG3H7ob9LR+jW2ZA2S6a15MU07kMWJBYmoMB1AKUb5uNvttVLISq7PlOSGlkdzKMvaMojUFmoSm0ORsQddxdBcq9ZDxMxof+YkSartt9zPZdNAi3odrJQev9TjTaQImGa/U6kA+gtMzurhkAMrZ9t+cBqDV9s0O6+pbrtm2z23c92zdDx+0CubJrW6HrA1qlnlGutR3Fdt1utx0vILjhgwgLqFbonG9v99qm3/fc9pVtxWQTQ3UbdgOKK+nOh/ZlinQhaDsWEReDK50tl6t9i9PFYF2FvTUIHWuHqrotaJme3d9zwlY/63u75Xa74KkEvCM4iqbxXjI/CuPrc62D9eD
&:after {
@include fluidValue("height", "s-2");
@include fluidValue("bottom", null, -5px);
content: "";
position: absolute;
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NCIgaGVpZ2h0PSIyIiBmaWxsPSJub25lIj48cGF0aCBmaWxsPSIjRjE1RDUyIiBkPSJNNzIuNzMgMmMtLjk1MyAwLTEuOTA3LS4yNy0yLjU1Mi0uODA5LTEuMDU1LS44ODItMy4yLS44ODItNC4yNTYgMC0xLjI4OSAxLjA3OS0zLjgxNSAxLjA3OS01LjEwMiAwLTEuMDU1LS44ODItMy4yLS44ODItNC4yNTUgMC0xLjI5IDEuMDc5LTMuODE2IDEuMDc5LTUuMTAyIDAtMS4wNTMtLjg4NC0zLjItLjg4NC00LjI1MyAwLTEuMjg3IDEuMDc5LTMuODEzIDEuMDc5LTUuMTAyIDAtMS4wNTUtLjg4NC0zLjItLjg4NC00LjI1NiAwLTEuMjg2IDEuMDc5LTMuODE2IDEuMDc5LTUuMTAyIDAtMS4wNTItLjg4Mi0zLjItLjg4Mi00LjI1NSAwLTEuMjkgMS4wNzktMy44MTYgMS4wNzktNS4xMDIgMC0xLjA1My0uODg0LTMuMi0uODg0LTQuMjU2IDAtMS4yODYgMS4wNzktMy44MTYgMS4wNzktNS4xMDIgMC0xLjA1Mi0uODg0LTMuMi0uODg0LTQuMjUzIDAtMS4yODkgMS4wNzktMy44MTYgMS4wNzktNS4xMDIgMC0xLjA1NS0uODg0LTMuMjAzLS44ODQtNC