@simplybusiness/mobius 10.4.1 → 10.4.3

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.
Files changed (73) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/components/Popover/Arrow.js +43 -0
  3. package/dist/cjs/components/Popover/Arrow.js.map +7 -0
  4. package/dist/cjs/components/Popover/Popover.js +258 -83
  5. package/dist/cjs/components/Popover/Popover.js.map +4 -4
  6. package/dist/cjs/components/Popover/index.js +258 -83
  7. package/dist/cjs/components/Popover/index.js.map +4 -4
  8. package/dist/cjs/components/Popover/useAutoUpdate.js +53 -0
  9. package/dist/cjs/components/Popover/useAutoUpdate.js.map +7 -0
  10. package/dist/cjs/components/Popover/useFloatingPosition.js +128 -0
  11. package/dist/cjs/components/Popover/useFloatingPosition.js.map +7 -0
  12. package/dist/cjs/components/Popover/useOutsidePress.js +46 -0
  13. package/dist/cjs/components/Popover/useOutsidePress.js.map +7 -0
  14. package/dist/cjs/components/index.js +422 -245
  15. package/dist/cjs/components/index.js.map +4 -4
  16. package/dist/cjs/index.js +422 -245
  17. package/dist/cjs/index.js.map +4 -4
  18. package/dist/cjs/meta.json +316 -32
  19. package/dist/esm/chunk-26KZYRE6.js +108 -0
  20. package/dist/esm/chunk-26KZYRE6.js.map +7 -0
  21. package/dist/esm/chunk-CAL44W47.js +23 -0
  22. package/dist/esm/chunk-CAL44W47.js.map +7 -0
  23. package/dist/esm/{chunk-PEEQNAIN.js → chunk-DMYDWKKA.js} +4 -4
  24. package/dist/esm/chunk-K3ECDAUR.js +33 -0
  25. package/dist/esm/chunk-K3ECDAUR.js.map +7 -0
  26. package/dist/esm/{chunk-GJBH37DH.js → chunk-KFHPI67N.js} +4 -4
  27. package/dist/esm/{chunk-F5ELD54X.js → chunk-LGZWQZLS.js} +2 -2
  28. package/dist/esm/{chunk-OAG5T7NC.js → chunk-NEFRXIFY.js} +4 -4
  29. package/dist/esm/chunk-VZ3IWSK6.js +158 -0
  30. package/dist/esm/chunk-VZ3IWSK6.js.map +7 -0
  31. package/dist/esm/chunk-WYJP7HVL.js +26 -0
  32. package/dist/esm/chunk-WYJP7HVL.js.map +7 -0
  33. package/dist/esm/components/AddressLookup/AddressLookup.js +4 -4
  34. package/dist/esm/components/AddressLookup/index.js +6 -6
  35. package/dist/esm/components/Breadcrumbs/index.js +3 -3
  36. package/dist/esm/components/Checkbox/index.js +1 -1
  37. package/dist/esm/components/Combobox/Combobox.js +3 -3
  38. package/dist/esm/components/Combobox/index.js +3 -3
  39. package/dist/esm/components/Drawer/index.js +3 -3
  40. package/dist/esm/components/Modal/index.js +3 -3
  41. package/dist/esm/components/Popover/Arrow.js +8 -0
  42. package/dist/esm/components/Popover/Arrow.js.map +7 -0
  43. package/dist/esm/components/Popover/Popover.js +5 -1
  44. package/dist/esm/components/Popover/index.js +5 -1
  45. package/dist/esm/components/Popover/useAutoUpdate.js +8 -0
  46. package/dist/esm/components/Popover/useAutoUpdate.js.map +7 -0
  47. package/dist/esm/components/Popover/useFloatingPosition.js +8 -0
  48. package/dist/esm/components/Popover/useFloatingPosition.js.map +7 -0
  49. package/dist/esm/components/Popover/useOutsidePress.js +8 -0
  50. package/dist/esm/components/Popover/useOutsidePress.js.map +7 -0
  51. package/dist/esm/components/index.js +77 -73
  52. package/dist/esm/index.js +77 -73
  53. package/dist/esm/meta.json +3737 -3401
  54. package/dist/tsconfig.build.tsbuildinfo +1 -1
  55. package/dist/types/components/Popover/Arrow.d.ts +9 -0
  56. package/dist/types/components/Popover/useAutoUpdate.d.ts +9 -0
  57. package/dist/types/components/Popover/useFloatingPosition.d.ts +17 -0
  58. package/dist/types/components/Popover/useOutsidePress.d.ts +9 -0
  59. package/package.json +2 -3
  60. package/src/components/Popover/Arrow.tsx +25 -0
  61. package/src/components/Popover/Popover.characterization.test.tsx +269 -0
  62. package/src/components/Popover/Popover.stories.tsx +40 -3
  63. package/src/components/Popover/Popover.test.tsx +6 -2
  64. package/src/components/Popover/Popover.tsx +87 -81
  65. package/src/components/Popover/useAutoUpdate.ts +43 -0
  66. package/src/components/Popover/useFloatingPosition.ts +177 -0
  67. package/src/components/Popover/useOutsidePress.ts +31 -0
  68. package/dist/esm/chunk-O5YEU5TG.js +0 -155
  69. package/dist/esm/chunk-O5YEU5TG.js.map +0 -7
  70. /package/dist/esm/{chunk-PEEQNAIN.js.map → chunk-DMYDWKKA.js.map} +0 -0
  71. /package/dist/esm/{chunk-GJBH37DH.js.map → chunk-KFHPI67N.js.map} +0 -0
  72. /package/dist/esm/{chunk-F5ELD54X.js.map → chunk-LGZWQZLS.js.map} +0 -0
  73. /package/dist/esm/{chunk-OAG5T7NC.js.map → chunk-NEFRXIFY.js.map} +0 -0
@@ -35,10 +35,10 @@ __export(Popover_exports, {
35
35
  module.exports = __toCommonJS(Popover_exports);
36
36
 
37
37
  // src/components/Popover/Popover.tsx
38
- var import_react2 = require("@floating-ui/react");
39
38
  var import_icons3 = require("@simplybusiness/icons");
40
39
  var import_dedupe3 = __toESM(require("classnames/dedupe"));
41
- var import_react3 = require("react");
40
+ var import_react5 = require("react");
41
+ var import_react_dom = require("react-dom");
42
42
  var import_mobius_hooks = require("@simplybusiness/mobius-hooks");
43
43
 
44
44
  // src/components/Button/Button.tsx
@@ -243,54 +243,224 @@ var Button = ({ ref, ...props }) => {
243
243
  };
244
244
  Button.displayName = "Button";
245
245
 
246
+ // src/components/Popover/Arrow.tsx
247
+ var import_jsx_runtime6 = require("react/jsx-runtime");
248
+ var Arrow = ({ ref, width = 20, className, style }) => {
249
+ const height = width / 2;
250
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
251
+ "svg",
252
+ {
253
+ ref,
254
+ className,
255
+ "aria-hidden": "true",
256
+ width,
257
+ height,
258
+ viewBox: `0 0 ${width} ${height}`,
259
+ style,
260
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: `M0,0 H${width} L${width / 2},${height} Z` })
261
+ }
262
+ );
263
+ };
264
+
265
+ // src/components/Popover/useAutoUpdate.ts
266
+ var import_react2 = require("react");
267
+ var useAutoUpdate = ({
268
+ referenceRef,
269
+ floatingRef,
270
+ onUpdate,
271
+ enabled
272
+ }) => {
273
+ (0, import_react2.useEffect)(() => {
274
+ if (!enabled) return;
275
+ const reference = referenceRef.current;
276
+ const floating = floatingRef.current;
277
+ const scrollOpts = {
278
+ capture: true,
279
+ passive: true
280
+ };
281
+ window.addEventListener("scroll", onUpdate, scrollOpts);
282
+ window.addEventListener("resize", onUpdate, { passive: true });
283
+ const observer = typeof ResizeObserver === "function" ? new ResizeObserver(onUpdate) : null;
284
+ if (observer && reference) observer.observe(reference);
285
+ if (observer && floating) observer.observe(floating);
286
+ return () => {
287
+ window.removeEventListener("scroll", onUpdate, scrollOpts);
288
+ window.removeEventListener("resize", onUpdate);
289
+ observer?.disconnect();
290
+ };
291
+ }, [enabled, onUpdate, referenceRef, floatingRef]);
292
+ };
293
+
294
+ // src/components/Popover/useFloatingPosition.ts
295
+ var import_react3 = require("react");
296
+ var ABSOLUTE_FLOATING_STYLES = {
297
+ position: "absolute",
298
+ top: 0,
299
+ left: 0,
300
+ width: "max-content"
301
+ };
302
+ var FIXED_FLOATING_STYLES = {
303
+ position: "fixed",
304
+ top: 0,
305
+ left: 0,
306
+ width: "max-content"
307
+ };
308
+ var INITIAL_ARROW_STYLES = {
309
+ position: "absolute"
310
+ };
311
+ var VIEWPORT_PADDING = 0;
312
+ var createsFixedContainingBlock = (el) => {
313
+ const style = window.getComputedStyle(el);
314
+ return style.transform !== "none" || style.filter !== "none" || style.backdropFilter !== "none" || style.perspective !== "none" || /\b(transform|filter|perspective)\b/.test(style.willChange);
315
+ };
316
+ var useFloatingPosition = ({
317
+ referenceRef,
318
+ floatingRef,
319
+ arrowRef,
320
+ isOpen,
321
+ offsetPx,
322
+ arrowWidth,
323
+ useFixedStrategy
324
+ }) => {
325
+ const update = (0, import_react3.useCallback)(() => {
326
+ const reference = referenceRef.current;
327
+ const floating = floatingRef.current;
328
+ if (!reference || !floating) return;
329
+ const refRect = reference.getBoundingClientRect();
330
+ const floatingWidth = floating.offsetWidth;
331
+ const floatingHeight = floating.offsetHeight;
332
+ const scrollX = useFixedStrategy ? 0 : window.scrollX;
333
+ const scrollY = useFixedStrategy ? 0 : window.scrollY;
334
+ const parent = floating.parentElement;
335
+ const parentIsCb = useFixedStrategy && !!parent && createsFixedContainingBlock(parent);
336
+ const boundsRect = parentIsCb ? parent.getBoundingClientRect() : {
337
+ left: 0,
338
+ top: 0,
339
+ right: window.innerWidth,
340
+ bottom: window.innerHeight
341
+ };
342
+ const bottomTopViewport = refRect.bottom + offsetPx;
343
+ const topTopViewport = refRect.top - floatingHeight - offsetPx;
344
+ const overflowsBottom = bottomTopViewport + floatingHeight > boundsRect.bottom;
345
+ const fitsTop = topTopViewport >= boundsRect.top;
346
+ const nextPlacement = overflowsBottom && fitsTop ? "top" : "bottom";
347
+ const topViewport = nextPlacement === "bottom" ? bottomTopViewport : topTopViewport;
348
+ const rawLeftViewport = refRect.left + refRect.width / 2 - floatingWidth / 2;
349
+ const minLeftViewport = boundsRect.left + VIEWPORT_PADDING;
350
+ const maxLeftViewport = Math.max(
351
+ minLeftViewport,
352
+ boundsRect.right - floatingWidth - VIEWPORT_PADDING
353
+ );
354
+ const leftViewport = Math.min(
355
+ Math.max(minLeftViewport, rawLeftViewport),
356
+ maxLeftViewport
357
+ );
358
+ const cbOffsetLeft = parentIsCb ? boundsRect.left : 0;
359
+ const cbOffsetTop = parentIsCb ? boundsRect.top : 0;
360
+ floating.style.top = `${topViewport + scrollY - cbOffsetTop}px`;
361
+ floating.style.left = `${leftViewport + scrollX - cbOffsetLeft}px`;
362
+ const arrow = arrowRef.current;
363
+ if (!arrow) return;
364
+ const arrowHalf = arrowWidth / 2;
365
+ const refCenterX = refRect.left + refRect.width / 2;
366
+ const rawArrowLeft = refCenterX - leftViewport - arrowHalf;
367
+ const maxArrowLeft = Math.max(0, floatingWidth - arrowWidth);
368
+ const arrowLeft = Math.min(Math.max(0, rawArrowLeft), maxArrowLeft);
369
+ arrow.style.left = `${arrowLeft}px`;
370
+ if (nextPlacement === "bottom") {
371
+ arrow.style.bottom = "100%";
372
+ arrow.style.top = "";
373
+ arrow.style.transform = "rotate(180deg)";
374
+ } else {
375
+ arrow.style.top = "100%";
376
+ arrow.style.bottom = "";
377
+ arrow.style.transform = "";
378
+ }
379
+ }, [
380
+ referenceRef,
381
+ floatingRef,
382
+ arrowRef,
383
+ offsetPx,
384
+ arrowWidth,
385
+ useFixedStrategy
386
+ ]);
387
+ (0, import_react3.useLayoutEffect)(() => {
388
+ if (!isOpen) return;
389
+ update();
390
+ }, [isOpen, update]);
391
+ return {
392
+ initialFloatingStyles: useFixedStrategy ? FIXED_FLOATING_STYLES : ABSOLUTE_FLOATING_STYLES,
393
+ initialArrowStyles: INITIAL_ARROW_STYLES,
394
+ update
395
+ };
396
+ };
397
+
398
+ // src/components/Popover/useOutsidePress.ts
399
+ var import_react4 = require("react");
400
+ var useOutsidePress = ({
401
+ referenceRef,
402
+ floatingRef,
403
+ enabled,
404
+ onOutsidePress
405
+ }) => {
406
+ (0, import_react4.useEffect)(() => {
407
+ if (!enabled) return;
408
+ const handler = (event) => {
409
+ const target = event.target;
410
+ if (!target) return;
411
+ if (referenceRef.current?.contains(target)) return;
412
+ if (floatingRef.current?.contains(target)) return;
413
+ onOutsidePress(event);
414
+ };
415
+ document.addEventListener("pointerdown", handler);
416
+ return () => document.removeEventListener("pointerdown", handler);
417
+ }, [enabled, onOutsidePress, referenceRef, floatingRef]);
418
+ };
419
+
246
420
  // src/components/Popover/Popover.tsx
247
421
  var import_Popover = require("@simplybusiness/mobius/src/components/Popover/Popover.css");
248
- var import_jsx_runtime6 = require("react/jsx-runtime");
422
+ var import_jsx_runtime7 = require("react/jsx-runtime");
249
423
  var OFFSET_FROM_CONTENT_DEFAULT = 10;
424
+ var ARROW_WIDTH = 20;
250
425
  var Popover = (props) => {
251
426
  const { trigger, children, onOpen, onClose, className } = props;
252
- const arrowRef = (0, import_react3.useRef)(null);
253
- const floatingContainerRef = (0, import_react3.useRef)(null);
254
- const [isOpen, setIsOpen] = (0, import_react3.useState)(false);
255
- const { refs, floatingStyles, context } = (0, import_react2.useFloating)({
256
- open: isOpen,
257
- onOpenChange: setIsOpen,
258
- whileElementsMounted: import_react2.autoUpdate,
259
- middleware: [
260
- (0, import_react2.arrow)({
261
- element: arrowRef
262
- }),
263
- (0, import_react2.offset)(OFFSET_FROM_CONTENT_DEFAULT),
264
- (0, import_react2.shift)(),
265
- (0, import_react2.flip)()
266
- ]
427
+ const referenceRef = (0, import_react5.useRef)(null);
428
+ const floatingRef = (0, import_react5.useRef)(null);
429
+ const arrowRef = (0, import_react5.useRef)(null);
430
+ const [isOpen, setIsOpen] = (0, import_react5.useState)(false);
431
+ const [portalTarget, setPortalTarget] = (0, import_react5.useState)(null);
432
+ const isInsideDialog = portalTarget !== null && portalTarget.tagName === "DIALOG";
433
+ const { initialFloatingStyles, initialArrowStyles, update } = useFloatingPosition({
434
+ referenceRef,
435
+ floatingRef,
436
+ arrowRef,
437
+ isOpen,
438
+ offsetPx: OFFSET_FROM_CONTENT_DEFAULT,
439
+ arrowWidth: ARROW_WIDTH,
440
+ useFixedStrategy: isInsideDialog
267
441
  });
268
- const dismiss = (0, import_react2.useDismiss)(context, {
269
- bubbles: true,
270
- outsidePress: (event) => {
271
- const toggle = refs.reference.current;
272
- const isToggleClick = !toggle?.contains(event.target);
273
- if (isToggleClick) {
274
- onClose?.();
275
- }
276
- return true;
442
+ useAutoUpdate({
443
+ referenceRef,
444
+ floatingRef,
445
+ onUpdate: update,
446
+ enabled: isOpen
447
+ });
448
+ useOutsidePress({
449
+ referenceRef,
450
+ floatingRef,
451
+ enabled: isOpen,
452
+ onOutsidePress: () => {
453
+ onClose?.();
454
+ setIsOpen(false);
277
455
  }
278
456
  });
279
- const { getReferenceProps, getFloatingProps } = (0, import_react2.useInteractions)([dismiss]);
280
457
  const containerClasses = (0, import_dedupe3.default)(
281
458
  "mobius",
282
459
  "mobius-popover__container",
283
460
  className
284
461
  );
285
- const setFloatingRef = (0, import_react3.useCallback)(
286
- (node) => {
287
- refs.setFloating(node);
288
- floatingContainerRef.current = node;
289
- },
290
- [refs]
291
- );
292
- (0, import_react3.useEffect)(() => {
293
- const el = floatingContainerRef.current;
462
+ (0, import_react5.useEffect)(() => {
463
+ const el = floatingRef.current;
294
464
  if (!el) return;
295
465
  const preventLabelActivation = (e) => {
296
466
  const target = e.target;
@@ -307,68 +477,73 @@ var Popover = (props) => {
307
477
  onClose?.();
308
478
  return;
309
479
  }
480
+ const dialog = referenceRef.current?.closest("dialog");
481
+ setPortalTarget(dialog ?? document.body);
310
482
  setIsOpen(true);
311
483
  onOpen?.();
312
484
  };
313
- const triggerComponent = (0, import_react3.cloneElement)(trigger, {
314
- ref: refs.setReference,
485
+ const setReferenceRef = (0, import_react5.useCallback)((node) => {
486
+ referenceRef.current = node;
487
+ }, []);
488
+ const triggerComponent = (0, import_react5.cloneElement)(trigger, {
489
+ ref: setReferenceRef,
315
490
  className: (0, import_dedupe3.default)(
316
491
  trigger.props.className,
317
492
  "mobius-popover__toggle"
318
493
  ),
319
- onClick: toggleVisibility,
320
- ...getReferenceProps()
494
+ onClick: toggleVisibility
321
495
  });
322
496
  (0, import_mobius_hooks.useWindowEvent)("keydown", (e) => {
323
- if (e.key === "Escape") {
497
+ if (e.key === "Escape" && isOpen) {
498
+ setIsOpen(false);
324
499
  onClose?.();
325
500
  e.preventDefault();
326
501
  e.stopPropagation();
327
502
  }
328
503
  });
329
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
330
- triggerComponent,
331
- isOpen && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
332
- "div",
333
- {
334
- className: containerClasses,
335
- ref: setFloatingRef,
336
- style: floatingStyles,
337
- ...getFloatingProps(),
338
- children: [
339
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "mobius-popover", children: [
340
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("header", { className: "mobius-popover__header", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
341
- Button,
342
- {
343
- type: "button",
344
- className: "mobius-popover__close-button",
345
- onClick: toggleVisibility,
346
- "aria-label": "Close",
347
- variant: "ghost",
348
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
349
- Icon,
350
- {
351
- icon: import_icons3.cross,
352
- size: "md",
353
- className: "mobius-popover__close-icon"
354
- }
355
- )
356
- }
357
- ) }),
358
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "mobius-popover__body", children })
359
- ] }),
360
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
361
- import_react2.FloatingArrow,
504
+ const floatingElement = isOpen ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
505
+ "div",
506
+ {
507
+ className: containerClasses,
508
+ ref: floatingRef,
509
+ style: initialFloatingStyles,
510
+ children: [
511
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "mobius-popover", children: [
512
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("header", { className: "mobius-popover__header", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
513
+ Button,
362
514
  {
363
- ref: arrowRef,
364
- context,
365
- width: 20,
366
- className: "mobius-popover__arrow-icon"
515
+ type: "button",
516
+ className: "mobius-popover__close-button",
517
+ onClick: toggleVisibility,
518
+ "aria-label": "Close",
519
+ variant: "ghost",
520
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
521
+ Icon,
522
+ {
523
+ icon: import_icons3.cross,
524
+ size: "md",
525
+ className: "mobius-popover__close-icon"
526
+ }
527
+ )
367
528
  }
368
- )
369
- ]
370
- }
371
- )
529
+ ) }),
530
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "mobius-popover__body", children })
531
+ ] }),
532
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
533
+ Arrow,
534
+ {
535
+ ref: arrowRef,
536
+ style: initialArrowStyles,
537
+ className: "mobius-popover__arrow-icon",
538
+ width: ARROW_WIDTH
539
+ }
540
+ )
541
+ ]
542
+ }
543
+ ) : null;
544
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
545
+ triggerComponent,
546
+ floatingElement && portalTarget ? (0, import_react_dom.createPortal)(floatingElement, portalTarget) : null
372
547
  ] });
373
548
  };
374
549
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/components/Popover/index.tsx", "../../../../src/components/Popover/Popover.tsx", "../../../../src/components/Button/Button.tsx", "../../../../src/components/Button/Loading.tsx", "../../../../src/components/Icon/Icon.tsx", "../../../../src/components/VisuallyHidden/VisuallyHidden.tsx", "../../../../src/hooks/useButton/useButton.tsx", "../../../../src/components/Button/Success.tsx"],
4
- "sourcesContent": ["export * from \"./Popover\";\n", "import {\n FloatingArrow,\n arrow,\n autoUpdate,\n flip,\n offset,\n shift,\n useDismiss,\n useFloating,\n useInteractions,\n} from \"@floating-ui/react\";\nimport { cross } from \"@simplybusiness/icons\";\nimport classNames from \"classnames/dedupe\";\nimport type { ReactElement, ReactNode, RefAttributes } from \"react\";\nimport { cloneElement, useCallback, useEffect, useRef, useState } from \"react\";\nimport { useWindowEvent } from \"@simplybusiness/mobius-hooks\";\nimport type { DOMProps } from \"../../types\";\nimport { Button } from \"../Button\";\nimport { Icon } from \"../Icon\";\nimport \"./Popover.css\";\n\nexport type PopoverElementType = HTMLDivElement;\n\nexport interface PopoverProps\n extends DOMProps, RefAttributes<PopoverElementType> {\n children?: ReactNode;\n trigger: ReactElement;\n /** Callback that fires each time the accordion is opened */\n onOpen?: () => void;\n /** Callback that fires each time the accordion is closed */\n onClose?: () => void;\n /** Custom class name for setting specific CSS */\n className?: string;\n}\n\nconst OFFSET_FROM_CONTENT_DEFAULT = 10;\n\nexport const Popover = (props: PopoverProps) => {\n const { trigger, children, onOpen, onClose, className } = props;\n const arrowRef = useRef(null);\n const floatingContainerRef = useRef<HTMLDivElement | null>(null);\n const [isOpen, setIsOpen] = useState(false);\n const { refs, floatingStyles, context } = useFloating({\n open: isOpen,\n onOpenChange: setIsOpen,\n whileElementsMounted: autoUpdate,\n middleware: [\n arrow({\n element: arrowRef,\n }),\n offset(OFFSET_FROM_CONTENT_DEFAULT),\n shift(),\n flip(),\n ],\n });\n const dismiss = useDismiss(context, {\n bubbles: true,\n outsidePress: (event: MouseEvent) => {\n // Prevent 'onClose' from firing when clicking the toggle to close\n const toggle = refs.reference.current as HTMLElement;\n const isToggleClick = !toggle?.contains(event.target as HTMLElement);\n if (isToggleClick) {\n onClose?.();\n }\n return true;\n },\n });\n const { getReferenceProps, getFloatingProps } = useInteractions([dismiss]);\n\n const containerClasses = classNames(\n \"mobius\",\n \"mobius-popover__container\",\n className,\n );\n\n const setFloatingRef = useCallback(\n (node: HTMLDivElement | null) => {\n refs.setFloating(node);\n floatingContainerRef.current = node;\n },\n [refs],\n );\n\n // Native listener to prevent clicks inside the popover from activating\n // interactive ancestors. Must be native because React's onClick fires\n // too late via delegation.\n useEffect(() => {\n const el = floatingContainerRef.current;\n if (!el) return;\n\n const preventLabelActivation = (e: Event) => {\n const target = e.target as HTMLElement;\n // Allow default behavior for interactive elements (links, inputs, etc.)\n // so they remain functional inside the popover.\n if (!target.closest(\"a[href], input, select, textarea\")) {\n e.preventDefault();\n }\n };\n el.addEventListener(\"click\", preventLabelActivation);\n return () => el.removeEventListener(\"click\", preventLabelActivation);\n }, [isOpen]);\n\n const toggleVisibility = () => {\n if (isOpen) {\n setIsOpen(false);\n onClose?.();\n return;\n }\n\n setIsOpen(true);\n onOpen?.();\n };\n\n const triggerComponent = cloneElement(trigger, {\n ref: refs.setReference,\n className: classNames(\n (trigger.props as { className?: string }).className,\n \"mobius-popover__toggle\",\n ),\n onClick: toggleVisibility,\n ...getReferenceProps(),\n } as Record<string, unknown>);\n\n useWindowEvent(\"keydown\", e => {\n if (e.key === \"Escape\") {\n onClose?.();\n e.preventDefault();\n e.stopPropagation();\n }\n });\n\n return (\n <>\n {triggerComponent}\n {isOpen && (\n <div\n className={containerClasses}\n ref={setFloatingRef}\n style={floatingStyles}\n {...getFloatingProps()}\n >\n <div className=\"mobius-popover\">\n <header className=\"mobius-popover__header\">\n <Button\n type=\"button\"\n className=\"mobius-popover__close-button\"\n onClick={toggleVisibility}\n aria-label=\"Close\"\n variant=\"ghost\"\n >\n <Icon\n icon={cross}\n size=\"md\"\n className=\"mobius-popover__close-icon\"\n />\n </Button>\n </header>\n <div className=\"mobius-popover__body\">{children}</div>\n </div>\n <FloatingArrow\n ref={arrowRef}\n context={context}\n width={20}\n className=\"mobius-popover__arrow-icon\"\n />\n </div>\n )}\n </>\n );\n};\n", "\"use client\";\n\nimport type { MouseEvent, ReactNode, RefAttributes } from \"react\";\nimport classNames from \"classnames/dedupe\";\nimport type { DOMProps } from \"../../types/dom\";\nimport { Loading } from \"./Loading\";\nimport type { UseButtonProps } from \"../../hooks/useButton\";\nimport { useButton } from \"../../hooks/useButton\";\nimport { Success } from \"./Success\";\nimport \"./Button.css\";\n\nexport type ButtonElementType = HTMLButtonElement;\n\nexport type Variant = \"primary\" | \"secondary\" | \"ghost\" | \"basic\" | \"link\";\n\nexport type Size = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps\n extends UseButtonProps, DOMProps, RefAttributes<ButtonElementType> {\n /** The name of the button when submitted in a form */\n name?: string | undefined;\n /** The value of the button when submitted in a form */\n value?: string | undefined;\n /** Custom class name for setting specific CSS */\n className?: string;\n /** Shortlist of styles */\n variant?: Variant;\n size?: Size;\n /** Display loading spinner */\n isLoading?: boolean;\n /** Display success style */\n isSuccess?: boolean;\n onClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n children?: ReactNode;\n}\n\nconst Button = ({ ref, ...props }: ButtonProps) => {\n const {\n children,\n elementType: Component = \"button\" as React.ElementType,\n isDisabled,\n isLoading,\n isSuccess,\n variant = \"primary\",\n size = \"md\",\n\n onPress,\n\n onClick,\n ...otherProps\n } = props;\n const { buttonProps } = useButton(props);\n\n // Reshape class name and apply to outer element\n otherProps.className = classNames(\n \"mobius\",\n \"mobius-button\",\n `--variant-${variant}`,\n `--size-${size}`,\n {\n \"--is-disabled\": isDisabled,\n \"--is-loading\": isLoading,\n \"--is-success\": isSuccess && !isLoading,\n },\n otherProps.className,\n );\n\n return (\n <Component ref={ref} {...buttonProps} {...otherProps}>\n {isLoading ? <Loading>{children}</Loading> : children}\n {isSuccess && !isLoading && <Success />}\n </Component>\n );\n};\n\nButton.displayName = \"Button\";\nexport { Button };\n", "import type { ReactNode } from \"react\";\nimport { loading } from \"@simplybusiness/icons\";\nimport { Icon } from \"../Icon\";\nimport { VisuallyHidden } from \"../VisuallyHidden\";\n\ntype LoadingProps = {\n children: ReactNode;\n};\n\nconst Loading = (props: LoadingProps) => {\n const { children } = props;\n\n return (\n <>\n <div className=\"mobius-button__icon-wrapper\">\n <Icon icon={loading} spin size=\"md\" />\n </div>\n <VisuallyHidden className=\"mobius-button__loading-text\">\n Loading\n </VisuallyHidden>\n {children}\n </>\n );\n};\n\nexport { Loading };\n", "import classNames from \"classnames/dedupe\";\nimport type { IconProps } from \"./types\";\nimport \"./Icon.css\";\n\nconst ICON_PREFIX = \"mobius-icon\";\n\nconst capitaliseFirstLetter = (str: string) =>\n str.charAt(0).toUpperCase() + str.slice(1);\n\nexport function Icon({\n ref,\n icon,\n className,\n size = \"xs\",\n color,\n fixedWidth,\n spin,\n spinReverse,\n title,\n ...otherProps\n}: IconProps) {\n if (!icon) {\n throw new Error(\"Must specify icon object\");\n }\n\n const classes = classNames(\n \"mobius\",\n \"mobius-icon\",\n `svg-inline--${ICON_PREFIX}`,\n `--size-${size}`,\n className,\n {\n [`${ICON_PREFIX}-fw`]: fixedWidth,\n [`${ICON_PREFIX}-spin`]: spin || spinReverse,\n [`${ICON_PREFIX}-spin-reverse`]: spinReverse,\n },\n );\n\n const { iconName, width, height, svgPathData } = icon;\n const formattedIconName = iconName.split(\"-\").join(\" \");\n\n const defaultTitle = `${capitaliseFirstLetter(formattedIconName)} icon`;\n const titleText = title || defaultTitle;\n\n return (\n <svg\n ref={ref}\n focusable=\"false\"\n data-icon={iconName}\n className={classes}\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={`0 0 ${width} ${height}`}\n style={{ color }}\n {...otherProps}\n >\n <title>{titleText}</title>\n <path fill=\"currentColor\" d={svgPathData} />\n </svg>\n );\n}\n", "import type { AriaRole, JSXElementConstructor, ReactNode } from \"react\";\n\nexport interface VisuallyHiddenProps {\n /** The content to visually hide. */\n children?: ReactNode;\n id?: string;\n role?: AriaRole;\n\n className?: string;\n\n /**\n * The element type for the container. Defaults to 'div'\n */\n elementType?: string | JSXElementConstructor<any>;\n}\n\nexport function VisuallyHidden(props: VisuallyHiddenProps) {\n const {\n className,\n children,\n elementType: Component = \"div\",\n ...otherProps\n } = props;\n\n return (\n <Component\n className={className}\n style={{\n border: 0,\n clip: \"rect(0 0 0 0)\",\n clipPath: \"inset(50%)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n }}\n {...otherProps}\n >\n {children}\n </Component>\n );\n}\n", "import type { JSXElementConstructor } from \"react\";\nimport { useCallback } from \"react\";\n\nexport interface UseButtonProps {\n elementType?:\n | \"button\"\n | \"a\"\n | \"span\"\n | \"input\"\n | JSXElementConstructor<unknown>\n | undefined;\n type?: \"button\" | \"submit\" | \"reset\";\n isDisabled?: boolean;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onPress?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n href?: string;\n target?: string;\n rel?: string;\n role?: string;\n name?: string | undefined;\n value?: string | undefined;\n}\n\nexport function useButton({\n elementType = \"button\",\n type = \"button\",\n isDisabled = false,\n href,\n target,\n rel,\n role,\n name,\n value,\n onClick,\n onPress,\n}: UseButtonProps) {\n const realOnClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n return;\n }\n\n onClick?.(event);\n onPress?.(event);\n },\n [isDisabled, onClick, onPress],\n );\n\n function getRole() {\n if (role) {\n return role;\n }\n\n if (elementType === \"a\") {\n return undefined;\n }\n\n return \"button\";\n }\n\n const extraProps =\n elementType === \"button\"\n ? { type }\n : {\n role: getRole(),\n };\n\n return {\n buttonProps: {\n href: elementType === \"a\" ? href : undefined,\n target: elementType === \"a\" ? target : undefined,\n rel: elementType === \"a\" ? rel : undefined,\n tabIndex: isDisabled ? -1 : 0,\n disabled: isDisabled || undefined,\n \"aria-disabled\": isDisabled || undefined,\n name:\n elementType === \"input\" || elementType === \"button\" ? name : undefined,\n value:\n elementType === \"input\" || elementType === \"button\" ? value : undefined,\n ...extraProps,\n onClick: realOnClick,\n },\n };\n}\n", "import { tick } from \"@simplybusiness/icons\";\nimport { Icon } from \"../Icon\";\nimport { VisuallyHidden } from \"../VisuallyHidden\";\n\nconst Success = () => (\n <>\n <div className=\"mobius-button__icon-wrapper\">\n <Icon icon={tick} size=\"md\" />\n </div>\n <VisuallyHidden className=\"mobius-button__success-text\">\n Success\n </VisuallyHidden>\n </>\n);\n\nexport { Success };\n"],
5
- "mappings": "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",
6
- "names": ["import_react", "import_icons", "import_dedupe", "import_dedupe", "classNames", "import_jsx_runtime", "import_jsx_runtime", "import_icons", "import_jsx_runtime", "import_jsx_runtime", "classNames", "import_jsx_runtime", "classNames"]
3
+ "sources": ["../../../../src/components/Popover/index.tsx", "../../../../src/components/Popover/Popover.tsx", "../../../../src/components/Button/Button.tsx", "../../../../src/components/Button/Loading.tsx", "../../../../src/components/Icon/Icon.tsx", "../../../../src/components/VisuallyHidden/VisuallyHidden.tsx", "../../../../src/hooks/useButton/useButton.tsx", "../../../../src/components/Button/Success.tsx", "../../../../src/components/Popover/Arrow.tsx", "../../../../src/components/Popover/useAutoUpdate.ts", "../../../../src/components/Popover/useFloatingPosition.ts", "../../../../src/components/Popover/useOutsidePress.ts"],
4
+ "sourcesContent": ["export * from \"./Popover\";\n", "import { cross } from \"@simplybusiness/icons\";\nimport classNames from \"classnames/dedupe\";\nimport type { ReactElement, ReactNode, RefAttributes } from \"react\";\nimport { cloneElement, useCallback, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useWindowEvent } from \"@simplybusiness/mobius-hooks\";\nimport type { DOMProps } from \"../../types\";\nimport { Button } from \"../Button\";\nimport { Icon } from \"../Icon\";\nimport { Arrow } from \"./Arrow\";\nimport { useAutoUpdate } from \"./useAutoUpdate\";\nimport { useFloatingPosition } from \"./useFloatingPosition\";\nimport { useOutsidePress } from \"./useOutsidePress\";\nimport \"./Popover.css\";\n\nexport type PopoverElementType = HTMLDivElement;\n\nexport interface PopoverProps\n extends DOMProps, RefAttributes<PopoverElementType> {\n children?: ReactNode;\n trigger: ReactElement;\n /** Callback that fires each time the accordion is opened */\n onOpen?: () => void;\n /** Callback that fires each time the accordion is closed */\n onClose?: () => void;\n /** Custom class name for setting specific CSS */\n className?: string;\n}\n\nconst OFFSET_FROM_CONTENT_DEFAULT = 10;\nconst ARROW_WIDTH = 20;\n\nexport const Popover = (props: PopoverProps) => {\n const { trigger, children, onOpen, onClose, className } = props;\n const referenceRef = useRef<HTMLElement | null>(null);\n const floatingRef = useRef<HTMLDivElement | null>(null);\n const arrowRef = useRef<SVGSVGElement | null>(null);\n const [isOpen, setIsOpen] = useState(false);\n const [portalTarget, setPortalTarget] = useState<HTMLElement | null>(null);\n\n const isInsideDialog =\n portalTarget !== null && portalTarget.tagName === \"DIALOG\";\n\n const { initialFloatingStyles, initialArrowStyles, update } =\n useFloatingPosition({\n referenceRef,\n floatingRef,\n arrowRef,\n isOpen,\n offsetPx: OFFSET_FROM_CONTENT_DEFAULT,\n arrowWidth: ARROW_WIDTH,\n useFixedStrategy: isInsideDialog,\n });\n\n useAutoUpdate({\n referenceRef,\n floatingRef,\n onUpdate: update,\n enabled: isOpen,\n });\n\n useOutsidePress({\n referenceRef,\n floatingRef,\n enabled: isOpen,\n onOutsidePress: () => {\n onClose?.();\n setIsOpen(false);\n },\n });\n\n const containerClasses = classNames(\n \"mobius\",\n \"mobius-popover__container\",\n className,\n );\n\n // Native listener to prevent clicks inside the popover from activating\n // interactive ancestors. Must be native because React's onClick fires\n // too late via delegation.\n useEffect(() => {\n const el = floatingRef.current;\n if (!el) return;\n\n const preventLabelActivation = (e: Event) => {\n const target = e.target as HTMLElement;\n // Allow default behavior for interactive elements (links, inputs, etc.)\n // so they remain functional inside the popover.\n if (!target.closest(\"a[href], input, select, textarea\")) {\n e.preventDefault();\n }\n };\n el.addEventListener(\"click\", preventLabelActivation);\n return () => el.removeEventListener(\"click\", preventLabelActivation);\n }, [isOpen]);\n\n const toggleVisibility = () => {\n if (isOpen) {\n setIsOpen(false);\n onClose?.();\n return;\n }\n\n // Portal into the nearest open <dialog> ancestor so the popover renders\n // in the same top-layer as the dialog. document.body falls outside that\n // top-layer and paints beneath the modal backdrop.\n const dialog = referenceRef.current?.closest(\"dialog\");\n setPortalTarget(dialog ?? document.body);\n setIsOpen(true);\n onOpen?.();\n };\n\n const setReferenceRef = useCallback((node: HTMLElement | null) => {\n referenceRef.current = node;\n }, []);\n\n const triggerComponent = cloneElement(trigger, {\n ref: setReferenceRef,\n className: classNames(\n (trigger.props as { className?: string }).className,\n \"mobius-popover__toggle\",\n ),\n onClick: toggleVisibility,\n } as Record<string, unknown>);\n\n useWindowEvent(\"keydown\", e => {\n if (e.key === \"Escape\" && isOpen) {\n setIsOpen(false);\n onClose?.();\n e.preventDefault();\n e.stopPropagation();\n }\n });\n\n const floatingElement = isOpen ? (\n <div\n className={containerClasses}\n ref={floatingRef}\n style={initialFloatingStyles}\n >\n <div className=\"mobius-popover\">\n <header className=\"mobius-popover__header\">\n <Button\n type=\"button\"\n className=\"mobius-popover__close-button\"\n onClick={toggleVisibility}\n aria-label=\"Close\"\n variant=\"ghost\"\n >\n <Icon\n icon={cross}\n size=\"md\"\n className=\"mobius-popover__close-icon\"\n />\n </Button>\n </header>\n <div className=\"mobius-popover__body\">{children}</div>\n </div>\n <Arrow\n ref={arrowRef}\n style={initialArrowStyles}\n className=\"mobius-popover__arrow-icon\"\n width={ARROW_WIDTH}\n />\n </div>\n ) : null;\n\n return (\n <>\n {triggerComponent}\n {floatingElement && portalTarget\n ? createPortal(floatingElement, portalTarget)\n : null}\n </>\n );\n};\n", "\"use client\";\n\nimport type { MouseEvent, ReactNode, RefAttributes } from \"react\";\nimport classNames from \"classnames/dedupe\";\nimport type { DOMProps } from \"../../types/dom\";\nimport { Loading } from \"./Loading\";\nimport type { UseButtonProps } from \"../../hooks/useButton\";\nimport { useButton } from \"../../hooks/useButton\";\nimport { Success } from \"./Success\";\nimport \"./Button.css\";\n\nexport type ButtonElementType = HTMLButtonElement;\n\nexport type Variant = \"primary\" | \"secondary\" | \"ghost\" | \"basic\" | \"link\";\n\nexport type Size = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps\n extends UseButtonProps, DOMProps, RefAttributes<ButtonElementType> {\n /** The name of the button when submitted in a form */\n name?: string | undefined;\n /** The value of the button when submitted in a form */\n value?: string | undefined;\n /** Custom class name for setting specific CSS */\n className?: string;\n /** Shortlist of styles */\n variant?: Variant;\n size?: Size;\n /** Display loading spinner */\n isLoading?: boolean;\n /** Display success style */\n isSuccess?: boolean;\n onClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n children?: ReactNode;\n}\n\nconst Button = ({ ref, ...props }: ButtonProps) => {\n const {\n children,\n elementType: Component = \"button\" as React.ElementType,\n isDisabled,\n isLoading,\n isSuccess,\n variant = \"primary\",\n size = \"md\",\n\n onPress,\n\n onClick,\n ...otherProps\n } = props;\n const { buttonProps } = useButton(props);\n\n // Reshape class name and apply to outer element\n otherProps.className = classNames(\n \"mobius\",\n \"mobius-button\",\n `--variant-${variant}`,\n `--size-${size}`,\n {\n \"--is-disabled\": isDisabled,\n \"--is-loading\": isLoading,\n \"--is-success\": isSuccess && !isLoading,\n },\n otherProps.className,\n );\n\n return (\n <Component ref={ref} {...buttonProps} {...otherProps}>\n {isLoading ? <Loading>{children}</Loading> : children}\n {isSuccess && !isLoading && <Success />}\n </Component>\n );\n};\n\nButton.displayName = \"Button\";\nexport { Button };\n", "import type { ReactNode } from \"react\";\nimport { loading } from \"@simplybusiness/icons\";\nimport { Icon } from \"../Icon\";\nimport { VisuallyHidden } from \"../VisuallyHidden\";\n\ntype LoadingProps = {\n children: ReactNode;\n};\n\nconst Loading = (props: LoadingProps) => {\n const { children } = props;\n\n return (\n <>\n <div className=\"mobius-button__icon-wrapper\">\n <Icon icon={loading} spin size=\"md\" />\n </div>\n <VisuallyHidden className=\"mobius-button__loading-text\">\n Loading\n </VisuallyHidden>\n {children}\n </>\n );\n};\n\nexport { Loading };\n", "import classNames from \"classnames/dedupe\";\nimport type { IconProps } from \"./types\";\nimport \"./Icon.css\";\n\nconst ICON_PREFIX = \"mobius-icon\";\n\nconst capitaliseFirstLetter = (str: string) =>\n str.charAt(0).toUpperCase() + str.slice(1);\n\nexport function Icon({\n ref,\n icon,\n className,\n size = \"xs\",\n color,\n fixedWidth,\n spin,\n spinReverse,\n title,\n ...otherProps\n}: IconProps) {\n if (!icon) {\n throw new Error(\"Must specify icon object\");\n }\n\n const classes = classNames(\n \"mobius\",\n \"mobius-icon\",\n `svg-inline--${ICON_PREFIX}`,\n `--size-${size}`,\n className,\n {\n [`${ICON_PREFIX}-fw`]: fixedWidth,\n [`${ICON_PREFIX}-spin`]: spin || spinReverse,\n [`${ICON_PREFIX}-spin-reverse`]: spinReverse,\n },\n );\n\n const { iconName, width, height, svgPathData } = icon;\n const formattedIconName = iconName.split(\"-\").join(\" \");\n\n const defaultTitle = `${capitaliseFirstLetter(formattedIconName)} icon`;\n const titleText = title || defaultTitle;\n\n return (\n <svg\n ref={ref}\n focusable=\"false\"\n data-icon={iconName}\n className={classes}\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={`0 0 ${width} ${height}`}\n style={{ color }}\n {...otherProps}\n >\n <title>{titleText}</title>\n <path fill=\"currentColor\" d={svgPathData} />\n </svg>\n );\n}\n", "import type { AriaRole, JSXElementConstructor, ReactNode } from \"react\";\n\nexport interface VisuallyHiddenProps {\n /** The content to visually hide. */\n children?: ReactNode;\n id?: string;\n role?: AriaRole;\n\n className?: string;\n\n /**\n * The element type for the container. Defaults to 'div'\n */\n elementType?: string | JSXElementConstructor<any>;\n}\n\nexport function VisuallyHidden(props: VisuallyHiddenProps) {\n const {\n className,\n children,\n elementType: Component = \"div\",\n ...otherProps\n } = props;\n\n return (\n <Component\n className={className}\n style={{\n border: 0,\n clip: \"rect(0 0 0 0)\",\n clipPath: \"inset(50%)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n }}\n {...otherProps}\n >\n {children}\n </Component>\n );\n}\n", "import type { JSXElementConstructor } from \"react\";\nimport { useCallback } from \"react\";\n\nexport interface UseButtonProps {\n elementType?:\n | \"button\"\n | \"a\"\n | \"span\"\n | \"input\"\n | JSXElementConstructor<unknown>\n | undefined;\n type?: \"button\" | \"submit\" | \"reset\";\n isDisabled?: boolean;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onPress?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n href?: string;\n target?: string;\n rel?: string;\n role?: string;\n name?: string | undefined;\n value?: string | undefined;\n}\n\nexport function useButton({\n elementType = \"button\",\n type = \"button\",\n isDisabled = false,\n href,\n target,\n rel,\n role,\n name,\n value,\n onClick,\n onPress,\n}: UseButtonProps) {\n const realOnClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n return;\n }\n\n onClick?.(event);\n onPress?.(event);\n },\n [isDisabled, onClick, onPress],\n );\n\n function getRole() {\n if (role) {\n return role;\n }\n\n if (elementType === \"a\") {\n return undefined;\n }\n\n return \"button\";\n }\n\n const extraProps =\n elementType === \"button\"\n ? { type }\n : {\n role: getRole(),\n };\n\n return {\n buttonProps: {\n href: elementType === \"a\" ? href : undefined,\n target: elementType === \"a\" ? target : undefined,\n rel: elementType === \"a\" ? rel : undefined,\n tabIndex: isDisabled ? -1 : 0,\n disabled: isDisabled || undefined,\n \"aria-disabled\": isDisabled || undefined,\n name:\n elementType === \"input\" || elementType === \"button\" ? name : undefined,\n value:\n elementType === \"input\" || elementType === \"button\" ? value : undefined,\n ...extraProps,\n onClick: realOnClick,\n },\n };\n}\n", "import { tick } from \"@simplybusiness/icons\";\nimport { Icon } from \"../Icon\";\nimport { VisuallyHidden } from \"../VisuallyHidden\";\n\nconst Success = () => (\n <>\n <div className=\"mobius-button__icon-wrapper\">\n <Icon icon={tick} size=\"md\" />\n </div>\n <VisuallyHidden className=\"mobius-button__success-text\">\n Success\n </VisuallyHidden>\n </>\n);\n\nexport { Success };\n", "import type { CSSProperties, Ref } from \"react\";\n\ninterface ArrowProps {\n ref?: Ref<SVGSVGElement>;\n width?: number;\n className?: string;\n style?: CSSProperties;\n}\n\nexport const Arrow = ({ ref, width = 20, className, style }: ArrowProps) => {\n const height = width / 2;\n return (\n <svg\n ref={ref}\n className={className}\n aria-hidden=\"true\"\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n style={style}\n >\n <path d={`M0,0 H${width} L${width / 2},${height} Z`} />\n </svg>\n );\n};\n", "import type { RefObject } from \"react\";\nimport { useEffect } from \"react\";\n\ninterface UseAutoUpdateArgs {\n referenceRef: RefObject<HTMLElement | null>;\n floatingRef: RefObject<HTMLDivElement | null>;\n onUpdate: () => void;\n enabled: boolean;\n}\n\nexport const useAutoUpdate = ({\n referenceRef,\n floatingRef,\n onUpdate,\n enabled,\n}: UseAutoUpdateArgs): void => {\n useEffect(() => {\n if (!enabled) return;\n\n const reference = referenceRef.current;\n const floating = floatingRef.current;\n\n const scrollOpts: AddEventListenerOptions = {\n capture: true,\n passive: true,\n };\n window.addEventListener(\"scroll\", onUpdate, scrollOpts);\n window.addEventListener(\"resize\", onUpdate, { passive: true });\n\n const observer =\n typeof ResizeObserver === \"function\"\n ? new ResizeObserver(onUpdate)\n : null;\n if (observer && reference) observer.observe(reference);\n if (observer && floating) observer.observe(floating);\n\n return () => {\n window.removeEventListener(\"scroll\", onUpdate, scrollOpts);\n window.removeEventListener(\"resize\", onUpdate);\n observer?.disconnect();\n };\n }, [enabled, onUpdate, referenceRef, floatingRef]);\n};\n", "import type { CSSProperties, RefObject } from \"react\";\nimport { useCallback, useLayoutEffect } from \"react\";\n\ntype Placement = \"bottom\" | \"top\";\n\ninterface UseFloatingPositionArgs {\n referenceRef: RefObject<HTMLElement | null>;\n floatingRef: RefObject<HTMLDivElement | null>;\n arrowRef: RefObject<SVGSVGElement | null>;\n isOpen: boolean;\n offsetPx: number;\n arrowWidth: number;\n useFixedStrategy: boolean;\n}\n\ninterface UseFloatingPositionResult {\n initialFloatingStyles: CSSProperties;\n initialArrowStyles: CSSProperties;\n update: () => void;\n}\n\n// Two positioning strategies:\n// - `absolute` + document-relative coords (viewport rect + window.scrollY/X)\n// when portalled to document.body. The initial containing block is the\n// document, so absolute coords pin to the trigger and scroll natively.\n// - `fixed` + viewport coords when portalled inside a <dialog> (top-layer).\n// The dialog's own box would otherwise become the containing block for an\n// `absolute` child, throwing off coordinates and triggering `overflow: hidden`\n// clipping. `fixed` keeps the containing block as the viewport.\nconst ABSOLUTE_FLOATING_STYLES: CSSProperties = {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"max-content\",\n};\n\nconst FIXED_FLOATING_STYLES: CSSProperties = {\n position: \"fixed\",\n top: 0,\n left: 0,\n width: \"max-content\",\n};\n\nconst INITIAL_ARROW_STYLES: CSSProperties = {\n position: \"absolute\",\n};\n\nconst VIEWPORT_PADDING = 0;\n\n// Properties that make an ancestor the containing block for a `position: fixed`\n// descendant, overriding the initial viewport containing block. When the portal\n// target (dialog) has any of these, `position: fixed` coords are interpreted\n// relative to the dialog's box, not the viewport \u2014 we compensate by subtracting\n// the dialog's viewport offset.\nconst createsFixedContainingBlock = (el: HTMLElement): boolean => {\n const style = window.getComputedStyle(el);\n return (\n style.transform !== \"none\" ||\n style.filter !== \"none\" ||\n style.backdropFilter !== \"none\" ||\n style.perspective !== \"none\" ||\n /\\b(transform|filter|perspective)\\b/.test(style.willChange)\n );\n};\n\nexport const useFloatingPosition = ({\n referenceRef,\n floatingRef,\n arrowRef,\n isOpen,\n offsetPx,\n arrowWidth,\n useFixedStrategy,\n}: UseFloatingPositionArgs): UseFloatingPositionResult => {\n // Writes styles directly to the DOM (bypassing React state) so scroll/resize\n // handlers can update position in the same event-frame the browser uses to\n // paint the scroll, eliminating the re-render lag that shows up as a\n // trigger-vs-popover parallax on fast scroll.\n const update = useCallback(() => {\n const reference = referenceRef.current;\n const floating = floatingRef.current;\n if (!reference || !floating) return;\n\n const refRect = reference.getBoundingClientRect();\n const floatingWidth = floating.offsetWidth;\n const floatingHeight = floating.offsetHeight;\n const scrollX = useFixedStrategy ? 0 : window.scrollX;\n const scrollY = useFixedStrategy ? 0 : window.scrollY;\n\n // Clamp to the portal target's bounds when the dialog is a containing\n // block (its own `overflow: hidden` would clip the popover). Otherwise\n // clamp to the viewport.\n const parent = floating.parentElement;\n const parentIsCb =\n useFixedStrategy && !!parent && createsFixedContainingBlock(parent);\n const boundsRect = parentIsCb\n ? parent.getBoundingClientRect()\n : {\n left: 0,\n top: 0,\n right: window.innerWidth,\n bottom: window.innerHeight,\n };\n\n const bottomTopViewport = refRect.bottom + offsetPx;\n const topTopViewport = refRect.top - floatingHeight - offsetPx;\n const overflowsBottom =\n bottomTopViewport + floatingHeight > boundsRect.bottom;\n const fitsTop = topTopViewport >= boundsRect.top;\n const nextPlacement: Placement =\n overflowsBottom && fitsTop ? \"top\" : \"bottom\";\n\n const topViewport =\n nextPlacement === \"bottom\" ? bottomTopViewport : topTopViewport;\n\n const rawLeftViewport =\n refRect.left + refRect.width / 2 - floatingWidth / 2;\n const minLeftViewport = boundsRect.left + VIEWPORT_PADDING;\n const maxLeftViewport = Math.max(\n minLeftViewport,\n boundsRect.right - floatingWidth - VIEWPORT_PADDING,\n );\n const leftViewport = Math.min(\n Math.max(minLeftViewport, rawLeftViewport),\n maxLeftViewport,\n );\n\n // Subtract containing-block offset when the dialog is the CB, so\n // `position: fixed` coords land at the intended viewport position.\n const cbOffsetLeft = parentIsCb ? boundsRect.left : 0;\n const cbOffsetTop = parentIsCb ? boundsRect.top : 0;\n\n floating.style.top = `${topViewport + scrollY - cbOffsetTop}px`;\n floating.style.left = `${leftViewport + scrollX - cbOffsetLeft}px`;\n\n const arrow = arrowRef.current;\n if (!arrow) return;\n\n // Arrow coords are relative to the floating element, so scroll cancels out.\n const arrowHalf = arrowWidth / 2;\n const refCenterX = refRect.left + refRect.width / 2;\n const rawArrowLeft = refCenterX - leftViewport - arrowHalf;\n const maxArrowLeft = Math.max(0, floatingWidth - arrowWidth);\n const arrowLeft = Math.min(Math.max(0, rawArrowLeft), maxArrowLeft);\n\n arrow.style.left = `${arrowLeft}px`;\n if (nextPlacement === \"bottom\") {\n arrow.style.bottom = \"100%\";\n arrow.style.top = \"\";\n arrow.style.transform = \"rotate(180deg)\";\n } else {\n arrow.style.top = \"100%\";\n arrow.style.bottom = \"\";\n arrow.style.transform = \"\";\n }\n }, [\n referenceRef,\n floatingRef,\n arrowRef,\n offsetPx,\n arrowWidth,\n useFixedStrategy,\n ]);\n\n useLayoutEffect(() => {\n if (!isOpen) return;\n update();\n }, [isOpen, update]);\n\n return {\n initialFloatingStyles: useFixedStrategy\n ? FIXED_FLOATING_STYLES\n : ABSOLUTE_FLOATING_STYLES,\n initialArrowStyles: INITIAL_ARROW_STYLES,\n update,\n };\n};\n", "import type { RefObject } from \"react\";\nimport { useEffect } from \"react\";\n\ninterface UseOutsidePressArgs {\n referenceRef: RefObject<HTMLElement | null>;\n floatingRef: RefObject<HTMLDivElement | null>;\n enabled: boolean;\n onOutsidePress: (event: PointerEvent) => void;\n}\n\nexport const useOutsidePress = ({\n referenceRef,\n floatingRef,\n enabled,\n onOutsidePress,\n}: UseOutsidePressArgs): void => {\n useEffect(() => {\n if (!enabled) return;\n\n const handler = (event: PointerEvent) => {\n const target = event.target as Node | null;\n if (!target) return;\n if (referenceRef.current?.contains(target)) return;\n if (floatingRef.current?.contains(target)) return;\n onOutsidePress(event);\n };\n\n document.addEventListener(\"pointerdown\", handler);\n return () => document.removeEventListener(\"pointerdown\", handler);\n }, [enabled, onOutsidePress, referenceRef, floatingRef]);\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_icons", "import_dedupe", "import_react", "import_dedupe", "classNames", "import_jsx_runtime", "import_jsx_runtime", "import_icons", "import_jsx_runtime", "import_jsx_runtime", "classNames", "import_jsx_runtime", "import_react", "import_react", "import_react", "import_jsx_runtime", "classNames"]
7
7
  }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/components/Popover/useAutoUpdate.ts
21
+ var useAutoUpdate_exports = {};
22
+ __export(useAutoUpdate_exports, {
23
+ useAutoUpdate: () => useAutoUpdate
24
+ });
25
+ module.exports = __toCommonJS(useAutoUpdate_exports);
26
+ var import_react = require("react");
27
+ var useAutoUpdate = ({
28
+ referenceRef,
29
+ floatingRef,
30
+ onUpdate,
31
+ enabled
32
+ }) => {
33
+ (0, import_react.useEffect)(() => {
34
+ if (!enabled) return;
35
+ const reference = referenceRef.current;
36
+ const floating = floatingRef.current;
37
+ const scrollOpts = {
38
+ capture: true,
39
+ passive: true
40
+ };
41
+ window.addEventListener("scroll", onUpdate, scrollOpts);
42
+ window.addEventListener("resize", onUpdate, { passive: true });
43
+ const observer = typeof ResizeObserver === "function" ? new ResizeObserver(onUpdate) : null;
44
+ if (observer && reference) observer.observe(reference);
45
+ if (observer && floating) observer.observe(floating);
46
+ return () => {
47
+ window.removeEventListener("scroll", onUpdate, scrollOpts);
48
+ window.removeEventListener("resize", onUpdate);
49
+ observer?.disconnect();
50
+ };
51
+ }, [enabled, onUpdate, referenceRef, floatingRef]);
52
+ };
53
+ //# sourceMappingURL=useAutoUpdate.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/Popover/useAutoUpdate.ts"],
4
+ "sourcesContent": ["import type { RefObject } from \"react\";\nimport { useEffect } from \"react\";\n\ninterface UseAutoUpdateArgs {\n referenceRef: RefObject<HTMLElement | null>;\n floatingRef: RefObject<HTMLDivElement | null>;\n onUpdate: () => void;\n enabled: boolean;\n}\n\nexport const useAutoUpdate = ({\n referenceRef,\n floatingRef,\n onUpdate,\n enabled,\n}: UseAutoUpdateArgs): void => {\n useEffect(() => {\n if (!enabled) return;\n\n const reference = referenceRef.current;\n const floating = floatingRef.current;\n\n const scrollOpts: AddEventListenerOptions = {\n capture: true,\n passive: true,\n };\n window.addEventListener(\"scroll\", onUpdate, scrollOpts);\n window.addEventListener(\"resize\", onUpdate, { passive: true });\n\n const observer =\n typeof ResizeObserver === \"function\"\n ? new ResizeObserver(onUpdate)\n : null;\n if (observer && reference) observer.observe(reference);\n if (observer && floating) observer.observe(floating);\n\n return () => {\n window.removeEventListener(\"scroll\", onUpdate, scrollOpts);\n window.removeEventListener(\"resize\", onUpdate);\n observer?.disconnect();\n };\n }, [enabled, onUpdate, referenceRef, floatingRef]);\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA0B;AASnB,IAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA+B;AAC7B,8BAAU,MAAM;AACd,QAAI,CAAC,QAAS;AAEd,UAAM,YAAY,aAAa;AAC/B,UAAM,WAAW,YAAY;AAE7B,UAAM,aAAsC;AAAA,MAC1C,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AACA,WAAO,iBAAiB,UAAU,UAAU,UAAU;AACtD,WAAO,iBAAiB,UAAU,UAAU,EAAE,SAAS,KAAK,CAAC;AAE7D,UAAM,WACJ,OAAO,mBAAmB,aACtB,IAAI,eAAe,QAAQ,IAC3B;AACN,QAAI,YAAY,UAAW,UAAS,QAAQ,SAAS;AACrD,QAAI,YAAY,SAAU,UAAS,QAAQ,QAAQ;AAEnD,WAAO,MAAM;AACX,aAAO,oBAAoB,UAAU,UAAU,UAAU;AACzD,aAAO,oBAAoB,UAAU,QAAQ;AAC7C,gBAAU,WAAW;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,SAAS,UAAU,cAAc,WAAW,CAAC;AACnD;",
6
+ "names": []
7
+ }