UNPKG

tbg-foundation-sites

Version:

TBG fork of the most advanced responsive front-end framework in the world.

1 lines 4.07 kB
"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function e(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,i,n){return i&&e(t.prototype,i),n&&e(t,n),t}}();!function(e){var t=function(){function t(i,n){_classCallCheck(this,t),this.$element=i,this.options=e.extend({},t.defaults,this.$element.data(),n),this._init(),Foundation.registerPlugin(this,"Accordion"),Foundation.Keyboard.register("Accordion",{ENTER:"toggle",SPACE:"toggle",ARROW_DOWN:"next",ARROW_UP:"previous"})}return _createClass(t,[{key:"_init",value:function(){var t=this;this.$element.attr("role","tablist"),this.$tabs=this.$element.children("[data-accordion-item]"),this.$tabs.each(function(t,i){var n=e(i),a=n.children("[data-tab-content]"),o=a[0].id||Foundation.GetYoDigits(6,"accordion"),s=i.id||o+"-label";n.find("a:first").attr({"aria-controls":o,role:"tab",id:s,"aria-expanded":!1,"aria-selected":!1}),a.attr({role:"tabpanel","aria-labelledby":s,"aria-hidden":!0,id:o})});var i=this.$element.find(".is-active").children("[data-tab-content]");this.firstTimeInit=!0,i.length&&(this.down(i,this.firstTimeInit),this.firstTimeInit=!1),this._checkDeepLink=function(){var i=window.location.hash;if(i.length){var n=t.$element.find('[href$="'+i+'"]'),a=e(i);if(n.length&&a){if(n.parent("[data-accordion-item]").hasClass("is-active")||(t.down(a,t.firstTimeInit),t.firstTimeInit=!1),t.options.deepLinkSmudge){var o=t;e(window).load(function(){var t=o.$element.offset();e("html, body").animate({scrollTop:t.top},o.options.deepLinkSmudgeDelay)})}t.$element.trigger("deeplink.zf.accordion",[n,a])}}},this.options.deepLink&&this._checkDeepLink(),this._events()}},{key:"_events",value:function(){var t=this;this.$tabs.each(function(){var i=e(this),n=i.children("[data-tab-content]");n.length&&i.children("a").off("click.zf.accordion keydown.zf.accordion").on("click.zf.accordion",function(e){e.preventDefault(),t.toggle(n)}).on("keydown.zf.accordion",function(e){Foundation.Keyboard.handleKey(e,"Accordion",{toggle:function(){t.toggle(n)},next:function(){var e=i.next().find("a").focus();t.options.multiExpand||e.trigger("click.zf.accordion")},previous:function(){var e=i.prev().find("a").focus();t.options.multiExpand||e.trigger("click.zf.accordion")},handled:function(){e.preventDefault(),e.stopPropagation()}})})}),this.options.deepLink&&e(window).on("popstate",this._checkDeepLink)}},{key:"toggle",value:function(e){if(e.parent().hasClass("is-active")?this.up(e):this.down(e),this.options.deepLink){var t=e.prev("a").attr("href");this.options.updateHistory?history.pushState({},"",t):history.replaceState({},"",t)}}},{key:"down",value:function(t,i){var n=this;if(t.attr("aria-hidden",!1).parent("[data-tab-content]").addBack().parent().addClass("is-active"),!this.options.multiExpand&&!i){var a=this.$element.children(".is-active").children("[data-tab-content]");a.length&&this.up(a.not(t))}t.slideDown(this.options.slideSpeed,function(){n.$element.trigger("down.zf.accordion",[t])}),e("#"+t.attr("aria-labelledby")).attr({"aria-expanded":!0,"aria-selected":!0})}},{key:"up",value:function(t){var i=t.parent().siblings(),n=this;(this.options.allowAllClosed||i.hasClass("is-active"))&&t.parent().hasClass("is-active")&&(t.slideUp(n.options.slideSpeed,function(){n.$element.trigger("up.zf.accordion",[t])}),t.attr("aria-hidden",!0).parent().removeClass("is-active"),e("#"+t.attr("aria-labelledby")).attr({"aria-expanded":!1,"aria-selected":!1}))}},{key:"destroy",value:function(){this.$element.find("[data-tab-content]").stop(!0).slideUp(0).css("display",""),this.$element.find("a").off(".zf.accordion"),this.options.deepLink&&e(window).off("popstate",this._checkDeepLink),Foundation.unregisterPlugin(this)}}]),t}();t.defaults={slideSpeed:250,multiExpand:!1,allowAllClosed:!1,deepLink:!1,deepLinkSmudge:!1,deepLinkSmudgeDelay:300,updateHistory:!1},Foundation.plugin(t,"Accordion")}(jQuery);