UNPKG

@three11/accordion

Version:

Front-end Accordion widget using max-height

3 lines (2 loc) 1.98 kB
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i((t||self).accordion={})}(this,function(t){function i(){return i=Object.assign?Object.assign.bind():function(t){for(var i=1;i<arguments.length;i++){var e=arguments[i];for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&(t[s]=e[s])}return t},i.apply(this,arguments)}var e=/*#__PURE__*/function(){function t(t,e){var s,n;return void 0===e&&(e={}),this.el=void 0,this.head=void 0,this.body=void 0,this.height=0,this.isOpen=!1,this.settings=void 0,this.defaultSettings={headSelector:"[data-title]",bodySelector:"[data-content]",hiddenClass:"is--hidden",activeClass:"is--active"},this.settings=i({},this.defaultSettings,e),this.el=t,this.head=(null==(s=this.el)?void 0:s.querySelector(this.settings.headSelector))||null,this.body=(null==(n=this.el)?void 0:n.querySelector(this.settings.bodySelector))||null,this.bind().close(),this}var e=t.prototype;return e.bind=function(){var t=this;return this.head&&this.head.addEventListener("click",this.toggle.bind(this)),this.body&&this.body.addEventListener("transitionend",function(){!t.isOpen&&t.el&&t.el.classList.add(t.settings.hiddenClass)}),this},e.setHeight=function(t){var i=this;return setTimeout(function(){i.body&&(i.body.style.maxHeight=t+"px")},1),this},e.toggle=function(){var t;return this.height=(null==(t=this.body)?void 0:t.scrollHeight)||0,this.isOpen?this.close():this.open(),this},e.close=function(){return this.isOpen=!1,this.el&&this.el.classList.remove(this.settings.activeClass),this.body&&(this.body.style.maxHeight=this.height+"px"),this.setHeight(0),this},e.open=function(){return this.isOpen=!0,this.el&&(this.el.classList.add(this.settings.activeClass),this.el.classList.remove(this.settings.hiddenClass)),this.body&&(this.body.style.maxHeight="0px"),this.setHeight(this.height),this},t}();t.Accordion=e,t.default=e}); //# sourceMappingURL=accordion.umd.js.map