Skip to main content

Vintage

Install on your store theme by inserting code snippet.

caution

This guide might not be consistent with your theme. Contact support at edgeless.apps@gmail.com for installation help.

App embed

In your theme editor, enable the app embed. This adds Javascript to your theme that powers your widgets.

App embed

Code snippet

In your code editor, create new snippet named dynamic-delivery-date-widget. Copy and paste the following

{% comment %}
Renders a Dynamic Delivery Date widget component

Accepts:
- id: {String} ID for the widget. Generally, app block id is used here. Default: empty (optional)
- current_product: {Object} Product Liquid object.
- default_variant_id: {String} Default variant ID to apply to widget. Generally, used on cart page to show widget for a line item. Default: empty (optional)
- Widget uses product.selected_or_first_available_variant if not provided.
- target_selector: {String} Target CSS selector to watch variant selection changes - usually the variant id form input Default: empty (optional)
- disable_global_style: {Boolean} Render widget with CSS encapsulation. Default: false (optional)
- widget_type: {String} Dynamic "widget.type" value to pass to widget liquid template to customize template for different environments. Default: 'product' (optional)
- widget_payload: {String} Dynamic "widget.payload" json payload value to pass to widget liquid template to customize template for any custom use case. Default: 'null' (optional)

Usage:
{%- assign current_product = product -%}
{%- assign default_variant_id = product.selected_variant.id -%}
{%- assign target_selector = 'form[action*="/cart/add"] input[name="id"]' -%}
{%- assign disable_global_style = false -%}
{%- assign widget_type = 'product' -%}
{%- capture widget_payload -%}
{
"shop": {{ shop | json }}
}
{%- endcapture -%}
{% render 'dynamic-delivery-date-widget', id: current_product.id, current_product: current_product, default_variant_id: default_variant_id target_selector: target_selector, disable_global_style: disable_global_style, widget_type: widget_type, widget_payload: widget_payload %}
{% endcomment %}
<dynamic-delivery-date-widget
data-id="{{id | default: ''}}"
data-target="{{target_selector | default: '' | escape}}"
data-type="{{widget_type | default: 'product'}}"
{% if disable_global_style %}data-disable-global-style{% endif %}
role="status"
>
<script data-id="widget_context" type="application/json">
{
"product": {{current_product | json}},
{%- liquid
if default_variant_id != blank
assign selected_variant_id = default_variant_id
else
assign selected_variant_id = current_product.selected_variant.id
endif
-%}
"selected_variant_id": {{ selected_variant_id | default: "null" }},
{%- assign product_collection_ids = current_product.collections | map: 'id' -%}
"product_collection_ids": {{product_collection_ids | json}}
}
</script>
<template data-id="widget_payload" data-type="application/json">
{{widget_payload | default: 'null' | escape}}
</template>
</dynamic-delivery-date-widget>

Render code snippet on product page

In your code editor, go to sections and open the product-template section.

Under product price, copy and paste the following

<!-- BEGIN Dynamic Delivery Date - product widget -->
{%- assign current_product = product -%}
{%- assign default_variant_id = product.selected_variant.id -%}
{%- assign target_selector = 'form[action*="/cart/add"] [name="id"]' -%}
{%- assign disable_global_style = false -%}
{% render 'dynamic-delivery-date-widget', id: current_product.id, current_product: current_product, default_variant_id: default_variant_id, target_selector: target_selector, disable_global_style: disable_global_style %}
<script>
document.addEventListener("DOMContentLoaded", function () {
// patch - dispatch target selector's change event for vintage theme
const changePatchSelector = "[data-section-type=product]";
document
.querySelector(changePatchSelector)
.addEventListener("change", function () {
document
.querySelector('{{target_selector}}')
.dispatchEvent(new Event("change"));
});
});
</script>
<!-- BEGIN Dynamic Delivery Date - product widget -->

For paste location reference:

product-template Vintage render snippet

Shopify references