Skip to content

Instantly share code, notes, and snippets.

@serhiosipatron
Created July 24, 2020 10:50
Show Gist options
  • Save serhiosipatron/80664142cb63c4e425e251e65bb7fad3 to your computer and use it in GitHub Desktop.
Save serhiosipatron/80664142cb63c4e425e251e65bb7fad3 to your computer and use it in GitHub Desktop.
var tagFiltering = (function () {
let selectors = {
tag: ".tag",
tagActiveClass: "tag--active",
applyFilterBtn: ".apply-filters"
};
let locationOrigin = window.location.origin;
let collectionUrl = locationOrigin + "{{ collection.url }}";
let resultTagsArray = [];
let isAr = false;
function buildurl() {
let result = collectionUrl;
let viewAr = isAr ? '?view=ar' : '';
if (!viewAr && resultTagsArray.length === 0) {
return result;
}
if (resultTagsArray.length > 0) {
result += '/' + resultTagsArray.join('+') + '/';
}
return result + viewAr;
}
function handleTagClick(evt) {
evt.preventDefault();
let $currentTag = $(this);
let tagValue = getTagValue($currentTag);
$currentTag.toggleClass(selectors.tagActiveClass);
if ($currentTag.hasClass(selectors.tagActiveClass)) {
resultTagsArray.push(tagValue);
} else {
resultTagsArray = resultTagsArray.filter(tag => tag !== tagValue)
}
return $(selectors.applyFilterBtn).attr('href',buildurl());
}
function getInitialValues() {
isAr = /view=ar/.test(window.location.href);
resultTagsArray = window.location.href
.replace(collectionUrl, '')
.replace(window.location.search || '', '')
.replace(/^\/|\/$/g, '')
.split('+')
.filter(t => !!t)
.map( t => decodeURIComponent(t))
}
function getTagValue($tag) {
return $tag.data('tag')
}
function bindEvents() {
$(selectors.tag).off("click");
$(selectors.tag).on("click", handleTagClick)
}
function init() {
getInitialValues();
bindEvents()
}
return {
init: init
}
})();
tagFiltering.init()
@serhiosipatron
Copy link
Author

function from liquid filters sidebar example https://sketch.com.kw/collections/teapot

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment