forked from philbuchanan/Accordion-Shortcodes
-
Notifications
You must be signed in to change notification settings - Fork 0
/
accordion.min.js
1 lines (1 loc) · 1.64 KB
/
accordion.min.js
1
!function(d){"use strict";var t;d.fn.accordionShortcodes=function(o){var r=[],t=d("#"+o.id+" .js-accordion-controller"),s=window.location.hash,n=250,a=d.extend({autoClose:!0,openFirst:!1,openAll:!1,clickToClose:!1,scroll:!1,usebuttons:!1},o);function i(o,t){o.content.clearQueue().stop().slideDown(n,function(){t&&a.scroll&&d("html, body").animate({scrollTop:o.controller.offset().top-a.scrollOffset},n)}),o.controller.addClass("open read"),o.controller.attr("aria-expanded","true"),o.content.attr("aria-hidden","false"),o.isOpen=!0}function l(o){o.content.slideUp(n),o.controller.removeClass("open"),o.controller.attr("aria-expanded","false"),o.content.attr("aria-hidden","true"),o.isOpen=!1}return d(".accordion").removeClass("no-js"),a.scrollOffset=0|Math.floor(parseInt(a.scroll)),t.each(function(o){var t=!1;switch(0==o&&a.openFirst&&(t=!0),a.openAll&&(t=!0),d(this).data("initialstate")){case"open":t=!0;break;case"closed":t=!1}s.length&&s=="#"+d(this).attr("id")&&(t=!0);var n,e,c=(n=d(this),e=t,{id:n.attr("id"),controller:n,controls:n.attr("aria-controls"),content:d("#"+n.attr("aria-controls")),isOpen:e||!1});r.push(c),d(this).click(function(o){var t;(t=c).isOpen?a.clickToClose&&l(t):(a.autoClose&&d.each(r,function(o,t){l(t)}),i(t,!0))}),d(this).keyup(function(o){var t=o.which;a.usebuttons||13!==t&&32!==t||d(this).click(),27===t&&a.clickToClose&&l(c)}),c.isOpen?i(c):l(c)}),d(window).on("hashchange",function(){(s=d(window.location.hash)).length&&s.hasClass("js-accordion-controller")&&s.click()}),this},d(window).on("load",function(){for(var o=0;o<accordionShortcodesSettings.length;o+=1)t=accordionShortcodesSettings[o],d("#"+t.id).accordionShortcodes(t)})}(jQuery);