@navikt/ds-react 4.12.0 → 5.0.0-rc.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.
Files changed (141) hide show
  1. package/_docs.json +489 -1169
  2. package/cjs/badge/Badge.js +47 -0
  3. package/cjs/badge/NotificationBadge.js +61 -0
  4. package/cjs/badge/index.js +8 -0
  5. package/cjs/badge/package.json +6 -0
  6. package/cjs/date/datepicker/DatePicker.js +1 -1
  7. package/cjs/date/hooks/useEscape.js +6 -1
  8. package/cjs/dropdown/Menu/GroupedList/Heading.js +47 -0
  9. package/cjs/dropdown/Menu/GroupedList/Item.js +54 -0
  10. package/cjs/form/combobox/ComboboxWrapper.js +3 -3
  11. package/cjs/grid/ContentContainer.js +47 -0
  12. package/cjs/layout/box/Box.js +47 -0
  13. package/cjs/layout/box/index.js +5 -0
  14. package/cjs/layout/box/package.json +6 -0
  15. package/cjs/modal/Modal.js +85 -46
  16. package/cjs/modal/ModalBody.js +46 -0
  17. package/cjs/modal/ModalContext.js +8 -0
  18. package/cjs/modal/ModalFooter.js +46 -0
  19. package/cjs/modal/ModalHeader.js +56 -0
  20. package/cjs/modal/ModalUtils.js +40 -0
  21. package/cjs/modal/dialog-polyfill.js +833 -0
  22. package/cjs/popover/Popover.js +5 -2
  23. package/cjs/status-badge/NotificationBadge.js +52 -0
  24. package/cjs/status-badge/index.js +8 -0
  25. package/cjs/status-badge/package.json +6 -0
  26. package/cjs/table/DataCell.js +1 -3
  27. package/cjs/table/ExpandableRow.js +2 -1
  28. package/cjs/table/HeaderCell.js +1 -4
  29. package/cjs/table/Table.js +1 -1
  30. package/cjs/tag/CounterTag.js +69 -0
  31. package/cjs/tag/NotificationTag.js +53 -0
  32. package/cjs/timeline/demo.js +120 -0
  33. package/esm/badge/Badge.d.ts +6 -0
  34. package/esm/badge/Badge.js +19 -0
  35. package/esm/badge/Badge.js.map +1 -0
  36. package/esm/badge/NotificationBadge.d.ts +14 -0
  37. package/esm/badge/NotificationBadge.js +33 -0
  38. package/esm/badge/NotificationBadge.js.map +1 -0
  39. package/esm/badge/index.d.ts +1 -0
  40. package/esm/badge/index.js +2 -0
  41. package/esm/badge/index.js.map +1 -0
  42. package/esm/date/datepicker/DatePicker.d.ts +2 -2
  43. package/esm/date/datepicker/DatePicker.js +1 -1
  44. package/esm/date/datepicker/DatePicker.js.map +1 -1
  45. package/esm/date/hooks/useEscape.d.ts +2 -1
  46. package/esm/date/hooks/useEscape.js +6 -1
  47. package/esm/date/hooks/useEscape.js.map +1 -1
  48. package/esm/dropdown/Menu/GroupedList/Heading.d.ts +9 -0
  49. package/esm/dropdown/Menu/GroupedList/Heading.js +19 -0
  50. package/esm/dropdown/Menu/GroupedList/Heading.js.map +1 -0
  51. package/esm/dropdown/Menu/GroupedList/Item.d.ts +10 -0
  52. package/esm/dropdown/Menu/GroupedList/Item.js +26 -0
  53. package/esm/dropdown/Menu/GroupedList/Item.js.map +1 -0
  54. package/esm/form/Fieldset/useFieldset.d.ts +1 -1
  55. package/esm/form/checkbox/useCheckbox.d.ts +1 -1
  56. package/esm/form/combobox/Combobox.d.ts +1 -1
  57. package/esm/form/combobox/ComboboxWrapper.js +3 -3
  58. package/esm/form/combobox/ComboboxWrapper.js.map +1 -1
  59. package/esm/form/radio/useRadio.d.ts +1 -1
  60. package/esm/grid/ContentContainer.d.ts +9 -0
  61. package/esm/grid/ContentContainer.js +19 -0
  62. package/esm/grid/ContentContainer.js.map +1 -0
  63. package/esm/layout/box/Box.d.ts +8 -0
  64. package/esm/layout/box/Box.js +19 -0
  65. package/esm/layout/box/Box.js.map +1 -0
  66. package/esm/layout/box/index.d.ts +1 -0
  67. package/esm/layout/box/index.js +2 -0
  68. package/esm/layout/box/index.js.map +1 -0
  69. package/esm/modal/Modal.d.ts +76 -51
  70. package/esm/modal/Modal.js +87 -48
  71. package/esm/modal/Modal.js.map +1 -1
  72. package/esm/modal/ModalBody.d.ts +6 -0
  73. package/esm/modal/ModalBody.js +19 -0
  74. package/esm/modal/ModalBody.js.map +1 -0
  75. package/esm/modal/ModalContext.d.ts +6 -0
  76. package/esm/modal/ModalContext.js +3 -0
  77. package/esm/modal/ModalContext.js.map +1 -0
  78. package/esm/modal/ModalFooter.d.ts +6 -0
  79. package/esm/modal/ModalFooter.js +19 -0
  80. package/esm/modal/ModalFooter.js.map +1 -0
  81. package/esm/modal/ModalHeader.d.ts +11 -0
  82. package/esm/modal/ModalHeader.js +29 -0
  83. package/esm/modal/ModalHeader.js.map +1 -0
  84. package/esm/modal/ModalUtils.d.ts +4 -0
  85. package/esm/modal/ModalUtils.js +33 -0
  86. package/esm/modal/ModalUtils.js.map +1 -0
  87. package/esm/modal/dialog-polyfill.d.ts +5 -0
  88. package/esm/modal/dialog-polyfill.js +832 -0
  89. package/esm/modal/dialog-polyfill.js.map +1 -0
  90. package/esm/modal/index.d.ts +3 -1
  91. package/esm/popover/Popover.js +6 -3
  92. package/esm/popover/Popover.js.map +1 -1
  93. package/esm/provider/Provider.d.ts +1 -6
  94. package/esm/provider/Provider.js.map +1 -1
  95. package/esm/status-badge/NotificationBadge.d.ts +13 -0
  96. package/esm/status-badge/NotificationBadge.js +24 -0
  97. package/esm/status-badge/NotificationBadge.js.map +1 -0
  98. package/esm/status-badge/index.d.ts +1 -0
  99. package/esm/status-badge/index.js +2 -0
  100. package/esm/status-badge/index.js.map +1 -0
  101. package/esm/table/DataCell.js +2 -4
  102. package/esm/table/DataCell.js.map +1 -1
  103. package/esm/table/ExpandableRow.js +2 -1
  104. package/esm/table/ExpandableRow.js.map +1 -1
  105. package/esm/table/HeaderCell.js +1 -4
  106. package/esm/table/HeaderCell.js.map +1 -1
  107. package/esm/table/Table.d.ts +2 -3
  108. package/esm/table/Table.js +1 -1
  109. package/esm/table/Table.js.map +1 -1
  110. package/esm/tag/CounterTag.d.ts +31 -0
  111. package/esm/tag/CounterTag.js +41 -0
  112. package/esm/tag/CounterTag.js.map +1 -0
  113. package/esm/tag/NotificationTag.d.ts +11 -0
  114. package/esm/tag/NotificationTag.js +25 -0
  115. package/esm/tag/NotificationTag.js.map +1 -0
  116. package/esm/timeline/demo.d.ts +3 -0
  117. package/esm/timeline/demo.js +96 -0
  118. package/esm/timeline/demo.js.map +1 -0
  119. package/esm/util/index.d.ts +1 -1
  120. package/package.json +4 -7
  121. package/src/date/datepicker/DatePicker.tsx +3 -3
  122. package/src/date/hooks/useEscape.tsx +8 -3
  123. package/src/form/combobox/ComboboxWrapper.tsx +2 -3
  124. package/src/modal/Modal.tsx +171 -121
  125. package/src/modal/ModalBody.tsx +14 -0
  126. package/src/modal/ModalContext.ts +6 -0
  127. package/src/modal/ModalFooter.tsx +14 -0
  128. package/src/modal/ModalHeader.tsx +42 -0
  129. package/src/modal/ModalUtils.ts +37 -0
  130. package/src/modal/dialog-polyfill.ts +980 -0
  131. package/src/modal/index.ts +3 -1
  132. package/src/modal/modal.stories.tsx +142 -59
  133. package/src/popover/Popover.tsx +6 -2
  134. package/src/provider/Provider.tsx +1 -6
  135. package/src/table/DataCell.tsx +1 -5
  136. package/src/table/ExpandableRow.tsx +2 -1
  137. package/src/table/HeaderCell.tsx +1 -5
  138. package/src/table/Table.tsx +3 -4
  139. package/src/table/stories/table-expandable.stories.tsx +37 -1
  140. package/src/table/stories/table.stories.tsx +4 -1
  141. package/src/modal/ModalContent.tsx +0 -26
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.Badge = void 0;
41
+ const react_1 = __importStar(require("react"));
42
+ const clsx_1 = __importDefault(require("clsx"));
43
+ exports.Badge = (0, react_1.forwardRef)((_a, ref) => {
44
+ var { className, children } = _a, rest = __rest(_a, ["className", "children"]);
45
+ return (react_1.default.createElement("sup", Object.assign({}, rest, { ref: ref, className: (0, clsx_1.default)("navds-badge", className) }), children));
46
+ });
47
+ exports.default = exports.Badge;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.NotificationBadge = void 0;
41
+ const react_1 = __importStar(require("react"));
42
+ const clsx_1 = __importDefault(require("clsx"));
43
+ exports.NotificationBadge = (0, react_1.forwardRef)((_a, ref) => {
44
+ var { className, absolute = false, pulse = false, maxCount = 500, count } = _a, rest = __rest(_a, ["className", "absolute", "pulse", "maxCount", "count"]);
45
+ const getCount = () => {
46
+ if (!count) {
47
+ return null;
48
+ }
49
+ if (count <= maxCount) {
50
+ return `${count}`;
51
+ }
52
+ return `${maxCount}+`;
53
+ };
54
+ return (react_1.default.createElement("sup", { className: "navds-notificationbadge__wrapper" },
55
+ react_1.default.createElement("span", Object.assign({}, rest, { ref: ref, className: (0, clsx_1.default)("navds-notificationbadge", className, {
56
+ "navds-notificationbadge--pulse": pulse,
57
+ "navds-notificationbadge--count": !!count,
58
+ "navds-notificationbadge--marker": !count,
59
+ }) }), getCount())));
60
+ });
61
+ exports.default = exports.NotificationBadge;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NotificationBadge = void 0;
7
+ var NotificationBadge_1 = require("./NotificationBadge");
8
+ Object.defineProperty(exports, "NotificationBadge", { enumerable: true, get: function () { return __importDefault(NotificationBadge_1).default; } });
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "main": "./index.js",
4
+ "module": "../../esm/badge/index.js",
5
+ "types": "../../esm/badge/index.d.ts"
6
+ }
@@ -74,7 +74,7 @@ const TableHead_1 = require("./TableHead");
74
74
  */
75
75
  exports.DatePicker = (0, react_1.forwardRef)((_a, ref) => {
76
76
  var _b;
77
- var { children, locale = "nb", dropdownCaption, disabled = [], disableWeekends = false, showWeekNumber = false, selected, id, defaultSelected, className, wrapperClassName, open: _open, onClose, onOpenToggle, strategy = "absolute", bubbleEscape = false } = _a, rest = __rest(_a, ["children", "locale", "dropdownCaption", "disabled", "disableWeekends", "showWeekNumber", "selected", "id", "defaultSelected", "className", "wrapperClassName", "open", "onClose", "onOpenToggle", "strategy", "bubbleEscape"]);
77
+ var { children, locale = "nb", dropdownCaption, disabled = [], disableWeekends = false, showWeekNumber = false, selected, id, defaultSelected, className, wrapperClassName, open: _open, onClose, onOpenToggle, strategy, bubbleEscape = false } = _a, rest = __rest(_a, ["children", "locale", "dropdownCaption", "disabled", "disableWeekends", "showWeekNumber", "selected", "id", "defaultSelected", "className", "wrapperClassName", "open", "onClose", "onOpenToggle", "strategy", "bubbleEscape"]);
78
78
  const ariaId = (0, __1.useId)(id);
79
79
  const [open, setOpen] = (0, react_1.useState)(_open !== null && _open !== void 0 ? _open : false);
80
80
  const wrapperRef = (0, react_1.useRef)(null);
@@ -7,7 +7,12 @@ const useEscape = (open, setOpen, focusRef) => {
7
7
  setOpen(false);
8
8
  (focusRef === null || focusRef === void 0 ? void 0 : focusRef.current) && focusRef.current.focus();
9
9
  }, [focusRef, setOpen]);
10
- const escape = (0, react_1.useCallback)((e) => open && e.key === "Escape" && handleClose(), [handleClose, open]);
10
+ const escape = (0, react_1.useCallback)((event) => {
11
+ if (open && event.key === "Escape") {
12
+ event.preventDefault(); // This prevents modal from closing when using datepicker inside modal
13
+ handleClose();
14
+ }
15
+ }, [handleClose, open]);
11
16
  (0, react_1.useEffect)(() => {
12
17
  window.addEventListener("keydown", escape, false);
13
18
  return () => {
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.GroupedHeading = void 0;
41
+ const react_1 = __importStar(require("react"));
42
+ const clsx_1 = __importDefault(require("clsx"));
43
+ exports.GroupedHeading = (0, react_1.forwardRef)((_a, ref) => {
44
+ var { className } = _a, rest = __rest(_a, ["className"]);
45
+ return (react_1.default.createElement("dt", Object.assign({}, rest, { ref: ref, className: (0, clsx_1.default)("navds-dropdown__list-heading", "navds-heading", "navds-heading--xsmall", className) })));
46
+ });
47
+ exports.default = exports.GroupedHeading;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.GroupedItem = void 0;
41
+ const clsx_1 = __importDefault(require("clsx"));
42
+ const react_1 = __importStar(require("react"));
43
+ const Dropdown_1 = require("../../Dropdown");
44
+ exports.GroupedItem = (0, react_1.forwardRef)((_a, ref) => {
45
+ var { as: Component = "button", className } = _a, rest = __rest(_a, ["as", "className"]);
46
+ const context = (0, react_1.useContext)(Dropdown_1.DropdownContext);
47
+ return (react_1.default.createElement("dd", { className: "navds-dropdown__list-item" },
48
+ react_1.default.createElement(Component, Object.assign({}, rest, { value: rest.children, onClick: (event) => {
49
+ var _a, _b;
50
+ (_a = context === null || context === void 0 ? void 0 : context.onSelect) === null || _a === void 0 ? void 0 : _a.call(context, event);
51
+ (_b = rest === null || rest === void 0 ? void 0 : rest.onClick) === null || _b === void 0 ? void 0 : _b.call(rest, event);
52
+ }, ref: ref, className: (0, clsx_1.default)("navds-dropdown__item", "navds-body-short", "navds-body-short--small", className) }))));
53
+ });
54
+ exports.default = exports.GroupedItem;
@@ -46,9 +46,9 @@ const ComboboxWrapper = ({ children, className, hasError, inputProps, inputSize,
46
46
  setHasFocusWithin(false);
47
47
  }
48
48
  }
49
- return (react_1.default.createElement("div", { ref: wrapperRef, className: (0, clsx_1.default)(className, "navds-form-field", `navds-form-field--${inputSize}`, "navds-search", {
50
- "navds-search--error": hasError,
51
- "navds-search--disabled": !!inputProps.disabled,
49
+ return (react_1.default.createElement("div", { ref: wrapperRef, className: (0, clsx_1.default)(className, "navds-form-field", `navds-form-field--${inputSize}`, {
50
+ "navds-combobox--error": hasError,
51
+ "navds-combobox--disabled": !!inputProps.disabled,
52
52
  "navds-combobox--focused": hasFocusWithin,
53
53
  }), onFocus: onFocusInsideWrapper, onBlur: onBlurWrapper, tabIndex: -1 }, children));
54
54
  };
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.ContentContainer = void 0;
41
+ const react_1 = __importStar(require("react"));
42
+ const clsx_1 = __importDefault(require("clsx"));
43
+ exports.ContentContainer = (0, react_1.forwardRef)((_a, ref) => {
44
+ var { className } = _a, rest = __rest(_a, ["className"]);
45
+ return (react_1.default.createElement("div", Object.assign({ ref: ref, className: (0, clsx_1.default)("navds-content-container", className) }, rest)));
46
+ });
47
+ exports.default = exports.ContentContainer;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.Box = void 0;
41
+ const clsx_1 = __importDefault(require("clsx"));
42
+ const react_1 = __importStar(require("react"));
43
+ exports.Box = (0, react_1.forwardRef)((_a, ref) => {
44
+ var { as: Component = "div", className, style: _style } = _a, rest = __rest(_a, ["as", "className", "style"]);
45
+ const style = Object.assign({}, _style);
46
+ return (react_1.default.createElement(Component, Object.assign({}, rest, { ref: ref, style: style, className: (0, clsx_1.default)("navds-box", className, {}) })));
47
+ });
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Box = void 0;
4
+ var Box_1 = require("./Box");
5
+ Object.defineProperty(exports, "Box", { enumerable: true, get: function () { return Box_1.Box; } });
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "main": "./index.js",
4
+ "module": "../../../esm/layout/box/index.js",
5
+ "types": "../../../esm/layout/box/index.d.ts"
6
+ }
@@ -40,10 +40,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.Modal = void 0;
41
41
  const react_1 = __importStar(require("react"));
42
42
  const clsx_1 = __importDefault(require("clsx"));
43
- const react_modal_1 = __importDefault(require("react-modal"));
43
+ const dialog_polyfill_1 = __importDefault(require("./dialog-polyfill"));
44
44
  const __1 = require("..");
45
- const ModalContent_1 = __importDefault(require("./ModalContent"));
46
- const aksel_icons_1 = require("@navikt/aksel-icons");
45
+ const ModalBody_1 = __importDefault(require("./ModalBody"));
46
+ const ModalHeader_1 = __importDefault(require("./ModalHeader"));
47
+ const ModalFooter_1 = __importDefault(require("./ModalFooter"));
48
+ const ModalUtils_1 = require("./ModalUtils");
49
+ const ModalContext_1 = require("./ModalContext");
50
+ const needPolyfill = typeof window !== "undefined" && window.HTMLDialogElement === undefined;
47
51
  /**
48
52
  * A component that displays a modal dialog.
49
53
  *
@@ -51,63 +55,98 @@ const aksel_icons_1 = require("@navikt/aksel-icons");
51
55
  * @see 🏷️ {@link ModalProps}
52
56
  *
53
57
  * @example
58
+ * State change with `useRef`
59
+ * ```jsx
60
+ * const ref = useRef<HTMLDialogElement>(null);
61
+ * <Button onClick={() => ref.current?.showModal()}>Open modal</Button>
62
+ * <Modal
63
+ * ref={ref}
64
+ * header={{
65
+ * label: "Optional label",
66
+ * icon: <FileIcon aria-hidden />,
67
+ * heading: "My heading",
68
+ * }}
69
+ * >
70
+ * <Modal.Body>
71
+ * <BodyLong>Hello world</BodyLong>
72
+ * </Modal.Body>
73
+ * <Modal.Footer>
74
+ * <Button>Save</Button>
75
+ * <Button type="button" variant="tertiary" onClick={() => ref.current?.close()}>Close</Button>
76
+ * </Modal.Footer>
77
+ * </Modal>
78
+ * ```
79
+ * @example
80
+ * State change with `useState`
54
81
  * ```jsx
55
82
  * const [open, setOpen] = useState(false);
56
- *
57
83
  * <Modal
58
84
  * open={open}
59
- * aria-label="Modal demo"
60
- * onClose={() => setOpen((x) => !x)}
85
+ * onClose={() => setOpen(false)}
61
86
  * aria-labelledby="modal-heading"
62
87
  * >
63
- * <Modal.Content>
64
- * <Heading spacing level="1" size="large" id="modal-heading">
65
- * Viktig info
66
- * </Heading>
67
- * <BodyLong spacing>
68
- * Hallo!
69
- * </BodyLong>
70
- * </Modal.Content>
88
+ * <Modal.Header>
89
+ * <Heading level="1" size="large" id="modal-heading">My heading</Heading>
90
+ * </Modal.Header>
91
+ * <Modal.Body>
92
+ * <BodyLong>Hello world</BodyLong>
93
+ * </Modal.Body>
71
94
  * </Modal>
72
95
  * ```
73
96
  */
74
97
  exports.Modal = (0, react_1.forwardRef)((_a, ref) => {
75
- var _b, _c;
76
- var { children, open, onClose, className, overlayClassName, shouldCloseOnOverlayClick = true, shouldCloseOnEsc = true, closeButton = true, "aria-describedby": ariaDescribedBy, "aria-labelledby": ariaLabelledBy, "aria-modal": ariaModal, "aria-label": contentLabel, style, parentSelector } = _a, rest = __rest(_a, ["children", "open", "onClose", "className", "overlayClassName", "shouldCloseOnOverlayClick", "shouldCloseOnEsc", "closeButton", "aria-describedby", "aria-labelledby", "aria-modal", "aria-label", "style", "parentSelector"]);
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"]);
77
100
  const modalRef = (0, react_1.useRef)(null);
78
101
  const mergedRef = (0, react_1.useMemo)(() => (0, __1.mergeRefs)([modalRef, ref]), [ref]);
79
- const buttonRef = (0, react_1.useRef)(null);
80
- const rootElement = (_b = (0, __1.useProvider)()) === null || _b === void 0 ? void 0 : _b.rootElement;
81
- const appElement = (_c = (0, __1.useProvider)()) === null || _c === void 0 ? void 0 : _c.appElement;
102
+ const ariaLabelId = (0, __1.useId)();
103
+ if ((0, react_1.useContext)(ModalContext_1.ModalContext)) {
104
+ console.error("Modals should not be nested");
105
+ }
82
106
  (0, react_1.useEffect)(() => {
83
- appElement && exports.Modal.setAppElement(appElement);
84
- }, [appElement]);
85
- const onModalCloseRequest = (e) => {
86
- if (shouldCloseOnOverlayClick || e.type === "keydown") {
87
- onClose();
107
+ if (needPolyfill && modalRef.current) {
108
+ dialog_polyfill_1.default.registerDialog(modalRef.current);
88
109
  }
89
- else if (buttonRef.current) {
90
- buttonRef.current.focus();
91
- }
92
- };
93
- const getParentSelector = () => {
94
- if (parentSelector) {
95
- return parentSelector;
110
+ }, [modalRef]);
111
+ (0, react_1.useEffect)(() => {
112
+ // We need to have this in a useEffect so that the content renders before the modal is displayed,
113
+ // and in case `open` is true initially.
114
+ if (modalRef.current && open !== undefined) {
115
+ if (open && !modalRef.current.open) {
116
+ modalRef.current.showModal();
117
+ }
118
+ else if (!open && modalRef.current.open) {
119
+ modalRef.current.close();
120
+ }
96
121
  }
97
- return rootElement !== undefined
98
- ? () => rootElement
99
- : undefined;
100
- };
101
- return (react_1.default.createElement(react_modal_1.default, Object.assign({}, rest, { parentSelector: getParentSelector(), style: style, isOpen: open, ref: mergedRef, className: (0, clsx_1.default)("navds-modal", className), overlayClassName: (0, clsx_1.default)("navds-modal__overlay", overlayClassName), shouldCloseOnOverlayClick: shouldCloseOnOverlayClick, shouldCloseOnEsc: shouldCloseOnEsc, onRequestClose: (e) => onModalCloseRequest(e), aria: {
102
- describedby: ariaDescribedBy,
103
- labelledby: ariaLabelledBy,
104
- modal: ariaModal,
105
- }, contentLabel: contentLabel }),
106
- children,
107
- closeButton && (react_1.default.createElement(__1.Button, { className: (0, clsx_1.default)("navds-modal__button", {
108
- "navds-modal__button--shake": shouldCloseOnOverlayClick,
109
- }), size: "small", variant: "tertiary-neutral", ref: buttonRef, onClick: onClose, icon: react_1.default.createElement(aksel_icons_1.XMarkIcon, { title: "Lukk modalvindu" }) }))));
122
+ }, [modalRef, open]);
123
+ (0, ModalUtils_1.useBodyScrollLock)(modalRef, "navds-modal__document-body");
124
+ 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,
127
+ "navds-modal--autowidth": !width,
128
+ [`navds-modal--${width}`]: isWidthPreset,
129
+ }), style: Object.assign(Object.assign({}, style), (!isWidthPreset ? { width } : {})), onCancel: (event) => {
130
+ // FYI: onCancel fires when you press Esc
131
+ if (onBeforeClose && onBeforeClose() === false) {
132
+ event.preventDefault();
133
+ }
134
+ else if (onCancel)
135
+ onCancel(event);
136
+ }, "aria-labelledby": !ariaLabelledby && !rest["aria-label"] && header
137
+ ? ariaLabelId
138
+ : ariaLabelledby }, rest),
139
+ react_1.default.createElement(ModalContext_1.ModalContext.Provider, { value: {
140
+ closeHandler: (0, ModalUtils_1.getCloseHandler)(modalRef, header, onBeforeClose),
141
+ } },
142
+ header && (react_1.default.createElement(ModalHeader_1.default, null,
143
+ 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 },
145
+ react_1.default.createElement("span", { className: "navds-modal__header-icon" }, header.icon),
146
+ header.heading))),
147
+ children)));
110
148
  });
111
- exports.Modal.setAppElement = (element) => react_modal_1.default.setAppElement(element);
112
- exports.Modal.Content = ModalContent_1.default;
149
+ exports.Modal.Header = ModalHeader_1.default;
150
+ exports.Modal.Body = ModalBody_1.default;
151
+ exports.Modal.Footer = ModalFooter_1.default;
113
152
  exports.default = exports.Modal;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ const react_1 = __importStar(require("react"));
41
+ const clsx_1 = __importDefault(require("clsx"));
42
+ const ModalBody = (0, react_1.forwardRef)((_a, ref) => {
43
+ var { className } = _a, rest = __rest(_a, ["className"]);
44
+ return (react_1.default.createElement("div", Object.assign({}, rest, { ref: ref, className: (0, clsx_1.default)("navds-modal__body", className) })));
45
+ });
46
+ exports.default = ModalBody;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ModalContext = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ exports.ModalContext = react_1.default.createContext(null);
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ const react_1 = __importStar(require("react"));
41
+ const clsx_1 = __importDefault(require("clsx"));
42
+ const ModalFooter = (0, react_1.forwardRef)((_a, ref) => {
43
+ var { className } = _a, rest = __rest(_a, ["className"]);
44
+ return (react_1.default.createElement("div", Object.assign({}, rest, { ref: ref, className: (0, clsx_1.default)("navds-modal__footer", className) })));
45
+ });
46
+ exports.default = ModalFooter;