@navikt/ds-react 6.10.1 → 6.11.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 (143) hide show
  1. package/cjs/collapsible/parts/Collapsible.Content.js +1 -1
  2. package/cjs/collapsible/parts/Collapsible.Trigger.js +1 -1
  3. package/cjs/date/datepicker/types.d.ts +1 -1
  4. package/cjs/date/monthpicker/types.d.ts +1 -1
  5. package/cjs/form/file-upload/parts/Trigger.js +1 -1
  6. package/cjs/form/file-upload/parts/item/Item.d.ts +5 -0
  7. package/cjs/form/file-upload/parts/item/Item.js +2 -2
  8. package/cjs/form/file-upload/parts/item/Item.js.map +1 -1
  9. package/cjs/layout/base/BasePrimitive.d.ts +135 -0
  10. package/cjs/layout/base/BasePrimitive.js +40 -0
  11. package/cjs/layout/base/BasePrimitive.js.map +1 -0
  12. package/cjs/layout/bleed/Bleed.js +1 -1
  13. package/cjs/layout/box/Box.d.ts +10 -4
  14. package/cjs/layout/box/Box.js.map +1 -1
  15. package/cjs/layout/page/Page.d.ts +4 -3
  16. package/cjs/layout/page/Page.js.map +1 -1
  17. package/cjs/layout/responsive/Responsive.js +1 -1
  18. package/cjs/layout/utilities/types.d.ts +2 -1
  19. package/cjs/list/ListItem.js +2 -2
  20. package/cjs/list/ListItem.js.map +1 -1
  21. package/cjs/modal/dialog-polyfill.js +0 -3
  22. package/cjs/modal/dialog-polyfill.js.map +1 -1
  23. package/cjs/overlays/dismissablelayer/DismissableLayer.js +1 -1
  24. package/cjs/overlays/dismissablelayer/util/useFocusOutside.d.ts +2 -2
  25. package/cjs/overlays/dismissablelayer/util/useFocusOutside.js +6 -2
  26. package/cjs/overlays/dismissablelayer/util/useFocusOutside.js.map +1 -1
  27. package/cjs/overlays/dismissablelayer/util/usePointerDownOutside.d.ts +1 -1
  28. package/cjs/overlays/dismissablelayer/util/usePointerDownOutside.js +3 -1
  29. package/cjs/overlays/dismissablelayer/util/usePointerDownOutside.js.map +1 -1
  30. package/cjs/overlays/floating/Floating.js +1 -1
  31. package/cjs/pagination/Pagination.d.ts +7 -0
  32. package/cjs/pagination/Pagination.js +5 -2
  33. package/cjs/pagination/Pagination.js.map +1 -1
  34. package/cjs/pagination/PaginationItem.js +4 -2
  35. package/cjs/pagination/PaginationItem.js.map +1 -1
  36. package/cjs/portal/Portal.js +1 -1
  37. package/cjs/slot/Slot.d.ts +6 -0
  38. package/cjs/{util → slot}/Slot.js +6 -37
  39. package/cjs/slot/Slot.js.map +1 -0
  40. package/cjs/slot/merge-props.d.ts +4 -0
  41. package/cjs/slot/merge-props.js +37 -0
  42. package/cjs/slot/merge-props.js.map +1 -0
  43. package/cjs/toggle-group/ToggleGroup.d.ts +3 -3
  44. package/cjs/toggle-group/ToggleGroup.js +3 -3
  45. package/cjs/toggle-group/parts/ToggleItem.d.ts +32 -5
  46. package/cjs/toggle-group/parts/ToggleItem.js +4 -2
  47. package/cjs/toggle-group/parts/ToggleItem.js.map +1 -1
  48. package/cjs/util/hooks/descendants/useDescendant.js +1 -1
  49. package/cjs/util/hooks/descendants/useDescendant.js.map +1 -1
  50. package/cjs/util/hooks/descendants/utils.js +1 -1
  51. package/cjs/util/hooks/descendants/utils.js.map +1 -1
  52. package/cjs/util/i18n/get.js +3 -2
  53. package/cjs/util/i18n/get.js.map +1 -1
  54. package/esm/collapsible/parts/Collapsible.Content.js +1 -1
  55. package/esm/collapsible/parts/Collapsible.Trigger.js +1 -1
  56. package/esm/date/datepicker/types.d.ts +1 -1
  57. package/esm/date/monthpicker/types.d.ts +1 -1
  58. package/esm/form/file-upload/parts/Trigger.js +1 -1
  59. package/esm/form/file-upload/parts/item/Item.d.ts +5 -0
  60. package/esm/form/file-upload/parts/item/Item.js +2 -2
  61. package/esm/form/file-upload/parts/item/Item.js.map +1 -1
  62. package/esm/layout/base/BasePrimitive.d.ts +135 -0
  63. package/esm/layout/base/BasePrimitive.js +33 -0
  64. package/esm/layout/base/BasePrimitive.js.map +1 -0
  65. package/esm/layout/bleed/Bleed.js +1 -1
  66. package/esm/layout/box/Box.d.ts +10 -4
  67. package/esm/layout/box/Box.js.map +1 -1
  68. package/esm/layout/page/Page.d.ts +4 -3
  69. package/esm/layout/page/Page.js.map +1 -1
  70. package/esm/layout/responsive/Responsive.js +1 -1
  71. package/esm/layout/utilities/types.d.ts +2 -1
  72. package/esm/list/ListItem.js +3 -3
  73. package/esm/list/ListItem.js.map +1 -1
  74. package/esm/modal/dialog-polyfill.js +0 -3
  75. package/esm/modal/dialog-polyfill.js.map +1 -1
  76. package/esm/overlays/dismissablelayer/DismissableLayer.js +1 -1
  77. package/esm/overlays/dismissablelayer/util/useFocusOutside.d.ts +2 -2
  78. package/esm/overlays/dismissablelayer/util/useFocusOutside.js +6 -2
  79. package/esm/overlays/dismissablelayer/util/useFocusOutside.js.map +1 -1
  80. package/esm/overlays/dismissablelayer/util/usePointerDownOutside.d.ts +1 -1
  81. package/esm/overlays/dismissablelayer/util/usePointerDownOutside.js +3 -1
  82. package/esm/overlays/dismissablelayer/util/usePointerDownOutside.js.map +1 -1
  83. package/esm/overlays/floating/Floating.js +1 -1
  84. package/esm/pagination/Pagination.d.ts +7 -0
  85. package/esm/pagination/Pagination.js +6 -3
  86. package/esm/pagination/Pagination.js.map +1 -1
  87. package/esm/pagination/PaginationItem.js +4 -2
  88. package/esm/pagination/PaginationItem.js.map +1 -1
  89. package/esm/portal/Portal.js +1 -1
  90. package/esm/slot/Slot.d.ts +6 -0
  91. package/esm/slot/Slot.js +32 -0
  92. package/esm/slot/Slot.js.map +1 -0
  93. package/esm/slot/merge-props.d.ts +4 -0
  94. package/esm/slot/merge-props.js +34 -0
  95. package/esm/slot/merge-props.js.map +1 -0
  96. package/esm/toggle-group/ToggleGroup.d.ts +3 -3
  97. package/esm/toggle-group/ToggleGroup.js +3 -3
  98. package/esm/toggle-group/parts/ToggleItem.d.ts +32 -5
  99. package/esm/toggle-group/parts/ToggleItem.js +4 -2
  100. package/esm/toggle-group/parts/ToggleItem.js.map +1 -1
  101. package/esm/util/hooks/descendants/useDescendant.js +1 -1
  102. package/esm/util/hooks/descendants/useDescendant.js.map +1 -1
  103. package/esm/util/hooks/descendants/utils.js +1 -1
  104. package/esm/util/hooks/descendants/utils.js.map +1 -1
  105. package/esm/util/i18n/get.js +3 -2
  106. package/esm/util/i18n/get.js.map +1 -1
  107. package/package.json +3 -3
  108. package/src/collapsible/parts/Collapsible.Content.tsx +1 -1
  109. package/src/collapsible/parts/Collapsible.Trigger.tsx +1 -1
  110. package/src/date/datepicker/types.ts +1 -1
  111. package/src/date/monthpicker/types.ts +1 -1
  112. package/src/form/file-upload/parts/Trigger.tsx +1 -1
  113. package/src/form/file-upload/parts/item/Item.tsx +7 -1
  114. package/src/layout/base/BasePrimitive.tsx +232 -0
  115. package/src/layout/bleed/Bleed.tsx +1 -1
  116. package/src/layout/box/Box.tsx +11 -4
  117. package/src/layout/page/Page.tsx +4 -3
  118. package/src/layout/responsive/Responsive.tsx +1 -1
  119. package/src/layout/utilities/types.ts +2 -3
  120. package/src/list/ListItem.tsx +5 -5
  121. package/src/modal/dialog-polyfill.ts +0 -3
  122. package/src/overlays/dismissablelayer/DismissableLayer.tsx +1 -1
  123. package/src/overlays/dismissablelayer/util/useFocusOutside.ts +6 -2
  124. package/src/overlays/dismissablelayer/util/usePointerDownOutside.ts +3 -1
  125. package/src/overlays/floating/Floating.tsx +1 -1
  126. package/src/pagination/Pagination.tsx +26 -1
  127. package/src/pagination/PaginationItem.tsx +4 -0
  128. package/src/portal/Portal.tsx +1 -1
  129. package/src/slot/Slot.tsx +33 -0
  130. package/src/{util/Slot.tsx → slot/merge-props.ts} +2 -34
  131. package/src/slot/tests/merge-props.test.ts +49 -0
  132. package/src/toggle-group/ToggleGroup.test.tsx +3 -9
  133. package/src/toggle-group/ToggleGroup.tsx +3 -3
  134. package/src/toggle-group/parts/ToggleItem.tsx +54 -8
  135. package/src/util/hooks/descendants/useDescendant.tsx +1 -1
  136. package/src/util/hooks/descendants/utils.ts +1 -1
  137. package/src/util/i18n/get.ts +4 -2
  138. package/cjs/util/Slot.d.ts +0 -6
  139. package/cjs/util/Slot.js.map +0 -1
  140. package/esm/util/Slot.d.ts +0 -6
  141. package/esm/util/Slot.js +0 -63
  142. package/esm/util/Slot.js.map +0 -1
  143. /package/src/{util/__tests__ → slot/tests}/Slot.test.tsx +0 -0
@@ -13,10 +13,12 @@ import cl from "clsx";
13
13
  import React, { forwardRef } from "react";
14
14
  import { Button } from "../button/index.js";
15
15
  export const Item = forwardRef((_a, ref) => {
16
- var { children, as: Component = "button", selected = false, className } = _a, rest = __rest(_a, ["children", "as", "selected", "className"]);
16
+ var { children, as: Component = "button", selected = false, className, page } = _a, rest = __rest(_a, ["children", "as", "selected", "className", "page"]);
17
17
  return (React.createElement(Button, Object.assign({ as: Component, variant: "tertiary", "aria-current": selected, ref: ref, className: cl("navds-pagination__item", className, {
18
18
  "navds-pagination__item--selected": selected,
19
- }) }, (Component === "button" && { type: "button" }), rest), children));
19
+ }), "data-page": page,
20
+ /* TODO: Breaking change to remove. Add to future major version. */
21
+ page: page }, (Component === "button" && { type: "button" }), rest), children));
20
22
  });
21
23
  export default Item;
22
24
  //# sourceMappingURL=PaginationItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaginationItem.js","sourceRoot":"","sources":["../../src/pagination/PaginationItem.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAe,MAAM,WAAW,CAAC;AA0BhD,MAAM,CAAC,MAAM,IAAI,GAAuB,UAAU,CAChD,CACE,EAMC,EACD,GAAG,EACH,EAAE;QARF,EACE,QAAQ,EACR,EAAE,EAAE,SAAS,GAAG,QAAQ,EACxB,QAAQ,GAAG,KAAK,EAChB,SAAS,OAEV,EADI,IAAI,cALT,2CAMC,CADQ;IAIT,OAAO,CACL,oBAAC,MAAM,kBACL,EAAE,EAAE,SAAS,EACb,OAAO,EAAC,UAAU,kBACJ,QAAQ,EACtB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE,SAAS,EAAE;YACjD,kCAAkC,EAAE,QAAQ;SAC7C,CAAC,IACE,CAAC,SAAS,KAAK,QAAQ,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAC9C,IAAI,GAEP,QAAQ,CACF,CACV,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"PaginationItem.js","sourceRoot":"","sources":["../../src/pagination/PaginationItem.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAe,MAAM,WAAW,CAAC;AA0BhD,MAAM,CAAC,MAAM,IAAI,GAAuB,UAAU,CAChD,CACE,EAOC,EACD,GAAG,EACH,EAAE;QATF,EACE,QAAQ,EACR,EAAE,EAAE,SAAS,GAAG,QAAQ,EACxB,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,IAAI,OAEL,EADI,IAAI,cANT,mDAOC,CADQ;IAIT,OAAO,CACL,oBAAC,MAAM,kBACL,EAAE,EAAE,SAAS,EACb,OAAO,EAAC,UAAU,kBACJ,QAAQ,EACtB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE,SAAS,EAAE;YACjD,kCAAkC,EAAE,QAAQ;SAC7C,CAAC,eACS,IAAI;QACf,mEAAmE;QACnE,IAAI,EAAE,IAAI,IACN,CAAC,SAAS,KAAK,QAAQ,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAC9C,IAAI,GAEP,QAAQ,CACF,CACV,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -12,7 +12,7 @@ var __rest = (this && this.__rest) || function (s, e) {
12
12
  import React, { forwardRef } from "react";
13
13
  import ReactDOM from "react-dom";
14
14
  import { useProvider } from "../provider/Provider.js";
15
- import { Slot } from "../util/Slot.js";
15
+ import { Slot } from "../slot/Slot.js";
16
16
  export const Portal = forwardRef((_a, ref) => {
17
17
  var _b, _c, _d;
18
18
  var { rootElement, asChild } = _a, rest = __rest(_a, ["rootElement", "asChild"]);
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ interface SlotProps extends React.HTMLAttributes<HTMLElement> {
3
+ children?: React.ReactNode;
4
+ }
5
+ declare const Slot: React.ForwardRefExoticComponent<SlotProps & React.RefAttributes<HTMLElement>>;
6
+ export { Slot, type SlotProps };
@@ -0,0 +1,32 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import * as React from "react";
13
+ import { mergeRefs } from "../util/hooks/useMergeRefs.js";
14
+ import { mergeProps } from "./merge-props.js";
15
+ const Slot = React.forwardRef((props, forwardedRef) => {
16
+ var _a;
17
+ const { children } = props, slotProps = __rest(props, ["children"]);
18
+ if (React.isValidElement(children)) {
19
+ return React.cloneElement(children, Object.assign(Object.assign({}, mergeProps(slotProps, children.props)), { ref: forwardedRef
20
+ ? mergeRefs([forwardedRef, children.ref])
21
+ : children.ref }));
22
+ }
23
+ if (React.Children.count(children) > 1) {
24
+ const error = new Error("Aksel: Components using 'asChild' expects to recieve a single React element child.");
25
+ error.name = "SlotError";
26
+ (_a = Error.captureStackTrace) === null || _a === void 0 ? void 0 : _a.call(Error, error, Slot);
27
+ throw error;
28
+ }
29
+ return null;
30
+ });
31
+ export { Slot };
32
+ //# sourceMappingURL=Slot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Slot.js","sourceRoot":"","sources":["../../src/slot/Slot.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAM3C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAyB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;;IAC5E,MAAM,EAAE,QAAQ,KAAmB,KAAK,EAAnB,SAAS,UAAK,KAAK,EAAlC,YAA0B,CAAQ,CAAC;IAEzC,IAAI,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,YAAY,CAAM,QAAQ,kCAClC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,KACxC,GAAG,EAAE,YAAY;gBACf,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,EAAG,QAAgB,CAAC,GAAG,CAAC,CAAC;gBAClD,CAAC,CAAE,QAAgB,CAAC,GAAG,IACzB,CAAC;IACL,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,oFAAoF,CACrF,CAAC;QACF,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC;QACzB,MAAA,KAAK,CAAC,iBAAiB,sDAAG,KAAK,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC,CAAC;AAEH,OAAO,EAAE,IAAI,EAAkB,CAAC"}
@@ -0,0 +1,4 @@
1
+ declare function mergeProps(slotProps: Record<string, any>, childProps: Record<string, any>): {
2
+ [x: string]: any;
3
+ };
4
+ export { mergeProps };
@@ -0,0 +1,34 @@
1
+ function mergeProps(slotProps, childProps) {
2
+ // all child props should override
3
+ const overrideProps = Object.assign({}, childProps);
4
+ for (const propName in childProps) {
5
+ const slotPropValue = slotProps[propName];
6
+ const childPropValue = childProps[propName];
7
+ const isHandler = /^on[A-Z]/.test(propName);
8
+ if (isHandler) {
9
+ // if the handler exists on both, we compose them
10
+ if (slotPropValue && childPropValue) {
11
+ overrideProps[propName] = (...args) => {
12
+ childPropValue(...args);
13
+ slotPropValue(...args);
14
+ };
15
+ }
16
+ // but if it exists only on the slot, we use only this one
17
+ else if (slotPropValue) {
18
+ overrideProps[propName] = slotPropValue;
19
+ }
20
+ }
21
+ // if it's `style`, we merge them
22
+ else if (propName === "style") {
23
+ overrideProps[propName] = Object.assign(Object.assign({}, slotPropValue), childPropValue);
24
+ }
25
+ else if (propName === "className") {
26
+ overrideProps[propName] = [slotPropValue, childPropValue]
27
+ .filter(Boolean)
28
+ .join(" ");
29
+ }
30
+ }
31
+ return Object.assign(Object.assign({}, slotProps), overrideProps);
32
+ }
33
+ export { mergeProps };
34
+ //# sourceMappingURL=merge-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-props.js","sourceRoot":"","sources":["../../src/slot/merge-props.ts"],"names":[],"mappings":"AAAA,SAAS,UAAU,CACjB,SAA8B,EAC9B,UAA+B;IAE/B,kCAAkC;IAClC,MAAM,aAAa,qBAAQ,UAAU,CAAE,CAAC;IAExC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE5C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,SAAS,EAAE,CAAC;YACd,iDAAiD;YACjD,IAAI,aAAa,IAAI,cAAc,EAAE,CAAC;gBACpC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;oBAC/C,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC;oBACxB,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC;gBACzB,CAAC,CAAC;YACJ,CAAC;YACD,0DAA0D;iBACrD,IAAI,aAAa,EAAE,CAAC;gBACvB,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,iCAAiC;aAC5B,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC9B,aAAa,CAAC,QAAQ,CAAC,mCAAQ,aAAa,GAAK,cAAc,CAAE,CAAC;QACpE,CAAC;aAAM,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC;iBACtD,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED,uCAAY,SAAS,GAAK,aAAa,EAAG;AAC5C,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -16,9 +16,9 @@ interface ToggleGroupComponent extends React.ForwardRefExoticComponent<ToggleGro
16
16
  * @example
17
17
  * ```jsx
18
18
  * <ToggleGroup defaultValue="lest" onChange={console.log} size="small">
19
- * <ToggleGroup.Item value="ulest">Ulest</ToggleGroup.Item>
20
- * <ToggleGroup.Item value="lest">Leste</ToggleGroup.Item>
21
- * <ToggleGroup.Item value="sendt">Sendt</ToggleGroup.Item>
19
+ * <ToggleGroup.Item value="ulest" label="Ulest" />
20
+ * <ToggleGroup.Item value="lest" label="Leste" />
21
+ * <ToggleGroup.Item value="sendt" label="Sendt" />
22
22
  * </ToggleGroup>
23
23
  * ```
24
24
  */
@@ -25,9 +25,9 @@ import { useToggleGroup } from "./useToggleGroup.js";
25
25
  * @example
26
26
  * ```jsx
27
27
  * <ToggleGroup defaultValue="lest" onChange={console.log} size="small">
28
- * <ToggleGroup.Item value="ulest">Ulest</ToggleGroup.Item>
29
- * <ToggleGroup.Item value="lest">Leste</ToggleGroup.Item>
30
- * <ToggleGroup.Item value="sendt">Sendt</ToggleGroup.Item>
28
+ * <ToggleGroup.Item value="ulest" label="Ulest" />
29
+ * <ToggleGroup.Item value="lest" label="Leste" />
30
+ * <ToggleGroup.Item value="sendt" label="Sendt" />
31
31
  * </ToggleGroup>
32
32
  * ```
33
33
  */
@@ -1,13 +1,40 @@
1
1
  import React from "react";
2
- export interface ToggleGroupItemProps extends React.HTMLAttributes<HTMLButtonElement> {
2
+ type BaseProps = Omit<React.HTMLAttributes<HTMLButtonElement>, "children"> & {
3
3
  /**
4
- * Content.
4
+ * Value for state-handling.
5
+ */
6
+ value: string;
7
+ };
8
+ type ChildrenProps = {
9
+ /**
10
+ * @deprecated Use `label` and/or `icon` as replacement.
5
11
  */
6
12
  children: React.ReactNode;
13
+ label?: never;
14
+ icon?: never;
15
+ };
16
+ type LabelProps = {
17
+ children?: never;
7
18
  /**
8
- * Value for state-handling.
19
+ * Item label.
9
20
  */
10
- value: string;
11
- }
21
+ label: React.ReactNode;
22
+ /**
23
+ * Item Icon.
24
+ */
25
+ icon?: React.ReactNode;
26
+ };
27
+ type IconProps = {
28
+ children?: never;
29
+ /**
30
+ * Item label.
31
+ */
32
+ label?: React.ReactNode;
33
+ /**
34
+ * Item Icon.
35
+ */
36
+ icon: React.ReactNode;
37
+ };
38
+ export type ToggleGroupItemProps = BaseProps & (ChildrenProps | LabelProps | IconProps);
12
39
  declare const ToggleItem: React.ForwardRefExoticComponent<ToggleGroupItemProps & React.RefAttributes<HTMLButtonElement>>;
13
40
  export default ToggleItem;
@@ -15,11 +15,13 @@ import { BodyShort } from "../../typography/BodyShort.js";
15
15
  import { useToggleGroupContext } from "../ToggleGroup.context.js";
16
16
  import { useToggleItem } from "./useToggleItem.js";
17
17
  const ToggleItem = forwardRef((_a, forwardedRef) => {
18
- var { className, children, value, onClick, onFocus, onKeyDown } = _a, rest = __rest(_a, ["className", "children", "value", "onClick", "onFocus", "onKeyDown"]);
18
+ var { className, children, icon, label, value, onClick, onFocus, onKeyDown } = _a, rest = __rest(_a, ["className", "children", "icon", "label", "value", "onClick", "onFocus", "onKeyDown"]);
19
19
  const itemCtx = useToggleItem({ value, onClick, onFocus, disabled: false, onKeyDown }, forwardedRef);
20
20
  const ctx = useToggleGroupContext();
21
21
  return (React.createElement("button", Object.assign({}, rest, { ref: itemCtx.ref, className: cl("navds-toggle-group__button", className), type: "button", role: "radio", "aria-checked": itemCtx.isSelected, tabIndex: itemCtx.isFocused ? 0 : -1, onClick: itemCtx.onClick, onFocus: itemCtx.onFocus, onKeyDown: itemCtx.onKeyDown }),
22
- React.createElement(BodyShort, { as: "span", className: "navds-toggle-group__button-inner", size: ctx === null || ctx === void 0 ? void 0 : ctx.size }, children)));
22
+ React.createElement(BodyShort, { as: "span", className: "navds-toggle-group__button-inner", size: ctx === null || ctx === void 0 ? void 0 : ctx.size }, children !== null && children !== void 0 ? children : (React.createElement(React.Fragment, null,
23
+ icon,
24
+ label)))));
23
25
  });
24
26
  export default ToggleItem;
25
27
  //# sourceMappingURL=ToggleItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleItem.js","sourceRoot":"","sources":["../../../src/toggle-group/parts/ToggleItem.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAchD,MAAM,UAAU,GAAG,UAAU,CAC3B,CACE,EAAoE,EACpE,YAAY,EACZ,EAAE;QAFF,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,OAAW,EAAN,IAAI,cAAlE,qEAAoE,CAAF;IAGlE,MAAM,OAAO,GAAG,aAAa,CAC3B,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EACvD,YAAY,CACb,CAAC;IACF,MAAM,GAAG,GAAG,qBAAqB,EAAE,CAAC;IAEpC,OAAO,CACL,gDACM,IAAI,IACR,GAAG,EAAE,OAAO,CAAC,GAAG,EAChB,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,EACtD,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,OAAO,kBACE,OAAO,CAAC,UAAU,EAChC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACpC,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,SAAS,EAAE,OAAO,CAAC,SAAS;QAE5B,oBAAC,SAAS,IACR,EAAE,EAAC,MAAM,EACT,SAAS,EAAC,kCAAkC,EAC5C,IAAI,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,IAEd,QAAQ,CACC,CACL,CACV,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"ToggleItem.js","sourceRoot":"","sources":["../../../src/toggle-group/parts/ToggleItem.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA6ChD,MAAM,UAAU,GAAG,UAAU,CAC3B,CACE,EAUC,EACD,YAAY,EACZ,EAAE;QAZF,EACE,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,SAAS,OAEV,EADI,IAAI,cATT,sFAUC,CADQ;IAIT,MAAM,OAAO,GAAG,aAAa,CAC3B,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EACvD,YAAY,CACb,CAAC;IACF,MAAM,GAAG,GAAG,qBAAqB,EAAE,CAAC;IAEpC,OAAO,CACL,gDACM,IAAI,IACR,GAAG,EAAE,OAAO,CAAC,GAAG,EAChB,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,EACtD,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,OAAO,kBACE,OAAO,CAAC,UAAU,EAChC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACpC,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,SAAS,EAAE,OAAO,CAAC,SAAS;QAE5B,oBAAC,SAAS,IACR,EAAE,EAAC,MAAM,EACT,SAAS,EAAC,kCAAkC,EAC5C,IAAI,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,IAEd,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,CACX;YACG,IAAI;YACJ,KAAK,CACL,CACJ,CACS,CACL,CACV,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -38,7 +38,7 @@ export function createDescendantContext() {
38
38
  if (!ref.current)
39
39
  return;
40
40
  const dataIndex = Number(ref.current.dataset["index"]);
41
- if (index != dataIndex && !Number.isNaN(dataIndex)) {
41
+ if (index !== dataIndex && !Number.isNaN(dataIndex)) {
42
42
  setIndex(dataIndex);
43
43
  }
44
44
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useDescendant.js","sourceRoot":"","sources":["../../../../src/util/hooks/descendants/useDescendant.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAqB,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B;;GAEG;AACH,MAAM,UAAU,uBAAuB;IAIrC,MAAM,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,GAAG,aAAa,CAEvE;QACA,IAAI,EAAE,qBAAqB;QAC3B,YAAY,EACV,+DAA+D;KAClE,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,IAAI,CAC1B,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,oBAAC,0BAA0B,oBAAK,KAAK,CAAC,KAAK,GACxC,KAAK,CAAC,QAAQ,CACY,CAC9B,CACF,CAAC;IAEF;;;;;;OAMG;IACH,SAAS,cAAc,CAAC,OAA8B;QACpD,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;QAC5C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,CAAI,IAAI,CAAC,CAAC;QAE5B,qBAAqB,CAAC,GAAG,EAAE;YACzB,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,GAAG,CAAC,OAAO;oBAAE,OAAO;gBACzB,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC,CAAC;QACJ,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,qBAAqB,CAAC,GAAG,EAAE;YACzB,IAAI,CAAC,GAAG,CAAC,OAAO;gBAAE,OAAO;YACzB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACvD,IAAI,KAAK,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnD,QAAQ,CAAC,SAAS,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,OAAO;YACzB,CAAC,CAAC,IAAI,CAAuB,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAuB,WAAW,CAAC,QAAQ,CAAC,CAAC;QAErD,OAAO;YACL,WAAW;YACX,KAAK;YACL,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC;YACrD,QAAQ,EAAE,SAAS,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;SACxC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,SAAS,eAAe;QACtB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,kBAAkB,EAAQ,CAAC,CAAC,OAAO,CAAC;QAEnE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO;QACL,mBAAmB;QACnB,eAAe;QACf,+CAA+C;QAC/C,qBAAqB;QACrB,8EAA8E;QAC9E,eAAe;QACf,+BAA+B;QAC/B,cAAc;KACN,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"useDescendant.js","sourceRoot":"","sources":["../../../../src/util/hooks/descendants/useDescendant.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAqB,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B;;GAEG;AACH,MAAM,UAAU,uBAAuB;IAIrC,MAAM,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,GAAG,aAAa,CAEvE;QACA,IAAI,EAAE,qBAAqB;QAC3B,YAAY,EACV,+DAA+D;KAClE,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,IAAI,CAC1B,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,oBAAC,0BAA0B,oBAAK,KAAK,CAAC,KAAK,GACxC,KAAK,CAAC,QAAQ,CACY,CAC9B,CACF,CAAC;IAEF;;;;;;OAMG;IACH,SAAS,cAAc,CAAC,OAA8B;QACpD,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;QAC5C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,CAAI,IAAI,CAAC,CAAC;QAE5B,qBAAqB,CAAC,GAAG,EAAE;YACzB,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,GAAG,CAAC,OAAO;oBAAE,OAAO;gBACzB,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC,CAAC;QACJ,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,qBAAqB,CAAC,GAAG,EAAE;YACzB,IAAI,CAAC,GAAG,CAAC,OAAO;gBAAE,OAAO;YACzB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACvD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpD,QAAQ,CAAC,SAAS,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,OAAO;YACzB,CAAC,CAAC,IAAI,CAAuB,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAuB,WAAW,CAAC,QAAQ,CAAC,CAAC;QAErD,OAAO;YACL,WAAW;YACX,KAAK;YACL,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC;YACrD,QAAQ,EAAE,SAAS,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;SACxC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,SAAS,eAAe;QACtB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,kBAAkB,EAAQ,CAAC,CAAC,OAAO,CAAC;QAEnE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO;QACL,mBAAmB;QACnB,eAAe;QACf,+CAA+C;QAC/C,qBAAqB;QACrB,8EAA8E;QAC9E,eAAe;QACf,+BAA+B;QAC/B,cAAc;KACN,CAAC;AACb,CAAC"}
@@ -25,7 +25,7 @@ export function sortNodes(nodes) {
25
25
  return 0;
26
26
  });
27
27
  }
28
- export const isElement = (el) => typeof el == "object" &&
28
+ export const isElement = (el) => typeof el === "object" &&
29
29
  "nodeType" in el &&
30
30
  el.nodeType === Node.ELEMENT_NODE;
31
31
  export function getNextIndex(current, max, loop) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/util/hooks/descendants/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;QAE7C,IACE,OAAO,GAAG,IAAI,CAAC,2BAA2B;YAC1C,OAAO,GAAG,IAAI,CAAC,8BAA8B,EAC7C,CAAC;YACD,QAAQ;YACR,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QAED,IACE,OAAO,GAAG,IAAI,CAAC,2BAA2B;YAC1C,OAAO,GAAG,IAAI,CAAC,0BAA0B,EACzC,CAAC;YACD,QAAQ;YACR,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IACE,OAAO,GAAG,IAAI,CAAC,8BAA8B;YAC7C,OAAO,GAAG,IAAI,CAAC,yCAAyC,EACxD,CAAC;YACD,MAAM,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAO,EAAqB,EAAE,CACtD,OAAO,EAAE,IAAI,QAAQ;IACrB,UAAU,IAAI,EAAE;IAChB,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC;AAEpC,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,GAAW,EAAE,IAAa;IACtE,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;IACvB,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG;QAAE,IAAI,GAAG,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,GAAW,EAAE,IAAa;IACtE,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;IACvB,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC;QAAE,IAAI,GAAG,GAAG,CAAC;IACjC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAAI,KAAU,EAAE,EAAE,CAAC,KAAU,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/util/hooks/descendants/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;QAE7C,IACE,OAAO,GAAG,IAAI,CAAC,2BAA2B;YAC1C,OAAO,GAAG,IAAI,CAAC,8BAA8B,EAC7C,CAAC;YACD,QAAQ;YACR,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QAED,IACE,OAAO,GAAG,IAAI,CAAC,2BAA2B;YAC1C,OAAO,GAAG,IAAI,CAAC,0BAA0B,EACzC,CAAC;YACD,QAAQ;YACR,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IACE,OAAO,GAAG,IAAI,CAAC,8BAA8B;YAC7C,OAAO,GAAG,IAAI,CAAC,yCAAyC,EACxD,CAAC;YACD,MAAM,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAO,EAAqB,EAAE,CACtD,OAAO,EAAE,KAAK,QAAQ;IACtB,UAAU,IAAI,EAAE;IAChB,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC;AAEpC,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,GAAW,EAAE,IAAa;IACtE,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;IACvB,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG;QAAE,IAAI,GAAG,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,GAAW,EAAE,IAAa;IACtE,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;IACvB,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC;QAAE,IAAI,GAAG,GAAG,CAAC;IACjC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,CAAI,KAAU,EAAE,EAAE,CAAC,KAAU,CAAC"}
@@ -24,10 +24,11 @@ export function get(keypath, ...objs) {
24
24
  }
25
25
  function getKeypath(str) {
26
26
  const path = [];
27
- let result;
28
- while ((result = OBJECT_NOTATION_MATCHER.exec(str))) {
27
+ let result = OBJECT_NOTATION_MATCHER.exec(str);
28
+ while (result) {
29
29
  const [, first, second] = result;
30
30
  path.push(first || second);
31
+ result = OBJECT_NOTATION_MATCHER.exec(str);
31
32
  }
32
33
  return path;
33
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/util/i18n/get.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAEzC,MAAM,UAAU,GAAG,CACjB,OAA0B,EAC1B,GAAG,IAAuC;IAE1C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAEpE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QAED,IAAI,GAAG,GAA+B,GAAG,CAAC;QAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,SAAS;YACX,CAAC;YACD,GAAG,GAAG,GAAG,CAAC;QACZ,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,MAA8B,CAAC;IACnC,OAAO,CAAC,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/util/i18n/get.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAEzC,MAAM,UAAU,GAAG,CACjB,OAA0B,EAC1B,GAAG,IAAuC;IAE1C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAEpE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QAED,IAAI,GAAG,GAA+B,GAAG,CAAC;QAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,SAAS;YACX,CAAC;YACD,GAAG,GAAG,GAAG,CAAC;QACZ,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE/C,OAAO,MAAM,EAAE,CAAC;QACd,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;QAC3B,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@navikt/ds-react",
3
- "version": "6.10.1",
3
+ "version": "6.11.0",
4
4
  "description": "React components from the Norwegian Labour and Welfare Administration.",
5
5
  "author": "Aksel, a team part of the Norwegian Labour and Welfare Administration.",
6
6
  "license": "MIT",
@@ -594,8 +594,8 @@
594
594
  "dependencies": {
595
595
  "@floating-ui/react": "0.25.4",
596
596
  "@floating-ui/react-dom": "^2.0.9",
597
- "@navikt/aksel-icons": "^6.10.1",
598
- "@navikt/ds-tokens": "^6.10.1",
597
+ "@navikt/aksel-icons": "^6.11.0",
598
+ "@navikt/ds-tokens": "^6.11.0",
599
599
  "clsx": "^2.1.0",
600
600
  "date-fns": "^3.0.0",
601
601
  "react-day-picker": "8.10.0"
@@ -1,5 +1,5 @@
1
1
  import React, { forwardRef } from "react";
2
- import { Slot } from "../../util/Slot";
2
+ import { Slot } from "../../slot/Slot";
3
3
  import { useCollapsibleContext } from "../Collapsible.context";
4
4
 
5
5
  export interface CollapsibleContentProps
@@ -1,5 +1,5 @@
1
1
  import React, { forwardRef } from "react";
2
- import { Slot } from "../../util/Slot";
2
+ import { Slot } from "../../slot/Slot";
3
3
  import { composeEventHandlers } from "../../util/composeEventHandlers";
4
4
  import { useCollapsibleContext } from "../Collapsible.context";
5
5
 
@@ -69,7 +69,7 @@ export interface DatePickerDefaultProps
69
69
  dropdownCaption?: boolean;
70
70
  /**
71
71
  * Apply the disabled modifier to the matching days.
72
- * https://react-day-picker.js.org/api/types/Matcher
72
+ * https://react-day-picker.js.org/api/type-aliases/Matcher
73
73
  */
74
74
  disabled?: Matcher[];
75
75
  /**
@@ -33,7 +33,7 @@ export interface MonthPickerProps extends React.HTMLAttributes<HTMLDivElement> {
33
33
  */
34
34
  dropdownCaption?: boolean;
35
35
  /**
36
- * Apply the disabled modifier to the matching months. Uses a subset of React Day Picker Matcher type. https://react-day-picker.js.org/api/types/Matcher
36
+ * Apply the disabled modifier to the matching months. Uses a subset of React Day Picker Matcher type. https://react-day-picker.js.org/api/type-aliases/Matcher
37
37
  */
38
38
  disabled?: Matcher[];
39
39
  /**
@@ -1,5 +1,5 @@
1
1
  import React, { forwardRef } from "react";
2
- import { Slot } from "../../../util/Slot";
2
+ import { Slot } from "../../../slot/Slot";
3
3
  import { FileUploadBaseProps } from "../FileUpload.types";
4
4
  import { useFileUpload } from "../useFileUpload";
5
5
 
@@ -44,6 +44,11 @@ export interface FileUploadItemProps
44
44
  * @default "idle"
45
45
  */
46
46
  status?: "downloading" | "uploading" | "idle";
47
+ /**
48
+ * File description. Replaces file size when status is "idle".
49
+ * This is useful for displaying upload date. Should not act as a replacement for error messages.
50
+ */
51
+ description?: string;
47
52
  /**
48
53
  * Props for the action button.
49
54
  */
@@ -71,6 +76,7 @@ export const Item: OverridableComponent<FileUploadItemProps, HTMLDivElement> =
71
76
  onFileClick,
72
77
  button,
73
78
  translations,
79
+ description,
74
80
  ...rest
75
81
  }: FileUploadItemProps,
76
82
  ref,
@@ -91,7 +97,7 @@ export const Item: OverridableComponent<FileUploadItemProps, HTMLDivElement> =
91
97
  if (status === "downloading") {
92
98
  return translate("item.downloading");
93
99
  }
94
- return formatFileSize(file);
100
+ return description ?? formatFileSize(file);
95
101
  }
96
102
 
97
103
  return (
@@ -0,0 +1,232 @@
1
+ import cl from "clsx";
2
+ import React from "react";
3
+ import { Slot } from "../../slot/Slot";
4
+ import { getResponsiveProps, getResponsiveValue } from "../utilities/css";
5
+ import { ResponsiveProp, SpacingScale } from "../utilities/types";
6
+
7
+ export interface BasePrimitiveProps {
8
+ children: React.ReactElement;
9
+ className?: string;
10
+ /**
11
+ * Padding around children.
12
+ * Accepts a [spacing token](https://aksel.nav.no/grunnleggende/styling/design-tokens#0cc9fb32f213)
13
+ * or an object of spacing tokens for different breakpoints.
14
+ * @example
15
+ * padding='4'
16
+ * padding={{xs: '2', sm: '3', md: '4', lg: '5', xl: '6'}}
17
+ */
18
+ padding?: ResponsiveProp<SpacingScale>;
19
+ /**
20
+ * Horizontal padding around children.
21
+ * Accepts a [spacing token](https://aksel.nav.no/grunnleggende/styling/design-tokens#0cc9fb32f213)
22
+ * or an object of spacing tokens for different breakpoints.
23
+ * @example
24
+ * paddingInline='4'
25
+ * paddingInline='4 5'
26
+ * paddingInline={{xs: '0 32', sm: '3', md: '4 5', lg: '5', xl: '6'}}
27
+ */
28
+ paddingInline?: ResponsiveProp<
29
+ SpacingScale | `${SpacingScale} ${SpacingScale}`
30
+ >;
31
+ /**
32
+ * Vertical padding around children.
33
+ * Accepts a [spacing token](https://aksel.nav.no/grunnleggende/styling/design-tokens#0cc9fb32f213)
34
+ * or an object of spacing tokens for different breakpoints.
35
+ * @example
36
+ * paddingBlock='4'
37
+ * paddingBlock='4 5'
38
+ * paddingBlock={{xs: '2', sm: '3', md: '4', lg: '5', xl: '6'}}
39
+ */
40
+ paddingBlock?: ResponsiveProp<
41
+ SpacingScale | `${SpacingScale} ${SpacingScale}`
42
+ >;
43
+ /**
44
+ * CSS `width`
45
+ */
46
+ width?: ResponsiveProp<string>;
47
+ /**
48
+ * CSS `min-width`
49
+ */
50
+ minWidth?: ResponsiveProp<string>;
51
+ /**
52
+ * CSS `max-width`
53
+ */
54
+ maxWidth?: ResponsiveProp<string>;
55
+ /**
56
+ * CSS `height`
57
+ */
58
+ height?: ResponsiveProp<string>;
59
+ /**
60
+ * CSS `min-height`
61
+ */
62
+ minHeight?: ResponsiveProp<string>;
63
+ /**
64
+ * CSS `max-height`
65
+ */
66
+ maxHeight?: ResponsiveProp<string>;
67
+ /**
68
+ * CSS `position`
69
+ */
70
+ position?: ResponsiveProp<
71
+ "static" | "relative" | "absolute" | "fixed" | "sticky"
72
+ >;
73
+ /**
74
+ * CSS `inset`.
75
+ * Accepts a [spacing token](https://aksel.nav.no/grunnleggende/styling/design-tokens#0cc9fb32f213)
76
+ * or an object of spacing tokens for different breakpoints.
77
+ * @example
78
+ * inset='4'
79
+ * inset='4 5'
80
+ * inset={{xs: '0 32', sm: '3', md: '4 5', lg: '5', xl: '6'}}
81
+ */
82
+ inset?: ResponsiveProp<SpacingScale | `${SpacingScale} ${SpacingScale}`>;
83
+ /**
84
+ * CSS `top`
85
+ * Accepts a [spacing token](https://aksel.nav.no/grunnleggende/styling/design-tokens#0cc9fb32f213)
86
+ * or an object of spacing tokens for different breakpoints.
87
+ * @example
88
+ * top='4'
89
+ * top={{xs: '2', sm: '3', md: '4', lg: '5', xl: '6'}}
90
+ */
91
+ top?: ResponsiveProp<SpacingScale>;
92
+ /**
93
+ * CSS `right`
94
+ * Accepts a [spacing token](https://aksel.nav.no/grunnleggende/styling/design-tokens#0cc9fb32f213)
95
+ * or an object of spacing tokens for different breakpoints.
96
+ * @example
97
+ * right='4'
98
+ * right={{xs: '2', sm: '3', md: '4', lg: '5', xl: '6'}}
99
+ */
100
+ right?: ResponsiveProp<SpacingScale>;
101
+ /**
102
+ * CSS `bottom`
103
+ * Accepts a [spacing token](https://aksel.nav.no/grunnleggende/styling/design-tokens#0cc9fb32f213)
104
+ * or an object of spacing tokens for different breakpoints.
105
+ * @example
106
+ * bottom='4'
107
+ * bottom={{xs: '2', sm: '3', md: '4', lg: '5', xl: '6'}}
108
+ */
109
+ bottom?: ResponsiveProp<SpacingScale>;
110
+ /**
111
+ * CSS `left`
112
+ * Accepts a [spacing token](https://aksel.nav.no/grunnleggende/styling/design-tokens#0cc9fb32f213)
113
+ * or an object of spacing tokens for different breakpoints.
114
+ * @example
115
+ * left='4'
116
+ * left={{xs: '2', sm: '3', md: '4', lg: '5', xl: '6'}}
117
+ */
118
+ left?: ResponsiveProp<SpacingScale>;
119
+ /**
120
+ * CSS `overflow`
121
+ */
122
+ overflow?: ResponsiveProp<"visible" | "hidden" | "clip" | "scroll" | "auto">;
123
+ /**
124
+ * CSS `overflow-x`
125
+ */
126
+ overflowX?: ResponsiveProp<"visible" | "hidden" | "clip" | "scroll" | "auto">;
127
+ /**
128
+ * CSS `overflow-y`
129
+ */
130
+ overflowY?: ResponsiveProp<"visible" | "hidden" | "clip" | "scroll" | "auto">;
131
+ /**
132
+ * CSS `flex-basis`
133
+ */
134
+ flexBasis?: ResponsiveProp<string>;
135
+ /**
136
+ * CSS `flex-shrink`
137
+ */
138
+ flexShrink?: ResponsiveProp<string>;
139
+ /**
140
+ * CSS `flex-grow`
141
+ */
142
+ flexGrow?: ResponsiveProp<string>;
143
+ }
144
+
145
+ export const BasePrimitive = ({
146
+ children,
147
+ className,
148
+ padding,
149
+ paddingInline,
150
+ paddingBlock,
151
+ width,
152
+ minWidth,
153
+ maxWidth,
154
+ height,
155
+ minHeight,
156
+ maxHeight,
157
+ position,
158
+ inset,
159
+ top,
160
+ right,
161
+ left,
162
+ bottom,
163
+ overflow,
164
+ overflowX,
165
+ overflowY,
166
+ flexBasis,
167
+ flexGrow,
168
+ flexShrink,
169
+ }: BasePrimitiveProps) => {
170
+ const style: React.CSSProperties = {
171
+ /* Padding */
172
+ ...getResponsiveProps("r", "p", "spacing", padding),
173
+ ...getResponsiveProps("r", "pi", "spacing", paddingInline),
174
+ ...getResponsiveProps("r", "pb", "spacing", paddingBlock),
175
+ /* Width & height */
176
+ ...getResponsiveValue("r", "w", width),
177
+ ...getResponsiveValue("r", "minw", minWidth),
178
+ ...getResponsiveValue("r", "maxw", maxWidth),
179
+ ...getResponsiveValue("r", "h", height),
180
+ ...getResponsiveValue("r", "minh", minHeight),
181
+ ...getResponsiveValue("r", "maxh", maxHeight),
182
+ /* Positon & inset */
183
+ ...getResponsiveValue("r", "position", position),
184
+ ...getResponsiveProps("r", "inset", "spacing", inset),
185
+ ...getResponsiveProps("r", "top", "spacing", top),
186
+ ...getResponsiveProps("r", "right", "spacing", right),
187
+ ...getResponsiveProps("r", "bottom", "spacing", bottom),
188
+ ...getResponsiveProps("r", "left", "spacing", left),
189
+ /* Overflow */
190
+ ...getResponsiveValue("r", "overflow", overflow),
191
+ ...getResponsiveValue("r", "overflowx", overflowX),
192
+ ...getResponsiveValue("r", "overflowy", overflowY),
193
+ /* Flex */
194
+ ...getResponsiveValue("r", "flex-basis", flexBasis),
195
+ ...getResponsiveValue("r", "flex-grow", flexGrow),
196
+ ...getResponsiveValue("r", "flex-shrink", flexShrink),
197
+ };
198
+
199
+ return (
200
+ <Slot
201
+ className={cl({
202
+ className,
203
+ "navds-r-p": padding,
204
+ "navds-r-pi": paddingInline,
205
+ "navds-r-pb": paddingBlock,
206
+ "navds-r-w": width,
207
+ "navds-r-minw": minWidth,
208
+ "navds-r-maxw": maxWidth,
209
+ "navds-r-h": height,
210
+ "navds-r-minh": minHeight,
211
+ "navds-r-maxh": maxHeight,
212
+ "navds-r-position": position,
213
+ "navds-r-inset": inset,
214
+ "navds-r-top": top,
215
+ "navds-r-right": right,
216
+ "navds-r-bottom": bottom,
217
+ "navds-r-left": left,
218
+ "navds-r-overflow": overflow,
219
+ "navds-r-overflowx": overflowX,
220
+ "navds-r-overflowy": overflowY,
221
+ "navds-r-flex-basis": flexBasis,
222
+ "navds-r-flex-grow": flexGrow,
223
+ "navds-r-flex-shrink": flexShrink,
224
+ })}
225
+ style={style}
226
+ >
227
+ {children}
228
+ </Slot>
229
+ );
230
+ };
231
+
232
+ export default BasePrimitive;
@@ -1,6 +1,6 @@
1
1
  import cl from "clsx";
2
2
  import React, { forwardRef } from "react";
3
- import { Slot } from "../../util/Slot";
3
+ import { Slot } from "../../slot/Slot";
4
4
  import { getResponsiveProps } from "../utilities/css";
5
5
  import { ResponsiveProp, SpacingScale } from "../utilities/types";
6
6