123 lines
No EOL
7.4 KiB
JavaScript
123 lines
No EOL
7.4 KiB
JavaScript
!function (t, e) {
|
|
if ("object" == typeof exports && "object" == typeof module) module.exports = e(); else if ("function" == typeof define && define.amd) define([], e); else {
|
|
var n = e();
|
|
for (var i in n) ("object" == typeof exports ? exports : t)[i] = n[i]
|
|
}
|
|
}(self, (function () {
|
|
return function () {
|
|
"use strict";
|
|
var t = {
|
|
d: function (e, n) {
|
|
for (var i in n) t.o(n, i) && !t.o(e, i) && Object.defineProperty(e, i, {enumerable: !0, get: n[i]})
|
|
}, o: function (t, e) {
|
|
return Object.prototype.hasOwnProperty.call(t, e)
|
|
}, r: function (t) {
|
|
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {value: "Module"}), Object.defineProperty(t, "__esModule", {value: !0})
|
|
}
|
|
}, e = {};
|
|
|
|
function n(t) {
|
|
return n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) {
|
|
return typeof t
|
|
} : function (t) {
|
|
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
|
|
}, n(t)
|
|
}
|
|
|
|
function i(t, e) {
|
|
for (var n = 0; n < e.length; n++) {
|
|
var i = e[n];
|
|
i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, o(i.key), i)
|
|
}
|
|
}
|
|
|
|
function o(t) {
|
|
var e = function (t, e) {
|
|
if ("object" != n(t) || !t) return t;
|
|
var i = t[Symbol.toPrimitive];
|
|
if (void 0 !== i) {
|
|
var o = i.call(t, "string");
|
|
if ("object" != n(o)) return o;
|
|
throw new TypeError("@@toPrimitive must return a primitive value.")
|
|
}
|
|
return String(t)
|
|
}(t);
|
|
return "symbol" == n(e) ? e : String(e)
|
|
}
|
|
|
|
t.r(e), t.d(e, {
|
|
MegaDropdown: function () {
|
|
return s
|
|
}
|
|
});
|
|
var s = function () {
|
|
function t(e) {
|
|
var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
|
|
!function (t, e) {
|
|
if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
|
|
}(this, t), this._onHover = "hover" === n.trigger || "hover" === e.getAttribute("data-trigger"), this._container = t._findParent(e, "mega-dropdown"), this._container && (this._menu = this._container.querySelector(".dropdown-toggle ~ .dropdown-menu"), this._menu && (e.setAttribute("aria-expanded", "false"), this._el = e, this._bindEvents()))
|
|
}
|
|
|
|
var e, n, o;
|
|
return e = t, o = [{
|
|
key: "_findParent", value: function (t, e) {
|
|
if ("BODY" === t.tagName.toUpperCase()) return null;
|
|
for (t = t.parentNode; "BODY" !== t.tagName.toUpperCase() && !t.classList.contains(e);) t = t.parentNode;
|
|
return "BODY" !== t.tagName.toUpperCase() ? t : null
|
|
}
|
|
}], (n = [{
|
|
key: "open", value: function () {
|
|
this._timeout && (clearTimeout(this._timeout), this._timeout = null), this._focusTimeout && (clearTimeout(this._focusTimeout), this._focusTimeout = null), "true" !== this._el.getAttribute("aria-expanded") && (this._triggerEvent("show"), this._container.classList.add("show"), this._menu.classList.add("show"), this._el.setAttribute("aria-expanded", "true"), this._el.focus(), this._triggerEvent("shown"))
|
|
}
|
|
}, {
|
|
key: "close", value: function (t) {
|
|
var e = this;
|
|
this._timeout && (clearTimeout(this._timeout), this._timeout = null), this._focusTimeout && (clearTimeout(this._focusTimeout), this._focusTimeout = null), this._onHover && !t ? this._timeout = setTimeout((function () {
|
|
e._timeout && (clearTimeout(e._timeout), e._timeout = null), e._close()
|
|
}), 150) : this._close()
|
|
}
|
|
}, {
|
|
key: "toggle", value: function () {
|
|
"true" === this._el.getAttribute("aria-expanded") ? this.close(!0) : this.open()
|
|
}
|
|
}, {
|
|
key: "destroy", value: function () {
|
|
this._unbindEvents(), this._el = null, this._timeout && (clearTimeout(this._timeout), this._timeout = null), this._focusTimeout && (clearTimeout(this._focusTimeout), this._focusTimeout = null)
|
|
}
|
|
}, {
|
|
key: "_close", value: function () {
|
|
"true" === this._el.getAttribute("aria-expanded") && (this._triggerEvent("hide"), this._container.classList.remove("show"), this._menu.classList.remove("show"), this._el.setAttribute("aria-expanded", "false"), this._triggerEvent("hidden"))
|
|
}
|
|
}, {
|
|
key: "_bindEvents", value: function () {
|
|
var e = this;
|
|
this._elClickEvnt = function (t) {
|
|
t.preventDefault(), e.toggle()
|
|
}, this._el.addEventListener("click", this._elClickEvnt), this._bodyClickEvnt = function (t) {
|
|
!e._container.contains(t.target) && e._container.classList.contains("show") && e.close(!0)
|
|
}, document.body.addEventListener("click", this._bodyClickEvnt, !0), this._menuClickEvnt = function (t) {
|
|
t.target.classList.contains("mega-dropdown-link") && e.close(!0)
|
|
}, this._menu.addEventListener("click", this._menuClickEvnt, !0), this._focusoutEvnt = function () {
|
|
e._focusTimeout && (clearTimeout(e._focusTimeout), e._focusTimeout = null), "true" === e._el.getAttribute("aria-expanded") && (e._focusTimeout = setTimeout((function () {
|
|
"BODY" !== document.activeElement.tagName.toUpperCase() && t._findParent(document.activeElement, "mega-dropdown") !== e._container && e.close(!0)
|
|
}), 100))
|
|
}, this._container.addEventListener("focusout", this._focusoutEvnt, !0), this._onHover && (this._enterEvnt = function () {
|
|
"static" !== window.getComputedStyle(e._menu, null).getPropertyValue("position") && e.open()
|
|
}, this._leaveEvnt = function () {
|
|
"static" !== window.getComputedStyle(e._menu, null).getPropertyValue("position") && e.close()
|
|
}, this._el.addEventListener("mouseenter", this._enterEvnt), this._menu.addEventListener("mouseenter", this._enterEvnt), this._el.addEventListener("mouseleave", this._leaveEvnt), this._menu.addEventListener("mouseleave", this._leaveEvnt))
|
|
}
|
|
}, {
|
|
key: "_unbindEvents", value: function () {
|
|
this._elClickEvnt && (this._el.removeEventListener("click", this._elClickEvnt), this._elClickEvnt = null), this._bodyClickEvnt && (document.body.removeEventListener("click", this._bodyClickEvnt, !0), this._bodyClickEvnt = null), this._menuClickEvnt && (this._menu.removeEventListener("click", this._menuClickEvnt, !0), this._menuClickEvnt = null), this._focusoutEvnt && (this._container.removeEventListener("focusout", this._focusoutEvnt, !0), this._focusoutEvnt = null), this._enterEvnt && (this._el.removeEventListener("mouseenter", this._enterEvnt), this._menu.removeEventListener("mouseenter", this._enterEvnt), this._enterEvnt = null), this._leaveEvnt && (this._el.removeEventListener("mouseleave", this._leaveEvnt), this._menu.removeEventListener("mouseleave", this._leaveEvnt), this._leaveEvnt = null)
|
|
}
|
|
}, {
|
|
key: "_triggerEvent", value: function (t) {
|
|
var e;
|
|
document.createEvent ? ("function" == typeof Event ? e = new Event(t) : (e = document.createEvent("Event")).initEvent(t, !1, !0), this._container.dispatchEvent(e)) : this._container.fireEvent("on".concat(t), document.createEventObject())
|
|
}
|
|
}]) && i(e.prototype, n), o && i(e, o), Object.defineProperty(e, "prototype", {writable: !1}), t
|
|
}();
|
|
return window.MegaDropdown = s, e
|
|
}()
|
|
})); |