@navikt/ds-react 0.14.14 → 0.15.0-rc.45

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 (127) hide show
  1. package/cjs/accordion/AccordionHeader.js +3 -3
  2. package/cjs/button/Button.js +3 -3
  3. package/cjs/form/checkbox/Checkbox.js +12 -1
  4. package/cjs/form/checkbox/useCheckbox.js +1 -1
  5. package/cjs/help-text/HelpText.js +4 -4
  6. package/cjs/index.js +2 -1
  7. package/cjs/{accordion-menu/AccordionMenu.js → menu/Menu.js} +7 -7
  8. package/cjs/{accordion-menu/AccordionMenuCollapsable.js → menu/MenuCollapse.js} +18 -8
  9. package/cjs/{accordion-menu/AccordionMenuItem.js → menu/MenuItem.js} +2 -2
  10. package/cjs/menu/MenuItems.js +23 -0
  11. package/cjs/menu/index.js +8 -0
  12. package/cjs/menu/package.json +6 -0
  13. package/cjs/modal/Modal.js +6 -2
  14. package/cjs/page-header/PageHeader.js +1 -1
  15. package/cjs/pagination/Pagination.js +51 -0
  16. package/cjs/pagination/index.js +19 -0
  17. package/cjs/pagination/package.json +6 -0
  18. package/cjs/table/ColumnHeader.js +58 -0
  19. package/cjs/table/Table.js +15 -2
  20. package/esm/accordion/AccordionHeader.js +3 -3
  21. package/esm/accordion/AccordionHeader.js.map +1 -1
  22. package/esm/button/Button.d.ts +1 -1
  23. package/esm/button/Button.js +3 -3
  24. package/esm/button/Button.js.map +1 -1
  25. package/esm/form/checkbox/Checkbox.d.ts +5 -0
  26. package/esm/form/checkbox/Checkbox.js +12 -1
  27. package/esm/form/checkbox/Checkbox.js.map +1 -1
  28. package/esm/form/checkbox/useCheckbox.d.ts +0 -1
  29. package/esm/form/checkbox/useCheckbox.js +1 -1
  30. package/esm/form/checkbox/useCheckbox.js.map +1 -1
  31. package/esm/help-text/HelpText.js +4 -4
  32. package/esm/help-text/HelpText.js.map +1 -1
  33. package/esm/index.d.ts +2 -1
  34. package/esm/index.js +2 -1
  35. package/esm/index.js.map +1 -1
  36. package/esm/menu/Menu.d.ts +12 -0
  37. package/esm/{accordion-menu/AccordionMenu.js → menu/Menu.js} +8 -8
  38. package/esm/menu/Menu.js.map +1 -0
  39. package/esm/menu/MenuCollapse.d.ts +12 -0
  40. package/esm/menu/MenuCollapse.js +37 -0
  41. package/esm/menu/MenuCollapse.js.map +1 -0
  42. package/esm/menu/MenuItem.d.ts +13 -0
  43. package/esm/{accordion-menu/AccordionMenuItem.js → menu/MenuItem.js} +3 -3
  44. package/esm/menu/MenuItem.js.map +1 -0
  45. package/esm/{accordion-menu → menu}/MenuItems.d.ts +2 -1
  46. package/esm/menu/MenuItems.js +19 -0
  47. package/esm/menu/MenuItems.js.map +1 -0
  48. package/esm/menu/index.d.ts +3 -0
  49. package/esm/menu/index.js +2 -0
  50. package/esm/menu/index.js.map +1 -0
  51. package/esm/modal/Modal.d.ts +3 -0
  52. package/esm/modal/Modal.js +6 -2
  53. package/esm/modal/Modal.js.map +1 -1
  54. package/esm/page-header/PageHeader.js +1 -1
  55. package/esm/page-header/PageHeader.js.map +1 -1
  56. package/esm/pagination/Pagination.d.ts +43 -0
  57. package/esm/pagination/Pagination.js +45 -0
  58. package/esm/pagination/Pagination.js.map +1 -0
  59. package/esm/pagination/index.d.ts +2 -0
  60. package/esm/pagination/index.js +3 -0
  61. package/esm/pagination/index.js.map +1 -0
  62. package/esm/table/ColumnHeader.d.ts +16 -0
  63. package/esm/table/ColumnHeader.js +35 -0
  64. package/esm/table/ColumnHeader.js.map +1 -0
  65. package/esm/table/Table.d.ts +16 -0
  66. package/esm/table/Table.js +15 -2
  67. package/esm/table/Table.js.map +1 -1
  68. package/esm/typography/Heading.d.ts +1 -1
  69. package/package.json +5 -3
  70. package/src/accordion/AccordionHeader.tsx +4 -3
  71. package/src/accordion/accordion.stories.tsx +90 -0
  72. package/src/alert/{stories/alert.stories.tsx → alert.stories.tsx} +2 -2
  73. package/src/button/Button.tsx +7 -3
  74. package/src/button/{stories/button.stories.tsx → button.stories.tsx} +12 -1
  75. package/src/form/checkbox/Checkbox.tsx +18 -1
  76. package/src/form/checkbox/stories/checkbox.stories.tsx +38 -1
  77. package/src/form/checkbox/useCheckbox.ts +0 -1
  78. package/src/help-text/HelpText.tsx +4 -5
  79. package/src/index.ts +2 -1
  80. package/src/menu/Menu.tsx +36 -0
  81. package/src/menu/MenuCollapse.tsx +80 -0
  82. package/src/{accordion-menu/AccordionMenuItem.tsx → menu/MenuItem.tsx} +6 -6
  83. package/src/menu/MenuItems.tsx +21 -0
  84. package/src/menu/index.ts +3 -0
  85. package/src/menu/stories/menu.stories.mdx +93 -0
  86. package/src/menu/stories/menu.stories.tsx +139 -0
  87. package/src/modal/Modal.tsx +11 -0
  88. package/src/page-header/PageHeader.tsx +1 -5
  89. package/src/pagination/Pagination.tsx +143 -0
  90. package/src/pagination/index.ts +2 -0
  91. package/src/pagination/steps.test.ts +120 -0
  92. package/src/pagination/stories/pagination.stories.tsx +18 -0
  93. package/src/table/ColumnHeader.tsx +70 -0
  94. package/src/table/Table.tsx +30 -2
  95. package/src/table/stories/people.json +822 -0
  96. package/src/table/stories/table-async.stories.tsx +166 -0
  97. package/src/table/stories/table-hot.stories.tsx +377 -0
  98. package/src/table/stories/table.stories.tsx +35 -2
  99. package/src/typography/Heading.tsx +1 -1
  100. package/src/typography/{stories/typography.stories.tsx → typography.stories.tsx} +4 -5
  101. package/cjs/accordion-menu/MenuItems.js +0 -8
  102. package/cjs/accordion-menu/index.js +0 -8
  103. package/cjs/accordion-menu/package.json +0 -6
  104. package/esm/accordion-menu/AccordionMenu.d.ts +0 -12
  105. package/esm/accordion-menu/AccordionMenu.js.map +0 -1
  106. package/esm/accordion-menu/AccordionMenuCollapsable.d.ts +0 -9
  107. package/esm/accordion-menu/AccordionMenuCollapsable.js +0 -28
  108. package/esm/accordion-menu/AccordionMenuCollapsable.js.map +0 -1
  109. package/esm/accordion-menu/AccordionMenuItem.d.ts +0 -13
  110. package/esm/accordion-menu/AccordionMenuItem.js.map +0 -1
  111. package/esm/accordion-menu/MenuItems.js +0 -4
  112. package/esm/accordion-menu/MenuItems.js.map +0 -1
  113. package/esm/accordion-menu/index.d.ts +0 -3
  114. package/esm/accordion-menu/index.js +0 -2
  115. package/esm/accordion-menu/index.js.map +0 -1
  116. package/src/accordion/stories/accordion.stories.mdx +0 -72
  117. package/src/accordion/stories/accordion.stories.tsx +0 -92
  118. package/src/accordion-menu/AccordionMenu.tsx +0 -39
  119. package/src/accordion-menu/AccordionMenuCollapsable.tsx +0 -45
  120. package/src/accordion-menu/MenuItems.tsx +0 -13
  121. package/src/accordion-menu/index.ts +0 -3
  122. package/src/accordion-menu/stories/accordion-menu.stories.mdx +0 -66
  123. package/src/accordion-menu/stories/accordion-menu.stories.tsx +0 -141
  124. package/src/alert/stories/alert.stories.mdx +0 -96
  125. package/src/button/stories/button.stories.mdx +0 -76
  126. package/src/typography/stories/index.css +0 -3
  127. package/src/typography/stories/typography.stories.mdx +0 -83
@@ -54,12 +54,12 @@ const AccordionHeader = (0, react_1.forwardRef)((_a, ref) => {
54
54
  context.toggleOpen();
55
55
  onClick && onClick(e);
56
56
  };
57
- return (react_1.default.createElement("button", Object.assign({ ref: ref, id: context.buttonId, className: (0, classnames_1.default)("navds-accordion__header", className, "navds-heading", "navds-heading--small"), onClick: handleClick }, rest),
57
+ return (react_1.default.createElement("button", Object.assign({}, rest, { ref: ref, id: context.buttonId, className: (0, classnames_1.default)("navds-accordion__header", className, "navds-heading", "navds-heading--small"), onClick: handleClick, "aria-expanded": context.open }),
58
58
  children,
59
- react_1.default.createElement(ds_icons_1.Expand, { title: context.open ? "Lukk panel ikon" : "Åpne panel ikon", className: (0, classnames_1.default)("navds-accordion__expand-icon", {
59
+ react_1.default.createElement(ds_icons_1.Expand, { "aria-hidden": true, className: (0, classnames_1.default)("navds-accordion__expand-icon", {
60
60
  "navds-accordion__expand-icon--flip": context.open,
61
61
  }) }),
62
- react_1.default.createElement(ds_icons_1.ExpandFilled, { title: context.open ? "Lukk panel ikon" : "Åpne panel ikon", className: (0, classnames_1.default)("navds-accordion__expand-icon", "navds-accordion__expand-icon--filled", {
62
+ react_1.default.createElement(ds_icons_1.ExpandFilled, { "aria-hidden": true, className: (0, classnames_1.default)("navds-accordion__expand-icon", "navds-accordion__expand-icon--filled", {
63
63
  "navds-accordion__expand-icon--flip": context.open,
64
64
  }) })));
65
65
  });
@@ -39,7 +39,7 @@ const classnames_1 = __importDefault(require("classnames"));
39
39
  const __1 = require("../");
40
40
  const util_1 = require("../util");
41
41
  const Button = (0, react_1.forwardRef)((_a, ref) => {
42
- var { as: Component = "button", variant = "primary", className, children, size = "medium", loading = false, disabled } = _a, rest = __rest(_a, ["as", "variant", "className", "children", "size", "loading", "disabled"]);
42
+ var { as: Component = "button", variant = "primary", className, children, size = "medium", loading = false, disabled, style } = _a, rest = __rest(_a, ["as", "variant", "className", "children", "size", "loading", "disabled", "style"]);
43
43
  const buttonRef = (0, react_1.useRef)(null);
44
44
  const mergedRef = (0, react_merge_refs_1.default)([buttonRef, ref]);
45
45
  const [widthOverride, setWidthOverride] = (0, react_1.useState)();
@@ -57,7 +57,7 @@ const Button = (0, react_1.forwardRef)((_a, ref) => {
57
57
  }, [loading, children]);
58
58
  return (react_1.default.createElement(Component, Object.assign({}, rest, { ref: mergedRef, className: (0, classnames_1.default)(className, "navds-button", `navds-button--${variant}`, `navds-button--${size}`, {
59
59
  "navds-button--loading": widthOverride,
60
- }), style: { width: widthOverride }, disabled: (disabled !== null && disabled !== void 0 ? disabled : widthOverride) ? true : undefined }),
61
- react_1.default.createElement(__1.BodyShort, { as: "span", className: "navds-button__inner", size: size, "aria-live": "polite" }, widthOverride ? react_1.default.createElement(__1.Loader, { size: size }) : children)));
60
+ }), style: Object.assign(Object.assign({}, style), { width: widthOverride }), disabled: (disabled !== null && disabled !== void 0 ? disabled : widthOverride) ? true : undefined }),
61
+ react_1.default.createElement(__1.BodyShort, { as: "span", className: "navds-button__inner", size: size === "medium" ? "medium" : "small", "aria-live": "polite" }, widthOverride ? react_1.default.createElement(__1.Loader, { size: size }) : children)));
62
62
  });
63
63
  exports.default = Button;
@@ -39,7 +39,18 @@ const Checkbox = (0, react_1.forwardRef)((props, ref) => {
39
39
  "error",
40
40
  "description",
41
41
  "hideLabel",
42
- ]), inputProps, { className: "navds-checkbox__input", ref: ref })),
42
+ ]), inputProps, { type: "checkbox", className: "navds-checkbox__input", "aria-checked": props.indeterminate ? "mixed" : inputProps.checked, ref: (el) => {
43
+ var _a;
44
+ if (el) {
45
+ el.indeterminate = (_a = props.indeterminate) !== null && _a !== void 0 ? _a : false;
46
+ }
47
+ if (typeof ref === "function") {
48
+ ref(el);
49
+ }
50
+ else if (ref != null) {
51
+ ref.current = el;
52
+ }
53
+ } })),
43
54
  react_1.default.createElement("label", { htmlFor: inputProps.id, className: "navds-checkbox__label" },
44
55
  react_1.default.createElement("div", { className: (0, classnames_1.default)("navds-checkbox__content", {
45
56
  "navds-sr-only": props.hideLabel,
@@ -30,7 +30,7 @@ const useCheckbox = (_a) => {
30
30
  console.warn("A <Checkbox> element within a <CheckboxGroup> requires a `value` property.");
31
31
  }
32
32
  }
33
- return Object.assign(Object.assign({}, rest), { inputProps: Object.assign(Object.assign({}, inputProps), { type: "checkbox", checked: (checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.value)
33
+ return Object.assign(Object.assign({}, rest), { inputProps: Object.assign(Object.assign({}, inputProps), { checked: (checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.value)
34
34
  ? checkboxGroup.value.includes(props.value)
35
35
  : props.checked, defaultChecked: (checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.defaultValue)
36
36
  ? checkboxGroup.defaultValue.includes(props.value)
@@ -42,13 +42,13 @@ const HelpText = (0, react_1.forwardRef)((_a, ref) => {
42
42
  var { className, children, placement = "top", strategy = "absolute", title = "hjelp" } = _a, rest = __rest(_a, ["className", "children", "placement", "strategy", "title"]);
43
43
  const buttonRef = (0, react_1.useRef)(null);
44
44
  const mergedRef = (0, react_merge_refs_1.default)([buttonRef, ref]);
45
- const popoverRef = (0, react_1.useRef)(null);
45
+ const [popoverRef, setPopoverRef] = (0, react_1.useState)(null);
46
46
  const wrapperRef = (0, react_1.useRef)(null);
47
47
  const [open, setOpen] = (0, react_1.useState)(false);
48
48
  (0, react_1.useEffect)(() => {
49
49
  var _a;
50
- open && ((_a = popoverRef.current) === null || _a === void 0 ? void 0 : _a.focus());
51
- }, [open]);
50
+ open && ((_a = popoverRef === null || popoverRef === void 0 ? void 0 : popoverRef.focus) === null || _a === void 0 ? void 0 : _a.call(popoverRef));
51
+ }, [open, popoverRef]);
52
52
  const handleClick = (e) => {
53
53
  setOpen((x) => !x);
54
54
  rest.onClick && rest.onClick(e);
@@ -57,7 +57,7 @@ const HelpText = (0, react_1.forwardRef)((_a, ref) => {
57
57
  react_1.default.createElement("button", Object.assign({}, rest, { ref: mergedRef, onClick: (e) => handleClick(e), className: (0, classnames_1.default)(className, "navds-help-text__button"), type: "button", "aria-expanded": open, "aria-haspopup": "dialog", title: title }),
58
58
  react_1.default.createElement(ds_icons_1.Helptext, { className: "navds-help-text__icon" }),
59
59
  react_1.default.createElement("span", { className: "navds-sr-only" }, title)),
60
- react_1.default.createElement(__1.Popover, { ref: popoverRef, onClose: () => setOpen(false), className: "navds-help-text__popover", open: open, role: "tooltip", anchorEl: buttonRef.current, placement: placement, strategy: strategy },
60
+ react_1.default.createElement(__1.Popover, { ref: setPopoverRef, onClose: () => setOpen(false), className: "navds-help-text__popover", open: open, role: "tooltip", anchorEl: buttonRef.current, placement: placement, strategy: strategy },
61
61
  react_1.default.createElement(__1.Popover.Content, null, children))));
62
62
  });
63
63
  exports.default = HelpText;
package/cjs/index.js CHANGED
@@ -11,7 +11,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./accordion"), exports);
14
- __exportStar(require("./accordion-menu"), exports);
15
14
  __exportStar(require("./alert"), exports);
16
15
  __exportStar(require("./button"), exports);
17
16
  __exportStar(require("./form"), exports);
@@ -21,7 +20,9 @@ __exportStar(require("./guide-panel"), exports);
21
20
  __exportStar(require("./link"), exports);
22
21
  __exportStar(require("./link-panel"), exports);
23
22
  __exportStar(require("./loader"), exports);
23
+ __exportStar(require("./menu"), exports);
24
24
  __exportStar(require("./modal"), exports);
25
+ __exportStar(require("./pagination"), exports);
25
26
  __exportStar(require("./panel"), exports);
26
27
  __exportStar(require("./popover"), exports);
27
28
  __exportStar(require("./speech-bubble"), exports);
@@ -36,13 +36,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const react_1 = __importStar(require("react"));
37
37
  const classnames_1 = __importDefault(require("classnames"));
38
38
  const MenuItems_1 = __importDefault(require("./MenuItems"));
39
- const AccordionMenuCollapsable_1 = __importDefault(require("./AccordionMenuCollapsable"));
40
- const AccordionMenuItem_1 = __importDefault(require("./AccordionMenuItem"));
41
- const AccordionMenu = (0, react_1.forwardRef)((_a, ref) => {
39
+ const MenuItem_1 = __importDefault(require("./MenuItem"));
40
+ const MenuCollapse_1 = __importDefault(require("./MenuCollapse"));
41
+ const Menu = (0, react_1.forwardRef)((_a, ref) => {
42
42
  var { children, className } = _a, rest = __rest(_a, ["children", "className"]);
43
- return (react_1.default.createElement("nav", Object.assign({ role: "navigation", ref: ref, className: (0, classnames_1.default)("navds-accordion-menu", className) }, rest),
43
+ return (react_1.default.createElement("nav", Object.assign({}, rest, { role: "navigation", ref: ref, className: (0, classnames_1.default)("navds-menu", className) }),
44
44
  react_1.default.createElement(MenuItems_1.default, null, children)));
45
45
  });
46
- AccordionMenu.Collapsable = AccordionMenuCollapsable_1.default;
47
- AccordionMenu.Item = AccordionMenuItem_1.default;
48
- exports.default = AccordionMenu;
46
+ Menu.Collapse = MenuCollapse_1.default;
47
+ Menu.Item = MenuItem_1.default;
48
+ exports.default = Menu;
@@ -33,19 +33,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
33
33
  return (mod && mod.__esModule) ? mod : { "default": mod };
34
34
  };
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.NestingContext = void 0;
36
37
  const react_1 = __importStar(require("react"));
37
38
  const classnames_1 = __importDefault(require("classnames"));
38
39
  const ds_icons_1 = require("@navikt/ds-icons");
39
40
  const MenuItems_1 = __importDefault(require("./MenuItems"));
40
- const Collapsable = (0, react_1.forwardRef)((_a, ref) => {
41
+ exports.NestingContext = (0, react_1.createContext)({ depth: 1 });
42
+ const NestingProvider = ({ children }) => {
43
+ const context = (0, react_1.useContext)(exports.NestingContext);
44
+ return (react_1.default.createElement(exports.NestingContext.Provider, { value: {
45
+ depth: context.depth + 1,
46
+ } }, children));
47
+ };
48
+ const Collapse = (0, react_1.forwardRef)((_a, ref) => {
41
49
  var { children, defaultOpen = false, title, className } = _a, rest = __rest(_a, ["children", "defaultOpen", "title", "className"]);
42
50
  const [isOpen, setIsOpen] = (0, react_1.useState)(defaultOpen);
43
- return (react_1.default.createElement("div", Object.assign({ ref: ref, className: (0, classnames_1.default)("navds-accordion-menu-collapsable", className, {
44
- "navds-accordion-menu-collapsable--open": isOpen,
45
- }) }, rest),
46
- react_1.default.createElement("button", { onClick: () => setIsOpen(!isOpen), className: "navds-accordion-menu-collapsable__button" },
51
+ const context = (0, react_1.useContext)(exports.NestingContext);
52
+ return (react_1.default.createElement("div", Object.assign({}, rest, { ref: ref, className: (0, classnames_1.default)("navds-menu-collapse", className, {
53
+ "navds-menu-collapse--open": isOpen,
54
+ }) }),
55
+ react_1.default.createElement("button", { onClick: () => setIsOpen(!isOpen), className: "navds-menu-collapse__button" },
47
56
  title,
48
- react_1.default.createElement(ds_icons_1.Expand, { title: isOpen ? "Pil peker opp" : "Pil peker ned", className: "navds-accordion-menu-collapsable__expand-icon" })),
49
- isOpen && react_1.default.createElement(MenuItems_1.default, null, children)));
57
+ react_1.default.createElement(ds_icons_1.Expand, { title: isOpen ? "lukk navigasjons-skuff" : "åpne navigason-skuff", className: "navds-menu-collapse__expand-icon" }),
58
+ react_1.default.createElement(ds_icons_1.ExpandFilled, { title: isOpen ? "lukk navigasjons-skuff" : "åpne navigason-skuff", className: "navds-menu-collapse__expand-icon navds-menu-collapse__expand-icon--filled" })),
59
+ react_1.default.createElement(NestingProvider, null, isOpen && (react_1.default.createElement(MenuItems_1.default, { "data-depth": context.depth, className: "navds-menu__list--inner" }, children)))));
50
60
  });
51
- exports.default = Collapsable;
61
+ exports.default = Collapse;
@@ -37,8 +37,8 @@ const react_1 = __importStar(require("react"));
37
37
  const classnames_1 = __importDefault(require("classnames"));
38
38
  const Item = (0, react_1.forwardRef)((_a, ref) => {
39
39
  var { children, as: Component = "a", active = false, className } = _a, rest = __rest(_a, ["children", "as", "active", "className"]);
40
- return (react_1.default.createElement(Component, Object.assign({ ref: ref, className: (0, classnames_1.default)("navds-accordion-menu-item", className, {
41
- "navds-accordion-menu-item--active": active,
40
+ return (react_1.default.createElement(Component, Object.assign({ ref: ref, className: (0, classnames_1.default)("navds-menu-item", className, {
41
+ "navds-menu-item--active": active,
42
42
  }) }, rest), children));
43
43
  });
44
44
  exports.default = Item;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ const classnames_1 = __importDefault(require("classnames"));
18
+ const react_1 = __importDefault(require("react"));
19
+ const MenuItems = (_a) => {
20
+ var { children, className } = _a, rest = __rest(_a, ["children", "className"]);
21
+ return (react_1.default.createElement("ul", Object.assign({}, rest, { className: (0, classnames_1.default)("navds-menu__list", className) }), react_1.default.Children.toArray(children).map((child, i) => (react_1.default.createElement("li", { key: i, className: "navds-menu__list-item" }, child)))));
22
+ };
23
+ exports.default = MenuItems;
@@ -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.Menu = void 0;
7
+ var Menu_1 = require("./Menu");
8
+ Object.defineProperty(exports, "Menu", { enumerable: true, get: function () { return __importDefault(Menu_1).default; } });
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "main": "./index.js",
4
+ "module": "../../esm/menu/index.js",
5
+ "types": "../../esm/menu/index.d.ts"
6
+ }
@@ -41,7 +41,7 @@ const ds_icons_1 = require("@navikt/ds-icons");
41
41
  const __1 = require("..");
42
42
  const ModalContent_1 = __importDefault(require("./ModalContent"));
43
43
  const Modal = (0, react_1.forwardRef)((_a, ref) => {
44
- var { children, open, onClose, className, shouldCloseOnOverlayClick = true, closeButton = true } = _a, rest = __rest(_a, ["children", "open", "onClose", "className", "shouldCloseOnOverlayClick", "closeButton"]);
44
+ var { children, open, onClose, className, shouldCloseOnOverlayClick = true, closeButton = true, "aria-describedby": ariaDescribedBy, "aria-labelledby": ariaLabelledBy, "aria-modal": ariaModal } = _a, rest = __rest(_a, ["children", "open", "onClose", "className", "shouldCloseOnOverlayClick", "closeButton", "aria-describedby", "aria-labelledby", "aria-modal"]);
45
45
  const modalRef = (0, react_1.useRef)(null);
46
46
  const mergedRef = (0, react_merge_refs_1.default)([modalRef, ref]);
47
47
  const buttonRef = (0, react_1.useRef)(null);
@@ -53,7 +53,11 @@ const Modal = (0, react_1.forwardRef)((_a, ref) => {
53
53
  buttonRef.current.focus();
54
54
  }
55
55
  };
56
- return (react_1.default.createElement(react_modal_1.default, Object.assign({}, rest, { isOpen: open, ref: mergedRef, className: (0, classnames_1.default)("navds-modal", className), overlayClassName: "navds-modal__overlay", shouldCloseOnOverlayClick: shouldCloseOnOverlayClick, onRequestClose: (e) => onModalCloseRequest(e) }),
56
+ return (react_1.default.createElement(react_modal_1.default, Object.assign({}, rest, { isOpen: open, ref: mergedRef, className: (0, classnames_1.default)("navds-modal", className), overlayClassName: "navds-modal__overlay", shouldCloseOnOverlayClick: shouldCloseOnOverlayClick, onRequestClose: (e) => onModalCloseRequest(e), aria: {
57
+ describedby: ariaDescribedBy,
58
+ labelledby: ariaLabelledBy,
59
+ modal: ariaModal,
60
+ } }),
57
61
  children,
58
62
  closeButton && (react_1.default.createElement(__1.Button, { className: (0, classnames_1.default)("navds-modal__button", {
59
63
  "navds-modal__button--shake": shouldCloseOnOverlayClick,
@@ -41,7 +41,7 @@ const PageHeader = (0, react_1.forwardRef)((_a, ref) => {
41
41
  return (react_1.default.createElement("div", Object.assign({ ref: ref, className: (0, classnames_1.default)("navds-page-header", className, `navds-page-header--${variant}`, `navds-page-header--${align}`) }, rest),
42
42
  illustration && (react_1.default.createElement("div", { className: "navds-page-header__illustration" }, illustration)),
43
43
  react_1.default.createElement("div", { className: "navds-page-header__wrapper" },
44
- react_1.default.createElement(__1.Heading, { className: "navds-page-header__title", size: "2xlarge", level: "1" }, children),
44
+ react_1.default.createElement(__1.Heading, { className: "navds-page-header__title", size: "xlarge", level: "1" }, children),
45
45
  description && (react_1.default.createElement(__1.BodyShort, { className: "navds-page-header__description" }, description)))));
46
46
  });
47
47
  exports.default = PageHeader;
@@ -0,0 +1,51 @@
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.getSteps = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const classnames_1 = __importDefault(require("classnames"));
9
+ const ds_icons_1 = require("@navikt/ds-icons");
10
+ const __1 = require("..");
11
+ const getSteps = ({ page, count, boundaryCount = 1, siblingCount = 1, }) => {
12
+ var _a, _b;
13
+ const range = (start, end) => Array.from({ length: end - start + 1 }, (_, i) => start + i);
14
+ if (count <= (boundaryCount + siblingCount) * 2 + 3)
15
+ return range(1, count);
16
+ const startPages = range(1, boundaryCount);
17
+ const endPages = range(count - boundaryCount + 1, count);
18
+ const siblingsStart = Math.max(Math.min(page - siblingCount, count - boundaryCount - siblingCount * 2 - 1), boundaryCount + 2);
19
+ const siblingsEnd = siblingsStart + siblingCount * 2;
20
+ return [
21
+ ...startPages,
22
+ siblingsStart - ((_a = startPages[startPages.length - 1]) !== null && _a !== void 0 ? _a : 0) === 2
23
+ ? siblingsStart - 1
24
+ : "ellipsis",
25
+ ...range(siblingsStart, siblingsEnd),
26
+ ((_b = endPages[0]) !== null && _b !== void 0 ? _b : count + 1) - siblingsEnd === 2
27
+ ? siblingsEnd + 1
28
+ : "ellipsis",
29
+ ...endPages,
30
+ ];
31
+ };
32
+ exports.getSteps = getSteps;
33
+ const Pagination = ({ page, onPageChange, count, siblingCount, boundaryCount, className, size = "medium", prevNextTexts = false, }) => {
34
+ return (react_1.default.createElement("nav", { className: (0, classnames_1.default)("navds-pagination", `navds-pagination--${size}`, className) },
35
+ react_1.default.createElement("ul", { className: "navds-pagination__list" },
36
+ react_1.default.createElement("li", null,
37
+ react_1.default.createElement("button", { className: "navds-pagination__previous", disabled: page === 1, onClick: () => onPageChange(page - 1) },
38
+ react_1.default.createElement(ds_icons_1.Back, { className: "navds-pagination__previous-icon", "aria-label": prevNextTexts ? undefined : "Tilbake", role: prevNextTexts ? "presentation" : undefined }),
39
+ prevNextTexts && react_1.default.createElement(__1.BodyShort, { size: size }, "Tilbake"))),
40
+ (0, exports.getSteps)({ page, count, siblingCount, boundaryCount }).map((step, i) => {
41
+ const n = Number(step);
42
+ return isNaN(n) ? (react_1.default.createElement("li", { className: "navds-pagination__ellipsis", key: `${step}${i}` },
43
+ react_1.default.createElement(__1.BodyShort, { size: size }, "..."))) : (react_1.default.createElement("li", null,
44
+ react_1.default.createElement(__1.BodyShort, { size: size, as: "button", key: step, className: "navds-pagination__item", onClick: () => onPageChange(n), "aria-current": page === n ? true : undefined }, n)));
45
+ }),
46
+ react_1.default.createElement("li", null,
47
+ react_1.default.createElement("button", { className: "navds-pagination__next", disabled: page === count, onClick: () => onPageChange(page + 1) },
48
+ prevNextTexts && react_1.default.createElement(__1.BodyShort, { size: size }, "Neste"),
49
+ react_1.default.createElement(ds_icons_1.Next, { className: "navds-pagination__next-icon", title: prevNextTexts ? undefined : "Neste", role: prevNextTexts ? "presentation" : undefined }))))));
50
+ };
51
+ exports.default = Pagination;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.Pagination = void 0;
17
+ var Pagination_1 = require("./Pagination");
18
+ Object.defineProperty(exports, "Pagination", { enumerable: true, get: function () { return __importDefault(Pagination_1).default; } });
19
+ __exportStar(require("./Pagination"), exports);
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": false,
3
+ "main": "./index.js",
4
+ "module": "../../esm/pagination/index.js",
5
+ "types": "../../esm/pagination/index.d.ts"
6
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __rest = (this && this.__rest) || function (s, e) {
22
+ var t = {};
23
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
24
+ t[p] = s[p];
25
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
26
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
27
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
28
+ t[p[i]] = s[p[i]];
29
+ }
30
+ return t;
31
+ };
32
+ var __importDefault = (this && this.__importDefault) || function (mod) {
33
+ return (mod && mod.__esModule) ? mod : { "default": mod };
34
+ };
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const react_1 = __importStar(require("react"));
37
+ const __1 = require("..");
38
+ const ds_icons_1 = require("@navikt/ds-icons");
39
+ const HeaderCell_1 = __importDefault(require("./HeaderCell"));
40
+ const ColumnHeader = (0, react_1.forwardRef)((_a, ref) => {
41
+ var _b, _c, _d, _e;
42
+ var { className, children, sortable = false, sortKey } = _a, rest = __rest(_a, ["className", "children", "sortable", "sortKey"]);
43
+ const context = (0, react_1.useContext)(__1.TableContext);
44
+ if (sortable && !sortKey) {
45
+ console.warn("ColumnHeader with `sortable=true` must have a sortKey.");
46
+ }
47
+ return (react_1.default.createElement(HeaderCell_1.default, Object.assign({ scope: "col", ref: ref, className: className, "aria-sort": sortable
48
+ ? ((_b = context === null || context === void 0 ? void 0 : context.sort) === null || _b === void 0 ? void 0 : _b.orderBy) === sortKey
49
+ ? (_c = context === null || context === void 0 ? void 0 : context.sort) === null || _c === void 0 ? void 0 : _c.direction
50
+ : "none"
51
+ : undefined }, rest), sortable ? (react_1.default.createElement("button", { className: "navds-table__sort-button", onClick: sortable && sortKey
52
+ ? () => { var _a; return (_a = context === null || context === void 0 ? void 0 : context.toggleColumnSort) === null || _a === void 0 ? void 0 : _a.call(context, sortKey); }
53
+ : undefined },
54
+ children,
55
+ ((_d = context === null || context === void 0 ? void 0 : context.sort) === null || _d === void 0 ? void 0 : _d.orderBy) === sortKey &&
56
+ ((_e = context === null || context === void 0 ? void 0 : context.sort) === null || _e === void 0 ? void 0 : _e.direction) === "descending" ? (react_1.default.createElement(ds_icons_1.Down, { "aria-label": "sorter synkende" })) : (react_1.default.createElement(ds_icons_1.Up, { "aria-label": "sorter stigende" })))) : (children)));
57
+ });
58
+ exports.default = ColumnHeader;
@@ -39,12 +39,24 @@ const classnames_1 = __importDefault(require("classnames"));
39
39
  const Header_1 = __importDefault(require("./Header"));
40
40
  const Body_1 = __importDefault(require("./Body"));
41
41
  const Row_1 = __importDefault(require("./Row"));
42
+ const ColumnHeader_1 = __importDefault(require("./ColumnHeader"));
42
43
  const HeaderCell_1 = __importDefault(require("./HeaderCell"));
43
44
  const DataCell_1 = __importDefault(require("./DataCell"));
44
45
  exports.TableContext = (0, react_1.createContext)(null);
45
46
  const Table = (0, react_1.forwardRef)((_a, ref) => {
46
- var { className, zebraStripes = false, size = "medium" } = _a, rest = __rest(_a, ["className", "zebraStripes", "size"]);
47
- return (react_1.default.createElement(exports.TableContext.Provider, { value: { size } },
47
+ var { className, zebraStripes = false, size = "medium", onSortChange, sort } = _a, rest = __rest(_a, ["className", "zebraStripes", "size", "onSortChange", "sort"]);
48
+ return (react_1.default.createElement(exports.TableContext.Provider, { value: {
49
+ size,
50
+ toggleColumnSort: (sortKey) => onSortChange === null || onSortChange === void 0 ? void 0 : onSortChange((sort === null || sort === void 0 ? void 0 : sort.orderBy) === sortKey && sort.direction === "descending"
51
+ ? undefined
52
+ : {
53
+ orderBy: sortKey,
54
+ direction: (sort === null || sort === void 0 ? void 0 : sort.direction) === "ascending"
55
+ ? "descending"
56
+ : "ascending",
57
+ }),
58
+ sort,
59
+ } },
48
60
  react_1.default.createElement("table", Object.assign({}, rest, { ref: ref, className: (0, classnames_1.default)("navds-table", `navds-table--${size}`, className, {
49
61
  "navds-table--zebra-stripes": zebraStripes,
50
62
  }) }))));
@@ -52,6 +64,7 @@ const Table = (0, react_1.forwardRef)((_a, ref) => {
52
64
  Table.Header = Header_1.default;
53
65
  Table.Body = Body_1.default;
54
66
  Table.Row = Row_1.default;
67
+ Table.ColumnHeader = ColumnHeader_1.default;
55
68
  Table.HeaderCell = HeaderCell_1.default;
56
69
  Table.DataCell = DataCell_1.default;
57
70
  exports.default = Table;
@@ -30,12 +30,12 @@ const AccordionHeader = forwardRef((_a, ref) => {
30
30
  context.toggleOpen();
31
31
  onClick && onClick(e);
32
32
  };
33
- return (React.createElement("button", Object.assign({ ref: ref, id: context.buttonId, className: cl("navds-accordion__header", className, "navds-heading", "navds-heading--small"), onClick: handleClick }, rest),
33
+ return (React.createElement("button", Object.assign({}, rest, { ref: ref, id: context.buttonId, className: cl("navds-accordion__header", className, "navds-heading", "navds-heading--small"), onClick: handleClick, "aria-expanded": context.open }),
34
34
  children,
35
- React.createElement(Expand, { title: context.open ? "Lukk panel ikon" : "Åpne panel ikon", className: cl("navds-accordion__expand-icon", {
35
+ React.createElement(Expand, { "aria-hidden": true, className: cl("navds-accordion__expand-icon", {
36
36
  "navds-accordion__expand-icon--flip": context.open,
37
37
  }) }),
38
- React.createElement(ExpandFilled, { title: context.open ? "Lukk panel ikon" : "Åpne panel ikon", className: cl("navds-accordion__expand-icon", "navds-accordion__expand-icon--filled", {
38
+ React.createElement(ExpandFilled, { "aria-hidden": true, className: cl("navds-accordion__expand-icon", "navds-accordion__expand-icon--filled", {
39
39
  "navds-accordion__expand-icon--flip": context.open,
40
40
  }) })));
41
41
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionHeader.js","sourceRoot":"","sources":["../../src/accordion/AccordionHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AAclD,MAAM,eAAe,GAAwB,UAAU,CACrD,CAAC,EAA6C,EAAE,GAAG,EAAE,EAAE;QAAtD,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,OAAW,EAAN,IAAI,cAA3C,0CAA6C,CAAF;IAC1C,MAAM,OAAO,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IAExB,MAAM,WAAW,GAAG,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;IAEnD,qBAAqB,CAAC,GAAG,EAAE;QACzB,WAAW,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IAEzB,IAAI,OAAO,KAAK,IAAI,EAAE;QACpB,OAAO,CAAC,KAAK,CACX,8DAA8D,CAC/D,CAAC;QACF,OAAO,IAAI,CAAC;KACb;IAED,MAAM,WAAW,GAAG,CAClB,CAAkD,EAClD,EAAE;QACF,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,OAAO,CACL,8CACE,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,OAAO,CAAC,QAAQ,EACpB,SAAS,EAAE,EAAE,CACX,yBAAyB,EACzB,SAAS,EACT,eAAe,EACf,sBAAsB,CACvB,EACD,OAAO,EAAE,WAAW,IAChB,IAAI;QAEP,QAAQ;QACT,oBAAC,MAAM,IACL,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,EAC3D,SAAS,EAAE,EAAE,CAAC,8BAA8B,EAAE;gBAC5C,oCAAoC,EAAE,OAAO,CAAC,IAAI;aACnD,CAAC,GACF;QACF,oBAAC,YAAY,IACX,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,EAC3D,SAAS,EAAE,EAAE,CACX,8BAA8B,EAC9B,sCAAsC,EACtC;gBACE,oCAAoC,EAAE,OAAO,CAAC,IAAI;aACnD,CACF,GACD,CACK,CACV,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"AccordionHeader.js","sourceRoot":"","sources":["../../src/accordion/AccordionHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AAclD,MAAM,eAAe,GAAwB,UAAU,CACrD,CAAC,EAA6C,EAAE,GAAG,EAAE,EAAE;QAAtD,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,OAAW,EAAN,IAAI,cAA3C,0CAA6C,CAAF;IAC1C,MAAM,OAAO,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IAExB,MAAM,WAAW,GAAG,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;IAEnD,qBAAqB,CAAC,GAAG,EAAE;QACzB,WAAW,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IAEzB,IAAI,OAAO,KAAK,IAAI,EAAE;QACpB,OAAO,CAAC,KAAK,CACX,8DAA8D,CAC/D,CAAC;QACF,OAAO,IAAI,CAAC;KACb;IAED,MAAM,WAAW,GAAG,CAClB,CAAkD,EAClD,EAAE;QACF,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,OAAO,CACL,gDACM,IAAI,IACR,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,OAAO,CAAC,QAAQ,EACpB,SAAS,EAAE,EAAE,CACX,yBAAyB,EACzB,SAAS,EACT,eAAe,EACf,sBAAsB,CACvB,EACD,OAAO,EAAE,WAAW,mBACL,OAAO,CAAC,IAAI;QAE1B,QAAQ;QACT,oBAAC,MAAM,yBAEL,SAAS,EAAE,EAAE,CAAC,8BAA8B,EAAE;gBAC5C,oCAAoC,EAAE,OAAO,CAAC,IAAI;aACnD,CAAC,GACF;QACF,oBAAC,YAAY,yBAEX,SAAS,EAAE,EAAE,CACX,8BAA8B,EAC9B,sCAAsC,EACtC;gBACE,oCAAoC,EAAE,OAAO,CAAC,IAAI;aACnD,CACF,GACD,CACK,CACV,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -14,7 +14,7 @@ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElemen
14
14
  * Changes padding, height and font-size
15
15
  * @default "medium"
16
16
  */
17
- size?: "medium" | "small";
17
+ size?: "medium" | "small" | "xsmall";
18
18
  /**
19
19
  * Prevent the user from interacting with the button: it cannot be pressed or focused.
20
20
  * @note Avoid using if possible for accessibility purposes
@@ -15,7 +15,7 @@ import cl from "classnames";
15
15
  import { BodyShort, Loader } from "../";
16
16
  import { useClientLayoutEffect } from "../util";
17
17
  const Button = forwardRef((_a, ref) => {
18
- var { as: Component = "button", variant = "primary", className, children, size = "medium", loading = false, disabled } = _a, rest = __rest(_a, ["as", "variant", "className", "children", "size", "loading", "disabled"]);
18
+ var { as: Component = "button", variant = "primary", className, children, size = "medium", loading = false, disabled, style } = _a, rest = __rest(_a, ["as", "variant", "className", "children", "size", "loading", "disabled", "style"]);
19
19
  const buttonRef = useRef(null);
20
20
  const mergedRef = mergeRefs([buttonRef, ref]);
21
21
  const [widthOverride, setWidthOverride] = useState();
@@ -33,8 +33,8 @@ const Button = forwardRef((_a, ref) => {
33
33
  }, [loading, children]);
34
34
  return (React.createElement(Component, Object.assign({}, rest, { ref: mergedRef, className: cl(className, "navds-button", `navds-button--${variant}`, `navds-button--${size}`, {
35
35
  "navds-button--loading": widthOverride,
36
- }), style: { width: widthOverride }, disabled: (disabled !== null && disabled !== void 0 ? disabled : widthOverride) ? true : undefined }),
37
- React.createElement(BodyShort, { as: "span", className: "navds-button__inner", size: size, "aria-live": "polite" }, widthOverride ? React.createElement(Loader, { size: size }) : children)));
36
+ }), style: Object.assign(Object.assign({}, style), { width: widthOverride }), disabled: (disabled !== null && disabled !== void 0 ? disabled : widthOverride) ? true : undefined }),
37
+ React.createElement(BodyShort, { as: "span", className: "navds-button__inner", size: size === "medium" ? "medium" : "small", "aria-live": "polite" }, widthOverride ? React.createElement(Loader, { size: size }) : children)));
38
38
  });
39
39
  export default Button;
40
40
  //# sourceMappingURL=Button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/button/Button.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAwB,MAAM,EAAE,MAAM,KAAK,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AA+BhD,MAAM,MAAM,GAAyD,UAAU,CAC7E,CACE,EASC,EACD,GAAG,EACH,EAAE;QAXF,EACE,EAAE,EAAE,SAAS,GAAG,QAAQ,EACxB,OAAO,GAAG,SAAS,EACnB,SAAS,EACT,QAAQ,EACR,IAAI,GAAG,QAAQ,EACf,OAAO,GAAG,KAAK,EACf,QAAQ,OAET,EADI,IAAI,cART,yEASC,CADQ;IAIT,MAAM,SAAS,GAAG,MAAM,CAA2B,IAAI,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9C,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,EAAU,CAAC;IAE7D,qBAAqB,CAAC,GAAG,EAAE;QACzB,IAAI,OAAO,EAAE;YACX,MAAM,SAAS,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE;;gBAClD,gBAAgB,CAAC,MAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,0CAAE,qBAAqB,EAAE,0CAAE,KAAK,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,EAAE;gBACV,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAC5B,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC,CAAC;SACH;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExB,OAAO,CACL,oBAAC,SAAS,oBACJ,IAAI,IACR,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,EAAE,CACX,SAAS,EACT,cAAc,EACd,iBAAiB,OAAO,EAAE,EAC1B,iBAAiB,IAAI,EAAE,EACvB;YACE,uBAAuB,EAAE,aAAa;SACvC,CACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAC/B,QAAQ,EAAE,CAAA,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,aAAa,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAEtD,oBAAC,SAAS,IACR,EAAE,EAAC,MAAM,EACT,SAAS,EAAC,qBAAqB,EAC/B,IAAI,EAAE,IAAI,eACA,QAAQ,IAEjB,aAAa,CAAC,CAAC,CAAC,oBAAC,MAAM,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC,CAAC,CAAC,QAAQ,CACxC,CACF,CACb,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/button/Button.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAwB,MAAM,EAAE,MAAM,KAAK,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AA+BhD,MAAM,MAAM,GAAyD,UAAU,CAC7E,CACE,EAUC,EACD,GAAG,EACH,EAAE;QAZF,EACE,EAAE,EAAE,SAAS,GAAG,QAAQ,EACxB,OAAO,GAAG,SAAS,EACnB,SAAS,EACT,QAAQ,EACR,IAAI,GAAG,QAAQ,EACf,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,KAAK,OAEN,EADI,IAAI,cATT,kFAUC,CADQ;IAIT,MAAM,SAAS,GAAG,MAAM,CAA2B,IAAI,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9C,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,EAAU,CAAC;IAE7D,qBAAqB,CAAC,GAAG,EAAE;QACzB,IAAI,OAAO,EAAE;YACX,MAAM,SAAS,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE;;gBAClD,gBAAgB,CAAC,MAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,0CAAE,qBAAqB,EAAE,0CAAE,KAAK,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,EAAE;gBACV,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAC5B,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC,CAAC;SACH;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExB,OAAO,CACL,oBAAC,SAAS,oBACJ,IAAI,IACR,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,EAAE,CACX,SAAS,EACT,cAAc,EACd,iBAAiB,OAAO,EAAE,EAC1B,iBAAiB,IAAI,EAAE,EACvB;YACE,uBAAuB,EAAE,aAAa;SACvC,CACF,EACD,KAAK,kCACA,KAAK,KACR,KAAK,EAAE,aAAa,KAEtB,QAAQ,EAAE,CAAA,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,aAAa,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAEtD,oBAAC,SAAS,IACR,EAAE,EAAC,MAAM,EACT,SAAS,EAAC,qBAAqB,EAC/B,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,eAClC,QAAQ,IAEjB,aAAa,CAAC,CAAC,CAAC,oBAAC,MAAM,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC,CAAC,CAAC,QAAQ,CACxC,CACF,CACb,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -18,6 +18,11 @@ export interface CheckboxProps extends Omit<FormFieldProps, "errorId">, Omit<Inp
18
18
  * The value of the HTML element.
19
19
  */
20
20
  value?: string;
21
+ /**
22
+ * Specify whether the Checkbox is in an indeterminate state
23
+ * @default false
24
+ */
25
+ indeterminate?: boolean;
21
26
  }
22
27
  declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
23
28
  export default Checkbox;
@@ -15,7 +15,18 @@ const Checkbox = forwardRef((props, ref) => {
15
15
  "error",
16
16
  "description",
17
17
  "hideLabel",
18
- ]), inputProps, { className: "navds-checkbox__input", ref: ref })),
18
+ ]), inputProps, { type: "checkbox", className: "navds-checkbox__input", "aria-checked": props.indeterminate ? "mixed" : inputProps.checked, ref: (el) => {
19
+ var _a;
20
+ if (el) {
21
+ el.indeterminate = (_a = props.indeterminate) !== null && _a !== void 0 ? _a : false;
22
+ }
23
+ if (typeof ref === "function") {
24
+ ref(el);
25
+ }
26
+ else if (ref != null) {
27
+ ref.current = el;
28
+ }
29
+ } })),
19
30
  React.createElement("label", { htmlFor: inputProps.id, className: "navds-checkbox__label" },
20
31
  React.createElement("div", { className: cl("navds-checkbox__content", {
21
32
  "navds-sr-only": props.hideLabel,
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../../src/form/checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAuB,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAwBhD,MAAM,QAAQ,GAAG,UAAU,CAAkC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1E,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAE1D,MAAM,WAAW,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3D,OAAO,CACL,6BACE,SAAS,EAAE,EAAE,CACX,KAAK,CAAC,SAAS,EACf,gBAAgB,EAChB,mBAAmB,IAAI,EAAE,EACzB;YACE,uBAAuB,EAAE,QAAQ;YACjC,0BAA0B,EAAE,UAAU,CAAC,QAAQ;SAChD,CACF;QAED,+CACM,IAAI,CAAC,KAAK,EAAE;YACd,UAAU;YACV,MAAM;YACN,OAAO;YACP,aAAa;YACb,WAAW;SACZ,CAAC,EACE,UAAU,IACd,SAAS,EAAC,uBAAuB,EACjC,GAAG,EAAE,GAAG,IACR;QACF,+BAAO,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAC,uBAAuB;YAC9D,6BACE,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE;oBACvC,eAAe,EAAE,KAAK,CAAC,SAAS;iBACjC,CAAC;gBAEF,oBAAC,SAAS,IAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAE,IAAI,IAC3B,KAAK,CAAC,QAAQ,CACL;gBACX,KAAK,CAAC,WAAW,IAAI,CACpB,oBAAC,WAAW,IACV,EAAE,EAAC,KAAK,EACR,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,6BAA6B,IAEtC,KAAK,CAAC,WAAW,CACN,CACf,CACG,CACA,CACJ,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../../src/form/checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAuB,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AA6BhD,MAAM,QAAQ,GAAG,UAAU,CAAkC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1E,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAE1D,MAAM,WAAW,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3D,OAAO,CACL,6BACE,SAAS,EAAE,EAAE,CACX,KAAK,CAAC,SAAS,EACf,gBAAgB,EAChB,mBAAmB,IAAI,EAAE,EACzB;YACE,uBAAuB,EAAE,QAAQ;YACjC,0BAA0B,EAAE,UAAU,CAAC,QAAQ;SAChD,CACF;QAED,+CACM,IAAI,CAAC,KAAK,EAAE;YACd,UAAU;YACV,MAAM;YACN,OAAO;YACP,aAAa;YACb,WAAW;SACZ,CAAC,EACE,UAAU,IACd,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,uBAAuB,kBACnB,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAChE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;;gBACV,IAAI,EAAE,EAAE;oBACN,EAAE,CAAC,aAAa,GAAG,MAAA,KAAK,CAAC,aAAa,mCAAI,KAAK,CAAC;iBACjD;gBAED,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;oBAC7B,GAAG,CAAC,EAAE,CAAC,CAAC;iBACT;qBAAM,IAAI,GAAG,IAAI,IAAI,EAAE;oBACtB,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;iBAClB;YACH,CAAC,IACD;QACF,+BAAO,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAC,uBAAuB;YAC9D,6BACE,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE;oBACvC,eAAe,EAAE,KAAK,CAAC,SAAS;iBACjC,CAAC;gBAEF,oBAAC,SAAS,IAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAE,IAAI,IAC3B,KAAK,CAAC,QAAQ,CACL;gBACX,KAAK,CAAC,WAAW,IAAI,CACpB,oBAAC,WAAW,IACV,EAAE,EAAC,KAAK,EACR,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,6BAA6B,IAEtC,KAAK,CAAC,WAAW,CACN,CACf,CACG,CACA,CACJ,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,eAAe,QAAQ,CAAC"}
@@ -4,7 +4,6 @@ import { CheckboxProps } from "../..";
4
4
  */
5
5
  declare const useCheckbox: ({ children, ...props }: CheckboxProps) => {
6
6
  inputProps: {
7
- type: string;
8
7
  checked: boolean | undefined;
9
8
  defaultChecked: boolean | undefined;
10
9
  onChange: (e: any) => void;
@@ -28,7 +28,7 @@ const useCheckbox = (_a) => {
28
28
  console.warn("A <Checkbox> element within a <CheckboxGroup> requires a `value` property.");
29
29
  }
30
30
  }
31
- return Object.assign(Object.assign({}, rest), { inputProps: Object.assign(Object.assign({}, inputProps), { type: "checkbox", checked: (checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.value)
31
+ return Object.assign(Object.assign({}, rest), { inputProps: Object.assign(Object.assign({}, inputProps), { checked: (checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.value)
32
32
  ? checkboxGroup.value.includes(props.value)
33
33
  : props.checked, defaultChecked: (checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.defaultValue)
34
34
  ? checkboxGroup.defaultValue.includes(props.value)
@@ -1 +1 @@
1
- {"version":3,"file":"useCheckbox.js","sourceRoot":"","sources":["../../../src/form/checkbox/useCheckbox.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,GAAG,CAAC,EAAqC,EAAE,EAAE;QAAzC,EAAE,QAAQ,OAA2B,EAAtB,KAAK,cAApB,YAAsB,CAAF;IACvC,MAAM,aAAa,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAEvD,MAAM,KAA0B,YAAY,CAC1C,IAAI,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,CAAC,EAC5B,UAAU,CACX,EAHK,EAAE,UAAU,OAGjB,EAHsB,IAAI,cAArB,cAAuB,CAG5B,CAAC;IAEF,IAAI,aAAa,EAAE;QACjB,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,OAAO,CAAC,IAAI,CACV,8IAA8I,CAC/I,CAAC;SACH;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;YAC7B,OAAO,CAAC,IAAI,CACV,4EAA4E,CAC7E,CAAC;SACH;KACF;IAED,uCACK,IAAI,KACP,UAAU,kCACL,UAAU,KACb,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK;gBAC3B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAe,CAAC;gBACrD,CAAC,CAAC,KAAK,CAAC,OAAO,EACjB,cAAc,EAAE,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAY;gBACzC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAe,CAAC;gBAC5D,CAAC,CAAC,KAAK,CAAC,cAAc,EACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;gBACd,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACpC,aAAa,IAAI,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC;YACpE,CAAC,OAEH;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"useCheckbox.js","sourceRoot":"","sources":["../../../src/form/checkbox/useCheckbox.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,GAAG,CAAC,EAAqC,EAAE,EAAE;QAAzC,EAAE,QAAQ,OAA2B,EAAtB,KAAK,cAApB,YAAsB,CAAF;IACvC,MAAM,aAAa,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAEvD,MAAM,KAA0B,YAAY,CAC1C,IAAI,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,CAAC,EAC5B,UAAU,CACX,EAHK,EAAE,UAAU,OAGjB,EAHsB,IAAI,cAArB,cAAuB,CAG5B,CAAC;IAEF,IAAI,aAAa,EAAE;QACjB,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,OAAO,CAAC,IAAI,CACV,8IAA8I,CAC/I,CAAC;SACH;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;YAC7B,OAAO,CAAC,IAAI,CACV,4EAA4E,CAC7E,CAAC;SACH;KACF;IAED,uCACK,IAAI,KACP,UAAU,kCACL,UAAU,KACb,OAAO,EAAE,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK;gBAC3B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAe,CAAC;gBACrD,CAAC,CAAC,KAAK,CAAC,OAAO,EACjB,cAAc,EAAE,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAY;gBACzC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAe,CAAC;gBAC5D,CAAC,CAAC,KAAK,CAAC,cAAc,EACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;gBACd,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACpC,aAAa,IAAI,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC;YACpE,CAAC,OAEH;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}