All Downloads are FREE. Search and download functionalities are using the official Maven repository.

template.js.base.jquery.ui.accordion.min.js Maven / Gradle / Ivy

There is a newer version: 5.0.4
Show newest version
/*! jQuery UI - v1.10.4 - 2014-04-02
 * http://jqueryui.com
 * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */

(function (e) {
    var t = 0, i = {}, a = {};
    i.height = i.paddingTop = i.paddingBottom = i.borderTopWidth = i.borderBottomWidth = "hide", a.height = a.paddingTop = a.paddingBottom = a.borderTopWidth = a.borderBottomWidth = "show", e.widget("ui.accordion", {version: "1.10.4", options: {active: 0, animate: {}, collapsible: !1, event: "click", header: "> li > :first-child,> :not(li):even", heightStyle: "auto", icons: {activeHeader: "ui-icon-triangle-1-s", header: "ui-icon-triangle-1-e"}, activate: null, beforeActivate: null}, _create: function () {
        var t = this.options;
        this.prevShow = this.prevHide = e(), this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role", "tablist"), t.collapsible || t.active !== !1 && null != t.active || (t.active = 0), this._processPanels(), 0 > t.active && (t.active += this.headers.length), this._refresh()
    }, _getCreateEventData: function () {
        return{header: this.active, panel: this.active.length ? this.active.next() : e(), content: this.active.length ? this.active.next() : e()}
    }, _createIcons: function () {
        var t = this.options.icons;
        t && (e("").addClass("ui-accordion-header-icon ui-icon " + t.header).prependTo(this.headers), this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader), this.headers.addClass("ui-accordion-icons"))
    }, _destroyIcons: function () {
        this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()
    }, _destroy: function () {
        var e;
        this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"), this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function () {
            /^ui-accordion/.test(this.id) && this.removeAttribute("id")
        }), this._destroyIcons(), e = this.headers.next().css("display", "").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function () {
            /^ui-accordion/.test(this.id) && this.removeAttribute("id")
        }), "content" !== this.options.heightStyle && e.css("height", "")
    }, _setOption: function (e, t) {
        return"active" === e ? (this._activate(t), undefined) : ("event" === e && (this.options.event && this._off(this.headers, this.options.event), this._setupEvents(t)), this._super(e, t), "collapsible" !== e || t || this.options.active !== !1 || this._activate(0), "icons" === e && (this._destroyIcons(), t && this._createIcons()), "disabled" === e && this.headers.add(this.headers.next()).toggleClass("ui-state-disabled", !!t), undefined)
    }, _keydown: function (t) {
        if (!t.altKey && !t.ctrlKey) {
            var i = e.ui.keyCode, a = this.headers.length, s = this.headers.index(t.target), n = !1;
            switch (t.keyCode) {
                case i.RIGHT:
                case i.DOWN:
                    n = this.headers[(s + 1) % a];
                    break;
                case i.LEFT:
                case i.UP:
                    n = this.headers[(s - 1 + a) % a];
                    break;
                case i.SPACE:
                case i.ENTER:
                    this._eventHandler(t);
                    break;
                case i.HOME:
                    n = this.headers[0];
                    break;
                case i.END:
                    n = this.headers[a - 1]
            }
            n && (e(t.target).attr("tabIndex", -1), e(n).attr("tabIndex", 0), n.focus(), t.preventDefault())
        }
    }, _panelKeyDown: function (t) {
        t.keyCode === e.ui.keyCode.UP && t.ctrlKey && e(t.currentTarget).prev().focus()
    }, refresh: function () {
        var t = this.options;
        this._processPanels(), t.active === !1 && t.collapsible === !0 || !this.headers.length ? (t.active = !1, this.active = e()) : t.active === !1 ? this._activate(0) : this.active.length && !e.contains(this.element[0], this.active[0]) ? this.headers.length === this.headers.find(".ui-state-disabled").length ? (t.active = !1, this.active = e()) : this._activate(Math.max(0, t.active - 1)) : t.active = this.headers.index(this.active), this._destroyIcons(), this._refresh()
    }, _processPanels: function () {
        this.headers = this.element.find(this.options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"), this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()
    }, _refresh: function () {
        var i, a = this.options, s = a.heightStyle, n = this.element.parent(), r = this.accordionId = "ui-accordion-" + (this.element.attr("id") || ++t);
        this.active = this._findActive(a.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"), this.active.next().addClass("ui-accordion-content-active").show(), this.headers.attr("role", "tab").each(function (t) {
            var i = e(this), a = i.attr("id"), s = i.next(), n = s.attr("id");
            a || (a = r + "-header-" + t, i.attr("id", a)), n || (n = r + "-panel-" + t, s.attr("id", n)), i.attr("aria-controls", n), s.attr("aria-labelledby", a)
        }).next().attr("role", "tabpanel"), this.headers.not(this.active).attr({"aria-selected": "false", "aria-expanded": "false", tabIndex: -1}).next().attr({"aria-hidden": "true"}).hide(), this.active.length ? this.active.attr({"aria-selected": "true", "aria-expanded": "true", tabIndex: 0}).next().attr({"aria-hidden": "false"}) : this.headers.eq(0).attr("tabIndex", 0), this._createIcons(), this._setupEvents(a.event), "fill" === s ? (i = n.height(), this.element.siblings(":visible").each(function () {
            var t = e(this), a = t.css("position");
            "absolute" !== a && "fixed" !== a && (i -= t.outerHeight(!0))
        }), this.headers.each(function () {
            i -= e(this).outerHeight(!0)
        }), this.headers.next().each(function () {
            e(this).height(Math.max(0, i - e(this).innerHeight() + e(this).height()))
        }).css("overflow", "auto")) : "auto" === s && (i = 0, this.headers.next().each(function () {
            i = Math.max(i, e(this).css("height", "").height())
        }).height(i))
    }, _activate: function (t) {
        var i = this._findActive(t)[0];
        i !== this.active[0] && (i = i || this.active[0], this._eventHandler({target: i, currentTarget: i, preventDefault: e.noop}))
    }, _findActive: function (t) {
        return"number" == typeof t ? this.headers.eq(t) : e()
    }, _setupEvents: function (t) {
        var i = {keydown: "_keydown"};
        t && e.each(t.split(" "), function (e, t) {
            i[t] = "_eventHandler"
        }), this._off(this.headers.add(this.headers.next())), this._on(this.headers, i), this._on(this.headers.next(), {keydown: "_panelKeyDown"}), this._hoverable(this.headers), this._focusable(this.headers)
    }, _eventHandler: function (t) {
        var i = this.options, a = this.active, s = e(t.currentTarget), n = s[0] === a[0], r = n && i.collapsible, o = r ? e() : s.next(), h = a.next(), d = {oldHeader: a, oldPanel: h, newHeader: r ? e() : s, newPanel: o};
        t.preventDefault(), n && !i.collapsible || this._trigger("beforeActivate", t, d) === !1 || (i.active = r ? !1 : this.headers.index(s), this.active = n ? e() : s, this._toggle(d), a.removeClass("ui-accordion-header-active ui-state-active"), i.icons && a.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header), n || (s.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"), i.icons && s.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader), s.next().addClass("ui-accordion-content-active")))
    }, _toggle: function (t) {
        var i = t.newPanel, a = this.prevShow.length ? this.prevShow : t.oldPanel;
        this.prevShow.add(this.prevHide).stop(!0, !0), this.prevShow = i, this.prevHide = a, this.options.animate ? this._animate(i, a, t) : (a.hide(), i.show(), this._toggleComplete(t)), a.attr({"aria-hidden": "true"}), a.prev().attr("aria-selected", "false"), i.length && a.length ? a.prev().attr({tabIndex: -1, "aria-expanded": "false"}) : i.length && this.headers.filter(function () {
            return 0 === e(this).attr("tabIndex")
        }).attr("tabIndex", -1), i.attr("aria-hidden", "false").prev().attr({"aria-selected": "true", tabIndex: 0, "aria-expanded": "true"})
    }, _animate: function (e, t, s) {
        var n, r, o, h = this, d = 0, c = e.length && (!t.length || e.index() < t.index()), l = this.options.animate || {}, u = c && l.down || l, v = function () {
            h._toggleComplete(s)
        };
        return"number" == typeof u && (o = u), "string" == typeof u && (r = u), r = r || u.easing || l.easing, o = o || u.duration || l.duration, t.length ? e.length ? (n = e.show().outerHeight(), t.animate(i, {duration: o, easing: r, step: function (e, t) {
            t.now = Math.round(e)
        }}), e.hide().animate(a, {duration: o, easing: r, complete: v, step: function (e, i) {
            i.now = Math.round(e), "height" !== i.prop ? d += i.now : "content" !== h.options.heightStyle && (i.now = Math.round(n - t.outerHeight() - d), d = 0)
        }}), undefined) : t.animate(i, o, r, v) : e.animate(a, o, r, v)
    }, _toggleComplete: function (e) {
        var t = e.oldPanel;
        t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"), t.length && (t.parent()[0].className = t.parent()[0].className), this._trigger("activate", null, e)
    }})
})(jQuery);




© 2015 - 2024 Weber Informatics LLC | Privacy Policy