framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
2 lines (1 loc) • 2.67 kB
JavaScript
(function framework7ComponentLoader(e,o){void 0===o&&(o=!0);var t=e.$,n=e.utils,i=(e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,e.$jsx,n.nextFrame),c=n.bindMethods;const r={toggleClicked(e){let o=e.closest(".accordion-item").eq(0);o.length||(o=e.parents("li").eq(0));const t=e.parents(".accordion-item-content").eq(0);t.length&&t.parents(o).length||e.parents("li").length>1&&e.parents("li")[0]!==o[0]||this.accordion.toggle(o)},open(e){const o=this,n=t(e);let c=!1;function r(){c=!0}if(n.trigger("accordion:beforeopen",{prevent:r},r),o.emit("accordionBeforeOpen",n[0],r),c)return;const s=n.parents(".accordion-list").eq(0);let a=n.children(".accordion-item-content");if(a.removeAttr("aria-hidden"),0===a.length&&(a=n.find(".accordion-item-content")),0===a.length)return;const d=s.length>0&&n.parent().children(".accordion-item-opened");d.length>0&&o.accordion.close(d),a.transitionEnd((()=>{n.hasClass("accordion-item-opened")?(a.transition(0),a.css("height","auto"),i((()=>{a.transition(""),n.trigger("accordion:opened"),o.emit("accordionOpened",n[0])}))):(a.css("height",""),n.trigger("accordion:closed"),o.emit("accordionClosed",n[0]))})),a.css("height",`${a[0].scrollHeight}px`),n.trigger("accordion:open"),n.addClass("accordion-item-opened"),o.emit("accordionOpen",n[0])},close(e){const o=this,n=t(e);let c=!1;function r(){c=!0}if(n.trigger("accordion:beforeclose",{prevent:r},r),o.emit("accordionBeforeClose",n[0],r),c)return;let s=n.children(".accordion-item-content");0===s.length&&(s=n.find(".accordion-item-content")),n.removeClass("accordion-item-opened"),s.attr("aria-hidden",!0),s.transition(0),s.css("height",`${s[0].scrollHeight}px`),s.transitionEnd((()=>{n.hasClass("accordion-item-opened")?(s.transition(0),s.css("height","auto"),i((()=>{s.transition(""),n.trigger("accordion:opened"),o.emit("accordionOpened",n[0])}))):(s.css("height",""),n.trigger("accordion:closed"),o.emit("accordionClosed",n[0]))})),i((()=>{s.transition(""),s.css("height",""),n.trigger("accordion:close"),o.emit("accordionClose",n[0])}))},toggle(e){const o=t(e);0!==o.length&&(o.hasClass("accordion-item-opened")?this.accordion.close(e):this.accordion.open(e))}};var s={name:"accordion",create(){c(this,{accordion:r})},clicks:{".accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a":function(e){r.toggleClicked.call(this,e)}}};if(o){if(e.prototype.modules&&e.prototype.modules[s.name])return;e.use(s),e.instance&&(e.instance.useModuleParams(s,e.instance.params),e.instance.useModule(s))}return s}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))