Guest User

Untitled

a guest
Oct 7th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     var version = "0.3.1",
  2.     classCallCheck = function(e, o) {
  3.         if (!(e instanceof o)) throw new TypeError("Cannot call a class as a function")
  4.     },
  5.     createClass = function() {
  6.         function e(e, o) {
  7.             for (var t = 0; t < o.length; t++) {
  8.                 var i = o[t];
  9.                 i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i)
  10.             }
  11.         }
  12.         return function(o, t, i) {
  13.             return t && e(o.prototype, t), i && e(o, i), o
  14.         }
  15.     }(),
  16.     toConsumableArray = function(e) {
  17.         if (Array.isArray(e)) {
  18.             for (var o = 0, t = Array(e.length); o < e.length; o++) t[o] = e[o];
  19.             return t
  20.         }
  21.         return Array.from(e)
  22.     },
  23.     MicroModal = function() {
  24.         var e = ["a[href]", "area[href]", 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', "select:not([disabled]):not([aria-hidden])", "textarea:not([disabled]):not([aria-hidden])", "button:not([disabled]):not([aria-hidden])", "iframe", "object", "embed", "[contenteditable]", '[tabindex]:not([tabindex^="-"])'],
  25.             o = function() {
  26.                 function o(e) {
  27.                     var t = e.targetModal,
  28.                         i = e.triggers,
  29.                         n = void 0 === i ? [] : i,
  30.                         a = e.onShow,
  31.                         r = void 0 === a ? function() {} : a,
  32.                         s = e.onClose,
  33.                         l = void 0 === s ? function() {} : s,
  34.                         c = e.openTrigger,
  35.                         d = void 0 === c ? "data-micromodal-trigger" : c,
  36.                         u = e.closeTrigger,
  37.                         h = void 0 === u ? "data-micromodal-close" : u,
  38.                         f = e.disableScroll,
  39.                         v = void 0 !== f && f,
  40.                         g = e.disableFocus,
  41.                         m = void 0 !== g && g,
  42.                         b = e.awaitCloseAnimation,
  43.                         y = void 0 !== b && b,
  44.                         k = e.debugMode,
  45.                         w = void 0 !== k && k;
  46.                     classCallCheck(this, o), this.modal = document.getElementById(t), this.config = {
  47.                         debugMode: w,
  48.                         disableScroll: v,
  49.                         openTrigger: d,
  50.                         closeTrigger: h,
  51.                         onShow: r,
  52.                         onClose: l,
  53.                         awaitCloseAnimation: y,
  54.                         disableFocus: m
  55.                     }, n.length > 0 && this.registerTriggers.apply(this, toConsumableArray(n)), this.onClick = this.onClick.bind(this), this.onKeydown = this.onKeydown.bind(this)
  56.                 }
  57.                 return createClass(o, [{
  58.                     key: "registerTriggers",
  59.                     value: function() {
  60.                         for (var e = this, o = arguments.length, t = Array(o), i = 0; i < o; i++) t[i] = arguments[i];
  61.                         t.forEach(function(o) {
  62.                             o.addEventListener("click", function() {
  63.                                 return e.showModal()
  64.                             })
  65.                         })
  66.                     }
  67.                 }, {
  68.                     key: "showModal",
  69.                     value: function() {
  70.                         this.activeElement = document.activeElement, this.modal.setAttribute("aria-hidden", "false"), this.modal.classList.add("is-open"), this.setFocusToFirstNode(), this.scrollBehaviour("disable"), this.addEventListeners(), this.config.onShow(this.modal)
  71.                     }
  72.                 }, {
  73.                     key: "closeModal",
  74.                     value: function() {
  75.                         var e = this.modal;
  76.                         this.modal.setAttribute("aria-hidden", "true"), this.removeEventListeners(), this.scrollBehaviour("enable"), this.activeElement.focus(), this.config.onClose(this.modal), this.config.awaitCloseAnimation ? this.modal.addEventListener("animationend", function o() {
  77.                             e.classList.remove("is-open"), e.removeEventListener("animationend", o, !1)
  78.                         }, !1) : e.classList.remove("is-open")
  79.                     }
  80.                 }, {
  81.                     key: "scrollBehaviour",
  82.                     value: function(e) {
  83.                         if (this.config.disableScroll) {
  84.                             var o = document.querySelector("body");
  85.                             switch (e) {
  86.                                 case "enable":
  87.                                     Object.assign(o.style, {
  88.                                         overflow: "initial",
  89.                                         height: "initial"
  90.                                     });
  91.                                     break;
  92.                                 case "disable":
  93.                                     Object.assign(o.style, {
  94.                                         overflow: "hidden",
  95.                                         height: "100vh"
  96.                                     })
  97.                             }
  98.                         }
  99.                     }
  100.                 }, {
  101.                     key: "addEventListeners",
  102.                     value: function() {
  103.                         this.modal.addEventListener("touchstart", this.onClick), this.modal.addEventListener("click", this.onClick), document.addEventListener("keydown", this.onKeydown)
  104.                     }
  105.                 }, {
  106.                     key: "removeEventListeners",
  107.                     value: function() {
  108.                         this.modal.removeEventListener("touchstart", this.onClick), this.modal.removeEventListener("click", this.onClick), document.removeEventListener("keydown", this.onKeydown)
  109.                     }
  110.                 }, {
  111.                     key: "onClick",
  112.                     value: function(e) {
  113.                         e.target.hasAttribute(this.config.closeTrigger) && (this.closeModal(), e.preventDefault())
  114.                     }
  115.                 }, {
  116.                     key: "onKeydown",
  117.                     value: function(e) {
  118.                         27 === e.keyCode && this.closeModal(e), 9 === e.keyCode && this.maintainFocus(e)
  119.                     }
  120.                 }, {
  121.                     key: "getFocusableNodes",
  122.                     value: function() {
  123.                         var o = this.modal.querySelectorAll(e);
  124.                         return Object.keys(o).map(function(e) {
  125.                             return o[e]
  126.                         })
  127.                     }
  128.                 }, {
  129.                     key: "setFocusToFirstNode",
  130.                     value: function() {
  131.                         if (!this.config.disableFocus) {
  132.                             var e = this.getFocusableNodes();
  133.                             e.length && e[0].focus()
  134.                         }
  135.                     }
  136.                 }, {
  137.                     key: "maintainFocus",
  138.                     value: function(e) {
  139.                         var o = this.getFocusableNodes();
  140.                         if (this.modal.contains(document.activeElement)) {
  141.                             var t = o.indexOf(document.activeElement);
  142.                             e.shiftKey && 0 === t && (o[o.length - 1].focus(), e.preventDefault()), e.shiftKey || t !== o.length - 1 || (o[0].focus(), e.preventDefault())
  143.                         } else o[0].focus()
  144.                     }
  145.                 }]), o
  146.             }(),
  147.             t = null,
  148.             i = function(e, o) {
  149.                 var t = [];
  150.                 return e.forEach(function(e) {
  151.                     var i = e.attributes[o].value;
  152.                     void 0 === t[i] && (t[i] = []), t[i].push(e)
  153.                 }), t
  154.             },
  155.             n = function(e) {
  156.                 if (!document.getElementById(e)) return console.warn("MicroModal v" + version + ": ❗Seems like you have missed %c'" + e + "'", "background-color: #f8f9fa;color: #50596c;font-weight: bold;", "ID somewhere in your code. Refer example below to resolve it."), console.warn("%cExample:", "background-color: #f8f9fa;color: #50596c;font-weight: bold;", '<div class="modal" id="' + e + '"></div>'), !1
  157.             },
  158.             a = function(e) {
  159.                 if (e.length <= 0) return console.warn("MicroModal v" + version + ": ❗Please specify at least one %c'micromodal-trigger'", "background-color: #f8f9fa;color: #50596c;font-weight: bold;", "data attribute."), console.warn("%cExample:", "background-color: #f8f9fa;color: #50596c;font-weight: bold;", '<a href="#" data-micromodal-trigger="my-modal"></a>'), !1
  160.             },
  161.             r = function(e, o) {
  162.                 if (a(e), !o) return !0;
  163.                 for (var t in o) n(t);
  164.                 return !0
  165.             };
  166.         return {
  167.             init: function(e) {
  168.                 var t = Object.assign({}, {
  169.                         openTrigger: "data-micromodal-trigger"
  170.                     }, e),
  171.                     n = [].concat(toConsumableArray(document.querySelectorAll("[" + t.openTrigger + "]"))),
  172.                     a = i(n, t.openTrigger);
  173.                 if (!0 !== t.debugMode || !1 !== r(n, a))
  174.                     for (var s in a) {
  175.                         var l = a[s];
  176.                         t.targetModal = s, t.triggers = [].concat(toConsumableArray(l)), new o(t)
  177.                     }
  178.             },
  179.             show: function(e, i) {
  180.                 var a = i || {};
  181.                 a.targetModal = e, !0 === a.debugMode && !1 === n(e) || (t = new o(a)).showModal()
  182.             },
  183.             close: function() {
  184.                 t.closeModal()
  185.             }
  186.         }
  187.     }();
  188. export default MicroModal;
Add Comment
Please, Sign In to add comment