@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
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { Ajv } from '../utils/ajv';
3
3
  import { AllJSONSchemaVersions, CustomErrorMessagesWithPaths } from '../types';
4
4
  export type Path = string;
5
+ export type Identifier = string;
5
6
  type HandleSubmitProps = {
6
7
  formElement?: HTMLFormElement;
7
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Context.js","names":["React","makeAjvInstance","defaultContextState","hasContext","data","undefined","schema","handlePathChange","updateDataValue","validateData","handleSubmit","scrollToTop","showAllErrors","setShowAllErrors","mountedFieldPaths","handleMountField","handleUnMountField","hasErrors","hasFieldError","setValueWithError","setProps","ajvInstance","contextErrorMessages","_isInsideFormElement","Context","createContext"],"sources":["../../../../../src/extensions/forms/DataContext/Context.ts"],"sourcesContent":["import React from 'react'\nimport { Ajv, makeAjvInstance } from '../utils/ajv'\nimport {\n AllJSONSchemaVersions,\n CustomErrorMessagesWithPaths,\n} from '../types'\n\nexport type Path = string\n\ntype HandleSubmitProps = {\n formElement?: HTMLFormElement\n}\n\nexport interface ContextState {\n hasContext: boolean\n /** The dataset for the form / form steps */\n data: any\n /** Should the form validate data before submitting? */\n errors?: Record<string, Error>\n /** Will set autoComplete=\"on\" on each nested Field.String and Field.Number */\n autoComplete?: boolean\n handlePathChange: (path: Path, value: any) => void\n updateDataValue: (\n path: Path,\n value: any,\n props: { disabled: boolean }\n ) => void\n validateData: () => void\n handleSubmit: (props?: HandleSubmitProps) => any\n scrollToTop: () => void\n // Error status\n showAllErrors: boolean\n setShowAllErrors: (showAllErrors: boolean) => void\n // Mounted fields - Components telling the provider what fields is on screen at any time\n mountedFieldPaths: string[]\n handleMountField: (path: Path) => void\n handleUnMountField: (path: Path) => void\n setValueWithError: (path: Path, hasError: boolean) => void\n setProps: (path: Path, props: any) => void\n hasErrors: () => boolean\n hasFieldError: (path: Path) => boolean\n ajvInstance: Ajv\n contextErrorMessages: CustomErrorMessagesWithPaths\n schema: AllJSONSchemaVersions\n _isInsideFormElement?: boolean\n}\n\nexport const defaultContextState: ContextState = {\n hasContext: false,\n data: undefined,\n schema: undefined,\n handlePathChange: () => null,\n updateDataValue: () => null,\n validateData: () => null,\n handleSubmit: () => null,\n scrollToTop: () => null,\n showAllErrors: false,\n setShowAllErrors: () => null,\n mountedFieldPaths: [],\n handleMountField: () => null,\n handleUnMountField: () => null,\n hasErrors: () => false,\n hasFieldError: () => false,\n setValueWithError: () => null,\n setProps: () => null,\n ajvInstance: makeAjvInstance(),\n contextErrorMessages: undefined,\n _isInsideFormElement: false,\n}\n\nconst Context = React.createContext<ContextState>(defaultContextState)\n\nexport default Context\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAcC,eAAe,QAAQ,cAAc;AA8CnD,OAAO,MAAMC,mBAAiC,GAAG;EAC/CC,UAAU,EAAE,KAAK;EACjBC,IAAI,EAAEC,SAAS;EACfC,MAAM,EAAED,SAAS;EACjBE,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,eAAe,EAAEA,CAAA,KAAM,IAAI;EAC3BC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,WAAW,EAAEA,CAAA,KAAM,IAAI;EACvBC,aAAa,EAAE,KAAK;EACpBC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,iBAAiB,EAAE,EAAE;EACrBC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,kBAAkB,EAAEA,CAAA,KAAM,IAAI;EAC9BC,SAAS,EAAEA,CAAA,KAAM,KAAK;EACtBC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,iBAAiB,EAAEA,CAAA,KAAM,IAAI;EAC7BC,QAAQ,EAAEA,CAAA,KAAM,IAAI;EACpBC,WAAW,EAAEpB,eAAe,CAAC,CAAC;EAC9BqB,oBAAoB,EAAEjB,SAAS;EAC/BkB,oBAAoB,EAAE;AACxB,CAAC;AAED,MAAMC,OAAO,GAAGxB,KAAK,CAACyB,aAAa,CAAevB,mBAAmB,CAAC;AAEtE,eAAesB,OAAO"}
1
+ {"version":3,"file":"Context.js","names":["React","makeAjvInstance","defaultContextState","hasContext","data","undefined","schema","handlePathChange","updateDataValue","validateData","handleSubmit","scrollToTop","showAllErrors","setShowAllErrors","mountedFieldPaths","handleMountField","handleUnMountField","hasErrors","hasFieldError","setValueWithError","setProps","ajvInstance","contextErrorMessages","_isInsideFormElement","Context","createContext"],"sources":["../../../../../src/extensions/forms/DataContext/Context.ts"],"sourcesContent":["import React from 'react'\nimport { Ajv, makeAjvInstance } from '../utils/ajv'\nimport {\n AllJSONSchemaVersions,\n CustomErrorMessagesWithPaths,\n} from '../types'\n\nexport type Path = string\nexport type Identifier = string\n\ntype HandleSubmitProps = {\n formElement?: HTMLFormElement\n}\n\nexport interface ContextState {\n hasContext: boolean\n /** The dataset for the form / form steps */\n data: any\n /** Should the form validate data before submitting? */\n errors?: Record<string, Error>\n /** Will set autoComplete=\"on\" on each nested Field.String and Field.Number */\n autoComplete?: boolean\n handlePathChange: (path: Path, value: any) => void\n updateDataValue: (\n path: Path,\n value: any,\n props: { disabled: boolean }\n ) => void\n validateData: () => void\n handleSubmit: (props?: HandleSubmitProps) => any\n scrollToTop: () => void\n // Error status\n showAllErrors: boolean\n setShowAllErrors: (showAllErrors: boolean) => void\n // Mounted fields - Components telling the provider what fields is on screen at any time\n mountedFieldPaths: string[]\n handleMountField: (path: Path) => void\n handleUnMountField: (path: Path) => void\n setValueWithError: (path: Path, hasError: boolean) => void\n setProps: (path: Path, props: any) => void\n hasErrors: () => boolean\n hasFieldError: (path: Path) => boolean\n ajvInstance: Ajv\n contextErrorMessages: CustomErrorMessagesWithPaths\n schema: AllJSONSchemaVersions\n _isInsideFormElement?: boolean\n}\n\nexport const defaultContextState: ContextState = {\n hasContext: false,\n data: undefined,\n schema: undefined,\n handlePathChange: () => null,\n updateDataValue: () => null,\n validateData: () => null,\n handleSubmit: () => null,\n scrollToTop: () => null,\n showAllErrors: false,\n setShowAllErrors: () => null,\n mountedFieldPaths: [],\n handleMountField: () => null,\n handleUnMountField: () => null,\n hasErrors: () => false,\n hasFieldError: () => false,\n setValueWithError: () => null,\n setProps: () => null,\n ajvInstance: makeAjvInstance(),\n contextErrorMessages: undefined,\n _isInsideFormElement: false,\n}\n\nconst Context = React.createContext<ContextState>(defaultContextState)\n\nexport default Context\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAcC,eAAe,QAAQ,cAAc;AA+CnD,OAAO,MAAMC,mBAAiC,GAAG;EAC/CC,UAAU,EAAE,KAAK;EACjBC,IAAI,EAAEC,SAAS;EACfC,MAAM,EAAED,SAAS;EACjBE,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,eAAe,EAAEA,CAAA,KAAM,IAAI;EAC3BC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,WAAW,EAAEA,CAAA,KAAM,IAAI;EACvBC,aAAa,EAAE,KAAK;EACpBC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,iBAAiB,EAAE,EAAE;EACrBC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,kBAAkB,EAAEA,CAAA,KAAM,IAAI;EAC9BC,SAAS,EAAEA,CAAA,KAAM,KAAK;EACtBC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,iBAAiB,EAAEA,CAAA,KAAM,IAAI;EAC7BC,QAAQ,EAAEA,CAAA,KAAM,IAAI;EACpBC,WAAW,EAAEpB,eAAe,CAAC,CAAC;EAC9BqB,oBAAoB,EAAEjB,SAAS;EAC/BkB,oBAAoB,EAAE;AACxB,CAAC;AAED,MAAMC,OAAO,GAAGxB,KAAK,CAACyB,aAAa,CAAevB,mBAAmB,CAAC;AAEtE,eAAesB,OAAO"}
@@ -14,15 +14,9 @@ import { useSharedState } from '../../../../shared/helpers/useSharedState';
14
14
  import Context from '../Context';
15
15
  import structuredClone from '@ungap/structured-clone';
16
16
  const useLayoutEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;
17
- function addListPath(paths, path) {
18
- return paths.includes(path) ? paths : paths.concat(path);
19
- }
20
- function removeListPath(paths, path) {
21
- return paths.filter(thisPath => thisPath !== path);
22
- }
23
17
  const isArrayJsonPointer = /^\/\d+(\/|$)/;
24
18
  export default function Provider(_ref) {
25
- var _sharedAtachments$dat;
19
+ var _sharedAttachments$da;
26
20
  let {
27
21
  id,
28
22
  defaultData,
@@ -64,12 +58,8 @@ export default function Provider(_ref) {
64
58
  return data !== null && data !== void 0 ? data : defaultData;
65
59
  }, []);
66
60
  const internalDataRef = useRef(initialData);
67
- const cacheRef = useRef({
68
- data,
69
- schema
70
- });
71
61
  const ajvValidatorRef = useRef();
72
- const validateData = useCallback(() => {
62
+ const validateDataNow = useCallback(() => {
73
63
  var _ajvValidatorRef$curr;
74
64
  if (!ajvValidatorRef.current) {
75
65
  return;
@@ -79,13 +69,21 @@ export default function Provider(_ref) {
79
69
  } else {
80
70
  errorsRef.current = undefined;
81
71
  }
82
- forceUpdate();
83
72
  }, []);
73
+ const validateData = useCallback(() => {
74
+ if (!ajvValidatorRef.current) {
75
+ return;
76
+ }
77
+ validateDataNow();
78
+ forceUpdate();
79
+ }, [validateDataNow]);
84
80
  const hasFieldError = useCallback(path => {
85
81
  var _errorsRef$current;
86
82
  return Boolean(((_errorsRef$current = errorsRef.current) === null || _errorsRef$current === void 0 ? void 0 : _errorsRef$current[path]) !== undefined || valuesWithErrorRef.current.includes(path));
87
83
  }, []);
88
- const hasErrors = useCallback(() => Boolean(mountedFieldPathsRef.current.find(mountedFieldPath => hasFieldError(mountedFieldPath))), [hasFieldError]);
84
+ const hasErrors = useCallback(() => {
85
+ return Boolean(mountedFieldPathsRef.current.find(path => hasFieldError(path)));
86
+ }, [hasFieldError]);
89
87
  const setValueWithError = useCallback((path, withError) => {
90
88
  if (withError !== valuesWithErrorRef.current.includes(path)) {
91
89
  valuesWithErrorRef.current = withError ? addListPath(valuesWithErrorRef.current, path) : removeListPath(valuesWithErrorRef.current, path);
@@ -113,29 +111,52 @@ export default function Provider(_ref) {
113
111
  fieldPropsRef.current[path] = props;
114
112
  }, []);
115
113
  const sharedData = useSharedState(id);
116
- const sharedAtachments = useSharedState(id + '-attachments');
114
+ const sharedAttachments = useSharedState(id + '-attachments');
117
115
  const updateSharedData = sharedData.update;
118
116
  const extendSharedData = sharedData.extend;
119
- const extendAtachment = sharedAtachments.extend;
120
- const rerenderUseDataHook = (_sharedAtachments$dat = sharedAtachments.data) === null || _sharedAtachments$dat === void 0 ? void 0 : _sharedAtachments$dat.rerenderUseDataHook;
121
- useMemo(() => {
122
- if (id && sharedData.data && !initialData) {
123
- internalDataRef.current = sharedData.data;
117
+ const extendAttachment = sharedAttachments.extend;
118
+ const rerenderUseDataHook = (_sharedAttachments$da = sharedAttachments.data) === null || _sharedAttachments$da === void 0 ? void 0 : _sharedAttachments$da.rerenderUseDataHook;
119
+ const cacheRef = useRef({
120
+ data,
121
+ schema,
122
+ shared: sharedData.data,
123
+ hasUsedInitialData: false
124
+ });
125
+ const countRef = useRef(0);
126
+ if (countRef.current++ > 100) {
127
+ throw new Error('countRef.current: ' + countRef.current);
128
+ }
129
+ internalDataRef.current = useMemo(() => {
130
+ if (id && initialData && !sharedData.data) {
131
+ sharedData.update(initialData);
132
+ }
133
+ if (id && initialData && sharedData.data && cacheRef.current.shared === sharedData.data && internalDataRef.current === initialData) {
134
+ return _objectSpread(_objectSpread({}, internalDataRef.current), sharedData.data);
124
135
  }
125
- }, [id, initialData, sharedData.data]);
136
+ if (id && !initialData && !internalDataRef.current && sharedData.data && cacheRef.current.shared === sharedData.data) {
137
+ return sharedData.data;
138
+ }
139
+ if (id && sharedData.data && cacheRef.current.shared !== sharedData.data && sharedData.data !== internalDataRef.current) {
140
+ cacheRef.current.shared = sharedData.data;
141
+ return _objectSpread(_objectSpread({}, internalDataRef.current), sharedData.data);
142
+ }
143
+ if (data !== cacheRef.current.data) {
144
+ cacheRef.current.data = data;
145
+ return data;
146
+ }
147
+ return internalDataRef.current;
148
+ }, [id, data, initialData, sharedData]);
126
149
  useLayoutEffect(() => {
127
- if (id && !sharedData.data && initialData) {
150
+ if (id && initialData && !sharedData.data) {
128
151
  extendSharedData === null || extendSharedData === void 0 ? void 0 : extendSharedData(initialData);
129
152
  }
130
153
  }, [id, initialData, extendSharedData, sharedData.data]);
131
- useLayoutEffect(() => {
132
- if (id && sharedData.data && sharedData.data !== internalDataRef.current) {
133
- internalDataRef.current = sharedData.data;
134
- }
135
- }, [id, sharedData.data]);
154
+ useMemo(() => {
155
+ validateDataNow();
156
+ }, [internalDataRef.current]);
136
157
  useLayoutEffect(() => {
137
158
  if (id) {
138
- extendAtachment === null || extendAtachment === void 0 ? void 0 : extendAtachment({
159
+ extendAttachment === null || extendAttachment === void 0 ? void 0 : extendAttachment({
139
160
  filterDataHandler,
140
161
  hasErrors
141
162
  });
@@ -143,7 +164,7 @@ export default function Provider(_ref) {
143
164
  rerenderUseDataHook === null || rerenderUseDataHook === void 0 ? void 0 : rerenderUseDataHook();
144
165
  }
145
166
  }
146
- }, [filterData, filterDataHandler, rerenderUseDataHook, hasErrors, id, extendAtachment]);
167
+ }, [filterData, filterDataHandler, rerenderUseDataHook, hasErrors, id, extendAttachment]);
147
168
  const updateDataValue = useCallback((path, value) => {
148
169
  var _internalDataRef$curr;
149
170
  if (!path) {
@@ -242,23 +263,14 @@ export default function Provider(_ref) {
242
263
  validateData();
243
264
  });
244
265
  useUpdateEffect(() => {
245
- let hadChanges = false;
246
- if (data !== cacheRef.current.data) {
247
- internalDataRef.current = data;
248
- hadChanges = true;
249
- cacheRef.current.data = data;
250
- }
251
266
  if (schema && schema !== cacheRef.current.schema) {
252
267
  var _ajvRef$current2;
253
- ajvValidatorRef.current = (_ajvRef$current2 = ajvRef.current) === null || _ajvRef$current2 === void 0 ? void 0 : _ajvRef$current2.compile(schema);
254
- hadChanges = true;
255
268
  cacheRef.current.schema = schema;
256
- }
257
- if (hadChanges) {
269
+ ajvValidatorRef.current = (_ajvRef$current2 = ajvRef.current) === null || _ajvRef$current2 === void 0 ? void 0 : _ajvRef$current2.compile(schema);
258
270
  validateData();
259
271
  forceUpdate();
260
272
  }
261
- }, [data, schema, validateData, forceUpdate]);
273
+ }, [schema, validateData, forceUpdate]);
262
274
  return React.createElement(Context.Provider, {
263
275
  value: _objectSpread(_objectSpread({
264
276
  hasContext: true,
@@ -285,4 +297,10 @@ export default function Provider(_ref) {
285
297
  })
286
298
  }, children);
287
299
  }
300
+ function addListPath(paths, path) {
301
+ return paths.includes(path) ? paths : paths.concat(path);
302
+ }
303
+ function removeListPath(paths, path) {
304
+ return paths.filter(thisPath => thisPath !== path);
305
+ }
288
306
  //# sourceMappingURL=Provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.js","names":["React","useRef","useMemo","useCallback","useReducer","pointer","makeAjvInstance","ajvErrorsToFormErrors","useMountEffect","useUpdateEffect","useSharedState","Context","structuredClone","useLayoutEffect","window","useEffect","addListPath","paths","path","includes","concat","removeListPath","filter","thisPath","isArrayJsonPointer","Provider","_ref","_sharedAtachments$dat","id","defaultData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","scrollTopOnSubmit","sessionStorageId","ajvInstance","filterData","errorMessages","contextErrorMessages","children","rest","_objectWithoutProperties","_excluded","forceUpdate","undefined","console","error","ajvRef","mountedFieldPathsRef","errorsRef","showAllErrorsRef","setShowAllErrors","showAllErrors","current","valuesWithErrorRef","initialData","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","internalDataRef","cacheRef","ajvValidatorRef","validateData","_ajvValidatorRef$curr","call","errors","hasFieldError","_errorsRef$current","Boolean","hasErrors","find","mountedFieldPath","setValueWithError","withError","filterDataHandler","arguments","length","filtered","_objectSpread","Object","entries","fieldPropsRef","forEach","_ref2","props","exists","has","result","get","remove","setProps","sharedData","sharedAtachments","updateSharedData","update","extendSharedData","extend","extendAtachment","rerenderUseDataHook","updateDataValue","value","_internalDataRef$curr","givenData","match","newData","e","set","_window$sessionStorag2","setItem","stringify","handlePathChange","handleMountField","handleUnMountField","_fieldPropsRef$curren","scrollToTop","_window","_window$scrollTo","scrollTo","top","behavior","handleSubmit","formElement","resetForm","_formElement$reset","reset","removeItem","clearData","_ajvRef$current","compile","hadChanges","_ajvRef$current2","createElement","hasContext","mountedFieldPaths"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/Provider.tsx"],"sourcesContent":["import React, { useRef, useMemo, useCallback, useReducer } from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { ValidateFunction } from 'ajv/dist/2020'\nimport {\n Ajv,\n makeAjvInstance,\n ajvErrorsToFormErrors,\n} from '../../utils/ajv'\nimport {\n FormError,\n CustomErrorMessagesWithPaths,\n AllJSONSchemaVersions,\n FieldProps,\n} from '../../types'\nimport useMountEffect from '../../hooks/useMountEffect'\nimport useUpdateEffect from '../../hooks/useUpdateEffect'\nimport { useSharedState } from '../../../../shared/helpers/useSharedState'\nimport Context, { ContextState, Path } from '../Context'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So its a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport type UpdateDataValue = (path: Path, data: unknown) => void\n\nexport type FilterDataHandler<Data> = (\n data: Data,\n filter: FilterData\n) => Partial<Data>\nexport type FilterData = (\n path: Path,\n value: any,\n props: FieldProps\n) => boolean | undefined\n\nexport type OnSubmitReturn = {\n /** Will remove browser-side stored autocomplete data */\n resetForm: () => void\n /** Will empty the whole internal data set of the form */\n clearData: () => void\n}\n\nexport type OnSubmit<Data = JsonObject> = (\n data: Partial<Data>,\n { resetForm, clearData }: OnSubmitReturn\n) => void\n\nexport interface Props<Data extends JsonObject> {\n /**\n * Unique ID to communicate with the hook Form.useData\n */\n id?: string\n /**\n * Default source data, only used if no other source is available, and not leading to updates if changed after mount\n */\n defaultData?: Partial<Data>\n /**\n * Source data, will be used instead of defaultData, and leading to updates if changed after mount\n */\n data?: Partial<Data>\n /**\n * JSON Schema to validate the data against.\n */\n schema?: AllJSONSchemaVersions\n /**\n * Custom Ajv instance, if you want to use your own\n */\n ajvInstance?: Ajv\n /**\n * Custom error messages for the whole data set\n */\n errorMessages?: CustomErrorMessagesWithPaths\n /**\n * Filter the internal data context based on your criteria: `(path, value, props) => !props?.disabled`. It will iterate on each data entry.\n */\n filterData?: FilterData\n /**\n * Change handler for the whole data set\n */\n onChange?: (data: Data) => void\n /**\n * Change handler for each value\n */\n onPathChange?: (path: Path, value: any) => void\n /**\n * Submit called, data was valid (if validation available)\n */\n onSubmit?: OnSubmit\n /**\n * Submit was requested, but data was invalid\n */\n onSubmitRequest?: () => void\n /**\n * Scroll to top on submit\n */\n scrollTopOnSubmit?: boolean\n /**\n * Key for caching the data in session storage\n */\n sessionStorageId?: string\n children: React.ReactNode\n}\n\ntype PathList = string[]\n\nfunction addListPath(paths: PathList, path: Path): PathList {\n return paths.includes(path) ? paths : paths.concat(path)\n}\n\nfunction removeListPath(paths: PathList, path: Path): PathList {\n return paths.filter((thisPath) => thisPath !== path)\n}\n\nconst isArrayJsonPointer = /^\\/\\d+(\\/|$)/\n\nexport default function Provider<Data extends JsonObject>({\n id,\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n scrollTopOnSubmit,\n sessionStorageId,\n ajvInstance,\n filterData,\n errorMessages: contextErrorMessages,\n children,\n ...rest\n}: Props<Data>) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n // Prop error handling\n if (data !== undefined && sessionStorageId !== undefined) {\n console.error(\n 'Providing both data and sessionStorageId could lead to competing data sources. To provide default data to use only before anything is changed in the interface, use defaultData.'\n )\n }\n\n // - Ajv\n const ajvRef = useRef<Ajv>(makeAjvInstance(ajvInstance))\n // - Paths\n const mountedFieldPathsRef = useRef<string[]>([])\n // - Errors from provider validation (the whole data set)\n const errorsRef = useRef<Record<string, FormError> | undefined>()\n const showAllErrorsRef = useRef<boolean>(false)\n const setShowAllErrors = useCallback((showAllErrors: boolean) => {\n showAllErrorsRef.current = showAllErrors\n forceUpdate()\n }, [])\n\n // - Errors reported by fields, based on their direct validation rules\n const valuesWithErrorRef = useRef<string[]>([])\n\n // - Data\n const initialData = useMemo(() => {\n if (sessionStorageId && typeof window !== 'undefined') {\n const sessionDataJSON =\n window.sessionStorage?.getItem(sessionStorageId)\n if (sessionDataJSON) {\n return JSON.parse(sessionDataJSON)\n }\n }\n return data ?? defaultData\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Avoid triggering code that should only run initially\n }, [])\n const internalDataRef = useRef<Partial<Data>>(initialData)\n const cacheRef = useRef({ data, schema })\n\n // - Validator\n const ajvValidatorRef = useRef<ValidateFunction>()\n\n const validateData = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n if (!ajvValidatorRef.current?.(internalDataRef.current)) {\n // Errors found\n errorsRef.current = ajvErrorsToFormErrors(\n ajvValidatorRef.current.errors\n )\n } else {\n errorsRef.current = undefined\n }\n\n forceUpdate()\n }, [])\n\n // - Error handling\n const hasFieldError = useCallback(\n (path: string) =>\n Boolean(\n errorsRef.current?.[path] !== undefined ||\n valuesWithErrorRef.current.includes(path)\n ),\n []\n )\n const hasErrors = useCallback(\n () =>\n Boolean(\n mountedFieldPathsRef.current.find((mountedFieldPath) =>\n hasFieldError(mountedFieldPath)\n )\n ),\n [hasFieldError]\n )\n\n /**\n * Sets the error state for a specific path\n */\n const setValueWithError = useCallback(\n (path: Path, withError: boolean) => {\n if (withError !== valuesWithErrorRef.current.includes(path)) {\n // The boolean error state for the target value was changed\n valuesWithErrorRef.current = withError\n ? addListPath(valuesWithErrorRef.current, path)\n : removeListPath(valuesWithErrorRef.current, path)\n forceUpdate()\n }\n },\n []\n )\n\n /**\n * Filter the data set based on the filterData function\n */\n const filterDataHandler = useCallback(\n (data: Data, filter = filterData) => {\n if (filter) {\n const filtered = { ...data }\n Object.entries(fieldPropsRef.current).forEach(([path, props]) => {\n const exists = pointer.has(data, path)\n const result = filter(\n path,\n exists ? pointer.get(data, path) : undefined,\n props\n )\n if (result === false && exists) {\n pointer.remove(filtered, path)\n }\n })\n\n return filtered\n }\n\n return data\n },\n [filterData]\n )\n const fieldPropsRef = useRef<Record<string, FieldProps>>({})\n const setProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n fieldPropsRef.current[path] = props\n },\n []\n )\n\n // - Shared state\n const sharedData = useSharedState<Data>(id)\n const sharedAtachments = useSharedState<{\n filterDataHandler?: Props<Data>['filterData']\n hasErrors?: () => boolean\n rerenderUseDataHook?: () => void\n }>(id + '-attachments')\n\n const updateSharedData = sharedData.update\n const extendSharedData = sharedData.extend\n const extendAtachment = sharedAtachments.extend\n const rerenderUseDataHook = sharedAtachments.data?.rerenderUseDataHook\n\n useMemo(() => {\n // Update the internal data set, if the shared state changes\n if (id && sharedData.data && !initialData) {\n internalDataRef.current = sharedData.data\n }\n }, [id, initialData, sharedData.data])\n\n useLayoutEffect(() => {\n // Update the shared state, if initialData is given\n if (id && !sharedData.data && initialData) {\n extendSharedData?.(initialData)\n }\n }, [id, initialData, extendSharedData, sharedData.data])\n\n useLayoutEffect(() => {\n // If the shared state changes, update the internal data set\n if (\n id &&\n sharedData.data &&\n sharedData.data !== internalDataRef.current\n ) {\n internalDataRef.current = sharedData.data\n }\n }, [id, sharedData.data])\n\n useLayoutEffect(() => {\n if (id) {\n extendAtachment?.({ filterDataHandler, hasErrors })\n if (filterData) {\n rerenderUseDataHook?.()\n }\n }\n }, [\n filterData,\n filterDataHandler,\n rerenderUseDataHook,\n hasErrors,\n id,\n extendAtachment,\n ])\n\n /**\n * Update the data set\n */\n const updateDataValue: UpdateDataValue = useCallback(\n (path, value) => {\n if (!path) {\n return\n }\n\n const givenData = (\n path === '/'\n ? // When setting the root of the data, the whole data set should be the new value\n value\n : // For sub paths, use the the existing data set (or empty array/object), but modify it below (since pointer.set is not immutable)\n internalDataRef.current ??\n (path.match(isArrayJsonPointer) ? [] : {})\n ) as Data\n\n let newData: Data = null\n try {\n // Update the data even if it contains errors. Submit/SubmitRequest will be called accordingly\n newData = structuredClone(givenData)\n } catch (e) {\n newData = givenData\n }\n\n if (path !== '/') {\n pointer.set(newData, path, value)\n }\n\n if (id) {\n updateSharedData?.(newData)\n if (filterData) {\n rerenderUseDataHook?.()\n }\n }\n\n internalDataRef.current = newData\n\n if (sessionStorageId && typeof window !== 'undefined') {\n window.sessionStorage?.setItem(\n sessionStorageId,\n JSON.stringify(newData)\n )\n }\n\n forceUpdate()\n\n return newData\n },\n [\n filterData,\n id,\n sessionStorageId,\n rerenderUseDataHook,\n updateSharedData,\n ]\n )\n\n /**\n * Update the data set on user interaction\n */\n const handlePathChange: UpdateDataValue = useCallback(\n (path, value) => {\n if (!path) {\n return\n }\n\n onPathChange?.(path, value)\n\n const newData = updateDataValue(path, value)\n\n onChange?.(newData as Data)\n\n showAllErrorsRef.current = false\n\n validateData()\n },\n [onPathChange, updateDataValue, onChange, validateData]\n )\n\n // - Mounted fields\n const handleMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = addListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n const handleUnMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = removeListPath(\n mountedFieldPathsRef.current,\n path\n )\n if (fieldPropsRef.current?.[path]) {\n delete fieldPropsRef.current[path]\n }\n }, [])\n\n // - Features\n const scrollToTop = useCallback(() => {\n if (typeof window !== 'undefined') {\n window?.scrollTo?.({ top: 0, behavior: 'smooth' })\n }\n }, [])\n\n /**\n * Request to submit the whole form\n */\n const handleSubmit = useCallback<ContextState['handleSubmit']>(\n ({ formElement = null } = {}) => {\n if (!hasErrors()) {\n const resetForm = () => {\n formElement?.reset?.()\n\n if (typeof window !== 'undefined') {\n if (sessionStorageId) {\n window.sessionStorage.removeItem(sessionStorageId)\n }\n }\n\n forceUpdate() // in order to fill \"empty fields\" again with their internal states\n }\n const clearData = () => {\n internalDataRef.current = {}\n forceUpdate()\n }\n\n onSubmit?.(filterDataHandler(internalDataRef.current as Data), {\n resetForm,\n clearData,\n })\n\n if (scrollTopOnSubmit) {\n scrollToTop()\n }\n } else {\n setShowAllErrors(true)\n onSubmitRequest?.()\n }\n\n return internalDataRef.current\n },\n [\n hasErrors,\n onSubmit,\n filterDataHandler,\n scrollTopOnSubmit,\n sessionStorageId,\n scrollToTop,\n setShowAllErrors,\n onSubmitRequest,\n ]\n )\n\n // - ajv validator routines\n\n useMountEffect(() => {\n if (schema) {\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n }\n\n // Validate the initial data\n validateData()\n })\n\n useUpdateEffect(() => {\n let hadChanges = false\n\n // Update and validate changes to the external data set,\n // And avoid \"resetting\" the data with the originally given data (React.StrictMode)\n if (data !== cacheRef.current.data) {\n internalDataRef.current = data\n\n hadChanges = true\n cacheRef.current.data = data\n }\n\n if (schema && schema !== cacheRef.current.schema) {\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n\n hadChanges = true\n cacheRef.current.schema = schema\n }\n\n if (hadChanges) {\n validateData()\n forceUpdate()\n }\n }, [data, schema, validateData, forceUpdate])\n\n return (\n <Context.Provider\n value={{\n hasContext: true,\n data: internalDataRef.current,\n ...rest,\n handlePathChange,\n updateDataValue,\n validateData,\n handleSubmit,\n scrollToTop,\n errors: errorsRef.current,\n showAllErrors: showAllErrorsRef.current,\n setShowAllErrors,\n mountedFieldPaths: mountedFieldPathsRef.current,\n handleMountField,\n handleUnMountField,\n hasErrors,\n hasFieldError,\n setValueWithError,\n setProps,\n ajvInstance: ajvRef.current,\n schema,\n contextErrorMessages,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Provider.js","names":["React","useRef","useMemo","useCallback","useReducer","pointer","makeAjvInstance","ajvErrorsToFormErrors","useMountEffect","useUpdateEffect","useSharedState","Context","structuredClone","useLayoutEffect","window","useEffect","isArrayJsonPointer","Provider","_ref","_sharedAttachments$da","id","defaultData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","scrollTopOnSubmit","sessionStorageId","ajvInstance","filterData","errorMessages","contextErrorMessages","children","rest","_objectWithoutProperties","_excluded","forceUpdate","undefined","console","error","ajvRef","mountedFieldPathsRef","errorsRef","showAllErrorsRef","setShowAllErrors","showAllErrors","current","valuesWithErrorRef","initialData","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","internalDataRef","ajvValidatorRef","validateDataNow","_ajvValidatorRef$curr","call","errors","validateData","hasFieldError","path","_errorsRef$current","Boolean","includes","hasErrors","find","setValueWithError","withError","addListPath","removeListPath","filterDataHandler","filter","arguments","length","filtered","_objectSpread","Object","entries","fieldPropsRef","forEach","_ref2","props","exists","has","result","get","remove","setProps","sharedData","sharedAttachments","updateSharedData","update","extendSharedData","extend","extendAttachment","rerenderUseDataHook","cacheRef","shared","hasUsedInitialData","countRef","Error","updateDataValue","value","_internalDataRef$curr","givenData","match","newData","e","set","_window$sessionStorag2","setItem","stringify","handlePathChange","handleMountField","handleUnMountField","_fieldPropsRef$curren","scrollToTop","_window","_window$scrollTo","scrollTo","top","behavior","handleSubmit","formElement","resetForm","_formElement$reset","reset","removeItem","clearData","_ajvRef$current","compile","_ajvRef$current2","createElement","hasContext","mountedFieldPaths","paths","concat","thisPath"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/Provider.tsx"],"sourcesContent":["import React, { useRef, useMemo, useCallback, useReducer } from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { ValidateFunction } from 'ajv/dist/2020'\nimport {\n Ajv,\n makeAjvInstance,\n ajvErrorsToFormErrors,\n} from '../../utils/ajv'\nimport {\n FormError,\n CustomErrorMessagesWithPaths,\n AllJSONSchemaVersions,\n FieldProps,\n} from '../../types'\nimport useMountEffect from '../../hooks/useMountEffect'\nimport useUpdateEffect from '../../hooks/useUpdateEffect'\nimport { useSharedState } from '../../../../shared/helpers/useSharedState'\nimport Context, { ContextState, Path } from '../Context'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So its a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport type UpdateDataValue = (path: Path, data: unknown) => void\n\nexport type FilterDataHandler<Data> = (\n data: Data,\n filter: FilterData\n) => Partial<Data>\nexport type FilterData = (\n path: Path,\n value: any,\n props: FieldProps\n) => boolean | undefined\n\nexport type OnSubmitReturn = {\n /** Will remove browser-side stored autocomplete data */\n resetForm: () => void\n /** Will empty the whole internal data set of the form */\n clearData: () => void\n}\n\nexport type OnSubmit<Data = JsonObject> = (\n data: Partial<Data>,\n { resetForm, clearData }: OnSubmitReturn\n) => void\n\nexport interface Props<Data extends JsonObject> {\n /**\n * Unique ID to communicate with the hook Form.useData\n */\n id?: string\n /**\n * Default source data, only used if no other source is available, and not leading to updates if changed after mount\n */\n defaultData?: Partial<Data>\n /**\n * Source data, will be used instead of defaultData, and leading to updates if changed after mount\n */\n data?: Partial<Data>\n /**\n * JSON Schema to validate the data against.\n */\n schema?: AllJSONSchemaVersions\n /**\n * Custom Ajv instance, if you want to use your own\n */\n ajvInstance?: Ajv\n /**\n * Custom error messages for the whole data set\n */\n errorMessages?: CustomErrorMessagesWithPaths\n /**\n * Filter the internal data context based on your criteria: `(path, value, props) => !props?.disabled`. It will iterate on each data entry.\n */\n filterData?: FilterData\n /**\n * Change handler for the whole data set\n */\n onChange?: (data: Data) => void\n /**\n * Change handler for each value\n */\n onPathChange?: (path: Path, value: any) => void\n /**\n * Submit called, data was valid (if validation available)\n */\n onSubmit?: OnSubmit\n /**\n * Submit was requested, but data was invalid\n */\n onSubmitRequest?: () => void\n /**\n * Scroll to top on submit\n */\n scrollTopOnSubmit?: boolean\n /**\n * Key for caching the data in session storage\n */\n sessionStorageId?: string\n children: React.ReactNode\n}\n\nconst isArrayJsonPointer = /^\\/\\d+(\\/|$)/\n\nexport default function Provider<Data extends JsonObject>({\n id,\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n scrollTopOnSubmit,\n sessionStorageId,\n ajvInstance,\n filterData,\n errorMessages: contextErrorMessages,\n children,\n ...rest\n}: Props<Data>) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n // Prop error handling\n if (data !== undefined && sessionStorageId !== undefined) {\n console.error(\n 'Providing both data and sessionStorageId could lead to competing data sources. To provide default data to use only before anything is changed in the interface, use defaultData.'\n )\n }\n\n // - Ajv\n const ajvRef = useRef<Ajv>(makeAjvInstance(ajvInstance))\n // - Paths\n const mountedFieldPathsRef = useRef<Path[]>([])\n // - Errors from provider validation (the whole data set)\n const errorsRef = useRef<Record<string, FormError> | undefined>()\n const showAllErrorsRef = useRef<boolean>(false)\n const setShowAllErrors = useCallback((showAllErrors: boolean) => {\n showAllErrorsRef.current = showAllErrors\n forceUpdate()\n }, [])\n\n // - Errors reported by fields, based on their direct validation rules\n const valuesWithErrorRef = useRef<Path[]>([])\n\n // - Data\n const initialData = useMemo<Data>(() => {\n if (sessionStorageId && typeof window !== 'undefined') {\n const sessionDataJSON =\n window.sessionStorage?.getItem(sessionStorageId)\n if (sessionDataJSON) {\n return JSON.parse(sessionDataJSON)\n }\n }\n return data ?? defaultData\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Avoid triggering code that should only run initially\n }, [])\n const internalDataRef = useRef<Partial<Data>>(initialData)\n\n // - Validator\n const ajvValidatorRef = useRef<ValidateFunction>()\n const validateDataNow = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n if (!ajvValidatorRef.current?.(internalDataRef.current)) {\n // Errors found\n errorsRef.current = ajvErrorsToFormErrors(\n ajvValidatorRef.current.errors\n )\n } else {\n errorsRef.current = undefined\n }\n }, [])\n const validateData = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n validateDataNow()\n forceUpdate()\n }, [validateDataNow])\n\n // - Error handling\n const hasFieldError = useCallback((path: Path) => {\n return Boolean(\n errorsRef.current?.[path] !== undefined ||\n valuesWithErrorRef.current.includes(path)\n )\n }, [])\n const hasErrors = useCallback(() => {\n return Boolean(\n mountedFieldPathsRef.current.find((path) => hasFieldError(path))\n )\n }, [hasFieldError])\n\n /**\n * Sets the error state for a specific path\n */\n const setValueWithError = useCallback(\n (path: Path, withError: boolean) => {\n if (withError !== valuesWithErrorRef.current.includes(path)) {\n // The boolean error state for the target value was changed\n valuesWithErrorRef.current = withError\n ? addListPath(valuesWithErrorRef.current, path)\n : removeListPath(valuesWithErrorRef.current, path)\n forceUpdate()\n }\n },\n []\n )\n\n /**\n * Filter the data set based on the filterData function\n */\n const filterDataHandler = useCallback(\n (data: Data, filter = filterData) => {\n if (filter) {\n const filtered = { ...data }\n Object.entries(fieldPropsRef.current).forEach(([path, props]) => {\n const exists = pointer.has(data, path)\n const result = filter(\n path,\n exists ? pointer.get(data, path) : undefined,\n props\n )\n if (result === false && exists) {\n pointer.remove(filtered, path)\n }\n })\n\n return filtered\n }\n\n return data\n },\n [filterData]\n )\n const fieldPropsRef = useRef<Record<string, FieldProps>>({})\n const setProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n fieldPropsRef.current[path] = props\n },\n []\n )\n\n // - Shared state\n const sharedData = useSharedState<Data>(id)\n const sharedAttachments = useSharedState<{\n filterDataHandler?: Props<Data>['filterData']\n hasErrors?: () => boolean\n rerenderUseDataHook?: () => void\n }>(id + '-attachments')\n\n const updateSharedData = sharedData.update\n const extendSharedData = sharedData.extend\n const extendAttachment = sharedAttachments.extend\n const rerenderUseDataHook = sharedAttachments.data?.rerenderUseDataHook\n\n const cacheRef = useRef({\n data,\n schema,\n shared: sharedData.data,\n hasUsedInitialData: false,\n })\n\n const countRef = useRef(0)\n if (countRef.current++ > 100) {\n throw new Error('countRef.current: ' + countRef.current)\n }\n\n internalDataRef.current = useMemo(() => {\n // Update the shared state, if initialData is given and no shared state is available\n if (id && initialData && !sharedData.data) {\n sharedData.update(initialData)\n }\n\n // Merge both internal data and the shared state, if it both where given\n if (\n id &&\n initialData &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data &&\n internalDataRef.current === initialData\n ) {\n return {\n ...internalDataRef.current,\n ...sharedData.data,\n }\n }\n\n // Use shared state if no initial and initial data, and the shared state exists\n if (\n id &&\n !initialData &&\n !internalDataRef.current &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data\n ) {\n return sharedData.data\n }\n\n // Merge the internal data with the shared state, if the shared was updated and not the same as internal data\n if (\n id &&\n sharedData.data &&\n cacheRef.current.shared !== sharedData.data &&\n sharedData.data !== internalDataRef.current\n ) {\n cacheRef.current.shared = sharedData.data\n return {\n ...internalDataRef.current,\n ...sharedData.data,\n }\n }\n\n // When external data has changed, update the internal data\n if (data !== cacheRef.current.data) {\n cacheRef.current.data = data\n return data\n }\n\n return internalDataRef.current\n }, [id, data, initialData, sharedData])\n\n useLayoutEffect(() => {\n // Set the shared state, if initialData was given\n if (id && initialData && !sharedData.data) {\n extendSharedData?.(initialData)\n }\n }, [id, initialData, extendSharedData, sharedData.data])\n\n useMemo(() => {\n validateDataNow()\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [internalDataRef.current]) // run validation when internal data has changed\n\n useLayoutEffect(() => {\n if (id) {\n extendAttachment?.({ filterDataHandler, hasErrors })\n if (filterData) {\n rerenderUseDataHook?.()\n }\n }\n }, [\n filterData,\n filterDataHandler,\n rerenderUseDataHook,\n hasErrors,\n id,\n extendAttachment,\n ])\n\n /**\n * Update the data set\n */\n const updateDataValue: UpdateDataValue = useCallback(\n (path, value) => {\n if (!path) {\n return\n }\n\n const givenData = (\n path === '/'\n ? // When setting the root of the data, the whole data set should be the new value\n value\n : // For sub paths, use the the existing data set (or empty array/object), but modify it below (since pointer.set is not immutable)\n internalDataRef.current ??\n (path.match(isArrayJsonPointer) ? [] : {})\n ) as Data\n\n let newData: Data = null\n try {\n // Update the data even if it contains errors. Submit/SubmitRequest will be called accordingly\n newData = structuredClone(givenData)\n } catch (e) {\n newData = givenData\n }\n\n if (path !== '/') {\n pointer.set(newData, path, value)\n }\n\n if (id) {\n updateSharedData?.(newData)\n if (filterData) {\n rerenderUseDataHook?.()\n }\n }\n\n internalDataRef.current = newData\n\n if (sessionStorageId && typeof window !== 'undefined') {\n window.sessionStorage?.setItem(\n sessionStorageId,\n JSON.stringify(newData)\n )\n }\n\n forceUpdate()\n\n return newData\n },\n [\n filterData,\n id,\n sessionStorageId,\n rerenderUseDataHook,\n updateSharedData,\n ]\n )\n\n /**\n * Update the data set on user interaction\n */\n const handlePathChange: UpdateDataValue = useCallback(\n (path, value) => {\n if (!path) {\n return\n }\n\n onPathChange?.(path, value)\n\n const newData = updateDataValue(path, value)\n\n onChange?.(newData as Data)\n\n showAllErrorsRef.current = false\n\n validateData()\n },\n [onPathChange, updateDataValue, onChange, validateData]\n )\n\n // - Mounted fields\n const handleMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = addListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n const handleUnMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = removeListPath(\n mountedFieldPathsRef.current,\n path\n )\n if (fieldPropsRef.current?.[path]) {\n delete fieldPropsRef.current[path]\n }\n }, [])\n\n // - Features\n const scrollToTop = useCallback(() => {\n if (typeof window !== 'undefined') {\n window?.scrollTo?.({ top: 0, behavior: 'smooth' })\n }\n }, [])\n\n /**\n * Request to submit the whole form\n */\n const handleSubmit = useCallback<ContextState['handleSubmit']>(\n ({ formElement = null } = {}) => {\n if (!hasErrors()) {\n const resetForm = () => {\n formElement?.reset?.()\n\n if (typeof window !== 'undefined') {\n if (sessionStorageId) {\n window.sessionStorage.removeItem(sessionStorageId)\n }\n }\n\n forceUpdate() // in order to fill \"empty fields\" again with their internal states\n }\n const clearData = () => {\n internalDataRef.current = {}\n forceUpdate()\n }\n\n onSubmit?.(filterDataHandler(internalDataRef.current as Data), {\n resetForm,\n clearData,\n })\n\n if (scrollTopOnSubmit) {\n scrollToTop()\n }\n } else {\n setShowAllErrors(true)\n onSubmitRequest?.()\n }\n\n return internalDataRef.current\n },\n [\n hasErrors,\n onSubmit,\n filterDataHandler,\n scrollTopOnSubmit,\n sessionStorageId,\n scrollToTop,\n setShowAllErrors,\n onSubmitRequest,\n ]\n )\n\n // - ajv validator routines\n\n useMountEffect(() => {\n if (schema) {\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n }\n\n // Validate the initial data\n validateData()\n })\n\n useUpdateEffect(() => {\n if (schema && schema !== cacheRef.current.schema) {\n cacheRef.current.schema = schema\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n\n validateData()\n forceUpdate()\n }\n }, [schema, validateData, forceUpdate])\n\n return (\n <Context.Provider\n value={{\n hasContext: true,\n data: internalDataRef.current,\n ...rest,\n handlePathChange,\n updateDataValue,\n validateData,\n handleSubmit,\n scrollToTop,\n errors: errorsRef.current,\n showAllErrors: showAllErrorsRef.current,\n setShowAllErrors,\n mountedFieldPaths: mountedFieldPathsRef.current,\n handleMountField,\n handleUnMountField,\n hasErrors,\n hasFieldError,\n setValueWithError,\n setProps,\n ajvInstance: ajvRef.current,\n schema,\n contextErrorMessages,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\ntype PathList = string[]\n\nfunction addListPath(paths: PathList, path: Path): PathList {\n return paths.includes(path) ? paths : paths.concat(path)\n}\n\nfunction removeListPath(paths: PathList, path: Path): PathList {\n return paths.filter((thisPath) => thisPath !== path)\n}\n"],"mappings":"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"}
@@ -15,7 +15,7 @@ function Currency(props) {
15
15
  const context = React.useContext(Context);
16
16
  const preparedProps = _objectSpread(_objectSpread({}, props), {}, {
17
17
  currency: (_props$currency = props.currency) !== null && _props$currency !== void 0 ? _props$currency : CURRENCY,
18
- placeholder: (_props$placeholder = props.placeholder) !== null && _props$placeholder !== void 0 ? _props$placeholder : getCurrencySymbol(context === null || context === void 0 ? void 0 : context.locale, props.currency)
18
+ placeholder: (_props$placeholder = props.placeholder) !== null && _props$placeholder !== void 0 ? _props$placeholder : getCurrencySymbol(context === null || context === void 0 ? void 0 : context.locale, props.currency, props.currencyDisplay)
19
19
  });
20
20
  return React.createElement(NumberField, _extends({}, preparedProps, {
21
21
  className: classnames('dnb-forms-field-currency', props.className)
@@ -1 +1 @@
1
- {"version":3,"file":"Currency.js","names":["React","classnames","Context","getCurrencySymbol","CURRENCY","NumberField","Currency","props","_props$currency","_props$placeholder","context","useContext","preparedProps","_objectSpread","currency","placeholder","locale","createElement","_extends","className","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Currency/Currency.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport { Context } from '../../../../shared'\nimport { getCurrencySymbol } from '../../../../components/number-format/NumberUtils'\nimport { CURRENCY } from '../../../../shared/defaults'\nimport NumberField, { Props as NumberFieldProps } from '../Number'\n\nexport type Props = NumberFieldProps\n\nfunction Currency(props: Props) {\n const context = React.useContext(Context)\n const preparedProps = {\n ...props,\n currency: props.currency ?? CURRENCY,\n placeholder:\n props.placeholder ??\n getCurrencySymbol(context?.locale, props.currency),\n }\n\n return (\n <NumberField\n {...preparedProps}\n className={classnames('dnb-forms-field-currency', props.className)}\n />\n )\n}\n\nCurrency._supportsSpacingProps = true\nexport default Currency\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,iBAAiB,QAAQ,kDAAkD;AACpF,SAASC,QAAQ,QAAQ,6BAA6B;AACtD,OAAOC,WAAW,MAAqC,WAAW;AAIlE,SAASC,QAAQA,CAACC,KAAY,EAAE;EAAA,IAAAC,eAAA,EAAAC,kBAAA;EAC9B,MAAMC,OAAO,GAAGV,KAAK,CAACW,UAAU,CAACT,OAAO,CAAC;EACzC,MAAMU,aAAa,GAAAC,aAAA,CAAAA,aAAA,KACdN,KAAK;IACRO,QAAQ,GAAAN,eAAA,GAAED,KAAK,CAACO,QAAQ,cAAAN,eAAA,cAAAA,eAAA,GAAIJ,QAAQ;IACpCW,WAAW,GAAAN,kBAAA,GACTF,KAAK,CAACQ,WAAW,cAAAN,kBAAA,cAAAA,kBAAA,GACjBN,iBAAiB,CAACO,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEM,MAAM,EAAET,KAAK,CAACO,QAAQ;EAAC,EACrD;EAED,OACEd,KAAA,CAAAiB,aAAA,CAACZ,WAAW,EAAAa,QAAA,KACNN,aAAa;IACjBO,SAAS,EAAElB,UAAU,CAAC,0BAA0B,EAAEM,KAAK,CAACY,SAAS;EAAE,EACpE,CAAC;AAEN;AAEAb,QAAQ,CAACc,qBAAqB,GAAG,IAAI;AACrC,eAAed,QAAQ"}
1
+ {"version":3,"file":"Currency.js","names":["React","classnames","Context","getCurrencySymbol","CURRENCY","NumberField","Currency","props","_props$currency","_props$placeholder","context","useContext","preparedProps","_objectSpread","currency","placeholder","locale","currencyDisplay","createElement","_extends","className","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Currency/Currency.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport { Context } from '../../../../shared'\nimport { getCurrencySymbol } from '../../../../components/number-format/NumberUtils'\nimport { CURRENCY } from '../../../../shared/defaults'\nimport NumberField, { Props as NumberFieldProps } from '../Number'\n\nexport type Props = NumberFieldProps\n\nfunction Currency(props: Props) {\n const context = React.useContext(Context)\n const preparedProps = {\n ...props,\n currency: props.currency ?? CURRENCY,\n placeholder:\n props.placeholder ??\n getCurrencySymbol(\n context?.locale,\n props.currency,\n props.currencyDisplay\n ),\n }\n\n return (\n <NumberField\n {...preparedProps}\n className={classnames('dnb-forms-field-currency', props.className)}\n />\n )\n}\n\nCurrency._supportsSpacingProps = true\nexport default Currency\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,iBAAiB,QAAQ,kDAAkD;AACpF,SAASC,QAAQ,QAAQ,6BAA6B;AACtD,OAAOC,WAAW,MAAqC,WAAW;AAIlE,SAASC,QAAQA,CAACC,KAAY,EAAE;EAAA,IAAAC,eAAA,EAAAC,kBAAA;EAC9B,MAAMC,OAAO,GAAGV,KAAK,CAACW,UAAU,CAACT,OAAO,CAAC;EACzC,MAAMU,aAAa,GAAAC,aAAA,CAAAA,aAAA,KACdN,KAAK;IACRO,QAAQ,GAAAN,eAAA,GAAED,KAAK,CAACO,QAAQ,cAAAN,eAAA,cAAAA,eAAA,GAAIJ,QAAQ;IACpCW,WAAW,GAAAN,kBAAA,GACTF,KAAK,CAACQ,WAAW,cAAAN,kBAAA,cAAAA,kBAAA,GACjBN,iBAAiB,CACfO,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEM,MAAM,EACfT,KAAK,CAACO,QAAQ,EACdP,KAAK,CAACU,eACR;EAAC,EACJ;EAED,OACEjB,KAAA,CAAAkB,aAAA,CAACb,WAAW,EAAAc,QAAA,KACNP,aAAa;IACjBQ,SAAS,EAAEnB,UAAU,CAAC,0BAA0B,EAAEM,KAAK,CAACa,SAAS;EAAE,EACpE,CAAC;AAEN;AAEAd,QAAQ,CAACe,qBAAqB,GAAG,IAAI;AACrC,eAAef,QAAQ"}
@@ -58,6 +58,7 @@ function Expiry(props) {
58
58
  const status = hasError ? 'error' : warning ? 'warn' : info ? 'info' : null;
59
59
  return React.createElement(FieldBlock, _extends({
60
60
  className: classnames('dnb-forms-field-expiry', className),
61
+ id: id,
61
62
  forId: `${id}-input-month`,
62
63
  label: label,
63
64
  layout: layout,
@@ -1 +1 @@
1
- {"version":3,"file":"Expiry.js","names":["React","useCallback","useContext","SharedContext","pickSpacingProps","useDataValue","classnames","FieldBlock","MultiInputMask","HelpButton","useErrorMessage","Expiry","props","_value$substring","sharedContext","translations","translation","Forms","placeholders","DatePicker","placeholder_characters","errorMessages","path","required","dateErrorRequired","validateRequired","value","_ref","error","undefined","preparedProps","_objectSpread","fromInput","toExpiryString","id","className","label","expiryLabel","hasError","info","warning","help","disabled","labelDescription","layout","ariaAttributes","handleFocus","handleBlur","handleChange","expiry","month","ensureValidMonth","substring","year","status","createElement","_extends","forId","stretch","values","statusState","onChange","onBlur","onFocus","delimiter","inputMode","inputs","mask","getMonthMask","placeholderCharacter","autoComplete","suffix","title","content","Object","join","firstMask","secondMask","firstDigit","charAt","isFirstDigitValid","test","seconDigit","isSecondDigitValid","_supportsEufemiaSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Expiry/Expiry.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport SharedContext from '../../../../shared/Context'\nimport { FieldHelpProps, FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { useDataValue } from '../../hooks'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { MultiInputMask } from '../../../../components/input-masked'\nimport type { MultiInputMaskValue } from '../../../../components/input-masked'\nimport { HelpButton } from '../../../../components'\nimport useErrorMessage from '../../hooks/useErrorMessage'\n\ntype ExpiryValue = MultiInputMaskValue<'month' | 'year'>\n\nexport type ExpiryProps = FieldHelpProps & FieldProps<string>\n\nfunction Expiry(props: ExpiryProps) {\n const sharedContext = useContext(SharedContext)\n const translations = sharedContext?.translation.Forms\n const placeholders =\n sharedContext?.translation.DatePicker.placeholder_characters\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.dateErrorRequired,\n })\n\n const validateRequired = useCallback(\n (value: string, { required, error }) => {\n return required && !value ? error : undefined\n },\n []\n )\n\n const preparedProps: ExpiryProps = {\n ...props,\n errorMessages,\n fromInput: toExpiryString,\n validateRequired,\n }\n\n const {\n id,\n className,\n label = translations.expiryLabel,\n error,\n hasError,\n info,\n warning,\n help,\n disabled,\n value = '',\n labelDescription,\n layout = 'vertical',\n ariaAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n } = useDataValue(preparedProps)\n\n const expiry: ExpiryValue = {\n month: ensureValidMonth(value?.substring(0, 2)),\n year: value?.substring(2, 4) ?? '',\n }\n\n const status = hasError\n ? 'error'\n : warning\n ? 'warn'\n : info\n ? 'info'\n : null\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-expiry', className)}\n forId={`${id}-input-month`}\n label={label}\n layout={layout}\n labelDescription={labelDescription}\n info={info}\n warning={warning}\n error={error}\n {...pickSpacingProps(props)}\n >\n <MultiInputMask\n stretch\n id={`${id}-input`}\n values={expiry}\n status={status}\n statusState={disabled ? 'disabled' : undefined}\n disabled={disabled}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n delimiter=\"/\"\n inputMode=\"numeric\"\n inputs={[\n {\n id: 'month',\n label: sharedContext?.translation.DatePicker['month'],\n mask: getMonthMask(expiry?.month),\n placeholderCharacter: placeholders['month'],\n autoComplete: 'cc-exp-month',\n ...ariaAttributes,\n },\n {\n id: 'year',\n label: sharedContext?.translation.DatePicker['year'],\n mask: [/[0-9]/, /[0-9]/],\n placeholderCharacter: placeholders['year'],\n autoComplete: 'cc-exp-year',\n ...ariaAttributes,\n },\n ]}\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined\n }\n />\n </FieldBlock>\n )\n\n function toExpiryString(values: ExpiryValue) {\n return Object.values(values).join('')\n }\n\n function ensureValidMonth(month: string) {\n // Return empty value if no month is given\n if (!month) {\n return ''\n }\n\n const [firstMask, secondMask] = getMonthMask(month)\n\n const firstDigit = month?.charAt(0)\n const isFirstDigitValid = firstMask.test(firstDigit)\n\n if (firstDigit && !isFirstDigitValid) {\n // Return empty value if the first digit is invalid\n return ''\n }\n\n const seconDigit = month?.charAt(1)\n const isSecondDigitValid = secondMask.test(seconDigit)\n\n if (seconDigit && !isSecondDigitValid) {\n // Return empty value if the second digit is invalid\n return ''\n }\n\n // Return given month of month value is valid\n return month\n }\n\n function getMonthMask(month: string) {\n const firstDigit = month?.charAt(0)\n\n return [\n /[0-1]/,\n firstDigit === '0' || firstDigit === '' ? /[1-9]/ : /[0-2]/,\n ]\n }\n}\n\nExpiry._supportsEufemiaSpacingProps = true\nexport default Expiry\n"],"mappings":"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"}
1
+ {"version":3,"file":"Expiry.js","names":["React","useCallback","useContext","SharedContext","pickSpacingProps","useDataValue","classnames","FieldBlock","MultiInputMask","HelpButton","useErrorMessage","Expiry","props","_value$substring","sharedContext","translations","translation","Forms","placeholders","DatePicker","placeholder_characters","errorMessages","path","required","dateErrorRequired","validateRequired","value","_ref","error","undefined","preparedProps","_objectSpread","fromInput","toExpiryString","id","className","label","expiryLabel","hasError","info","warning","help","disabled","labelDescription","layout","ariaAttributes","handleFocus","handleBlur","handleChange","expiry","month","ensureValidMonth","substring","year","status","createElement","_extends","forId","stretch","values","statusState","onChange","onBlur","onFocus","delimiter","inputMode","inputs","mask","getMonthMask","placeholderCharacter","autoComplete","suffix","title","content","Object","join","firstMask","secondMask","firstDigit","charAt","isFirstDigitValid","test","seconDigit","isSecondDigitValid","_supportsEufemiaSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Expiry/Expiry.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport SharedContext from '../../../../shared/Context'\nimport { FieldHelpProps, FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { useDataValue } from '../../hooks'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { MultiInputMask } from '../../../../components/input-masked'\nimport type { MultiInputMaskValue } from '../../../../components/input-masked'\nimport { HelpButton } from '../../../../components'\nimport useErrorMessage from '../../hooks/useErrorMessage'\n\ntype ExpiryValue = MultiInputMaskValue<'month' | 'year'>\n\nexport type ExpiryProps = FieldHelpProps & FieldProps<string>\n\nfunction Expiry(props: ExpiryProps) {\n const sharedContext = useContext(SharedContext)\n const translations = sharedContext?.translation.Forms\n const placeholders =\n sharedContext?.translation.DatePicker.placeholder_characters\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.dateErrorRequired,\n })\n\n const validateRequired = useCallback(\n (value: string, { required, error }) => {\n return required && !value ? error : undefined\n },\n []\n )\n\n const preparedProps: ExpiryProps = {\n ...props,\n errorMessages,\n fromInput: toExpiryString,\n validateRequired,\n }\n\n const {\n id,\n className,\n label = translations.expiryLabel,\n error,\n hasError,\n info,\n warning,\n help,\n disabled,\n value = '',\n labelDescription,\n layout = 'vertical',\n ariaAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n } = useDataValue(preparedProps)\n\n const expiry: ExpiryValue = {\n month: ensureValidMonth(value?.substring(0, 2)),\n year: value?.substring(2, 4) ?? '',\n }\n\n const status = hasError\n ? 'error'\n : warning\n ? 'warn'\n : info\n ? 'info'\n : null\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-expiry', className)}\n id={id}\n forId={`${id}-input-month`}\n label={label}\n layout={layout}\n labelDescription={labelDescription}\n info={info}\n warning={warning}\n error={error}\n {...pickSpacingProps(props)}\n >\n <MultiInputMask\n stretch\n id={`${id}-input`}\n values={expiry}\n status={status}\n statusState={disabled ? 'disabled' : undefined}\n disabled={disabled}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n delimiter=\"/\"\n inputMode=\"numeric\"\n inputs={[\n {\n id: 'month',\n label: sharedContext?.translation.DatePicker['month'],\n mask: getMonthMask(expiry?.month),\n placeholderCharacter: placeholders['month'],\n autoComplete: 'cc-exp-month',\n ...ariaAttributes,\n },\n {\n id: 'year',\n label: sharedContext?.translation.DatePicker['year'],\n mask: [/[0-9]/, /[0-9]/],\n placeholderCharacter: placeholders['year'],\n autoComplete: 'cc-exp-year',\n ...ariaAttributes,\n },\n ]}\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined\n }\n />\n </FieldBlock>\n )\n\n function toExpiryString(values: ExpiryValue) {\n return Object.values(values).join('')\n }\n\n function ensureValidMonth(month: string) {\n // Return empty value if no month is given\n if (!month) {\n return ''\n }\n\n const [firstMask, secondMask] = getMonthMask(month)\n\n const firstDigit = month?.charAt(0)\n const isFirstDigitValid = firstMask.test(firstDigit)\n\n if (firstDigit && !isFirstDigitValid) {\n // Return empty value if the first digit is invalid\n return ''\n }\n\n const seconDigit = month?.charAt(1)\n const isSecondDigitValid = secondMask.test(seconDigit)\n\n if (seconDigit && !isSecondDigitValid) {\n // Return empty value if the second digit is invalid\n return ''\n }\n\n // Return given month of month value is valid\n return month\n }\n\n function getMonthMask(month: string) {\n const firstDigit = month?.charAt(0)\n\n return [\n /[0-1]/,\n firstDigit === '0' || firstDigit === '' ? /[1-9]/ : /[0-2]/,\n ]\n }\n}\n\nExpiry._supportsEufemiaSpacingProps = true\nexport default Expiry\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { PropertiesTableProps } from '../../../shared/types';
2
+ export declare const fieldProperties: PropertiesTableProps;
3
+ export declare const fieldEvents: PropertiesTableProps;
@@ -0,0 +1,8 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
+ import { fieldBlockProperties } from '../FieldBlock/FieldBlockDocs';
5
+ import { dataValueEvents, dataValueProperties } from '../hooks/DataValueDocs';
6
+ export const fieldProperties = _objectSpread(_objectSpread({}, dataValueProperties), fieldBlockProperties);
7
+ export const fieldEvents = _objectSpread({}, dataValueEvents);
8
+ //# sourceMappingURL=FieldDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldDocs.js","names":["fieldBlockProperties","dataValueEvents","dataValueProperties","fieldProperties","_objectSpread","fieldEvents"],"sources":["../../../../../src/extensions/forms/Field/FieldDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../shared/types'\nimport { fieldBlockProperties } from '../FieldBlock/FieldBlockDocs'\nimport {\n dataValueEvents,\n dataValueProperties,\n} from '../hooks/DataValueDocs'\n\nexport const fieldProperties: PropertiesTableProps = {\n ...dataValueProperties,\n ...fieldBlockProperties,\n}\n\nexport const fieldEvents: PropertiesTableProps = {\n ...dataValueEvents,\n}\n"],"mappings":";;;AACA,SAASA,oBAAoB,QAAQ,8BAA8B;AACnE,SACEC,eAAe,EACfC,mBAAmB,QACd,wBAAwB;AAE/B,OAAO,MAAMC,eAAqC,GAAAC,aAAA,CAAAA,aAAA,KAC7CF,mBAAmB,GACnBF,oBAAoB,CACxB;AAED,OAAO,MAAMK,WAAiC,GAAAD,aAAA,KACzCH,eAAe,CACnB"}
@@ -13,6 +13,7 @@ interface ErrorMessages extends CustomErrorMessages {
13
13
  export type Props = FieldHelpProps & FieldProps<number, undefined, ErrorMessages> & {
14
14
  inputClassName?: string;
15
15
  currency?: InputMaskedProps['as_currency'];
16
+ currencyDisplay?: 'code' | 'symbol' | 'narrowSymbol' | 'name';
16
17
  percent?: InputMaskedProps['as_percent'];
17
18
  mask?: InputMaskedProps['mask'];
18
19
  step?: number;
@@ -7,6 +7,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
7
7
  import React, { useContext, useMemo, useCallback } from 'react';
8
8
  import { InputMasked, HelpButton, Button } from '../../../../components';
9
9
  import SharedContext from '../../../../shared/Context';
10
+ import FieldBlockContext from '../../FieldBlock/FieldBlockContext';
10
11
  import classnames from 'classnames';
11
12
  import FieldBlock from '../../FieldBlock';
12
13
  import { useDataValue } from '../../hooks';
@@ -15,10 +16,12 @@ import { clamp } from '../../../../components/slider/SliderHelpers';
15
16
  import useErrorMessage from '../../hooks/useErrorMessage';
16
17
  function NumberComponent(props) {
17
18
  var _props$width, _sharedContext$transl, _sharedContext$transl2;
19
+ const fieldBlockContext = useContext(FieldBlockContext);
18
20
  const sharedContext = useContext(SharedContext);
19
21
  const tr = sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms;
20
22
  const {
21
23
  currency,
24
+ currencyDisplay,
22
25
  percent,
23
26
  mask,
24
27
  step = 1,
@@ -77,7 +80,10 @@ function NumberComponent(props) {
77
80
  if (currency) {
78
81
  return {
79
82
  as_currency: currency,
80
- mask_options
83
+ mask_options,
84
+ currency_mask: {
85
+ currencyDisplay
86
+ }
81
87
  };
82
88
  }
83
89
  if (percent) {
@@ -91,21 +97,21 @@ function NumberComponent(props) {
91
97
  mask,
92
98
  number_mask: _objectSpread({}, mask_options)
93
99
  };
94
- }, [currency, decimalLimit, mask, percent, prefix, suffix]);
100
+ }, [currency, currencyDisplay, decimalLimit, mask, percent, prefix, suffix]);
95
101
  const preparedProps = _objectSpread(_objectSpread({}, props), {}, {
96
102
  errorMessages,
97
103
  schema,
98
104
  toInput,
99
105
  fromInput,
100
106
  transformValue,
101
- width: (_props$width = props.width) !== null && _props$width !== void 0 ? _props$width : 'medium'
107
+ width: (_props$width = props.width) !== null && _props$width !== void 0 ? _props$width : fieldBlockContext !== null && fieldBlockContext !== void 0 && fieldBlockContext.composition ? 'stretch' : 'medium'
102
108
  });
103
109
  const {
104
110
  id,
105
111
  name,
106
112
  className,
107
- autoComplete,
108
113
  inputClassName,
114
+ autoComplete,
109
115
  layout,
110
116
  placeholder,
111
117
  label,
@@ -163,7 +169,7 @@ function NumberComponent(props) {
163
169
  warning,
164
170
  error,
165
171
  disabled,
166
- width: width === 'stretch' ? width : undefined,
172
+ width: width === 'stretch' || fieldBlockContext !== null && fieldBlockContext !== void 0 && fieldBlockContext.composition ? width : undefined,
167
173
  contentWidth: width !== false ? width : undefined
168
174
  }, pickSpacingProps(props));
169
175
  const increaseProps = showStepControls && {
@@ -205,7 +211,7 @@ function NumberComponent(props) {
205
211
  name,
206
212
  autoComplete,
207
213
  className: classnames(`dnb-forms-field-number__input dnb-input--${size}`, inputClassName),
208
- step,
214
+ step: showStepControls ? step : undefined,
209
215
  placeholder,
210
216
  value,
211
217
  align: showStepControls ? 'center' : align
@@ -217,7 +223,7 @@ function NumberComponent(props) {
217
223
  disabled
218
224
  }, ariaAttributes), {}, {
219
225
  status: hasError ? 'error' : undefined,
220
- stretch: width !== undefined,
226
+ stretch: Boolean(width !== undefined || (fieldBlockContext === null || fieldBlockContext === void 0 ? void 0 : fieldBlockContext.composition)),
221
227
  suffix: help && !showStepControls ? React.createElement(HelpButton, {
222
228
  title: help.title
223
229
  }, help.content) : undefined