@dnb/eufemia 10.20.0 → 10.21.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 (810) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/cjs/components/date-picker/DatePicker.d.ts +10 -1
  3. package/cjs/components/date-picker/DatePicker.js +5 -2
  4. package/cjs/components/date-picker/DatePicker.js.map +1 -1
  5. package/cjs/components/form-label/style/dnb-form-label.css +0 -7
  6. package/cjs/components/form-label/style/dnb-form-label.min.css +1 -1
  7. package/cjs/components/form-label/style/dnb-form-label.scss +0 -6
  8. package/cjs/components/form-status/style/dnb-form-status.css +11 -0
  9. package/cjs/components/form-status/style/dnb-form-status.min.css +1 -1
  10. package/cjs/components/form-status/style/dnb-form-status.scss +11 -0
  11. package/cjs/components/info-card/InfoCard.d.ts +6 -0
  12. package/cjs/components/info-card/InfoCard.js +4 -2
  13. package/cjs/components/info-card/InfoCard.js.map +1 -1
  14. package/cjs/components/info-card/style/dnb-info-card.css +3 -1
  15. package/cjs/components/info-card/style/dnb-info-card.min.css +1 -1
  16. package/cjs/components/info-card/style/dnb-info-card.scss +4 -2
  17. package/cjs/components/input/Input.d.ts +8 -8
  18. package/cjs/components/input/InputDocs.d.ts +2 -0
  19. package/cjs/components/input/InputDocs.js +165 -0
  20. package/cjs/components/input/InputDocs.js.map +1 -0
  21. package/cjs/components/input/InputPassword.d.ts +6 -17
  22. package/cjs/components/input/InputPassword.js +4 -85
  23. package/cjs/components/input/InputPassword.js.map +1 -1
  24. package/cjs/components/input-masked/InputMasked.d.ts +6 -93
  25. package/cjs/components/input-masked/InputMasked.js +3 -1
  26. package/cjs/components/input-masked/InputMasked.js.map +1 -1
  27. package/cjs/components/input-masked/InputMaskedDocs.d.ts +2 -0
  28. package/cjs/components/input-masked/InputMaskedDocs.js +85 -0
  29. package/cjs/components/input-masked/InputMaskedDocs.js.map +1 -0
  30. package/cjs/components/input-masked/InputMaskedHooks.js +7 -4
  31. package/cjs/components/input-masked/InputMaskedHooks.js.map +1 -1
  32. package/cjs/components/input-masked/MultiInputMask.js +2 -6
  33. package/cjs/components/input-masked/MultiInputMask.js.map +1 -1
  34. package/cjs/components/input-masked/style/dnb-input-masked.css +3 -0
  35. package/cjs/components/input-masked/style/dnb-input-masked.min.css +1 -1
  36. package/cjs/components/input-masked/style/dnb-input-masked.scss +5 -0
  37. package/cjs/components/number-format/NumberFormat.d.ts +1 -1
  38. package/cjs/components/number-format/NumberUtils.js +22 -14
  39. package/cjs/components/number-format/NumberUtils.js.map +1 -1
  40. package/cjs/components/slider/Slider.d.ts +1 -0
  41. package/cjs/components/slider/Slider.js +10 -1
  42. package/cjs/components/slider/Slider.js.map +1 -1
  43. package/cjs/components/slider/SliderInstance.js +20 -6
  44. package/cjs/components/slider/SliderInstance.js.map +1 -1
  45. package/cjs/components/slider/SliderMarker.d.ts +7 -0
  46. package/cjs/components/slider/SliderMarker.js +62 -0
  47. package/cjs/components/slider/SliderMarker.js.map +1 -0
  48. package/cjs/components/slider/SliderProvider.js +2 -1
  49. package/cjs/components/slider/SliderProvider.js.map +1 -1
  50. package/cjs/components/slider/style/dnb-slider.css +43 -2
  51. package/cjs/components/slider/style/dnb-slider.min.css +1 -1
  52. package/cjs/components/slider/style/dnb-slider.scss +44 -1
  53. package/cjs/components/slider/style/themes/dnb-slider-theme-sbanken.css +3 -0
  54. package/cjs/components/slider/style/themes/dnb-slider-theme-sbanken.min.css +1 -1
  55. package/cjs/components/slider/style/themes/dnb-slider-theme-sbanken.scss +4 -0
  56. package/cjs/components/slider/style/themes/dnb-slider-theme-ui.css +3 -0
  57. package/cjs/components/slider/style/themes/dnb-slider-theme-ui.min.css +1 -1
  58. package/cjs/components/slider/style/themes/dnb-slider-theme-ui.scss +5 -0
  59. package/cjs/components/slider/types.d.ts +6 -0
  60. package/cjs/components/slider/types.js.map +1 -1
  61. package/cjs/components/table/TableAccordion.js +3 -2
  62. package/cjs/components/table/TableAccordion.js.map +1 -1
  63. package/cjs/components/table/TableAccordionContent.js +3 -3
  64. package/cjs/components/table/TableAccordionContent.js.map +1 -1
  65. package/cjs/components/table/style/dnb-table.css +179 -112
  66. package/cjs/components/table/style/dnb-table.min.css +1 -1
  67. package/cjs/components/table/style/dnb-table.scss +60 -4
  68. package/cjs/components/table/style/table-accordion.scss +24 -57
  69. package/cjs/components/table/style/table-container.scss +9 -9
  70. package/cjs/components/table/style/table-mixins.scss +19 -2
  71. package/cjs/components/table/style/table-td.scss +82 -60
  72. package/cjs/components/table/style/table-th.scss +5 -30
  73. package/cjs/components/table/style/table-tr.scss +0 -20
  74. package/cjs/components/table/style/themes/dnb-table-theme-sbanken.css +24 -7
  75. package/cjs/components/table/style/themes/dnb-table-theme-sbanken.min.css +1 -1
  76. package/cjs/components/table/style/themes/dnb-table-theme-sbanken.scss +17 -12
  77. package/cjs/components/table/style/themes/dnb-table-theme-ui.css +14 -9
  78. package/cjs/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  79. package/cjs/components/table/style/themes/dnb-table-theme-ui.scss +12 -22
  80. package/cjs/components/textarea/Textarea.d.ts +4 -10
  81. package/cjs/components/textarea/TextareaDocs.d.ts +2 -0
  82. package/cjs/components/textarea/TextareaDocs.js +105 -0
  83. package/cjs/components/textarea/TextareaDocs.js.map +1 -0
  84. package/cjs/components/textarea/style/dnb-textarea.css +1 -0
  85. package/cjs/components/textarea/style/dnb-textarea.min.css +1 -1
  86. package/cjs/components/textarea/style/dnb-textarea.scss +3 -0
  87. package/cjs/components/upload/UploadInfo.js +1 -1
  88. package/cjs/components/upload/UploadInfo.js.map +1 -1
  89. package/cjs/core/jest/jestSetupScreenshots.css +7 -0
  90. package/cjs/elements/lib.d.ts +1 -1
  91. package/cjs/elements/lists/Dl.d.ts +5 -1
  92. package/cjs/elements/lists/Dl.js +5 -4
  93. package/cjs/elements/lists/Dl.js.map +1 -1
  94. package/cjs/elements/lists/style/lists-mixins.scss +24 -1
  95. package/cjs/extensions/forms/DataContext/Context.d.ts +1 -0
  96. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  97. package/cjs/extensions/forms/DataContext/Provider/Provider.js +58 -40
  98. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  99. package/cjs/extensions/forms/Field/Currency/Currency.js +1 -1
  100. package/cjs/extensions/forms/Field/Currency/Currency.js.map +1 -1
  101. package/cjs/extensions/forms/Field/Expiry/Expiry.js +1 -0
  102. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  103. package/cjs/extensions/forms/Field/FieldDocs.d.ts +3 -0
  104. package/cjs/extensions/forms/Field/FieldDocs.js +18 -0
  105. package/cjs/extensions/forms/Field/FieldDocs.js.map +1 -0
  106. package/cjs/extensions/forms/Field/Number/Number.d.ts +1 -0
  107. package/cjs/extensions/forms/Field/Number/Number.js +13 -7
  108. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  109. package/cjs/extensions/forms/Field/Number/NumberDocs.d.ts +2 -0
  110. package/cjs/extensions/forms/Field/Number/NumberDocs.js +92 -0
  111. package/cjs/extensions/forms/Field/Number/NumberDocs.js.map +1 -0
  112. package/cjs/extensions/forms/Field/Number/style/dnb-number.css +3 -1
  113. package/cjs/extensions/forms/Field/Number/style/dnb-number.min.css +1 -1
  114. package/cjs/extensions/forms/Field/Number/style/dnb-number.scss +4 -1
  115. package/cjs/extensions/forms/Field/Password/Password.d.ts +45 -0
  116. package/cjs/extensions/forms/Field/Password/Password.js +111 -0
  117. package/cjs/extensions/forms/Field/Password/Password.js.map +1 -0
  118. package/cjs/extensions/forms/Field/Password/index.d.ts +2 -0
  119. package/cjs/extensions/forms/Field/Password/index.js +27 -0
  120. package/cjs/extensions/forms/Field/Password/index.js.map +1 -0
  121. package/cjs/extensions/forms/Field/Password/style/dnb-password.css +6 -0
  122. package/cjs/extensions/forms/Field/Password/style/dnb-password.min.css +1 -0
  123. package/cjs/extensions/forms/Field/Password/style/dnb-password.scss +10 -0
  124. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +4 -5
  125. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  126. package/cjs/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.css +0 -12
  127. package/cjs/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.min.css +1 -1
  128. package/cjs/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.scss +0 -11
  129. package/cjs/extensions/forms/Field/Selection/Selection.d.ts +0 -1
  130. package/cjs/extensions/forms/Field/Selection/Selection.js +1 -9
  131. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  132. package/cjs/extensions/forms/Field/String/String.d.ts +20 -9
  133. package/cjs/extensions/forms/Field/String/String.js +52 -31
  134. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  135. package/cjs/extensions/forms/Field/String/StringDocs.d.ts +2 -0
  136. package/cjs/extensions/forms/Field/String/StringDocs.js +106 -0
  137. package/cjs/extensions/forms/Field/String/StringDocs.js.map +1 -0
  138. package/cjs/extensions/forms/Field/Toggle/Toggle.js +1 -1
  139. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  140. package/cjs/extensions/forms/Field/index.d.ts +1 -0
  141. package/cjs/extensions/forms/Field/index.js +7 -0
  142. package/cjs/extensions/forms/Field/index.js.map +1 -1
  143. package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +8 -3
  144. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +204 -62
  145. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  146. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.d.ts +40 -6
  147. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  148. package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.d.ts +2 -0
  149. package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.js +60 -0
  150. package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -0
  151. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +27 -0
  152. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  153. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.scss +26 -0
  154. package/cjs/extensions/forms/Form/Appearance/Appearance.d.ts +7 -0
  155. package/cjs/extensions/forms/Form/Appearance/Appearance.js +38 -0
  156. package/cjs/extensions/forms/Form/Appearance/Appearance.js.map +1 -0
  157. package/cjs/extensions/forms/Form/Appearance/AppearanceDocs.d.ts +2 -0
  158. package/cjs/extensions/forms/Form/Appearance/AppearanceDocs.js +15 -0
  159. package/cjs/extensions/forms/Form/Appearance/AppearanceDocs.js.map +1 -0
  160. package/cjs/extensions/forms/Form/Appearance/index.d.ts +2 -0
  161. package/cjs/extensions/forms/Form/Appearance/index.js +27 -0
  162. package/cjs/extensions/forms/Form/Appearance/index.js.map +1 -0
  163. package/cjs/extensions/forms/Form/data-context/useData.js +1 -1
  164. package/cjs/extensions/forms/Form/data-context/useData.js.map +1 -1
  165. package/cjs/extensions/forms/Form/index.d.ts +1 -0
  166. package/cjs/extensions/forms/Form/index.js +7 -0
  167. package/cjs/extensions/forms/Form/index.js.map +1 -1
  168. package/cjs/extensions/forms/Value/Currency/Currency.js +2 -2
  169. package/cjs/extensions/forms/Value/Currency/Currency.js.map +1 -1
  170. package/cjs/extensions/forms/Value/SummaryList/SummaryList.d.ts +7 -0
  171. package/cjs/extensions/forms/Value/SummaryList/SummaryList.js +35 -0
  172. package/cjs/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -0
  173. package/cjs/extensions/forms/Value/SummaryList/SummaryListContext.d.ts +7 -0
  174. package/cjs/extensions/forms/Value/SummaryList/SummaryListContext.js +12 -0
  175. package/cjs/extensions/forms/Value/SummaryList/SummaryListContext.js.map +1 -0
  176. package/cjs/extensions/forms/Value/SummaryList/index.d.ts +2 -0
  177. package/cjs/extensions/forms/Value/SummaryList/index.js +27 -0
  178. package/cjs/extensions/forms/Value/SummaryList/index.js.map +1 -0
  179. package/cjs/extensions/forms/Value/ValueDocs.d.ts +2 -0
  180. package/cjs/extensions/forms/Value/ValueDocs.js +40 -0
  181. package/cjs/extensions/forms/Value/ValueDocs.js.map +1 -0
  182. package/cjs/extensions/forms/Value/index.d.ts +1 -0
  183. package/cjs/extensions/forms/Value/index.js +7 -0
  184. package/cjs/extensions/forms/Value/index.js.map +1 -1
  185. package/cjs/extensions/forms/ValueBlock/ValueBlock.js +13 -3
  186. package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  187. package/cjs/extensions/forms/hooks/DataValueDocs.d.ts +3 -0
  188. package/cjs/extensions/forms/hooks/DataValueDocs.js +118 -0
  189. package/cjs/extensions/forms/hooks/DataValueDocs.js.map +1 -0
  190. package/cjs/extensions/forms/hooks/useDataValue.d.ts +6 -6
  191. package/cjs/extensions/forms/hooks/useDataValue.js +87 -18
  192. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  193. package/cjs/extensions/forms/hooks/useId.js +1 -1
  194. package/cjs/extensions/forms/hooks/useId.js.map +1 -1
  195. package/cjs/extensions/forms/hooks/useMountEffect.js +1 -1
  196. package/cjs/extensions/forms/hooks/useMountEffect.js.map +1 -1
  197. package/cjs/extensions/forms/hooks/useUnmountEffect.d.ts +4 -0
  198. package/cjs/extensions/forms/hooks/useUnmountEffect.js +14 -0
  199. package/cjs/extensions/forms/hooks/useUnmountEffect.js.map +1 -0
  200. package/cjs/extensions/forms/style/dnb-forms.css +37 -13
  201. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  202. package/cjs/extensions/forms/types.d.ts +4 -4
  203. package/cjs/extensions/forms/types.js.map +1 -1
  204. package/cjs/shared/Context.d.ts +2 -0
  205. package/cjs/shared/Context.js.map +1 -1
  206. package/cjs/shared/Eufemia.d.ts +1 -1
  207. package/cjs/shared/Eufemia.js +2 -2
  208. package/cjs/shared/Eufemia.js.map +1 -1
  209. package/cjs/shared/component-helper.d.ts +1 -0
  210. package/cjs/shared/component-helper.js +10 -0
  211. package/cjs/shared/component-helper.js.map +1 -1
  212. package/cjs/shared/helpers/filterValidProps.d.ts +2 -2
  213. package/cjs/shared/helpers/filterValidProps.js +2 -2
  214. package/cjs/shared/helpers/filterValidProps.js.map +1 -1
  215. package/cjs/shared/helpers/withCamelCaseProps.d.ts +7 -1
  216. package/cjs/shared/helpers/withCamelCaseProps.js.map +1 -1
  217. package/cjs/shared/locales/en-GB.d.ts +5 -3
  218. package/cjs/shared/locales/en-GB.js +7 -5
  219. package/cjs/shared/locales/en-GB.js.map +1 -1
  220. package/cjs/shared/locales/en-US.d.ts +5 -3
  221. package/cjs/shared/locales/index.d.ts +10 -6
  222. package/cjs/shared/locales/nb-NO.d.ts +5 -3
  223. package/cjs/shared/locales/nb-NO.js +7 -5
  224. package/cjs/shared/locales/nb-NO.js.map +1 -1
  225. package/cjs/shared/types.d.ts +5 -0
  226. package/cjs/shared/types.js.map +1 -1
  227. package/cjs/style/dnb-ui-components.css +277 -135
  228. package/cjs/style/dnb-ui-components.min.css +3 -3
  229. package/cjs/style/dnb-ui-elements.css +25 -5
  230. package/cjs/style/dnb-ui-elements.min.css +1 -1
  231. package/cjs/style/dnb-ui-extensions.css +37 -13
  232. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  233. package/cjs/style/dnb-ui-forms.css +37 -13
  234. package/cjs/style/dnb-ui-forms.min.css +1 -1
  235. package/cjs/style/dnb-ui-forms.scss +1 -0
  236. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +25 -5
  237. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  238. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +331 -157
  239. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
  240. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.css +25 -5
  241. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  242. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +37 -13
  243. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  244. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +37 -13
  245. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  246. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +25 -5
  247. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  248. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +341 -155
  249. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +4 -4
  250. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +25 -5
  251. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  252. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +37 -13
  253. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  254. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +37 -13
  255. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  256. package/cjs/style/themes/theme-ui/ui-theme-basis.css +25 -5
  257. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  258. package/cjs/style/themes/theme-ui/ui-theme-components.css +331 -157
  259. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +4 -4
  260. package/cjs/style/themes/theme-ui/ui-theme-elements.css +25 -5
  261. package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  262. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +37 -13
  263. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  264. package/cjs/style/themes/theme-ui/ui-theme-forms.css +37 -13
  265. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  266. package/cjs/style/themes/theme-ui/ui-theme-tags.css +25 -5
  267. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  268. package/components/date-picker/DatePicker.d.ts +10 -1
  269. package/components/date-picker/DatePicker.js +5 -2
  270. package/components/date-picker/DatePicker.js.map +1 -1
  271. package/components/form-label/style/dnb-form-label.css +0 -7
  272. package/components/form-label/style/dnb-form-label.min.css +1 -1
  273. package/components/form-label/style/dnb-form-label.scss +0 -6
  274. package/components/form-status/style/dnb-form-status.css +11 -0
  275. package/components/form-status/style/dnb-form-status.min.css +1 -1
  276. package/components/form-status/style/dnb-form-status.scss +11 -0
  277. package/components/info-card/InfoCard.d.ts +6 -0
  278. package/components/info-card/InfoCard.js +4 -2
  279. package/components/info-card/InfoCard.js.map +1 -1
  280. package/components/info-card/style/dnb-info-card.css +3 -1
  281. package/components/info-card/style/dnb-info-card.min.css +1 -1
  282. package/components/info-card/style/dnb-info-card.scss +4 -2
  283. package/components/input/Input.d.ts +8 -8
  284. package/components/input/InputDocs.d.ts +2 -0
  285. package/components/input/InputDocs.js +158 -0
  286. package/components/input/InputDocs.js.map +1 -0
  287. package/components/input/InputPassword.d.ts +6 -17
  288. package/components/input/InputPassword.js +3 -81
  289. package/components/input/InputPassword.js.map +1 -1
  290. package/components/input-masked/InputMasked.d.ts +6 -93
  291. package/components/input-masked/InputMasked.js +3 -1
  292. package/components/input-masked/InputMasked.js.map +1 -1
  293. package/components/input-masked/InputMaskedDocs.d.ts +2 -0
  294. package/components/input-masked/InputMaskedDocs.js +78 -0
  295. package/components/input-masked/InputMaskedDocs.js.map +1 -0
  296. package/components/input-masked/InputMaskedHooks.js +7 -4
  297. package/components/input-masked/InputMaskedHooks.js.map +1 -1
  298. package/components/input-masked/MultiInputMask.js +2 -6
  299. package/components/input-masked/MultiInputMask.js.map +1 -1
  300. package/components/input-masked/style/dnb-input-masked.css +3 -0
  301. package/components/input-masked/style/dnb-input-masked.min.css +1 -1
  302. package/components/input-masked/style/dnb-input-masked.scss +5 -0
  303. package/components/number-format/NumberFormat.d.ts +1 -1
  304. package/components/number-format/NumberUtils.js +22 -14
  305. package/components/number-format/NumberUtils.js.map +1 -1
  306. package/components/slider/Slider.d.ts +1 -0
  307. package/components/slider/Slider.js +1 -0
  308. package/components/slider/Slider.js.map +1 -1
  309. package/components/slider/SliderInstance.js +18 -5
  310. package/components/slider/SliderInstance.js.map +1 -1
  311. package/components/slider/SliderMarker.d.ts +7 -0
  312. package/components/slider/SliderMarker.js +53 -0
  313. package/components/slider/SliderMarker.js.map +1 -0
  314. package/components/slider/SliderProvider.js +2 -1
  315. package/components/slider/SliderProvider.js.map +1 -1
  316. package/components/slider/style/dnb-slider.css +43 -2
  317. package/components/slider/style/dnb-slider.min.css +1 -1
  318. package/components/slider/style/dnb-slider.scss +44 -1
  319. package/components/slider/style/themes/dnb-slider-theme-sbanken.css +3 -0
  320. package/components/slider/style/themes/dnb-slider-theme-sbanken.min.css +1 -1
  321. package/components/slider/style/themes/dnb-slider-theme-sbanken.scss +4 -0
  322. package/components/slider/style/themes/dnb-slider-theme-ui.css +3 -0
  323. package/components/slider/style/themes/dnb-slider-theme-ui.min.css +1 -1
  324. package/components/slider/style/themes/dnb-slider-theme-ui.scss +5 -0
  325. package/components/slider/types.d.ts +6 -0
  326. package/components/slider/types.js.map +1 -1
  327. package/components/table/TableAccordion.js +3 -2
  328. package/components/table/TableAccordion.js.map +1 -1
  329. package/components/table/TableAccordionContent.js +3 -3
  330. package/components/table/TableAccordionContent.js.map +1 -1
  331. package/components/table/style/dnb-table.css +179 -112
  332. package/components/table/style/dnb-table.min.css +1 -1
  333. package/components/table/style/dnb-table.scss +60 -4
  334. package/components/table/style/table-accordion.scss +24 -57
  335. package/components/table/style/table-container.scss +9 -9
  336. package/components/table/style/table-mixins.scss +19 -2
  337. package/components/table/style/table-td.scss +82 -60
  338. package/components/table/style/table-th.scss +5 -30
  339. package/components/table/style/table-tr.scss +0 -20
  340. package/components/table/style/themes/dnb-table-theme-sbanken.css +24 -7
  341. package/components/table/style/themes/dnb-table-theme-sbanken.min.css +1 -1
  342. package/components/table/style/themes/dnb-table-theme-sbanken.scss +17 -12
  343. package/components/table/style/themes/dnb-table-theme-ui.css +14 -9
  344. package/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  345. package/components/table/style/themes/dnb-table-theme-ui.scss +12 -22
  346. package/components/textarea/Textarea.d.ts +4 -10
  347. package/components/textarea/TextareaDocs.d.ts +2 -0
  348. package/components/textarea/TextareaDocs.js +98 -0
  349. package/components/textarea/TextareaDocs.js.map +1 -0
  350. package/components/textarea/style/dnb-textarea.css +1 -0
  351. package/components/textarea/style/dnb-textarea.min.css +1 -1
  352. package/components/textarea/style/dnb-textarea.scss +3 -0
  353. package/components/upload/UploadInfo.js +1 -1
  354. package/components/upload/UploadInfo.js.map +1 -1
  355. package/core/jest/jestSetupScreenshots.css +7 -0
  356. package/elements/lib.d.ts +1 -1
  357. package/elements/lists/Dl.d.ts +5 -1
  358. package/elements/lists/Dl.js +5 -4
  359. package/elements/lists/Dl.js.map +1 -1
  360. package/elements/lists/style/lists-mixins.scss +24 -1
  361. package/es/components/date-picker/DatePicker.d.ts +10 -1
  362. package/es/components/date-picker/DatePicker.js +5 -2
  363. package/es/components/date-picker/DatePicker.js.map +1 -1
  364. package/es/components/form-label/style/dnb-form-label.css +0 -7
  365. package/es/components/form-label/style/dnb-form-label.min.css +1 -1
  366. package/es/components/form-label/style/dnb-form-label.scss +0 -6
  367. package/es/components/form-status/style/dnb-form-status.css +11 -0
  368. package/es/components/form-status/style/dnb-form-status.min.css +1 -1
  369. package/es/components/form-status/style/dnb-form-status.scss +11 -0
  370. package/es/components/info-card/InfoCard.d.ts +6 -0
  371. package/es/components/info-card/InfoCard.js +4 -2
  372. package/es/components/info-card/InfoCard.js.map +1 -1
  373. package/es/components/info-card/style/dnb-info-card.css +3 -1
  374. package/es/components/info-card/style/dnb-info-card.min.css +1 -1
  375. package/es/components/info-card/style/dnb-info-card.scss +4 -2
  376. package/es/components/input/Input.d.ts +8 -8
  377. package/es/components/input/InputDocs.d.ts +2 -0
  378. package/es/components/input/InputDocs.js +158 -0
  379. package/es/components/input/InputDocs.js.map +1 -0
  380. package/es/components/input/InputPassword.d.ts +6 -17
  381. package/es/components/input/InputPassword.js +3 -81
  382. package/es/components/input/InputPassword.js.map +1 -1
  383. package/es/components/input-masked/InputMasked.d.ts +6 -93
  384. package/es/components/input-masked/InputMasked.js +3 -1
  385. package/es/components/input-masked/InputMasked.js.map +1 -1
  386. package/es/components/input-masked/InputMaskedDocs.d.ts +2 -0
  387. package/es/components/input-masked/InputMaskedDocs.js +78 -0
  388. package/es/components/input-masked/InputMaskedDocs.js.map +1 -0
  389. package/es/components/input-masked/InputMaskedHooks.js +7 -4
  390. package/es/components/input-masked/InputMaskedHooks.js.map +1 -1
  391. package/es/components/input-masked/MultiInputMask.js +2 -6
  392. package/es/components/input-masked/MultiInputMask.js.map +1 -1
  393. package/es/components/input-masked/style/dnb-input-masked.css +3 -0
  394. package/es/components/input-masked/style/dnb-input-masked.min.css +1 -1
  395. package/es/components/input-masked/style/dnb-input-masked.scss +5 -0
  396. package/es/components/number-format/NumberFormat.d.ts +1 -1
  397. package/es/components/number-format/NumberUtils.js +23 -14
  398. package/es/components/number-format/NumberUtils.js.map +1 -1
  399. package/es/components/slider/Slider.d.ts +1 -0
  400. package/es/components/slider/Slider.js +1 -0
  401. package/es/components/slider/Slider.js.map +1 -1
  402. package/es/components/slider/SliderInstance.js +17 -5
  403. package/es/components/slider/SliderInstance.js.map +1 -1
  404. package/es/components/slider/SliderMarker.d.ts +7 -0
  405. package/es/components/slider/SliderMarker.js +52 -0
  406. package/es/components/slider/SliderMarker.js.map +1 -0
  407. package/es/components/slider/SliderProvider.js +2 -1
  408. package/es/components/slider/SliderProvider.js.map +1 -1
  409. package/es/components/slider/style/dnb-slider.css +43 -2
  410. package/es/components/slider/style/dnb-slider.min.css +1 -1
  411. package/es/components/slider/style/dnb-slider.scss +44 -1
  412. package/es/components/slider/style/themes/dnb-slider-theme-sbanken.css +3 -0
  413. package/es/components/slider/style/themes/dnb-slider-theme-sbanken.min.css +1 -1
  414. package/es/components/slider/style/themes/dnb-slider-theme-sbanken.scss +4 -0
  415. package/es/components/slider/style/themes/dnb-slider-theme-ui.css +3 -0
  416. package/es/components/slider/style/themes/dnb-slider-theme-ui.min.css +1 -1
  417. package/es/components/slider/style/themes/dnb-slider-theme-ui.scss +5 -0
  418. package/es/components/slider/types.d.ts +6 -0
  419. package/es/components/slider/types.js.map +1 -1
  420. package/es/components/table/TableAccordion.js +3 -3
  421. package/es/components/table/TableAccordion.js.map +1 -1
  422. package/es/components/table/TableAccordionContent.js +3 -3
  423. package/es/components/table/TableAccordionContent.js.map +1 -1
  424. package/es/components/table/style/dnb-table.css +179 -112
  425. package/es/components/table/style/dnb-table.min.css +1 -1
  426. package/es/components/table/style/dnb-table.scss +60 -4
  427. package/es/components/table/style/table-accordion.scss +24 -57
  428. package/es/components/table/style/table-container.scss +9 -9
  429. package/es/components/table/style/table-mixins.scss +19 -2
  430. package/es/components/table/style/table-td.scss +82 -60
  431. package/es/components/table/style/table-th.scss +5 -30
  432. package/es/components/table/style/table-tr.scss +0 -20
  433. package/es/components/table/style/themes/dnb-table-theme-sbanken.css +24 -7
  434. package/es/components/table/style/themes/dnb-table-theme-sbanken.min.css +1 -1
  435. package/es/components/table/style/themes/dnb-table-theme-sbanken.scss +17 -12
  436. package/es/components/table/style/themes/dnb-table-theme-ui.css +14 -9
  437. package/es/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  438. package/es/components/table/style/themes/dnb-table-theme-ui.scss +12 -22
  439. package/es/components/textarea/Textarea.d.ts +4 -10
  440. package/es/components/textarea/TextareaDocs.d.ts +2 -0
  441. package/es/components/textarea/TextareaDocs.js +98 -0
  442. package/es/components/textarea/TextareaDocs.js.map +1 -0
  443. package/es/components/textarea/style/dnb-textarea.css +1 -0
  444. package/es/components/textarea/style/dnb-textarea.min.css +1 -1
  445. package/es/components/textarea/style/dnb-textarea.scss +3 -0
  446. package/es/components/upload/UploadInfo.js +1 -1
  447. package/es/components/upload/UploadInfo.js.map +1 -1
  448. package/es/core/jest/jestSetupScreenshots.css +7 -0
  449. package/es/elements/lib.d.ts +1 -1
  450. package/es/elements/lists/Dl.d.ts +5 -1
  451. package/es/elements/lists/Dl.js +5 -4
  452. package/es/elements/lists/Dl.js.map +1 -1
  453. package/es/elements/lists/style/lists-mixins.scss +24 -1
  454. package/es/extensions/forms/DataContext/Context.d.ts +1 -0
  455. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  456. package/es/extensions/forms/DataContext/Provider/Provider.js +58 -40
  457. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  458. package/es/extensions/forms/Field/Currency/Currency.js +1 -1
  459. package/es/extensions/forms/Field/Currency/Currency.js.map +1 -1
  460. package/es/extensions/forms/Field/Expiry/Expiry.js +1 -0
  461. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  462. package/es/extensions/forms/Field/FieldDocs.d.ts +3 -0
  463. package/es/extensions/forms/Field/FieldDocs.js +8 -0
  464. package/es/extensions/forms/Field/FieldDocs.js.map +1 -0
  465. package/es/extensions/forms/Field/Number/Number.d.ts +1 -0
  466. package/es/extensions/forms/Field/Number/Number.js +13 -7
  467. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  468. package/es/extensions/forms/Field/Number/NumberDocs.d.ts +2 -0
  469. package/es/extensions/forms/Field/Number/NumberDocs.js +85 -0
  470. package/es/extensions/forms/Field/Number/NumberDocs.js.map +1 -0
  471. package/es/extensions/forms/Field/Number/style/dnb-number.css +3 -1
  472. package/es/extensions/forms/Field/Number/style/dnb-number.min.css +1 -1
  473. package/es/extensions/forms/Field/Number/style/dnb-number.scss +4 -1
  474. package/es/extensions/forms/Field/Password/Password.d.ts +45 -0
  475. package/es/extensions/forms/Field/Password/Password.js +99 -0
  476. package/es/extensions/forms/Field/Password/Password.js.map +1 -0
  477. package/es/extensions/forms/Field/Password/index.d.ts +2 -0
  478. package/es/extensions/forms/Field/Password/index.js +3 -0
  479. package/es/extensions/forms/Field/Password/index.js.map +1 -0
  480. package/es/extensions/forms/Field/Password/style/dnb-password.css +6 -0
  481. package/es/extensions/forms/Field/Password/style/dnb-password.min.css +1 -0
  482. package/es/extensions/forms/Field/Password/style/dnb-password.scss +10 -0
  483. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +4 -5
  484. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  485. package/es/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.css +0 -12
  486. package/es/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.min.css +1 -1
  487. package/es/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.scss +0 -11
  488. package/es/extensions/forms/Field/Selection/Selection.d.ts +0 -1
  489. package/es/extensions/forms/Field/Selection/Selection.js +2 -11
  490. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  491. package/es/extensions/forms/Field/String/String.d.ts +20 -9
  492. package/es/extensions/forms/Field/String/String.js +52 -31
  493. package/es/extensions/forms/Field/String/String.js.map +1 -1
  494. package/es/extensions/forms/Field/String/StringDocs.d.ts +2 -0
  495. package/es/extensions/forms/Field/String/StringDocs.js +99 -0
  496. package/es/extensions/forms/Field/String/StringDocs.js.map +1 -0
  497. package/es/extensions/forms/Field/Toggle/Toggle.js +1 -1
  498. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  499. package/es/extensions/forms/Field/index.d.ts +1 -0
  500. package/es/extensions/forms/Field/index.js +1 -0
  501. package/es/extensions/forms/Field/index.js.map +1 -1
  502. package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +8 -3
  503. package/es/extensions/forms/FieldBlock/FieldBlock.js +195 -58
  504. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  505. package/es/extensions/forms/FieldBlock/FieldBlockContext.d.ts +40 -6
  506. package/es/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  507. package/es/extensions/forms/FieldBlock/FieldBlockDocs.d.ts +2 -0
  508. package/es/extensions/forms/FieldBlock/FieldBlockDocs.js +53 -0
  509. package/es/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -0
  510. package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +27 -0
  511. package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  512. package/es/extensions/forms/FieldBlock/style/dnb-field-block.scss +26 -0
  513. package/es/extensions/forms/Form/Appearance/Appearance.d.ts +7 -0
  514. package/es/extensions/forms/Form/Appearance/Appearance.js +30 -0
  515. package/es/extensions/forms/Form/Appearance/Appearance.js.map +1 -0
  516. package/es/extensions/forms/Form/Appearance/AppearanceDocs.d.ts +2 -0
  517. package/es/extensions/forms/Form/Appearance/AppearanceDocs.js +8 -0
  518. package/es/extensions/forms/Form/Appearance/AppearanceDocs.js.map +1 -0
  519. package/es/extensions/forms/Form/Appearance/index.d.ts +2 -0
  520. package/es/extensions/forms/Form/Appearance/index.js +3 -0
  521. package/es/extensions/forms/Form/Appearance/index.js.map +1 -0
  522. package/es/extensions/forms/Form/data-context/useData.js +1 -1
  523. package/es/extensions/forms/Form/data-context/useData.js.map +1 -1
  524. package/es/extensions/forms/Form/index.d.ts +1 -0
  525. package/es/extensions/forms/Form/index.js +1 -0
  526. package/es/extensions/forms/Form/index.js.map +1 -1
  527. package/es/extensions/forms/Value/Currency/Currency.js +2 -2
  528. package/es/extensions/forms/Value/Currency/Currency.js.map +1 -1
  529. package/es/extensions/forms/Value/SummaryList/SummaryList.d.ts +7 -0
  530. package/es/extensions/forms/Value/SummaryList/SummaryList.js +26 -0
  531. package/es/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -0
  532. package/es/extensions/forms/Value/SummaryList/SummaryListContext.d.ts +7 -0
  533. package/es/extensions/forms/Value/SummaryList/SummaryListContext.js +4 -0
  534. package/es/extensions/forms/Value/SummaryList/SummaryListContext.js.map +1 -0
  535. package/es/extensions/forms/Value/SummaryList/index.d.ts +2 -0
  536. package/es/extensions/forms/Value/SummaryList/index.js +3 -0
  537. package/es/extensions/forms/Value/SummaryList/index.js.map +1 -0
  538. package/es/extensions/forms/Value/ValueDocs.d.ts +2 -0
  539. package/es/extensions/forms/Value/ValueDocs.js +33 -0
  540. package/es/extensions/forms/Value/ValueDocs.js.map +1 -0
  541. package/es/extensions/forms/Value/index.d.ts +1 -0
  542. package/es/extensions/forms/Value/index.js +1 -0
  543. package/es/extensions/forms/Value/index.js.map +1 -1
  544. package/es/extensions/forms/ValueBlock/ValueBlock.js +12 -4
  545. package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  546. package/es/extensions/forms/hooks/DataValueDocs.d.ts +3 -0
  547. package/es/extensions/forms/hooks/DataValueDocs.js +110 -0
  548. package/es/extensions/forms/hooks/DataValueDocs.js.map +1 -0
  549. package/es/extensions/forms/hooks/useDataValue.d.ts +6 -6
  550. package/es/extensions/forms/hooks/useDataValue.js +87 -18
  551. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  552. package/es/extensions/forms/hooks/useId.js +1 -1
  553. package/es/extensions/forms/hooks/useId.js.map +1 -1
  554. package/es/extensions/forms/hooks/useMountEffect.js +1 -1
  555. package/es/extensions/forms/hooks/useMountEffect.js.map +1 -1
  556. package/es/extensions/forms/hooks/useUnmountEffect.d.ts +4 -0
  557. package/es/extensions/forms/hooks/useUnmountEffect.js +9 -0
  558. package/es/extensions/forms/hooks/useUnmountEffect.js.map +1 -0
  559. package/es/extensions/forms/style/dnb-forms.css +37 -13
  560. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  561. package/es/extensions/forms/types.d.ts +4 -4
  562. package/es/extensions/forms/types.js.map +1 -1
  563. package/es/shared/Context.d.ts +2 -0
  564. package/es/shared/Context.js.map +1 -1
  565. package/es/shared/Eufemia.d.ts +1 -1
  566. package/es/shared/Eufemia.js +2 -2
  567. package/es/shared/Eufemia.js.map +1 -1
  568. package/es/shared/component-helper.d.ts +1 -0
  569. package/es/shared/component-helper.js +6 -0
  570. package/es/shared/component-helper.js.map +1 -1
  571. package/es/shared/helpers/filterValidProps.d.ts +2 -2
  572. package/es/shared/helpers/filterValidProps.js +2 -2
  573. package/es/shared/helpers/filterValidProps.js.map +1 -1
  574. package/es/shared/helpers/withCamelCaseProps.d.ts +7 -1
  575. package/es/shared/helpers/withCamelCaseProps.js.map +1 -1
  576. package/es/shared/locales/en-GB.d.ts +5 -3
  577. package/es/shared/locales/en-GB.js +7 -5
  578. package/es/shared/locales/en-GB.js.map +1 -1
  579. package/es/shared/locales/en-US.d.ts +5 -3
  580. package/es/shared/locales/index.d.ts +10 -6
  581. package/es/shared/locales/nb-NO.d.ts +5 -3
  582. package/es/shared/locales/nb-NO.js +7 -5
  583. package/es/shared/locales/nb-NO.js.map +1 -1
  584. package/es/shared/types.d.ts +5 -0
  585. package/es/shared/types.js.map +1 -1
  586. package/es/style/dnb-ui-components.css +277 -135
  587. package/es/style/dnb-ui-components.min.css +3 -3
  588. package/es/style/dnb-ui-elements.css +25 -5
  589. package/es/style/dnb-ui-elements.min.css +1 -1
  590. package/es/style/dnb-ui-extensions.css +37 -13
  591. package/es/style/dnb-ui-extensions.min.css +1 -1
  592. package/es/style/dnb-ui-forms.css +37 -13
  593. package/es/style/dnb-ui-forms.min.css +1 -1
  594. package/es/style/dnb-ui-forms.scss +1 -0
  595. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +25 -5
  596. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  597. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +331 -157
  598. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
  599. package/es/style/themes/theme-eiendom/eiendom-theme-elements.css +25 -5
  600. package/es/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  601. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +37 -13
  602. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  603. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +37 -13
  604. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  605. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +25 -5
  606. package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  607. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +341 -155
  608. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +4 -4
  609. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +25 -5
  610. package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  611. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +37 -13
  612. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  613. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +37 -13
  614. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  615. package/es/style/themes/theme-ui/ui-theme-basis.css +25 -5
  616. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  617. package/es/style/themes/theme-ui/ui-theme-components.css +331 -157
  618. package/es/style/themes/theme-ui/ui-theme-components.min.css +4 -4
  619. package/es/style/themes/theme-ui/ui-theme-elements.css +25 -5
  620. package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  621. package/es/style/themes/theme-ui/ui-theme-extensions.css +37 -13
  622. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  623. package/es/style/themes/theme-ui/ui-theme-forms.css +37 -13
  624. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  625. package/es/style/themes/theme-ui/ui-theme-tags.css +25 -5
  626. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  627. package/esm/dnb-ui-basis.min.mjs +1 -1
  628. package/esm/dnb-ui-components.min.mjs +1 -1
  629. package/esm/dnb-ui-elements.min.mjs +1 -1
  630. package/esm/dnb-ui-extensions.min.mjs +3 -3
  631. package/esm/dnb-ui-lib.min.mjs +1 -1
  632. package/extensions/forms/DataContext/Context.d.ts +1 -0
  633. package/extensions/forms/DataContext/Context.js.map +1 -1
  634. package/extensions/forms/DataContext/Provider/Provider.js +58 -40
  635. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  636. package/extensions/forms/Field/Currency/Currency.js +1 -1
  637. package/extensions/forms/Field/Currency/Currency.js.map +1 -1
  638. package/extensions/forms/Field/Expiry/Expiry.js +1 -0
  639. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  640. package/extensions/forms/Field/FieldDocs.d.ts +3 -0
  641. package/extensions/forms/Field/FieldDocs.js +8 -0
  642. package/extensions/forms/Field/FieldDocs.js.map +1 -0
  643. package/extensions/forms/Field/Number/Number.d.ts +1 -0
  644. package/extensions/forms/Field/Number/Number.js +13 -7
  645. package/extensions/forms/Field/Number/Number.js.map +1 -1
  646. package/extensions/forms/Field/Number/NumberDocs.d.ts +2 -0
  647. package/extensions/forms/Field/Number/NumberDocs.js +85 -0
  648. package/extensions/forms/Field/Number/NumberDocs.js.map +1 -0
  649. package/extensions/forms/Field/Number/style/dnb-number.css +3 -1
  650. package/extensions/forms/Field/Number/style/dnb-number.min.css +1 -1
  651. package/extensions/forms/Field/Number/style/dnb-number.scss +4 -1
  652. package/extensions/forms/Field/Password/Password.d.ts +45 -0
  653. package/extensions/forms/Field/Password/Password.js +99 -0
  654. package/extensions/forms/Field/Password/Password.js.map +1 -0
  655. package/extensions/forms/Field/Password/index.d.ts +2 -0
  656. package/extensions/forms/Field/Password/index.js +3 -0
  657. package/extensions/forms/Field/Password/index.js.map +1 -0
  658. package/extensions/forms/Field/Password/style/dnb-password.css +6 -0
  659. package/extensions/forms/Field/Password/style/dnb-password.min.css +1 -0
  660. package/extensions/forms/Field/Password/style/dnb-password.scss +10 -0
  661. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +4 -5
  662. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
  663. package/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.css +0 -12
  664. package/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.min.css +1 -1
  665. package/extensions/forms/Field/PostalCodeAndCity/style/dnb-postal-code-and-city.scss +0 -11
  666. package/extensions/forms/Field/Selection/Selection.d.ts +0 -1
  667. package/extensions/forms/Field/Selection/Selection.js +2 -11
  668. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  669. package/extensions/forms/Field/String/String.d.ts +20 -9
  670. package/extensions/forms/Field/String/String.js +52 -31
  671. package/extensions/forms/Field/String/String.js.map +1 -1
  672. package/extensions/forms/Field/String/StringDocs.d.ts +2 -0
  673. package/extensions/forms/Field/String/StringDocs.js +99 -0
  674. package/extensions/forms/Field/String/StringDocs.js.map +1 -0
  675. package/extensions/forms/Field/Toggle/Toggle.js +1 -1
  676. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  677. package/extensions/forms/Field/index.d.ts +1 -0
  678. package/extensions/forms/Field/index.js +1 -0
  679. package/extensions/forms/Field/index.js.map +1 -1
  680. package/extensions/forms/FieldBlock/FieldBlock.d.ts +8 -3
  681. package/extensions/forms/FieldBlock/FieldBlock.js +203 -64
  682. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  683. package/extensions/forms/FieldBlock/FieldBlockContext.d.ts +40 -6
  684. package/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  685. package/extensions/forms/FieldBlock/FieldBlockDocs.d.ts +2 -0
  686. package/extensions/forms/FieldBlock/FieldBlockDocs.js +53 -0
  687. package/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -0
  688. package/extensions/forms/FieldBlock/style/dnb-field-block.css +27 -0
  689. package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  690. package/extensions/forms/FieldBlock/style/dnb-field-block.scss +26 -0
  691. package/extensions/forms/Form/Appearance/Appearance.d.ts +7 -0
  692. package/extensions/forms/Form/Appearance/Appearance.js +30 -0
  693. package/extensions/forms/Form/Appearance/Appearance.js.map +1 -0
  694. package/extensions/forms/Form/Appearance/AppearanceDocs.d.ts +2 -0
  695. package/extensions/forms/Form/Appearance/AppearanceDocs.js +8 -0
  696. package/extensions/forms/Form/Appearance/AppearanceDocs.js.map +1 -0
  697. package/extensions/forms/Form/Appearance/index.d.ts +2 -0
  698. package/extensions/forms/Form/Appearance/index.js +3 -0
  699. package/extensions/forms/Form/Appearance/index.js.map +1 -0
  700. package/extensions/forms/Form/data-context/useData.js +1 -1
  701. package/extensions/forms/Form/data-context/useData.js.map +1 -1
  702. package/extensions/forms/Form/index.d.ts +1 -0
  703. package/extensions/forms/Form/index.js +1 -0
  704. package/extensions/forms/Form/index.js.map +1 -1
  705. package/extensions/forms/Value/Currency/Currency.js +2 -2
  706. package/extensions/forms/Value/Currency/Currency.js.map +1 -1
  707. package/extensions/forms/Value/SummaryList/SummaryList.d.ts +7 -0
  708. package/extensions/forms/Value/SummaryList/SummaryList.js +26 -0
  709. package/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -0
  710. package/extensions/forms/Value/SummaryList/SummaryListContext.d.ts +7 -0
  711. package/extensions/forms/Value/SummaryList/SummaryListContext.js +4 -0
  712. package/extensions/forms/Value/SummaryList/SummaryListContext.js.map +1 -0
  713. package/extensions/forms/Value/SummaryList/index.d.ts +2 -0
  714. package/extensions/forms/Value/SummaryList/index.js +3 -0
  715. package/extensions/forms/Value/SummaryList/index.js.map +1 -0
  716. package/extensions/forms/Value/ValueDocs.d.ts +2 -0
  717. package/extensions/forms/Value/ValueDocs.js +33 -0
  718. package/extensions/forms/Value/ValueDocs.js.map +1 -0
  719. package/extensions/forms/Value/index.d.ts +1 -0
  720. package/extensions/forms/Value/index.js +1 -0
  721. package/extensions/forms/Value/index.js.map +1 -1
  722. package/extensions/forms/ValueBlock/ValueBlock.js +12 -4
  723. package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  724. package/extensions/forms/hooks/DataValueDocs.d.ts +3 -0
  725. package/extensions/forms/hooks/DataValueDocs.js +110 -0
  726. package/extensions/forms/hooks/DataValueDocs.js.map +1 -0
  727. package/extensions/forms/hooks/useDataValue.d.ts +6 -6
  728. package/extensions/forms/hooks/useDataValue.js +87 -18
  729. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  730. package/extensions/forms/hooks/useId.js +1 -1
  731. package/extensions/forms/hooks/useId.js.map +1 -1
  732. package/extensions/forms/hooks/useMountEffect.js +1 -1
  733. package/extensions/forms/hooks/useMountEffect.js.map +1 -1
  734. package/extensions/forms/hooks/useUnmountEffect.d.ts +4 -0
  735. package/extensions/forms/hooks/useUnmountEffect.js +9 -0
  736. package/extensions/forms/hooks/useUnmountEffect.js.map +1 -0
  737. package/extensions/forms/style/dnb-forms.css +37 -13
  738. package/extensions/forms/style/dnb-forms.min.css +1 -1
  739. package/extensions/forms/types.d.ts +4 -4
  740. package/extensions/forms/types.js.map +1 -1
  741. package/package.json +1 -1
  742. package/shared/Context.d.ts +2 -0
  743. package/shared/Context.js.map +1 -1
  744. package/shared/Eufemia.d.ts +1 -1
  745. package/shared/Eufemia.js +2 -2
  746. package/shared/Eufemia.js.map +1 -1
  747. package/shared/component-helper.d.ts +1 -0
  748. package/shared/component-helper.js +9 -0
  749. package/shared/component-helper.js.map +1 -1
  750. package/shared/helpers/filterValidProps.d.ts +2 -2
  751. package/shared/helpers/filterValidProps.js +2 -2
  752. package/shared/helpers/filterValidProps.js.map +1 -1
  753. package/shared/helpers/withCamelCaseProps.d.ts +7 -1
  754. package/shared/helpers/withCamelCaseProps.js.map +1 -1
  755. package/shared/locales/en-GB.d.ts +5 -3
  756. package/shared/locales/en-GB.js +7 -5
  757. package/shared/locales/en-GB.js.map +1 -1
  758. package/shared/locales/en-US.d.ts +5 -3
  759. package/shared/locales/index.d.ts +10 -6
  760. package/shared/locales/nb-NO.d.ts +5 -3
  761. package/shared/locales/nb-NO.js +7 -5
  762. package/shared/locales/nb-NO.js.map +1 -1
  763. package/shared/types.d.ts +5 -0
  764. package/shared/types.js.map +1 -1
  765. package/style/dnb-ui-components.css +277 -135
  766. package/style/dnb-ui-components.min.css +3 -3
  767. package/style/dnb-ui-elements.css +25 -5
  768. package/style/dnb-ui-elements.min.css +1 -1
  769. package/style/dnb-ui-extensions.css +37 -13
  770. package/style/dnb-ui-extensions.min.css +1 -1
  771. package/style/dnb-ui-forms.css +37 -13
  772. package/style/dnb-ui-forms.min.css +1 -1
  773. package/style/dnb-ui-forms.scss +1 -0
  774. package/style/themes/theme-eiendom/eiendom-theme-basis.css +25 -5
  775. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  776. package/style/themes/theme-eiendom/eiendom-theme-components.css +331 -157
  777. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
  778. package/style/themes/theme-eiendom/eiendom-theme-elements.css +25 -5
  779. package/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  780. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +37 -13
  781. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  782. package/style/themes/theme-eiendom/eiendom-theme-forms.css +37 -13
  783. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  784. package/style/themes/theme-sbanken/sbanken-theme-basis.css +25 -5
  785. package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  786. package/style/themes/theme-sbanken/sbanken-theme-components.css +341 -155
  787. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +4 -4
  788. package/style/themes/theme-sbanken/sbanken-theme-elements.css +25 -5
  789. package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  790. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +37 -13
  791. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  792. package/style/themes/theme-sbanken/sbanken-theme-forms.css +37 -13
  793. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  794. package/style/themes/theme-ui/ui-theme-basis.css +25 -5
  795. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  796. package/style/themes/theme-ui/ui-theme-components.css +331 -157
  797. package/style/themes/theme-ui/ui-theme-components.min.css +4 -4
  798. package/style/themes/theme-ui/ui-theme-elements.css +25 -5
  799. package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  800. package/style/themes/theme-ui/ui-theme-extensions.css +37 -13
  801. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  802. package/style/themes/theme-ui/ui-theme-forms.css +37 -13
  803. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  804. package/style/themes/theme-ui/ui-theme-tags.css +25 -5
  805. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  806. package/umd/dnb-ui-basis.min.js +1 -1
  807. package/umd/dnb-ui-components.min.js +1 -1
  808. package/umd/dnb-ui-elements.min.js +1 -1
  809. package/umd/dnb-ui-extensions.min.js +3 -3
  810. package/umd/dnb-ui-lib.min.js +1 -1
@@ -4,14 +4,18 @@
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
7
+ exports.states = exports.default = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
- var _components = require("../../../components");
11
- var _types = require("../types");
10
+ var _Context = _interopRequireDefault(require("../../../shared/Context"));
12
11
  var _FieldBlockContext = _interopRequireDefault(require("./FieldBlockContext"));
12
+ var _components = require("../../../components");
13
+ var _elements = require("../../../elements");
13
14
  var _componentHelper = require("../../../shared/component-helper");
14
- const _excluded = ["className", "forId", "layout", "label", "labelDescription", "asFieldset", "info", "warning", "error", "disabled", "width", "contentWidth", "size", "contentClassName", "children"];
15
+ var _useId = _interopRequireDefault(require("../hooks/useId"));
16
+ var _types = require("../types");
17
+ var _useUnmountEffect = _interopRequireDefault(require("../hooks/useUnmountEffect"));
18
+ const _excluded = ["className", "forId", "layout", "composition", "label", "labelDescription", "asFieldset", "info", "warning", "error", "disabled", "width", "contentWidth", "labelSize", "contentClassName", "children"];
15
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
21
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -23,12 +27,15 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typ
23
27
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
24
28
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
25
29
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
30
+ const states = ['error', 'info', 'warning'];
31
+ exports.states = states;
26
32
  function FieldBlock(props) {
27
33
  const nestedFieldBlockContext = (0, _react.useContext)(_FieldBlockContext.default);
28
34
  const {
29
35
  className,
30
36
  forId,
31
37
  layout = 'vertical',
38
+ composition,
32
39
  label,
33
40
  labelDescription,
34
41
  asFieldset,
@@ -38,64 +45,177 @@ function FieldBlock(props) {
38
45
  disabled,
39
46
  width,
40
47
  contentWidth,
41
- size,
48
+ labelSize,
42
49
  contentClassName,
43
50
  children
44
51
  } = props,
45
52
  rest = _objectWithoutProperties(props, _excluded);
46
- const [fieldErrorRecord, setFieldErrorRecord] = (0, _react.useState)({});
47
- const [showFieldErrorRecord, setShowFieldErrorRecord] = (0, _react.useState)({});
48
- const setError = (0, _react.useCallback)((identifier, error) => {
53
+ const blockId = (0, _useId.default)(props.id);
54
+ const [wasUpdated, forceUpdate] = (0, _react.useReducer)(() => ({}), {});
55
+ const mountedFieldsRef = (0, _react.useRef)({});
56
+ const stateRecordRef = (0, _react.useRef)({});
57
+ const fieldStateIdsRef = (0, _react.useRef)(null);
58
+ const contentsRef = (0, _react.useRef)(null);
59
+ const hasInitiallyErrorProp = (0, _react.useMemo)(() => {
60
+ return Boolean(errorProp);
61
+ }, []);
62
+ const setInternalRecord = (0, _react.useCallback)(props => {
63
+ const {
64
+ stateId,
65
+ identifier,
66
+ type
67
+ } = props;
68
+ if (!stateRecordRef.current[identifier]) {
69
+ stateRecordRef.current[identifier] = [];
70
+ }
71
+ fieldStateIdsRef.current = {
72
+ error: null,
73
+ warning: null,
74
+ info: null
75
+ };
76
+ const existingIndex = stateRecordRef.current[identifier].findIndex(item => {
77
+ return item.stateId === stateId && item.type === type;
78
+ });
79
+ if (existingIndex > -1) {
80
+ stateRecordRef.current[identifier][existingIndex] = _objectSpread(_objectSpread({}, stateRecordRef.current[identifier][existingIndex]), props);
81
+ } else {
82
+ stateRecordRef.current[identifier].push(props);
83
+ }
84
+ }, []);
85
+ const setFieldState = (0, _react.useCallback)(props => {
49
86
  if (nestedFieldBlockContext) {
50
- nestedFieldBlockContext.setError(identifier, error);
87
+ nestedFieldBlockContext.setFieldState(props);
51
88
  return;
52
89
  }
53
- setFieldErrorRecord(existing => {
54
- if (error) {
55
- return _objectSpread(_objectSpread({}, existing), {}, {
56
- [identifier]: error
57
- });
58
- } else {
59
- const {
60
- [identifier]: removed
61
- } = existing,
62
- newRecord = _objectWithoutProperties(existing, [identifier].map(_toPropertyKey));
63
- return newRecord;
64
- }
65
- });
66
- }, [nestedFieldBlockContext]);
67
- const setShowError = (0, _react.useCallback)((identifier, show) => {
90
+ setInternalRecord(props);
91
+ forceUpdate();
92
+ }, [nestedFieldBlockContext, setInternalRecord]);
93
+ const showFieldError = (0, _react.useCallback)((identifier, show) => {
68
94
  if (nestedFieldBlockContext) {
69
- nestedFieldBlockContext.setShowError(identifier, show);
95
+ nestedFieldBlockContext.showFieldError(identifier, show);
70
96
  return;
71
97
  }
72
- setShowFieldErrorRecord(existing => {
73
- if (show) {
74
- return _objectSpread(_objectSpread({}, existing), {}, {
75
- [identifier]: true
98
+ if (stateRecordRef.current[identifier]) {
99
+ stateRecordRef.current[identifier] = stateRecordRef.current[identifier].map(item => {
100
+ if (item.showInitially) {
101
+ return item;
102
+ }
103
+ return _objectSpread(_objectSpread({}, item), {}, {
104
+ show
76
105
  });
77
- } else {
78
- const {
79
- [identifier]: removed
80
- } = existing,
81
- newRecord = _objectWithoutProperties(existing, [identifier].map(_toPropertyKey));
82
- return newRecord;
83
- }
84
- });
106
+ });
107
+ forceUpdate();
108
+ }
85
109
  }, [nestedFieldBlockContext]);
86
- const error = (0, _react.useMemo)(() => {
110
+ const statusContent = (0, _react.useMemo)(() => {
87
111
  if (errorProp) {
88
- return errorProp;
112
+ setInternalRecord({
113
+ identifier: blockId,
114
+ showInitially: hasInitiallyErrorProp,
115
+ type: 'error',
116
+ state: errorProp
117
+ });
89
118
  }
90
- const errors = Object.entries(fieldErrorRecord).filter(_ref => {
91
- let [identifier] = _ref;
92
- return showFieldErrorRecord[identifier] === true;
93
- }).map(_ref2 => {
94
- let [, error] = _ref2;
95
- return error;
96
- });
97
- return errors.length > 0 ? new Error(errors.map(error => error.message).join(' | ')) : undefined;
98
- }, [errorProp, fieldErrorRecord, showFieldErrorRecord]);
119
+ if (warning) {
120
+ setInternalRecord({
121
+ identifier: blockId,
122
+ showInitially: true,
123
+ type: 'warning',
124
+ state: warning
125
+ });
126
+ }
127
+ if (info) {
128
+ setInternalRecord({
129
+ identifier: blockId,
130
+ showInitially: true,
131
+ type: 'info',
132
+ state: info
133
+ });
134
+ }
135
+ const statesWithMessages = Object.entries(stateRecordRef.current).flatMap(_ref => {
136
+ let [identifier, states] = _ref;
137
+ return states.map(props => {
138
+ return _objectSpread({
139
+ identifier
140
+ }, props);
141
+ });
142
+ }).reduce((acc, cur) => {
143
+ const existing = acc.find(item => {
144
+ return item.type === cur.type;
145
+ });
146
+ const message = getMessage(cur);
147
+ if (existing) {
148
+ existing.messages.push(_objectSpread(_objectSpread({}, cur), {}, {
149
+ message
150
+ }));
151
+ } else {
152
+ acc.push(_objectSpread(_objectSpread({}, cur), {}, {
153
+ state: undefined,
154
+ messages: [_objectSpread(_objectSpread({}, cur), {}, {
155
+ message
156
+ })]
157
+ }));
158
+ }
159
+ return acc;
160
+ }, []);
161
+ return states.reduce((acc, type) => {
162
+ const id = `${props.id || forId || blockId}-form-status--${type}`;
163
+ acc[type] = {
164
+ id,
165
+ label,
166
+ state: type === 'warning' ? 'warn' : type,
167
+ width_element: contentsRef,
168
+ no_animation: process.env.NODE_ENV === 'test' ? true : typeof globalThis !== 'undefined' ? globalThis.IS_TEST === true : false
169
+ };
170
+ const found = statesWithMessages.find(item => {
171
+ return item.type === type;
172
+ });
173
+ if (found !== null && found !== void 0 && found.messages) {
174
+ const messages = found.messages.map(msg => {
175
+ if (msg.type === 'error') {
176
+ if (!msg.showInitially && !msg.show) {
177
+ msg.message = null;
178
+ }
179
+ }
180
+ return msg;
181
+ }).filter(_ref2 => {
182
+ let {
183
+ message
184
+ } = _ref2;
185
+ return message;
186
+ }).reduce((acc, msg, i, arr) => {
187
+ const existingIndex = arr.findIndex(item => {
188
+ return (0, _componentHelper.convertJsxToString)(item.message) === (0, _componentHelper.convertJsxToString)(msg.message);
189
+ });
190
+ if (existingIndex === i) {
191
+ acc.push(msg);
192
+ }
193
+ return acc;
194
+ }, []);
195
+ if (messages.length > 0) {
196
+ acc[type] = _objectSpread(_objectSpread({}, acc[type]), {}, {
197
+ text: _react.default.createElement(CombineMessages, {
198
+ type: type,
199
+ messages: messages
200
+ })
201
+ });
202
+ fieldStateIdsRef.current[type] = id;
203
+ } else {
204
+ fieldStateIdsRef.current[type] = undefined;
205
+ }
206
+ }
207
+ return acc;
208
+ }, {});
209
+ }, [info, warning, errorProp, nestedFieldBlockContext, setInternalRecord, blockId, wasUpdated]);
210
+ (0, _react.useEffect)(() => {
211
+ if (!nestedFieldBlockContext) {
212
+ showFieldError(blockId, Boolean(errorProp));
213
+ }
214
+ }, [errorProp, blockId, showFieldError, nestedFieldBlockContext]);
215
+ (0, _useUnmountEffect.default)(() => () => {
216
+ mountedFieldsRef.current = {};
217
+ stateRecordRef.current = {};
218
+ });
99
219
  const mainClasses = (0, _classnames.default)('dnb-forms-field-block', className, width !== undefined && `dnb-forms-field-block--width-${width}`);
100
220
  const gridClasses = `dnb-forms-field-block__grid dnb-forms-field-block--layout-${layout}`;
101
221
  const enableFieldset = useEnableFieldset({
@@ -104,8 +224,6 @@ function FieldBlock(props) {
104
224
  children,
105
225
  nestedFieldBlockContext
106
226
  });
107
- const state = error || warning || info;
108
- const stateStatus = error ? 'error' : warning ? 'warn' : info ? 'info' : null;
109
227
  const labelProps = {
110
228
  element: enableFieldset ? 'legend' : 'label',
111
229
  forId: enableFieldset ? undefined : forId,
@@ -113,13 +231,17 @@ function FieldBlock(props) {
113
231
  top: 0,
114
232
  bottom: 'x-small'
115
233
  },
116
- size,
234
+ size: labelSize,
117
235
  disabled
118
236
  };
119
237
  return _react.default.createElement(_FieldBlockContext.default.Provider, {
120
238
  value: {
121
- setError,
122
- setShowError
239
+ setFieldState,
240
+ showFieldError,
241
+ hasErrorProp: Boolean(errorProp),
242
+ fieldStateIdsRef,
243
+ mountedFieldsRef,
244
+ composition
123
245
  }
124
246
  }, _react.default.createElement(_components.Space, _extends({
125
247
  element: enableFieldset ? 'fieldset' : 'div',
@@ -131,16 +253,11 @@ function FieldBlock(props) {
131
253
  }, label || labelDescription ? _react.default.createElement(_components.FormLabel, labelProps, label, labelDescription && _react.default.createElement("span", {
132
254
  className: "dnb-forms-field-block__label-description"
133
255
  }, labelDescription)) : _react.default.createElement(_react.default.Fragment, null, "\xA0")) : label && _react.default.createElement(_components.FormLabel, labelProps, label), _react.default.createElement("div", {
134
- className: (0, _classnames.default)('dnb-forms-field-block__contents', contentClassName, contentWidth !== undefined && `dnb-forms-field-block__contents--width-${contentWidth}`)
135
- }, children), _react.default.createElement("div", {
136
256
  className: "dnb-forms-field-block__status"
137
- }, _react.default.createElement(_components.FormStatus, {
138
- state: stateStatus,
139
- id: forId ? `${forId}-form-status` : undefined,
140
- text: (error === null || error === void 0 ? void 0 : error.message) || state instanceof Error && state.message || state instanceof _types.FormError && state.message || (state === null || state === void 0 ? void 0 : state.toString()),
141
- label: label,
142
- no_animation: process.env.NODE_ENV === 'test' ? true : typeof globalThis !== 'undefined' ? globalThis.IS_TEST === true : false
143
- })))));
257
+ }, _react.default.createElement(_components.FormStatus, statusContent === null || statusContent === void 0 ? void 0 : statusContent.error), _react.default.createElement(_components.FormStatus, statusContent === null || statusContent === void 0 ? void 0 : statusContent.warning), _react.default.createElement(_components.FormStatus, statusContent === null || statusContent === void 0 ? void 0 : statusContent.info)), _react.default.createElement("div", {
258
+ className: (0, _classnames.default)('dnb-forms-field-block__contents', contentClassName, contentWidth !== undefined && `dnb-forms-field-block__contents--width-${contentWidth}`, composition !== undefined && `dnb-forms-field-block__contents__composition--${composition === true ? 'horizontal' : composition}`),
259
+ ref: contentsRef
260
+ }, children))));
144
261
  }
145
262
  function useEnableFieldset(_ref3) {
146
263
  let {
@@ -169,6 +286,31 @@ function useEnableFieldset(_ref3) {
169
286
  return Boolean(result);
170
287
  }, [asFieldset, children, label, nestedFieldBlockContext]);
171
288
  }
289
+ function CombineMessages(_ref4) {
290
+ let {
291
+ type,
292
+ messages
293
+ } = _ref4;
294
+ const sharedContext = (0, _react.useContext)(_Context.default);
295
+ const tr = sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms;
296
+ if (messages.length === 1) {
297
+ return _react.default.createElement(_react.default.Fragment, null, messages[0].message);
298
+ }
299
+ return _react.default.createElement(_react.default.Fragment, null, type === 'error' ? tr.fieldErrorSummary : tr.fieldStateSummary, _react.default.createElement(_elements.Ul, null, messages.map((_ref5, i) => {
300
+ let {
301
+ message
302
+ } = _ref5;
303
+ return _react.default.createElement(_elements.Li, {
304
+ key: i
305
+ }, message);
306
+ })));
307
+ }
308
+ function getMessage(item) {
309
+ const {
310
+ state
311
+ } = item;
312
+ return state instanceof Error && state.message || state instanceof _types.FormError && state.message || (state === null || state === void 0 ? void 0 : state.toString()) || state;
313
+ }
172
314
  FieldBlock._supportsSpacingProps = true;
173
315
  var _default = FieldBlock;
174
316
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"file":"FieldBlock.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_components","_types","_FieldBlockContext","_componentHelper","_excluded","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","FieldBlock","props","nestedFieldBlockContext","useContext","FieldBlockContext","className","forId","layout","label","labelDescription","asFieldset","info","warning","error","errorProp","disabled","width","contentWidth","size","contentClassName","children","rest","fieldErrorRecord","setFieldErrorRecord","useState","showFieldErrorRecord","setShowFieldErrorRecord","setError","useCallback","identifier","existing","removed","newRecord","map","setShowError","show","useMemo","errors","entries","_ref","_ref2","Error","message","join","mainClasses","classnames","gridClasses","enableFieldset","useEnableFieldset","state","stateStatus","labelProps","element","space","top","bottom","createElement","Provider","Space","FormLabel","Fragment","FormStatus","id","text","FormError","toString","no_animation","process","env","NODE_ENV","globalThis","IS_TEST","_ref3","result","count","findElementInChildren","child","_child$props","_child$type","type","Boolean","_supportsSpacingProps","_default","exports"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlock.tsx"],"sourcesContent":["import React, { useMemo, useContext, useState, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { Space, FormLabel, FormStatus } from '../../../components'\nimport { FormError, ComponentProps, FieldProps } from '../types'\nimport FieldBlockContext from './FieldBlockContext'\nimport { findElementInChildren } from '../../../shared/component-helper'\nimport type { FormLabelAllProps } from '../../../components/FormLabel'\n\nexport type Props = Pick<\n FieldProps,\n | keyof ComponentProps\n | 'layout'\n | 'label'\n | 'labelDescription'\n | 'info'\n | 'warning'\n | 'error'\n | 'disabled'\n> & {\n forId?: string\n contentClassName?: string\n children: React.ReactNode\n /** Use true if you have more than one form element */\n asFieldset?: boolean\n /** Width of outer block element */\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n /** Width of contents block, while label etc can be wider if space is available */\n contentWidth?: 'small' | 'medium' | 'large' | 'stretch'\n /** Typography size */\n size?: 'medium' | 'large'\n} & React.HTMLAttributes<HTMLDivElement>\n\nfunction FieldBlock(props: Props) {\n const nestedFieldBlockContext = useContext(FieldBlockContext)\n\n const {\n className,\n forId,\n layout = 'vertical',\n label,\n labelDescription,\n asFieldset,\n info,\n warning,\n error: errorProp,\n disabled,\n width,\n contentWidth,\n size,\n contentClassName,\n children,\n ...rest\n } = props\n\n const [fieldErrorRecord, setFieldErrorRecord] = useState<\n Record<string, FormError>\n >({})\n const [showFieldErrorRecord, setShowFieldErrorRecord] = useState<\n Record<string, boolean>\n >({})\n\n const setError = useCallback(\n (identifier, error) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.setError(identifier, error)\n return\n }\n\n setFieldErrorRecord((existing) => {\n if (error) {\n return {\n ...existing,\n [identifier]: error,\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [identifier]: removed, ...newRecord } = existing\n return newRecord\n }\n })\n },\n [nestedFieldBlockContext]\n )\n\n const setShowError = useCallback(\n (identifier, show) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.setShowError(identifier, show)\n return\n }\n\n setShowFieldErrorRecord((existing) => {\n if (show) {\n return {\n ...existing,\n [identifier]: true,\n }\n } else {\n const { [identifier]: removed, ...newRecord } = existing\n return newRecord\n }\n })\n },\n [nestedFieldBlockContext]\n )\n\n const error = useMemo(() => {\n if (errorProp) {\n return errorProp\n }\n const errors = Object.entries(fieldErrorRecord)\n .filter(([identifier]) => showFieldErrorRecord[identifier] === true)\n .map(([, error]) => error)\n return errors.length > 0\n ? new Error(errors.map((error) => error.message).join(' | '))\n : undefined\n }, [errorProp, fieldErrorRecord, showFieldErrorRecord])\n\n const mainClasses = classnames(\n 'dnb-forms-field-block',\n width !== undefined && `dnb-forms-field-block--width-${width}`,\n className\n )\n const gridClasses = classnames(\n 'dnb-forms-field-block__grid',\n `dnb-forms-field-block--layout-${layout}`\n )\n\n // A child component with a label was found, use fieldset/legend instead of div/label\n const enableFieldset = useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n })\n\n const state = error || warning || info\n const stateStatus = error\n ? 'error'\n : warning\n ? 'warn'\n : info\n ? 'info'\n : null\n\n const labelProps: FormLabelAllProps = {\n element: enableFieldset ? 'legend' : 'label',\n forId: enableFieldset ? undefined : forId,\n space: { top: 0, bottom: 'x-small' },\n size,\n disabled,\n }\n\n return (\n <FieldBlockContext.Provider\n value={{\n setError,\n setShowError,\n }}\n >\n <Space\n element={enableFieldset ? 'fieldset' : 'div'} // use fieldset and legend to enhance a11y\n className={mainClasses}\n {...rest}\n >\n <div className={gridClasses}>\n {labelDescription ? (\n <div className=\"dnb-forms-field-block__label\">\n {label || labelDescription ? (\n <FormLabel {...labelProps}>\n {label}\n {labelDescription && (\n <span className=\"dnb-forms-field-block__label-description\">\n {labelDescription}\n </span>\n )}\n </FormLabel>\n ) : (\n <>&nbsp;</>\n )}\n </div>\n ) : (\n label && <FormLabel {...labelProps}>{label}</FormLabel>\n )}\n\n <div\n className={classnames(\n 'dnb-forms-field-block__contents',\n contentWidth !== undefined &&\n `dnb-forms-field-block__contents--width-${contentWidth}`,\n contentClassName\n )}\n >\n {children}\n </div>\n\n <div className=\"dnb-forms-field-block__status\">\n <FormStatus\n state={stateStatus}\n id={forId ? `${forId}-form-status` : undefined}\n text={\n error?.message ||\n (state instanceof Error && state.message) ||\n (state instanceof FormError && state.message) ||\n state?.toString()\n }\n label={label as string}\n no_animation={\n process.env.NODE_ENV === 'test'\n ? true\n : // We may enable animation in the future\n typeof globalThis !== 'undefined'\n ? globalThis.IS_TEST === true\n : false\n }\n />\n </div>\n </div>\n </Space>\n </FieldBlockContext.Provider>\n )\n}\n\nfunction useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n}) {\n return useMemo(() => {\n if (asFieldset === false) {\n return false\n }\n\n let result = asFieldset\n\n if (label && !result && !nestedFieldBlockContext) {\n let count = 0\n\n findElementInChildren(children, (child: React.ReactElement) => {\n if (\n child?.props?.label ||\n child?.type?.['_formElement'] === true\n ) {\n count++\n }\n if (count > 1) {\n return (result = true)\n }\n })\n }\n\n return Boolean(result)\n }, [asFieldset, children, label, nestedFieldBlockContext])\n}\n\nFieldBlock._supportsSpacingProps = true\nexport default FieldBlock\n"],"mappings":"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"}
1
+ {"version":3,"file":"FieldBlock.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_Context","_FieldBlockContext","_components","_elements","_componentHelper","_useId","_types","_useUnmountEffect","_excluded","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","states","exports","FieldBlock","props","nestedFieldBlockContext","useContext","FieldBlockContext","className","forId","layout","composition","label","labelDescription","asFieldset","info","warning","error","errorProp","disabled","width","contentWidth","labelSize","contentClassName","children","rest","blockId","useId","id","wasUpdated","forceUpdate","useReducer","mountedFieldsRef","useRef","stateRecordRef","fieldStateIdsRef","contentsRef","hasInitiallyErrorProp","useMemo","Boolean","setInternalRecord","useCallback","stateId","identifier","type","current","existingIndex","findIndex","item","setFieldState","showFieldError","show","map","showInitially","statusContent","state","statesWithMessages","entries","flatMap","_ref","reduce","acc","cur","existing","find","message","getMessage","messages","width_element","no_animation","process","env","NODE_ENV","globalThis","IS_TEST","found","msg","_ref2","arr","convertJsxToString","text","createElement","CombineMessages","useEffect","useUnmountEffect","mainClasses","classnames","gridClasses","enableFieldset","useEnableFieldset","labelProps","element","space","top","bottom","size","Provider","hasErrorProp","Space","FormLabel","Fragment","FormStatus","ref","_ref3","result","count","findElementInChildren","child","_child$props","_child$type","_ref4","sharedContext","SharedContext","tr","translation","Forms","fieldErrorSummary","fieldStateSummary","Ul","_ref5","Li","Error","FormError","toString","_supportsSpacingProps","_default"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlock.tsx"],"sourcesContent":["import React, {\n useMemo,\n useContext,\n useCallback,\n useRef,\n useReducer,\n useEffect,\n} from 'react'\nimport classnames from 'classnames'\nimport SharedContext from '../../../shared/Context'\nimport FieldBlockContext, {\n StateWithMessage,\n StatesWithMessages,\n FieldErrorIdsRef,\n MountedFieldsRef,\n StateRecord,\n StateMessage,\n StateTypes,\n StatusContent,\n FieldBlockContextProps,\n} from './FieldBlockContext'\nimport { Identifier } from '../DataContext/Context'\nimport { Space, FormLabel, FormStatus } from '../../../components'\nimport { Ul, Li } from '../../../elements'\nimport {\n convertJsxToString,\n findElementInChildren,\n} from '../../../shared/component-helper'\nimport useId from '../hooks/useId'\nimport { ComponentProps, FieldProps, FormError } from '../types'\nimport type { FormLabelAllProps } from '../../../components/FormLabel'\nimport useUnmountEffect from '../hooks/useUnmountEffect'\n\nexport const states: Array<StateTypes> = ['error', 'info', 'warning']\n\nexport type Props = Pick<\n FieldProps,\n | keyof ComponentProps\n | 'layout'\n | 'label'\n | 'labelDescription'\n | 'info'\n | 'warning'\n | 'error'\n | 'disabled'\n> & {\n /** The id to link a element with */\n forId?: string\n /** Use true if you have more than one form element */\n asFieldset?: boolean\n /** Defines the layout of nested fields */\n composition?: FieldBlockContextProps['composition']\n /** Width of outer block element */\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n /** Width of contents block, while label etc can be wider if space is available */\n contentWidth?: 'small' | 'medium' | 'large' | 'stretch'\n contentClassName?: string\n /** Typography size */\n labelSize?: 'medium' | 'large'\n children: React.ReactNode\n} & React.HTMLAttributes<HTMLDivElement>\n\nfunction FieldBlock(props: Props) {\n const nestedFieldBlockContext = useContext(FieldBlockContext)\n\n const {\n className,\n forId,\n layout = 'vertical',\n composition,\n label,\n labelDescription,\n asFieldset,\n info,\n warning,\n error: errorProp,\n disabled,\n width,\n contentWidth,\n labelSize,\n contentClassName,\n children,\n ...rest\n } = props\n\n const blockId = useId(props.id)\n const [wasUpdated, forceUpdate] = useReducer(() => ({}), {})\n const mountedFieldsRef = useRef<MountedFieldsRef>({})\n const stateRecordRef = useRef<StateRecord>({})\n const fieldStateIdsRef = useRef<FieldErrorIdsRef>(null)\n const contentsRef = useRef<HTMLDivElement>(null)\n const hasInitiallyErrorProp = useMemo(() => {\n return Boolean(errorProp)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n const setInternalRecord = useCallback((props) => {\n const { stateId, identifier, type } = props\n\n if (!stateRecordRef.current[identifier]) {\n stateRecordRef.current[identifier] = []\n }\n\n fieldStateIdsRef.current = { error: null, warning: null, info: null }\n\n const existingIndex = stateRecordRef.current[identifier].findIndex(\n (item) => {\n return item.stateId === stateId && item.type === type\n }\n )\n\n if (existingIndex > -1) {\n stateRecordRef.current[identifier][existingIndex] = {\n ...stateRecordRef.current[identifier][existingIndex],\n ...props,\n }\n } else {\n stateRecordRef.current[identifier].push(props)\n }\n }, [])\n\n const setFieldState = useCallback(\n (props) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.setFieldState(props)\n return\n }\n\n setInternalRecord(props)\n\n forceUpdate()\n },\n [nestedFieldBlockContext, setInternalRecord]\n )\n\n const showFieldError = useCallback(\n (identifier: Identifier, show: boolean) => {\n if (nestedFieldBlockContext) {\n // If this FieldBlock is inside another one, forward the call to the outer one\n nestedFieldBlockContext.showFieldError(identifier, show)\n return\n }\n\n if (stateRecordRef.current[identifier]) {\n stateRecordRef.current[identifier] = stateRecordRef.current[\n identifier\n ].map((item) => {\n if (item.showInitially) {\n return item\n }\n\n return {\n ...item,\n show,\n }\n })\n\n forceUpdate()\n }\n },\n [nestedFieldBlockContext]\n )\n\n const statusContent = useMemo(() => {\n if (errorProp) {\n setInternalRecord({\n identifier: blockId,\n showInitially: hasInitiallyErrorProp,\n type: 'error',\n state: errorProp,\n })\n }\n\n if (warning) {\n setInternalRecord({\n identifier: blockId,\n showInitially: true,\n type: 'warning',\n state: warning,\n })\n }\n\n if (info) {\n setInternalRecord({\n identifier: blockId,\n showInitially: true,\n type: 'info',\n state: info,\n })\n }\n\n const statesWithMessages: Array<StatesWithMessages> =\n // 1. Prepare the states for later use\n Object.entries(stateRecordRef.current)\n .flatMap(([identifier, states]) =>\n states.map((props) => {\n return {\n identifier,\n ...props,\n }\n })\n )\n\n // 2. Take states and group the same type together\n .reduce((acc, cur) => {\n const existing = acc.find((item) => {\n return item.type === cur.type\n })\n\n const message = getMessage(cur)\n\n if (existing) {\n existing.messages.push({\n ...cur,\n message,\n })\n } else {\n acc.push({\n ...cur,\n state: undefined,\n messages: [\n {\n ...cur,\n message,\n },\n ],\n })\n }\n\n return acc\n }, [] as Array<StatesWithMessages>)\n\n // 3. Return the grouped states/messages\n return states.reduce((acc, type) => {\n const id = `${props.id || forId || blockId}-form-status--${type}`\n acc[type] = {\n id,\n label,\n state: type === 'warning' ? 'warn' : type,\n width_element: contentsRef,\n\n // Enable animation only in the browser and not in tests\n no_animation:\n process.env.NODE_ENV === 'test'\n ? true\n : typeof globalThis !== 'undefined'\n ? globalThis.IS_TEST === true\n : false,\n }\n\n const found = statesWithMessages.find((item) => {\n return item.type === type\n })\n\n if (found?.messages) {\n // Hide/remove messages that should be hidden and are not marked as to be shown initially\n const messages = found.messages\n .map((msg) => {\n if (msg.type === 'error') {\n if (!msg.showInitially && !msg.show) {\n msg.message = null\n }\n }\n\n return msg\n })\n .filter(({ message }) => message)\n .reduce((acc, msg, i, arr) => {\n const existingIndex = arr.findIndex((item) => {\n return (\n convertJsxToString(item.message) ===\n convertJsxToString(msg.message)\n )\n })\n\n // Remove duplicates, use the first found message\n if (existingIndex === i) {\n acc.push(msg)\n }\n\n return acc\n }, [])\n\n // Combine the messages and put them in an ul/li list\n if (messages.length > 0) {\n acc[type] = {\n ...acc[type],\n text: <CombineMessages type={type} messages={messages} />,\n }\n\n fieldStateIdsRef.current[type] = id\n } else {\n fieldStateIdsRef.current[type] = undefined\n }\n }\n\n return acc\n }, {}) as StatusContent\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n info,\n warning,\n errorProp,\n nestedFieldBlockContext,\n setInternalRecord,\n blockId,\n wasUpdated, // wasUpdated is needed to get the current errors\n ])\n\n // Handle the error prop from outside\n useEffect(() => {\n if (!nestedFieldBlockContext) {\n showFieldError(blockId, Boolean(errorProp))\n }\n }, [errorProp, blockId, showFieldError, nestedFieldBlockContext])\n\n useUnmountEffect(() => () => {\n mountedFieldsRef.current = {}\n stateRecordRef.current = {}\n })\n\n const mainClasses = classnames(\n 'dnb-forms-field-block',\n width !== undefined && `dnb-forms-field-block--width-${width}`,\n className\n )\n const gridClasses = classnames(\n 'dnb-forms-field-block__grid',\n `dnb-forms-field-block--layout-${layout}`\n )\n\n // A child component with a label was found, use fieldset/legend instead of div/label\n const enableFieldset = useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n })\n\n const labelProps: FormLabelAllProps = {\n element: enableFieldset ? 'legend' : 'label',\n forId: enableFieldset ? undefined : forId,\n space: { top: 0, bottom: 'x-small' },\n size: labelSize,\n disabled,\n }\n\n return (\n <FieldBlockContext.Provider\n value={{\n setFieldState,\n showFieldError,\n hasErrorProp: Boolean(errorProp),\n fieldStateIdsRef,\n mountedFieldsRef,\n composition,\n }}\n >\n <Space\n element={enableFieldset ? 'fieldset' : 'div'} // use fieldset and legend to enhance a11y\n className={mainClasses}\n {...rest}\n >\n <div className={gridClasses}>\n {labelDescription ? (\n <div className=\"dnb-forms-field-block__label\">\n {label || labelDescription ? (\n <FormLabel {...labelProps}>\n {label}\n {labelDescription && (\n <span className=\"dnb-forms-field-block__label-description\">\n {labelDescription}\n </span>\n )}\n </FormLabel>\n ) : (\n <>&nbsp;</>\n )}\n </div>\n ) : (\n label && <FormLabel {...labelProps}>{label}</FormLabel>\n )}\n\n <div className=\"dnb-forms-field-block__status\">\n <FormStatus {...statusContent?.error} />\n <FormStatus {...statusContent?.warning} />\n <FormStatus {...statusContent?.info} />\n </div>\n\n <div\n className={classnames(\n 'dnb-forms-field-block__contents',\n contentWidth !== undefined &&\n `dnb-forms-field-block__contents--width-${contentWidth}`,\n composition !== undefined &&\n `dnb-forms-field-block__contents__composition--${\n composition === true ? 'horizontal' : composition\n }`,\n contentClassName\n )}\n ref={contentsRef}\n >\n {children}\n </div>\n </div>\n </Space>\n </FieldBlockContext.Provider>\n )\n}\n\nfunction useEnableFieldset({\n label,\n asFieldset,\n children,\n nestedFieldBlockContext,\n}) {\n return useMemo(() => {\n if (asFieldset === false) {\n return false\n }\n\n let result = asFieldset\n\n if (label && !result && !nestedFieldBlockContext) {\n let count = 0\n\n findElementInChildren(children, (child: React.ReactElement) => {\n if (\n child?.props?.label ||\n child?.type?.['_formElement'] === true\n ) {\n count++\n }\n if (count > 1) {\n return (result = true)\n }\n })\n }\n\n return Boolean(result)\n }, [asFieldset, children, label, nestedFieldBlockContext])\n}\n\nfunction CombineMessages({\n type,\n messages,\n}: {\n type: StateTypes\n messages: Array<StateWithMessage>\n}) {\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\n if (messages.length === 1) {\n return <>{messages[0].message}</>\n }\n\n return (\n <>\n {type === 'error' ? tr.fieldErrorSummary : tr.fieldStateSummary}\n <Ul>\n {messages.map(({ message }, i) => {\n return <Li key={i}>{message}</Li>\n })}\n </Ul>\n </>\n )\n}\n\nfunction getMessage(item: Partial<StateWithMessage>): StateMessage {\n const { state } = item\n\n return ((state instanceof Error && state.message) ||\n (state instanceof FormError && state.message) ||\n state?.toString() ||\n state) as StateMessage\n}\n\nFieldBlock._supportsSpacingProps = true\n\nexport default FieldBlock\n"],"mappings":"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"}
@@ -1,8 +1,42 @@
1
1
  import React from 'react';
2
- import { FormError } from '../types';
3
- export interface FieldBlockContextState {
4
- setError?: (identifier: string, error: FormError) => void;
5
- setShowError?: (identifier: string, showError: boolean) => void;
6
- }
7
- declare const FieldBlockContext: React.Context<FieldBlockContextState>;
2
+ import { FieldProps } from '../types';
3
+ import type { Identifier } from '../DataContext/Context';
4
+ export type FieldErrorIdsRef = Record<StateTypes, string>;
5
+ export type MountedFieldsRef = Record<Identifier, boolean>;
6
+ export type StateTypes = 'error' | 'warning' | 'info';
7
+ export type StateContent = FieldProps<unknown>['error'] | FieldProps<unknown>['warning'] | FieldProps<unknown>['info'];
8
+ export type StateBasis = {
9
+ identifier: Identifier;
10
+ type: StateTypes;
11
+ state: StateContent;
12
+ stateId?: string;
13
+ showInitially?: boolean;
14
+ show?: boolean;
15
+ };
16
+ export type StateRecord = Record<Identifier, Array<Omit<StateBasis, 'identifier'>>>;
17
+ export type StateMessage = React.ReactNode;
18
+ export type StateWithMessage = StateBasis & {
19
+ message: StateMessage;
20
+ };
21
+ export type StatesWithMessages = StateBasis & {
22
+ messages: Array<StateWithMessage>;
23
+ };
24
+ export type StatusContentState = {
25
+ id: string;
26
+ text: React.ReactNode;
27
+ };
28
+ export type StatusContent = {
29
+ error: StatusContentState;
30
+ warning: StatusContentState;
31
+ info: StatusContentState;
32
+ };
33
+ export type FieldBlockContextProps = {
34
+ setFieldState?: ({ identifier, type, stateId, state, showInitially, show, }: StateBasis) => void;
35
+ showFieldError?: (identifier: Identifier, showError: boolean) => void;
36
+ hasErrorProp?: boolean;
37
+ composition?: true;
38
+ fieldStateIdsRef?: React.MutableRefObject<FieldErrorIdsRef>;
39
+ mountedFieldsRef?: React.MutableRefObject<MountedFieldsRef>;
40
+ };
41
+ declare const FieldBlockContext: React.Context<FieldBlockContextProps>;
8
42
  export default FieldBlockContext;
@@ -1 +1 @@
1
- {"version":3,"file":"FieldBlockContext.js","names":["_react","_interopRequireDefault","require","obj","__esModule","default","FieldBlockContext","React","createContext","undefined","_default","exports"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlockContext.ts"],"sourcesContent":["import React from 'react'\nimport { FormError } from '../types'\n\nexport interface FieldBlockContextState {\n setError?: (identifier: string, error: FormError) => void\n setShowError?: (identifier: string, showError: boolean) => void\n}\n\nconst FieldBlockContext = React.createContext<\n FieldBlockContextState | undefined\n>(undefined)\n\nexport default FieldBlockContext\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAyB,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAQzB,MAAMG,iBAAiB,GAAGC,cAAK,CAACC,aAAa,CAE3CC,SAAS,CAAC;AAAA,IAAAC,QAAA,GAEGJ,iBAAiB;AAAAK,OAAA,CAAAN,OAAA,GAAAK,QAAA"}
1
+ {"version":3,"file":"FieldBlockContext.js","names":["_react","_interopRequireDefault","require","obj","__esModule","default","FieldBlockContext","React","createContext","undefined","_default","exports"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlockContext.ts"],"sourcesContent":["import React from 'react'\nimport { FieldProps } from '../types'\nimport type { Identifier } from '../DataContext/Context'\n\nexport type FieldErrorIdsRef = Record<StateTypes, string>\nexport type MountedFieldsRef = Record<Identifier, boolean>\nexport type StateTypes = 'error' | 'warning' | 'info'\nexport type StateContent =\n | FieldProps<unknown>['error']\n | FieldProps<unknown>['warning']\n | FieldProps<unknown>['info']\nexport type StateBasis = {\n identifier: Identifier\n type: StateTypes\n state: StateContent\n stateId?: string\n showInitially?: boolean\n show?: boolean\n}\nexport type StateRecord = Record<\n Identifier,\n Array<Omit<StateBasis, 'identifier'>>\n>\nexport type StateMessage = React.ReactNode\nexport type StateWithMessage = StateBasis & {\n message: StateMessage\n}\nexport type StatesWithMessages = StateBasis & {\n messages: Array<StateWithMessage>\n}\nexport type StatusContentState = { id: string; text: React.ReactNode }\nexport type StatusContent = {\n error: StatusContentState\n warning: StatusContentState\n info: StatusContentState\n}\n\nexport type FieldBlockContextProps = {\n setFieldState?: ({\n identifier,\n type,\n stateId,\n state,\n showInitially,\n show,\n }: StateBasis) => void\n showFieldError?: (identifier: Identifier, showError: boolean) => void\n hasErrorProp?: boolean\n composition?: true\n fieldStateIdsRef?: React.MutableRefObject<FieldErrorIdsRef>\n mountedFieldsRef?: React.MutableRefObject<MountedFieldsRef>\n}\n\nconst FieldBlockContext = React.createContext<\n FieldBlockContextProps | undefined\n>(undefined)\n\nexport default FieldBlockContext\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAyB,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAqDzB,MAAMG,iBAAiB,GAAGC,cAAK,CAACC,aAAa,CAE3CC,SAAS,CAAC;AAAA,IAAAC,QAAA,GAEGJ,iBAAiB;AAAAK,OAAA,CAAAN,OAAA,GAAAK,QAAA"}
@@ -0,0 +1,2 @@
1
+ import { PropertiesTableProps } from '../../../shared/types';
2
+ export declare const fieldBlockProperties: PropertiesTableProps;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.fieldBlockProperties = void 0;
7
+ const fieldBlockProperties = {
8
+ label: {
9
+ doc: 'Field label to show above / before the input feature.',
10
+ type: 'string',
11
+ status: 'optional'
12
+ },
13
+ labelDescription: {
14
+ doc: 'A more discreet text displayed beside the label (i.e for "(optional)").',
15
+ type: 'string',
16
+ status: 'optional'
17
+ },
18
+ labelSize: {
19
+ doc: 'Define one of the following [heading size](/uilib/elements/heading/): `medium` or `large`.',
20
+ type: ['string', 'false'],
21
+ status: 'optional'
22
+ },
23
+ layout: {
24
+ doc: 'Layout for the label and input. Can be `horizontal` or `vertical`.',
25
+ type: 'string',
26
+ status: 'optional'
27
+ },
28
+ width: {
29
+ doc: '`small`, `medium`, `large`, `stretch` or `false` for predefined standard widths.',
30
+ type: ['string', 'false'],
31
+ status: 'optional'
32
+ },
33
+ contentWidth: {
34
+ doc: '`small`, `medium`, `large`, `stretch` or `false` for predefined standard widths.',
35
+ type: ['string', 'false'],
36
+ status: 'optional'
37
+ },
38
+ composition: {
39
+ doc: 'Use `true` for when you have more than one field wrapped.',
40
+ type: 'string',
41
+ status: 'optional'
42
+ },
43
+ asFieldset: {
44
+ doc: 'Use `true` when you have several form elements. This way a `fieldset` with a `legend` is used.',
45
+ type: 'boolean',
46
+ status: 'optional'
47
+ },
48
+ disabled: {
49
+ doc: 'Set `true` to make the inner [FormLabel](/uilib/components/form-label/) behave as disabled.',
50
+ type: 'boolean',
51
+ status: 'optional'
52
+ },
53
+ '[Space](/uilib/layout/space/properties)': {
54
+ doc: 'Spacing properties like `top` or `bottom` are supported.',
55
+ type: ['string', 'object'],
56
+ status: 'optional'
57
+ }
58
+ };
59
+ exports.fieldBlockProperties = fieldBlockProperties;
60
+ //# sourceMappingURL=FieldBlockDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldBlockDocs.js","names":["fieldBlockProperties","label","doc","type","status","labelDescription","labelSize","layout","width","contentWidth","composition","asFieldset","disabled","exports"],"sources":["../../../../../src/extensions/forms/FieldBlock/FieldBlockDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../shared/types'\n\nexport const fieldBlockProperties: PropertiesTableProps = {\n label: {\n doc: 'Field label to show above / before the input feature.',\n type: 'string',\n status: 'optional',\n },\n labelDescription: {\n doc: 'A more discreet text displayed beside the label (i.e for \"(optional)\").',\n type: 'string',\n status: 'optional',\n },\n labelSize: {\n doc: 'Define one of the following [heading size](/uilib/elements/heading/): `medium` or `large`.',\n type: ['string', 'false'],\n status: 'optional',\n },\n layout: {\n doc: 'Layout for the label and input. Can be `horizontal` or `vertical`.',\n type: 'string',\n status: 'optional',\n },\n width: {\n doc: '`small`, `medium`, `large`, `stretch` or `false` for predefined standard widths.',\n type: ['string', 'false'],\n status: 'optional',\n },\n contentWidth: {\n doc: '`small`, `medium`, `large`, `stretch` or `false` for predefined standard widths.',\n type: ['string', 'false'],\n status: 'optional',\n },\n composition: {\n doc: 'Use `true` for when you have more than one field wrapped.',\n type: 'string',\n status: 'optional',\n },\n asFieldset: {\n doc: 'Use `true` when you have several form elements. This way a `fieldset` with a `legend` is used.',\n type: 'boolean',\n status: 'optional',\n },\n disabled: {\n doc: 'Set `true` to make the inner [FormLabel](/uilib/components/form-label/) behave as disabled.',\n type: 'boolean',\n status: 'optional',\n },\n '[Space](/uilib/layout/space/properties)': {\n doc: 'Spacing properties like `top` or `bottom` are supported.',\n type: ['string', 'object'],\n status: 'optional',\n },\n}\n"],"mappings":";;;;;;AAEO,MAAMA,oBAA0C,GAAG;EACxDC,KAAK,EAAE;IACLC,GAAG,EAAE,uDAAuD;IAC5DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,gBAAgB,EAAE;IAChBH,GAAG,EAAE,yEAAyE;IAC9EC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,SAAS,EAAE;IACTJ,GAAG,EAAE,4FAA4F;IACjGC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDG,MAAM,EAAE;IACNL,GAAG,EAAE,oEAAoE;IACzEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,KAAK,EAAE;IACLN,GAAG,EAAE,kFAAkF;IACvFC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDK,YAAY,EAAE;IACZP,GAAG,EAAE,kFAAkF;IACvFC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDM,WAAW,EAAE;IACXR,GAAG,EAAE,2DAA2D;IAChEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDO,UAAU,EAAE;IACVT,GAAG,EAAE,gGAAgG;IACrGC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDQ,QAAQ,EAAE;IACRV,GAAG,EAAE,6FAA6F;IAClGC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACD,yCAAyC,EAAE;IACzCF,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1BC,MAAM,EAAE;EACV;AACF,CAAC;AAAAS,OAAA,CAAAb,oBAAA,GAAAA,oBAAA"}
@@ -84,6 +84,11 @@ fieldset.dnb-forms-field-block:not([class*=space__left]) {
84
84
  .dnb-forms-field-block__status .dnb-form-status__shell {
85
85
  margin-top: 0.5rem;
86
86
  }
87
+ @media screen and (max-width: 15em) {
88
+ .dnb-forms-field-block__status {
89
+ width: 90%;
90
+ }
91
+ }
87
92
  .dnb-forms-field-block__contents {
88
93
  grid-area: contents;
89
94
  width: 100%;
@@ -101,4 +106,26 @@ fieldset.dnb-forms-field-block:not([class*=space__left]) {
101
106
  .dnb-forms-field-block__contents--width-large {
102
107
  width: var(--forms-field-width--large);
103
108
  }
109
+ }
110
+ .dnb-forms-field-block__contents__composition--vertical {
111
+ display: flex;
112
+ flex-flow: column;
113
+ row-gap: var(--spacing-small);
114
+ }
115
+ .dnb-forms-field-block__contents__composition--horizontal {
116
+ display: flex;
117
+ flex-flow: row;
118
+ -moz-column-gap: var(--spacing-small);
119
+ column-gap: var(--spacing-small);
120
+ }
121
+ @media screen and (min-width: 25em) {
122
+ .dnb-forms-field-block__contents__composition--horizontal {
123
+ align-items: flex-end;
124
+ }
125
+ }
126
+ @media screen and (max-width: 25em) {
127
+ .dnb-forms-field-block__contents__composition--horizontal {
128
+ row-gap: var(--spacing-x-small);
129
+ flex-flow: column;
130
+ }
104
131
  }