@dnb/eufemia 10.62.3 → 10.63.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 (946) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/cjs/components/accordion/Accordion.d.ts +1 -125
  3. package/cjs/components/accordion/Accordion.js +0 -1
  4. package/cjs/components/accordion/Accordion.js.map +1 -1
  5. package/cjs/components/autocomplete/Autocomplete.js +3 -2
  6. package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
  7. package/cjs/components/button/Button.d.ts +3 -6
  8. package/cjs/components/button/Button.js +8 -18
  9. package/cjs/components/button/Button.js.map +1 -1
  10. package/cjs/components/button/ButtonDocs.d.ts +2 -0
  11. package/cjs/components/button/ButtonDocs.js +135 -0
  12. package/cjs/components/button/ButtonDocs.js.map +1 -0
  13. package/cjs/components/card/Card.js +2 -1
  14. package/cjs/components/card/Card.js.map +1 -1
  15. package/cjs/components/date-picker/DatePicker.d.ts +4 -0
  16. package/cjs/components/date-picker/DatePicker.js +24 -10
  17. package/cjs/components/date-picker/DatePicker.js.map +1 -1
  18. package/cjs/components/date-picker/DatePickerDocs.js +5 -0
  19. package/cjs/components/date-picker/DatePickerDocs.js.map +1 -1
  20. package/cjs/components/date-picker/DatePickerPortal.d.ts +9 -0
  21. package/cjs/components/date-picker/DatePickerPortal.js +61 -0
  22. package/cjs/components/date-picker/DatePickerPortal.js.map +1 -0
  23. package/cjs/components/date-picker/style/dnb-date-picker.css +64 -55
  24. package/cjs/components/date-picker/style/dnb-date-picker.min.css +1 -1
  25. package/cjs/components/date-picker/style/dnb-date-picker.scss +90 -75
  26. package/cjs/components/form-row/FormRow.js +2 -7
  27. package/cjs/components/form-row/FormRow.js.map +1 -1
  28. package/cjs/components/form-row/style/dnb-form-row.css +3 -3
  29. package/cjs/components/form-row/style/dnb-form-row.min.css +1 -1
  30. package/cjs/components/form-status/FormStatus.js +17 -19
  31. package/cjs/components/form-status/FormStatus.js.map +1 -1
  32. package/cjs/components/height-animation/HeightAnimationInstance.d.ts +1 -0
  33. package/cjs/components/height-animation/HeightAnimationInstance.js +26 -1
  34. package/cjs/components/height-animation/HeightAnimationInstance.js.map +1 -1
  35. package/cjs/components/input-masked/InputMasked.d.ts +1 -1
  36. package/cjs/components/input-masked/InputMasked.js +2 -2
  37. package/cjs/components/input-masked/InputMasked.js.map +1 -1
  38. package/cjs/components/input-masked/InputMaskedDocs.js +1 -1
  39. package/cjs/components/input-masked/InputMaskedDocs.js.map +1 -1
  40. package/cjs/components/input-masked/InputMaskedHooks.js +1 -1
  41. package/cjs/components/input-masked/InputMaskedHooks.js.map +1 -1
  42. package/cjs/components/input-masked/InputMaskedUtils.js +1 -1
  43. package/cjs/components/input-masked/InputMaskedUtils.js.map +1 -1
  44. package/cjs/components/input-masked/style/dnb-input-masked.css +3 -3
  45. package/cjs/components/input-masked/style/dnb-input-masked.min.css +1 -1
  46. package/cjs/components/pagination/Pagination.d.ts +12 -0
  47. package/cjs/components/pagination/Pagination.js +7 -3
  48. package/cjs/components/pagination/Pagination.js.map +1 -1
  49. package/cjs/components/pagination/PaginationBar.d.ts +2 -1
  50. package/cjs/components/pagination/PaginationBar.js +10 -3
  51. package/cjs/components/pagination/PaginationBar.js.map +1 -1
  52. package/cjs/components/radio/style/dnb-radio.css +3 -3
  53. package/cjs/components/radio/style/dnb-radio.min.css +1 -1
  54. package/cjs/components/space/style/dnb-space.css +4 -4
  55. package/cjs/components/space/style/dnb-space.min.css +1 -1
  56. package/cjs/components/space/style/dnb-space.scss +2 -12
  57. package/cjs/components/space/style/space-mixins.scss +21 -0
  58. package/cjs/components/tabs/Tabs.d.ts +1 -1
  59. package/cjs/components/tabs/Tabs.js +4 -12
  60. package/cjs/components/tabs/Tabs.js.map +1 -1
  61. package/cjs/components/toggle-button/ToggleButton.d.ts +9 -5
  62. package/cjs/components/toggle-button/ToggleButton.js +2 -0
  63. package/cjs/components/toggle-button/ToggleButton.js.map +1 -1
  64. package/cjs/components/toggle-button/ToggleButtonDocs.d.ts +2 -0
  65. package/cjs/components/toggle-button/ToggleButtonDocs.js +87 -0
  66. package/cjs/components/toggle-button/ToggleButtonDocs.js.map +1 -0
  67. package/cjs/components/toggle-button/ToggleButtonGroup.d.ts +21 -6
  68. package/cjs/components/toggle-button/ToggleButtonGroupDocs.d.ts +2 -0
  69. package/cjs/components/toggle-button/ToggleButtonGroupDocs.js +90 -0
  70. package/cjs/components/toggle-button/ToggleButtonGroupDocs.js.map +1 -0
  71. package/cjs/components/toggle-button/style/dnb-toggle-button.css +3 -3
  72. package/cjs/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  73. package/cjs/elements/blockquote/style/blockquote-mixins.scss +5 -3
  74. package/cjs/elements/code/style/code-mixins.scss +2 -3
  75. package/cjs/elements/hr/style/hr-mixins.scss +2 -3
  76. package/cjs/elements/img/style/img-mixins.scss +3 -3
  77. package/cjs/elements/lists/style/lists-mixins.scss +3 -6
  78. package/cjs/elements/typography/style/typography-mixins.scss +2 -3
  79. package/cjs/extensions/forms/DataContext/Context.d.ts +15 -4
  80. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  81. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +1 -1
  82. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  83. package/cjs/extensions/forms/DataContext/Provider/Provider.js +28 -17
  84. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  85. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +3 -3
  86. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  87. package/cjs/extensions/forms/Field/Date/Date.js +5 -4
  88. package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
  89. package/cjs/extensions/forms/Field/Expiry/Expiry.js +4 -3
  90. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  91. package/cjs/extensions/forms/Field/Indeterminate/useDependencePaths.js +7 -7
  92. package/cjs/extensions/forms/Field/Indeterminate/useDependencePaths.js.map +1 -1
  93. package/cjs/extensions/forms/Field/Number/Number.js +2 -2
  94. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  95. package/cjs/extensions/forms/Field/Option/Option.d.ts +2 -1
  96. package/cjs/extensions/forms/Field/Option/Option.js +2 -14
  97. package/cjs/extensions/forms/Field/Option/Option.js.map +1 -1
  98. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +10 -5
  99. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  100. package/cjs/extensions/forms/Field/Provider/useFieldProvider.d.ts +4 -3
  101. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +12 -4
  102. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  103. package/cjs/extensions/forms/Field/Selection/Selection.d.ts +8 -1
  104. package/cjs/extensions/forms/Field/Selection/Selection.js +19 -12
  105. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  106. package/cjs/extensions/forms/Field/Selection/SelectionDocs.js +5 -0
  107. package/cjs/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -1
  108. package/cjs/extensions/forms/Field/Slider/Slider.js +4 -3
  109. package/cjs/extensions/forms/Field/Slider/Slider.js.map +1 -1
  110. package/cjs/extensions/forms/Field/String/String.js +2 -2
  111. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  112. package/cjs/extensions/forms/Field/Toggle/Toggle.js +14 -4
  113. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  114. package/cjs/extensions/forms/Field/Upload/Upload.js +21 -21
  115. package/cjs/extensions/forms/Field/Upload/Upload.js.map +1 -1
  116. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +14 -38
  117. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  118. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +3 -3
  119. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  120. package/cjs/extensions/forms/Form/Isolation/Isolation.js +17 -3
  121. package/cjs/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  122. package/cjs/extensions/forms/Form/MainHeading/MainHeadingDocs.d.ts +2 -0
  123. package/cjs/extensions/forms/Form/MainHeading/MainHeadingDocs.js +27 -0
  124. package/cjs/extensions/forms/Form/MainHeading/MainHeadingDocs.js.map +1 -0
  125. package/cjs/extensions/forms/Form/Section/EditContainer/CancelButton.js +7 -18
  126. package/cjs/extensions/forms/Form/Section/EditContainer/CancelButton.js.map +1 -1
  127. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.css +0 -10
  128. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -1
  129. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.scss +1 -12
  130. package/cjs/extensions/forms/Form/SubHeading/SubHeadingDocs.d.ts +2 -0
  131. package/cjs/extensions/forms/Form/SubHeading/SubHeadingDocs.js +27 -0
  132. package/cjs/extensions/forms/Form/SubHeading/SubHeadingDocs.js.map +1 -0
  133. package/cjs/extensions/forms/Form/Visibility/Visibility.d.ts +11 -1
  134. package/cjs/extensions/forms/Form/Visibility/Visibility.js +18 -10
  135. package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  136. package/cjs/extensions/forms/Form/Visibility/VisibilityContext.d.ts +2 -0
  137. package/cjs/extensions/forms/Form/Visibility/VisibilityContext.js.map +1 -1
  138. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
  139. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  140. package/cjs/extensions/forms/Form/Visibility/useVisibility.js +18 -9
  141. package/cjs/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  142. package/cjs/extensions/forms/Form/data-context/useValidation.d.ts +2 -1
  143. package/cjs/extensions/forms/Form/data-context/useValidation.js.map +1 -1
  144. package/cjs/extensions/forms/Iterate/Array/Array.js +49 -29
  145. package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
  146. package/cjs/extensions/forms/Iterate/Array/ArrayDocs.js +14 -4
  147. package/cjs/extensions/forms/Iterate/Array/ArrayDocs.js.map +1 -1
  148. package/cjs/extensions/forms/Iterate/Array/ArrayItemArea.js +2 -1
  149. package/cjs/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -1
  150. package/cjs/extensions/forms/Iterate/Array/ArrayItemAreaContext.d.ts +2 -0
  151. package/cjs/extensions/forms/Iterate/Array/ArrayItemAreaContext.js.map +1 -1
  152. package/cjs/extensions/forms/Iterate/Array/types.d.ts +8 -3
  153. package/cjs/extensions/forms/Iterate/Array/types.js.map +1 -1
  154. package/cjs/extensions/forms/Iterate/EditContainer/CancelButton.js +5 -15
  155. package/cjs/extensions/forms/Iterate/EditContainer/CancelButton.js.map +1 -1
  156. package/cjs/extensions/forms/Iterate/EditContainer/DoneButton.js +10 -1
  157. package/cjs/extensions/forms/Iterate/EditContainer/DoneButton.js.map +1 -1
  158. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js +1 -3
  159. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  160. package/cjs/extensions/forms/Iterate/ItemNo/useIItemNo.d.ts +5 -0
  161. package/cjs/extensions/forms/Iterate/ItemNo/useIItemNo.js +50 -0
  162. package/cjs/extensions/forms/Iterate/ItemNo/useIItemNo.js.map +1 -0
  163. package/cjs/extensions/forms/Iterate/IterateItemContext.d.ts +2 -0
  164. package/cjs/extensions/forms/Iterate/IterateItemContext.js.map +1 -1
  165. package/cjs/extensions/forms/Iterate/PushButton/PushButton.d.ts +1 -0
  166. package/cjs/extensions/forms/Iterate/PushButton/PushButton.js +16 -14
  167. package/cjs/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  168. package/cjs/extensions/forms/Iterate/PushButton/PushButtonDocs.js +5 -0
  169. package/cjs/extensions/forms/Iterate/PushButton/PushButtonDocs.js.map +1 -1
  170. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +17 -1
  171. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js +32 -16
  172. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
  173. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerContext.d.ts +1 -0
  174. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerContext.js.map +1 -1
  175. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +10 -0
  176. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  177. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js +7 -6
  178. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  179. package/cjs/extensions/forms/Iterate/Toolbar/Toolbar.js +3 -2
  180. package/cjs/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  181. package/cjs/extensions/forms/Iterate/ViewContainer/EditButton.js +1 -0
  182. package/cjs/extensions/forms/Iterate/ViewContainer/EditButton.js.map +1 -1
  183. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js +2 -3
  184. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  185. package/cjs/extensions/forms/Iterate/Visibility/Visibility.d.ts +7 -0
  186. package/cjs/extensions/forms/Iterate/Visibility/Visibility.js +31 -0
  187. package/cjs/extensions/forms/Iterate/Visibility/Visibility.js.map +1 -0
  188. package/cjs/extensions/forms/Iterate/Visibility/index.d.ts +2 -0
  189. package/cjs/extensions/forms/Iterate/Visibility/index.js +27 -0
  190. package/cjs/extensions/forms/Iterate/Visibility/index.js.map +1 -0
  191. package/cjs/extensions/forms/Iterate/hooks/index.d.ts +1 -0
  192. package/cjs/extensions/forms/Iterate/hooks/index.js +7 -0
  193. package/cjs/extensions/forms/Iterate/hooks/index.js.map +1 -1
  194. package/cjs/extensions/forms/Iterate/hooks/useArrayLimit.d.ts +1 -3
  195. package/cjs/extensions/forms/Iterate/hooks/useArrayLimit.js +1 -4
  196. package/cjs/extensions/forms/Iterate/hooks/useArrayLimit.js.map +1 -1
  197. package/cjs/extensions/forms/Iterate/hooks/useItemPath.d.ts +4 -0
  198. package/cjs/extensions/forms/Iterate/hooks/useItemPath.js +22 -0
  199. package/cjs/extensions/forms/Iterate/hooks/useItemPath.js.map +1 -0
  200. package/cjs/extensions/forms/Iterate/hooks/useSwitchContainerMode.d.ts +1 -3
  201. package/cjs/extensions/forms/Iterate/hooks/useSwitchContainerMode.js +1 -4
  202. package/cjs/extensions/forms/Iterate/hooks/useSwitchContainerMode.js.map +1 -1
  203. package/cjs/extensions/forms/Iterate/index.d.ts +1 -0
  204. package/cjs/extensions/forms/Iterate/index.js +7 -0
  205. package/cjs/extensions/forms/Iterate/index.js.map +1 -1
  206. package/cjs/extensions/forms/Iterate/style/dnb-iterate.css +16 -0
  207. package/cjs/extensions/forms/Iterate/style/dnb-iterate.min.css +1 -1
  208. package/cjs/extensions/forms/Iterate/style/dnb-iterate.scss +25 -2
  209. package/cjs/extensions/forms/Tools/GenerateSchema.js +15 -9
  210. package/cjs/extensions/forms/Tools/GenerateSchema.js.map +1 -1
  211. package/cjs/extensions/forms/Tools/ListAllProps.js +11 -7
  212. package/cjs/extensions/forms/Tools/ListAllProps.js.map +1 -1
  213. package/cjs/extensions/forms/Tools/Log.js +2 -1
  214. package/cjs/extensions/forms/Tools/Log.js.map +1 -1
  215. package/cjs/extensions/forms/Value/ArraySelection/ArraySelection.js +4 -4
  216. package/cjs/extensions/forms/Value/ArraySelection/ArraySelection.js.map +1 -1
  217. package/cjs/extensions/forms/Value/Selection/Selection.js +5 -5
  218. package/cjs/extensions/forms/Value/Selection/Selection.js.map +1 -1
  219. package/cjs/extensions/forms/ValueBlock/ValueBlock.js +25 -7
  220. package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  221. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.css +6 -1
  222. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  223. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.scss +22 -10
  224. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +6 -3
  225. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  226. package/cjs/extensions/forms/Wizard/Container/useHandleLayoutEffect.d.ts +2 -1
  227. package/cjs/extensions/forms/Wizard/Container/useHandleLayoutEffect.js +4 -3
  228. package/cjs/extensions/forms/Wizard/Container/useHandleLayoutEffect.js.map +1 -1
  229. package/cjs/extensions/forms/hooks/DataValueWritePropsDocs.js +9 -9
  230. package/cjs/extensions/forms/hooks/DataValueWritePropsDocs.js.map +1 -1
  231. package/cjs/extensions/forms/hooks/useDataValue.d.ts +2 -2
  232. package/cjs/extensions/forms/hooks/useDataValue.js +5 -9
  233. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  234. package/cjs/extensions/forms/hooks/useExternalValue.js.map +1 -1
  235. package/cjs/extensions/forms/hooks/useFieldProps.d.ts +8 -2
  236. package/cjs/extensions/forms/hooks/useFieldProps.js +164 -76
  237. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  238. package/cjs/extensions/forms/hooks/usePath.js.map +1 -1
  239. package/cjs/extensions/forms/hooks/useValueProps.js +5 -5
  240. package/cjs/extensions/forms/hooks/useValueProps.js.map +1 -1
  241. package/cjs/extensions/forms/style/dnb-forms.css +25 -14
  242. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  243. package/cjs/extensions/forms/types.d.ts +33 -6
  244. package/cjs/extensions/forms/types.js.map +1 -1
  245. package/cjs/extensions/forms/utils/json-pointer/json-pointer.js +8 -0
  246. package/cjs/extensions/forms/utils/json-pointer/json-pointer.js.map +1 -1
  247. package/cjs/extensions/payment-card/PaymentCard.js +3 -12
  248. package/cjs/extensions/payment-card/PaymentCard.js.map +1 -1
  249. package/cjs/fragments/drawer-list/DrawerList.d.ts +4 -2
  250. package/cjs/fragments/drawer-list/DrawerList.js +33 -47
  251. package/cjs/fragments/drawer-list/DrawerList.js.map +1 -1
  252. package/cjs/fragments/drawer-list/DrawerListDocs.js +3 -3
  253. package/cjs/fragments/drawer-list/DrawerListDocs.js.map +1 -1
  254. package/cjs/fragments/drawer-list/style/dnb-drawer-list.scss +1 -1
  255. package/cjs/shared/AlignmentHelper.js +0 -4
  256. package/cjs/shared/AlignmentHelper.js.map +1 -1
  257. package/cjs/shared/Eufemia.d.ts +1 -1
  258. package/cjs/shared/Eufemia.js +2 -2
  259. package/cjs/shared/Eufemia.js.map +1 -1
  260. package/cjs/shared/component-helper.js +2 -1
  261. package/cjs/shared/component-helper.js.map +1 -1
  262. package/cjs/style/core/scopes.scss +1 -1
  263. package/cjs/style/core/utilities.scss +3 -12
  264. package/cjs/style/dnb-ui-basis.css +1 -1
  265. package/cjs/style/dnb-ui-basis.min.css +1 -1
  266. package/cjs/style/dnb-ui-body.css +1 -1
  267. package/cjs/style/dnb-ui-body.min.css +1 -1
  268. package/cjs/style/dnb-ui-components.css +106 -86
  269. package/cjs/style/dnb-ui-components.min.css +4 -4
  270. package/cjs/style/dnb-ui-core.css +1 -1
  271. package/cjs/style/dnb-ui-core.min.css +1 -1
  272. package/cjs/style/dnb-ui-elements.css +151 -31
  273. package/cjs/style/dnb-ui-elements.min.css +1 -1
  274. package/cjs/style/dnb-ui-extensions.css +25 -14
  275. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  276. package/cjs/style/dnb-ui-forms.css +25 -14
  277. package/cjs/style/dnb-ui-forms.min.css +1 -1
  278. package/cjs/style/dnb-ui-fragments.css +1 -1
  279. package/cjs/style/dnb-ui-fragments.min.css +1 -1
  280. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +151 -31
  281. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  282. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +131 -100
  283. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
  284. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.css +151 -31
  285. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  286. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +25 -14
  287. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  288. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +25 -14
  289. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  290. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +151 -31
  291. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  292. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +131 -100
  293. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +4 -4
  294. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +151 -31
  295. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  296. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +25 -14
  297. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  298. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +25 -14
  299. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  300. package/cjs/style/themes/theme-ui/ui-theme-basis.css +151 -31
  301. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  302. package/cjs/style/themes/theme-ui/ui-theme-components.css +131 -100
  303. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +4 -4
  304. package/cjs/style/themes/theme-ui/ui-theme-elements.css +151 -31
  305. package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  306. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +25 -14
  307. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  308. package/cjs/style/themes/theme-ui/ui-theme-forms.css +25 -14
  309. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  310. package/cjs/style/themes/theme-ui/ui-theme-tags.css +100 -19
  311. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  312. package/components/accordion/Accordion.d.ts +1 -125
  313. package/components/accordion/Accordion.js +0 -1
  314. package/components/accordion/Accordion.js.map +1 -1
  315. package/components/autocomplete/Autocomplete.js +3 -2
  316. package/components/autocomplete/Autocomplete.js.map +1 -1
  317. package/components/button/Button.d.ts +3 -6
  318. package/components/button/Button.js +8 -18
  319. package/components/button/Button.js.map +1 -1
  320. package/components/button/ButtonDocs.d.ts +2 -0
  321. package/components/button/ButtonDocs.js +128 -0
  322. package/components/button/ButtonDocs.js.map +1 -0
  323. package/components/card/Card.js +2 -1
  324. package/components/card/Card.js.map +1 -1
  325. package/components/date-picker/DatePicker.d.ts +4 -0
  326. package/components/date-picker/DatePicker.js +25 -11
  327. package/components/date-picker/DatePicker.js.map +1 -1
  328. package/components/date-picker/DatePickerDocs.js +5 -0
  329. package/components/date-picker/DatePickerDocs.js.map +1 -1
  330. package/components/date-picker/DatePickerPortal.d.ts +9 -0
  331. package/components/date-picker/DatePickerPortal.js +53 -0
  332. package/components/date-picker/DatePickerPortal.js.map +1 -0
  333. package/components/date-picker/style/dnb-date-picker.css +64 -55
  334. package/components/date-picker/style/dnb-date-picker.min.css +1 -1
  335. package/components/date-picker/style/dnb-date-picker.scss +90 -75
  336. package/components/form-row/FormRow.js +2 -7
  337. package/components/form-row/FormRow.js.map +1 -1
  338. package/components/form-row/style/dnb-form-row.css +3 -3
  339. package/components/form-row/style/dnb-form-row.min.css +1 -1
  340. package/components/form-status/FormStatus.js +17 -19
  341. package/components/form-status/FormStatus.js.map +1 -1
  342. package/components/height-animation/HeightAnimationInstance.d.ts +1 -0
  343. package/components/height-animation/HeightAnimationInstance.js +26 -1
  344. package/components/height-animation/HeightAnimationInstance.js.map +1 -1
  345. package/components/input-masked/InputMasked.d.ts +1 -1
  346. package/components/input-masked/InputMasked.js +2 -2
  347. package/components/input-masked/InputMasked.js.map +1 -1
  348. package/components/input-masked/InputMaskedDocs.js +1 -1
  349. package/components/input-masked/InputMaskedDocs.js.map +1 -1
  350. package/components/input-masked/InputMaskedHooks.js +1 -1
  351. package/components/input-masked/InputMaskedHooks.js.map +1 -1
  352. package/components/input-masked/InputMaskedUtils.js +1 -1
  353. package/components/input-masked/InputMaskedUtils.js.map +1 -1
  354. package/components/input-masked/style/dnb-input-masked.css +3 -3
  355. package/components/input-masked/style/dnb-input-masked.min.css +1 -1
  356. package/components/pagination/Pagination.d.ts +12 -0
  357. package/components/pagination/Pagination.js +7 -3
  358. package/components/pagination/Pagination.js.map +1 -1
  359. package/components/pagination/PaginationBar.d.ts +2 -1
  360. package/components/pagination/PaginationBar.js +10 -3
  361. package/components/pagination/PaginationBar.js.map +1 -1
  362. package/components/radio/style/dnb-radio.css +3 -3
  363. package/components/radio/style/dnb-radio.min.css +1 -1
  364. package/components/space/style/dnb-space.css +4 -4
  365. package/components/space/style/dnb-space.min.css +1 -1
  366. package/components/space/style/dnb-space.scss +2 -12
  367. package/components/space/style/space-mixins.scss +21 -0
  368. package/components/tabs/Tabs.d.ts +1 -1
  369. package/components/tabs/Tabs.js +4 -12
  370. package/components/tabs/Tabs.js.map +1 -1
  371. package/components/toggle-button/ToggleButton.d.ts +9 -5
  372. package/components/toggle-button/ToggleButton.js +2 -0
  373. package/components/toggle-button/ToggleButton.js.map +1 -1
  374. package/components/toggle-button/ToggleButtonDocs.d.ts +2 -0
  375. package/components/toggle-button/ToggleButtonDocs.js +80 -0
  376. package/components/toggle-button/ToggleButtonDocs.js.map +1 -0
  377. package/components/toggle-button/ToggleButtonGroup.d.ts +21 -6
  378. package/components/toggle-button/ToggleButtonGroupDocs.d.ts +2 -0
  379. package/components/toggle-button/ToggleButtonGroupDocs.js +83 -0
  380. package/components/toggle-button/ToggleButtonGroupDocs.js.map +1 -0
  381. package/components/toggle-button/style/dnb-toggle-button.css +3 -3
  382. package/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  383. package/elements/blockquote/style/blockquote-mixins.scss +5 -3
  384. package/elements/code/style/code-mixins.scss +2 -3
  385. package/elements/hr/style/hr-mixins.scss +2 -3
  386. package/elements/img/style/img-mixins.scss +3 -3
  387. package/elements/lists/style/lists-mixins.scss +3 -6
  388. package/elements/typography/style/typography-mixins.scss +2 -3
  389. package/es/components/accordion/Accordion.d.ts +1 -125
  390. package/es/components/accordion/Accordion.js +0 -1
  391. package/es/components/accordion/Accordion.js.map +1 -1
  392. package/es/components/autocomplete/Autocomplete.js +3 -2
  393. package/es/components/autocomplete/Autocomplete.js.map +1 -1
  394. package/es/components/button/Button.d.ts +3 -6
  395. package/es/components/button/Button.js +8 -18
  396. package/es/components/button/Button.js.map +1 -1
  397. package/es/components/button/ButtonDocs.d.ts +2 -0
  398. package/es/components/button/ButtonDocs.js +128 -0
  399. package/es/components/button/ButtonDocs.js.map +1 -0
  400. package/es/components/card/Card.js +2 -1
  401. package/es/components/card/Card.js.map +1 -1
  402. package/es/components/date-picker/DatePicker.d.ts +4 -0
  403. package/es/components/date-picker/DatePicker.js +25 -11
  404. package/es/components/date-picker/DatePicker.js.map +1 -1
  405. package/es/components/date-picker/DatePickerDocs.js +5 -0
  406. package/es/components/date-picker/DatePickerDocs.js.map +1 -1
  407. package/es/components/date-picker/DatePickerPortal.d.ts +9 -0
  408. package/es/components/date-picker/DatePickerPortal.js +52 -0
  409. package/es/components/date-picker/DatePickerPortal.js.map +1 -0
  410. package/es/components/date-picker/style/dnb-date-picker.css +64 -55
  411. package/es/components/date-picker/style/dnb-date-picker.min.css +1 -1
  412. package/es/components/date-picker/style/dnb-date-picker.scss +90 -75
  413. package/es/components/form-row/FormRow.js +2 -7
  414. package/es/components/form-row/FormRow.js.map +1 -1
  415. package/es/components/form-row/style/dnb-form-row.css +3 -3
  416. package/es/components/form-row/style/dnb-form-row.min.css +1 -1
  417. package/es/components/form-status/FormStatus.js +17 -19
  418. package/es/components/form-status/FormStatus.js.map +1 -1
  419. package/es/components/height-animation/HeightAnimationInstance.d.ts +1 -0
  420. package/es/components/height-animation/HeightAnimationInstance.js +26 -1
  421. package/es/components/height-animation/HeightAnimationInstance.js.map +1 -1
  422. package/es/components/input-masked/InputMasked.d.ts +1 -1
  423. package/es/components/input-masked/InputMasked.js +2 -2
  424. package/es/components/input-masked/InputMasked.js.map +1 -1
  425. package/es/components/input-masked/InputMaskedDocs.js +1 -1
  426. package/es/components/input-masked/InputMaskedDocs.js.map +1 -1
  427. package/es/components/input-masked/InputMaskedHooks.js +1 -1
  428. package/es/components/input-masked/InputMaskedHooks.js.map +1 -1
  429. package/es/components/input-masked/InputMaskedUtils.js +1 -1
  430. package/es/components/input-masked/InputMaskedUtils.js.map +1 -1
  431. package/es/components/input-masked/style/dnb-input-masked.css +3 -3
  432. package/es/components/input-masked/style/dnb-input-masked.min.css +1 -1
  433. package/es/components/pagination/Pagination.d.ts +12 -0
  434. package/es/components/pagination/Pagination.js +7 -3
  435. package/es/components/pagination/Pagination.js.map +1 -1
  436. package/es/components/pagination/PaginationBar.d.ts +2 -1
  437. package/es/components/pagination/PaginationBar.js +10 -3
  438. package/es/components/pagination/PaginationBar.js.map +1 -1
  439. package/es/components/radio/style/dnb-radio.css +3 -3
  440. package/es/components/radio/style/dnb-radio.min.css +1 -1
  441. package/es/components/space/style/dnb-space.css +4 -4
  442. package/es/components/space/style/dnb-space.min.css +1 -1
  443. package/es/components/space/style/dnb-space.scss +2 -12
  444. package/es/components/space/style/space-mixins.scss +21 -0
  445. package/es/components/tabs/Tabs.d.ts +1 -1
  446. package/es/components/tabs/Tabs.js +4 -12
  447. package/es/components/tabs/Tabs.js.map +1 -1
  448. package/es/components/toggle-button/ToggleButton.d.ts +9 -5
  449. package/es/components/toggle-button/ToggleButton.js +2 -0
  450. package/es/components/toggle-button/ToggleButton.js.map +1 -1
  451. package/es/components/toggle-button/ToggleButtonDocs.d.ts +2 -0
  452. package/es/components/toggle-button/ToggleButtonDocs.js +80 -0
  453. package/es/components/toggle-button/ToggleButtonDocs.js.map +1 -0
  454. package/es/components/toggle-button/ToggleButtonGroup.d.ts +21 -6
  455. package/es/components/toggle-button/ToggleButtonGroupDocs.d.ts +2 -0
  456. package/es/components/toggle-button/ToggleButtonGroupDocs.js +83 -0
  457. package/es/components/toggle-button/ToggleButtonGroupDocs.js.map +1 -0
  458. package/es/components/toggle-button/style/dnb-toggle-button.css +3 -3
  459. package/es/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  460. package/es/elements/blockquote/style/blockquote-mixins.scss +5 -3
  461. package/es/elements/code/style/code-mixins.scss +2 -3
  462. package/es/elements/hr/style/hr-mixins.scss +2 -3
  463. package/es/elements/img/style/img-mixins.scss +3 -3
  464. package/es/elements/lists/style/lists-mixins.scss +3 -6
  465. package/es/elements/typography/style/typography-mixins.scss +2 -3
  466. package/es/extensions/forms/DataContext/Context.d.ts +15 -4
  467. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  468. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +1 -1
  469. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  470. package/es/extensions/forms/DataContext/Provider/Provider.js +27 -16
  471. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  472. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +3 -3
  473. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  474. package/es/extensions/forms/Field/Date/Date.js +5 -4
  475. package/es/extensions/forms/Field/Date/Date.js.map +1 -1
  476. package/es/extensions/forms/Field/Expiry/Expiry.js +4 -3
  477. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  478. package/es/extensions/forms/Field/Indeterminate/useDependencePaths.js +7 -7
  479. package/es/extensions/forms/Field/Indeterminate/useDependencePaths.js.map +1 -1
  480. package/es/extensions/forms/Field/Number/Number.js +2 -2
  481. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  482. package/es/extensions/forms/Field/Option/Option.d.ts +2 -1
  483. package/es/extensions/forms/Field/Option/Option.js +2 -12
  484. package/es/extensions/forms/Field/Option/Option.js.map +1 -1
  485. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +10 -5
  486. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  487. package/es/extensions/forms/Field/Provider/useFieldProvider.d.ts +4 -3
  488. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +12 -4
  489. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  490. package/es/extensions/forms/Field/Selection/Selection.d.ts +8 -1
  491. package/es/extensions/forms/Field/Selection/Selection.js +22 -14
  492. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  493. package/es/extensions/forms/Field/Selection/SelectionDocs.js +5 -0
  494. package/es/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -1
  495. package/es/extensions/forms/Field/Slider/Slider.js +4 -3
  496. package/es/extensions/forms/Field/Slider/Slider.js.map +1 -1
  497. package/es/extensions/forms/Field/String/String.js +2 -2
  498. package/es/extensions/forms/Field/String/String.js.map +1 -1
  499. package/es/extensions/forms/Field/Toggle/Toggle.js +14 -4
  500. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  501. package/es/extensions/forms/Field/Upload/Upload.js +21 -20
  502. package/es/extensions/forms/Field/Upload/Upload.js.map +1 -1
  503. package/es/extensions/forms/FieldBlock/FieldBlock.js +14 -38
  504. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  505. package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +3 -3
  506. package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  507. package/es/extensions/forms/Form/Isolation/Isolation.js +17 -3
  508. package/es/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  509. package/es/extensions/forms/Form/MainHeading/MainHeadingDocs.d.ts +2 -0
  510. package/es/extensions/forms/Form/MainHeading/MainHeadingDocs.js +20 -0
  511. package/es/extensions/forms/Form/MainHeading/MainHeadingDocs.js.map +1 -0
  512. package/es/extensions/forms/Form/Section/EditContainer/CancelButton.js +7 -18
  513. package/es/extensions/forms/Form/Section/EditContainer/CancelButton.js.map +1 -1
  514. package/es/extensions/forms/Form/Section/style/dnb-form-section.css +0 -10
  515. package/es/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -1
  516. package/es/extensions/forms/Form/Section/style/dnb-form-section.scss +1 -12
  517. package/es/extensions/forms/Form/SubHeading/SubHeadingDocs.d.ts +2 -0
  518. package/es/extensions/forms/Form/SubHeading/SubHeadingDocs.js +20 -0
  519. package/es/extensions/forms/Form/SubHeading/SubHeadingDocs.js.map +1 -0
  520. package/es/extensions/forms/Form/Visibility/Visibility.d.ts +11 -1
  521. package/es/extensions/forms/Form/Visibility/Visibility.js +20 -11
  522. package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  523. package/es/extensions/forms/Form/Visibility/VisibilityContext.d.ts +2 -0
  524. package/es/extensions/forms/Form/Visibility/VisibilityContext.js.map +1 -1
  525. package/es/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
  526. package/es/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  527. package/es/extensions/forms/Form/Visibility/useVisibility.js +18 -9
  528. package/es/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  529. package/es/extensions/forms/Form/data-context/useValidation.d.ts +2 -1
  530. package/es/extensions/forms/Form/data-context/useValidation.js.map +1 -1
  531. package/es/extensions/forms/Iterate/Array/Array.js +47 -28
  532. package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
  533. package/es/extensions/forms/Iterate/Array/ArrayDocs.js +14 -4
  534. package/es/extensions/forms/Iterate/Array/ArrayDocs.js.map +1 -1
  535. package/es/extensions/forms/Iterate/Array/ArrayItemArea.js +2 -1
  536. package/es/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -1
  537. package/es/extensions/forms/Iterate/Array/ArrayItemAreaContext.d.ts +2 -0
  538. package/es/extensions/forms/Iterate/Array/ArrayItemAreaContext.js.map +1 -1
  539. package/es/extensions/forms/Iterate/Array/types.d.ts +8 -3
  540. package/es/extensions/forms/Iterate/Array/types.js.map +1 -1
  541. package/es/extensions/forms/Iterate/EditContainer/CancelButton.js +5 -15
  542. package/es/extensions/forms/Iterate/EditContainer/CancelButton.js.map +1 -1
  543. package/es/extensions/forms/Iterate/EditContainer/DoneButton.js +9 -1
  544. package/es/extensions/forms/Iterate/EditContainer/DoneButton.js.map +1 -1
  545. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js +1 -3
  546. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  547. package/es/extensions/forms/Iterate/ItemNo/useIItemNo.d.ts +5 -0
  548. package/es/extensions/forms/Iterate/ItemNo/useIItemNo.js +41 -0
  549. package/es/extensions/forms/Iterate/ItemNo/useIItemNo.js.map +1 -0
  550. package/es/extensions/forms/Iterate/IterateItemContext.d.ts +2 -0
  551. package/es/extensions/forms/Iterate/IterateItemContext.js.map +1 -1
  552. package/es/extensions/forms/Iterate/PushButton/PushButton.d.ts +1 -0
  553. package/es/extensions/forms/Iterate/PushButton/PushButton.js +17 -15
  554. package/es/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  555. package/es/extensions/forms/Iterate/PushButton/PushButtonDocs.js +5 -0
  556. package/es/extensions/forms/Iterate/PushButton/PushButtonDocs.js.map +1 -1
  557. package/es/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +17 -1
  558. package/es/extensions/forms/Iterate/PushContainer/PushContainer.js +34 -18
  559. package/es/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
  560. package/es/extensions/forms/Iterate/PushContainer/PushContainerContext.d.ts +1 -0
  561. package/es/extensions/forms/Iterate/PushContainer/PushContainerContext.js.map +1 -1
  562. package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +10 -0
  563. package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  564. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js +7 -6
  565. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  566. package/es/extensions/forms/Iterate/Toolbar/Toolbar.js +3 -2
  567. package/es/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  568. package/es/extensions/forms/Iterate/ViewContainer/EditButton.js +1 -0
  569. package/es/extensions/forms/Iterate/ViewContainer/EditButton.js.map +1 -1
  570. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js +2 -3
  571. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  572. package/es/extensions/forms/Iterate/Visibility/Visibility.d.ts +7 -0
  573. package/es/extensions/forms/Iterate/Visibility/Visibility.js +11 -0
  574. package/es/extensions/forms/Iterate/Visibility/Visibility.js.map +1 -0
  575. package/es/extensions/forms/Iterate/Visibility/index.d.ts +2 -0
  576. package/es/extensions/forms/Iterate/Visibility/index.js +3 -0
  577. package/es/extensions/forms/Iterate/Visibility/index.js.map +1 -0
  578. package/es/extensions/forms/Iterate/hooks/index.d.ts +1 -0
  579. package/es/extensions/forms/Iterate/hooks/index.js +1 -0
  580. package/es/extensions/forms/Iterate/hooks/index.js.map +1 -1
  581. package/es/extensions/forms/Iterate/hooks/useArrayLimit.d.ts +1 -3
  582. package/es/extensions/forms/Iterate/hooks/useArrayLimit.js +1 -3
  583. package/es/extensions/forms/Iterate/hooks/useArrayLimit.js.map +1 -1
  584. package/es/extensions/forms/Iterate/hooks/useItemPath.d.ts +4 -0
  585. package/es/extensions/forms/Iterate/hooks/useItemPath.js +16 -0
  586. package/es/extensions/forms/Iterate/hooks/useItemPath.js.map +1 -0
  587. package/es/extensions/forms/Iterate/hooks/useSwitchContainerMode.d.ts +1 -3
  588. package/es/extensions/forms/Iterate/hooks/useSwitchContainerMode.js +1 -3
  589. package/es/extensions/forms/Iterate/hooks/useSwitchContainerMode.js.map +1 -1
  590. package/es/extensions/forms/Iterate/index.d.ts +1 -0
  591. package/es/extensions/forms/Iterate/index.js +1 -0
  592. package/es/extensions/forms/Iterate/index.js.map +1 -1
  593. package/es/extensions/forms/Iterate/style/dnb-iterate.css +16 -0
  594. package/es/extensions/forms/Iterate/style/dnb-iterate.min.css +1 -1
  595. package/es/extensions/forms/Iterate/style/dnb-iterate.scss +25 -2
  596. package/es/extensions/forms/Tools/GenerateSchema.js +12 -6
  597. package/es/extensions/forms/Tools/GenerateSchema.js.map +1 -1
  598. package/es/extensions/forms/Tools/ListAllProps.js +9 -5
  599. package/es/extensions/forms/Tools/ListAllProps.js.map +1 -1
  600. package/es/extensions/forms/Tools/Log.js +2 -1
  601. package/es/extensions/forms/Tools/Log.js.map +1 -1
  602. package/es/extensions/forms/Value/ArraySelection/ArraySelection.js +4 -4
  603. package/es/extensions/forms/Value/ArraySelection/ArraySelection.js.map +1 -1
  604. package/es/extensions/forms/Value/Selection/Selection.js +5 -5
  605. package/es/extensions/forms/Value/Selection/Selection.js.map +1 -1
  606. package/es/extensions/forms/ValueBlock/ValueBlock.js +26 -9
  607. package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  608. package/es/extensions/forms/ValueBlock/style/dnb-value-block.css +6 -1
  609. package/es/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  610. package/es/extensions/forms/ValueBlock/style/dnb-value-block.scss +22 -10
  611. package/es/extensions/forms/Wizard/Container/WizardContainer.js +6 -3
  612. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  613. package/es/extensions/forms/Wizard/Container/useHandleLayoutEffect.d.ts +2 -1
  614. package/es/extensions/forms/Wizard/Container/useHandleLayoutEffect.js +4 -3
  615. package/es/extensions/forms/Wizard/Container/useHandleLayoutEffect.js.map +1 -1
  616. package/es/extensions/forms/hooks/DataValueWritePropsDocs.js +9 -9
  617. package/es/extensions/forms/hooks/DataValueWritePropsDocs.js.map +1 -1
  618. package/es/extensions/forms/hooks/useDataValue.d.ts +2 -2
  619. package/es/extensions/forms/hooks/useDataValue.js +4 -8
  620. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  621. package/es/extensions/forms/hooks/useExternalValue.js +2 -2
  622. package/es/extensions/forms/hooks/useExternalValue.js.map +1 -1
  623. package/es/extensions/forms/hooks/useFieldProps.d.ts +8 -2
  624. package/es/extensions/forms/hooks/useFieldProps.js +163 -76
  625. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  626. package/es/extensions/forms/hooks/usePath.js +2 -2
  627. package/es/extensions/forms/hooks/usePath.js.map +1 -1
  628. package/es/extensions/forms/hooks/useValueProps.js +5 -5
  629. package/es/extensions/forms/hooks/useValueProps.js.map +1 -1
  630. package/es/extensions/forms/style/dnb-forms.css +25 -14
  631. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  632. package/es/extensions/forms/types.d.ts +33 -6
  633. package/es/extensions/forms/types.js.map +1 -1
  634. package/es/extensions/forms/utils/json-pointer/json-pointer.js +6 -0
  635. package/es/extensions/forms/utils/json-pointer/json-pointer.js.map +1 -1
  636. package/es/extensions/payment-card/PaymentCard.js +3 -12
  637. package/es/extensions/payment-card/PaymentCard.js.map +1 -1
  638. package/es/fragments/drawer-list/DrawerList.d.ts +4 -2
  639. package/es/fragments/drawer-list/DrawerList.js +33 -47
  640. package/es/fragments/drawer-list/DrawerList.js.map +1 -1
  641. package/es/fragments/drawer-list/DrawerListDocs.js +3 -3
  642. package/es/fragments/drawer-list/DrawerListDocs.js.map +1 -1
  643. package/es/fragments/drawer-list/style/dnb-drawer-list.scss +1 -1
  644. package/es/shared/AlignmentHelper.js +0 -4
  645. package/es/shared/AlignmentHelper.js.map +1 -1
  646. package/es/shared/Eufemia.d.ts +1 -1
  647. package/es/shared/Eufemia.js +2 -2
  648. package/es/shared/Eufemia.js.map +1 -1
  649. package/es/shared/component-helper.js +2 -1
  650. package/es/shared/component-helper.js.map +1 -1
  651. package/es/style/core/scopes.scss +1 -1
  652. package/es/style/core/utilities.scss +3 -12
  653. package/es/style/dnb-ui-basis.css +1 -1
  654. package/es/style/dnb-ui-basis.min.css +1 -1
  655. package/es/style/dnb-ui-body.css +1 -1
  656. package/es/style/dnb-ui-body.min.css +1 -1
  657. package/es/style/dnb-ui-components.css +106 -86
  658. package/es/style/dnb-ui-components.min.css +4 -4
  659. package/es/style/dnb-ui-core.css +1 -1
  660. package/es/style/dnb-ui-core.min.css +1 -1
  661. package/es/style/dnb-ui-elements.css +151 -31
  662. package/es/style/dnb-ui-elements.min.css +1 -1
  663. package/es/style/dnb-ui-extensions.css +25 -14
  664. package/es/style/dnb-ui-extensions.min.css +1 -1
  665. package/es/style/dnb-ui-forms.css +25 -14
  666. package/es/style/dnb-ui-forms.min.css +1 -1
  667. package/es/style/dnb-ui-fragments.css +1 -1
  668. package/es/style/dnb-ui-fragments.min.css +1 -1
  669. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +151 -31
  670. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  671. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +131 -100
  672. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
  673. package/es/style/themes/theme-eiendom/eiendom-theme-elements.css +151 -31
  674. package/es/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  675. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +25 -14
  676. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  677. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +25 -14
  678. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  679. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +151 -31
  680. package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  681. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +131 -100
  682. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +4 -4
  683. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +151 -31
  684. package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  685. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +25 -14
  686. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  687. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +25 -14
  688. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  689. package/es/style/themes/theme-ui/ui-theme-basis.css +151 -31
  690. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  691. package/es/style/themes/theme-ui/ui-theme-components.css +131 -100
  692. package/es/style/themes/theme-ui/ui-theme-components.min.css +4 -4
  693. package/es/style/themes/theme-ui/ui-theme-elements.css +151 -31
  694. package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  695. package/es/style/themes/theme-ui/ui-theme-extensions.css +25 -14
  696. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  697. package/es/style/themes/theme-ui/ui-theme-forms.css +25 -14
  698. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  699. package/es/style/themes/theme-ui/ui-theme-tags.css +100 -19
  700. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  701. package/esm/dnb-ui-basis.min.mjs +1 -1
  702. package/esm/dnb-ui-components.min.mjs +1 -1
  703. package/esm/dnb-ui-elements.min.mjs +1 -1
  704. package/esm/dnb-ui-extensions.min.mjs +5 -5
  705. package/esm/dnb-ui-lib.min.mjs +1 -1
  706. package/extensions/forms/DataContext/Context.d.ts +15 -4
  707. package/extensions/forms/DataContext/Context.js.map +1 -1
  708. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +1 -1
  709. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  710. package/extensions/forms/DataContext/Provider/Provider.js +28 -17
  711. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  712. package/extensions/forms/Field/ArraySelection/ArraySelection.js +3 -3
  713. package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  714. package/extensions/forms/Field/Date/Date.js +5 -4
  715. package/extensions/forms/Field/Date/Date.js.map +1 -1
  716. package/extensions/forms/Field/Expiry/Expiry.js +4 -3
  717. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  718. package/extensions/forms/Field/Indeterminate/useDependencePaths.js +7 -7
  719. package/extensions/forms/Field/Indeterminate/useDependencePaths.js.map +1 -1
  720. package/extensions/forms/Field/Number/Number.js +2 -2
  721. package/extensions/forms/Field/Number/Number.js.map +1 -1
  722. package/extensions/forms/Field/Option/Option.d.ts +2 -1
  723. package/extensions/forms/Field/Option/Option.js +2 -13
  724. package/extensions/forms/Field/Option/Option.js.map +1 -1
  725. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +10 -5
  726. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  727. package/extensions/forms/Field/Provider/useFieldProvider.d.ts +4 -3
  728. package/extensions/forms/Field/SelectCountry/SelectCountry.js +12 -4
  729. package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  730. package/extensions/forms/Field/Selection/Selection.d.ts +8 -1
  731. package/extensions/forms/Field/Selection/Selection.js +19 -12
  732. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  733. package/extensions/forms/Field/Selection/SelectionDocs.js +5 -0
  734. package/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -1
  735. package/extensions/forms/Field/Slider/Slider.js +4 -3
  736. package/extensions/forms/Field/Slider/Slider.js.map +1 -1
  737. package/extensions/forms/Field/String/String.js +2 -2
  738. package/extensions/forms/Field/String/String.js.map +1 -1
  739. package/extensions/forms/Field/Toggle/Toggle.js +14 -4
  740. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  741. package/extensions/forms/Field/Upload/Upload.js +21 -21
  742. package/extensions/forms/Field/Upload/Upload.js.map +1 -1
  743. package/extensions/forms/FieldBlock/FieldBlock.js +14 -38
  744. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  745. package/extensions/forms/FieldBlock/style/dnb-field-block.css +3 -3
  746. package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  747. package/extensions/forms/Form/Isolation/Isolation.js +17 -3
  748. package/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  749. package/extensions/forms/Form/MainHeading/MainHeadingDocs.d.ts +2 -0
  750. package/extensions/forms/Form/MainHeading/MainHeadingDocs.js +20 -0
  751. package/extensions/forms/Form/MainHeading/MainHeadingDocs.js.map +1 -0
  752. package/extensions/forms/Form/Section/EditContainer/CancelButton.js +7 -18
  753. package/extensions/forms/Form/Section/EditContainer/CancelButton.js.map +1 -1
  754. package/extensions/forms/Form/Section/style/dnb-form-section.css +0 -10
  755. package/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -1
  756. package/extensions/forms/Form/Section/style/dnb-form-section.scss +1 -12
  757. package/extensions/forms/Form/SubHeading/SubHeadingDocs.d.ts +2 -0
  758. package/extensions/forms/Form/SubHeading/SubHeadingDocs.js +20 -0
  759. package/extensions/forms/Form/SubHeading/SubHeadingDocs.js.map +1 -0
  760. package/extensions/forms/Form/Visibility/Visibility.d.ts +11 -1
  761. package/extensions/forms/Form/Visibility/Visibility.js +20 -11
  762. package/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  763. package/extensions/forms/Form/Visibility/VisibilityContext.d.ts +2 -0
  764. package/extensions/forms/Form/Visibility/VisibilityContext.js.map +1 -1
  765. package/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
  766. package/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  767. package/extensions/forms/Form/Visibility/useVisibility.js +18 -9
  768. package/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  769. package/extensions/forms/Form/data-context/useValidation.d.ts +2 -1
  770. package/extensions/forms/Form/data-context/useValidation.js.map +1 -1
  771. package/extensions/forms/Iterate/Array/Array.js +50 -30
  772. package/extensions/forms/Iterate/Array/Array.js.map +1 -1
  773. package/extensions/forms/Iterate/Array/ArrayDocs.js +14 -4
  774. package/extensions/forms/Iterate/Array/ArrayDocs.js.map +1 -1
  775. package/extensions/forms/Iterate/Array/ArrayItemArea.js +2 -1
  776. package/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -1
  777. package/extensions/forms/Iterate/Array/ArrayItemAreaContext.d.ts +2 -0
  778. package/extensions/forms/Iterate/Array/ArrayItemAreaContext.js.map +1 -1
  779. package/extensions/forms/Iterate/Array/types.d.ts +8 -3
  780. package/extensions/forms/Iterate/Array/types.js.map +1 -1
  781. package/extensions/forms/Iterate/EditContainer/CancelButton.js +5 -15
  782. package/extensions/forms/Iterate/EditContainer/CancelButton.js.map +1 -1
  783. package/extensions/forms/Iterate/EditContainer/DoneButton.js +9 -1
  784. package/extensions/forms/Iterate/EditContainer/DoneButton.js.map +1 -1
  785. package/extensions/forms/Iterate/EditContainer/EditContainer.js +1 -3
  786. package/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  787. package/extensions/forms/Iterate/ItemNo/useIItemNo.d.ts +5 -0
  788. package/extensions/forms/Iterate/ItemNo/useIItemNo.js +42 -0
  789. package/extensions/forms/Iterate/ItemNo/useIItemNo.js.map +1 -0
  790. package/extensions/forms/Iterate/IterateItemContext.d.ts +2 -0
  791. package/extensions/forms/Iterate/IterateItemContext.js.map +1 -1
  792. package/extensions/forms/Iterate/PushButton/PushButton.d.ts +1 -0
  793. package/extensions/forms/Iterate/PushButton/PushButton.js +17 -15
  794. package/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  795. package/extensions/forms/Iterate/PushButton/PushButtonDocs.js +5 -0
  796. package/extensions/forms/Iterate/PushButton/PushButtonDocs.js.map +1 -1
  797. package/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +17 -1
  798. package/extensions/forms/Iterate/PushContainer/PushContainer.js +34 -18
  799. package/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
  800. package/extensions/forms/Iterate/PushContainer/PushContainerContext.d.ts +1 -0
  801. package/extensions/forms/Iterate/PushContainer/PushContainerContext.js.map +1 -1
  802. package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +10 -0
  803. package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  804. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js +7 -6
  805. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  806. package/extensions/forms/Iterate/Toolbar/Toolbar.js +3 -2
  807. package/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  808. package/extensions/forms/Iterate/ViewContainer/EditButton.js +1 -0
  809. package/extensions/forms/Iterate/ViewContainer/EditButton.js.map +1 -1
  810. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js +2 -3
  811. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  812. package/extensions/forms/Iterate/Visibility/Visibility.d.ts +7 -0
  813. package/extensions/forms/Iterate/Visibility/Visibility.js +11 -0
  814. package/extensions/forms/Iterate/Visibility/Visibility.js.map +1 -0
  815. package/extensions/forms/Iterate/Visibility/index.d.ts +2 -0
  816. package/extensions/forms/Iterate/Visibility/index.js +3 -0
  817. package/extensions/forms/Iterate/Visibility/index.js.map +1 -0
  818. package/extensions/forms/Iterate/hooks/index.d.ts +1 -0
  819. package/extensions/forms/Iterate/hooks/index.js +1 -0
  820. package/extensions/forms/Iterate/hooks/index.js.map +1 -1
  821. package/extensions/forms/Iterate/hooks/useArrayLimit.d.ts +1 -3
  822. package/extensions/forms/Iterate/hooks/useArrayLimit.js +1 -4
  823. package/extensions/forms/Iterate/hooks/useArrayLimit.js.map +1 -1
  824. package/extensions/forms/Iterate/hooks/useItemPath.d.ts +4 -0
  825. package/extensions/forms/Iterate/hooks/useItemPath.js +16 -0
  826. package/extensions/forms/Iterate/hooks/useItemPath.js.map +1 -0
  827. package/extensions/forms/Iterate/hooks/useSwitchContainerMode.d.ts +1 -3
  828. package/extensions/forms/Iterate/hooks/useSwitchContainerMode.js +1 -4
  829. package/extensions/forms/Iterate/hooks/useSwitchContainerMode.js.map +1 -1
  830. package/extensions/forms/Iterate/index.d.ts +1 -0
  831. package/extensions/forms/Iterate/index.js +1 -0
  832. package/extensions/forms/Iterate/index.js.map +1 -1
  833. package/extensions/forms/Iterate/style/dnb-iterate.css +16 -0
  834. package/extensions/forms/Iterate/style/dnb-iterate.min.css +1 -1
  835. package/extensions/forms/Iterate/style/dnb-iterate.scss +25 -2
  836. package/extensions/forms/Tools/GenerateSchema.js +15 -9
  837. package/extensions/forms/Tools/GenerateSchema.js.map +1 -1
  838. package/extensions/forms/Tools/ListAllProps.js +11 -7
  839. package/extensions/forms/Tools/ListAllProps.js.map +1 -1
  840. package/extensions/forms/Tools/Log.js +2 -1
  841. package/extensions/forms/Tools/Log.js.map +1 -1
  842. package/extensions/forms/Value/ArraySelection/ArraySelection.js +4 -4
  843. package/extensions/forms/Value/ArraySelection/ArraySelection.js.map +1 -1
  844. package/extensions/forms/Value/Selection/Selection.js +5 -5
  845. package/extensions/forms/Value/Selection/Selection.js.map +1 -1
  846. package/extensions/forms/ValueBlock/ValueBlock.js +27 -9
  847. package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  848. package/extensions/forms/ValueBlock/style/dnb-value-block.css +6 -1
  849. package/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  850. package/extensions/forms/ValueBlock/style/dnb-value-block.scss +22 -10
  851. package/extensions/forms/Wizard/Container/WizardContainer.js +6 -3
  852. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  853. package/extensions/forms/Wizard/Container/useHandleLayoutEffect.d.ts +2 -1
  854. package/extensions/forms/Wizard/Container/useHandleLayoutEffect.js +4 -3
  855. package/extensions/forms/Wizard/Container/useHandleLayoutEffect.js.map +1 -1
  856. package/extensions/forms/hooks/DataValueWritePropsDocs.js +9 -9
  857. package/extensions/forms/hooks/DataValueWritePropsDocs.js.map +1 -1
  858. package/extensions/forms/hooks/useDataValue.d.ts +2 -2
  859. package/extensions/forms/hooks/useDataValue.js +5 -9
  860. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  861. package/extensions/forms/hooks/useExternalValue.js +2 -2
  862. package/extensions/forms/hooks/useExternalValue.js.map +1 -1
  863. package/extensions/forms/hooks/useFieldProps.d.ts +8 -2
  864. package/extensions/forms/hooks/useFieldProps.js +164 -76
  865. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  866. package/extensions/forms/hooks/usePath.js +2 -2
  867. package/extensions/forms/hooks/usePath.js.map +1 -1
  868. package/extensions/forms/hooks/useValueProps.js +5 -5
  869. package/extensions/forms/hooks/useValueProps.js.map +1 -1
  870. package/extensions/forms/style/dnb-forms.css +25 -14
  871. package/extensions/forms/style/dnb-forms.min.css +1 -1
  872. package/extensions/forms/types.d.ts +33 -6
  873. package/extensions/forms/types.js.map +1 -1
  874. package/extensions/forms/utils/json-pointer/json-pointer.js +6 -0
  875. package/extensions/forms/utils/json-pointer/json-pointer.js.map +1 -1
  876. package/extensions/payment-card/PaymentCard.js +3 -12
  877. package/extensions/payment-card/PaymentCard.js.map +1 -1
  878. package/fragments/drawer-list/DrawerList.d.ts +4 -2
  879. package/fragments/drawer-list/DrawerList.js +33 -47
  880. package/fragments/drawer-list/DrawerList.js.map +1 -1
  881. package/fragments/drawer-list/DrawerListDocs.js +3 -3
  882. package/fragments/drawer-list/DrawerListDocs.js.map +1 -1
  883. package/fragments/drawer-list/style/dnb-drawer-list.scss +1 -1
  884. package/package.json +1 -1
  885. package/shared/AlignmentHelper.js +0 -4
  886. package/shared/AlignmentHelper.js.map +1 -1
  887. package/shared/Eufemia.d.ts +1 -1
  888. package/shared/Eufemia.js +2 -2
  889. package/shared/Eufemia.js.map +1 -1
  890. package/shared/component-helper.js +2 -1
  891. package/shared/component-helper.js.map +1 -1
  892. package/style/core/scopes.scss +1 -1
  893. package/style/core/utilities.scss +3 -12
  894. package/style/dnb-ui-basis.css +1 -1
  895. package/style/dnb-ui-basis.min.css +1 -1
  896. package/style/dnb-ui-body.css +1 -1
  897. package/style/dnb-ui-body.min.css +1 -1
  898. package/style/dnb-ui-components.css +106 -86
  899. package/style/dnb-ui-components.min.css +4 -4
  900. package/style/dnb-ui-core.css +1 -1
  901. package/style/dnb-ui-core.min.css +1 -1
  902. package/style/dnb-ui-elements.css +151 -31
  903. package/style/dnb-ui-elements.min.css +1 -1
  904. package/style/dnb-ui-extensions.css +25 -14
  905. package/style/dnb-ui-extensions.min.css +1 -1
  906. package/style/dnb-ui-forms.css +25 -14
  907. package/style/dnb-ui-forms.min.css +1 -1
  908. package/style/dnb-ui-fragments.css +1 -1
  909. package/style/dnb-ui-fragments.min.css +1 -1
  910. package/style/themes/theme-eiendom/eiendom-theme-basis.css +151 -31
  911. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  912. package/style/themes/theme-eiendom/eiendom-theme-components.css +131 -100
  913. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
  914. package/style/themes/theme-eiendom/eiendom-theme-elements.css +151 -31
  915. package/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  916. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +25 -14
  917. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  918. package/style/themes/theme-eiendom/eiendom-theme-forms.css +25 -14
  919. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  920. package/style/themes/theme-sbanken/sbanken-theme-basis.css +151 -31
  921. package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  922. package/style/themes/theme-sbanken/sbanken-theme-components.css +131 -100
  923. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +4 -4
  924. package/style/themes/theme-sbanken/sbanken-theme-elements.css +151 -31
  925. package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  926. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +25 -14
  927. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  928. package/style/themes/theme-sbanken/sbanken-theme-forms.css +25 -14
  929. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  930. package/style/themes/theme-ui/ui-theme-basis.css +151 -31
  931. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  932. package/style/themes/theme-ui/ui-theme-components.css +131 -100
  933. package/style/themes/theme-ui/ui-theme-components.min.css +4 -4
  934. package/style/themes/theme-ui/ui-theme-elements.css +151 -31
  935. package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  936. package/style/themes/theme-ui/ui-theme-extensions.css +25 -14
  937. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  938. package/style/themes/theme-ui/ui-theme-forms.css +25 -14
  939. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  940. package/style/themes/theme-ui/ui-theme-tags.css +100 -19
  941. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  942. package/umd/dnb-ui-basis.min.js +1 -1
  943. package/umd/dnb-ui-components.min.js +1 -1
  944. package/umd/dnb-ui-elements.min.js +1 -1
  945. package/umd/dnb-ui-extensions.min.js +3 -3
  946. package/umd/dnb-ui-lib.min.js +1 -1
@@ -33,6 +33,7 @@ function SliderComponent(props) {
33
33
  const {
34
34
  id,
35
35
  path,
36
+ itemPath,
36
37
  step = 1,
37
38
  min = 0,
38
39
  max = 100,
@@ -58,13 +59,13 @@ function SliderComponent(props) {
58
59
  omitMultiplePathWarning: true
59
60
  });
60
61
  useMemo(() => {
61
- if (path && numberFormat) {
62
+ if ((path || itemPath) && numberFormat) {
62
63
  const {
63
64
  number
64
65
  } = getFormattedNumber(value, numberFormat);
65
- setDisplayValue(path, number);
66
+ setDisplayValue(number);
66
67
  }
67
- }, [numberFormat, path, setDisplayValue, value]);
68
+ }, [itemPath, numberFormat, path, setDisplayValue, value]);
68
69
  const handleLocalChange = useCallback(({
69
70
  value
70
71
  }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.js","names":["React","useCallback","useContext","useMemo","useRef","FieldBlock","useFieldProps","getFormattedNumber","Slider","pickSpacingProps","DataContext","useDataValue","SliderComponent","props","_ref","_ref2","_props$paths","dataContextRef","current","getSourceValue","getValues","source","Array","isArray","map","s","value","paths","path","defaultValue","preparedProps","_objectSpread","step","min","max","id","width","hasError","disabled","vertical","reverse","hideButtons","multiThumbBehavior","thumbTitle","subtractTitle","addTitle","numberFormat","tooltip","alwaysShowTooltip","extensions","handleChange","handleFocus","handleBlur","setDisplayValue","omitMultiplePathWarning","number","handleLocalChange","forEach","i","updateDataValue","fieldBlockProps","forId","sliderProps","status","undefined","on_change","on_drag_start","on_drag_end","stretch","createElement","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Slider/Slider.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo, useRef } from 'react'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { FieldProps, Path } from '../../types'\nimport { getFormattedNumber } from '../../../../components/slider/SliderHelpers'\nimport Slider, { SliderProps } from '../../../../components/Slider'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport DataContext, { ContextState } from '../../DataContext/Context'\nimport useDataValue from '../../hooks/useDataValue'\n\nexport type SliderVisibilityEvent = React.MouseEvent<HTMLButtonElement> & {\n value: string\n}\n\nexport type SliderValue = number | Array<number>\nexport type Props = FieldProps<SliderValue> & {\n /**\n * Define an array with JSON Pointers for multiple thumb buttons.\n */\n paths?: Array<Path>\n step?: SliderProps['step'] | Path\n min?: SliderProps['min'] | Path\n max?: SliderProps['max'] | Path\n vertical?: SliderProps['vertical']\n reverse?: SliderProps['reverse']\n hideButtons?: SliderProps['hideButtons']\n multiThumbBehavior?: SliderProps['multiThumbBehavior']\n thumbTitle?: SliderProps['thumbTitle']\n subtractTitle?: SliderProps['subtractTitle']\n addTitle?: SliderProps['addTitle']\n numberFormat?: SliderProps['numberFormat']\n tooltip?: SliderProps['tooltip']\n alwaysShowTooltip?: SliderProps['alwaysShowTooltip']\n extensions?: SliderProps['extensions']\n\n /** Styling */\n width?: FieldBlockWidth\n}\n\nfunction SliderComponent(props: Props) {\n const dataContextRef = useRef<ContextState>()\n dataContextRef.current = useContext<ContextState>(DataContext)\n\n const { getSourceValue } = useDataValue()\n const getValues = useCallback(\n (source: SliderValue | Path | Array<Path>) => {\n if (Array.isArray(source)) {\n return source.map((s) => getSourceValue(s) || 0)\n }\n\n return getSourceValue(source) || 0\n },\n [getSourceValue]\n )\n\n const value = getValues(\n props.paths ?? props.path ?? props.value ?? props.defaultValue\n )\n const preparedProps = {\n ...props,\n step: getSourceValue(props.step),\n min: getSourceValue(props.min),\n max: getSourceValue(props.max),\n }\n\n const {\n id,\n path,\n step = 1,\n min = 0,\n max = 100,\n width = 'stretch',\n hasError,\n disabled,\n vertical,\n reverse,\n hideButtons,\n multiThumbBehavior,\n thumbTitle,\n subtractTitle,\n addTitle,\n numberFormat,\n tooltip,\n alwaysShowTooltip,\n extensions,\n handleChange,\n handleFocus,\n handleBlur,\n setDisplayValue,\n } = useFieldProps(preparedProps, {\n omitMultiplePathWarning: true,\n })\n\n useMemo(() => {\n if (path && numberFormat) {\n const { number } = getFormattedNumber(value, numberFormat)\n setDisplayValue(path, number)\n }\n }, [numberFormat, path, setDisplayValue, value])\n\n const handleLocalChange = useCallback(\n ({ value }: { value: number | number[] }) => {\n if (Array.isArray(props.paths) && Array.isArray(value)) {\n value.forEach((value, i) => {\n dataContextRef.current.updateDataValue(props.paths[i], value)\n })\n }\n\n handleChange?.(value)\n },\n [handleChange, props.paths]\n )\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n width,\n ...pickSpacingProps(props),\n }\n\n const sliderProps: SliderProps = {\n value,\n step,\n min,\n max,\n disabled,\n status: hasError ? 'error' : undefined,\n on_change: handleLocalChange,\n on_drag_start: handleFocus,\n on_drag_end: handleBlur,\n vertical,\n reverse,\n hideButtons,\n multiThumbBehavior,\n thumbTitle,\n subtractTitle,\n addTitle,\n numberFormat,\n tooltip,\n alwaysShowTooltip,\n extensions,\n stretch: true,\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Slider {...sliderProps} />\n </FieldBlock>\n )\n}\n\nexport default SliderComponent\n\nSliderComponent._supportsSpacingProps = true\n"],"mappings":"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"}
1
+ {"version":3,"file":"Slider.js","names":["React","useCallback","useContext","useMemo","useRef","FieldBlock","useFieldProps","getFormattedNumber","Slider","pickSpacingProps","DataContext","useDataValue","SliderComponent","props","_ref","_ref2","_props$paths","dataContextRef","current","getSourceValue","getValues","source","Array","isArray","map","s","value","paths","path","defaultValue","preparedProps","_objectSpread","step","min","max","id","itemPath","width","hasError","disabled","vertical","reverse","hideButtons","multiThumbBehavior","thumbTitle","subtractTitle","addTitle","numberFormat","tooltip","alwaysShowTooltip","extensions","handleChange","handleFocus","handleBlur","setDisplayValue","omitMultiplePathWarning","number","handleLocalChange","forEach","i","updateDataValue","fieldBlockProps","forId","sliderProps","status","undefined","on_change","on_drag_start","on_drag_end","stretch","createElement","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Slider/Slider.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo, useRef } from 'react'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { FieldProps, Path } from '../../types'\nimport { getFormattedNumber } from '../../../../components/slider/SliderHelpers'\nimport Slider, { SliderProps } from '../../../../components/Slider'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport DataContext, { ContextState } from '../../DataContext/Context'\nimport useDataValue from '../../hooks/useDataValue'\n\nexport type SliderVisibilityEvent = React.MouseEvent<HTMLButtonElement> & {\n value: string\n}\n\nexport type SliderValue = number | Array<number>\nexport type Props = FieldProps<SliderValue> & {\n /**\n * Define an array with JSON Pointers for multiple thumb buttons.\n */\n paths?: Array<Path>\n step?: SliderProps['step'] | Path\n min?: SliderProps['min'] | Path\n max?: SliderProps['max'] | Path\n vertical?: SliderProps['vertical']\n reverse?: SliderProps['reverse']\n hideButtons?: SliderProps['hideButtons']\n multiThumbBehavior?: SliderProps['multiThumbBehavior']\n thumbTitle?: SliderProps['thumbTitle']\n subtractTitle?: SliderProps['subtractTitle']\n addTitle?: SliderProps['addTitle']\n numberFormat?: SliderProps['numberFormat']\n tooltip?: SliderProps['tooltip']\n alwaysShowTooltip?: SliderProps['alwaysShowTooltip']\n extensions?: SliderProps['extensions']\n\n /** Styling */\n width?: FieldBlockWidth\n}\n\nfunction SliderComponent(props: Props) {\n const dataContextRef = useRef<ContextState>()\n dataContextRef.current = useContext<ContextState>(DataContext)\n\n const { getSourceValue } = useDataValue()\n const getValues = useCallback(\n (source: SliderValue | Path | Array<Path>) => {\n if (Array.isArray(source)) {\n return source.map((s) => getSourceValue(s) || 0)\n }\n\n return getSourceValue(source) || 0\n },\n [getSourceValue]\n )\n\n const value = getValues(\n props.paths ?? props.path ?? props.value ?? props.defaultValue\n )\n const preparedProps = {\n ...props,\n step: getSourceValue(props.step),\n min: getSourceValue(props.min),\n max: getSourceValue(props.max),\n }\n\n const {\n id,\n path,\n itemPath,\n step = 1,\n min = 0,\n max = 100,\n width = 'stretch',\n hasError,\n disabled,\n vertical,\n reverse,\n hideButtons,\n multiThumbBehavior,\n thumbTitle,\n subtractTitle,\n addTitle,\n numberFormat,\n tooltip,\n alwaysShowTooltip,\n extensions,\n handleChange,\n handleFocus,\n handleBlur,\n setDisplayValue,\n } = useFieldProps(preparedProps, {\n omitMultiplePathWarning: true,\n })\n\n useMemo(() => {\n if ((path || itemPath) && numberFormat) {\n const { number } = getFormattedNumber(value, numberFormat)\n setDisplayValue(number)\n }\n }, [itemPath, numberFormat, path, setDisplayValue, value])\n\n const handleLocalChange = useCallback(\n ({ value }: { value: number | number[] }) => {\n if (Array.isArray(props.paths) && Array.isArray(value)) {\n value.forEach((value, i) => {\n dataContextRef.current.updateDataValue(props.paths[i], value)\n })\n }\n\n handleChange?.(value)\n },\n [handleChange, props.paths]\n )\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n width,\n ...pickSpacingProps(props),\n }\n\n const sliderProps: SliderProps = {\n value,\n step,\n min,\n max,\n disabled,\n status: hasError ? 'error' : undefined,\n on_change: handleLocalChange,\n on_drag_start: handleFocus,\n on_drag_end: handleBlur,\n vertical,\n reverse,\n hideButtons,\n multiThumbBehavior,\n thumbTitle,\n subtractTitle,\n addTitle,\n numberFormat,\n tooltip,\n alwaysShowTooltip,\n extensions,\n stretch: true,\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Slider {...sliderProps} />\n </FieldBlock>\n )\n}\n\nexport default SliderComponent\n\nSliderComponent._supportsSpacingProps = true\n"],"mappings":"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"}
@@ -106,8 +106,8 @@ function StringComponent(props) {
106
106
  } = useFieldProps(preparedProps);
107
107
  useEffect(() => {
108
108
  var _innerRef$current;
109
- setDisplayValue(props.path, (_innerRef$current = innerRef.current) === null || _innerRef$current === void 0 ? void 0 : _innerRef$current.value);
110
- }, [innerRef, props.path, setDisplayValue, value]);
109
+ setDisplayValue((_innerRef$current = innerRef.current) === null || _innerRef$current === void 0 ? void 0 : _innerRef$current.value);
110
+ }, [innerRef, setDisplayValue, value]);
111
111
  const transformInstantly = useCallback(value => props.capitalize ? toCapitalized(value) : value, [props.capitalize]);
112
112
  const {
113
113
  handleSubmit
@@ -1 +1 @@
1
- {"version":3,"file":"String.js","names":["React","useContext","useMemo","useCallback","useEffect","useRef","classnames","Input","Textarea","InputMasked","DataContext","FieldBlockContext","FieldBlock","useFieldProps","pickSpacingProps","toCapitalized","StringComponent","props","_props$width","_props$innerRef","_dataContext$props2","_value$toString","dataContext","fieldBlockContext","schema","_props$schema","type","minLength","maxLength","pattern","fromInput","event","_event","_event$cleanedValue","_event2","_event3","value","emptyValue","cleanedValue","toEvent","trim","spaces","RegExp","test","replace","handleChange","transform","transformValue","capitalize","String","ref","preparedProps","_objectSpread","width","composition","innerRef","id","name","className","inputClassName","placeholder","hasError","disabled","multiline","mask","leftIcon","rightIcon","htmlAttributes","submitElement","clear","align","size","selectall","keepPlaceholder","rows","autoresizeMaxRows","autoresize","characterCounter","autoComplete","inputMode","autoCorrect","spellCheck","autoFocus","autoCapitalize","handleFocus","handleBlur","setDisplayValue","onKeyDown","_innerRef$current","path","current","transformInstantly","handleSubmit","handleKeyDown","_dataContext$props","isolate","key","_event$preventDefault","preventDefault","call","cn","sharedProps","on_focus","on_blur","on_change","on_key_down","stretch","Boolean","inner_ref","status","undefined","toString","textareaProps","autoresize_max_rows","inputProps","icon","icon_position","submit_element","keep_placeholder","fieldBlockProps","forId","contentWidth","createElement","_extends","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/String/String.tsx"],"sourcesContent":["import React, {\n useContext,\n useMemo,\n useCallback,\n useEffect,\n useRef,\n} from 'react'\nimport classnames from 'classnames'\nimport { Input, Textarea } from '../../../../components'\nimport { InputProps } from '../../../../components/input/Input'\nimport InputMasked, {\n InputMaskedProps,\n} from '../../../../components/InputMasked'\nimport { TextareaProps } from '../../../../components/Textarea'\nimport DataContext from '../../DataContext/Context'\nimport FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { toCapitalized } from '../../../../shared/component-helper'\nimport type { TextCounterProps } from '../../../../fragments/TextCounter'\nimport type { FieldProps, AllJSONSchemaVersions } from '../../types'\n\nexport type Props = FieldProps<string, undefined | string> & {\n // - Shared props\n multiline?: boolean\n inputClassName?: string\n innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>\n width?: FieldBlockWidth\n size?: InputProps['size'] | TextareaProps['size']\n keepPlaceholder?: InputProps['keep_placeholder']\n\n // - Validation\n minLength?: number\n maxLength?: number\n pattern?: string\n\n // - Input props\n type?: InputProps['type']\n align?: InputProps['align']\n selectall?: InputProps['selectall']\n clear?: boolean\n mask?: InputMaskedProps['mask']\n leftIcon?: string\n rightIcon?: string\n submitElement?: InputProps['submit_element']\n capitalize?: boolean\n trim?: boolean\n\n // - Textarea props\n rows?: TextareaProps['rows']\n autoresizeMaxRows?: TextareaProps['autoresize_max_rows']\n autoresize?: TextareaProps['autoresize']\n characterCounter?: Omit<TextCounterProps, 'text'> | number\n\n // - Html props\n autoComplete?: HTMLInputElement['autocomplete']\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode']\n autoCorrect?: React.HTMLAttributes<HTMLInputElement>['autoCorrect']\n spellCheck?: React.HTMLAttributes<HTMLInputElement>['spellCheck']\n autoFocus?: React.HTMLAttributes<HTMLInputElement>['autoFocus']\n autoCapitalize?: React.HTMLAttributes<HTMLInputElement>['autoCapitalize']\n\n // - Events\n onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>\n}\n\nfunction StringComponent(props: Props) {\n const dataContext = useContext(DataContext)\n const fieldBlockContext = useContext(FieldBlockContext)\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n minLength: props.minLength,\n maxLength: props.maxLength,\n pattern: props.pattern,\n },\n [props.schema, props.minLength, props.maxLength, props.pattern]\n )\n const fromInput = useCallback(\n (event: { value: string; cleanedValue?: string }) => {\n if (typeof event === 'string') {\n event = { value: event }\n }\n if (event?.value === '') {\n return props.emptyValue\n }\n // Cleaned value for masked\n return event?.cleanedValue ?? event?.value\n },\n [props.emptyValue]\n )\n const toEvent = useCallback(\n (value: string, type: string) => {\n if (props.trim && type === 'onBlur') {\n const spaces = '[\\\\s ]'\n if (new RegExp(`^${spaces}|${spaces}$`).test(value)) {\n value = value.replace(\n new RegExp(`^${spaces}+|${spaces}+$`, 'g'),\n ''\n )\n handleChange(value)\n }\n }\n return value\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.trim]\n )\n const transform = props.transformValue\n const transformValue = useCallback(\n (value: string) => {\n if (props.capitalize) {\n value = toCapitalized(String(value || ''))\n }\n return transform?.(value) || value\n },\n [props.capitalize, transform]\n )\n\n const ref = useRef<HTMLInputElement>()\n const preparedProps: Props = {\n ...props,\n schema,\n fromInput,\n toEvent,\n transformValue,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'large'),\n innerRef: props.innerRef ?? ref,\n }\n\n const {\n id,\n name,\n className,\n innerRef,\n inputClassName,\n placeholder,\n value,\n hasError,\n disabled,\n multiline,\n mask,\n leftIcon,\n rightIcon,\n width,\n htmlAttributes,\n submitElement,\n\n // - Input props\n type,\n clear,\n align,\n size,\n selectall,\n keepPlaceholder,\n\n // - Textarea props\n rows,\n autoresizeMaxRows = 6,\n autoresize = true,\n characterCounter,\n\n // - Html props\n autoComplete,\n inputMode,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n\n // - Events\n handleFocus,\n handleBlur,\n handleChange,\n setDisplayValue,\n onKeyDown,\n } = useFieldProps(preparedProps)\n\n useEffect(() => {\n setDisplayValue(props.path, innerRef.current?.value)\n }, [innerRef, props.path, setDisplayValue, value])\n\n const transformInstantly = useCallback(\n (value: string) => (props.capitalize ? toCapitalized(value) : value),\n [props.capitalize]\n )\n\n const { handleSubmit } = dataContext ?? {}\n const handleKeyDown = useCallback(\n ({ event }: { event: React.KeyboardEvent<HTMLInputElement> }) => {\n if (\n !multiline &&\n dataContext?.props?.isolate &&\n event.key === 'Enter'\n ) {\n handleSubmit() // So we commit the data to the outer context\n event.preventDefault?.() // And prevent the default form submit\n }\n\n onKeyDown?.(event)\n },\n [handleSubmit, dataContext?.props?.isolate, multiline, onKeyDown]\n )\n\n const cn = classnames('dnb-forms-field-string__input', inputClassName)\n\n const sharedProps: InputProps & TextareaProps = {\n id,\n name,\n autoComplete,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n inputMode,\n className: cn,\n placeholder,\n on_focus: handleFocus,\n on_blur: handleBlur,\n on_change: handleChange,\n on_key_down: handleKeyDown,\n disabled,\n ...htmlAttributes,\n stretch: Boolean(width),\n inner_ref: innerRef,\n status: hasError ? 'error' : undefined,\n value: transformInstantly(value?.toString() ?? ''),\n }\n\n const textareaProps: TextareaProps = {\n keepPlaceholder,\n rows,\n autoresize_max_rows: autoresizeMaxRows,\n autoresize,\n characterCounter,\n }\n\n const inputProps: InputProps = {\n type,\n clear,\n size,\n align,\n selectall,\n icon: leftIcon ?? rightIcon,\n icon_position: rightIcon && !leftIcon ? 'right' : undefined,\n submit_element: submitElement,\n keep_placeholder: keepPlaceholder,\n }\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n className: classnames('dnb-forms-field-string', className),\n width:\n width === 'stretch' || fieldBlockContext?.composition\n ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n {multiline ? (\n <Textarea {...sharedProps} {...textareaProps} />\n ) : mask ? (\n <InputMasked {...sharedProps} {...inputProps} mask={mask} />\n ) : (\n <Input {...sharedProps} {...inputProps} />\n )}\n </FieldBlock>\n )\n}\n\nStringComponent._supportsSpacingProps = true\nexport default StringComponent\n"],"mappings":"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"}
1
+ {"version":3,"file":"String.js","names":["React","useContext","useMemo","useCallback","useEffect","useRef","classnames","Input","Textarea","InputMasked","DataContext","FieldBlockContext","FieldBlock","useFieldProps","pickSpacingProps","toCapitalized","StringComponent","props","_props$width","_props$innerRef","_dataContext$props2","_value$toString","dataContext","fieldBlockContext","schema","_props$schema","type","minLength","maxLength","pattern","fromInput","event","_event","_event$cleanedValue","_event2","_event3","value","emptyValue","cleanedValue","toEvent","trim","spaces","RegExp","test","replace","handleChange","transform","transformValue","capitalize","String","ref","preparedProps","_objectSpread","width","composition","innerRef","id","name","className","inputClassName","placeholder","hasError","disabled","multiline","mask","leftIcon","rightIcon","htmlAttributes","submitElement","clear","align","size","selectall","keepPlaceholder","rows","autoresizeMaxRows","autoresize","characterCounter","autoComplete","inputMode","autoCorrect","spellCheck","autoFocus","autoCapitalize","handleFocus","handleBlur","setDisplayValue","onKeyDown","_innerRef$current","current","transformInstantly","handleSubmit","handleKeyDown","_dataContext$props","isolate","key","_event$preventDefault","preventDefault","call","cn","sharedProps","on_focus","on_blur","on_change","on_key_down","stretch","Boolean","inner_ref","status","undefined","toString","textareaProps","autoresize_max_rows","inputProps","icon","icon_position","submit_element","keep_placeholder","fieldBlockProps","forId","contentWidth","createElement","_extends","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/String/String.tsx"],"sourcesContent":["import React, {\n useContext,\n useMemo,\n useCallback,\n useEffect,\n useRef,\n} from 'react'\nimport classnames from 'classnames'\nimport { Input, Textarea } from '../../../../components'\nimport { InputProps } from '../../../../components/input/Input'\nimport InputMasked, {\n InputMaskedProps,\n} from '../../../../components/InputMasked'\nimport { TextareaProps } from '../../../../components/Textarea'\nimport DataContext from '../../DataContext/Context'\nimport FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { toCapitalized } from '../../../../shared/component-helper'\nimport type { TextCounterProps } from '../../../../fragments/TextCounter'\nimport type { FieldProps, AllJSONSchemaVersions } from '../../types'\n\nexport type Props = FieldProps<string, undefined | string> & {\n // - Shared props\n multiline?: boolean\n inputClassName?: string\n innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>\n width?: FieldBlockWidth\n size?: InputProps['size'] | TextareaProps['size']\n keepPlaceholder?: InputProps['keep_placeholder']\n\n // - Validation\n minLength?: number\n maxLength?: number\n pattern?: string\n\n // - Input props\n type?: InputProps['type']\n align?: InputProps['align']\n selectall?: InputProps['selectall']\n clear?: boolean\n mask?: InputMaskedProps['mask']\n leftIcon?: string\n rightIcon?: string\n submitElement?: InputProps['submit_element']\n capitalize?: boolean\n trim?: boolean\n\n // - Textarea props\n rows?: TextareaProps['rows']\n autoresizeMaxRows?: TextareaProps['autoresize_max_rows']\n autoresize?: TextareaProps['autoresize']\n characterCounter?: Omit<TextCounterProps, 'text'> | number\n\n // - Html props\n autoComplete?: HTMLInputElement['autocomplete']\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode']\n autoCorrect?: React.HTMLAttributes<HTMLInputElement>['autoCorrect']\n spellCheck?: React.HTMLAttributes<HTMLInputElement>['spellCheck']\n autoFocus?: React.HTMLAttributes<HTMLInputElement>['autoFocus']\n autoCapitalize?: React.HTMLAttributes<HTMLInputElement>['autoCapitalize']\n\n // - Events\n onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>\n}\n\nfunction StringComponent(props: Props) {\n const dataContext = useContext(DataContext)\n const fieldBlockContext = useContext(FieldBlockContext)\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n minLength: props.minLength,\n maxLength: props.maxLength,\n pattern: props.pattern,\n },\n [props.schema, props.minLength, props.maxLength, props.pattern]\n )\n const fromInput = useCallback(\n (event: { value: string; cleanedValue?: string }) => {\n if (typeof event === 'string') {\n event = { value: event }\n }\n if (event?.value === '') {\n return props.emptyValue\n }\n // Cleaned value for masked\n return event?.cleanedValue ?? event?.value\n },\n [props.emptyValue]\n )\n const toEvent = useCallback(\n (value: string, type: string) => {\n if (props.trim && type === 'onBlur') {\n const spaces = '[\\\\s ]'\n if (new RegExp(`^${spaces}|${spaces}$`).test(value)) {\n value = value.replace(\n new RegExp(`^${spaces}+|${spaces}+$`, 'g'),\n ''\n )\n handleChange(value)\n }\n }\n return value\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.trim]\n )\n const transform = props.transformValue\n const transformValue = useCallback(\n (value: string) => {\n if (props.capitalize) {\n value = toCapitalized(String(value || ''))\n }\n return transform?.(value) || value\n },\n [props.capitalize, transform]\n )\n\n const ref = useRef<HTMLInputElement>()\n const preparedProps: Props = {\n ...props,\n schema,\n fromInput,\n toEvent,\n transformValue,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'large'),\n innerRef: props.innerRef ?? ref,\n }\n\n const {\n id,\n name,\n className,\n innerRef,\n inputClassName,\n placeholder,\n value,\n hasError,\n disabled,\n multiline,\n mask,\n leftIcon,\n rightIcon,\n width,\n htmlAttributes,\n submitElement,\n\n // - Input props\n type,\n clear,\n align,\n size,\n selectall,\n keepPlaceholder,\n\n // - Textarea props\n rows,\n autoresizeMaxRows = 6,\n autoresize = true,\n characterCounter,\n\n // - Html props\n autoComplete,\n inputMode,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n\n // - Events\n handleFocus,\n handleBlur,\n handleChange,\n setDisplayValue,\n onKeyDown,\n } = useFieldProps(preparedProps)\n\n useEffect(() => {\n setDisplayValue(innerRef.current?.value)\n }, [innerRef, setDisplayValue, value])\n\n const transformInstantly = useCallback(\n (value: string) => (props.capitalize ? toCapitalized(value) : value),\n [props.capitalize]\n )\n\n const { handleSubmit } = dataContext ?? {}\n const handleKeyDown = useCallback(\n ({ event }: { event: React.KeyboardEvent<HTMLInputElement> }) => {\n if (\n !multiline &&\n dataContext?.props?.isolate &&\n event.key === 'Enter'\n ) {\n handleSubmit() // So we commit the data to the outer context\n event.preventDefault?.() // And prevent the default form submit\n }\n\n onKeyDown?.(event)\n },\n [handleSubmit, dataContext?.props?.isolate, multiline, onKeyDown]\n )\n\n const cn = classnames('dnb-forms-field-string__input', inputClassName)\n\n const sharedProps: InputProps & TextareaProps = {\n id,\n name,\n autoComplete,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n inputMode,\n className: cn,\n placeholder,\n on_focus: handleFocus,\n on_blur: handleBlur,\n on_change: handleChange,\n on_key_down: handleKeyDown,\n disabled,\n ...htmlAttributes,\n stretch: Boolean(width),\n inner_ref: innerRef,\n status: hasError ? 'error' : undefined,\n value: transformInstantly(value?.toString() ?? ''),\n }\n\n const textareaProps: TextareaProps = {\n keepPlaceholder,\n rows,\n autoresize_max_rows: autoresizeMaxRows,\n autoresize,\n characterCounter,\n }\n\n const inputProps: InputProps = {\n type,\n clear,\n size,\n align,\n selectall,\n icon: leftIcon ?? rightIcon,\n icon_position: rightIcon && !leftIcon ? 'right' : undefined,\n submit_element: submitElement,\n keep_placeholder: keepPlaceholder,\n }\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n className: classnames('dnb-forms-field-string', className),\n width:\n width === 'stretch' || fieldBlockContext?.composition\n ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n {multiline ? (\n <Textarea {...sharedProps} {...textareaProps} />\n ) : mask ? (\n <InputMasked {...sharedProps} {...inputProps} mask={mask} />\n ) : (\n <Input {...sharedProps} {...inputProps} />\n )}\n </FieldBlock>\n )\n}\n\nStringComponent._supportsSpacingProps = true\nexport default StringComponent\n"],"mappings":"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"}
@@ -11,6 +11,7 @@ import { useFieldProps } from '../../hooks';
11
11
  import { pickSpacingProps } from '../../../../components/flex/utils';
12
12
  import ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext';
13
13
  import useTranslation from '../../hooks/useTranslation';
14
+ import { useIterateItemNo } from '../../Iterate/ItemNo/useIItemNo';
14
15
  function Toggle(props) {
15
16
  const translations = useTranslation().ToggleField;
16
17
  const preparedProps = _objectSpread(_objectSpread({}, props), {}, {
@@ -23,7 +24,6 @@ function Toggle(props) {
23
24
  valueOff,
24
25
  variant,
25
26
  disabled,
26
- label,
27
27
  textOn,
28
28
  textOff,
29
29
  value,
@@ -53,9 +53,19 @@ function Toggle(props) {
53
53
  useMemo(() => {
54
54
  const text = isOn ? textOn : textOff;
55
55
  if (text) {
56
- setDisplayValue(props.path, text);
56
+ setDisplayValue(text);
57
57
  }
58
- }, [isOn, props.path, setDisplayValue, textOff, textOn]);
58
+ }, [isOn, setDisplayValue, textOff, textOn]);
59
+ const {
60
+ label,
61
+ labelSuffix,
62
+ required
63
+ } = props;
64
+ const labelWithItemNo = useIterateItemNo({
65
+ label,
66
+ labelSuffix,
67
+ required
68
+ });
59
69
  switch (variant) {
60
70
  default:
61
71
  case 'checkbox':
@@ -64,7 +74,7 @@ function Toggle(props) {
64
74
  }), React.createElement(Checkbox, _extends({
65
75
  id: id,
66
76
  className: cn,
67
- label: label !== null && label !== void 0 ? label : isOn ? textOn !== null && textOn !== void 0 ? textOn : translations.yes : textOff !== null && textOff !== void 0 ? textOff : translations.no,
77
+ label: labelWithItemNo !== null && labelWithItemNo !== void 0 ? labelWithItemNo : isOn ? textOn !== null && textOn !== void 0 ? textOn : translations.yes : textOff !== null && textOff !== void 0 ? textOff : translations.no,
68
78
  checked: isOn,
69
79
  disabled: disabled,
70
80
  status: hasError ? 'error' : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"Toggle.js","names":["React","useCallback","useMemo","classnames","Checkbox","ToggleButton","ButtonRow","FieldBlock","useFieldProps","pickSpacingProps","ToggleButtonGroupContext","useTranslation","Toggle","props","translations","ToggleField","preparedProps","_objectSpread","errorMessages","id","className","valueOn","valueOff","variant","disabled","label","textOn","textOff","value","hasError","htmlAttributes","handleChange","setDisplayValue","handleCheckboxChange","checked","handleToggleChange","cn","fieldBlockProps","forId","isOn","isOff","text","path","createElement","_extends","undefined","yes","no","status","onChange","on_change","asFieldset","bottom","Provider","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Toggle/Toggle.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react'\nimport classnames from 'classnames'\nimport { Checkbox, ToggleButton } from '../../../../components'\nimport ButtonRow from '../../Form/ButtonRow'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type ToggleProps = {\n valueOn: unknown\n valueOff: unknown\n variant?: 'checkbox' | 'checkbox-button' | 'button' | 'buttons'\n textOn?: string\n textOff?: string\n}\n\nexport type Props = Omit<FieldProps<unknown>, 'layout' | 'layoutOptions'> &\n ToggleProps\n\nfunction Toggle(props: Props) {\n const translations = useTranslation().ToggleField\n\n const preparedProps: Props = {\n ...props,\n errorMessages: props.errorMessages,\n }\n\n const {\n id,\n className,\n valueOn,\n valueOff,\n variant,\n disabled,\n label,\n textOn,\n textOff,\n value,\n hasError,\n htmlAttributes,\n handleChange,\n setDisplayValue,\n } = useFieldProps(preparedProps)\n\n const handleCheckboxChange = useCallback(\n ({ checked }) => {\n handleChange?.(checked ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n const handleToggleChange = useCallback(\n ({ value }) => {\n handleChange?.(value === 'on' ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n\n const cn = classnames('dnb-forms-field-toggle', className)\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n className: cn,\n disabled,\n ...pickSpacingProps(props),\n }\n\n const isOn = value === valueOn\n const isOff = value === valueOff\n\n useMemo(() => {\n const text = isOn ? textOn : textOff\n if (text) {\n setDisplayValue(props.path, text)\n }\n }, [isOn, props.path, setDisplayValue, textOff, textOn])\n\n switch (variant) {\n default:\n case 'checkbox':\n return (\n <FieldBlock {...fieldBlockProps} label={undefined}>\n <Checkbox\n id={id}\n className={cn}\n label={\n label ??\n (isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no)\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n onChange={handleCheckboxChange}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n on_change={handleCheckboxChange}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'buttons':\n return (\n <FieldBlock {...fieldBlockProps} asFieldset>\n <ButtonRow bottom=\"x-small\">\n <ToggleButtonGroupContext.Provider\n value={{\n value: isOn ? 'on' : isOff ? 'off' : null, // use \"null\" to reset the value\n onChange: handleToggleChange,\n status: hasError ? 'error' : undefined,\n disabled,\n }}\n >\n <ToggleButton\n text={textOn ?? translations.yes}\n value=\"on\"\n {...htmlAttributes}\n />\n <ToggleButton\n text={textOff ?? translations.no}\n value=\"off\"\n {...htmlAttributes}\n />\n </ToggleButtonGroupContext.Provider>\n </ButtonRow>\n </FieldBlock>\n )\n case 'checkbox-button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n variant=\"checkbox\"\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n on_change={handleCheckboxChange}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n }\n}\n\nToggle._supportsSpacingProps = true\nexport default Toggle\n"],"mappings":"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"}
1
+ {"version":3,"file":"Toggle.js","names":["React","useCallback","useMemo","classnames","Checkbox","ToggleButton","ButtonRow","FieldBlock","useFieldProps","pickSpacingProps","ToggleButtonGroupContext","useTranslation","useIterateItemNo","Toggle","props","translations","ToggleField","preparedProps","_objectSpread","errorMessages","id","className","valueOn","valueOff","variant","disabled","textOn","textOff","value","hasError","htmlAttributes","handleChange","setDisplayValue","handleCheckboxChange","checked","handleToggleChange","cn","fieldBlockProps","forId","isOn","isOff","text","label","labelSuffix","required","labelWithItemNo","createElement","_extends","undefined","yes","no","status","onChange","on_change","asFieldset","bottom","Provider","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Toggle/Toggle.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react'\nimport classnames from 'classnames'\nimport { Checkbox, ToggleButton } from '../../../../components'\nimport ButtonRow from '../../Form/ButtonRow'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\nimport useTranslation from '../../hooks/useTranslation'\nimport { useIterateItemNo } from '../../Iterate/ItemNo/useIItemNo'\n\nexport type ToggleProps = {\n valueOn: unknown\n valueOff: unknown\n variant?: 'checkbox' | 'checkbox-button' | 'button' | 'buttons'\n textOn?: string\n textOff?: string\n}\n\nexport type Props = Omit<FieldProps<unknown>, 'layout' | 'layoutOptions'> &\n ToggleProps\n\nfunction Toggle(props: Props) {\n const translations = useTranslation().ToggleField\n\n const preparedProps: Props = {\n ...props,\n errorMessages: props.errorMessages,\n }\n\n const {\n id,\n className,\n valueOn,\n valueOff,\n variant,\n disabled,\n textOn,\n textOff,\n value,\n hasError,\n htmlAttributes,\n handleChange,\n setDisplayValue,\n } = useFieldProps(preparedProps)\n\n const handleCheckboxChange = useCallback(\n ({ checked }) => {\n handleChange?.(checked ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n const handleToggleChange = useCallback(\n ({ value }) => {\n handleChange?.(value === 'on' ? valueOn : valueOff)\n },\n [handleChange, valueOn, valueOff]\n )\n\n const cn = classnames('dnb-forms-field-toggle', className)\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n className: cn,\n disabled,\n ...pickSpacingProps(props),\n }\n\n const isOn = value === valueOn\n const isOff = value === valueOff\n\n useMemo(() => {\n const text = isOn ? textOn : textOff\n if (text) {\n setDisplayValue(text)\n }\n }, [isOn, setDisplayValue, textOff, textOn])\n\n const { label, labelSuffix, required } = props\n const labelWithItemNo = useIterateItemNo({\n label,\n labelSuffix,\n required,\n })\n\n switch (variant) {\n default:\n case 'checkbox':\n return (\n <FieldBlock {...fieldBlockProps} label={undefined}>\n <Checkbox\n id={id}\n className={cn}\n label={\n labelWithItemNo ??\n (isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no)\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n onChange={handleCheckboxChange}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n on_change={handleCheckboxChange}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n case 'buttons':\n return (\n <FieldBlock {...fieldBlockProps} asFieldset>\n <ButtonRow bottom=\"x-small\">\n <ToggleButtonGroupContext.Provider\n value={{\n value: isOn ? 'on' : isOff ? 'off' : null, // use \"null\" to reset the value\n onChange: handleToggleChange,\n status: hasError ? 'error' : undefined,\n disabled,\n }}\n >\n <ToggleButton\n text={textOn ?? translations.yes}\n value=\"on\"\n {...htmlAttributes}\n />\n <ToggleButton\n text={textOff ?? translations.no}\n value=\"off\"\n {...htmlAttributes}\n />\n </ToggleButtonGroupContext.Provider>\n </ButtonRow>\n </FieldBlock>\n )\n case 'checkbox-button':\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButton\n id={id}\n variant=\"checkbox\"\n text={\n isOn\n ? textOn ?? translations.yes\n : textOff ?? translations.no\n }\n checked={isOn}\n disabled={disabled}\n status={hasError ? 'error' : undefined}\n value={value ? 'true' : 'false'}\n on_change={handleCheckboxChange}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n }\n}\n\nToggle._supportsSpacingProps = true\nexport default Toggle\n"],"mappings":"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"}
@@ -31,15 +31,6 @@ const validateRequired = (value, {
31
31
  }
32
32
  return undefined;
33
33
  };
34
- const updateFileLoadingState = (files, {
35
- isLoading
36
- } = {
37
- isLoading: false
38
- }) => {
39
- return files.map(file => _objectSpread(_objectSpread({}, file), {}, {
40
- isLoading
41
- }));
42
- };
43
34
  function UploadComponent(props) {
44
35
  const sharedTr = useSharedTranslation().Upload;
45
36
  const formsTr = useFormsTranslation().Upload;
@@ -99,25 +90,35 @@ function UploadComponent(props) {
99
90
  useEffect(() => {
100
91
  setFiles(value);
101
92
  }, [setFiles, value]);
102
- const handleChangeAsync = useCallback(async existingFiles => {
93
+ const handleChangeAsync = useCallback(async files => {
103
94
  var _filesRef$current;
104
95
  const existingFileIds = ((_filesRef$current = filesRef.current) === null || _filesRef$current === void 0 ? void 0 : _filesRef$current.map(file => file.id)) || [];
105
- const newFiles = existingFiles.filter(file => !existingFileIds.includes(file.id));
106
- if (newFiles.length > 0) {
107
- setFiles([...filesRef.current, ...updateFileLoadingState(newFiles, {
108
- isLoading: true
109
- })]);
110
- const incomingFiles = await fileHandler(newFiles);
111
- const uploadedFiles = updateFileLoadingState(incomingFiles, {
112
- isLoading: false
96
+ const newFiles = files.filter(file => !existingFileIds.includes(file.id));
97
+ const newValidFiles = newFiles.filter(file => !file.errorMessage);
98
+ if (newValidFiles.length > 0) {
99
+ const newFilesLoading = newFiles.map(file => _objectSpread(_objectSpread({}, file), {}, {
100
+ isLoading: !file.errorMessage
101
+ }));
102
+ setFiles([...filesRef.current, ...newFilesLoading]);
103
+ const incomingFiles = await fileHandler(newValidFiles);
104
+ incomingFiles.forEach(file => {
105
+ const incomingFileObj = _objectSpread(_objectSpread({}, file), {}, {
106
+ isLoading: false
107
+ });
108
+ const foundIndex = newFilesLoading.findIndex(newFile => newFile.isLoading);
109
+ if (foundIndex >= 0) {
110
+ newFilesLoading[foundIndex] = incomingFileObj;
111
+ } else {
112
+ newFilesLoading.push(incomingFileObj);
113
+ }
113
114
  });
114
115
  const indexOfFirstNewFile = filesRef.current.findIndex(({
115
116
  id
116
117
  }) => id === newFiles[0].id);
117
- const updatedFiles = [...filesRef.current.slice(0, indexOfFirstNewFile), ...uploadedFiles, ...filesRef.current.slice(indexOfFirstNewFile + newFiles.length)];
118
+ const updatedFiles = [...filesRef.current.slice(0, indexOfFirstNewFile), ...newFilesLoading, ...filesRef.current.slice(indexOfFirstNewFile + newFilesLoading.length)];
118
119
  handleChange(updatedFiles);
119
120
  } else {
120
- handleChange(existingFiles);
121
+ handleChange(files);
121
122
  }
122
123
  }, [setFiles, fileHandler, handleChange]);
123
124
  const changeHandler = useCallback(({
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.js","names":["React","useCallback","useEffect","useMemo","useRef","classnames","FieldBlock","useFieldProps","useTranslation","useFormsTranslation","Upload","useUpload","pickSpacingProps","HelpButtonInline","HelpButtonInlineContent","useSharedTranslation","FormError","validateRequired","value","required","isChanged","error","hasError","some","file","errorMessage","hasFiles","length","undefined","updateFileLoadingState","files","isLoading","map","_objectSpread","UploadComponent","props","sharedTr","formsTr","errorMessages","errorRequired","fromInput","forEach","item","index","_item$file","name","preparedProps","toInput","transformFiles","_useFieldProps","executeOnChangeRegardlessOfError","id","className","width","widthProp","label","labelDescription","help","htmlAttributes","handleChange","handleFocus","handleBlur","fileHandler","rest","_objectWithoutProperties","_excluded","title","text","acceptedFileTypes","filesAmountLimit","fileMaxSize","skeleton","onFileDelete","onFileClick","setFiles","filesRef","current","handleChangeAsync","existingFiles","_filesRef$current","existingFileIds","newFiles","filter","includes","incomingFiles","uploadedFiles","indexOfFirstNewFile","findIndex","updatedFiles","slice","changeHandler","fieldBlockProps","forId","labelSrOnly","createElement","_extends","onChange","Fragment","contentId","left","_supportsSpacingProps","Array","isArray","File"],"sources":["../../../../../../src/extensions/forms/Field/Upload/Upload.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport classnames from 'classnames'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport {\n useFieldProps,\n useTranslation as useFormsTranslation,\n} from '../../hooks'\nimport { FieldProps } from '../../types'\nimport Upload, {\n UploadFile,\n UploadFileNative,\n UploadProps,\n} from '../../../../components/Upload'\nimport useUpload from '../../../../components/upload/useUpload'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport HelpButtonInline, {\n HelpButtonInlineContent,\n} from '../../../../components/help-button/HelpButtonInline'\nimport { useTranslation as useSharedTranslation } from '../../../../shared'\nimport { SpacingProps } from '../../../../shared/types'\nimport { FormError } from '../../utils'\n\nexport type { UploadFile, UploadFileNative }\nexport type UploadValue = Array<UploadFile | UploadFileNative>\nexport type Props = Omit<\n FieldProps<UploadValue, UploadValue | undefined>,\n 'name'\n> &\n SpacingProps & {\n width?: Omit<FieldBlockWidth, 'medium' | 'small'>\n } & Pick<\n Partial<UploadProps>,\n | 'title'\n | 'text'\n | 'acceptedFileTypes'\n | 'filesAmountLimit'\n | 'fileMaxSize'\n | 'onFileDelete'\n | 'onFileClick'\n | 'skeleton'\n | 'download'\n > & {\n fileHandler?: (\n newFiles: UploadValue\n ) => UploadValue | Promise<UploadValue>\n }\n\nconst validateRequired = (\n value: UploadValue,\n { required, isChanged, error }\n) => {\n const hasError = value?.some((file) => file.errorMessage)\n if (hasError) {\n return new FormError('Upload.errorInvalidFiles')\n }\n\n const hasFiles = value?.length > 0\n if (required && ((!isChanged && !hasFiles) || !hasFiles)) {\n return error\n }\n\n return undefined\n}\n\nconst updateFileLoadingState = (\n files: UploadValue,\n { isLoading } = { isLoading: false }\n) => {\n return files.map((file) => ({ ...file, isLoading }))\n}\n\nfunction UploadComponent(props: Props) {\n const sharedTr = useSharedTranslation().Upload\n const formsTr = useFormsTranslation().Upload\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': formsTr.errorRequired,\n }),\n [formsTr.errorRequired]\n )\n\n const fromInput = useCallback((value: UploadValue) => {\n value.forEach((item, index) => {\n value[index] = item\n\n // Store the name in the value, to support session storage (serialization)\n value[index]['name'] = item['name'] || item.file?.name\n })\n\n return value\n }, [])\n\n const preparedProps = {\n errorMessages,\n validateRequired,\n fromInput,\n toInput: transformFiles,\n ...props,\n }\n\n const {\n id,\n className,\n width: widthProp = 'stretch',\n value,\n label,\n labelDescription,\n help,\n htmlAttributes,\n handleChange,\n handleFocus,\n handleBlur,\n fileHandler,\n ...rest\n } = useFieldProps(preparedProps, {\n executeOnChangeRegardlessOfError: true,\n })\n\n // Upload props\n const {\n title = sharedTr.title,\n text = sharedTr.text,\n acceptedFileTypes = ['pdf', 'png', 'jpg', 'jpeg'],\n filesAmountLimit = 100,\n fileMaxSize = 5,\n skeleton,\n onFileDelete,\n onFileClick,\n } = rest\n\n const { files, setFiles } = useUpload(id)\n\n const filesRef = useRef<Array<UploadFile>>()\n\n useEffect(() => {\n filesRef.current = files\n }, [files])\n\n useEffect(() => {\n setFiles(value)\n }, [setFiles, value])\n\n const handleChangeAsync = useCallback(\n async (existingFiles: UploadValue) => {\n // Filter out existing files\n const existingFileIds =\n filesRef.current?.map((file) => file.id) || []\n const newFiles = existingFiles.filter(\n (file) => !existingFileIds.includes(file.id)\n )\n\n if (newFiles.length > 0) {\n // Set loading\n setFiles([\n ...filesRef.current,\n ...updateFileLoadingState(newFiles, { isLoading: true }),\n ])\n\n const incomingFiles = await fileHandler(newFiles)\n\n const uploadedFiles = updateFileLoadingState(incomingFiles, {\n isLoading: false,\n })\n\n const indexOfFirstNewFile = filesRef.current.findIndex(\n ({ id }) => id === newFiles[0].id\n )\n\n const updatedFiles = [\n ...filesRef.current.slice(0, indexOfFirstNewFile),\n ...uploadedFiles,\n ...filesRef.current.slice(indexOfFirstNewFile + newFiles.length),\n ]\n\n // Set error, if any\n handleChange(updatedFiles)\n } else {\n handleChange(existingFiles)\n }\n },\n [setFiles, fileHandler, handleChange]\n )\n\n const changeHandler = useCallback(\n ({ files }: { files: UploadValue }) => {\n // Prevents the form-status from showing up\n handleBlur()\n handleFocus()\n\n if (fileHandler) {\n handleChangeAsync(files)\n } else {\n handleChange(files)\n }\n },\n [handleBlur, handleFocus, fileHandler, handleChangeAsync, handleChange]\n )\n\n const width = widthProp as FieldBlockWidth\n const fieldBlockProps: FieldBlockProps = {\n id,\n forId: `${id}-input`,\n labelSrOnly: true,\n className: classnames('dnb-forms-field-upload', className),\n width,\n help: undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Upload\n id={id}\n acceptedFileTypes={acceptedFileTypes}\n filesAmountLimit={filesAmountLimit}\n fileMaxSize={fileMaxSize}\n skeleton={skeleton}\n onChange={changeHandler}\n onFileDelete={onFileDelete}\n onFileClick={onFileClick}\n title={label ?? title}\n text={\n help ? (\n <>\n {labelDescription ?? text}\n <HelpButtonInline\n contentId={`${id}-help`}\n left={text ? 'x-small' : false}\n help={help}\n />\n </>\n ) : (\n labelDescription ?? text\n )\n }\n {...htmlAttributes}\n >\n {help && (\n <HelpButtonInlineContent contentId={`${id}-help`} help={help} />\n )}\n </Upload>\n </FieldBlock>\n )\n}\n\nexport default UploadComponent\n\nUploadComponent._supportsSpacingProps = true\n\nexport function transformFiles(value: UploadValue) {\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return undefined\n }\n\n value.map((item) => {\n if (item?.file && !(item.file instanceof File)) {\n // To support session storage, we recreated the file blob.\n item['file'] = new File([], item['name'])\n }\n return item\n })\n }\n\n return value\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Upload.js","names":["React","useCallback","useEffect","useMemo","useRef","classnames","FieldBlock","useFieldProps","useTranslation","useFormsTranslation","Upload","useUpload","pickSpacingProps","HelpButtonInline","HelpButtonInlineContent","useSharedTranslation","FormError","validateRequired","value","required","isChanged","error","hasError","some","file","errorMessage","hasFiles","length","undefined","UploadComponent","props","sharedTr","formsTr","errorMessages","errorRequired","fromInput","forEach","item","index","_item$file","name","preparedProps","_objectSpread","toInput","transformFiles","_useFieldProps","executeOnChangeRegardlessOfError","id","className","width","widthProp","label","labelDescription","help","htmlAttributes","handleChange","handleFocus","handleBlur","fileHandler","rest","_objectWithoutProperties","_excluded","title","text","acceptedFileTypes","filesAmountLimit","fileMaxSize","skeleton","onFileDelete","onFileClick","files","setFiles","filesRef","current","handleChangeAsync","_filesRef$current","existingFileIds","map","newFiles","filter","includes","newValidFiles","newFilesLoading","isLoading","incomingFiles","incomingFileObj","foundIndex","findIndex","newFile","push","indexOfFirstNewFile","updatedFiles","slice","changeHandler","fieldBlockProps","forId","labelSrOnly","createElement","_extends","onChange","Fragment","contentId","left","_supportsSpacingProps","Array","isArray","File"],"sources":["../../../../../../src/extensions/forms/Field/Upload/Upload.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport classnames from 'classnames'\nimport FieldBlock, {\n Props as FieldBlockProps,\n FieldBlockWidth,\n} from '../../FieldBlock'\nimport {\n useFieldProps,\n useTranslation as useFormsTranslation,\n} from '../../hooks'\nimport { FieldProps } from '../../types'\nimport Upload, {\n UploadFile,\n UploadFileNative,\n UploadProps,\n} from '../../../../components/Upload'\nimport useUpload from '../../../../components/upload/useUpload'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport HelpButtonInline, {\n HelpButtonInlineContent,\n} from '../../../../components/help-button/HelpButtonInline'\nimport { useTranslation as useSharedTranslation } from '../../../../shared'\nimport { SpacingProps } from '../../../../shared/types'\nimport { FormError } from '../../utils'\n\nexport type { UploadFile, UploadFileNative }\nexport type UploadValue = Array<UploadFile | UploadFileNative>\nexport type Props = Omit<\n FieldProps<UploadValue, UploadValue | undefined>,\n 'name'\n> &\n SpacingProps & {\n width?: Omit<FieldBlockWidth, 'medium' | 'small'>\n } & Pick<\n Partial<UploadProps>,\n | 'title'\n | 'text'\n | 'acceptedFileTypes'\n | 'filesAmountLimit'\n | 'fileMaxSize'\n | 'onFileDelete'\n | 'onFileClick'\n | 'skeleton'\n | 'download'\n > & {\n fileHandler?: (\n newFiles: UploadValue\n ) => UploadValue | Promise<UploadValue>\n }\n\nconst validateRequired = (\n value: UploadValue,\n { required, isChanged, error }\n) => {\n const hasError = value?.some((file) => file.errorMessage)\n if (hasError) {\n return new FormError('Upload.errorInvalidFiles')\n }\n\n const hasFiles = value?.length > 0\n if (required && ((!isChanged && !hasFiles) || !hasFiles)) {\n return error\n }\n\n return undefined\n}\n\nfunction UploadComponent(props: Props) {\n const sharedTr = useSharedTranslation().Upload\n const formsTr = useFormsTranslation().Upload\n\n const errorMessages = useMemo(\n () => ({\n 'Field.errorRequired': formsTr.errorRequired,\n }),\n [formsTr.errorRequired]\n )\n\n const fromInput = useCallback((value: UploadValue) => {\n value.forEach((item, index) => {\n value[index] = item\n\n // Store the name in the value, to support session storage (serialization)\n value[index]['name'] = item['name'] || item.file?.name\n })\n\n return value\n }, [])\n\n const preparedProps = {\n errorMessages,\n validateRequired,\n fromInput,\n toInput: transformFiles,\n ...props,\n }\n\n const {\n id,\n className,\n width: widthProp = 'stretch',\n value,\n label,\n labelDescription,\n help,\n htmlAttributes,\n handleChange,\n handleFocus,\n handleBlur,\n fileHandler,\n ...rest\n } = useFieldProps(preparedProps, {\n executeOnChangeRegardlessOfError: true,\n })\n\n // Upload props\n const {\n title = sharedTr.title,\n text = sharedTr.text,\n acceptedFileTypes = ['pdf', 'png', 'jpg', 'jpeg'],\n filesAmountLimit = 100,\n fileMaxSize = 5,\n skeleton,\n onFileDelete,\n onFileClick,\n } = rest\n\n const { files, setFiles } = useUpload(id)\n\n const filesRef = useRef<Array<UploadFile>>()\n\n useEffect(() => {\n filesRef.current = files\n }, [files])\n\n useEffect(() => {\n setFiles(value)\n }, [setFiles, value])\n\n const handleChangeAsync = useCallback(\n async (files: UploadValue) => {\n // Filter out existing files\n const existingFileIds =\n filesRef.current?.map((file) => file.id) || []\n const newFiles = files.filter(\n (file) => !existingFileIds.includes(file.id)\n )\n const newValidFiles = newFiles.filter((file) => !file.errorMessage)\n\n if (newValidFiles.length > 0) {\n // Set loading\n const newFilesLoading = newFiles.map((file) => ({\n ...file,\n isLoading: !file.errorMessage,\n }))\n setFiles([...filesRef.current, ...newFilesLoading])\n\n const incomingFiles = await fileHandler(newValidFiles)\n // merge incoming files into existing order of newFiles.\n incomingFiles.forEach((file) => {\n const incomingFileObj = {\n ...file,\n isLoading: false,\n }\n const foundIndex = newFilesLoading.findIndex(\n (newFile) => newFile.isLoading\n )\n if (foundIndex >= 0) {\n newFilesLoading[foundIndex] = incomingFileObj\n } else {\n // if there's more files incoming than there's files loading (edge case), add them to end of array.\n newFilesLoading.push(incomingFileObj)\n }\n })\n\n const indexOfFirstNewFile = filesRef.current.findIndex(\n ({ id }) => id === newFiles[0].id\n )\n\n const updatedFiles = [\n ...filesRef.current.slice(0, indexOfFirstNewFile),\n ...newFilesLoading,\n ...filesRef.current.slice(\n indexOfFirstNewFile + newFilesLoading.length\n ),\n ]\n\n // Set error, if any\n handleChange(updatedFiles)\n } else {\n handleChange(files)\n }\n },\n [setFiles, fileHandler, handleChange]\n )\n\n const changeHandler = useCallback(\n ({ files }: { files: UploadValue }) => {\n // Prevents the form-status from showing up\n handleBlur()\n handleFocus()\n\n if (fileHandler) {\n handleChangeAsync(files)\n } else {\n handleChange(files)\n }\n },\n [handleBlur, handleFocus, fileHandler, handleChangeAsync, handleChange]\n )\n\n const width = widthProp as FieldBlockWidth\n const fieldBlockProps: FieldBlockProps = {\n id,\n forId: `${id}-input`,\n labelSrOnly: true,\n className: classnames('dnb-forms-field-upload', className),\n width,\n help: undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Upload\n id={id}\n acceptedFileTypes={acceptedFileTypes}\n filesAmountLimit={filesAmountLimit}\n fileMaxSize={fileMaxSize}\n skeleton={skeleton}\n onChange={changeHandler}\n onFileDelete={onFileDelete}\n onFileClick={onFileClick}\n title={label ?? title}\n text={\n help ? (\n <>\n {labelDescription ?? text}\n <HelpButtonInline\n contentId={`${id}-help`}\n left={text ? 'x-small' : false}\n help={help}\n />\n </>\n ) : (\n labelDescription ?? text\n )\n }\n {...htmlAttributes}\n >\n {help && (\n <HelpButtonInlineContent contentId={`${id}-help`} help={help} />\n )}\n </Upload>\n </FieldBlock>\n )\n}\n\nexport default UploadComponent\n\nUploadComponent._supportsSpacingProps = true\n\nexport function transformFiles(value: UploadValue) {\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return undefined\n }\n\n value.map((item) => {\n if (item?.file && !(item.file instanceof File)) {\n // To support session storage, we recreated the file blob.\n item['file'] = new File([], item['name'])\n }\n return item\n })\n }\n\n return value\n}\n"],"mappings":"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"}
@@ -10,7 +10,6 @@ import React, { useMemo, useContext, useCallback, useRef, useReducer, useEffect
10
10
  import classnames from 'classnames';
11
11
  import FieldBlockContext from './FieldBlockContext';
12
12
  import DataContext from '../DataContext/Context';
13
- import IterateElementContext from '../Iterate/IterateItemContext';
14
13
  import { Space, FormLabel, FormStatus } from '../../../components';
15
14
  import { Ul, Li } from '../../../elements';
16
15
  import { convertJsxToString, findElementInChildren } from '../../../shared/component-helper';
@@ -20,6 +19,7 @@ import SubmitIndicator from '../Form/SubmitIndicator/SubmitIndicator';
20
19
  import { createSharedState } from '../../../shared/helpers/useSharedState';
21
20
  import useTranslation from '../hooks/useTranslation';
22
21
  import { FormError } from '../utils';
22
+ import { useIterateItemNo } from '../Iterate/ItemNo/useIItemNo';
23
23
  export const states = ['error', 'info', 'warning'];
24
24
  function FieldBlock(props) {
25
25
  var _props$id;
@@ -59,12 +59,8 @@ function FieldBlock(props) {
59
59
  rest = _objectWithoutProperties(_Object$assign, _excluded);
60
60
  const hasCustomWidth = /\d(rem)$/.test(String(width));
61
61
  const hasCustomContentWidth = /\d(rem)$/.test(String(contentWidth));
62
- const iterateItemContext = useContext(IterateElementContext);
63
- const {
64
- index: iterateIndex
65
- } = iterateItemContext !== null && iterateItemContext !== void 0 ? iterateItemContext : {};
66
62
  const blockId = useId(props.id);
67
- const [wasUpdated, forceUpdate] = useReducer(() => ({}), {});
63
+ const [salt, forceUpdate] = useReducer(() => ({}), {});
68
64
  const mountedFieldsRef = useRef({});
69
65
  const fieldStateRef = useRef(null);
70
66
  const stateRecordRef = useRef({});
@@ -73,33 +69,11 @@ function FieldBlock(props) {
73
69
  const hasInitiallyErrorProp = useMemo(() => {
74
70
  return Boolean(errorProp);
75
71
  }, []);
76
- const {
77
- optionalLabelSuffix
78
- } = useTranslation().Field;
79
- const labelSuffixText = useMemo(() => {
80
- if (required === false || typeof labelSuffix !== 'undefined') {
81
- return labelSuffix !== null && labelSuffix !== void 0 ? labelSuffix : optionalLabelSuffix;
82
- }
83
- return '';
84
- }, [required, labelSuffix, optionalLabelSuffix]);
85
- const label = useMemo(() => {
86
- let content = labelProp;
87
- if (iterateIndex !== undefined) {
88
- content = convertJsxToString(labelProp).replace('{itemNo}', String(iterateIndex + 1));
89
- }
90
- if (labelSuffixText) {
91
- if (convertJsxToString(content).includes(optionalLabelSuffix)) {
92
- return content;
93
- }
94
- if (typeof content === 'string') {
95
- return content + ' ' + labelSuffixText;
96
- }
97
- if (React.isValidElement(content)) {
98
- return React.createElement(React.Fragment, null, content, ' ', labelSuffixText);
99
- }
100
- }
101
- return content;
102
- }, [iterateIndex, labelProp, labelSuffixText, optionalLabelSuffix]);
72
+ const label = useIterateItemNo({
73
+ label: labelProp,
74
+ labelSuffix,
75
+ required
76
+ });
103
77
  const setInternalRecord = useCallback(props => {
104
78
  const {
105
79
  stateId,
@@ -123,14 +97,15 @@ function FieldBlock(props) {
123
97
  stateRecordRef.current[identifier].push(props);
124
98
  }
125
99
  }, []);
100
+ const setBlockRecordNested = nestedFieldBlockContext === null || nestedFieldBlockContext === void 0 ? void 0 : nestedFieldBlockContext.setBlockRecord;
126
101
  const setBlockRecord = useCallback(props => {
127
- if (nestedFieldBlockContext) {
128
- nestedFieldBlockContext.setBlockRecord(props);
102
+ if (setBlockRecordNested) {
103
+ setBlockRecordNested(props);
129
104
  return;
130
105
  }
131
106
  setInternalRecord(props);
132
107
  forceUpdate();
133
- }, [nestedFieldBlockContext, setInternalRecord]);
108
+ }, [setBlockRecordNested, setInternalRecord]);
134
109
  const setFieldState = useCallback((identifier, fieldState) => {
135
110
  if (fieldState !== fieldStateRef.current) {
136
111
  fieldStateRef.current = fieldState;
@@ -246,8 +221,8 @@ function FieldBlock(props) {
246
221
  }
247
222
  }
248
223
  return acc;
249
- }, {});
250
- }, [info, warning, errorProp, nestedFieldBlockContext, setInternalRecord, blockId, wasUpdated]);
224
+ }, salt);
225
+ }, [errorProp, warning, info, salt, setInternalRecord, blockId, hasInitiallyErrorProp, props.id, forId, label]);
251
226
  useEffect(() => {
252
227
  if (!nestedFieldBlockContext) {
253
228
  showFieldError(blockId, Boolean(errorProp));
@@ -266,6 +241,7 @@ function FieldBlock(props) {
266
241
  nestedFieldBlockContext
267
242
  });
268
243
  const labelProps = {
244
+ id: `${id}-label`,
269
245
  className: 'dnb-forms-field-block__label',
270
246
  element: enableFieldset ? 'legend' : 'label',
271
247
  forId: enableFieldset ? undefined : forId,