@navikt/ds-react 6.16.3 → 7.0.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 (47) hide show
  1. package/cjs/form/combobox/Input/Input.d.ts +1 -1
  2. package/cjs/form/combobox/Input/Input.js +4 -3
  3. package/cjs/form/combobox/Input/Input.js.map +1 -1
  4. package/cjs/form/combobox/types.d.ts +1 -1
  5. package/cjs/form/error-summary/ErrorSummary.d.ts +4 -3
  6. package/cjs/form/error-summary/ErrorSummary.js +12 -8
  7. package/cjs/form/error-summary/ErrorSummary.js.map +1 -1
  8. package/cjs/form/error-summary/ErrorSummaryItem.d.ts +1 -1
  9. package/cjs/form/error-summary/ErrorSummaryItem.js +2 -1
  10. package/cjs/form/error-summary/ErrorSummaryItem.js.map +1 -1
  11. package/cjs/provider/i18n/LanguageProvider.d.ts +26 -0
  12. package/cjs/provider/i18n/LanguageProvider.js +64 -0
  13. package/cjs/provider/i18n/LanguageProvider.js.map +1 -0
  14. package/cjs/tooltip/Tooltip.d.ts +8 -2
  15. package/cjs/tooltip/Tooltip.js +11 -8
  16. package/cjs/tooltip/Tooltip.js.map +1 -1
  17. package/cjs/util/i18n/i18n.context.d.ts +1 -2
  18. package/cjs/util/i18n/i18n.context.js +3 -7
  19. package/cjs/util/i18n/i18n.context.js.map +1 -1
  20. package/esm/form/combobox/Input/Input.d.ts +1 -1
  21. package/esm/form/combobox/Input/Input.js +4 -3
  22. package/esm/form/combobox/Input/Input.js.map +1 -1
  23. package/esm/form/combobox/types.d.ts +1 -1
  24. package/esm/form/error-summary/ErrorSummary.d.ts +4 -3
  25. package/esm/form/error-summary/ErrorSummary.js +14 -10
  26. package/esm/form/error-summary/ErrorSummary.js.map +1 -1
  27. package/esm/form/error-summary/ErrorSummaryItem.d.ts +1 -1
  28. package/esm/form/error-summary/ErrorSummaryItem.js +2 -1
  29. package/esm/form/error-summary/ErrorSummaryItem.js.map +1 -1
  30. package/esm/provider/i18n/LanguageProvider.d.ts +26 -0
  31. package/esm/provider/i18n/LanguageProvider.js +33 -0
  32. package/esm/provider/i18n/LanguageProvider.js.map +1 -0
  33. package/esm/tooltip/Tooltip.d.ts +8 -2
  34. package/esm/tooltip/Tooltip.js +12 -9
  35. package/esm/tooltip/Tooltip.js.map +1 -1
  36. package/esm/util/i18n/i18n.context.d.ts +1 -2
  37. package/esm/util/i18n/i18n.context.js +4 -4
  38. package/esm/util/i18n/i18n.context.js.map +1 -1
  39. package/package.json +3 -3
  40. package/src/form/combobox/Input/Input.tsx +23 -11
  41. package/src/form/combobox/types.ts +11 -1
  42. package/src/form/error-summary/ErrorSummary.tsx +23 -13
  43. package/src/form/error-summary/ErrorSummaryItem.tsx +10 -8
  44. package/src/provider/i18n/LanguageProvider.tsx +51 -0
  45. package/src/tooltip/Tooltip.tsx +26 -15
  46. package/src/util/i18n/i18n.context.test.tsx +9 -6
  47. package/src/util/i18n/i18n.context.ts +5 -11
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorSummary.js","sourceRoot":"","sources":["../../../src/form/error-summary/ErrorSummary.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAkB,UAAU,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,gBAA0C,MAAM,oBAAoB,CAAC;AA0C5E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CACpC,CACE,EAOC,EACD,GAAG,EACH,EAAE;QATF,EACE,QAAQ,EACR,SAAS,EACT,IAAI,GAAG,QAAQ,EACf,UAAU,GAAG,IAAI,EACjB,OAAO,OAER,EADI,IAAI,cANT,0DAOC,CADQ;IAIT,MAAM,SAAS,GAAG,KAAK,EAAE,CAAC;IAE1B,OAAO,CACL,+CACE,GAAG,EAAE,GAAG,IACJ,IAAI,IACR,SAAS,EAAE,EAAE,CACX,SAAS,EACT,qBAAqB,EACrB,wBAAwB,IAAI,EAAE,CAC/B,EACD,QAAQ,EAAE,CAAC,CAAC,eACF,QAAQ,mBACJ,KAAK,qBACF,SAAS;QAE1B,oBAAC,OAAO,IACN,SAAS,EAAC,8BAA8B,EACxC,EAAE,EAAE,UAAU,EACd,IAAI,EAAC,OAAO,EACZ,EAAE,EAAE,SAAS,IAEZ,OAAO,CACA;QACV,oBAAC,SAAS,IAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC,2BAA2B,IACjE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YACtC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,4BAAI,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAG,KAAK,CAAM,CAAC;QACjD,CAAC,CAAC,CACQ,CACJ,CACX,CAAC;AACJ,CAAC,CACuB,CAAC;AAE3B,YAAY,CAAC,IAAI,GAAG,gBAAgB,CAAC;AAErC,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"ErrorSummary.js","sourceRoot":"","sources":["../../../src/form/error-summary/ErrorSummary.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAkB,UAAU,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AA4ClD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CACpC,CACE,EAOC,EACD,GAAG,EACH,EAAE;QATF,EACE,QAAQ,EACR,SAAS,EACT,IAAI,GAAG,QAAQ,EACf,UAAU,GAAG,IAAI,EACjB,OAAO,GAAG,iDAAiD,OAE5D,EADI,IAAI,cANT,0DAOC,CADQ;IAIT,MAAM,SAAS,GAAG,KAAK,EAAE,CAAC;IAE1B,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAEpD,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAEhD,OAAO,CACL,+CACE,GAAG,EAAE,SAAS,IACV,IAAI,IACR,SAAS,EAAE,EAAE,CACX,SAAS,EACT,qBAAqB,EACrB,wBAAwB,IAAI,EAAE,CAC/B,EACD,QAAQ,EAAE,CAAC,CAAC,eACF,QAAQ,mBACJ,KAAK,qBACF,SAAS,EAC1B,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;;YACpD,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,0CAAE,KAAK,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC;QAEF,oBAAC,OAAO,IACN,SAAS,EAAC,8BAA8B,EACxC,EAAE,EAAE,UAAU,EACd,IAAI,EAAC,OAAO,EACZ,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,CAAC,CAAC,IAEX,OAAO,CACA;QACV,oBAAC,SAAS,IAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC,2BAA2B,IACjE,QAAQ,CACC,CACJ,CACX,CAAC;AACJ,CAAC,CACuB,CAAC;AAE3B,YAAY,CAAC,IAAI,GAAG,gBAAgB,CAAC;AAErC,eAAe,YAAY,CAAC"}
@@ -10,6 +10,6 @@ export interface ErrorSummaryItemProps extends React.AnchorHTMLAttributes<HTMLAn
10
10
  */
11
11
  href?: string;
12
12
  }
13
- export type ErrorSummaryItemType = OverridableComponent<ErrorSummaryItemProps, HTMLAnchorElement>;
13
+ type ErrorSummaryItemType = OverridableComponent<ErrorSummaryItemProps, HTMLAnchorElement>;
14
14
  export declare const ErrorSummaryItem: ErrorSummaryItemType;
15
15
  export default ErrorSummaryItem;
@@ -13,7 +13,8 @@ import cl from "clsx";
13
13
  import React, { forwardRef } from "react";
14
14
  export const ErrorSummaryItem = forwardRef((_a, ref) => {
15
15
  var { children, as: Component = "a", className } = _a, rest = __rest(_a, ["children", "as", "className"]);
16
- return (React.createElement(Component, Object.assign({}, rest, { ref: ref, className: cl(className, "navds-error-summary__item", "navds-link") }), children));
16
+ return (React.createElement("li", null,
17
+ React.createElement(Component, Object.assign({}, rest, { ref: ref, className: cl(className, "navds-error-summary__item", "navds-link") }), children)));
17
18
  });
18
19
  export default ErrorSummaryItem;
19
20
  //# sourceMappingURL=ErrorSummaryItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorSummaryItem.js","sourceRoot":"","sources":["../../../src/form/error-summary/ErrorSummaryItem.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAoB1C,MAAM,CAAC,MAAM,gBAAgB,GAAyB,UAAU,CAC9D,CAAC,EAAqD,EAAE,GAAG,EAAE,EAAE;QAA9D,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,GAAG,GAAG,EAAE,SAAS,OAAW,EAAN,IAAI,cAAnD,+BAAqD,CAAF;IAClD,OAAO,CACL,oBAAC,SAAS,oBACJ,IAAI,IACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,2BAA2B,EAAE,YAAY,CAAC,KAElE,QAAQ,CACC,CACb,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"ErrorSummaryItem.js","sourceRoot":"","sources":["../../../src/form/error-summary/ErrorSummaryItem.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAoB1C,MAAM,CAAC,MAAM,gBAAgB,GAAyB,UAAU,CAC9D,CAAC,EAAqD,EAAE,GAAG,EAAE,EAAE;QAA9D,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,GAAG,GAAG,EAAE,SAAS,OAAW,EAAN,IAAI,cAAnD,+BAAqD,CAAF;IAClD,OAAO,CACL;QACE,oBAAC,SAAS,oBACJ,IAAI,IACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,2BAA2B,EAAE,YAAY,CAAC,KAElE,QAAQ,CACC,CACT,CACN,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ import { TranslationDictionary } from "../../util/i18n/i18n.types.js";
3
+ export interface LanguageProviderContextType {
4
+ /**
5
+ * Merged with the default language translations object (officially provided translations).
6
+ */
7
+ translations: TranslationDictionary | TranslationDictionary[];
8
+ }
9
+ export declare const LanguageProviderContext: React.Context<LanguageProviderContextType>;
10
+ export interface LanguageProviderProps {
11
+ children?: React.ReactNode;
12
+ translations?: TranslationDictionary | TranslationDictionary[];
13
+ }
14
+ export declare const useProvider: () => LanguageProviderContextType;
15
+ /**
16
+ * @private Feature is under development and should not be used in any applications.
17
+ *
18
+ * @example
19
+ * ```jsx
20
+ * <UNSAFE_AkselLanguageProvider translations={{...}}>
21
+ * {app}
22
+ * </UNSAFE_AkselLanguageProvider>
23
+ * ```
24
+ */
25
+ export declare const UNSAFE_AkselLanguageProvider: ({ children, translations, ...rest }: LanguageProviderProps) => React.JSX.Element;
26
+ export default UNSAFE_AkselLanguageProvider;
@@ -0,0 +1,33 @@
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 React, { createContext, useContext } from "react";
13
+ import nb from "../../util/i18n/locales/nb.js";
14
+ export const LanguageProviderContext = createContext({
15
+ translations: nb,
16
+ });
17
+ export const useProvider = () => useContext(LanguageProviderContext);
18
+ /**
19
+ * @private Feature is under development and should not be used in any applications.
20
+ *
21
+ * @example
22
+ * ```jsx
23
+ * <UNSAFE_AkselLanguageProvider translations={{...}}>
24
+ * {app}
25
+ * </UNSAFE_AkselLanguageProvider>
26
+ * ```
27
+ */
28
+ export const UNSAFE_AkselLanguageProvider = (_a) => {
29
+ var { children, translations } = _a, rest = __rest(_a, ["children", "translations"]);
30
+ return (React.createElement(LanguageProviderContext.Provider, { value: Object.assign({ translations: translations !== null && translations !== void 0 ? translations : nb }, rest) }, children));
31
+ };
32
+ export default UNSAFE_AkselLanguageProvider;
33
+ //# sourceMappingURL=LanguageProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageProvider.js","sourceRoot":"","sources":["../../../src/provider/i18n/LanguageProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAS5C,MAAM,CAAC,MAAM,uBAAuB,GAClC,aAAa,CAA8B;IACzC,YAAY,EAAE,EAAE;CACjB,CAAC,CAAC;AAOL,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;AAErE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAIrB,EAAE,EAAE;QAJiB,EAC3C,QAAQ,EACR,YAAY,OAEU,EADnB,IAAI,cAHoC,4BAI5C,CADQ;IAEP,OAAO,CACL,oBAAC,uBAAuB,CAAC,QAAQ,IAC/B,KAAK,kBACH,YAAY,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,EAAE,IAC7B,IAAI,KAGR,QAAQ,CACwB,CACpC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
@@ -59,6 +59,12 @@ export interface TooltipProps extends HTMLAttributes<HTMLDivElement> {
59
59
  * List of Keyboard-keys for shortcuts.
60
60
  */
61
61
  keys?: string[];
62
+ /**
63
+ * When false, Tooltip labels the element, and child-elements content will be ignored by screen-readers.
64
+ * When true, content is added as additional information to the child element.
65
+ * @default false
66
+ */
67
+ describesChild?: boolean;
62
68
  }
63
69
  /**
64
70
  * A component that displays a tooltip when the user hovers over its child element.
@@ -67,9 +73,9 @@ export interface TooltipProps extends HTMLAttributes<HTMLDivElement> {
67
73
  * @see 🏷️ {@link TooltipProps}
68
74
  *
69
75
  * @example
70
- * ```jsx
76
+ * ```jsx Tooltip as only form of labeling
71
77
  * <Tooltip content="Skriv ut dokument">
72
- * <Button icon={<PrinterLargeIcon title="demo knapp" />} />
78
+ * <Button icon={<PrinterLargeIcon aria-hidden />} />
73
79
  * </Tooltip>
74
80
  * ```
75
81
  */
@@ -11,9 +11,10 @@ var __rest = (this && this.__rest) || function (s, e) {
11
11
  };
12
12
  import { autoUpdate, arrow as flArrow, flip, offset, safePolygon, shift, useDismiss, useFloating, useFocus, useHover, useInteractions, } from "@floating-ui/react";
13
13
  import cl from "clsx";
14
- import React, { cloneElement, forwardRef, useRef } from "react";
14
+ import React, { forwardRef, useRef } from "react";
15
15
  import { useModalContext } from "../modal/Modal.context.js";
16
16
  import { Portal } from "../portal/index.js";
17
+ import { Slot } from "../slot/Slot.js";
17
18
  import { Detail } from "../typography/index.js";
18
19
  import { useId } from "../util/hooks/index.js";
19
20
  import { useControllableState } from "../util/hooks/useControllableState.js";
@@ -25,14 +26,14 @@ import { useMergeRefs } from "../util/hooks/useMergeRefs.js";
25
26
  * @see 🏷️ {@link TooltipProps}
26
27
  *
27
28
  * @example
28
- * ```jsx
29
+ * ```jsx Tooltip as only form of labeling
29
30
  * <Tooltip content="Skriv ut dokument">
30
- * <Button icon={<PrinterLargeIcon title="demo knapp" />} />
31
+ * <Button icon={<PrinterLargeIcon aria-hidden />} />
31
32
  * </Tooltip>
32
33
  * ```
33
34
  */
34
35
  export const Tooltip = forwardRef((_a, ref) => {
35
- var { children, className, arrow: _arrow = true, placement: _placement = "top", open, defaultOpen = false, onOpenChange, offset: _offset, content, delay = 150, id, keys, maxChar = 80 } = _a, rest = __rest(_a, ["children", "className", "arrow", "placement", "open", "defaultOpen", "onOpenChange", "offset", "content", "delay", "id", "keys", "maxChar"]);
36
+ var { children, className, arrow: _arrow = true, placement: _placement = "top", open, defaultOpen = false, onOpenChange, offset: _offset, content, delay = 150, id, keys, maxChar = 80, describesChild = false } = _a, rest = __rest(_a, ["children", "className", "arrow", "placement", "open", "defaultOpen", "onOpenChange", "offset", "content", "delay", "id", "keys", "maxChar", "describesChild"]);
36
37
  const [_open, _setOpen] = useControllableState({
37
38
  defaultValue: defaultOpen,
38
39
  value: open,
@@ -66,7 +67,6 @@ export const Tooltip = forwardRef((_a, ref) => {
66
67
  ]);
67
68
  const ariaId = useId(id);
68
69
  const mergedRef = useMergeRefs(ref, refs.setFloating);
69
- const childMergedRef = useMergeRefs(children.ref, refs.setReference);
70
70
  if (!children ||
71
71
  (children === null || children === void 0 ? void 0 : children.type) === React.Fragment ||
72
72
  children === React.Fragment) {
@@ -77,10 +77,13 @@ export const Tooltip = forwardRef((_a, ref) => {
77
77
  _open &&
78
78
  console.warn(`Because of strict accessibility concers we encourage all Tooltips to have less than 80 characters. Can be overwritten with the maxChar-prop\n\nLength:${content.length}\nTooltip-content: ${content}`);
79
79
  }
80
+ const labelProps = describesChild
81
+ ? _open
82
+ ? { "aria-describedby": ariaId }
83
+ : { title: content }
84
+ : { "aria-label": content };
80
85
  return (React.createElement(React.Fragment, null,
81
- cloneElement(children, getReferenceProps(Object.assign(Object.assign({}, children.props), { ref: childMergedRef, "aria-describedby": _open
82
- ? cl(ariaId, children === null || children === void 0 ? void 0 : children.props["aria-describedby"])
83
- : children === null || children === void 0 ? void 0 : children.props["aria-describedby"] }))),
86
+ React.createElement(Slot, Object.assign({ ref: refs.setReference }, getReferenceProps(), labelProps, { "aria-keyshortcuts": keys ? keys.join("+") : undefined }), children),
84
87
  React.createElement(Portal, { rootElement: rootElement, asChild: true }, _open && (React.createElement("div", Object.assign({}, getFloatingProps(Object.assign(Object.assign({}, rest), { ref: mergedRef, style: {
85
88
  position: strategy,
86
89
  top: y !== null && y !== void 0 ? y : 0,
@@ -88,7 +91,7 @@ export const Tooltip = forwardRef((_a, ref) => {
88
91
  visibility: referenceHidden ? "hidden" : "visible",
89
92
  }, role: "tooltip", id: ariaId, className: cl("navds-tooltip", "navds-detail navds-detail--small", className) })), { "data-side": placement }),
90
93
  content,
91
- keys && (React.createElement("span", { className: "navds-tooltip__keys" }, keys.map((key) => (React.createElement(Detail, { as: "kbd", key: key, className: "navds-tooltip__key" }, key))))),
94
+ keys && (React.createElement("span", { className: "navds-tooltip__keys", "aria-hidden": true }, keys.map((key) => (React.createElement(Detail, { as: "kbd", key: key, className: "navds-tooltip__key" }, key))))),
92
95
  _arrow && (React.createElement("div", { ref: (node) => {
93
96
  arrowRef.current = node;
94
97
  }, className: "navds-tooltip__arrow", style: {
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../src/tooltip/Tooltip.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../src/tooltip/Tooltip.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- import { Component, ComponentTranslation, TranslationDictionary } from "./i18n.types.js";
1
+ import { Component, ComponentTranslation } from "./i18n.types.js";
2
2
  import nb from "./locales/nb.js";
3
- export declare const I18nContext: import("react").Context<TranslationDictionary | TranslationDictionary[]>;
4
3
  type NestedKeyOf<ObjectType extends object> = {
5
4
  [Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends object ? `${Key}.${NestedKeyOf<ObjectType[Key]>}` : `${Key}`;
6
5
  }[keyof ObjectType & (string | number)];
@@ -1,13 +1,13 @@
1
- import { createContext, useContext } from "react";
1
+ import { useContext } from "react";
2
+ import { LanguageProviderContext } from "../../provider/i18n/LanguageProvider.js";
2
3
  import { get } from "./get.js";
3
- import nb from "./locales/nb.js";
4
4
  /**
5
5
  * https://regex101.com/r/LYKWi3/1
6
6
  */
7
7
  const REPLACE_REGEX = /{[^}]*}/g;
8
- export const I18nContext = createContext(nb);
9
8
  export function useI18n(componentName, ...local) {
10
- const i18n = useContext(I18nContext);
9
+ const languageProviderContext = useContext(LanguageProviderContext);
10
+ const i18n = languageProviderContext.translations;
11
11
  /**
12
12
  * https://github.com/Shopify/polaris/blob/2115f9ba2f5bcbf2ad15745233501bff2db81ecf/polaris-react/src/utilities/i18n/I18n.ts#L24
13
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.context.js","sourceRoot":"","sources":["../../../src/util/i18n/i18n.context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAM5B,OAAO,EAAE,MAAM,cAAc,CAAC;AAE9B;;GAEG;AACH,MAAM,aAAa,GAAG,UAAU,CAAC;AAEjC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAEtC,EAAE,CAAC,CAAC;AASN,MAAM,UAAU,OAAO,CACrB,aAAgB,EAChB,GAAG,KAA8C;IAEjD,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAErC;;OAEG;IACH,MAAM,SAAS,GAAG,CAChB,OAAoC,EACpC,OAA2D,EAC3D,EAAE;QACF,MAAM,IAAI,GAAG,GAAG,CACd,OAAO,EACP,GAAG,KAAK,EACR,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACrB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAC3B,CAAC;QAEF,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAEzD,IAAI,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;oBACpD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;oBAE7D,MAAM,IAAI,KAAK,CACb,0BAA0B,OAAO,gDAAgD,WAAW,+CAA+C,eAAe,GAAG,CAC9J,CAAC;gBACJ,CAAC;gBAED,OAAO,OAAO,CAAC,YAAY,CAAC,WAAW,CAAW,CAAC,CAAC,+CAA+C;YACrG,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"i18n.context.js","sourceRoot":"","sources":["../../../src/util/i18n/i18n.context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAI5B;;GAEG;AACH,MAAM,aAAa,GAAG,UAAU,CAAC;AASjC,MAAM,UAAU,OAAO,CACrB,aAAgB,EAChB,GAAG,KAA8C;IAEjD,MAAM,uBAAuB,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,uBAAuB,CAAC,YAAY,CAAC;IAElD;;OAEG;IACH,MAAM,SAAS,GAAG,CAChB,OAAoC,EACpC,OAA2D,EAC3D,EAAE;QACF,MAAM,IAAI,GAAG,GAAG,CACd,OAAO,EACP,GAAG,KAAK,EACR,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACrB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAC3B,CAAC;QAEF,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAEzD,IAAI,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;oBACpD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;oBAE7D,MAAM,IAAI,KAAK,CACb,0BAA0B,OAAO,gDAAgD,WAAW,+CAA+C,eAAe,GAAG,CAC9J,CAAC;gBACJ,CAAC;gBAED,OAAO,OAAO,CAAC,YAAY,CAAC,WAAW,CAAW,CAAC,CAAC,+CAA+C;YACrG,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@navikt/ds-react",
3
- "version": "6.16.3",
3
+ "version": "7.0.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.16.3",
598
- "@navikt/ds-tokens": "^6.16.3",
597
+ "@navikt/aksel-icons": "^7.0.0",
598
+ "@navikt/ds-tokens": "^7.0.0",
599
599
  "clsx": "^2.1.0",
600
600
  "date-fns": "^3.0.0",
601
601
  "react-day-picker": "8.10.0"
@@ -6,6 +6,7 @@ import React, {
6
6
  useRef,
7
7
  } from "react";
8
8
  import { omit } from "../../../util";
9
+ import { composeEventHandlers } from "../../../util/composeEventHandlers";
9
10
  import { useMergeRefs } from "../../../util/hooks";
10
11
  import filteredOptionsUtil from "../FilteredOptions/filtered-options-util";
11
12
  import { useFilteredOptionsContext } from "../FilteredOptions/filteredOptionsContext";
@@ -13,7 +14,18 @@ import { useSelectedOptionsContext } from "../SelectedOptions/selectedOptionsCon
13
14
  import { useInputContext } from "./Input.context";
14
15
 
15
16
  interface InputProps
16
- extends Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "disabled"> {
17
+ extends Omit<
18
+ InputHTMLAttributes<HTMLInputElement>,
19
+ | "value"
20
+ | "disabled"
21
+ | "onClick"
22
+ | "onInput"
23
+ | "type"
24
+ | "role"
25
+ | "onKeyUp"
26
+ | "onKeyDown"
27
+ | "autoComplete"
28
+ > {
17
29
  ref: React.Ref<HTMLInputElement>;
18
30
  inputClassName?: string;
19
31
  shouldShowSelectedOptions?: boolean;
@@ -22,7 +34,7 @@ interface InputProps
22
34
 
23
35
  const Input = forwardRef<HTMLInputElement, InputProps>(
24
36
  (
25
- { inputClassName, shouldShowSelectedOptions, placeholder, ...rest },
37
+ { inputClassName, shouldShowSelectedOptions, placeholder, onBlur, ...rest },
26
38
  ref,
27
39
  ) => {
28
40
  const internalRef = useRef<HTMLInputElement>(null);
@@ -224,24 +236,18 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
224
236
  {...rest}
225
237
  {...omit(inputProps, ["aria-invalid"])}
226
238
  ref={mergedRefs}
239
+ type="text"
240
+ role="combobox"
227
241
  value={value}
228
- onBlur={() => virtualFocus.moveFocusToTop()}
242
+ onBlur={composeEventHandlers(onBlur, virtualFocus.moveFocusToTop)}
229
243
  onClick={() => {
230
244
  setHideCaret(!!maxSelected?.isLimitReached);
231
245
  value !== searchTerm && onChange(value);
232
246
  }}
233
247
  onInput={onChangeHandler}
234
- type="text"
235
- role="combobox"
236
248
  onKeyUp={handleKeyUp}
237
249
  onKeyDown={handleKeyDown}
238
- aria-controls={filteredOptionsUtil.getFilteredOptionsId(inputProps.id)}
239
- aria-expanded={!!isListOpen}
240
250
  autoComplete="off"
241
- aria-autocomplete={shouldAutocomplete ? "both" : "list"}
242
- aria-activedescendant={activeDecendantId}
243
- aria-describedby={ariaDescribedBy}
244
- aria-invalid={inputProps["aria-invalid"]}
245
251
  placeholder={selectedOptions.length ? undefined : placeholder}
246
252
  className={cl(
247
253
  inputClassName,
@@ -250,6 +256,12 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
250
256
  `navds-body-short--${size}`,
251
257
  { "navds-combobox__input--hide-caret": hideCaret },
252
258
  )}
259
+ aria-controls={filteredOptionsUtil.getFilteredOptionsId(inputProps.id)}
260
+ aria-expanded={!!isListOpen}
261
+ aria-autocomplete={shouldAutocomplete ? "both" : "list"}
262
+ aria-activedescendant={activeDecendantId}
263
+ aria-describedby={ariaDescribedBy}
264
+ aria-invalid={inputProps["aria-invalid"]}
253
265
  />
254
266
  );
255
267
  },
@@ -31,7 +31,17 @@ export interface ComboboxProps
31
31
  extends FormFieldProps,
32
32
  Omit<
33
33
  InputHTMLAttributes<HTMLInputElement>,
34
- "size" | "onChange" | "value" | "defaultValue"
34
+ | "size"
35
+ | "onChange"
36
+ | "value"
37
+ | "defaultValue"
38
+ | "onClick"
39
+ | "onInput"
40
+ | "type"
41
+ | "role"
42
+ | "onKeyUp"
43
+ | "onKeyDown"
44
+ | "autoComplete"
35
45
  > {
36
46
  /**
37
47
  * Combobox label.
@@ -1,10 +1,12 @@
1
1
  import cl from "clsx";
2
- import React, { HTMLAttributes, forwardRef, isValidElement } from "react";
2
+ import React, { HTMLAttributes, forwardRef, useRef } from "react";
3
3
  import { BodyShort, Heading } from "../../typography";
4
- import { useId } from "../../util/hooks";
5
- import ErrorSummaryItem, { ErrorSummaryItemType } from "./ErrorSummaryItem";
4
+ import { composeEventHandlers } from "../../util/composeEventHandlers";
5
+ import { useId, useMergeRefs } from "../../util/hooks";
6
+ import ErrorSummaryItem from "./ErrorSummaryItem";
6
7
 
7
- export interface ErrorSummaryProps extends HTMLAttributes<HTMLDivElement> {
8
+ export interface ErrorSummaryProps
9
+ extends Omit<HTMLAttributes<HTMLDivElement>, "tabIndex"> {
8
10
  /**
9
11
  * Collection of `ErrorSummary.Item`.
10
12
  */
@@ -16,6 +18,7 @@ export interface ErrorSummaryProps extends HTMLAttributes<HTMLDivElement> {
16
18
  size?: "medium" | "small";
17
19
  /**
18
20
  * Heading above links.
21
+ * @default "Du må rette disse feilene før du kan fortsette:"
19
22
  */
20
23
  heading?: React.ReactNode;
21
24
  /**
@@ -41,7 +44,7 @@ interface ErrorSummaryComponent
41
44
  * </ErrorSummary.Item>
42
45
  * ```
43
46
  */
44
- Item: ErrorSummaryItemType;
47
+ Item: typeof ErrorSummaryItem;
45
48
  }
46
49
 
47
50
  /**
@@ -69,16 +72,21 @@ export const ErrorSummary = forwardRef<HTMLDivElement, ErrorSummaryProps>(
69
72
  className,
70
73
  size = "medium",
71
74
  headingTag = "h2",
72
- heading,
75
+ heading = "Du må rette disse feilene før du kan fortsette:",
73
76
  ...rest
74
77
  },
75
78
  ref,
76
79
  ) => {
77
80
  const headingId = useId();
78
81
 
82
+ const sectionRef = useRef<HTMLDivElement>(null);
83
+ const headingRef = useRef<HTMLHeadingElement>(null);
84
+
85
+ const mergedRef = useMergeRefs(ref, sectionRef);
86
+
79
87
  return (
80
88
  <section
81
- ref={ref}
89
+ ref={mergedRef}
82
90
  {...rest}
83
91
  className={cl(
84
92
  className,
@@ -89,22 +97,24 @@ export const ErrorSummary = forwardRef<HTMLDivElement, ErrorSummaryProps>(
89
97
  aria-live="polite"
90
98
  aria-relevant="all"
91
99
  aria-labelledby={headingId}
100
+ onFocus={composeEventHandlers(rest.onFocus, (event) => {
101
+ if (event.target === sectionRef.current) {
102
+ headingRef?.current?.focus();
103
+ }
104
+ })}
92
105
  >
93
106
  <Heading
94
107
  className="navds-error-summary__heading"
95
108
  as={headingTag}
96
109
  size="small"
97
110
  id={headingId}
111
+ ref={headingRef}
112
+ tabIndex={-1}
98
113
  >
99
114
  {heading}
100
115
  </Heading>
101
116
  <BodyShort as="ul" size={size} className="navds-error-summary__list">
102
- {React.Children.map(children, (child) => {
103
- if (!isValidElement(child)) {
104
- return null;
105
- }
106
- return <li key={child.toString()}>{child}</li>;
107
- })}
117
+ {children}
108
118
  </BodyShort>
109
119
  </section>
110
120
  );
@@ -14,7 +14,7 @@ export interface ErrorSummaryItemProps
14
14
  href?: string;
15
15
  }
16
16
 
17
- export type ErrorSummaryItemType = OverridableComponent<
17
+ type ErrorSummaryItemType = OverridableComponent<
18
18
  ErrorSummaryItemProps,
19
19
  HTMLAnchorElement
20
20
  >;
@@ -22,13 +22,15 @@ export type ErrorSummaryItemType = OverridableComponent<
22
22
  export const ErrorSummaryItem: ErrorSummaryItemType = forwardRef(
23
23
  ({ children, as: Component = "a", className, ...rest }, ref) => {
24
24
  return (
25
- <Component
26
- {...rest}
27
- ref={ref}
28
- className={cl(className, "navds-error-summary__item", "navds-link")}
29
- >
30
- {children}
31
- </Component>
25
+ <li>
26
+ <Component
27
+ {...rest}
28
+ ref={ref}
29
+ className={cl(className, "navds-error-summary__item", "navds-link")}
30
+ >
31
+ {children}
32
+ </Component>
33
+ </li>
32
34
  );
33
35
  },
34
36
  );
@@ -0,0 +1,51 @@
1
+ import React, { createContext, useContext } from "react";
2
+ import { TranslationDictionary } from "../../util/i18n/i18n.types";
3
+ import nb from "../../util/i18n/locales/nb";
4
+
5
+ export interface LanguageProviderContextType {
6
+ /**
7
+ * Merged with the default language translations object (officially provided translations).
8
+ */
9
+ translations: TranslationDictionary | TranslationDictionary[];
10
+ }
11
+
12
+ export const LanguageProviderContext =
13
+ createContext<LanguageProviderContextType>({
14
+ translations: nb,
15
+ });
16
+
17
+ export interface LanguageProviderProps {
18
+ children?: React.ReactNode;
19
+ translations?: TranslationDictionary | TranslationDictionary[];
20
+ }
21
+
22
+ export const useProvider = () => useContext(LanguageProviderContext);
23
+
24
+ /**
25
+ * @private Feature is under development and should not be used in any applications.
26
+ *
27
+ * @example
28
+ * ```jsx
29
+ * <UNSAFE_AkselLanguageProvider translations={{...}}>
30
+ * {app}
31
+ * </UNSAFE_AkselLanguageProvider>
32
+ * ```
33
+ */
34
+ export const UNSAFE_AkselLanguageProvider = ({
35
+ children,
36
+ translations,
37
+ ...rest
38
+ }: LanguageProviderProps) => {
39
+ return (
40
+ <LanguageProviderContext.Provider
41
+ value={{
42
+ translations: translations ?? nb,
43
+ ...rest,
44
+ }}
45
+ >
46
+ {children}
47
+ </LanguageProviderContext.Provider>
48
+ );
49
+ };
50
+
51
+ export default UNSAFE_AkselLanguageProvider;
@@ -12,9 +12,10 @@ import {
12
12
  useInteractions,
13
13
  } from "@floating-ui/react";
14
14
  import cl from "clsx";
15
- import React, { HTMLAttributes, cloneElement, forwardRef, useRef } from "react";
15
+ import React, { HTMLAttributes, forwardRef, useRef } from "react";
16
16
  import { useModalContext } from "../modal/Modal.context";
17
17
  import { Portal } from "../portal";
18
+ import { Slot } from "../slot/Slot";
18
19
  import { Detail } from "../typography";
19
20
  import { useId } from "../util/hooks";
20
21
  import { useControllableState } from "../util/hooks/useControllableState";
@@ -80,6 +81,12 @@ export interface TooltipProps extends HTMLAttributes<HTMLDivElement> {
80
81
  * List of Keyboard-keys for shortcuts.
81
82
  */
82
83
  keys?: string[];
84
+ /**
85
+ * When false, Tooltip labels the element, and child-elements content will be ignored by screen-readers.
86
+ * When true, content is added as additional information to the child element.
87
+ * @default false
88
+ */
89
+ describesChild?: boolean;
83
90
  }
84
91
 
85
92
  /**
@@ -89,9 +96,9 @@ export interface TooltipProps extends HTMLAttributes<HTMLDivElement> {
89
96
  * @see 🏷️ {@link TooltipProps}
90
97
  *
91
98
  * @example
92
- * ```jsx
99
+ * ```jsx Tooltip as only form of labeling
93
100
  * <Tooltip content="Skriv ut dokument">
94
- * <Button icon={<PrinterLargeIcon title="demo knapp" />} />
101
+ * <Button icon={<PrinterLargeIcon aria-hidden />} />
95
102
  * </Tooltip>
96
103
  * ```
97
104
  */
@@ -111,6 +118,7 @@ export const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(
111
118
  id,
112
119
  keys,
113
120
  maxChar = 80,
121
+ describesChild = false,
114
122
  ...rest
115
123
  },
116
124
  ref,
@@ -164,7 +172,6 @@ export const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(
164
172
  const ariaId = useId(id);
165
173
 
166
174
  const mergedRef = useMergeRefs(ref, refs.setFloating);
167
- const childMergedRef = useMergeRefs(children.ref, refs.setReference);
168
175
 
169
176
  if (
170
177
  !children ||
@@ -184,18 +191,22 @@ export const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(
184
191
  );
185
192
  }
186
193
 
194
+ const labelProps = describesChild
195
+ ? _open
196
+ ? { "aria-describedby": ariaId }
197
+ : { title: content }
198
+ : { "aria-label": content };
199
+
187
200
  return (
188
201
  <>
189
- {cloneElement(
190
- children,
191
- getReferenceProps({
192
- ...children.props,
193
- ref: childMergedRef,
194
- "aria-describedby": _open
195
- ? cl(ariaId, children?.props["aria-describedby"])
196
- : children?.props["aria-describedby"],
197
- }),
198
- )}
202
+ <Slot
203
+ ref={refs.setReference}
204
+ {...getReferenceProps()}
205
+ {...labelProps}
206
+ aria-keyshortcuts={keys ? keys.join("+") : undefined}
207
+ >
208
+ {children}
209
+ </Slot>
199
210
  <Portal rootElement={rootElement} asChild>
200
211
  {_open && (
201
212
  <div
@@ -220,7 +231,7 @@ export const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(
220
231
  >
221
232
  {content}
222
233
  {keys && (
223
- <span className="navds-tooltip__keys">
234
+ <span className="navds-tooltip__keys" aria-hidden>
224
235
  {keys.map((key) => (
225
236
  <Detail as="kbd" key={key} className="navds-tooltip__key">
226
237
  {key}