@navikt/ds-react 5.0.3 → 5.1.0

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/README.md CHANGED
@@ -33,4 +33,4 @@ function App() {
33
33
 
34
34
  ## License
35
35
 
36
- [MIT](https://github.com/navikt/aksel/blob/main/LICENCE)
36
+ [MIT](https://github.com/navikt/aksel/blob/main/LICENSE)
package/_docs.json CHANGED
@@ -5904,6 +5904,25 @@
5904
5904
  "name": "number | \"medium\" | \"small\" | `${number}${string}`"
5905
5905
  }
5906
5906
  },
5907
+ "portal": {
5908
+ "defaultValue": null,
5909
+ "description": "Lets you render the modal into a different part of the DOM.\nWill use `rootElement` from `Provider` if defined, otherwise `document.body`.",
5910
+ "name": "portal",
5911
+ "parent": {
5912
+ "fileName": "src/modal/Modal.tsx",
5913
+ "name": "ModalProps"
5914
+ },
5915
+ "declarations": [
5916
+ {
5917
+ "fileName": "src/modal/Modal.tsx",
5918
+ "name": "ModalProps"
5919
+ }
5920
+ ],
5921
+ "required": false,
5922
+ "type": {
5923
+ "name": "boolean"
5924
+ }
5925
+ },
5907
5926
  "className": {
5908
5927
  "defaultValue": null,
5909
5928
  "description": "User defined classname for modal",
@@ -75,7 +75,7 @@ const DateInput = (0, react_1.forwardRef)((props, ref) => {
75
75
  "navds-sr-only": hideLabel,
76
76
  }), id: inputDescriptionId, size: size }, description)),
77
77
  react_1.default.createElement("div", { className: "navds-date__field-wrapper" },
78
- react_1.default.createElement("input", Object.assign({ ref: ref }, (0, __1.omit)(rest, ["error", "errorId", "size"]), inputProps, { autoComplete: "off", "aria-controls": ariaId, readOnly: readOnly, className: (0, clsx_1.default)("navds-date__field-input", "navds-text-field__input", "navds-body-short", `navds-body-${size}`), size: 14 })),
78
+ react_1.default.createElement("input", Object.assign({ ref: ref }, (0, __1.omit)(rest, ["error", "errorId", "size"]), inputProps, { autoComplete: "off", "aria-controls": open ? ariaId : undefined, readOnly: readOnly, className: (0, clsx_1.default)("navds-date__field-input", "navds-text-field__input", "navds-body-short", `navds-body-${size}`), size: 14 })),
79
79
  react_1.default.createElement("button", { disabled: inputProps.disabled || readOnly, tabIndex: readOnly ? -1 : open ? -1 : 0, onClick: () => onOpen(), type: "button", className: "navds-date__field-button" },
80
80
  react_1.default.createElement(aksel_icons_1.CalendarIcon, { pointerEvents: "none", title: open
81
81
  ? conditionalVariables.iconTitle.close
@@ -39,15 +39,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.Modal = void 0;
41
41
  const react_1 = __importStar(require("react"));
42
+ const react_dom_1 = require("react-dom");
43
+ const react_2 = require("@floating-ui/react");
42
44
  const clsx_1 = __importDefault(require("clsx"));
43
- const dialog_polyfill_1 = __importDefault(require("./dialog-polyfill"));
45
+ const dialog_polyfill_1 = __importStar(require("./dialog-polyfill"));
44
46
  const __1 = require("..");
45
47
  const ModalBody_1 = __importDefault(require("./ModalBody"));
46
48
  const ModalHeader_1 = __importDefault(require("./ModalHeader"));
47
49
  const ModalFooter_1 = __importDefault(require("./ModalFooter"));
48
50
  const ModalUtils_1 = require("./ModalUtils");
49
51
  const ModalContext_1 = require("./ModalContext");
50
- const needPolyfill = typeof window !== "undefined" && window.HTMLDialogElement === undefined;
51
52
  /**
52
53
  * A component that displays a modal dialog.
53
54
  *
@@ -95,23 +96,29 @@ const needPolyfill = typeof window !== "undefined" && window.HTMLDialogElement =
95
96
  * ```
96
97
  */
97
98
  exports.Modal = (0, react_1.forwardRef)((_a, ref) => {
98
- var _b;
99
- var { header, children, open, onBeforeClose, onCancel, width, className, "aria-labelledby": ariaLabelledby, style } = _a, rest = __rest(_a, ["header", "children", "open", "onBeforeClose", "onCancel", "width", "className", "aria-labelledby", "style"]);
99
+ var _b, _c;
100
+ var { header, children, open, onBeforeClose, onCancel, width, portal, className, "aria-labelledby": ariaLabelledby, style } = _a, rest = __rest(_a, ["header", "children", "open", "onBeforeClose", "onCancel", "width", "portal", "className", "aria-labelledby", "style"]);
100
101
  const modalRef = (0, react_1.useRef)(null);
101
102
  const mergedRef = (0, react_1.useMemo)(() => (0, __1.mergeRefs)([modalRef, ref]), [ref]);
102
103
  const ariaLabelId = (0, __1.useId)();
104
+ const rootElement = (_b = (0, __1.useProvider)()) === null || _b === void 0 ? void 0 : _b.rootElement;
105
+ const portalNode = (0, react_2.useFloatingPortalNode)({ root: rootElement });
103
106
  if ((0, react_1.useContext)(ModalContext_1.ModalContext)) {
104
107
  console.error("Modals should not be nested");
105
108
  }
106
109
  (0, react_1.useEffect)(() => {
107
- if (needPolyfill && modalRef.current) {
110
+ // If using portal, modalRef.current will not be set before portalNode is set.
111
+ // If not using portal, modalRef.current is available first.
112
+ // We check both to avoid activating polyfill twice when not using portal.
113
+ if (dialog_polyfill_1.needPolyfill && modalRef.current && portalNode) {
108
114
  dialog_polyfill_1.default.registerDialog(modalRef.current);
109
115
  }
110
- }, [modalRef]);
116
+ }, [modalRef, portalNode]);
111
117
  (0, react_1.useEffect)(() => {
112
118
  // We need to have this in a useEffect so that the content renders before the modal is displayed,
113
119
  // and in case `open` is true initially.
114
- if (modalRef.current && open !== undefined) {
120
+ // We need to check both modalRef.current and portalNode to make sure the polyfill has been activated.
121
+ if (modalRef.current && portalNode && open !== undefined) {
115
122
  if (open && !modalRef.current.open) {
116
123
  modalRef.current.showModal();
117
124
  }
@@ -119,11 +126,11 @@ exports.Modal = (0, react_1.forwardRef)((_a, ref) => {
119
126
  modalRef.current.close();
120
127
  }
121
128
  }
122
- }, [modalRef, open]);
123
- (0, ModalUtils_1.useBodyScrollLock)(modalRef, "navds-modal__document-body");
129
+ }, [modalRef, portalNode, open]);
130
+ (0, ModalUtils_1.useBodyScrollLock)(modalRef, portalNode);
124
131
  const isWidthPreset = typeof width === "string" && ["small", "medium"].includes(width);
125
- return (react_1.default.createElement("dialog", Object.assign({ ref: mergedRef, className: (0, clsx_1.default)("navds-modal", className, {
126
- "navds-modal--polyfilled": needPolyfill,
132
+ const component = (react_1.default.createElement("dialog", Object.assign({ ref: mergedRef, className: (0, clsx_1.default)("navds-modal", className, {
133
+ "navds-modal--polyfilled": dialog_polyfill_1.needPolyfill,
127
134
  "navds-modal--autowidth": !width,
128
135
  [`navds-modal--${width}`]: isWidthPreset,
129
136
  }), style: Object.assign(Object.assign({}, style), (!isWidthPreset ? { width } : {})), onCancel: (event) => {
@@ -141,10 +148,16 @@ exports.Modal = (0, react_1.forwardRef)((_a, ref) => {
141
148
  } },
142
149
  header && (react_1.default.createElement(ModalHeader_1.default, null,
143
150
  header.label && (react_1.default.createElement(__1.Detail, { className: "navds-modal__label" }, header.label)),
144
- react_1.default.createElement(__1.Heading, { size: (_b = header.size) !== null && _b !== void 0 ? _b : "medium", level: "1", id: ariaLabelId },
151
+ react_1.default.createElement(__1.Heading, { size: (_c = header.size) !== null && _c !== void 0 ? _c : "medium", level: "1", id: ariaLabelId },
145
152
  react_1.default.createElement("span", { className: "navds-modal__header-icon" }, header.icon),
146
153
  header.heading))),
147
154
  children)));
155
+ if (portal) {
156
+ if (portalNode)
157
+ return (0, react_dom_1.createPortal)(component, portalNode);
158
+ return null;
159
+ }
160
+ return component;
148
161
  });
149
162
  exports.Modal.Header = ModalHeader_1.default;
150
163
  exports.Modal.Body = ModalBody_1.default;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.useBodyScrollLock = exports.getCloseHandler = void 0;
6
+ exports.useBodyScrollLock = exports.BODY_CLASS = exports.getCloseHandler = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  function getCloseHandler(modalRef, header, onBeforeClose) {
9
9
  if (header && header.closeButton === false)
@@ -14,18 +14,19 @@ function getCloseHandler(modalRef, header, onBeforeClose) {
14
14
  return () => { var _a; return (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.close(); };
15
15
  }
16
16
  exports.getCloseHandler = getCloseHandler;
17
- function useBodyScrollLock(modalRef, bodyClass) {
17
+ exports.BODY_CLASS = "navds-modal__document-body";
18
+ function useBodyScrollLock(modalRef, portalNode) {
18
19
  react_1.default.useEffect(() => {
19
- if (!modalRef.current)
20
- return;
20
+ if (!modalRef.current || !portalNode)
21
+ return; // We check both to avoid running this twice when not using portal
21
22
  if (modalRef.current.open)
22
- document.body.classList.add(bodyClass); // In case `open` is true initially
23
+ document.body.classList.add(exports.BODY_CLASS); // In case `open` is true initially
23
24
  const observer = new MutationObserver(() => {
24
25
  var _a;
25
26
  if ((_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.open)
26
- document.body.classList.add(bodyClass);
27
+ document.body.classList.add(exports.BODY_CLASS);
27
28
  else
28
- document.body.classList.remove(bodyClass);
29
+ document.body.classList.remove(exports.BODY_CLASS);
29
30
  });
30
31
  observer.observe(modalRef.current, {
31
32
  attributes: true,
@@ -33,8 +34,8 @@ function useBodyScrollLock(modalRef, bodyClass) {
33
34
  });
34
35
  return () => {
35
36
  observer.disconnect();
36
- document.body.classList.remove(bodyClass); // In case modal is unmounted before it's closed
37
+ document.body.classList.remove(exports.BODY_CLASS); // In case modal is unmounted before it's closed
37
38
  };
38
- }, [modalRef, bodyClass]);
39
+ }, [modalRef, portalNode]);
39
40
  }
40
41
  exports.useBodyScrollLock = useBodyScrollLock;
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  // @ts-nocheck
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.needPolyfill = void 0;
5
+ exports.needPolyfill = typeof window !== "undefined" &&
6
+ (window.HTMLDialogElement === undefined ||
7
+ navigator.userAgent.includes("jsdom"));
4
8
  // Copyright (c) 2013 The Chromium Authors. All rights reserved.
5
9
  //
6
10
  // Redistribution and use in source and binary forms, with or without
@@ -43,31 +47,6 @@ function safeDispatchEvent(target, event) {
43
47
  }
44
48
  return target.dispatchEvent(event);
45
49
  }
46
- /**
47
- * @param {Element} el to check for stacking context
48
- * @return {boolean} whether this el or its parents creates a stacking context
49
- */
50
- function createsStackingContext(el) {
51
- while (el && el !== document.body) {
52
- var s = window.getComputedStyle(el);
53
- var invalid = function (k, ok) {
54
- return !(s[k] === undefined || s[k] === ok);
55
- };
56
- if (s.opacity < 1 ||
57
- invalid("zIndex", "auto") ||
58
- invalid("transform", "none") ||
59
- invalid("mixBlendMode", "normal") ||
60
- invalid("filter", "none") ||
61
- invalid("perspective", "none") ||
62
- s["isolation"] === "isolate" ||
63
- s.position === "fixed" ||
64
- s.webkitOverflowScrolling === "touch") {
65
- return true;
66
- }
67
- el = el.parentElement;
68
- }
69
- return false;
70
- }
71
50
  /**
72
51
  * Finds the nearest <dialog> from the passed element.
73
52
  *
@@ -409,11 +388,6 @@ dialogPolyfillInfo.prototype = /** @type {HTMLDialogElement.prototype} */ {
409
388
  if (!dialogPolyfill.dm.pushDialog(this)) {
410
389
  throw new Error("Failed to execute 'showModal' on dialog: There are too many open modal dialogs.");
411
390
  }
412
- if (createsStackingContext(this.dialog_.parentElement)) {
413
- console.warn("A dialog is being shown inside a stacking context. " +
414
- "This may cause it to be unusable. For more information, see this link: " +
415
- "https://github.com/GoogleChrome/dialog-polyfill/#stacking-context");
416
- }
417
391
  this.setOpen(true);
418
392
  this.openAsModal_ = true;
419
393
  // Optionally center vertically, relative to the current viewport.
@@ -514,7 +488,7 @@ dialogPolyfill.needsCentering = function (dialog) {
514
488
  * @param {!Element} element to force upgrade
515
489
  */
516
490
  dialogPolyfill.forceRegisterDialog = function (element) {
517
- if (window.HTMLDialogElement || element.showModal) {
491
+ if (element.showModal) {
518
492
  console.warn("This browser already supports <dialog>, the polyfill " +
519
493
  "may not work correctly", element);
520
494
  }
@@ -726,7 +700,7 @@ dialogPolyfill.DialogManager.prototype.removeDialog = function (dpi) {
726
700
  }
727
701
  this.updateStacking();
728
702
  };
729
- if (typeof window !== "undefined" && window.HTMLDialogElement === undefined) {
703
+ if (exports.needPolyfill) {
730
704
  dialogPolyfill.dm = new dialogPolyfill.DialogManager();
731
705
  dialogPolyfill.formSubmitter = null;
732
706
  dialogPolyfill.imagemapUseValue = null;
@@ -735,7 +709,7 @@ if (typeof window !== "undefined" && window.HTMLDialogElement === undefined) {
735
709
  * Installs global handlers, such as click listers and native method overrides. These are needed
736
710
  * even if a no dialog is registered, as they deal with <form method="dialog">.
737
711
  */
738
- if (typeof window !== "undefined" && window.HTMLDialogElement === undefined) {
712
+ if (exports.needPolyfill) {
739
713
  /**
740
714
  * If HTMLFormElement translates method="DIALOG" into 'get', then replace the descriptor with
741
715
  * one that returns the correct value.
@@ -46,7 +46,7 @@ const DateInput = forwardRef((props, ref) => {
46
46
  "navds-sr-only": hideLabel,
47
47
  }), id: inputDescriptionId, size: size }, description)),
48
48
  React.createElement("div", { className: "navds-date__field-wrapper" },
49
- React.createElement("input", Object.assign({ ref: ref }, omit(rest, ["error", "errorId", "size"]), inputProps, { autoComplete: "off", "aria-controls": ariaId, readOnly: readOnly, className: cl("navds-date__field-input", "navds-text-field__input", "navds-body-short", `navds-body-${size}`), size: 14 })),
49
+ React.createElement("input", Object.assign({ ref: ref }, omit(rest, ["error", "errorId", "size"]), inputProps, { autoComplete: "off", "aria-controls": open ? ariaId : undefined, readOnly: readOnly, className: cl("navds-date__field-input", "navds-text-field__input", "navds-body-short", `navds-body-${size}`), size: 14 })),
50
50
  React.createElement("button", { disabled: inputProps.disabled || readOnly, tabIndex: readOnly ? -1 : open ? -1 : 0, onClick: () => onOpen(), type: "button", className: "navds-date__field-button" },
51
51
  React.createElement(CalendarIcon, { pointerEvents: "none", title: open
52
52
  ? conditionalVariables.iconTitle.close
@@ -1 +1 @@
1
- {"version":3,"file":"DateInput.js","sourceRoot":"","sources":["../../src/date/DateInput.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DateInput.js","sourceRoot":"","sources":["../../src/date/DateInput.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAE,UAAU,EAAuB,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1D,OAAO,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAyBpD,MAAM,SAAS,GAAG,UAAU,CAAmC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC5E,MAAM,EACJ,SAAS,EACT,SAAS,GAAG,KAAK,EACjB,KAAK,EACL,WAAW,EACX,OAAO,GAAG,YAAY,KAEpB,KAAK,EADJ,IAAI,UACL,KAAK,EAPH,6DAOL,CAAQ,CAAC;IAEV,MAAM,mBAAmB,GAAG,OAAO,KAAK,YAAY,CAAC;IAErD,MAAM,oBAAoB,GAAG;QAC3B,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB;QACtE,SAAS,EAAE;YACT,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB;YACnE,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB;SACrE;KACF,CAAC;IAEF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAEvD,MAAM,EACJ,UAAU,EACV,IAAI,GAAG,QAAQ,EACf,kBAAkB,EAClB,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,QAAQ,GACT,GAAG,YAAY,CAAC,KAAK,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAErD,OAAO,CACL,6BACE,SAAS,EAAE,EAAE,CACX,SAAS,EACT,kBAAkB,EAClB,qBAAqB,IAAI,EAAE,EAC3B,mBAAmB,EACnB;YACE,yBAAyB,EAAE,QAAQ;YACnC,0BAA0B,EAAE,QAAQ;YACpC,4BAA4B,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ;YACnD,4BAA4B,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ;YACnD,4BAA4B,EAAE,QAAQ;YACtC,4BAA4B,EAAE,QAAQ;YACtC,6BAA6B,EAAE,QAAQ;SACxC,CACF;QAED,oBAAC,KAAK,IACJ,OAAO,EAAE,UAAU,CAAC,EAAE,EACtB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE;gBACvC,eAAe,EAAE,SAAS;aAC3B,CAAC;YAEF,oBAAC,YAAY,IAAC,QAAQ,EAAE,QAAQ,GAAI;YACnC,KAAK,CACA;QACP,CAAC,CAAC,WAAW,IAAI,CAChB,oBAAC,SAAS,IACR,EAAE,EAAC,KAAK,EACR,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE;gBAC7C,eAAe,EAAE,SAAS;aAC3B,CAAC,EACF,EAAE,EAAE,kBAAkB,EACtB,IAAI,EAAE,IAAI,IAET,WAAW,CACF,CACb;QACD,6BAAK,SAAS,EAAC,2BAA2B;YACxC,6CACE,GAAG,EAAE,GAAG,IACJ,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,EACxC,UAAU,IACd,YAAY,EAAC,KAAK,mBACH,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACxC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CACX,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,IAAI,EAAE,CACrB,EACD,IAAI,EAAE,EAAE,IACR;YACF,gCACE,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAI,QAAQ,EACzC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EACvB,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,0BAA0B;gBAEpC,oBAAC,YAAY,IACX,aAAa,EAAC,MAAM,EACpB,KAAK,EACH,IAAI;wBACF,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,KAAK;wBACtC,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,GAEzC,CACK,CACL;QACN,6BACE,SAAS,EAAC,yBAAyB,EACnC,EAAE,EAAE,OAAO,mBACG,oBAAoB,eACxB,QAAQ,IAEjB,YAAY,IAAI,oBAAC,YAAY,IAAC,IAAI,EAAE,IAAI,IAAG,KAAK,CAAC,KAAK,CAAgB,CACnE,CACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CACvC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,oBAAC,SAAS,oBAAK,KAAK,IAAE,GAAG,EAAE,GAAG,IAAI,CACnD,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CACxC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,oBAAC,SAAS,oBAAK,KAAK,IAAE,OAAO,EAAC,aAAa,EAAC,GAAG,EAAE,GAAG,IAAI,CACzE,CAAC"}
@@ -49,6 +49,11 @@ export interface ModalProps extends React.DialogHTMLAttributes<HTMLDialogElement
49
49
  * @default fit-content (up to 700px)
50
50
  * */
51
51
  width?: "medium" | "small" | number | `${number}${string}`;
52
+ /**
53
+ * Lets you render the modal into a different part of the DOM.
54
+ * Will use `rootElement` from `Provider` if defined, otherwise `document.body`.
55
+ */
56
+ portal?: boolean;
52
57
  /**
53
58
  * User defined classname for modal
54
59
  */
@@ -10,15 +10,16 @@ var __rest = (this && this.__rest) || function (s, e) {
10
10
  return t;
11
11
  };
12
12
  import React, { forwardRef, useContext, useEffect, useMemo, useRef, } from "react";
13
+ import { createPortal } from "react-dom";
14
+ import { useFloatingPortalNode } from "@floating-ui/react";
13
15
  import cl from "clsx";
14
- import dialogPolyfill from "./dialog-polyfill";
15
- import { Detail, Heading, mergeRefs, useId } from "..";
16
+ import dialogPolyfill, { needPolyfill } from "./dialog-polyfill";
17
+ import { Detail, Heading, mergeRefs, useId, useProvider } from "..";
16
18
  import ModalBody from "./ModalBody";
17
19
  import ModalHeader from "./ModalHeader";
18
20
  import ModalFooter from "./ModalFooter";
19
21
  import { getCloseHandler, useBodyScrollLock } from "./ModalUtils";
20
22
  import { ModalContext } from "./ModalContext";
21
- const needPolyfill = typeof window !== "undefined" && window.HTMLDialogElement === undefined;
22
23
  /**
23
24
  * A component that displays a modal dialog.
24
25
  *
@@ -66,23 +67,29 @@ const needPolyfill = typeof window !== "undefined" && window.HTMLDialogElement =
66
67
  * ```
67
68
  */
68
69
  export const Modal = forwardRef((_a, ref) => {
69
- var _b;
70
- var { header, children, open, onBeforeClose, onCancel, width, className, "aria-labelledby": ariaLabelledby, style } = _a, rest = __rest(_a, ["header", "children", "open", "onBeforeClose", "onCancel", "width", "className", "aria-labelledby", "style"]);
70
+ var _b, _c;
71
+ var { header, children, open, onBeforeClose, onCancel, width, portal, className, "aria-labelledby": ariaLabelledby, style } = _a, rest = __rest(_a, ["header", "children", "open", "onBeforeClose", "onCancel", "width", "portal", "className", "aria-labelledby", "style"]);
71
72
  const modalRef = useRef(null);
72
73
  const mergedRef = useMemo(() => mergeRefs([modalRef, ref]), [ref]);
73
74
  const ariaLabelId = useId();
75
+ const rootElement = (_b = useProvider()) === null || _b === void 0 ? void 0 : _b.rootElement;
76
+ const portalNode = useFloatingPortalNode({ root: rootElement });
74
77
  if (useContext(ModalContext)) {
75
78
  console.error("Modals should not be nested");
76
79
  }
77
80
  useEffect(() => {
78
- if (needPolyfill && modalRef.current) {
81
+ // If using portal, modalRef.current will not be set before portalNode is set.
82
+ // If not using portal, modalRef.current is available first.
83
+ // We check both to avoid activating polyfill twice when not using portal.
84
+ if (needPolyfill && modalRef.current && portalNode) {
79
85
  dialogPolyfill.registerDialog(modalRef.current);
80
86
  }
81
- }, [modalRef]);
87
+ }, [modalRef, portalNode]);
82
88
  useEffect(() => {
83
89
  // We need to have this in a useEffect so that the content renders before the modal is displayed,
84
90
  // and in case `open` is true initially.
85
- if (modalRef.current && open !== undefined) {
91
+ // We need to check both modalRef.current and portalNode to make sure the polyfill has been activated.
92
+ if (modalRef.current && portalNode && open !== undefined) {
86
93
  if (open && !modalRef.current.open) {
87
94
  modalRef.current.showModal();
88
95
  }
@@ -90,10 +97,10 @@ export const Modal = forwardRef((_a, ref) => {
90
97
  modalRef.current.close();
91
98
  }
92
99
  }
93
- }, [modalRef, open]);
94
- useBodyScrollLock(modalRef, "navds-modal__document-body");
100
+ }, [modalRef, portalNode, open]);
101
+ useBodyScrollLock(modalRef, portalNode);
95
102
  const isWidthPreset = typeof width === "string" && ["small", "medium"].includes(width);
96
- return (React.createElement("dialog", Object.assign({ ref: mergedRef, className: cl("navds-modal", className, {
103
+ const component = (React.createElement("dialog", Object.assign({ ref: mergedRef, className: cl("navds-modal", className, {
97
104
  "navds-modal--polyfilled": needPolyfill,
98
105
  "navds-modal--autowidth": !width,
99
106
  [`navds-modal--${width}`]: isWidthPreset,
@@ -112,10 +119,16 @@ export const Modal = forwardRef((_a, ref) => {
112
119
  } },
113
120
  header && (React.createElement(ModalHeader, null,
114
121
  header.label && (React.createElement(Detail, { className: "navds-modal__label" }, header.label)),
115
- React.createElement(Heading, { size: (_b = header.size) !== null && _b !== void 0 ? _b : "medium", level: "1", id: ariaLabelId },
122
+ React.createElement(Heading, { size: (_c = header.size) !== null && _c !== void 0 ? _c : "medium", level: "1", id: ariaLabelId },
116
123
  React.createElement("span", { className: "navds-modal__header-icon" }, header.icon),
117
124
  header.heading))),
118
125
  children)));
126
+ if (portal) {
127
+ if (portalNode)
128
+ return createPortal(component, portalNode);
129
+ return null;
130
+ }
131
+ return component;
119
132
  });
120
133
  Modal.Header = ModalHeader;
121
134
  Modal.Body = ModalBody;
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../src/modal/Modal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../src/modal/Modal.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
2
  import type { ModalProps } from "./Modal";
3
3
  export declare function getCloseHandler(modalRef: React.RefObject<HTMLDialogElement>, header: ModalProps["header"], onBeforeClose: ModalProps["onBeforeClose"]): (() => false | void | undefined) | undefined;
4
- export declare function useBodyScrollLock(modalRef: React.RefObject<HTMLDialogElement>, bodyClass: string): void;
4
+ export declare const BODY_CLASS = "navds-modal__document-body";
5
+ export declare function useBodyScrollLock(modalRef: React.RefObject<HTMLDialogElement>, portalNode: HTMLElement | null): void;
@@ -7,18 +7,19 @@ export function getCloseHandler(modalRef, header, onBeforeClose) {
7
7
  }
8
8
  return () => { var _a; return (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.close(); };
9
9
  }
10
- export function useBodyScrollLock(modalRef, bodyClass) {
10
+ export const BODY_CLASS = "navds-modal__document-body";
11
+ export function useBodyScrollLock(modalRef, portalNode) {
11
12
  React.useEffect(() => {
12
- if (!modalRef.current)
13
- return;
13
+ if (!modalRef.current || !portalNode)
14
+ return; // We check both to avoid running this twice when not using portal
14
15
  if (modalRef.current.open)
15
- document.body.classList.add(bodyClass); // In case `open` is true initially
16
+ document.body.classList.add(BODY_CLASS); // In case `open` is true initially
16
17
  const observer = new MutationObserver(() => {
17
18
  var _a;
18
19
  if ((_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.open)
19
- document.body.classList.add(bodyClass);
20
+ document.body.classList.add(BODY_CLASS);
20
21
  else
21
- document.body.classList.remove(bodyClass);
22
+ document.body.classList.remove(BODY_CLASS);
22
23
  });
23
24
  observer.observe(modalRef.current, {
24
25
  attributes: true,
@@ -26,8 +27,8 @@ export function useBodyScrollLock(modalRef, bodyClass) {
26
27
  });
27
28
  return () => {
28
29
  observer.disconnect();
29
- document.body.classList.remove(bodyClass); // In case modal is unmounted before it's closed
30
+ document.body.classList.remove(BODY_CLASS); // In case modal is unmounted before it's closed
30
31
  };
31
- }, [modalRef, bodyClass]);
32
+ }, [modalRef, portalNode]);
32
33
  }
33
34
  //# sourceMappingURL=ModalUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModalUtils.js","sourceRoot":"","sources":["../../src/modal/ModalUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,UAAU,eAAe,CAC7B,QAA4C,EAC5C,MAA4B,EAC5B,aAA0C;IAE1C,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7D,IAAI,aAAa,EAAE;QACjB,OAAO,GAAG,EAAE,WAAC,OAAA,aAAa,EAAE,KAAK,KAAK,KAAI,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA,CAAA,EAAA,CAAC;KACrE;IACD,OAAO,GAAG,EAAE,WAAC,OAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA,EAAA,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAA4C,EAC5C,SAAiB;IAEjB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAO;QAC9B,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,mCAAmC;QAEtG,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;;YACzC,IAAI,MAAA,QAAQ,CAAC,OAAO,0CAAE,IAAI;gBAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;;gBAC9D,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE;YACjC,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,CAAC,MAAM,CAAC;SAC1B,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,gDAAgD;QAC7F,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"ModalUtils.js","sourceRoot":"","sources":["../../src/modal/ModalUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,UAAU,eAAe,CAC7B,QAA4C,EAC5C,MAA4B,EAC5B,aAA0C;IAE1C,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7D,IAAI,aAAa,EAAE;QACjB,OAAO,GAAG,EAAE,WAAC,OAAA,aAAa,EAAE,KAAK,KAAK,KAAI,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA,CAAA,EAAA,CAAC;KACrE;IACD,OAAO,GAAG,EAAE,WAAC,OAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA,EAAA,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,4BAA4B,CAAC;AAEvD,MAAM,UAAU,iBAAiB,CAC/B,QAA4C,EAC5C,UAA8B;IAE9B,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,kEAAkE;QAChH,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,mCAAmC;QAEvG,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;;YACzC,IAAI,MAAA,QAAQ,CAAC,OAAO,0CAAE,IAAI;gBAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;;gBAC/D,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE;YACjC,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,CAAC,MAAM,CAAC;SAC1B,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,gDAAgD;QAC9F,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;AAC7B,CAAC"}
@@ -1,3 +1,4 @@
1
+ export declare const needPolyfill: boolean;
1
2
  declare const _default: {
2
3
  registerDialog(dialog: HTMLDialogElement): void;
3
4
  forceRegisterDialog(dialog: HTMLDialogElement): void;
@@ -1,4 +1,7 @@
1
1
  // @ts-nocheck
2
+ export const needPolyfill = typeof window !== "undefined" &&
3
+ (window.HTMLDialogElement === undefined ||
4
+ navigator.userAgent.includes("jsdom"));
2
5
  // Copyright (c) 2013 The Chromium Authors. All rights reserved.
3
6
  //
4
7
  // Redistribution and use in source and binary forms, with or without
@@ -41,31 +44,6 @@ function safeDispatchEvent(target, event) {
41
44
  }
42
45
  return target.dispatchEvent(event);
43
46
  }
44
- /**
45
- * @param {Element} el to check for stacking context
46
- * @return {boolean} whether this el or its parents creates a stacking context
47
- */
48
- function createsStackingContext(el) {
49
- while (el && el !== document.body) {
50
- var s = window.getComputedStyle(el);
51
- var invalid = function (k, ok) {
52
- return !(s[k] === undefined || s[k] === ok);
53
- };
54
- if (s.opacity < 1 ||
55
- invalid("zIndex", "auto") ||
56
- invalid("transform", "none") ||
57
- invalid("mixBlendMode", "normal") ||
58
- invalid("filter", "none") ||
59
- invalid("perspective", "none") ||
60
- s["isolation"] === "isolate" ||
61
- s.position === "fixed" ||
62
- s.webkitOverflowScrolling === "touch") {
63
- return true;
64
- }
65
- el = el.parentElement;
66
- }
67
- return false;
68
- }
69
47
  /**
70
48
  * Finds the nearest <dialog> from the passed element.
71
49
  *
@@ -407,11 +385,6 @@ dialogPolyfillInfo.prototype = /** @type {HTMLDialogElement.prototype} */ {
407
385
  if (!dialogPolyfill.dm.pushDialog(this)) {
408
386
  throw new Error("Failed to execute 'showModal' on dialog: There are too many open modal dialogs.");
409
387
  }
410
- if (createsStackingContext(this.dialog_.parentElement)) {
411
- console.warn("A dialog is being shown inside a stacking context. " +
412
- "This may cause it to be unusable. For more information, see this link: " +
413
- "https://github.com/GoogleChrome/dialog-polyfill/#stacking-context");
414
- }
415
388
  this.setOpen(true);
416
389
  this.openAsModal_ = true;
417
390
  // Optionally center vertically, relative to the current viewport.
@@ -512,7 +485,7 @@ dialogPolyfill.needsCentering = function (dialog) {
512
485
  * @param {!Element} element to force upgrade
513
486
  */
514
487
  dialogPolyfill.forceRegisterDialog = function (element) {
515
- if (window.HTMLDialogElement || element.showModal) {
488
+ if (element.showModal) {
516
489
  console.warn("This browser already supports <dialog>, the polyfill " +
517
490
  "may not work correctly", element);
518
491
  }
@@ -724,7 +697,7 @@ dialogPolyfill.DialogManager.prototype.removeDialog = function (dpi) {
724
697
  }
725
698
  this.updateStacking();
726
699
  };
727
- if (typeof window !== "undefined" && window.HTMLDialogElement === undefined) {
700
+ if (needPolyfill) {
728
701
  dialogPolyfill.dm = new dialogPolyfill.DialogManager();
729
702
  dialogPolyfill.formSubmitter = null;
730
703
  dialogPolyfill.imagemapUseValue = null;
@@ -733,7 +706,7 @@ if (typeof window !== "undefined" && window.HTMLDialogElement === undefined) {
733
706
  * Installs global handlers, such as click listers and native method overrides. These are needed
734
707
  * even if a no dialog is registered, as they deal with <form method="dialog">.
735
708
  */
736
- if (typeof window !== "undefined" && window.HTMLDialogElement === undefined) {
709
+ if (needPolyfill) {
737
710
  /**
738
711
  * If HTMLFormElement translates method="DIALOG" into 'get', then replace the descriptor with
739
712
  * one that returns the correct value.
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-polyfill.js","sourceRoot":"","sources":["../../src/modal/dialog-polyfill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dialog-polyfill.js","sourceRoot":"","sources":["../../src/modal/dialog-polyfill.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@navikt/ds-react",
3
- "version": "5.0.3",
3
+ "version": "5.1.0",
4
4
  "description": "Aksel react-components for NAV designsystem",
5
5
  "author": "Aksel | NAV designsystem team",
6
6
  "license": "MIT",
@@ -38,7 +38,7 @@
38
38
  },
39
39
  "dependencies": {
40
40
  "@floating-ui/react": "0.24.1",
41
- "@navikt/aksel-icons": "^5.0.3",
41
+ "@navikt/aksel-icons": "^5.1.0",
42
42
  "@radix-ui/react-tabs": "1.0.0",
43
43
  "@radix-ui/react-toggle-group": "1.0.0",
44
44
  "clsx": "^1.2.1",
@@ -107,7 +107,7 @@ const DateInput = forwardRef<HTMLInputElement, DateInputProps>((props, ref) => {
107
107
  {...omit(rest, ["error", "errorId", "size"])}
108
108
  {...inputProps}
109
109
  autoComplete="off"
110
- aria-controls={ariaId}
110
+ aria-controls={open ? ariaId : undefined}
111
111
  readOnly={readOnly}
112
112
  className={cl(
113
113
  "navds-date__field-input",
@@ -0,0 +1,54 @@
1
+ import React, { useState } from "react";
2
+ import { fireEvent, render, screen, waitFor } from "@testing-library/react";
3
+ import { Button, Modal } from "..";
4
+ import { BODY_CLASS } from "./ModalUtils";
5
+
6
+ const Test = () => {
7
+ const [open, setOpen] = useState(true);
8
+
9
+ return (
10
+ <Modal open={open}>
11
+ <Modal.Body>
12
+ <p>Foobar</p>
13
+ <Button onClick={() => setOpen(false)}>Close</Button>
14
+ </Modal.Body>
15
+ </Modal>
16
+ );
17
+ };
18
+
19
+ describe("Modal", () => {
20
+ test("should be visible", () => {
21
+ render(<Test />);
22
+ expect(screen.getByText("Foobar")).toBeVisible();
23
+ });
24
+
25
+ test("should be hidden after setting 'open' to false", async () => {
26
+ render(<Test />);
27
+ fireEvent.click(screen.getByText("Close"));
28
+ expect(screen.getByText("Foobar")).not.toBeVisible();
29
+ });
30
+
31
+ test("should toggle body class", async () => {
32
+ render(<Test />);
33
+ expect(document.body.classList).toContain(BODY_CLASS);
34
+
35
+ fireEvent.click(screen.getByText("Close"));
36
+ await waitFor(() =>
37
+ expect(document.body.classList).not.toContain(BODY_CLASS)
38
+ );
39
+ });
40
+
41
+ test("should toggle body class when using portal", async () => {
42
+ render(
43
+ <Modal portal open>
44
+ <Modal.Header />
45
+ </Modal>
46
+ );
47
+ expect(document.body.classList).toContain(BODY_CLASS);
48
+
49
+ fireEvent.click(screen.getByRole("button"));
50
+ await waitFor(() =>
51
+ expect(document.body.classList).not.toContain(BODY_CLASS)
52
+ );
53
+ });
54
+ });
@@ -5,18 +5,17 @@ import React, {
5
5
  useMemo,
6
6
  useRef,
7
7
  } from "react";
8
+ import { createPortal } from "react-dom";
9
+ import { useFloatingPortalNode } from "@floating-ui/react";
8
10
  import cl from "clsx";
9
- import dialogPolyfill from "./dialog-polyfill";
10
- import { Detail, Heading, mergeRefs, useId } from "..";
11
+ import dialogPolyfill, { needPolyfill } from "./dialog-polyfill";
12
+ import { Detail, Heading, mergeRefs, useId, useProvider } from "..";
11
13
  import ModalBody from "./ModalBody";
12
14
  import ModalHeader from "./ModalHeader";
13
15
  import ModalFooter from "./ModalFooter";
14
16
  import { getCloseHandler, useBodyScrollLock } from "./ModalUtils";
15
17
  import { ModalContext } from "./ModalContext";
16
18
 
17
- const needPolyfill =
18
- typeof window !== "undefined" && window.HTMLDialogElement === undefined;
19
-
20
19
  export interface ModalProps
21
20
  extends React.DialogHTMLAttributes<HTMLDialogElement> {
22
21
  /**
@@ -65,6 +64,11 @@ export interface ModalProps
65
64
  * @default fit-content (up to 700px)
66
65
  * */
67
66
  width?: "medium" | "small" | number | `${number}${string}`;
67
+ /**
68
+ * Lets you render the modal into a different part of the DOM.
69
+ * Will use `rootElement` from `Provider` if defined, otherwise `document.body`.
70
+ */
71
+ portal?: boolean;
68
72
  /**
69
73
  * User defined classname for modal
70
74
  */
@@ -141,6 +145,7 @@ export const Modal = forwardRef<HTMLDialogElement, ModalProps>(
141
145
  onBeforeClose,
142
146
  onCancel,
143
147
  width,
148
+ portal,
144
149
  className,
145
150
  "aria-labelledby": ariaLabelledby,
146
151
  style,
@@ -151,35 +156,41 @@ export const Modal = forwardRef<HTMLDialogElement, ModalProps>(
151
156
  const modalRef = useRef<HTMLDialogElement>(null);
152
157
  const mergedRef = useMemo(() => mergeRefs([modalRef, ref]), [ref]);
153
158
  const ariaLabelId = useId();
159
+ const rootElement = useProvider()?.rootElement;
160
+ const portalNode = useFloatingPortalNode({ root: rootElement });
154
161
 
155
162
  if (useContext(ModalContext)) {
156
163
  console.error("Modals should not be nested");
157
164
  }
158
165
 
159
166
  useEffect(() => {
160
- if (needPolyfill && modalRef.current) {
167
+ // If using portal, modalRef.current will not be set before portalNode is set.
168
+ // If not using portal, modalRef.current is available first.
169
+ // We check both to avoid activating polyfill twice when not using portal.
170
+ if (needPolyfill && modalRef.current && portalNode) {
161
171
  dialogPolyfill.registerDialog(modalRef.current);
162
172
  }
163
- }, [modalRef]);
173
+ }, [modalRef, portalNode]);
164
174
 
165
175
  useEffect(() => {
166
176
  // We need to have this in a useEffect so that the content renders before the modal is displayed,
167
177
  // and in case `open` is true initially.
168
- if (modalRef.current && open !== undefined) {
178
+ // We need to check both modalRef.current and portalNode to make sure the polyfill has been activated.
179
+ if (modalRef.current && portalNode && open !== undefined) {
169
180
  if (open && !modalRef.current.open) {
170
181
  modalRef.current.showModal();
171
182
  } else if (!open && modalRef.current.open) {
172
183
  modalRef.current.close();
173
184
  }
174
185
  }
175
- }, [modalRef, open]);
186
+ }, [modalRef, portalNode, open]);
176
187
 
177
- useBodyScrollLock(modalRef, "navds-modal__document-body");
188
+ useBodyScrollLock(modalRef, portalNode);
178
189
 
179
190
  const isWidthPreset =
180
191
  typeof width === "string" && ["small", "medium"].includes(width);
181
192
 
182
- return (
193
+ const component = (
183
194
  <dialog
184
195
  ref={mergedRef}
185
196
  className={cl("navds-modal", className, {
@@ -229,6 +240,12 @@ export const Modal = forwardRef<HTMLDialogElement, ModalProps>(
229
240
  </ModalContext.Provider>
230
241
  </dialog>
231
242
  );
243
+
244
+ if (portal) {
245
+ if (portalNode) return createPortal(component, portalNode);
246
+ return null;
247
+ }
248
+ return component;
232
249
  }
233
250
  ) as ModalComponent;
234
251
 
@@ -13,17 +13,19 @@ export function getCloseHandler(
13
13
  return () => modalRef.current?.close();
14
14
  }
15
15
 
16
+ export const BODY_CLASS = "navds-modal__document-body";
17
+
16
18
  export function useBodyScrollLock(
17
19
  modalRef: React.RefObject<HTMLDialogElement>,
18
- bodyClass: string
20
+ portalNode: HTMLElement | null
19
21
  ) {
20
22
  React.useEffect(() => {
21
- if (!modalRef.current) return;
22
- if (modalRef.current.open) document.body.classList.add(bodyClass); // In case `open` is true initially
23
+ if (!modalRef.current || !portalNode) return; // We check both to avoid running this twice when not using portal
24
+ if (modalRef.current.open) document.body.classList.add(BODY_CLASS); // In case `open` is true initially
23
25
 
24
26
  const observer = new MutationObserver(() => {
25
- if (modalRef.current?.open) document.body.classList.add(bodyClass);
26
- else document.body.classList.remove(bodyClass);
27
+ if (modalRef.current?.open) document.body.classList.add(BODY_CLASS);
28
+ else document.body.classList.remove(BODY_CLASS);
27
29
  });
28
30
  observer.observe(modalRef.current, {
29
31
  attributes: true,
@@ -31,7 +33,7 @@ export function useBodyScrollLock(
31
33
  });
32
34
  return () => {
33
35
  observer.disconnect();
34
- document.body.classList.remove(bodyClass); // In case modal is unmounted before it's closed
36
+ document.body.classList.remove(BODY_CLASS); // In case modal is unmounted before it's closed
35
37
  };
36
- }, [modalRef, bodyClass]);
38
+ }, [modalRef, portalNode]);
37
39
  }
@@ -1,5 +1,10 @@
1
1
  // @ts-nocheck
2
2
 
3
+ export const needPolyfill =
4
+ typeof window !== "undefined" &&
5
+ (window.HTMLDialogElement === undefined ||
6
+ navigator.userAgent.includes("jsdom"));
7
+
3
8
  // Copyright (c) 2013 The Chromium Authors. All rights reserved.
4
9
  //
5
10
  // Redistribution and use in source and binary forms, with or without
@@ -44,35 +49,6 @@ function safeDispatchEvent(target, event) {
44
49
  return target.dispatchEvent(event);
45
50
  }
46
51
 
47
- /**
48
- * @param {Element} el to check for stacking context
49
- * @return {boolean} whether this el or its parents creates a stacking context
50
- */
51
- function createsStackingContext(el) {
52
- while (el && el !== document.body) {
53
- var s = window.getComputedStyle(el);
54
- var invalid = function (k, ok) {
55
- return !(s[k] === undefined || s[k] === ok);
56
- };
57
-
58
- if (
59
- s.opacity < 1 ||
60
- invalid("zIndex", "auto") ||
61
- invalid("transform", "none") ||
62
- invalid("mixBlendMode", "normal") ||
63
- invalid("filter", "none") ||
64
- invalid("perspective", "none") ||
65
- s["isolation"] === "isolate" ||
66
- s.position === "fixed" ||
67
- s.webkitOverflowScrolling === "touch"
68
- ) {
69
- return true;
70
- }
71
- el = el.parentElement;
72
- }
73
- return false;
74
- }
75
-
76
52
  /**
77
53
  * Finds the nearest <dialog> from the passed element.
78
54
  *
@@ -476,14 +452,6 @@ dialogPolyfillInfo.prototype = /** @type {HTMLDialogElement.prototype} */ {
476
452
  );
477
453
  }
478
454
 
479
- if (createsStackingContext(this.dialog_.parentElement)) {
480
- console.warn(
481
- "A dialog is being shown inside a stacking context. " +
482
- "This may cause it to be unusable. For more information, see this link: " +
483
- "https://github.com/GoogleChrome/dialog-polyfill/#stacking-context"
484
- );
485
- }
486
-
487
455
  this.setOpen(true);
488
456
  this.openAsModal_ = true;
489
457
 
@@ -602,7 +570,7 @@ dialogPolyfill.needsCentering = function (dialog) {
602
570
  * @param {!Element} element to force upgrade
603
571
  */
604
572
  dialogPolyfill.forceRegisterDialog = function (element) {
605
- if (window.HTMLDialogElement || element.showModal) {
573
+ if (element.showModal) {
606
574
  console.warn(
607
575
  "This browser already supports <dialog>, the polyfill " +
608
576
  "may not work correctly",
@@ -847,7 +815,7 @@ dialogPolyfill.DialogManager.prototype.removeDialog = function (dpi) {
847
815
  this.updateStacking();
848
816
  };
849
817
 
850
- if (typeof window !== "undefined" && window.HTMLDialogElement === undefined) {
818
+ if (needPolyfill) {
851
819
  dialogPolyfill.dm = new dialogPolyfill.DialogManager();
852
820
  dialogPolyfill.formSubmitter = null;
853
821
  dialogPolyfill.imagemapUseValue = null;
@@ -857,7 +825,7 @@ if (typeof window !== "undefined" && window.HTMLDialogElement === undefined) {
857
825
  * Installs global handlers, such as click listers and native method overrides. These are needed
858
826
  * even if a no dialog is registered, as they deal with <form method="dialog">.
859
827
  */
860
- if (typeof window !== "undefined" && window.HTMLDialogElement === undefined) {
828
+ if (needPolyfill) {
861
829
  /**
862
830
  * If HTMLFormElement translates method="DIALOG" into 'get', then replace the descriptor with
863
831
  * one that returns the correct value.
@@ -160,8 +160,8 @@ export const Small = () => (
160
160
  </Modal>
161
161
  );
162
162
 
163
- export const Medium = () => (
164
- <Modal open width="medium" header={{ heading: "Simple header" }}>
163
+ export const MediumWithPortal = () => (
164
+ <Modal open portal width="medium" header={{ heading: "Simple header" }}>
165
165
  <Modal.Body>Lorem ipsum dolor sit amet.</Modal.Body>
166
166
  </Modal>
167
167
  );