modal.mjs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. import { B as j, W as _, c as q, d as S, _ as d, Z as v, t as F, u as x, a as B, Q as I, $ as L, s as m, m as w, M as U, H as ee, x as b, a0 as te, G as P, a1 as A, a2 as N, E as R, r as W, J as G, a3 as K, v as Q, k as se, Y as oe, h as T, N as ae } from "./base-component-BMXjNJAi.mjs";
  2. import { d as ne } from "./dataBsToggle-B84TS15h.mjs";
  3. import { d as ie } from "./dataBsDismiss-DdNPQYa-.mjs";
  4. import { f as re } from "./fadeClass-CLIYI_zn.mjs";
  5. import { s as i } from "./showClass-C8hdJfjQ.mjs";
  6. import { h as le, m as r } from "./popupContainer-BY58HXTH.mjs";
  7. import { m as Z, g as D, a as de, t as ce, s as ge, h as z, b as he, c as me, o as h, d as fe, r as pe, i as ue, e as ve } from "./isVisible-8OcOPiZa.mjs";
  8. import { g as J } from "./getTargetElement-px782XHx.mjs";
  9. import { i as be } from "./isDisabled-BG5MoQVt.mjs";
  10. const Te = `.${r}`, Se = `[${ne}="${r}"]`, we = `[${ie}="${r}"]`, V = `${r}-static`, ye = {
  11. backdrop: !0,
  12. keyboard: !0
  13. }, f = (s) => F(s, Z), De = (s) => new ke(s), u = w(
  14. `show.bs.${r}`
  15. ), H = w(
  16. `shown.bs.${r}`
  17. ), y = w(
  18. `hide.bs.${r}`
  19. ), M = w(
  20. `hidden.bs.${r}`
  21. ), X = (s) => {
  22. const { element: e } = s, t = he(e), { clientHeight: o, scrollHeight: a } = U(e), { clientHeight: l, scrollHeight: c } = e, n = l !== c;
  23. if (!n && t) {
  24. const p = { [ee(e) ? "paddingLeft" : "paddingRight"]: `${t}px` };
  25. b(e, p);
  26. }
  27. me(e, n || o !== a);
  28. }, Y = (s, e) => {
  29. const t = e ? R : W, { element: o } = s;
  30. t(o, Q, Me), t(S(o), se, He), e ? s._observer.observe(o) : s._observer.disconnect();
  31. }, $ = (s) => {
  32. const { triggers: e, element: t, relatedTarget: o } = s;
  33. pe(t), b(t, { paddingRight: "", display: "" }), Y(s);
  34. const a = u.relatedTarget || e.find(ue);
  35. a && G(a), M.relatedTarget = o || void 0, v(t, M), K(t);
  36. }, k = (s) => {
  37. const { element: e, relatedTarget: t } = s;
  38. G(e), Y(s, !0), H.relatedTarget = t || void 0, v(e, H), K(e);
  39. }, C = (s) => {
  40. const { element: e, hasFade: t } = s;
  41. b(e, { display: "block" }), X(s), D(e) || b(te(e), { overflow: "hidden" }), P(e, i), L(e, A), I(e, N, "true"), t ? m(e, () => k(s)) : k(s);
  42. }, O = (s) => {
  43. const { element: e, options: t, hasFade: o } = s;
  44. t.backdrop && o && d(h, i) && !D(e) ? (z(), m(h, () => $(s))) : $(s);
  45. };
  46. function Ee(s) {
  47. const e = J(this), t = e && f(e);
  48. be(this) || t && (this.tagName === "A" && s.preventDefault(), t.relatedTarget = this, t.toggle());
  49. }
  50. const He = ({ code: s, target: e }) => {
  51. const t = _(ve, S(e)), o = t && f(t);
  52. if (!o) return;
  53. const { options: a } = o;
  54. a.keyboard && s === oe && d(t, i) && (o.relatedTarget = null, o.hide());
  55. }, Me = (s) => {
  56. const { currentTarget: e } = s, t = e && f(e);
  57. if (!t || !e || T.get(e)) return;
  58. const { options: o, isStatic: a, modalDialog: l } = t, { backdrop: c } = o, { target: n } = s, g = S(e)?.getSelection()?.toString().length, p = l.contains(n), E = n && ae(n, we);
  59. a && !p ? T.set(
  60. e,
  61. () => {
  62. P(e, V), m(l, () => $e(t));
  63. },
  64. 17
  65. ) : (E || !g && !a && !p && c) && (t.relatedTarget = E || null, t.hide(), s.preventDefault());
  66. }, $e = (s) => {
  67. const { element: e, modalDialog: t } = s, o = (x(t) || 0) + 17;
  68. B(e, V), T.set(e, () => T.clear(e), o);
  69. };
  70. class ke extends j {
  71. static selector = Te;
  72. static init = De;
  73. static getInstance = f;
  74. constructor(e, t) {
  75. super(e, t);
  76. const { element: o } = this, a = _(
  77. `.${r}-dialog`,
  78. o
  79. );
  80. a && (this.modalDialog = a, this.triggers = [
  81. ...q(
  82. Se,
  83. S(o)
  84. )
  85. ].filter(
  86. (l) => J(l) === o
  87. ), this.isStatic = this.options.backdrop === "static", this.hasFade = d(o, re), this.relatedTarget = null, this._observer = new ResizeObserver(() => this.update()), this._toggleEventListeners(!0));
  88. }
  89. get name() {
  90. return Z;
  91. }
  92. get defaults() {
  93. return ye;
  94. }
  95. toggle() {
  96. d(this.element, i) ? this.hide() : this.show();
  97. }
  98. show() {
  99. const { element: e, options: t, hasFade: o, relatedTarget: a } = this, { backdrop: l } = t;
  100. let c = 0;
  101. if (d(e, i) || (u.relatedTarget = a || void 0, v(e, u), u.defaultPrevented)) return;
  102. const n = D(e);
  103. if (n && n !== e) {
  104. const g = f(n) || F(
  105. n,
  106. fe
  107. );
  108. g && g.hide();
  109. }
  110. l ? (le(h) ? ce(!0) : de(e, o, !0), c = x(h), ge(), setTimeout(() => C(this), c)) : (C(this), n && d(h, i) && z());
  111. }
  112. hide() {
  113. const { element: e, hasFade: t, relatedTarget: o } = this;
  114. d(e, i) && (y.relatedTarget = o || void 0, v(e, y), !y.defaultPrevented && (B(e, i), I(e, A, "true"), L(e, N), t ? m(e, () => O(this)) : O(this)));
  115. }
  116. update = () => {
  117. d(this.element, i) && X(this);
  118. };
  119. _toggleEventListeners = (e) => {
  120. const t = e ? R : W, { triggers: o } = this;
  121. o.length && o.forEach((a) => {
  122. t(a, Q, Ee);
  123. });
  124. };
  125. dispose() {
  126. const e = { ...this }, { modalDialog: t, hasFade: o } = e, a = () => setTimeout(() => super.dispose(), 17);
  127. this.hide(), this._toggleEventListeners(), o ? m(t, a) : a();
  128. }
  129. }
  130. export {
  131. ke as default
  132. };
  133. //# sourceMappingURL=modal.mjs.map