Skip to content

Instantly share code, notes, and snippets.

View estrattonbailey's full-sized avatar

Eric Bailey estrattonbailey

View GitHub Profile
@estrattonbailey
estrattonbailey / newsletter.liquid
Created September 19, 2016 15:58
Shopify Newsletter Signup Form
<div class="newsletter outer relative pv1 ts1">
<div class="absolute fit-x">
<div class="gradient-background absolute fit-x bg-c1"></div>
</div>
<div class="container--s mha relative tsx mv1">
<div class="newsletter__inner mha w1 flex flex-items-center flex-wrap">
<div class="newsletter__title mb1 pb05 w1 w12_m cw align-c">
<img src="{{ 'icon-leaves-arch-yellow.png' | asset_url }}" class="inline-block mb05"/>
@estrattonbailey
estrattonbailey / queue.js
Created August 31, 2016 23:01
Sequencing Delayed Functions
/**
* Curried delay function
*/
const delay = (cb, delay = 0) => (...args) => setTimeout(() => {
cb()
if (args.length > 0) args.shift()(...args)
}, delay)
/**
* Fire series of delays
@estrattonbailey
estrattonbailey / object-fit-lazyload.js
Last active June 17, 2019 16:29
Object Fit + Layzr Lazy Load
const objectFit = document.documentElement.style.hasOwnProperty('objectFit')
const images = Layzr({ threshold: 90 })
images.on('src:after', img => {
let parent = img.parentNode
// optional, to style loaded state
parent.setAttribute('data-lazy', 'is-loaded')
@estrattonbailey
estrattonbailey / address-form.liquid
Created August 29, 2016 18:20
Shopify Address Form
<div id="{{form_outer_id}}" class="address__form relative w1 {{form_classes}}" style="display: none;">
{% form 'customer_address', form_action %}
{% assign form_id = form.id %}
{% capture form_script %}{% if form_id == 'new' %}barrel.toggleNewForm(event){% else %}barrel.toggleForm(event, {{form_id}}){% endif %}{% endcapture %}
{% capture form_suffix %}{% if form_id and form_id != 'new' %}_{{form_id}}{% endif %}{% endcapture %}
{% capture form_city_id %}{% if form_id == 'new' %}AddressCityNew{% else %}AddressCity{% endif %}{% endcapture%}
{% capture form_country_id %}{% if form_id == 'new' %}AddressCountryNew{% else %}AddressCountry{% endif %}{% endcapture%}
@estrattonbailey
estrattonbailey / dropdown.js
Created August 19, 2016 13:22
Dropdown Snippet
import delegate from 'delegate'
const checkTouch = (root) => {
let select = root.querySelector('.js-select-outer')
let dropdown = root.querySelector('.js-dropdown')
if (!select) return
if (!window.feature.touch){
dropdown.style.display = 'inline-block'
@estrattonbailey
estrattonbailey / promo-bar.js
Created August 15, 2016 23:17
Rough Draft - Promo Bar Library
import jss from 'jss-browserify'
import stockpile from 'stockpile.js'
const storage = stockpile('GV')
window.STORE = storage
/**
* requestAnimationFrame polyfill
*/
@estrattonbailey
estrattonbailey / counter.js
Last active August 17, 2016 02:11
Reactive Counter
export default function(el){
const input = el.querySelector('.js-counter-input')
const buttons = Array.prototype.slice.call(el.querySelectorAll('button'))
const state = {
min: parseInt(input.getAttribute('min'),10) || 0,
max: parseInt(input.getAttribute('max'),10) || 9999,
store: {
value: parseInt(input.value,10)
},
@estrattonbailey
estrattonbailey / index.js
Created April 29, 2016 21:34
requirebin sketch
// require() some stuff from npm (like you were using browserify)
// and then hit Run Code to run it on the right
var observable = require('lookoutjs');
function on(event, element, observable, property, callback){
element.addEventListener(event, function(e){
observable[property] = e.target.value;
callback(observable[property])
}, false);
}
@estrattonbailey
estrattonbailey / index.js
Last active February 17, 2016 23:26
requirebin sketch
// require() some stuff from npm (like you were using browserify)
// and then hit Run Code to run it on the right
var observable = require('lookoutjs');
function on(event, element, observable, property, callback){
element.addEventListener(event, function(e){
observable[property] = e.target.value;
callback(observable[property])
}, false);
}
function delay(callback, ms){
var _timer = null;
return function(){
clearTimeout(_timer);
_timer = setTimeout(callback, ms);
};
};