design-zystem 1.0.361 → 1.0.363

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.
@@ -771,9 +771,10 @@ interface DrawerProps {
771
771
  size?: string;
772
772
  /**
773
773
  * `false` : le panneau n'inerte plus la page et ne capture plus le focus — à
774
- * utiliser dès qu'il ouvre lui-même une modale (sinon celle-ci, montée hors
775
- * de son DOM, devient inerte et injoignable au clavier). Le clic à côté le
776
- * referme quand même, sauf s'il tombe dans une modale ouverte par-dessus.
774
+ * utiliser dès qu'il ouvre lui-même une modale ou une liste déroulante en
775
+ * portal (sinon celle-ci, montée hors de son DOM, devient inerte). Le clic à
776
+ * côté le referme quand même, sauf s'il tombe dans une modale ou une liste
777
+ * ouverte par-dessus.
777
778
  */
778
779
  modal?: boolean;
779
780
  className?: string;
@@ -771,9 +771,10 @@ interface DrawerProps {
771
771
  size?: string;
772
772
  /**
773
773
  * `false` : le panneau n'inerte plus la page et ne capture plus le focus — à
774
- * utiliser dès qu'il ouvre lui-même une modale (sinon celle-ci, montée hors
775
- * de son DOM, devient inerte et injoignable au clavier). Le clic à côté le
776
- * referme quand même, sauf s'il tombe dans une modale ouverte par-dessus.
774
+ * utiliser dès qu'il ouvre lui-même une modale ou une liste déroulante en
775
+ * portal (sinon celle-ci, montée hors de son DOM, devient inerte). Le clic à
776
+ * côté le referme quand même, sauf s'il tombe dans une modale ou une liste
777
+ * ouverte par-dessus.
777
778
  */
778
779
  modal?: boolean;
779
780
  className?: string;
package/dist/ui/index.js CHANGED
@@ -3524,6 +3524,7 @@ var CollapsibleContent = (_a) => {
3524
3524
  var import_react25 = require("react");
3525
3525
  var import_vaul = require("vaul");
3526
3526
  var import_jsx_runtime45 = require("react/jsx-runtime");
3527
+ var KEEP_OPEN_SELECTOR = '[role="dialog"], [role="listbox"], [data-drawer-keep-open]';
3527
3528
  var CONTENT_POSITION = {
3528
3529
  top: "inset-x-4 top-4 rounded-2xl",
3529
3530
  bottom: "inset-x-4 bottom-4 rounded-2xl",
@@ -3548,12 +3549,19 @@ var Drawer = ({
3548
3549
  const target = event.target;
3549
3550
  if (!target) return;
3550
3551
  if ((_a = contentRef.current) == null ? void 0 : _a.contains(target)) return;
3551
- if (target.closest('[role="dialog"], [data-drawer-keep-open]')) return;
3552
+ if (target.closest(KEEP_OPEN_SELECTOR)) return;
3552
3553
  onClose == null ? void 0 : onClose();
3553
3554
  };
3554
3555
  document.addEventListener("pointerdown", handlePointerDown);
3555
3556
  return () => document.removeEventListener("pointerdown", handlePointerDown);
3556
3557
  }, [modal, open, onClose]);
3558
+ (0, import_react25.useEffect)(() => {
3559
+ if (modal || !open) return;
3560
+ const frame = requestAnimationFrame(() => {
3561
+ document.body.style.pointerEvents = "auto";
3562
+ });
3563
+ return () => cancelAnimationFrame(frame);
3564
+ }, [modal, open]);
3557
3565
  return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
3558
3566
  import_vaul.Drawer.Root,
3559
3567
  {
@@ -3569,8 +3577,7 @@ var Drawer = ({
3569
3577
  ref: contentRef,
3570
3578
  onPointerDownOutside: (event) => {
3571
3579
  const target = event.target;
3572
- if (target == null ? void 0 : target.closest('[role="dialog"], [data-drawer-keep-open]'))
3573
- event.preventDefault();
3580
+ if (target == null ? void 0 : target.closest(KEEP_OPEN_SELECTOR)) event.preventDefault();
3574
3581
  },
3575
3582
  className: cn(
3576
3583
  "fixed z-50 flex flex-col gap-4 bg-white p-6 outline-none",
package/dist/ui/index.mjs CHANGED
@@ -3354,6 +3354,7 @@ var CollapsibleContent = (_a) => {
3354
3354
  import { useEffect as useEffect5, useRef as useRef6 } from "react";
3355
3355
  import { Drawer as VaulDrawer } from "vaul";
3356
3356
  import { jsx as jsx45, jsxs as jsxs22 } from "react/jsx-runtime";
3357
+ var KEEP_OPEN_SELECTOR = '[role="dialog"], [role="listbox"], [data-drawer-keep-open]';
3357
3358
  var CONTENT_POSITION = {
3358
3359
  top: "inset-x-4 top-4 rounded-2xl",
3359
3360
  bottom: "inset-x-4 bottom-4 rounded-2xl",
@@ -3378,12 +3379,19 @@ var Drawer = ({
3378
3379
  const target = event.target;
3379
3380
  if (!target) return;
3380
3381
  if ((_a = contentRef.current) == null ? void 0 : _a.contains(target)) return;
3381
- if (target.closest('[role="dialog"], [data-drawer-keep-open]')) return;
3382
+ if (target.closest(KEEP_OPEN_SELECTOR)) return;
3382
3383
  onClose == null ? void 0 : onClose();
3383
3384
  };
3384
3385
  document.addEventListener("pointerdown", handlePointerDown);
3385
3386
  return () => document.removeEventListener("pointerdown", handlePointerDown);
3386
3387
  }, [modal, open, onClose]);
3388
+ useEffect5(() => {
3389
+ if (modal || !open) return;
3390
+ const frame = requestAnimationFrame(() => {
3391
+ document.body.style.pointerEvents = "auto";
3392
+ });
3393
+ return () => cancelAnimationFrame(frame);
3394
+ }, [modal, open]);
3387
3395
  return /* @__PURE__ */ jsx45(
3388
3396
  VaulDrawer.Root,
3389
3397
  {
@@ -3399,8 +3407,7 @@ var Drawer = ({
3399
3407
  ref: contentRef,
3400
3408
  onPointerDownOutside: (event) => {
3401
3409
  const target = event.target;
3402
- if (target == null ? void 0 : target.closest('[role="dialog"], [data-drawer-keep-open]'))
3403
- event.preventDefault();
3410
+ if (target == null ? void 0 : target.closest(KEEP_OPEN_SELECTOR)) event.preventDefault();
3404
3411
  },
3405
3412
  className: cn(
3406
3413
  "fixed z-50 flex flex-col gap-4 bg-white p-6 outline-none",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "design-zystem",
3
- "version": "1.0.361",
3
+ "version": "1.0.363",
4
4
  "description": "A React design system of importable components",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",