Skip to content

Instantly share code, notes, and snippets.

@IgorGavrilenko
Last active March 28, 2023 11:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save IgorGavrilenko/da59e2140db10a919b0a4f0c19de35f8 to your computer and use it in GitHub Desktop.
Save IgorGavrilenko/da59e2140db10a919b0a4f0c19de35f8 to your computer and use it in GitHub Desktop.
js collapse
document.querySelectorAll('.js-collapse').forEach(function(accordion) {
accordion.addEventListener('click', function(event) {
//event.preventDefault();
let subAccordion = accordion.querySelector('.js-collapse-target');
let clickTarget = event.target;
if( clickTarget.closest('.js-collapse-toggle') ) {
accordion.classList.toggle('open');
setTimeout(function() {
if (subAccordion.style.maxHeight) {
subAccordion.style.maxHeight = null;
} else {
subAccordion.style.maxHeight = subAccordion.scrollHeight + "px";
}
});
}
})
});
//ready()
//!hasClass(el, class)
//addClass(el, class);
//removeClass(el, class);
var collapseInit = function(){
var collapse = '.b-collapse';
var collapseHideClass = 'b-collapse--hide';
var collapseTrigger = '.b-collapse__trigger';
ready(collapseTrigger, function(element) {
this.addEventListener('click', function () {
var collapseParent = this.parentNode;
if(!hasClass(collapseParent, collapseHideClass)) {
addClass(collapseParent, collapseHideClass);
} else {
removeClass(collapseParent, collapseHideClass);
}
});
});
};
collapseInit();
// spoiler
(function() {
document.querySelector('.spoiler').addEventListener('click', spoilerClickHandler);
function spoilerClickHandler(evt) {
const spoilerSwitchElem = evt.target.closest('.spoiler__head')
if (spoilerSwitchElem) { // если клик по dt
spoilerSwitchElem.closest('.spoiler__item')
.classList.toggle('active') // обертке переключаем active
}
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment