@navikt/ds-react 7.4.0 → 7.4.2

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 (119) hide show
  1. package/cjs/date/utils/parse-date.js +1 -0
  2. package/cjs/date/utils/parse-date.js.map +1 -1
  3. package/cjs/expansion-card/ExpansionCardHeader.js +4 -2
  4. package/cjs/expansion-card/ExpansionCardHeader.js.map +1 -1
  5. package/cjs/form/combobox/FilteredOptions/useVirtualFocus.js +1 -1
  6. package/cjs/form/combobox/FilteredOptions/useVirtualFocus.js.map +1 -1
  7. package/cjs/form/combobox/Input/Input.js +17 -4
  8. package/cjs/form/combobox/Input/Input.js.map +1 -1
  9. package/cjs/form/error-summary/ErrorSummary.js +4 -2
  10. package/cjs/form/error-summary/ErrorSummary.js.map +1 -1
  11. package/cjs/form/form-progress/FormProgress.js +1 -3
  12. package/cjs/form/form-progress/FormProgress.js.map +1 -1
  13. package/cjs/form/search/Search.d.ts +1 -2
  14. package/cjs/form/search/Search.js +20 -20
  15. package/cjs/form/search/Search.js.map +1 -1
  16. package/cjs/form/search/SearchButton.js +5 -1
  17. package/cjs/form/search/SearchButton.js.map +1 -1
  18. package/cjs/form/textarea/Textarea.js +1 -3
  19. package/cjs/form/textarea/Textarea.js.map +1 -1
  20. package/cjs/form/textarea/TextareaCounter.d.ts +2 -1
  21. package/cjs/form/textarea/TextareaCounter.js +14 -9
  22. package/cjs/form/textarea/TextareaCounter.js.map +1 -1
  23. package/cjs/loader/Loader.d.ts +2 -2
  24. package/cjs/loader/Loader.js +5 -3
  25. package/cjs/loader/Loader.js.map +1 -1
  26. package/cjs/modal/ModalHeader.js +3 -1
  27. package/cjs/modal/ModalHeader.js.map +1 -1
  28. package/cjs/pagination/Pagination.js +4 -2
  29. package/cjs/pagination/Pagination.js.map +1 -1
  30. package/cjs/progress-bar/ProgressBar.js +14 -7
  31. package/cjs/progress-bar/ProgressBar.js.map +1 -1
  32. package/cjs/table/ExpandableRow.d.ts +1 -1
  33. package/cjs/table/ExpandableRow.js +11 -7
  34. package/cjs/table/ExpandableRow.js.map +1 -1
  35. package/cjs/tabs/parts/tablist/ScrollButtons.js +1 -1
  36. package/cjs/tabs/parts/tablist/ScrollButtons.js.map +1 -1
  37. package/cjs/util/i18n/i18n.context.d.ts +1 -3
  38. package/cjs/util/i18n/i18n.context.js +5 -5
  39. package/cjs/util/i18n/i18n.context.js.map +1 -1
  40. package/cjs/util/i18n/locales/en.d.ts +30 -0
  41. package/cjs/util/i18n/locales/en.js +30 -0
  42. package/cjs/util/i18n/locales/en.js.map +1 -1
  43. package/cjs/util/i18n/locales/nb.d.ts +31 -0
  44. package/cjs/util/i18n/locales/nb.js +31 -0
  45. package/cjs/util/i18n/locales/nb.js.map +1 -1
  46. package/cjs/util/i18n/locales/nn.d.ts +30 -0
  47. package/cjs/util/i18n/locales/nn.js +30 -0
  48. package/cjs/util/i18n/locales/nn.js.map +1 -1
  49. package/esm/date/utils/parse-date.js +1 -0
  50. package/esm/date/utils/parse-date.js.map +1 -1
  51. package/esm/expansion-card/ExpansionCardHeader.js +4 -2
  52. package/esm/expansion-card/ExpansionCardHeader.js.map +1 -1
  53. package/esm/form/combobox/FilteredOptions/useVirtualFocus.js +1 -1
  54. package/esm/form/combobox/FilteredOptions/useVirtualFocus.js.map +1 -1
  55. package/esm/form/combobox/Input/Input.js +17 -4
  56. package/esm/form/combobox/Input/Input.js.map +1 -1
  57. package/esm/form/error-summary/ErrorSummary.js +4 -2
  58. package/esm/form/error-summary/ErrorSummary.js.map +1 -1
  59. package/esm/form/form-progress/FormProgress.js +1 -3
  60. package/esm/form/form-progress/FormProgress.js.map +1 -1
  61. package/esm/form/search/Search.d.ts +1 -2
  62. package/esm/form/search/Search.js +21 -21
  63. package/esm/form/search/Search.js.map +1 -1
  64. package/esm/form/search/SearchButton.js +5 -1
  65. package/esm/form/search/SearchButton.js.map +1 -1
  66. package/esm/form/textarea/Textarea.js +1 -3
  67. package/esm/form/textarea/Textarea.js.map +1 -1
  68. package/esm/form/textarea/TextareaCounter.d.ts +2 -1
  69. package/esm/form/textarea/TextareaCounter.js +14 -9
  70. package/esm/form/textarea/TextareaCounter.js.map +1 -1
  71. package/esm/loader/Loader.d.ts +2 -2
  72. package/esm/loader/Loader.js +5 -3
  73. package/esm/loader/Loader.js.map +1 -1
  74. package/esm/modal/ModalHeader.js +3 -1
  75. package/esm/modal/ModalHeader.js.map +1 -1
  76. package/esm/pagination/Pagination.js +4 -2
  77. package/esm/pagination/Pagination.js.map +1 -1
  78. package/esm/progress-bar/ProgressBar.js +15 -8
  79. package/esm/progress-bar/ProgressBar.js.map +1 -1
  80. package/esm/table/ExpandableRow.d.ts +1 -1
  81. package/esm/table/ExpandableRow.js +11 -7
  82. package/esm/table/ExpandableRow.js.map +1 -1
  83. package/esm/tabs/parts/tablist/ScrollButtons.js +1 -1
  84. package/esm/tabs/parts/tablist/ScrollButtons.js.map +1 -1
  85. package/esm/util/i18n/i18n.context.d.ts +1 -3
  86. package/esm/util/i18n/i18n.context.js +5 -5
  87. package/esm/util/i18n/i18n.context.js.map +1 -1
  88. package/esm/util/i18n/locales/en.d.ts +30 -0
  89. package/esm/util/i18n/locales/en.js +30 -0
  90. package/esm/util/i18n/locales/en.js.map +1 -1
  91. package/esm/util/i18n/locales/nb.d.ts +31 -0
  92. package/esm/util/i18n/locales/nb.js +31 -0
  93. package/esm/util/i18n/locales/nb.js.map +1 -1
  94. package/esm/util/i18n/locales/nn.d.ts +30 -0
  95. package/esm/util/i18n/locales/nn.js +30 -0
  96. package/esm/util/i18n/locales/nn.js.map +1 -1
  97. package/package.json +3 -3
  98. package/src/date/utils/parse-date.ts +1 -0
  99. package/src/expansion-card/ExpansionCardHeader.tsx +4 -2
  100. package/src/form/combobox/FilteredOptions/useVirtualFocus.ts +1 -1
  101. package/src/form/combobox/Input/Input.tsx +27 -9
  102. package/src/form/combobox/__tests__/combobox.test.tsx +39 -0
  103. package/src/form/error-summary/ErrorSummary.tsx +4 -2
  104. package/src/form/form-progress/FormProgress.tsx +1 -3
  105. package/src/form/search/Search.tsx +20 -36
  106. package/src/form/search/SearchButton.tsx +5 -1
  107. package/src/form/textarea/Textarea.tsx +7 -11
  108. package/src/form/textarea/TextareaCounter.tsx +31 -7
  109. package/src/loader/Loader.tsx +8 -4
  110. package/src/modal/ModalHeader.tsx +3 -1
  111. package/src/pagination/Pagination.tsx +6 -4
  112. package/src/progress-bar/ProgressBar.tsx +19 -14
  113. package/src/table/ExpandableRow.tsx +12 -13
  114. package/src/tabs/parts/tablist/ScrollButtons.tsx +1 -5
  115. package/src/util/i18n/i18n.context.test.tsx +4 -6
  116. package/src/util/i18n/i18n.context.ts +5 -5
  117. package/src/util/i18n/locales/en.ts +32 -0
  118. package/src/util/i18n/locales/nb.ts +33 -0
  119. package/src/util/i18n/locales/nn.ts +32 -0
@@ -10,7 +10,8 @@ var __rest = (this && this.__rest) || function (s, e) {
10
10
  return t;
11
11
  };
12
12
  import cl from "clsx";
13
- import React, { forwardRef, useRef } from "react";
13
+ import React, { forwardRef, useEffect, useRef } from "react";
14
+ import { useI18n } from "../util/i18n/i18n.context.js";
14
15
  /**
15
16
  * ProgressBar
16
17
  * A component for visualizing progression in a process.
@@ -32,10 +33,11 @@ import React, { forwardRef, useRef } from "react";
32
33
  */
33
34
  export const ProgressBar = forwardRef((_a, ref) => {
34
35
  var { size = "medium", value = 0, valueMax = 100, "aria-labelledby": ariaLabelledBy, "aria-label": ariaLabel, className, simulated } = _a, rest = __rest(_a, ["size", "value", "valueMax", "aria-labelledby", "aria-label", "className", "simulated"]);
35
- const translate = 100 - (Math.round(value) / valueMax) * 100;
36
+ const translateX = 100 - (Math.round(value) / valueMax) * 100;
36
37
  const onTimeoutRef = useRef();
37
38
  onTimeoutRef.current = simulated === null || simulated === void 0 ? void 0 : simulated.onTimeout;
38
- React.useEffect(() => {
39
+ const translate = useI18n("ProgressBar");
40
+ useEffect(() => {
39
41
  if ((simulated === null || simulated === void 0 ? void 0 : simulated.seconds) && onTimeoutRef.current) {
40
42
  const timeout = setTimeout(onTimeoutRef.current, simulated.seconds * 1000);
41
43
  return () => clearTimeout(timeout);
@@ -44,17 +46,22 @@ export const ProgressBar = forwardRef((_a, ref) => {
44
46
  return (
45
47
  /* biome-ignore lint/a11y/useFocusableInteractive: Progressbar is not interactive. */
46
48
  React.createElement("div", Object.assign({ ref: ref, className: cl("navds-progress-bar", `navds-progress-bar--${size}`, className), "aria-valuemax": (simulated === null || simulated === void 0 ? void 0 : simulated.seconds) ? 0 : Math.round(valueMax), "aria-valuenow": (simulated === null || simulated === void 0 ? void 0 : simulated.seconds) ? 0 : Math.round(value), "aria-valuetext": (simulated === null || simulated === void 0 ? void 0 : simulated.seconds)
47
- ? `Fremdrift kan ikke beregnes, antatt tid er: ${simulated === null || simulated === void 0 ? void 0 : simulated.seconds} sekunder`
48
- : `${Math.round(value)} av ${Math.round(valueMax)}`,
49
+ ? translate("progressUnknown", {
50
+ seconds: Math.round(simulated === null || simulated === void 0 ? void 0 : simulated.seconds),
51
+ })
52
+ : translate("progress", {
53
+ current: Math.round(value),
54
+ max: Math.round(valueMax),
55
+ }),
49
56
  // biome-ignore lint/a11y/useAriaPropsForRole: We found that adding valueMin was not needed
50
57
  role: "progressbar", "aria-labelledby": ariaLabelledBy, "aria-label": ariaLabel }, rest),
51
58
  React.createElement("div", { className: cl("navds-progress-bar__foreground", {
52
- "navds-progress-bar__foreground--indeterminate": Number.isInteger(simulated === null || simulated === void 0 ? void 0 : simulated.seconds),
59
+ "navds-progress-bar__foreground--indeterminate": (simulated === null || simulated === void 0 ? void 0 : simulated.seconds) !== undefined,
53
60
  }), style: {
54
- "--__ac-progress-bar-simulated": Number.isInteger(simulated === null || simulated === void 0 ? void 0 : simulated.seconds)
61
+ "--__ac-progress-bar-simulated": (simulated === null || simulated === void 0 ? void 0 : simulated.seconds) !== undefined
55
62
  ? `${simulated === null || simulated === void 0 ? void 0 : simulated.seconds}s`
56
63
  : undefined,
57
- "--__ac-progress-bar-translate": `-${translate}%`,
64
+ "--__ac-progress-bar-translate": `-${translateX}%`,
58
65
  } })));
59
66
  });
60
67
  export default ProgressBar;
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../src/progress-bar/ProgressBar.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAkB,UAAU,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AA4DlE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CACnC,CACE,EASC,EACD,GAAG,EACH,EAAE;QAXF,EACE,IAAI,GAAG,QAAQ,EACf,KAAK,GAAG,CAAC,EACT,QAAQ,GAAG,GAAG,EACd,iBAAiB,EAAE,cAAc,EACjC,YAAY,EAAE,SAAS,EACvB,SAAS,EACT,SAAS,OAEV,EADI,IAAI,cART,wFASC,CADQ;IAIT,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC;IAC7D,MAAM,YAAY,GAAG,MAAM,EAAc,CAAC;IAC1C,YAAY,CAAC,OAAO,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,CAAC;IAE5C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,KAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,UAAU,CACxB,YAAY,CAAC,OAAO,EACpB,SAAS,CAAC,OAAO,GAAG,IAAI,CACzB,CAAC;YACF,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,CAAC,CAAC;IAEzB,OAAO;IACL,qFAAqF;IACrF,2CACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,oBAAoB,EACpB,uBAAuB,IAAI,EAAE,EAC7B,SAAS,CACV,mBACc,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAC7C,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,oBAEvD,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO;YAChB,CAAC,CAAC,+CAA+C,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,WAAW;YAC9E,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;QAEvD,2FAA2F;QAC3F,IAAI,EAAC,aAAa,qBACD,cAAc,gBACnB,SAAS,IACjB,IAAI;QAER,6BACE,SAAS,EAAE,EAAE,CAAC,gCAAgC,EAAE;gBAC9C,+CAA+C,EAAE,MAAM,CAAC,SAAS,CAC/D,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CACnB;aACF,CAAC,EACF,KAAK,EAAE;gBACL,+BAA+B,EAAE,MAAM,CAAC,SAAS,CAC/C,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CACnB;oBACC,CAAC,CAAC,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,GAAG;oBAC1B,CAAC,CAAC,SAAS;gBACb,+BAA+B,EAAE,IAAI,SAAS,GAAG;aAClD,GACD,CACE,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../src/progress-bar/ProgressBar.tsx"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ export interface ExpandableRowProps extends Omit<RowProps, "content"> {
12
12
  togglePlacement?: "left" | "right";
13
13
  /**
14
14
  * Opens component if 'true', closes if 'false'
15
- * Using this props removes automatic control of open-state
15
+ * Using this prop removes automatic control of open-state
16
16
  */
17
17
  open?: boolean;
18
18
  /**
@@ -15,6 +15,7 @@ import { ChevronDownIcon } from "@navikt/aksel-icons";
15
15
  import { composeEventHandlers } from "../util/composeEventHandlers.js";
16
16
  import { useId } from "../util/hooks/index.js";
17
17
  import { useControllableState } from "../util/hooks/useControllableState.js";
18
+ import { useI18n } from "../util/i18n/i18n.context.js";
18
19
  import AnimateHeight from "./AnimateHeight.js";
19
20
  import DataCell from "./DataCell.js";
20
21
  import Row from "./Row.js";
@@ -25,14 +26,17 @@ export const ExpandableRow = forwardRef((_a, ref) => {
25
26
  value: open,
26
27
  onChange: onOpenChange,
27
28
  });
29
+ const translate = useI18n("global");
28
30
  const id = useId();
29
- const expansionHandler = (e) => {
30
- _setOpen((x) => !x);
31
- e.stopPropagation();
31
+ const expansionHandler = (event) => {
32
+ _setOpen((oldOpen) => !oldOpen);
33
+ event.stopPropagation();
32
34
  };
33
- const onRowClick = (e) => !isInteractiveTarget(e.target) && expansionHandler(e);
34
- const handleRowClick = (e) => {
35
- !expansionDisabled && expandOnRowClick && onRowClick(e);
35
+ const handleRowClick = (event) => {
36
+ expandOnRowClick &&
37
+ !expansionDisabled &&
38
+ !isInteractiveTarget(event.target) &&
39
+ expansionHandler(event);
36
40
  };
37
41
  return (React.createElement(React.Fragment, null,
38
42
  React.createElement(Row, Object.assign({}, rest, { ref: ref, className: cl("navds-table__expandable-row", className, {
@@ -44,7 +48,7 @@ export const ExpandableRow = forwardRef((_a, ref) => {
44
48
  React.createElement(DataCell, { className: cl("navds-table__toggle-expand-cell", {
45
49
  "navds-table__toggle-expand-cell--open": _open,
46
50
  }), onClick: expansionHandler }, !expansionDisabled && (React.createElement("button", { className: "navds-table__toggle-expand-button", type: "button", "aria-controls": id, "aria-expanded": _open, onClick: expansionHandler },
47
- React.createElement(ChevronDownIcon, { className: "navds-table__expandable-icon", title: _open ? "Vis mindre" : "Vis mer" })))),
51
+ React.createElement(ChevronDownIcon, { className: "navds-table__expandable-icon", title: _open ? translate("showLess") : translate("showMore") })))),
48
52
  togglePlacement === "left" && children),
49
53
  React.createElement("tr", { className: "navds-table__expanded-row", "aria-hidden": !_open, id: id },
50
54
  React.createElement("td", { colSpan: colSpan, className: "navds-table__expanded-row-cell" },
@@ -1 +1 @@
1
- {"version":3,"file":"ExpandableRow.js","sourceRoot":"","sources":["../../src/table/ExpandableRow.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExpandableRow.js","sourceRoot":"","sources":["../../src/table/ExpandableRow.tsx"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { ChevronLeftIcon, ChevronRightIcon } from "@navikt/aksel-icons";
4
4
  function ScrollButton({ hidden, onClick, dir }) {
5
5
  return (React.createElement("div", { className: cl("navds-tabs__scroll-button", {
6
6
  "navds-tabs__scroll-button--hidden": hidden,
7
- }), onClick: onClick, "aria-hidden": true }, dir === "left" ? (React.createElement(ChevronLeftIcon, { title: "scroll tilbake" })) : (React.createElement(ChevronRightIcon, { title: "scroll neste" }))));
7
+ }), onClick: onClick, "aria-hidden": true }, dir === "left" ? React.createElement(ChevronLeftIcon, null) : React.createElement(ChevronRightIcon, null)));
8
8
  }
9
9
  export default ScrollButton;
10
10
  //# sourceMappingURL=ScrollButtons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollButtons.js","sourceRoot":"","sources":["../../../../src/tabs/parts/tablist/ScrollButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAQxE,SAAS,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAqB;IAC/D,OAAO,CACL,6BACE,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE;YACzC,mCAAmC,EAAE,MAAM;SAC5C,CAAC,EACF,OAAO,EAAE,OAAO,yBAGf,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,CAChB,oBAAC,eAAe,IAAC,KAAK,EAAC,gBAAgB,GAAG,CAC3C,CAAC,CAAC,CAAC,CACF,oBAAC,gBAAgB,IAAC,KAAK,EAAC,cAAc,GAAG,CAC1C,CACG,CACP,CAAC;AACJ,CAAC;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"ScrollButtons.js","sourceRoot":"","sources":["../../../../src/tabs/parts/tablist/ScrollButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAQxE,SAAS,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAqB;IAC/D,OAAO,CACL,6BACE,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE;YACzC,mCAAmC,EAAE,MAAM;SAC5C,CAAC,EACF,OAAO,EAAE,OAAO,yBAGf,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,oBAAC,eAAe,OAAG,CAAC,CAAC,CAAC,oBAAC,gBAAgB,OAAG,CACxD,CACP,CAAC;AACJ,CAAC;AAED,eAAe,YAAY,CAAC"}
@@ -2,7 +2,5 @@ import { Component, ComponentTranslation, Translations } from "./i18n.types.js";
2
2
  type NestedKeyOf<ObjectType extends object> = {
3
3
  [Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends object ? `${Key}.${NestedKeyOf<ObjectType[Key]>}` : `${Key}`;
4
4
  }[keyof ObjectType & (string | number)];
5
- export declare function useI18n<T extends Component>(componentName: T, ...local: (ComponentTranslation<T> | undefined)[]): (keypath: NestedKeyOf<Translations[T]>, options?: {
6
- replacements: Record<string, string | number>;
7
- }) => string;
5
+ export declare function useI18n<T extends Component>(componentName: T, ...local: (ComponentTranslation<T> | undefined)[]): (keypath: NestedKeyOf<Translations[T]>, replacements?: Record<string, string | number>) => string;
8
6
  export {};
@@ -11,18 +11,18 @@ export function useI18n(componentName, ...local) {
11
11
  /**
12
12
  * https://github.com/Shopify/polaris/blob/2115f9ba2f5bcbf2ad15745233501bff2db81ecf/polaris-react/src/utilities/i18n/I18n.ts#L24
13
13
  */
14
- const translate = (keypath, options) => {
14
+ const translate = (keypath, replacements) => {
15
15
  const text = get(keypath, ...local, ...(Array.isArray(i18n)
16
16
  ? i18n.map((t) => t[componentName])
17
17
  : [i18n[componentName]]));
18
- if (options === null || options === void 0 ? void 0 : options.replacements) {
18
+ if (replacements) {
19
19
  return text.replace(REPLACE_REGEX, (match) => {
20
20
  const replacement = match.substring(1, match.length - 1);
21
- if (options.replacements[replacement] === undefined) {
22
- const replacementData = JSON.stringify(options.replacements);
21
+ if (replacements[replacement] === undefined) {
22
+ const replacementData = JSON.stringify(replacements);
23
23
  throw new Error(`Error translating key '${keypath}'. No replacement syntax ({}) found for key '${replacement}'. The following replacements were passed: '${replacementData}'`);
24
24
  }
25
- return options.replacements[replacement]; // can also be a number, but JS doesn't mind...
25
+ return replacements[replacement]; // can also be a number, but JS doesn't mind...
26
26
  });
27
27
  }
28
28
  return text;
@@ -1 +1 @@
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;AAG5B;;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,OAAqC,EACrC,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;AAG5B;;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,OAAqC,EACrC,YAA8C,EAC9C,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,YAAY,EAAE,CAAC;YACjB,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,YAAY,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;oBAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;oBAErD,MAAM,IAAI,KAAK,CACb,0BAA0B,OAAO,gDAAgD,WAAW,+CAA+C,eAAe,GAAG,CAC9J,CAAC;gBACJ,CAAC;gBAED,OAAO,YAAY,CAAC,WAAW,CAAW,CAAC,CAAC,+CAA+C;YAC7F,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,4 +1,8 @@
1
1
  declare const _default: {
2
+ global: {
3
+ showMore: string;
4
+ showLess: string;
5
+ };
2
6
  FileUpload: {
3
7
  dropzone: {
4
8
  button: string;
@@ -35,5 +39,31 @@ declare const _default: {
35
39
  labelSuffix: string;
36
40
  };
37
41
  };
42
+ ErrorSummary: {
43
+ heading: string;
44
+ };
45
+ Loader: {
46
+ title: string;
47
+ };
48
+ Modal: {
49
+ close: string;
50
+ };
51
+ Pagination: {
52
+ previous: string;
53
+ next: string;
54
+ };
55
+ ProgressBar: {
56
+ progress: string;
57
+ progressUnknown: string;
58
+ };
59
+ Search: {
60
+ clear: string;
61
+ search: string;
62
+ };
63
+ Textarea: {
64
+ maxLength: string;
65
+ charsTooMany: string;
66
+ charsLeft: string;
67
+ };
38
68
  };
39
69
  export default _default;
@@ -1,4 +1,8 @@
1
1
  export default {
2
+ global: {
3
+ showMore: "Show more",
4
+ showLess: "Show less",
5
+ },
2
6
  FileUpload: {
3
7
  dropzone: {
4
8
  button: "Choose file",
@@ -35,5 +39,31 @@ export default {
35
39
  labelSuffix: "delete",
36
40
  },
37
41
  },
42
+ ErrorSummary: {
43
+ heading: "You must correct the following errors before you can continue:",
44
+ },
45
+ Loader: {
46
+ title: "Waiting…",
47
+ },
48
+ Modal: {
49
+ close: "Close",
50
+ },
51
+ Pagination: {
52
+ previous: "Previous",
53
+ next: "Next",
54
+ },
55
+ ProgressBar: {
56
+ progress: "{current} of {max}",
57
+ progressUnknown: "Progress is unknown, estimated time is {seconds} seconds.",
58
+ },
59
+ Search: {
60
+ clear: "Clear",
61
+ search: "Search",
62
+ },
63
+ Textarea: {
64
+ maxLength: "Text area with a {maxLength} character limit.",
65
+ charsTooMany: "{chars} characters too many",
66
+ charsLeft: "{chars} characters left",
67
+ },
38
68
  };
39
69
  //# sourceMappingURL=en.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"en.js","sourceRoot":"","sources":["../../../../src/util/i18n/locales/en.ts"],"names":[],"mappings":"AAEA,eAAe;IACb,UAAU,EAAE;QACV,QAAQ,EAAE;YACR,MAAM,EAAE,aAAa;YACrB,cAAc,EAAE,cAAc;YAC9B,WAAW,EAAE,yBAAyB;YACtC,mBAAmB,EAAE,0BAA0B;YAC/C,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,IAAI;YACR,QAAQ,EAAE,sBAAsB;YAChC,iBAAiB,EAAE,8BAA8B;SAClD;QACD,IAAI,EAAE;YACJ,gBAAgB,EAAE,8BAA8B;YAChD,iBAAiB,EAAE,aAAa;YAChC,SAAS,EAAE,YAAY;YACvB,WAAW,EAAE,cAAc;SAC5B;KACF;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,mCAAmC;QACzC,YAAY,EAAE,gBAAgB;QAC9B,YAAY,EAAE,gBAAgB;KAC/B;IACD,KAAK,EAAE;QACL,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,eAAe;QAC7B,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;KACnB;IACD,KAAK,EAAE;QACL,SAAS,EAAE;YACT,WAAW,EAAE,QAAQ;SACtB;KACF;CACqB,CAAC"}
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../../../src/util/i18n/locales/en.ts"],"names":[],"mappings":"AAEA,eAAe;IACb,MAAM,EAAE;QACN,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,WAAW;KACtB;IAED,UAAU,EAAE;QACV,QAAQ,EAAE;YACR,MAAM,EAAE,aAAa;YACrB,cAAc,EAAE,cAAc;YAC9B,WAAW,EAAE,yBAAyB;YACtC,mBAAmB,EAAE,0BAA0B;YAC/C,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,IAAI;YACR,QAAQ,EAAE,sBAAsB;YAChC,iBAAiB,EAAE,8BAA8B;SAClD;QACD,IAAI,EAAE;YACJ,gBAAgB,EAAE,8BAA8B;YAChD,iBAAiB,EAAE,aAAa;YAChC,SAAS,EAAE,YAAY;YACvB,WAAW,EAAE,cAAc;SAC5B;KACF;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,mCAAmC;QACzC,YAAY,EAAE,gBAAgB;QAC9B,YAAY,EAAE,gBAAgB;KAC/B;IACD,KAAK,EAAE;QACL,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,eAAe;QAC7B,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;KACnB;IACD,KAAK,EAAE;QACL,SAAS,EAAE;YACT,WAAW,EAAE,QAAQ;SACtB;KACF;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,gEAAgE;KAC1E;IACD,MAAM,EAAE;QACN,KAAK,EAAE,UAAU;KAClB;IACD,KAAK,EAAE;QACL,KAAK,EAAE,OAAO;KACf;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,MAAM;KACb;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,oBAAoB;QAC9B,eAAe,EACb,2DAA2D;KAC9D;IACD,MAAM,EAAE;QACN,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,QAAQ;KACjB;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,+CAA+C;QAC1D,YAAY,EAAE,6BAA6B;QAC3C,SAAS,EAAE,yBAAyB;KACrC;CACqB,CAAC"}
@@ -1,4 +1,8 @@
1
1
  declare const _default: {
2
+ global: {
3
+ showMore: string;
4
+ showLess: string;
5
+ };
2
6
  FileUpload: {
3
7
  dropzone: {
4
8
  button: string;
@@ -36,5 +40,32 @@ declare const _default: {
36
40
  labelSuffix: string;
37
41
  };
38
42
  };
43
+ ErrorSummary: {
44
+ heading: string;
45
+ };
46
+ Loader: {
47
+ title: string;
48
+ };
49
+ Modal: {
50
+ close: string;
51
+ };
52
+ Pagination: {
53
+ previous: string;
54
+ next: string;
55
+ };
56
+ ProgressBar: {
57
+ progress: string;
58
+ progressUnknown: string;
59
+ };
60
+ Search: {
61
+ clear: string;
62
+ search: string;
63
+ };
64
+ Textarea: {
65
+ /** Screen readers only */
66
+ maxLength: string;
67
+ charsTooMany: string;
68
+ charsLeft: string;
69
+ };
39
70
  };
40
71
  export default _default;
@@ -1,4 +1,8 @@
1
1
  export default {
2
+ global: {
3
+ showMore: "Vis mer",
4
+ showLess: "Vis mindre",
5
+ },
2
6
  FileUpload: {
3
7
  dropzone: {
4
8
  button: "Velg fil",
@@ -36,5 +40,32 @@ export default {
36
40
  labelSuffix: "slett",
37
41
  },
38
42
  },
43
+ ErrorSummary: {
44
+ heading: "Du må rette disse feilene før du kan fortsette:",
45
+ },
46
+ Loader: {
47
+ title: "Venter…",
48
+ },
49
+ Modal: {
50
+ close: "Lukk",
51
+ },
52
+ Pagination: {
53
+ previous: "Forrige",
54
+ next: "Neste",
55
+ },
56
+ ProgressBar: {
57
+ progress: "{current} av {max}",
58
+ progressUnknown: "Fremdrift kan ikke beregnes, antatt tid er {seconds} sekunder.",
59
+ },
60
+ Search: {
61
+ clear: "Tøm",
62
+ search: "Søk",
63
+ },
64
+ Textarea: {
65
+ /** Screen readers only */
66
+ maxLength: "Tekstområde med plass til {maxLength} tegn.",
67
+ charsTooMany: "{chars} tegn for mye",
68
+ charsLeft: "{chars} tegn igjen",
69
+ },
39
70
  };
40
71
  //# sourceMappingURL=nb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nb.js","sourceRoot":"","sources":["../../../../src/util/i18n/locales/nb.ts"],"names":[],"mappings":"AAQA,eAAe;IACb,UAAU,EAAE;QACV,QAAQ,EAAE;YACR,MAAM,EAAE,UAAU;YAClB,cAAc,EAAE,YAAY;YAC5B,WAAW,EAAE,wBAAwB;YACrC,mBAAmB,EAAE,wBAAwB;YAC7C,IAAI,EAAE,OAAO;YACb,EAAE,EAAE,OAAO;YACX,QAAQ,EAAE,6BAA6B;YACvC,iBAAiB,EAAE,mCAAmC;SACvD;QACD,IAAI,EAAE;YACJ,gBAAgB,EAAE,gCAAgC;YAClD,iBAAiB,EAAE,aAAa;YAChC,SAAS,EAAE,aAAa;YACxB,WAAW,EAAE,aAAa;SAC3B;KACF;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,mCAAmC;QACzC,YAAY,EAAE,eAAe;QAC7B,YAAY,EAAE,iBAAiB;KAChC;IACD,KAAK,EAAE;QACL,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,cAAc;QAC5B,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,UAAU;KACpB;IACD,KAAK,EAAE;QACL,SAAS,EAAE;YACT,8DAA8D;YAC9D,WAAW,EAAE,OAAO;SACrB;KACF;CACuB,CAAC"}
1
+ {"version":3,"file":"nb.js","sourceRoot":"","sources":["../../../../src/util/i18n/locales/nb.ts"],"names":[],"mappings":"AAQA,eAAe;IACb,MAAM,EAAE;QACN,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,YAAY;KACvB;IAED,UAAU,EAAE;QACV,QAAQ,EAAE;YACR,MAAM,EAAE,UAAU;YAClB,cAAc,EAAE,YAAY;YAC5B,WAAW,EAAE,wBAAwB;YACrC,mBAAmB,EAAE,wBAAwB;YAC7C,IAAI,EAAE,OAAO;YACb,EAAE,EAAE,OAAO;YACX,QAAQ,EAAE,6BAA6B;YACvC,iBAAiB,EAAE,mCAAmC;SACvD;QACD,IAAI,EAAE;YACJ,gBAAgB,EAAE,gCAAgC;YAClD,iBAAiB,EAAE,aAAa;YAChC,SAAS,EAAE,aAAa;YACxB,WAAW,EAAE,aAAa;SAC3B;KACF;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,mCAAmC;QACzC,YAAY,EAAE,eAAe;QAC7B,YAAY,EAAE,iBAAiB;KAChC;IACD,KAAK,EAAE;QACL,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,cAAc;QAC5B,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,UAAU;KACpB;IACD,KAAK,EAAE;QACL,SAAS,EAAE;YACT,8DAA8D;YAC9D,WAAW,EAAE,OAAO;SACrB;KACF;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,iDAAiD;KAC3D;IACD,MAAM,EAAE;QACN,KAAK,EAAE,SAAS;KACjB;IACD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM;KACd;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,OAAO;KACd;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,oBAAoB;QAC9B,eAAe,EACb,gEAAgE;KACnE;IACD,MAAM,EAAE;QACN,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;KACd;IACD,QAAQ,EAAE;QACR,0BAA0B;QAC1B,SAAS,EAAE,6CAA6C;QACxD,YAAY,EAAE,sBAAsB;QACpC,SAAS,EAAE,oBAAoB;KAChC;CACuB,CAAC"}
@@ -1,4 +1,8 @@
1
1
  declare const _default: {
2
+ global: {
3
+ showMore: string;
4
+ showLess: string;
5
+ };
2
6
  FileUpload: {
3
7
  dropzone: {
4
8
  button: string;
@@ -35,5 +39,31 @@ declare const _default: {
35
39
  labelSuffix: string;
36
40
  };
37
41
  };
42
+ ErrorSummary: {
43
+ heading: string;
44
+ };
45
+ Loader: {
46
+ title: string;
47
+ };
48
+ Modal: {
49
+ close: string;
50
+ };
51
+ Pagination: {
52
+ previous: string;
53
+ next: string;
54
+ };
55
+ ProgressBar: {
56
+ progress: string;
57
+ progressUnknown: string;
58
+ };
59
+ Search: {
60
+ clear: string;
61
+ search: string;
62
+ };
63
+ Textarea: {
64
+ maxLength: string;
65
+ charsTooMany: string;
66
+ charsLeft: string;
67
+ };
38
68
  };
39
69
  export default _default;
@@ -1,4 +1,8 @@
1
1
  export default {
2
+ global: {
3
+ showMore: "Vis meir",
4
+ showLess: "Vis mindre",
5
+ },
2
6
  FileUpload: {
3
7
  dropzone: {
4
8
  button: "Vel fil",
@@ -35,5 +39,31 @@ export default {
35
39
  labelSuffix: "slett",
36
40
  },
37
41
  },
42
+ ErrorSummary: {
43
+ heading: "Du må rette desse feila før du kan halde fram:",
44
+ },
45
+ Loader: {
46
+ title: "Ventar…",
47
+ },
48
+ Modal: {
49
+ close: "Lukk",
50
+ },
51
+ Pagination: {
52
+ previous: "Førre",
53
+ next: "Neste",
54
+ },
55
+ ProgressBar: {
56
+ progress: "{current} av {max}",
57
+ progressUnknown: "Framdrift kan ikkje bereknast, antatt tid er {seconds} sekund.",
58
+ },
59
+ Search: {
60
+ clear: "Tøm",
61
+ search: "Søk",
62
+ },
63
+ Textarea: {
64
+ maxLength: "Tekstområde med plass til {maxLength} teikn.",
65
+ charsTooMany: "{chars} teikn for mykje",
66
+ charsLeft: "{chars} teikn igjen",
67
+ },
38
68
  };
39
69
  //# sourceMappingURL=nn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nn.js","sourceRoot":"","sources":["../../../../src/util/i18n/locales/nn.ts"],"names":[],"mappings":"AAEA,eAAe;IACb,UAAU,EAAE;QACV,QAAQ,EAAE;YACR,MAAM,EAAE,SAAS;YACjB,cAAc,EAAE,WAAW;YAC3B,WAAW,EAAE,uBAAuB;YACpC,mBAAmB,EAAE,wBAAwB;YAC7C,IAAI,EAAE,OAAO;YACb,EAAE,EAAE,OAAO;YACX,QAAQ,EAAE,6BAA6B;YACvC,iBAAiB,EAAE,qCAAqC;SACzD;QACD,IAAI,EAAE;YACJ,gBAAgB,EAAE,+BAA+B;YACjD,iBAAiB,EAAE,YAAY;YAC/B,SAAS,EAAE,aAAa;YACxB,WAAW,EAAE,aAAa;SAC3B;KACF;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,mCAAmC;QACzC,YAAY,EAAE,eAAe;QAC7B,YAAY,EAAE,iBAAiB;KAChC;IACD,KAAK,EAAE;QACL,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,cAAc;QAC5B,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,UAAU;KACpB;IACD,KAAK,EAAE;QACL,SAAS,EAAE;YACT,WAAW,EAAE,OAAO;SACrB;KACF;CACqB,CAAC"}
1
+ {"version":3,"file":"nn.js","sourceRoot":"","sources":["../../../../src/util/i18n/locales/nn.ts"],"names":[],"mappings":"AAEA,eAAe;IACb,MAAM,EAAE;QACN,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,YAAY;KACvB;IAED,UAAU,EAAE;QACV,QAAQ,EAAE;YACR,MAAM,EAAE,SAAS;YACjB,cAAc,EAAE,WAAW;YAC3B,WAAW,EAAE,uBAAuB;YACpC,mBAAmB,EAAE,wBAAwB;YAC7C,IAAI,EAAE,OAAO;YACb,EAAE,EAAE,OAAO;YACX,QAAQ,EAAE,6BAA6B;YACvC,iBAAiB,EAAE,qCAAqC;SACzD;QACD,IAAI,EAAE;YACJ,gBAAgB,EAAE,+BAA+B;YACjD,iBAAiB,EAAE,YAAY;YAC/B,SAAS,EAAE,aAAa;YACxB,WAAW,EAAE,aAAa;SAC3B;KACF;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,mCAAmC;QACzC,YAAY,EAAE,eAAe;QAC7B,YAAY,EAAE,iBAAiB;KAChC;IACD,KAAK,EAAE;QACL,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,cAAc;QAC5B,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,UAAU;KACpB;IACD,KAAK,EAAE;QACL,SAAS,EAAE;YACT,WAAW,EAAE,OAAO;SACrB;KACF;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,gDAAgD;KAC1D;IACD,MAAM,EAAE;QACN,KAAK,EAAE,SAAS;KACjB;IACD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM;KACd;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,OAAO;KACd;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,oBAAoB;QAC9B,eAAe,EACb,gEAAgE;KACnE;IACD,MAAM,EAAE;QACN,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;KACd;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,8CAA8C;QACzD,YAAY,EAAE,yBAAyB;QACvC,SAAS,EAAE,qBAAqB;KACjC;CACqB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@navikt/ds-react",
3
- "version": "7.4.0",
3
+ "version": "7.4.2",
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",
@@ -604,8 +604,8 @@
604
604
  "dependencies": {
605
605
  "@floating-ui/react": "0.25.4",
606
606
  "@floating-ui/react-dom": "^2.0.9",
607
- "@navikt/aksel-icons": "^7.4.0",
608
- "@navikt/ds-tokens": "^7.4.0",
607
+ "@navikt/aksel-icons": "^7.4.2",
608
+ "@navikt/ds-tokens": "^7.4.2",
609
609
  "clsx": "^2.1.0",
610
610
  "date-fns": "^3.0.0",
611
611
  "react-day-picker": "8.10.1"
@@ -18,6 +18,7 @@ const ALLOWED_INPUT_FORMATS_MONTH = [
18
18
  "M-yyyy",
19
19
  "MM-yyyy",
20
20
  "MM.yyyy",
21
+ "MMyyyy",
21
22
  INPUT_DATE_STRING_FORMAT_MONTH,
22
23
  ...ALLOWED_INPUT_FORMATS_DATE,
23
24
  ];
@@ -1,6 +1,7 @@
1
1
  import cl from "clsx";
2
2
  import React, { forwardRef, useContext } from "react";
3
3
  import { ChevronDownIcon } from "@navikt/aksel-icons";
4
+ import { useI18n } from "../util/i18n/i18n.context";
4
5
  import { ExpansionCardContext } from "./context";
5
6
 
6
7
  export interface ExpansionCardHeaderProps
@@ -13,6 +14,7 @@ const ExpansionCardHeader = forwardRef<
13
14
  ExpansionCardHeaderProps
14
15
  >(({ children, className, ...rest }, ref) => {
15
16
  const panelContext = useContext(ExpansionCardContext);
17
+ const translate = useI18n("global");
16
18
 
17
19
  if (panelContext === null) {
18
20
  console.error(
@@ -31,13 +33,13 @@ const ExpansionCardHeader = forwardRef<
31
33
 
32
34
  <button
33
35
  className="navds-expansioncard__header-button"
34
- onClick={() => panelContext.toggleOpen()}
36
+ onClick={panelContext.toggleOpen}
35
37
  type="button"
36
38
  aria-expanded={panelContext.open}
37
39
  >
38
40
  <ChevronDownIcon
39
41
  className="navds-expansioncard__header-chevron"
40
- title="Vis mer"
42
+ title={translate("showMore")}
41
43
  />
42
44
  </button>
43
45
  </div>
@@ -45,7 +45,7 @@ const useVirtualFocus = (
45
45
 
46
46
  const setActiveAndScrollToElement = (element?: HTMLElement) => {
47
47
  setActiveElement(element);
48
- element?.scrollIntoView?.({ block: "nearest" });
48
+ element?.scrollIntoView?.({ block: "center" });
49
49
  };
50
50
 
51
51
  const moveFocusUp = () => {
@@ -11,6 +11,7 @@ import { useMergeRefs } from "../../../util/hooks";
11
11
  import filteredOptionsUtil from "../FilteredOptions/filtered-options-util";
12
12
  import { useFilteredOptionsContext } from "../FilteredOptions/filteredOptionsContext";
13
13
  import { useSelectedOptionsContext } from "../SelectedOptions/selectedOptionsContext";
14
+ import { ComboboxOption } from "../types";
14
15
  import { useInputContext } from "./Input.context";
15
16
 
16
17
  interface InputProps
@@ -93,19 +94,36 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
93
94
  clearInput(event);
94
95
  } else if ((allowNewValues || shouldAutocomplete) && value !== "") {
95
96
  event.preventDefault();
96
- // Autocompleting or adding a new value
97
- const selectedValue =
98
- allowNewValues && isValueNew
99
- ? { label: value, value }
100
- : filteredOptionsUtil.getFirstValueStartingWith(
101
- value,
102
- filteredOptions,
103
- ) || filteredOptions[0];
97
+
98
+ const autoCompletedOption =
99
+ filteredOptionsUtil.getFirstValueStartingWith(
100
+ value,
101
+ filteredOptions,
102
+ );
103
+
104
+ /*
105
+ * User can have matching results, while not using the autocomplete result
106
+ * E.g. User types "Oslo", list has is "Oslo kommune", but user hits backspace, canceling autocomplete.
107
+ */
108
+ const autoCompleteMatchesValue =
109
+ filteredOptionsUtil.normalizeText(value) ===
110
+ filteredOptionsUtil.normalizeText(autoCompletedOption?.label ?? "");
111
+
112
+ let selectedValue: ComboboxOption | undefined;
113
+
114
+ if (
115
+ shouldAutocomplete &&
116
+ autoCompletedOption &&
117
+ autoCompleteMatchesValue
118
+ ) {
119
+ selectedValue = autoCompletedOption;
120
+ } else if (allowNewValues && isValueNew) {
121
+ selectedValue = { label: value, value };
122
+ }
104
123
 
105
124
  if (!selectedValue) {
106
125
  return;
107
126
  }
108
-
109
127
  toggleOption(selectedValue, event);
110
128
  if (!isMultiSelect && !isTextInSelectedOptions(selectedValue.label)) {
111
129
  toggleIsListOpen(false);
@@ -290,6 +290,45 @@ describe("Render combobox", () => {
290
290
  false,
291
291
  );
292
292
  });
293
+
294
+ test("and pressing enter to select autocompleted word will select existing word when addNewOptions is true", async () => {
295
+ const onToggleSelected = vi.fn();
296
+ render(
297
+ <App
298
+ onToggleSelected={onToggleSelected}
299
+ options={options.map((opt) => ({
300
+ label: `${opt} (${opt})`,
301
+ value: opt,
302
+ }))}
303
+ shouldAutocomplete
304
+ allowNewValues
305
+ />,
306
+ );
307
+
308
+ const combobox = screen.getByRole("combobox", {
309
+ name: "Hva er dine favorittfrukter?",
310
+ });
311
+
312
+ await act(async () => {
313
+ await userEvent.click(combobox);
314
+
315
+ await userEvent.type(combobox, "p");
316
+ });
317
+
318
+ expect(combobox.getAttribute("value")).toBe(
319
+ "passion fruit (passion fruit)",
320
+ );
321
+
322
+ await act(async () => {
323
+ await userEvent.keyboard("{Enter}");
324
+ });
325
+
326
+ expect(onToggleSelected).toHaveBeenCalledWith(
327
+ "passion fruit",
328
+ true,
329
+ false,
330
+ );
331
+ });
293
332
  });
294
333
 
295
334
  describe("has keyboard navigation", () => {