How To Add Icons Slider in Shopify [Slick Icon Slider]

Step1: Create a new section name icons-slider.liquid and paste the following code

Icon Slider Shopify For All Themes: Easily add icon slider on your Shopify theme without any additional paid APP

{%- assign widths = '180, 360, 540, 720, 900, 1080, 1296, 1512, 1728, 1950, 2100, 2260, 2450, 2700, 3000, 3350, 3750, 4100' -%}

{%- if section.settings.max_width contains 'px' or section.settings.max_width contains '%' -%}
  {%- assign max_width = section.settings.max_width -%}
{%- else -%}
  {%- assign max_width = section.settings.max_width | append: 'px' -%}
{%- endif -%}

{%- capture font_settings_list -%}
{{ section.settings.main_font | font_face: font_display: 'swap' }}~
{{ section.settings.main_font | font_modify: 'weight', 'bolder' | font_face: font_display: 'swap' }}~
{{ section.settings.main_font | font_modify: 'style', 'italic' | font_face: font_display: 'swap' }}~
{{ section.settings.main_font | font_modify: 'style', 'italic' | font_modify: 'weight', 'bolder' | font_face: font_display: 'swap' }}~
{{ section.settings.heading_font | font_face: font_display: 'swap' }}~
{{ section.settings.heading_font | font_modify: 'weight', 'bolder' | font_face: font_display: 'swap' }}~
{{ section.settings.heading_font | font_modify: 'style', 'italic' | font_face: font_display: 'swap' }}~
{{ section.settings.heading_font | font_modify: 'style', 'italic' | font_modify: 'weight', 'bolder' | font_face: font_display: 'swap' }}
{%- endcapture -%}
{%- assign font_array = font_settings_list | split: '~' -%}

{%- capture minify -%}
{%- comment -%} CSS {%- endcomment -%}
<style>
.flickity-enabled{position:relative}.flickity-enabled:focus{outline:0;box-shadow: none;}.flickity-viewport{overflow:hidden;position:relative;height:100%}.flickity-slider{position:absolute;width:100%;height:100%}.flickity-enabled.is-draggable{-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.flickity-enabled.is-draggable .flickity-viewport{cursor:move;cursor:-webkit-grab;cursor:grab}.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down{cursor:-webkit-grabbing;cursor:grabbing}.flickity-button{position:absolute;background:hsla(0,0%,100%,.75);border:none;color:#333}.flickity-button:hover{background:#fff;cursor:pointer}.flickity-button:focus{outline:0;box-shadow:0 0 0 5px #19f}.flickity-button:active{opacity:.6}.flickity-button:disabled{opacity:.3;cursor:auto;pointer-events:none}.flickity-button-icon{fill:currentColor}.flickity-prev-next-button{top:50%;width:44px;height:44px;border-radius:50%;transform:translateY(-50%)}.flickity-prev-next-button.previous{left:10px}.flickity-prev-next-button.next{right:10px}.flickity-rtl .flickity-prev-next-button.previous{left:auto;right:10px}.flickity-rtl .flickity-prev-next-button.next{right:auto;left:10px}.flickity-prev-next-button .flickity-button-icon{position:absolute;left:20%;top:20%;width:60%;height:60%}.flickity-page-dots{position:absolute;width:100%;bottom:-25px;padding:0;margin:0;list-style:none;text-align:center;line-height:1}.flickity-rtl .flickity-page-dots{direction:rtl}.flickity-page-dots .dot{display:inline-block;width:10px;height:10px;margin:0 8px;background:#333;border-radius:50%;opacity:.25;cursor:pointer}.flickity-page-dots .dot.is-selected{opacity:1}

{%- if section.settings.override_theme_font != blank -%}
  {%- for font in font_array -%}
    {%- unless font contains 'error' -%}{{ font }}{%- endunless -%}
  {%- endfor -%}
  #WP--{{ section.id }} {
    --main-font: {{ section.settings.main_font.family }}, {{ section.settings.main_font.fallback_families }};
    --main-font-weight: {{ section.settings.main_font.weight }};
    --main-font-style: {{ section.settings.main_font.style }};
    --heading-font: {{ section.settings.heading_font.family }}, {{ section.settings.heading_font.fallback_families }};
    --heading-font-weight: {{ section.settings.heading_font.weight }};
    --heading-font-style: {{ section.settings.heading_font.style }};
  }
{%- endif -%}

#WP--{{ section.id }} {
  background: {{ section.settings.background_color }};
  margin-top: {{ section.settings.outer_margin }}px;
  margin-bottom: {{ section.settings.outer_margin }}px;
  overflow-x: hidden;
  {%- if section.settings.per_row >= section.blocks.size -%}
    --draggable: false;
    --show-arrows: false;
  {%- else -%}
    --draggable: true;
    --show-arrows: {{ section.settings.show_arrows }};
  {%- endif -%}
}

#WP--{{ section.id }} .wbs-pack__sizer {
  padding-top: {{ section.settings.inner_padding }}px;
  padding-bottom: {{ section.settings.inner_padding }}px;
  width: {{ section.settings.base_width }}%;
  max-width: {{ max_width }};
  margin: 0 auto;
}

#WP--{{ section.id }} .wbs-pack__small-heading {
  color: {{ section.settings.heading_color }};
  line-height: calc(3px + 2ex + 3px);
  font-size: calc(var(--WP-g-small-heading-size, var(--WP-small-heading-size, 24px)) * {{ section.settings.text_size | times: 0.01 }});
  {%- if section.settings.override_theme_font != blank -%}
    font-family: var(--heading-font);
    font-weight: var(--heading-font-weight);
    font-style: var(--heading-font-style);
  {%- endif -%}
}

#WP--{{ section.id }} .wbs-pack__small-heading + .wbs-pack__text {
  margin-top: 10px;
}

#WP--{{ section.id }} .wbs-pack__text p {
  line-height: calc(3px + 2ex + 3px);
  color: {{ section.settings.text_color }};
  font-size: calc(var(--WP-g-body-size, var(--WP-body-size, 18px)) * {{ section.settings.text_size | times: 0.01 }});
  {%- if section.settings.override_theme_font != blank -%}
  font-family: var(--main-font);
  font-weight: var(--main-font-weight);
  font-style: var(--main-font-style);
  {%- endif -%}
}

#WP--{{ section.id }} .wbs-pack__icons {
  display: block;
  max-width: calc(100% - 100px);
  margin-left: auto;
  margin-right: auto;
}

#WP--{{ section.id }} .wbs-pack__flex-item {
  height: auto;
  margin-right: calc( ({{ section.settings.per_row }} * {{ section.settings.gap }}px) / ({{ section.settings.per_row }} - 1));
  width: calc(100% / {{ section.settings.per_row }} - {{ section.settings.gap }}px);
  display: inline-block;
}

#WP--{{ section.id }} .wbs-pack__stretch-height .wbs-pack__flex-item {
  height: 100%;
}

#WP--{{ section.id }} .wbs-pack__flex-item > a {
  text-decoration: none;
}

#WP--{{ section.id }} .wbs-pack__image__wrapper {
  display: block;
  align-self: center;
  margin: auto;
  flex: 1 0 {{ section.settings.icon_size }}%;
  max-width: {{ section.settings.icon_size }}%;
  position: relative;
}

#WP--{{ section.id }} .wbs-pack__image__wrapper svg {
  width: 100%;
  fill: {{ section.settings.text_color }};
}

#WP--{{ section.id }} .wbs-pack__item img {
  width: 100%;
  object-fit: contain;
}

#WP--{{ section.id }} .wbs-pack__inner-content {
  height: 100%;
  display: flex;
  gap: 10px;
  padding: {{ section.settings.gap | divided_by: 2.0 }};
  position: relative;
  overflow: hidden;
}

#WP--{{ section.id }} .wbs-pack__icon-alignment-left {
  align-items: center;
}

#WP--{{ section.id }} .wbs-pack__icon-alignment-left .wbs-pack__inner-content {
  gap: 20px;
}

#WP--{{ section.id }} .wbs-pack__icon-alignment-left .wbs-pack__text-wrapper {
  text-align: left;
  flex: 1 1 auto;
}

  #WP--{{ section.id }} .wbs-pack__icon-alignment-left .wbs-pack__text-wrapper a{
  text-decoration: none;
}


  
#WP--{{ section.id }} .wbs-pack__icon-alignment-center .wbs-pack__text-wrapper {
  text-align: center;
  flex: 1 1 100%;
  padding: 10px;
}

#WP--{{ section.id }} .wbs-pack__icon-alignment-center .wbs-pack__text-wrapper a {
  text-decoration: none;
}
  
#WP--{{ section.id }} .wbs-pack__icon-alignment-center .wbs-pack__image__wrapper {
  width: {{ section.settings.icon_size }}%;
  flex: none;
  position: relative;
}

#WP--{{ section.id }} .wbs-pack__icons:not(.flickity-enabled) {
  display: flex;
  gap: 10px;
}

#WP--{{ section.id }} .wbs-pack__icons:not(.flickity-enabled) .wbs-pack__flex-item:nth-child(n+{{ section.settings.per_row | plus: 1 }}){
  display: none;
}

#WP--{{ section.id }} .flickity-button {
  background: transparent;
  color: {{ section.settings.text_color }};
  transition: all 0.3s ease-in-out;
  {%- if enable_slider == false -%}
    visibility: hidden;
  {%- endif -%}
}

#WP--{{ section.id }} button svg.flickity-button-icon path {
  fill: currentColor;
}

#WP--{{ section.id }} .flickity-prev-next-button.next {
  right: -40px;
}

#WP--{{ section.id }} .flickity-prev-next-button.previous {
  left: -40px;
}

/* Animation */
{%- if section.settings.animation != 'none' -%}
  #WP--{{ section.id }}.wbs-pack__animation-applied [style*="--wbs-pack-animate"] {
    /* animation-duration: 0.5s; */
    /* --wbs-pack-animation-multiplier: 1s; */
    animation-name: wbs-pack__animation--{{ section.settings.animation }};
  }
{%- else -%}
  #WP--{{ section.id }} [style*="--wbs-pack-animate"] {
    opacity: 1;
  }
{% endif %}

{%- if section.settings.custom_css != blank -%}
  {%- assign custom_section_declarations = section.settings.custom_css | split: '}' -%}
  {%- for declaration in custom_section_declarations -%}
    {%- if declaration contains '{' -%}
      #WP--{{ section.id }} {{ declaration }} }
    {%- endif -%}
  {%- endfor -%}
{%- endif -%}

/* Landscape phone to portrait tablet */
@media (max-width: 767px) {
  #WP--{{ section.id }} {
    {%- assign mobile_per_row = section.settings.mobile_per_row | plus: 0 -%}
    {%- if mobile_per_row >= section.blocks.size -%}
      --draggable: false;
      --show-arrows: false;
    {%- else -%}
      --draggable: true;
      --show-arrows: {{ section.settings.show_arrows }};
    {%- endif -%}
  }

  #WP--{{ section.id }} .wbs-pack__icons {
    max-width: calc(100% - 40px);
  }

  #WP--{{ section.id }} .wbs-pack__item {
    width: calc(100% / {{ section.settings.mobile_per_row }});
    {% if section.settings.mobile_per_row == "2" %}
      margin-left: 0;
      margin-right: 0;
    {% endif %}
  }

  #WP--{{ section.id }} .wbs-pack__mobile-icon-alignment-left {
    align-items: center;
  }

  #WP--{{ section.id }} .wbs-pack__mobile-icon-alignment-left .wbs-pack__text-wrapper {
    text-align: left;
  }

  #WP--{{ section.id }} .wbs-pack__mobile-icon-alignment-center {
    flex-direction: column;
  }

  #WP--{{ section.id }} .wbs-pack__mobile-icon-alignment-center .wbs-pack__text-wrapper {
    text-align: center;
  }

  #WP--{{ section.id }} .wbs-pack__mobile-icon-alignment-center .wbs-pack__image__wrapper {
    width: {{ section.settings.mobile_icon_size }}%;
  }

  #WP--{{ section.id }} .wbs-pack__image__wrapper {
    display: block;
    align-self: center;
    margin: auto;
    flex: 1 0 {{ section.settings.mobile_icon_size }}%;
    max-width: {{ section.settings.mobile_icon_size }}%;
  }

  #WP--{{ section.id }} .wbs-pack__inner-content {
    padding: 1em 0;
    {% if section.settings.mobile_per_row == "2" %}
      padding: 1em 1.4em;
    {% endif %}
  }

  #WP--{{ section.id }} .flickity-button {
    visibility: visible;
  }

  #WP--{{ section.id }} .flickity-prev-next-button.next {
    right: -20px;
  }

  #WP--{{ section.id }} .flickity-prev-next-button.previous {
    left: -20px;
  }

}

/* Landscape phones and down */
@media (max-width: 480px) {
  #WP--{{ section.id }} {
    margin-top: {{ section.settings.outer_margin | divided_by: 2 }}px;
    margin-bottom: {{ section.settings.outer_margin | divided_by: 2 }}px;
  }

  #WP--{{ section.id }} .wbs-pack__sizer {
    min-width: 100%;
    padding-top: {{ section.settings.inner_padding | divided_by: 2 }}px;
    padding-bottom: {{ section.settings.inner_padding | divided_by: 2 }}px;
  }

  {%- if section.settings.mobile_custom_css != blank -%}
    {%- assign mobile_custom_declarations = section.settings.mobile_custom_css | split: '}' -%}
    {%- for declaration in mobile_custom_declarations -%}
      {%- if declaration contains '{' -%}
        #WP--{{ section.id }} {{ declaration }} }
      {%- endif -%}
    {%- endfor -%}
  {%- endif -%}
}


.wbs-pack__image__wrapper svg{
  display: block;
}
  
.wbs-pack__image__wrapper img{
  object-fit: cover;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 100%;
  position: absolute;
}


@media only screen and (min-width: 768px)
  {
    #WP--{{ section.id }} .wbs-pack__icon-alignment-center {
  flex-direction: column;
  justify-content: center;
}
  }
  
</style>

{%- comment -%} HTML {%- endcomment -%}
<section id="WP--{{ section.id }}" class="WP--{{ section.id }} wbs-pack__value-prop-horizontal wbs-pack__section" {%- if section.settings.animation != 'none' -%}data-animated-section{%- endif -%}>
  <div class="wbs-pack__sizer
              wbs-pack__sizer--value-prop-horizontal">
    <div id="slider-{{ section.id }}" class="wbs-pack__icons wbs-pack__flex--{{ section.settings.per_row }}-per-row">
      {%- for block in section.blocks -%}
        {%- capture placeholder_image -%}
              <svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 100 100" x="0px" y="0px"><title>icons</title><g data-name="24. circle in circle"><path d="M88.47,50C88.19,66.07,78.32,80.78,63,86.23a38.48,38.48,0,0,1-46-56A38.85,38.85,0,0,1,57.82,12.32C75.7,16,88.16,32,88.47,50c0,1.93,3,1.93,3,0A42,42,0,0,0,64.41,11.11a41.48,41.48,0,0,0-50,60.19A41.89,41.89,0,0,0,57.29,90.83c19.79-3.48,33.84-21,34.19-40.83C91.5,48.07,88.5,48.07,88.47,50Z"/><path d="M77.63,50C77.28,65.05,65.32,77.63,50,77.63A27.89,27.89,0,0,1,22.37,50,27.88,27.88,0,0,1,50,22.37c15.33,0,27.28,12.55,27.63,27.63,0,1.93,3,1.93,3,0A31.09,31.09,0,0,0,60.83,21.35a30.88,30.88,0,0,0-34.62,9.37C8.63,52.48,28.32,85.28,55.78,80.08,70.27,77.33,80.29,64.5,80.63,50,80.67,48.07,77.67,48.07,77.63,50Z"/></g></svg>
        {%- endcapture -%}
        <div class="wbs-pack__flex-item wbs-pack__item wbs-pack__block-{{ block.id }}" {{ block.shopify_attributes }} style="--wbs-pack-animate: {{ forloop.index }};">
          {%- if block.settings.link != blank -%}
            <a href="{{ block.settings.link }}">
          {%- endif -%}
          <div class="wbs-pack__inner-content wbs-pack__icon-alignment-{{ section.settings.icon_alignment }} wbs-pack__mobile-icon-alignment-{{ section.settings.mobile_icon_alignment }}">
            {%- comment -%} Icon {%- endcomment -%}
            {%- if block.settings.show_icon != blank -%}
              {%- if block.settings.image != blank -%}
                <div class="wbs-pack__image__wrapper">
                  {%- if block.settings.link != blank -%}
                    <a href="{{ block.settings.link }}">
                  {%- endif -%}
                  <svg viewBox="0 0 {{ block.settings.image.width }} {{ block.settings.image.height }}"></svg>
                  {%- capture sizes -%}
                    (max-width: 480px) {{ section.settings.base_width | divided_by: section.settings.mobile_per_row | divided_by: 2 | append: 'vw' | default: '33vw' }}, {{ section.settings.base_width | divided_by: section.settings.per_row | divided_by: 2 | append: 'vw' | default: '33vw' }}
                  {%- endcapture -%}
                  {{ block.settings.image | image_url: width: 1000 | image_tag:  widths: widths, sizes: sizes }}
                  {%- if block.settings.link != blank -%}
                    </a>
                  {%- endif -%}
                </div>
              {%- else -%}
                <div class="wbs-pack__image__wrapper wbs-pack__flex wbs-pack__justify-center">
                  {%- if block.settings.link != blank -%}
                    <a href="{{ block.settings.link }}">
                  {%- endif -%}
                    {{ placeholder_image | strip }}
                  {%- if block.settings.link != blank -%}
                    </a>
                  {%- endif -%}
                </div>
              {%- endif -%}
            {%- endif -%}
            {%- comment -%} End Icon {%- endcomment -%}
            <div class="wbs-pack__text-wrapper">
              {%- if block.settings.title != blank -%}
                <h3 class="wbs-pack__small-heading">
                  {{ block.settings.title }}
                </h3>
              {%- endif -%}
              {%- if block.settings.text != blank -%}
                <div class="wbs-pack__text wbs-pack__rte">
                  {{ block.settings.text }}
                </div>
              {%- endif -%}
            </div>
          </div>
          {%- if block.settings.link != blank -%}
            </a>
          {%- endif -%}
        </div>
      {%- endfor -%}
    </div>
  </div>
</section>
{%- endcapture -%}
{{ minify | strip_newlines }}

{% schema %}
{
  "name": "Icons Slider",
  "class": "WP__value-prop-slider",
  "settings": [
    {
      "type": "select",
      "id": "icon_alignment",
      "label": "Icon alignment",
      "default": "center",
      "options": [
        {
          "value": "left",
          "label": "Left"
        },
        {
          "value": "center",
          "label": "Center"
        }
      ]
    },
    {
      "type": "range",
      "id": "icon_size",
      "label": "Icon size",
      "default": 30,
      "min": 10,
      "max": 100,
      "unit": "%"
    },
    {
      "type": "range",
      "id": "per_row",
      "label": "Icons per slide",
      "default": 3,
      "min": 2,
      "max": 8
    },
    {
      "type": "range",
      "id": "gap",
      "min": 0,
      "max": 40,
      "label": "Spacing gap",
      "unit": "px",
      "default": 20
    },
    {
      "type": "checkbox",
      "id": "show_arrows",
      "label": "Show arrows",
      "default": true
    },
    {
      "type": "header",
      "content": "Text appearance"
    },
    {
      "type": "range",
      "id": "text_size",
      "label": "Text size",
      "min": 60,
      "max": 150,
      "step": 5,
      "default": 100,
      "unit": "%"
    },
    {
      "type": "header",
      "content": "Design"
    },
    {
      "type": "color",
      "id": "heading_color",
      "label": "Headings",
      "default": "#000000"
    },
    {
      "type": "color",
      "id": "text_color",
      "label": "Text",
      "default": "#666666"
    },
    {
      "type": "color_background",
      "id": "background_color",
      "label": "Background",
      "default": "linear-gradient(180deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 1) 100%)"
    },
    {
      "type": "header",
      "content": "Mobile"
    },
    {
      "type": "select",
      "id": "mobile_icon_alignment",
      "label": "Icon alignment",
      "default": "center",
      "options": [
        {
          "value": "left",
          "label": "Left"
        },
        {
          "value": "center",
          "label": "Center"
        }
      ]
    },
    {
      "type": "range",
      "id": "mobile_icon_size",
      "label": "Mobile icon size",
      "default": 30,
      "min": 10,
      "max": 100,
      "unit": "%"
    },
    {
      "type": "select",
      "id": "mobile_per_row",
      "label": "Mobile icons per slide",
      "default": "1",
      "options": [
        {
          "value": "1",
          "label": "1"
        },
        {
          "value": "2",
          "label": "2"
        }
      ]
    },
    {
      "type": "header",
      "content": "Layout"
    },
    {
      "type": "range",
      "id": "base_width",
      "label": "Size",
      "min": 80,
      "max": 100,
      "step": 5,
      "default": 95,
      "unit": "%"
    },
    {
      "type": "text",
      "id": "max_width",
      "label": "Maximum width",
      "placeholder": "eg. 1200px",
      "info": "Sets width constraint for content."
    },
    {
      "type": "range",
      "id": "inner_padding",
      "label": "Inner padding",
      "info": "Only applies to top and bottom.",
      "min": 0,
      "max": 100,
      "default": 40,
      "step": 5,
      "unit": "px"
    },
    {
      "type": "range",
      "id": "outer_margin",
      "label": "Outer margin",
      "info": "Only applies to top and bottom.",
      "min": 0,
      "max": 100,
      "default": 0,
      "step": 5,
      "unit": "px"
    },
    {
      "type": "header",
      "content": "Advanced"
    },
    {
      "type": "liquid",
      "id": "custom_css",
      "label": "CSS"
    },
    {
      "type": "liquid",
      "id": "mobile_custom_css",
      "label": "Mobile CSS",
      "info": "Applied on screens less than 480px."
    },
    {
      "type": "checkbox",
      "id": "override_theme_font",
      "label": "Override default theme font",
      "default": false
    },
    {
      "type": "font_picker",
      "id": "heading_font",
      "label": "Heading",
      "default": "serif"
    },
    {
      "type": "font_picker",
      "id": "main_font",
      "label": "Text",
      "default": "sans-serif"
    }
  ],
  "blocks": [
    {
      "type": "icon",
      "name": "Icon",
      "settings": [
        {
          "type": "image_picker",
          "id": "image",
          "label": "Icon"
        },
        {
          "type": "url",
          "id": "link",
          "label": "Icon link"
        },
        {
          "type": "checkbox",
          "id": "show_icon",
          "label": "Show icon",
          "default": true
        },
        {
          "type": "text",
          "id": "title",
          "label": "Title",
          "default": "Unique value"
        },
        {
          "type": "richtext",
          "id": "text",
          "label": "Text"
        }
      ]
    }
  ],
  "presets": [
    {
      "name": "Icons Slider",
      "blocks": [
        {
          "type": "icon",
          "settings": {
            "title": "Easy.",
            "text": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris nibh enim, ornare at consequat sed, placerat quis libero.</p><p><a>Learn more</a></p>"
          }
        },
        {
          "type": "icon",
          "settings": {
            "title": "Breezy.",
            "text": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris nibh enim, ornare at consequat sed, placerat quis libero.</p><p><a>Learn more</a></p>"
          }
        },
        {
          "type": "icon",
          "settings": {
            "title": "Beautiful.",
            "text": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris nibh enim, ornare at consequat sed, placerat quis libero.</p><p><a>Learn more</a></p>"
          }
        },
        {
          "type": "icon",
          "settings": {
            "title": "Effortless.",
            "text": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris nibh enim, ornare at consequat sed, placerat quis libero.</p><p><a>Learn more</a></p>"
          }
        },
        {
          "type": "icon",
          "settings": {
            "title": "Simple.",
            "text": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris nibh enim, ornare at consequat sed, placerat quis libero.</p><p><a>Learn more</a></p>"
          }
        },
        {
          "type": "icon",
          "settings": {
            "title": "Refined.",
            "text": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris nibh enim, ornare at consequat sed, placerat quis libero.</p><p><a>Learn more</a></p>"
          }
        }
      ]
    }
  ]
}
{% endschema %}
{%- comment -%} JSON Settings {%- endcomment -%}
<script type="application/json" data-wbs-pack="{{ section.id }}">
  { 
    "id": {{ section.id | json }},
    "animation": {{ section.settings.animation | json }},
    "show_arrows": {{ section.settings.show_arrows | json }},
    "show_dots": {{ section.settings.show_dots | json }},
    "autoplay": {{ section.settings.autoplay | times: 1000 | json }}
  }
</script>
{%- comment -%} External scripts {%- endcomment -%}
<script data-wbs-pack-external-js="{{ section.id }}" src="https://cdn.shopify.com/s/files/1/0577/7673/4361/files/flickity-2.3.0.pkgd.min.js?v=1671485005" defer></script>
{%- comment -%} JavaScript {%- endcomment -%}
<script data-wbs-pack-js="{{ section.id }}" type="module" defer>
(function(){

  const wbsPack = {
    settings: {},
    animateSection: function(entries, observer){
      // Target the first entry available.
      let observedSection = entries[0];
      if (observedSection.isIntersecting) {
        observedSection.target.classList.add('wbs-pack__animation-applied');
      }
    },
    load: function(section){
      if (this.settings.animation !== 'none'){
        const options = {
          root: null,
          rootMargin: '0px',
          threshold: 0
        };
        // Construct Intersection Observer.
        const observer = new IntersectionObserver( this.animateSection, options );
        // Observe if element is present.
        if (section) {
          observer.observe(section);
        }
      }

      const elem = section.querySelector(`#slider-${wbsPack.settings.id}`);
      wbsPack.flkty = new Flickity( elem, {
        cellAlign: 'left',
        autoPlay: this.settings.autoplay,
        draggable: JSON.parse(getComputedStyle(section).getPropertyValue('--draggable')),
        contain: true,
        wrapAround: true,
        adaptiveHeight: false,
        imagesLoaded: true,
        prevNextButtons: JSON.parse(getComputedStyle(section).getPropertyValue('--show-arrows')),
        pageDots: false,
        on: {
          ready: () => {
            setTimeout(() => {
              elem.classList.add('wbs-pack__stretch-height');
            }, 500);
          }
        }
      });
    },
    unload: function(section){
      section.classList.remove('wbs-pack__animation-applied')
    }
  }

  window.addEventListener('shopify:section:unload', function (e) {
    const settings = document.querySelector(`[data-wbs-pack="${e.detail.sectionId}"]`);
    const sectionId = e.detail.sectionId;
    const section = document.querySelector(`#WP--${e.detail.sectionId}`);
    if (sectionId == wbsPack.settings.id){
      wbsPack.unload(section);
    }
  });

  wbsPack.settings = JSON.parse(document.querySelector('[data-wbs-pack="{{ section.id }}"]').innerHTML);
  const sectionId = {{ section.id | json }};
  const section = document.querySelector(`#WP--${sectionId}`);

  if (sectionId == wbsPack.settings.id){
    wbsPack.load(section);
  }
})()
</script>
4.7/5 - (18 votes)

About

Leave a Comment

Your email address will not be published. Required fields are marked *