@base-framework/ui 1.2.35 → 1.2.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/atoms.es.js CHANGED
@@ -1,4 +1,4 @@
1
- import { c as t, f as e, h as n, i as o, k as l, l as i, m as u, n as r, t as p, w as I, J as g, L as c, M as d, N as m, O as F, P as T, Q as B, R as S, S as b, T as C, U as x, a0 as f, a7 as P, a8 as h, a9 as k, ac as M, ad as U, ae as w, ai as E, an as G, au as L, ax as N, aB as R, aC as Z, aE as D, aF as H, aG as J, aK as Q, aP as V, aQ as W, aS as v, aW as K, aX as O, aY as X, aZ as Y, b0 as j, b1 as q, b2 as y, b5 as z, b6 as A } from "./full-page-o3ZyRrhO.js";
1
+ import { c as t, f as e, h as n, i as o, k as l, l as i, m as u, n as r, t as p, w as I, J as g, L as c, M as d, N as m, O as F, P as T, Q as B, R as S, S as b, T as C, U as x, a0 as f, a7 as P, a8 as h, a9 as k, ac as M, ad as U, ae as w, ai as E, an as G, au as L, ax as N, aB as R, aC as Z, aE as D, aF as H, aG as J, aK as Q, aP as V, aQ as W, aS as v, aW as K, aX as O, aY as X, aZ as Y, b0 as j, b1 as q, b2 as y, b5 as z, b6 as A } from "./full-page-8QnW4jBp.js";
2
2
  import { S as $ } from "./skeleton-BlY3opxG.js";
3
3
  export {
4
4
  t as Badge,
@@ -1,8 +1,8 @@
1
- import { Component as c, Html as m, Dom as y, base as w, Data as T, Builder as b, DateTime as g } from "@base-framework/base";
2
- import { Li as v, Span as u, Div as r, Ul as D, Button as S, I as x, OnState as B, Time as Y } from "@base-framework/atoms";
3
- import { az as k, b8 as C, f as h, at as N, F as O } from "./full-page-o3ZyRrhO.js";
4
- import { List as F, DynamicTime as E } from "@base-framework/organisms";
5
- class X extends c {
1
+ import { Component as d, Html as m, Dom as y, base as v, Data as T, Builder as b, DateTime as g } from "@base-framework/base";
2
+ import { Li as S, Span as p, Div as a, Ul as w, Button as D, I as x, OnState as Y, Time as B } from "@base-framework/atoms";
3
+ import { az as k, b8 as C, f as c, at as E, F as L } from "./full-page-8QnW4jBp.js";
4
+ import { List as N, DynamicTime as M } from "@base-framework/organisms";
5
+ class X extends d {
6
6
  /**
7
7
  * This will declare the props for the compiler.
8
8
  *
@@ -23,45 +23,45 @@ class X extends c {
23
23
  m.removeElement(t);
24
24
  return;
25
25
  }
26
- y.addClass(t, s), w.on("animationend", t, (o) => m.removeElement(t));
26
+ y.addClass(t, s), v.on("animationend", t, (o) => m.removeElement(t));
27
27
  }
28
28
  }
29
- const L = (e) => u({ class: "ml-auto text-xs tracking-widest opacity-60" }, e), M = (e) => u({ class: "flex w-4 h-4", html: e }), P = (e) => u({ class: "flex-auto" }, e), I = (e, t) => v({
29
+ const O = (e) => p({ class: "ml-auto text-xs tracking-widest opacity-60" }, e), F = (e) => p({ class: "flex w-4 h-4", html: e }), P = (e) => p({ class: "flex-auto" }, e), I = (e, t) => S({
30
30
  class: "relative flex cursor-pointer hover:bg-muted/50 select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
31
31
  click: () => t(e)
32
32
  }, [
33
- e.icon && M(e.icon),
33
+ e.icon && F(e.icon),
34
34
  P(e.label),
35
- e.shortcut && L(e.shortcut)
36
- ]), A = (e, t) => D({ class: "grid gap-2" }, [
35
+ e.shortcut && O(e.shortcut)
36
+ ]), _ = (e, t) => w({ class: "grid gap-2" }, [
37
37
  e.map((s) => I(s, t))
38
- ]), z = (e) => r({ class: "w-full z-10" }, [
39
- r({
38
+ ]), A = (e) => a({ class: "w-full z-10" }, [
39
+ a({
40
40
  class: "max-h-60 border rounded-md overflow-y-auto p-1 grid gap-2 divide-y divide-border",
41
- for: ["groups", (t) => A(t, e)]
41
+ for: ["groups", (t) => _(t, e)]
42
42
  })
43
- ]), U = ({ label: e, icon: t, toggleDropdown: s }) => S({
43
+ ]), z = ({ label: e, icon: t, toggleDropdown: s }) => D({
44
44
  cache: "button",
45
45
  class: `inline-flex items-center justify-between rounded-md border
46
46
  px-2 py-2 text-sm font-medium hover:bg-muted
47
47
  focus:outline-none transition duration-150 ease-in-out`,
48
48
  click: s
49
49
  }, [
50
- e && u(e),
50
+ e && p(e),
51
51
  t && x({ html: t })
52
- ]), $ = ({ onSelect: e }) => r([
53
- B(
52
+ ]), U = ({ onSelect: e }) => a([
53
+ Y(
54
54
  "open",
55
55
  (t, s, o) => t ? new k({
56
56
  cache: "dropdown",
57
57
  parent: o,
58
58
  button: o.button
59
59
  }, [
60
- z(e)
60
+ A(e)
61
61
  ]) : null
62
62
  )
63
63
  ]);
64
- class Z extends c {
64
+ class Z extends d {
65
65
  /**
66
66
  * This will declare the props for the compiler.
67
67
  *
@@ -114,18 +114,18 @@ class Z extends c {
114
114
  * @returns {object}
115
115
  */
116
116
  render() {
117
- return r({ class: "relative" }, [
118
- U({
117
+ return a({ class: "relative" }, [
118
+ z({
119
119
  label: this.label,
120
120
  icon: this.icon,
121
121
  toggleDropdown: this.toggleDropdown.bind(this)
122
122
  }),
123
- $({ onSelect: this.handleSelect.bind(this) })
123
+ U({ onSelect: this.handleSelect.bind(this) })
124
124
  ]);
125
125
  }
126
126
  }
127
- const H = (e) => b.render(e, app.root);
128
- class W extends c {
127
+ const $ = (e) => b.render(e, app.root);
128
+ class W extends d {
129
129
  /**
130
130
  * This will declare the props for the compiler.
131
131
  *
@@ -190,8 +190,8 @@ class W extends c {
190
190
  */
191
191
  getButtons() {
192
192
  return [
193
- h({ variant: "outline", click: () => this.destroy() }, "Cancel"),
194
- this.hidePrimaryButton !== !0 && h({ variant: "primary", type: "submit" }, "Save")
193
+ c({ variant: "outline", click: () => this.destroy() }, "Cancel"),
194
+ this.hidePrimaryButton !== !0 && c({ variant: "primary", type: "submit" }, "Save")
195
195
  ];
196
196
  }
197
197
  /**
@@ -259,7 +259,7 @@ class W extends c {
259
259
  * @returns {void}
260
260
  */
261
261
  open() {
262
- H(this), this.showModal();
262
+ $(this), this.showModal();
263
263
  }
264
264
  /**
265
265
  * This will destroy the modal.
@@ -306,10 +306,21 @@ class G {
306
306
  modalContent: o = null,
307
307
  modalBody: i = null,
308
308
  closeThreshold: n = 150,
309
- snapThreshold: a = 50,
310
- onClose: p = null
309
+ snapThreshold: r = 50,
310
+ onClose: h = null
311
311
  } = t;
312
- this.modal = s, this.modalContent = o, this.modalBody = i, this.closeThreshold = n, this.snapThreshold = a, this.onClose = p, this.reset();
312
+ this.modal = s, this.modalContent = o, this.modalBody = i, this.closeThreshold = n, this.snapThreshold = r, this.onClose = h, this._boundTouchStart = this.handleTouchStart.bind(this), this._boundTouchMove = this.handleTouchMove.bind(this), this._boundTouchEnd = this.handleTouchEnd.bind(this), this.reset(), this.modalContent && this._bindListeners();
313
+ }
314
+ /**
315
+ * Registers touch event listeners on the modal content element.
316
+ * touchmove uses { passive: false } so preventDefault() can block scroll
317
+ * while the drawer is being dragged.
318
+ *
319
+ * @private
320
+ * @returns {void}
321
+ */
322
+ _bindListeners() {
323
+ this.modalContent.addEventListener("touchstart", this._boundTouchStart, { passive: !0 }), this.modalContent.addEventListener("touchmove", this._boundTouchMove, { passive: !1 }), this.modalContent.addEventListener("touchend", this._boundTouchEnd, { passive: !0 });
313
324
  }
314
325
  /**
315
326
  * Resets the drag state to initial values
@@ -322,7 +333,14 @@ class G {
322
333
  startY: 0,
323
334
  currentY: 0,
324
335
  startScrollTop: 0,
325
- canDrag: !1
336
+ canDrag: !1,
337
+ /**
338
+ * True if the body has scrolled during this gesture.
339
+ * Prevents drag from starting mid-gesture on iOS when rubber-band
340
+ * overscroll briefly resets scrollTop to 0 at the bottom boundary.
341
+ * @type {boolean}
342
+ */
343
+ hasScrolled: !1
326
344
  };
327
345
  }
328
346
  /**
@@ -340,10 +358,10 @@ class G {
340
358
  * @returns {void}
341
359
  */
342
360
  handleTouchStart(t) {
343
- if (!this.modalBody)
361
+ if (!this.modal)
344
362
  return;
345
- const s = t.touches[0];
346
- this.state.startY = s.clientY, this.state.currentY = s.clientY, this.state.startScrollTop = this.modalBody.scrollTop, this.state.canDrag = this.modalBody.scrollTop === 0;
363
+ const s = t.touches[0], o = this.modal.scrollTop;
364
+ this.state.startY = s.clientY, this.state.currentY = s.clientY, this.state.startScrollTop = o, this.state.hasScrolled = !1, this.state.canDrag = o <= 1;
347
365
  }
348
366
  /**
349
367
  * Handles touch move event
@@ -352,18 +370,20 @@ class G {
352
370
  * @returns {void}
353
371
  */
354
372
  handleTouchMove(t) {
355
- if (!this.modalContent || !this.modalBody)
373
+ if (!this.modal || !this.modalContent)
356
374
  return;
357
375
  const s = t.touches[0];
358
376
  this.state.currentY = s.clientY;
359
- const o = this.getDeltaY();
360
- if (!this.state.isDragging && this.state.canDrag && o > 0 && this.modalBody.scrollTop === 0 && (this.state.isDragging = !0), this.state.isDragging && o > 0) {
377
+ const o = this.getDeltaY(), i = this.modal.scrollTop;
378
+ i !== this.state.startScrollTop && (this.state.hasScrolled = !0);
379
+ const n = this.state.canDrag && !this.state.hasScrolled;
380
+ if (!this.state.isDragging && n && o > 0 && i <= 1 && (this.state.isDragging = !0), this.state.isDragging && o > 0) {
361
381
  t.preventDefault();
362
- const i = this.calculateTranslateY(o);
363
- this.modal.style.transform = `translateY(${i}px)`, this.modal.style.transition = "none";
364
- const n = this.calculateBackdropOpacity(o);
365
- this.updateBackdropOpacity(n);
366
- } else this.modalBody.scrollTop > 0 && (this.state.canDrag = !1);
382
+ const r = this.calculateTranslateY(o);
383
+ this.modal.style.transform = `translateY(${r}px)`, this.modal.style.transition = "none";
384
+ const h = this.calculateBackdropOpacity(o);
385
+ this.updateBackdropOpacity(h);
386
+ } else i > 1 && (this.state.canDrag = !1);
367
387
  }
368
388
  /**
369
389
  * Handles touch end event
@@ -447,7 +467,7 @@ class G {
447
467
  * @returns {void}
448
468
  */
449
469
  destroy() {
450
- this.reset(), this.modal = null, this.onClose = null;
470
+ this.modalContent && (this.modalContent.removeEventListener("touchstart", this._boundTouchStart), this.modalContent.removeEventListener("touchmove", this._boundTouchMove), this.modalContent.removeEventListener("touchend", this._boundTouchEnd)), this.reset(), this.modal = null, this.modalContent = null, this.onClose = null;
451
471
  }
452
472
  }
453
473
  class tt extends W {
@@ -465,8 +485,7 @@ class tt extends W {
465
485
  * @returns {object}
466
486
  */
467
487
  getContainerProps() {
468
- const t = {};
469
- return this.swipeToClose && (t.gestureHandlers = this.getGestureHandlers()), t;
488
+ return {};
470
489
  }
471
490
  /**
472
491
  * Renders the drawer with gesture handlers
@@ -486,8 +505,8 @@ class tt extends W {
486
505
  // @ts-ignore
487
506
  titleCenter: this.titleCenter,
488
507
  onSubmit: (n) => {
489
- let a = !0;
490
- this.onSubmit && (a = this.onSubmit(n)), a !== !1 && this.destroy();
508
+ let r = !0;
509
+ this.onSubmit && (r = this.onSubmit(n)), r !== !1 && this.destroy();
491
510
  },
492
511
  icon: this.icon,
493
512
  back: this.back ?? !1,
@@ -516,20 +535,6 @@ class tt extends W {
516
535
  onClose: () => this.destroy()
517
536
  }));
518
537
  }
519
- /**
520
- * Gets gesture event handlers for modal content.
521
- * Returns event props to be spread onto the modal-content element.
522
- * Handlers are bound methods that will work once gesture is initialized.
523
- *
524
- * @returns {object}
525
- */
526
- getGestureHandlers() {
527
- return this.swipeToClose ? {
528
- touchstart: (t) => this.gesture?.handleTouchStart(t),
529
- touchmove: (t) => this.gesture?.handleTouchMove(t),
530
- touchend: (t) => this.gesture?.handleTouchEnd(t)
531
- } : {};
532
- }
533
538
  /**
534
539
  * Cleans up before destroy
535
540
  *
@@ -540,20 +545,20 @@ class tt extends W {
540
545
  this.gesture && (this.gesture.destroy(), this.gesture = null), super.beforeDestroy();
541
546
  }
542
547
  }
543
- let _ = 0;
544
- class et extends c {
548
+ let H = 0;
549
+ class et extends d {
545
550
  /**
546
551
  * This will render the component.
547
552
  *
548
553
  * @returns {object}
549
554
  */
550
555
  render() {
551
- return r({ class: "notification-container pointer-events-none inset-auto bg-transparent backdrop:bg-transparent overflow-visible fixed bottom-[80px] right-0 z-50 p-5", popover: "manual" }, [
552
- new F({
556
+ return a({ class: "notification-container pointer-events-none inset-auto bg-transparent backdrop:bg-transparent overflow-visible fixed bottom-[80px] right-0 z-50 p-5", popover: "manual" }, [
557
+ new N({
553
558
  cache: "list",
554
559
  key: "id",
555
560
  role: "list",
556
- rowItem: (t) => new N(t)
561
+ rowItem: (t) => new E(t)
557
562
  })
558
563
  ]);
559
564
  }
@@ -564,7 +569,7 @@ class et extends c {
564
569
  * @returns {void}
565
570
  */
566
571
  addNotice(t = {}) {
567
- t.id = _++, t.callBack = () => this.removeNotice(t), this?.list?.append([t]), this?.panel?.hidePopover(), this?.panel?.showPopover();
572
+ t.id = H++, t.callBack = () => this.removeNotice(t), this?.list?.append([t]), this?.panel?.hidePopover(), this?.panel?.showPopover();
568
573
  }
569
574
  /**
570
575
  * This will remove a notification.
@@ -576,7 +581,7 @@ class et extends c {
576
581
  this?.list?.delete(t.id), this?.list?.isEmpty() && this?.panel?.hidePopover();
577
582
  }
578
583
  }
579
- const d = {
584
+ const u = {
580
585
  ONLINE: "online",
581
586
  OFFLINE: "offline",
582
587
  BUSY: "busy",
@@ -586,18 +591,18 @@ const d = {
586
591
  OFFLINE: "bg-gray-500",
587
592
  BUSY: "bg-red-500",
588
593
  AWAY: "bg-yellow-500"
589
- }, j = (e = "") => (e = e.toUpperCase(), l[e] || l.OFFLINE), st = (e) => r({
594
+ }, j = (e = "") => (e = e.toUpperCase(), l[e] || l.OFFLINE), st = (e) => a({
590
595
  class: `absolute bottom-0 right-0 w-3 h-3 border-2 rounded-full ${j(e)}`
591
- }), ot = ({ propName: e = "status" } = {}) => r({
596
+ }), ot = ({ propName: e = "status" } = {}) => a({
592
597
  class: "absolute bottom-0 right-0 w-3 h-3 border-2 rounded-full",
593
598
  onSet: [e, {
594
- [l.ONLINE]: d.ONLINE,
595
- [l.OFFLINE]: d.OFFLINE,
596
- [l.BUSY]: d.BUSY,
597
- [l.AWAY]: d.AWAY
599
+ [l.ONLINE]: u.ONLINE,
600
+ [l.OFFLINE]: u.OFFLINE,
601
+ [l.BUSY]: u.BUSY,
602
+ [l.AWAY]: u.AWAY
598
603
  }]
599
- }), it = ({ dateTime: e = "", remoteTimeZone: t = "America/Denver", filter: s = null }) => Y([
600
- new E({
604
+ }), it = ({ dateTime: e = "", remoteTimeZone: t = "America/Denver", filter: s = null }) => B([
605
+ new M({
601
606
  dateTime: e,
602
607
  filter: s || ((o) => {
603
608
  const i = g.getLocalTime(o, !0, !1, t);
@@ -631,7 +636,7 @@ const d = {
631
636
  iconColor: "text-muted-foreground"
632
637
  }
633
638
  };
634
- class J extends c {
639
+ class J extends d {
635
640
  /**
636
641
  * This will declare the props for the compiler.
637
642
  *
@@ -646,12 +651,12 @@ class J extends c {
646
651
  * @returns {object}
647
652
  */
648
653
  render() {
649
- const t = (p) => {
650
- p.target === this.panel && this.close();
651
- }, { borderColor: s, bgColor: o, iconColor: i } = f[this.type] || f.default, n = `${this.getMainClass()} ${o} ${s}`, a = this.title || "Dialog Title";
652
- return O({
654
+ const t = (h) => {
655
+ h.target === this.panel && this.close();
656
+ }, { borderColor: s, bgColor: o, iconColor: i } = f[this.type] || f.default, n = `${this.getMainClass()} ${o} ${s}`, r = this.title || "Dialog Title";
657
+ return L({
653
658
  class: n,
654
- title: a,
659
+ title: r,
655
660
  click: t,
656
661
  icon: this.icon,
657
662
  iconColor: i,
@@ -666,7 +671,7 @@ class J extends c {
666
671
  */
667
672
  getButtons() {
668
673
  return this.hideFooter ? null : this.buttons ? this.buttons : [
669
- h({ variant: "outline", click: () => this.close() }, "Close")
674
+ c({ variant: "outline", click: () => this.close() }, "Close")
670
675
  ];
671
676
  }
672
677
  /**
@@ -721,8 +726,8 @@ class nt extends J {
721
726
  getButtons() {
722
727
  const t = this.confirmTextLabel || "Confirm";
723
728
  return [
724
- h({ variant: "outline", click: () => this.close() }, "Cancel"),
725
- h({ variant: "primary", click: () => this.confirm() }, t)
729
+ c({ variant: "outline", click: () => this.close() }, "Cancel"),
730
+ c({ variant: "primary", click: () => this.confirm() }, t)
726
731
  ];
727
732
  }
728
733
  /**
@@ -739,11 +744,11 @@ export {
739
744
  X as D,
740
745
  W as M,
741
746
  et as N,
742
- d as S,
747
+ u as S,
743
748
  it as T,
744
749
  J as a,
745
750
  tt as b,
746
- z as c,
751
+ A as c,
747
752
  I as d,
748
753
  Z as e,
749
754
  l as f,
@@ -1325,7 +1325,7 @@ const gs = r((e, t) => o({ ...e, class: "flex flex-auto flex-col gap-y-2" }, t))
1325
1325
  return o({
1326
1326
  popover: "manual",
1327
1327
  // @ts-ignore
1328
- class: `modal ${s ? "" : "m-auto top-0 right-0 bottom-0 left-0"} ${s ? "" : "h-full max-h-screen"} fixed z-20 grid w-full gap-2 lg:border bg-background text-foreground shadow-xl wrap-break-words p-0 overflow-y-auto ${e.class}`,
1328
+ class: `modal ${s ? "" : "m-auto top-0 right-0 bottom-0 left-0"} ${s ? "" : "h-full max-h-screen"} fixed z-20 grid w-full gap-2 lg:border bg-background text-foreground shadow-xl wrap-break-words p-0 overflow-y-auto overscroll-y-contain ${e.class}`,
1329
1329
  click: (l, i) => {
1330
1330
  l.target === i.panel && (l.preventDefault(), l.stopPropagation(), i.state.open = !1);
1331
1331
  }
@@ -1334,9 +1334,7 @@ const gs = r((e, t) => o({ ...e, class: "flex flex-auto flex-col gap-y-2" }, t))
1334
1334
  class: "modal-content relative bg-background z-1 flex flex-auto flex-col gap-y-4 min-w-0",
1335
1335
  // @ts-ignore
1336
1336
  submit: (l, i) => e.onSubmit && e.onSubmit(i),
1337
- cache: "modalContent",
1338
- // @ts-ignore
1339
- ...e.gestureHandlers
1337
+ cache: "modalContent"
1340
1338
  }, [
1341
1339
  vs(e),
1342
1340
  o({ class: "modal-body flex grow flex-col py-0 px-6 z-0", cache: "modalBody" }, t),
package/dist/index.es.js CHANGED
@@ -1,10 +1,10 @@
1
- import { A as s, a as o, B as t, b as n, c as r, d as l, e as i, f as u, C as p, g as m, h as d, i as g, j as c, k as T, l as b, m as I, n as C, o as S, p as F, q as D, r as B, D as P, s as k, t as M, u as v, v as N, w as f, x, y as h, z as y, E as U, F as W, G as w, H as L, I as H, J as A, K as G, L as R, M as E, N as O, O as V, P as Z, Q as j, R as J, S as _, T as q, U as z, V as K, W as Q, X, Y, Z as $, _ as aa, $ as ea, a0 as sa, a1 as oa, a2 as ta, a3 as na, a4 as ra, a5 as la, a6 as ia, a7 as ua, a8 as pa, a9 as ma, aa as da, ab as ga, ac as ca, ad as Ta, ae as ba, af as Ia, ag as Ca, ah as Sa, ai as Fa, aj as Da, ak as Ba, al as Pa, am as ka, an as Ma, ao as va, ap as Na, aq as fa, ar as xa, as as ha, at as ya, au as Ua, av as Wa, aw as wa, ax as La, ay as Ha, az as Aa, aA as Ga, aB as Ra, aC as Ea, aD as Oa, aE as Va, aF as Za, aG as ja, aH as Ja, aI as _a, aJ as qa, aK as za, aL as Ka, aM as Qa, aN as Xa, aO as Ya, aP as $a, aQ as ae, aR as ee, aS as se, aT as oe, aU as te, aV as ne, aW as re, aX as le, aY as ie, aZ as ue, a_ as pe, a$ as me, b0 as de, b1 as ge, b2 as ce, b3 as Te, b4 as be, b5 as Ie, b6 as Ce, b7 as Se } from "./full-page-o3ZyRrhO.js";
1
+ import { A as s, a as o, B as t, b as n, c as r, d as l, e as i, f as u, C as p, g as m, h as d, i as g, j as c, k as T, l as b, m as I, n as C, o as S, p as F, q as D, r as B, D as P, s as k, t as M, u as v, v as N, w as f, x, y as h, z as y, E as U, F as W, G as w, H as L, I as H, J as A, K as G, L as R, M as E, N as O, O as V, P as Z, Q as j, R as J, S as _, T as q, U as z, V as K, W as Q, X, Y, Z as $, _ as aa, $ as ea, a0 as sa, a1 as oa, a2 as ta, a3 as na, a4 as ra, a5 as la, a6 as ia, a7 as ua, a8 as pa, a9 as ma, aa as da, ab as ga, ac as ca, ad as Ta, ae as ba, af as Ia, ag as Ca, ah as Sa, ai as Fa, aj as Da, ak as Ba, al as Pa, am as ka, an as Ma, ao as va, ap as Na, aq as fa, ar as xa, as as ha, at as ya, au as Ua, av as Wa, aw as wa, ax as La, ay as Ha, az as Aa, aA as Ga, aB as Ra, aC as Ea, aD as Oa, aE as Va, aF as Za, aG as ja, aH as Ja, aI as _a, aJ as qa, aK as za, aL as Ka, aM as Qa, aN as Xa, aO as Ya, aP as $a, aQ as ae, aR as ee, aS as se, aT as oe, aU as te, aV as ne, aW as re, aX as le, aY as ie, aZ as ue, a_ as pe, a$ as me, b0 as de, b1 as ge, b2 as ce, b3 as Te, b4 as be, b5 as Ie, b6 as Ce, b7 as Se } from "./full-page-8QnW4jBp.js";
2
2
  import { S as De } from "./skeleton-BlY3opxG.js";
3
3
  import { Icons as Pe, MaterialSymbols as ke } from "./icons.es.js";
4
- import { C as ve, D as Ne, a as fe, b as xe, c as he, d as ye, e as Ue, M as We, N as we, S as Le, f as He, g as Ae, h as Ge, T as Re, i as Ee } from "./confirmation-CGMZ-lmm.js";
5
- import { B as Ve, I as Ze, N as je, P as Je, S as _e, T as qe, a as ze, b as Ke, U as Qe, c as Xe, d as Ye, e as $e, W as as, f as es, g as ss, h as os, i as ts, j as ns, k as rs, l as ls, m as is, n as us } from "./signature-panel-CgtSgfCe.js";
6
- import { S as ms } from "./sidebar-menu-mYgytpVA.js";
7
- import { B as gs, C as cs, F as Ts, a as bs, S as Is } from "./sidebar-menu-page-DXi2h9YO.js";
4
+ import { C as ve, D as Ne, a as fe, b as xe, c as he, d as ye, e as Ue, M as We, N as we, S as Le, f as He, g as Ae, h as Ge, T as Re, i as Ee } from "./confirmation-C4LCqeSd.js";
5
+ import { B as Ve, I as Ze, N as je, P as Je, S as _e, T as qe, a as ze, b as Ke, U as Qe, c as Xe, d as Ye, e as $e, W as as, f as es, g as ss, h as os, i as ts, j as ns, k as rs, l as ls, m as is, n as us } from "./signature-panel-ij4f7Q0J.js";
6
+ import { S as ms } from "./sidebar-menu-Dge07Ioy.js";
7
+ import { B as gs, C as cs, F as Ts, a as bs, S as Is } from "./sidebar-menu-page-B0Mx6PQz.js";
8
8
  import { A as Ss, B as Fs, F as Ds, M as Bs, T as Ps, a as ks } from "./bside-template-C7AQgQ6H.js";
9
9
  import { F as vs, c as Ns } from "./format-DE4rFWuD.js";
10
10
  import { I as xs } from "./image-scaler-1G-JzJVG.js";
@@ -1,5 +1,5 @@
1
- import { A as s, a as t, e, o as r, p as i, q as n, r as m, u as l, v as d, z as C, E as p, F as D, H as S, K as u, V as c, W as g, X as F, Y as T, Z as f, _ as b, $ as w, a1 as A, a2 as I, a3 as M, aa as P, af as y, aj as B, at as R, ay as U, az as k, aM as v, aR as x, aT as E, aV as L, b4 as N } from "./full-page-o3ZyRrhO.js";
2
- import { C as z, D as V, a as _, b as j, c as q, d as G, e as H, M as K, N as O, S as W, f as X, g as Y, h as Z, T as $, i as J } from "./confirmation-CGMZ-lmm.js";
1
+ import { A as s, a as t, e, o as r, p as i, q as n, r as m, u as l, v as d, z as C, E as p, F as D, H as S, K as u, V as c, W as g, X as F, Y as T, Z as f, _ as b, $ as w, a1 as A, a2 as I, a3 as M, aa as P, af as y, aj as B, at as R, ay as U, az as k, aM as v, aR as x, aT as E, aV as L, b4 as N } from "./full-page-8QnW4jBp.js";
2
+ import { C as z, D as V, a as _, b as j, c as q, d as G, e as H, M as K, N as O, S as W, f as X, g as Y, h as Z, T as $, i as J } from "./confirmation-C4LCqeSd.js";
3
3
  export {
4
4
  s as Alert,
5
5
  t as Avatar,
@@ -1,6 +1,6 @@
1
- import { B as s, b as n, C as t, g as r, j as o, D as l, s as i, x as d, y as b, G as u, I as g, a4 as p, a6 as v, ab as D, ag as N, ak as T, al as k, am as C, ao as c, ap as m, aq as y, ar as B, as as S, av as h, aA as M, aD as W, aH as I, aI as U, aJ as H, aL as x, aN as P, aO as L, aU as f, a_ as G, a$ as O, b3 as j, b7 as F } from "./full-page-o3ZyRrhO.js";
2
- import { B as w, I as A, N as J, P as R, S as _, T as $, a as z, b as E, U as K, c as Q, d as V, e as X, W as Y, f as Z, g as aa, h as ea, i as sa, j as na, k as ta, l as ra, m as oa, n as la } from "./signature-panel-CgtSgfCe.js";
3
- import { S as da } from "./sidebar-menu-mYgytpVA.js";
1
+ import { B as s, b as n, C as t, g as r, j as o, D as l, s as i, x as d, y as b, G as u, I as g, a4 as p, a6 as v, ab as D, ag as N, ak as T, al as k, am as C, ao as c, ap as m, aq as y, ar as B, as as S, av as h, aA as M, aD as W, aH as I, aI as U, aJ as H, aL as x, aN as P, aO as L, aU as f, a_ as G, a$ as O, b3 as j, b7 as F } from "./full-page-8QnW4jBp.js";
2
+ import { B as w, I as A, N as J, P as R, S as _, T as $, a as z, b as E, U as K, c as Q, d as V, e as X, W as Y, f as Z, g as aa, h as ea, i as sa, j as na, k as ta, l as ra, m as oa, n as la } from "./signature-panel-ij4f7Q0J.js";
3
+ import { S as da } from "./sidebar-menu-Dge07Ioy.js";
4
4
  export {
5
5
  s as BackButton,
6
6
  n as Backdrop,
package/dist/pages.es.js CHANGED
@@ -1,5 +1,5 @@
1
- import { d as s, a5 as g, ah as n, aw as P } from "./full-page-o3ZyRrhO.js";
2
- import { B as r, C as o, F as i, a as t, S as u } from "./sidebar-menu-page-DXi2h9YO.js";
1
+ import { d as s, a5 as g, ah as n, aw as P } from "./full-page-8QnW4jBp.js";
2
+ import { B as r, C as o, F as i, a as t, S as u } from "./sidebar-menu-page-B0Mx6PQz.js";
3
3
  export {
4
4
  s as BasicPage,
5
5
  r as BlankPage,
@@ -1,5 +1,5 @@
1
1
  import { Div as r, Header as x, H1 as c } from "@base-framework/atoms";
2
- import { ab as n } from "./full-page-o3ZyRrhO.js";
2
+ import { ab as n } from "./full-page-8QnW4jBp.js";
3
3
  const b = ({ title: l, options: a, class: s = "", mobileBorder: t = !1, sticky: e = !1, topNav: o = null, bottomNav: p = null }) => r({ class: `pb-12 p-4 pt-0 lg:p-6 lg:border-r w-full lg:max-w-[300px] flex-auto flex-col ${s}` }, [
4
4
  o,
5
5
  l && x({ class: "pb-4 md:pb-2 px-6 flex" }, [
@@ -1,7 +1,7 @@
1
1
  import { Div as s } from "@base-framework/atoms";
2
- import { d as a, ah as i, aw as r, al as n } from "./full-page-o3ZyRrhO.js";
2
+ import { d as a, ah as i, aw as r, al as n } from "./full-page-8QnW4jBp.js";
3
3
  import { F as l, A as d } from "./bside-template-C7AQgQ6H.js";
4
- import { S as c } from "./sidebar-menu-mYgytpVA.js";
4
+ import { S as c } from "./sidebar-menu-Dge07Ioy.js";
5
5
  class f extends a {
6
6
  /**
7
7
  * This will render the page.
@@ -1,6 +1,6 @@
1
1
  import { Div as r, Button as v, On as j, Span as T, Nav as f, Ul as p, Section as y, Li as w, Canvas as z } from "@base-framework/atoms";
2
2
  import { Component as k, Data as I, DateTime as U, router as b, NavLink as S, base as L, Dom as B } from "@base-framework/base";
3
- import { f as C, av as A, b0 as u, a7 as F } from "./full-page-o3ZyRrhO.js";
3
+ import { f as C, av as A, b0 as u, a7 as F } from "./full-page-8QnW4jBp.js";
4
4
  import { Icons as D } from "./icons.es.js";
5
5
  import { IntervalTimer as O } from "@base-framework/organisms";
6
6
  class Lt extends k {
@@ -39,6 +39,18 @@ export class DrawerGesture {
39
39
  closeThreshold: number;
40
40
  snapThreshold: number;
41
41
  onClose: Function;
42
+ _boundTouchStart: any;
43
+ _boundTouchMove: any;
44
+ _boundTouchEnd: any;
45
+ /**
46
+ * Registers touch event listeners on the modal content element.
47
+ * touchmove uses { passive: false } so preventDefault() can block scroll
48
+ * while the drawer is being dragged.
49
+ *
50
+ * @private
51
+ * @returns {void}
52
+ */
53
+ private _bindListeners;
42
54
  /**
43
55
  * Resets the drag state to initial values
44
56
  *
@@ -51,6 +63,13 @@ export class DrawerGesture {
51
63
  currentY: number;
52
64
  startScrollTop: number;
53
65
  canDrag: boolean;
66
+ /**
67
+ * True if the body has scrolled during this gesture.
68
+ * Prevents drag from starting mid-gesture on iOS when rubber-band
69
+ * overscroll briefly resets scrollTop to 0 at the bottom boundary.
70
+ * @type {boolean}
71
+ */
72
+ hasScrolled: boolean;
54
73
  };
55
74
  /**
56
75
  * Checks if the viewport is mobile size
@@ -55,13 +55,5 @@ export class Drawer extends Modal {
55
55
  * @returns {object}
56
56
  */
57
57
  getContainerProps(): object;
58
- /**
59
- * Gets gesture event handlers for modal content.
60
- * Returns event props to be spread onto the modal-content element.
61
- * Handlers are bound methods that will work once gesture is initialized.
62
- *
63
- * @returns {object}
64
- */
65
- getGestureHandlers(): object;
66
58
  }
67
59
  import { Modal } from '../modal.js';
@@ -14,7 +14,6 @@
14
14
  * @param {Array} [props.buttons=[]] - Footer buttons
15
15
  * @param {boolean} [props.hideFooter=false] - Hide footer section
16
16
  * @param {Function} [props.onSubmit] - Form submission handler
17
- * @param {object} [props.gestureHandlers] - Touch gesture handlers for drawer
18
17
  * @param {boolean} [props.titleCenter=false] - Center title and description vertically in header
19
18
  * @param {Array} children - Modal body content
20
19
  * @returns {object}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@base-framework/ui",
3
- "version": "1.2.35",
3
+ "version": "1.2.37",
4
4
  "description": "This is a UI package that adds components and atoms that use Tailwind CSS and a theme based on Shadcn.",
5
5
  "main": "./dist/index.es.js",
6
6
  "scripts": {