$$plugins.define('expand', ['domHelper'], function (element, options, $) { //triggerButton: data-trigger-expand //content to be initialized: data-content-expand const triggerButton = element.querySelector('[data-trigger-expand]'), triggerButtonId = triggerButton.getAttribute('data-trigger-expand'), content = $(`[data-content-expand='${triggerButtonId}']`); var $triggerButton = $(triggerButton); $triggerButton.on('click', function (e) { e.preventDefault(); if ($triggerButton.hasClass('active')) { content.slideUp(300, function () { $triggerButton.removeClass('active'); content.removeAttr('style'); }); } else { $triggerButton.addClass('active'); content.slideDown(300, function () { if (content.find('.scrollbarShadow').length > 0 && !content.find('.scrollbarShadow').hasClass('initialized')) { content.find('.scrollbarShadow').addClass('initialized'); } }); } }); if (options.closeOnCLickAway == true) { document.addEventListener('click', function (event) { if (!$triggerButton.hasClass('active') || element == event.target || $(event.target).parents().contains(element)) { return; } content.slideUp(300, function () { $triggerButton.removeClass('active'); content.removeAttr('style'); }); }); } });