@dnb/eufemia 10.65.1 → 10.66.1

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 (483) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/cjs/components/card/Card.js +1 -1
  3. package/cjs/components/card/Card.js.map +1 -1
  4. package/cjs/components/date-picker/DatePickerInput.d.ts +5 -0
  5. package/cjs/components/date-picker/DatePickerInput.js +103 -76
  6. package/cjs/components/date-picker/DatePickerInput.js.map +1 -1
  7. package/cjs/components/date-picker/DatePickerProvider.d.ts +4 -3
  8. package/cjs/components/date-picker/DatePickerProvider.js +7 -2
  9. package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
  10. package/cjs/components/date-picker/hooks/useDates.js.map +1 -1
  11. package/cjs/components/flex/Container.d.ts +2 -1
  12. package/cjs/components/flex/Container.js +31 -24
  13. package/cjs/components/flex/Container.js.map +1 -1
  14. package/cjs/components/flex/ContainerDocs.d.ts +2 -0
  15. package/cjs/components/flex/ContainerDocs.js +81 -0
  16. package/cjs/components/flex/ContainerDocs.js.map +1 -0
  17. package/cjs/components/flex/style/dnb-flex.css +36 -4
  18. package/cjs/components/flex/style/dnb-flex.min.css +1 -1
  19. package/cjs/components/flex/style/flex-container.scss +39 -4
  20. package/cjs/components/help-button/HelpButtonInline.d.ts +7 -0
  21. package/cjs/components/help-button/HelpButtonInline.js +53 -20
  22. package/cjs/components/help-button/HelpButtonInline.js.map +1 -1
  23. package/cjs/components/help-button/HelpButtonInstance.js +1 -1
  24. package/cjs/components/help-button/HelpButtonInstance.js.map +1 -1
  25. package/cjs/components/slider/SliderDocs.js +2 -2
  26. package/cjs/components/slider/SliderDocs.js.map +1 -1
  27. package/cjs/components/slider/SliderProvider.js +0 -2
  28. package/cjs/components/slider/SliderProvider.js.map +1 -1
  29. package/cjs/components/slider/types.d.ts +2 -2
  30. package/cjs/components/slider/types.js.map +1 -1
  31. package/cjs/components/step-indicator/StepIndicator.d.ts +6 -0
  32. package/cjs/components/step-indicator/StepIndicator.js.map +1 -1
  33. package/cjs/components/step-indicator/StepIndicatorContext.d.ts +2 -0
  34. package/cjs/components/step-indicator/StepIndicatorContext.js.map +1 -1
  35. package/cjs/components/step-indicator/StepIndicatorTriggerButton.js +4 -3
  36. package/cjs/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
  37. package/cjs/components/toggle-button/ToggleButton.d.ts +9 -1
  38. package/cjs/components/toggle-button/ToggleButtonDocs.js +1 -0
  39. package/cjs/components/toggle-button/ToggleButtonDocs.js.map +1 -1
  40. package/cjs/components/upload/Upload.js +4 -5
  41. package/cjs/components/upload/Upload.js.map +1 -1
  42. package/cjs/components/upload/UploadFileInput.d.ts +4 -1
  43. package/cjs/components/upload/UploadFileInput.js +11 -3
  44. package/cjs/components/upload/UploadFileInput.js.map +1 -1
  45. package/cjs/components/upload/types.d.ts +1 -1
  46. package/cjs/components/upload/types.js.map +1 -1
  47. package/cjs/extensions/forms/DataContext/Context.d.ts +10 -4
  48. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  49. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +2 -2
  50. package/cjs/extensions/forms/DataContext/Provider/Provider.js +44 -40
  51. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  52. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
  53. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  54. package/cjs/extensions/forms/Field/Composition/Composition.js +2 -1
  55. package/cjs/extensions/forms/Field/Composition/Composition.js.map +1 -1
  56. package/cjs/extensions/forms/Field/Date/Date.d.ts +1 -1
  57. package/cjs/extensions/forms/Field/Date/Date.js +1 -1
  58. package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
  59. package/cjs/extensions/forms/Field/Slider/Slider.js +13 -4
  60. package/cjs/extensions/forms/Field/Slider/Slider.js.map +1 -1
  61. package/cjs/extensions/forms/Field/Upload/Upload.js +2 -1
  62. package/cjs/extensions/forms/Field/Upload/Upload.js.map +1 -1
  63. package/cjs/extensions/forms/Field/Upload/style/dnb-upload.css +5 -0
  64. package/cjs/extensions/forms/Field/Upload/style/dnb-upload.min.css +1 -1
  65. package/cjs/extensions/forms/Field/Upload/style/dnb-upload.scss +6 -0
  66. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +17 -13
  67. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  68. package/cjs/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -0
  69. package/cjs/extensions/forms/Value/ValueDocs.js +5 -0
  70. package/cjs/extensions/forms/Value/ValueDocs.js.map +1 -1
  71. package/cjs/extensions/forms/ValueBlock/ValueBlock.d.ts +14 -1
  72. package/cjs/extensions/forms/ValueBlock/ValueBlock.js +40 -10
  73. package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  74. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.css +17 -0
  75. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  76. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.scss +24 -0
  77. package/cjs/extensions/forms/Wizard/Container/DisplaySteps.d.ts +7 -0
  78. package/cjs/extensions/forms/Wizard/Container/DisplaySteps.js +78 -0
  79. package/cjs/extensions/forms/Wizard/Container/DisplaySteps.js.map +1 -0
  80. package/cjs/extensions/forms/Wizard/Container/IterateOverSteps.d.ts +3 -0
  81. package/cjs/extensions/forms/Wizard/Container/IterateOverSteps.js +94 -0
  82. package/cjs/extensions/forms/Wizard/Container/IterateOverSteps.js.map +1 -0
  83. package/cjs/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.d.ts +4 -0
  84. package/cjs/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js +67 -0
  85. package/cjs/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js.map +1 -0
  86. package/cjs/extensions/forms/Wizard/Container/WizardContainer.d.ts +9 -1
  87. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +102 -206
  88. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  89. package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.js +10 -0
  90. package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
  91. package/cjs/extensions/forms/Wizard/Context/WizardContext.d.ts +7 -23
  92. package/cjs/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
  93. package/cjs/extensions/forms/Wizard/Context/types.d.ts +35 -0
  94. package/cjs/extensions/forms/Wizard/Context/types.js +1 -0
  95. package/cjs/extensions/forms/Wizard/Context/types.js.map +1 -0
  96. package/cjs/extensions/forms/Wizard/EditButton/EditButton.d.ts +1 -1
  97. package/cjs/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
  98. package/cjs/extensions/forms/Wizard/Step/Step.d.ts +4 -0
  99. package/cjs/extensions/forms/Wizard/Step/Step.js +28 -9
  100. package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -1
  101. package/cjs/extensions/forms/Wizard/Step/StepContext.d.ts +7 -0
  102. package/cjs/extensions/forms/Wizard/Step/StepContext.js +12 -0
  103. package/cjs/extensions/forms/Wizard/Step/StepContext.js.map +1 -0
  104. package/cjs/extensions/forms/Wizard/Step/StepDocs.js +5 -0
  105. package/cjs/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  106. package/cjs/extensions/forms/Wizard/hooks/useStep.d.ts +2 -1
  107. package/cjs/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  108. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +1 -0
  109. package/cjs/extensions/forms/constants/locales/en-GB.js +2 -1
  110. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  111. package/cjs/extensions/forms/constants/locales/en-US.d.ts +1 -0
  112. package/cjs/extensions/forms/constants/locales/index.d.ts +2 -0
  113. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
  114. package/cjs/extensions/forms/constants/locales/nb-NO.js +2 -1
  115. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  116. package/cjs/extensions/forms/hooks/useFieldProps.js +35 -17
  117. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  118. package/cjs/extensions/forms/style/dnb-forms.css +22 -0
  119. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  120. package/cjs/extensions/forms/types.d.ts +9 -1
  121. package/cjs/extensions/forms/types.js.map +1 -1
  122. package/cjs/fragments/drawer-list/DrawerList.d.ts +6 -1
  123. package/cjs/fragments/drawer-list/DrawerList.js +1 -0
  124. package/cjs/fragments/drawer-list/DrawerList.js.map +1 -1
  125. package/cjs/shared/Eufemia.d.ts +1 -1
  126. package/cjs/shared/Eufemia.js +2 -2
  127. package/cjs/shared/Eufemia.js.map +1 -1
  128. package/cjs/style/core/scopes.scss +1 -1
  129. package/cjs/style/dnb-ui-basis.css +1 -1
  130. package/cjs/style/dnb-ui-basis.min.css +1 -1
  131. package/cjs/style/dnb-ui-body.css +1 -1
  132. package/cjs/style/dnb-ui-body.min.css +1 -1
  133. package/cjs/style/dnb-ui-components.css +58 -4
  134. package/cjs/style/dnb-ui-components.min.css +2 -2
  135. package/cjs/style/dnb-ui-core.css +1 -1
  136. package/cjs/style/dnb-ui-core.min.css +1 -1
  137. package/cjs/style/dnb-ui-extensions.css +22 -0
  138. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  139. package/cjs/style/dnb-ui-forms.css +22 -0
  140. package/cjs/style/dnb-ui-forms.min.css +1 -1
  141. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +80 -4
  142. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  143. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +22 -0
  144. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  145. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +22 -0
  146. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  147. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +80 -4
  148. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  149. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +22 -0
  150. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  151. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +22 -0
  152. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  153. package/cjs/style/themes/theme-ui/ui-theme-components.css +80 -4
  154. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  155. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +22 -0
  156. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  157. package/cjs/style/themes/theme-ui/ui-theme-forms.css +22 -0
  158. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  159. package/components/card/Card.js +1 -1
  160. package/components/card/Card.js.map +1 -1
  161. package/components/date-picker/DatePickerInput.d.ts +5 -0
  162. package/components/date-picker/DatePickerInput.js +103 -76
  163. package/components/date-picker/DatePickerInput.js.map +1 -1
  164. package/components/date-picker/DatePickerProvider.d.ts +4 -3
  165. package/components/date-picker/DatePickerProvider.js +7 -2
  166. package/components/date-picker/DatePickerProvider.js.map +1 -1
  167. package/components/date-picker/hooks/useDates.js.map +1 -1
  168. package/components/flex/Container.d.ts +2 -1
  169. package/components/flex/Container.js +32 -25
  170. package/components/flex/Container.js.map +1 -1
  171. package/components/flex/ContainerDocs.d.ts +2 -0
  172. package/components/flex/ContainerDocs.js +74 -0
  173. package/components/flex/ContainerDocs.js.map +1 -0
  174. package/components/flex/style/dnb-flex.css +36 -4
  175. package/components/flex/style/dnb-flex.min.css +1 -1
  176. package/components/flex/style/flex-container.scss +39 -4
  177. package/components/help-button/HelpButtonInline.d.ts +7 -0
  178. package/components/help-button/HelpButtonInline.js +53 -20
  179. package/components/help-button/HelpButtonInline.js.map +1 -1
  180. package/components/help-button/HelpButtonInstance.js +1 -1
  181. package/components/help-button/HelpButtonInstance.js.map +1 -1
  182. package/components/slider/SliderDocs.js +2 -2
  183. package/components/slider/SliderDocs.js.map +1 -1
  184. package/components/slider/SliderProvider.js +0 -2
  185. package/components/slider/SliderProvider.js.map +1 -1
  186. package/components/slider/types.d.ts +2 -2
  187. package/components/slider/types.js.map +1 -1
  188. package/components/step-indicator/StepIndicator.d.ts +6 -0
  189. package/components/step-indicator/StepIndicator.js.map +1 -1
  190. package/components/step-indicator/StepIndicatorContext.d.ts +2 -0
  191. package/components/step-indicator/StepIndicatorContext.js.map +1 -1
  192. package/components/step-indicator/StepIndicatorTriggerButton.js +4 -3
  193. package/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
  194. package/components/toggle-button/ToggleButton.d.ts +9 -1
  195. package/components/toggle-button/ToggleButtonDocs.js +1 -0
  196. package/components/toggle-button/ToggleButtonDocs.js.map +1 -1
  197. package/components/upload/Upload.js +3 -4
  198. package/components/upload/Upload.js.map +1 -1
  199. package/components/upload/UploadFileInput.d.ts +4 -1
  200. package/components/upload/UploadFileInput.js +10 -3
  201. package/components/upload/UploadFileInput.js.map +1 -1
  202. package/components/upload/types.d.ts +1 -1
  203. package/components/upload/types.js.map +1 -1
  204. package/es/components/card/Card.js +1 -1
  205. package/es/components/card/Card.js.map +1 -1
  206. package/es/components/date-picker/DatePickerInput.d.ts +5 -0
  207. package/es/components/date-picker/DatePickerInput.js +103 -76
  208. package/es/components/date-picker/DatePickerInput.js.map +1 -1
  209. package/es/components/date-picker/DatePickerProvider.d.ts +4 -3
  210. package/es/components/date-picker/DatePickerProvider.js +7 -2
  211. package/es/components/date-picker/DatePickerProvider.js.map +1 -1
  212. package/es/components/date-picker/hooks/useDates.js.map +1 -1
  213. package/es/components/flex/Container.d.ts +2 -1
  214. package/es/components/flex/Container.js +32 -25
  215. package/es/components/flex/Container.js.map +1 -1
  216. package/es/components/flex/ContainerDocs.d.ts +2 -0
  217. package/es/components/flex/ContainerDocs.js +74 -0
  218. package/es/components/flex/ContainerDocs.js.map +1 -0
  219. package/es/components/flex/style/dnb-flex.css +36 -4
  220. package/es/components/flex/style/dnb-flex.min.css +1 -1
  221. package/es/components/flex/style/flex-container.scss +39 -4
  222. package/es/components/help-button/HelpButtonInline.d.ts +7 -0
  223. package/es/components/help-button/HelpButtonInline.js +52 -19
  224. package/es/components/help-button/HelpButtonInline.js.map +1 -1
  225. package/es/components/help-button/HelpButtonInstance.js +1 -1
  226. package/es/components/help-button/HelpButtonInstance.js.map +1 -1
  227. package/es/components/slider/SliderDocs.js +2 -2
  228. package/es/components/slider/SliderDocs.js.map +1 -1
  229. package/es/components/slider/SliderProvider.js +0 -2
  230. package/es/components/slider/SliderProvider.js.map +1 -1
  231. package/es/components/slider/types.d.ts +2 -2
  232. package/es/components/slider/types.js.map +1 -1
  233. package/es/components/step-indicator/StepIndicator.d.ts +6 -0
  234. package/es/components/step-indicator/StepIndicator.js.map +1 -1
  235. package/es/components/step-indicator/StepIndicatorContext.d.ts +2 -0
  236. package/es/components/step-indicator/StepIndicatorContext.js.map +1 -1
  237. package/es/components/step-indicator/StepIndicatorTriggerButton.js +4 -3
  238. package/es/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
  239. package/es/components/toggle-button/ToggleButton.d.ts +9 -1
  240. package/es/components/toggle-button/ToggleButtonDocs.js +1 -0
  241. package/es/components/toggle-button/ToggleButtonDocs.js.map +1 -1
  242. package/es/components/upload/Upload.js +3 -4
  243. package/es/components/upload/Upload.js.map +1 -1
  244. package/es/components/upload/UploadFileInput.d.ts +4 -1
  245. package/es/components/upload/UploadFileInput.js +10 -3
  246. package/es/components/upload/UploadFileInput.js.map +1 -1
  247. package/es/components/upload/types.d.ts +1 -1
  248. package/es/components/upload/types.js.map +1 -1
  249. package/es/extensions/forms/DataContext/Context.d.ts +10 -4
  250. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  251. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +2 -2
  252. package/es/extensions/forms/DataContext/Provider/Provider.js +34 -33
  253. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  254. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
  255. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  256. package/es/extensions/forms/Field/Composition/Composition.js +2 -1
  257. package/es/extensions/forms/Field/Composition/Composition.js.map +1 -1
  258. package/es/extensions/forms/Field/Date/Date.d.ts +1 -1
  259. package/es/extensions/forms/Field/Date/Date.js +1 -1
  260. package/es/extensions/forms/Field/Date/Date.js.map +1 -1
  261. package/es/extensions/forms/Field/Slider/Slider.js +13 -4
  262. package/es/extensions/forms/Field/Slider/Slider.js.map +1 -1
  263. package/es/extensions/forms/Field/Upload/Upload.js +2 -1
  264. package/es/extensions/forms/Field/Upload/Upload.js.map +1 -1
  265. package/es/extensions/forms/Field/Upload/style/dnb-upload.css +5 -0
  266. package/es/extensions/forms/Field/Upload/style/dnb-upload.min.css +1 -1
  267. package/es/extensions/forms/Field/Upload/style/dnb-upload.scss +6 -0
  268. package/es/extensions/forms/FieldBlock/FieldBlock.js +17 -13
  269. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  270. package/es/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -0
  271. package/es/extensions/forms/Value/ValueDocs.js +5 -0
  272. package/es/extensions/forms/Value/ValueDocs.js.map +1 -1
  273. package/es/extensions/forms/ValueBlock/ValueBlock.d.ts +14 -1
  274. package/es/extensions/forms/ValueBlock/ValueBlock.js +40 -10
  275. package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  276. package/es/extensions/forms/ValueBlock/style/dnb-value-block.css +17 -0
  277. package/es/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  278. package/es/extensions/forms/ValueBlock/style/dnb-value-block.scss +24 -0
  279. package/es/extensions/forms/Wizard/Container/DisplaySteps.d.ts +7 -0
  280. package/es/extensions/forms/Wizard/Container/DisplaySteps.js +66 -0
  281. package/es/extensions/forms/Wizard/Container/DisplaySteps.js.map +1 -0
  282. package/es/extensions/forms/Wizard/Container/IterateOverSteps.d.ts +3 -0
  283. package/es/extensions/forms/Wizard/Container/IterateOverSteps.js +85 -0
  284. package/es/extensions/forms/Wizard/Container/IterateOverSteps.js.map +1 -0
  285. package/es/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.d.ts +4 -0
  286. package/es/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js +54 -0
  287. package/es/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js.map +1 -0
  288. package/es/extensions/forms/Wizard/Container/WizardContainer.d.ts +9 -1
  289. package/es/extensions/forms/Wizard/Container/WizardContainer.js +97 -194
  290. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  291. package/es/extensions/forms/Wizard/Container/WizardContainerDocs.js +10 -0
  292. package/es/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
  293. package/es/extensions/forms/Wizard/Context/WizardContext.d.ts +7 -23
  294. package/es/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
  295. package/es/extensions/forms/Wizard/Context/types.d.ts +35 -0
  296. package/es/extensions/forms/Wizard/Context/types.js +1 -0
  297. package/es/extensions/forms/Wizard/Context/types.js.map +1 -0
  298. package/es/extensions/forms/Wizard/EditButton/EditButton.d.ts +1 -1
  299. package/es/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
  300. package/es/extensions/forms/Wizard/Step/Step.d.ts +4 -0
  301. package/es/extensions/forms/Wizard/Step/Step.js +29 -10
  302. package/es/extensions/forms/Wizard/Step/Step.js.map +1 -1
  303. package/es/extensions/forms/Wizard/Step/StepContext.d.ts +7 -0
  304. package/es/extensions/forms/Wizard/Step/StepContext.js +4 -0
  305. package/es/extensions/forms/Wizard/Step/StepContext.js.map +1 -0
  306. package/es/extensions/forms/Wizard/Step/StepDocs.js +5 -0
  307. package/es/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  308. package/es/extensions/forms/Wizard/hooks/useStep.d.ts +2 -1
  309. package/es/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  310. package/es/extensions/forms/constants/locales/en-GB.d.ts +1 -0
  311. package/es/extensions/forms/constants/locales/en-GB.js +2 -1
  312. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  313. package/es/extensions/forms/constants/locales/en-US.d.ts +1 -0
  314. package/es/extensions/forms/constants/locales/index.d.ts +2 -0
  315. package/es/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
  316. package/es/extensions/forms/constants/locales/nb-NO.js +2 -1
  317. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  318. package/es/extensions/forms/hooks/useFieldProps.js +36 -16
  319. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  320. package/es/extensions/forms/style/dnb-forms.css +22 -0
  321. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  322. package/es/extensions/forms/types.d.ts +9 -1
  323. package/es/extensions/forms/types.js.map +1 -1
  324. package/es/fragments/drawer-list/DrawerList.d.ts +6 -1
  325. package/es/fragments/drawer-list/DrawerList.js +1 -0
  326. package/es/fragments/drawer-list/DrawerList.js.map +1 -1
  327. package/es/shared/Eufemia.d.ts +1 -1
  328. package/es/shared/Eufemia.js +2 -2
  329. package/es/shared/Eufemia.js.map +1 -1
  330. package/es/style/core/scopes.scss +1 -1
  331. package/es/style/dnb-ui-basis.css +1 -1
  332. package/es/style/dnb-ui-basis.min.css +1 -1
  333. package/es/style/dnb-ui-body.css +1 -1
  334. package/es/style/dnb-ui-body.min.css +1 -1
  335. package/es/style/dnb-ui-components.css +58 -4
  336. package/es/style/dnb-ui-components.min.css +2 -2
  337. package/es/style/dnb-ui-core.css +1 -1
  338. package/es/style/dnb-ui-core.min.css +1 -1
  339. package/es/style/dnb-ui-extensions.css +22 -0
  340. package/es/style/dnb-ui-extensions.min.css +1 -1
  341. package/es/style/dnb-ui-forms.css +22 -0
  342. package/es/style/dnb-ui-forms.min.css +1 -1
  343. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +80 -4
  344. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  345. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +22 -0
  346. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  347. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +22 -0
  348. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  349. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +80 -4
  350. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  351. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +22 -0
  352. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  353. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +22 -0
  354. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  355. package/es/style/themes/theme-ui/ui-theme-components.css +80 -4
  356. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  357. package/es/style/themes/theme-ui/ui-theme-extensions.css +22 -0
  358. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  359. package/es/style/themes/theme-ui/ui-theme-forms.css +22 -0
  360. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  361. package/esm/dnb-ui-basis.min.mjs +1 -1
  362. package/esm/dnb-ui-components.min.mjs +1 -1
  363. package/esm/dnb-ui-elements.min.mjs +1 -1
  364. package/esm/dnb-ui-extensions.min.mjs +2 -2
  365. package/esm/dnb-ui-lib.min.mjs +1 -1
  366. package/extensions/forms/DataContext/Context.d.ts +10 -4
  367. package/extensions/forms/DataContext/Context.js.map +1 -1
  368. package/extensions/forms/DataContext/Provider/Provider.d.ts +2 -2
  369. package/extensions/forms/DataContext/Provider/Provider.js +44 -40
  370. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  371. package/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
  372. package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  373. package/extensions/forms/Field/Composition/Composition.js +2 -1
  374. package/extensions/forms/Field/Composition/Composition.js.map +1 -1
  375. package/extensions/forms/Field/Date/Date.d.ts +1 -1
  376. package/extensions/forms/Field/Date/Date.js +1 -1
  377. package/extensions/forms/Field/Date/Date.js.map +1 -1
  378. package/extensions/forms/Field/Slider/Slider.js +13 -4
  379. package/extensions/forms/Field/Slider/Slider.js.map +1 -1
  380. package/extensions/forms/Field/Upload/Upload.js +2 -1
  381. package/extensions/forms/Field/Upload/Upload.js.map +1 -1
  382. package/extensions/forms/Field/Upload/style/dnb-upload.css +5 -0
  383. package/extensions/forms/Field/Upload/style/dnb-upload.min.css +1 -1
  384. package/extensions/forms/Field/Upload/style/dnb-upload.scss +6 -0
  385. package/extensions/forms/FieldBlock/FieldBlock.js +17 -13
  386. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  387. package/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -0
  388. package/extensions/forms/Value/ValueDocs.js +5 -0
  389. package/extensions/forms/Value/ValueDocs.js.map +1 -1
  390. package/extensions/forms/ValueBlock/ValueBlock.d.ts +14 -1
  391. package/extensions/forms/ValueBlock/ValueBlock.js +40 -10
  392. package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  393. package/extensions/forms/ValueBlock/style/dnb-value-block.css +17 -0
  394. package/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  395. package/extensions/forms/ValueBlock/style/dnb-value-block.scss +24 -0
  396. package/extensions/forms/Wizard/Container/DisplaySteps.d.ts +7 -0
  397. package/extensions/forms/Wizard/Container/DisplaySteps.js +70 -0
  398. package/extensions/forms/Wizard/Container/DisplaySteps.js.map +1 -0
  399. package/extensions/forms/Wizard/Container/IterateOverSteps.d.ts +3 -0
  400. package/extensions/forms/Wizard/Container/IterateOverSteps.js +86 -0
  401. package/extensions/forms/Wizard/Container/IterateOverSteps.js.map +1 -0
  402. package/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.d.ts +4 -0
  403. package/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js +57 -0
  404. package/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js.map +1 -0
  405. package/extensions/forms/Wizard/Container/WizardContainer.d.ts +9 -1
  406. package/extensions/forms/Wizard/Container/WizardContainer.js +103 -207
  407. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  408. package/extensions/forms/Wizard/Container/WizardContainerDocs.js +10 -0
  409. package/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
  410. package/extensions/forms/Wizard/Context/WizardContext.d.ts +7 -23
  411. package/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
  412. package/extensions/forms/Wizard/Context/types.d.ts +35 -0
  413. package/extensions/forms/Wizard/Context/types.js +1 -0
  414. package/extensions/forms/Wizard/Context/types.js.map +1 -0
  415. package/extensions/forms/Wizard/EditButton/EditButton.d.ts +1 -1
  416. package/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
  417. package/extensions/forms/Wizard/Step/Step.d.ts +4 -0
  418. package/extensions/forms/Wizard/Step/Step.js +29 -10
  419. package/extensions/forms/Wizard/Step/Step.js.map +1 -1
  420. package/extensions/forms/Wizard/Step/StepContext.d.ts +7 -0
  421. package/extensions/forms/Wizard/Step/StepContext.js +4 -0
  422. package/extensions/forms/Wizard/Step/StepContext.js.map +1 -0
  423. package/extensions/forms/Wizard/Step/StepDocs.js +5 -0
  424. package/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  425. package/extensions/forms/Wizard/hooks/useStep.d.ts +2 -1
  426. package/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  427. package/extensions/forms/constants/locales/en-GB.d.ts +1 -0
  428. package/extensions/forms/constants/locales/en-GB.js +2 -1
  429. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  430. package/extensions/forms/constants/locales/en-US.d.ts +1 -0
  431. package/extensions/forms/constants/locales/index.d.ts +2 -0
  432. package/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
  433. package/extensions/forms/constants/locales/nb-NO.js +2 -1
  434. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  435. package/extensions/forms/hooks/useFieldProps.js +35 -17
  436. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  437. package/extensions/forms/style/dnb-forms.css +22 -0
  438. package/extensions/forms/style/dnb-forms.min.css +1 -1
  439. package/extensions/forms/types.d.ts +9 -1
  440. package/extensions/forms/types.js.map +1 -1
  441. package/fragments/drawer-list/DrawerList.d.ts +6 -1
  442. package/fragments/drawer-list/DrawerList.js +1 -0
  443. package/fragments/drawer-list/DrawerList.js.map +1 -1
  444. package/package.json +1 -1
  445. package/shared/Eufemia.d.ts +1 -1
  446. package/shared/Eufemia.js +2 -2
  447. package/shared/Eufemia.js.map +1 -1
  448. package/style/core/scopes.scss +1 -1
  449. package/style/dnb-ui-basis.css +1 -1
  450. package/style/dnb-ui-basis.min.css +1 -1
  451. package/style/dnb-ui-body.css +1 -1
  452. package/style/dnb-ui-body.min.css +1 -1
  453. package/style/dnb-ui-components.css +58 -4
  454. package/style/dnb-ui-components.min.css +2 -2
  455. package/style/dnb-ui-core.css +1 -1
  456. package/style/dnb-ui-core.min.css +1 -1
  457. package/style/dnb-ui-extensions.css +22 -0
  458. package/style/dnb-ui-extensions.min.css +1 -1
  459. package/style/dnb-ui-forms.css +22 -0
  460. package/style/dnb-ui-forms.min.css +1 -1
  461. package/style/themes/theme-eiendom/eiendom-theme-components.css +80 -4
  462. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  463. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +22 -0
  464. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  465. package/style/themes/theme-eiendom/eiendom-theme-forms.css +22 -0
  466. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  467. package/style/themes/theme-sbanken/sbanken-theme-components.css +80 -4
  468. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  469. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +22 -0
  470. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  471. package/style/themes/theme-sbanken/sbanken-theme-forms.css +22 -0
  472. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  473. package/style/themes/theme-ui/ui-theme-components.css +80 -4
  474. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  475. package/style/themes/theme-ui/ui-theme-extensions.css +22 -0
  476. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  477. package/style/themes/theme-ui/ui-theme-forms.css +22 -0
  478. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  479. package/umd/dnb-ui-basis.min.js +1 -1
  480. package/umd/dnb-ui-components.min.js +1 -1
  481. package/umd/dnb-ui-elements.min.js +1 -1
  482. package/umd/dnb-ui-extensions.min.js +2 -2
  483. package/umd/dnb-ui-lib.min.js +1 -1
@@ -21,7 +21,7 @@ export type DateProps = Omit<FieldProps<string, undefined | string>, 'onBlurVali
21
21
  */
22
22
  showResetButton?: DatePickerProps['showResetButton'];
23
23
  onBlurValidator?: ValidatorDisableable<string>;
24
- } & Pick<DatePickerProps, 'month' | 'startMonth' | 'endMonth' | 'minDate' | 'maxDate' | 'correctInvalidDate' | 'maskOrder' | 'maskPlaceholder' | 'dateFormat' | 'returnFormat' | 'hideNavigation' | 'hideDays' | 'onlyMonth' | 'hideLastWeek' | 'disableAutofocus' | 'showSubmitButton' | 'submitButtonText' | 'cancelButtonText' | 'resetButtonText' | 'firstDay' | 'link' | 'size' | 'sync' | 'addonElement' | 'shortcuts' | 'opened' | 'direction' | 'alignPicker' | 'onDaysRender' | 'onType' | 'onShow' | 'onHide' | 'onSubmit' | 'onCancel' | 'onReset'>;
24
+ } & Pick<DatePickerProps, 'month' | 'startMonth' | 'endMonth' | 'minDate' | 'maxDate' | 'correctInvalidDate' | 'maskOrder' | 'maskPlaceholder' | 'dateFormat' | 'returnFormat' | 'hideNavigation' | 'hideDays' | 'onlyMonth' | 'hideLastWeek' | 'disableAutofocus' | 'showSubmitButton' | 'submitButtonText' | 'cancelButtonText' | 'resetButtonText' | 'firstDay' | 'link' | 'size' | 'sync' | 'addonElement' | 'shortcuts' | 'opened' | 'direction' | 'alignPicker' | 'onDaysRender' | 'onType' | 'onShow' | 'onHide' | 'onSubmit' | 'onCancel' | 'onReset' | 'skipPortal'>;
25
25
  declare function DateComponent(props: DateProps): import("react/jsx-runtime").JSX.Element;
26
26
  declare namespace DateComponent {
27
27
  var _supportsSpacingProps: boolean;
@@ -241,7 +241,7 @@ function validateDateLimit(_ref) {
241
241
  }
242
242
  return messages;
243
243
  }
244
- const datePickerPropKeys = ['month', 'startMonth', 'endMonth', 'minDate', 'maxDate', 'correctInvalidDate', 'maskOrder', 'maskPlaceholder', 'dateFormat', 'returnFormat', 'hideNavigation', 'hideDays', 'onlyMonth', 'hideLastWeek', 'disableAutofocus', 'showSubmitButton', 'submitButtonText', 'cancelButtonText', 'resetButtonText', 'firstDay', 'link', 'size', 'sync', 'addonElement', 'shortcuts', 'opened', 'direction', 'alignPicker', 'onDaysRender', 'showInput', 'onDaysRender', 'onType', 'onShow', 'onHide', 'onSubmit', 'onCancel', 'onReset'];
244
+ const datePickerPropKeys = ['month', 'startMonth', 'endMonth', 'minDate', 'maxDate', 'correctInvalidDate', 'maskOrder', 'maskPlaceholder', 'dateFormat', 'returnFormat', 'hideNavigation', 'hideDays', 'onlyMonth', 'hideLastWeek', 'disableAutofocus', 'showSubmitButton', 'submitButtonText', 'cancelButtonText', 'resetButtonText', 'firstDay', 'link', 'size', 'sync', 'addonElement', 'shortcuts', 'opened', 'direction', 'alignPicker', 'onDaysRender', 'showInput', 'onDaysRender', 'onType', 'onShow', 'onHide', 'onSubmit', 'onCancel', 'onReset', 'skipPortal'];
245
245
  function pickDatePickerProps(props) {
246
246
  const datePickerProps = Object.keys(props).reduce((datePickerProps, key) => {
247
247
  if (datePickerPropKeys.includes(key)) {
@@ -1 +1 @@
1
- {"version":3,"file":"Date.js","names":["React","useCallback","useContext","useMemo","DatePicker","useFieldProps","pickSpacingProps","classnames","FieldBlock","SharedContext","parseISO","isValid","isBefore","isAfter","useTranslation","formatDate","convertStringToDate","FormError","DateComponent","props","_props$validateInitia","errorRequired","label","defaultLabel","Date","locale","errorMessages","_objectSpread","schema","_props$schema","type","pattern","validateRequired","value","required","error","undefined","dateLimitValidator","res","validateDateLimit","minDate","maxDate","isRange","range","onBlurValidator","hasDateLimitAndValue","Boolean","preparedProps","fromInput","date","start_date","end_date","validateInitially","exportValidators","_useFieldProps","id","path","itemPath","className","valueProp","hasError","disabled","htmlAttributes","handleFocus","handleBlur","handleChange","setDisplayValue","showCancelButton","showResetButton","showInput","onReset","rest","_objectWithoutProperties","_excluded","datePickerProps","pickDatePickerProps","startDate","endDate","parseRangeValue","fieldBlockProps","forId","createElement","_extends","status","onChange","event","onFocus","onBlur","split","map","test","_ref","dates","_excluded2","startDateParsed","endDateParsed","isoDates","toISOString","options","variant","messageValues","messages","push","datePickerPropKeys","Object","keys","reduce","key","includes","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Date/Date.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport { DatePicker } from '../../../../components'\nimport { useFieldProps } from '../../hooks'\nimport type {\n FieldProps,\n AllJSONSchemaVersions,\n ValidatorDisableable,\n} from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport classnames from 'classnames'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport SharedContext from '../../../../shared/Context'\nimport { parseISO, isValid, isBefore, isAfter } from 'date-fns'\nimport useTranslation from '../../hooks/useTranslation'\nimport { FormatDateOptions, formatDate } from '../../Value/Date'\nimport {\n DatePickerEvent,\n DatePickerProps,\n} from '../../../../components/DatePicker'\nimport { convertStringToDate } from '../../../../components/date-picker/DatePickerCalc'\nimport { ProviderProps } from '../../../../shared/Provider'\nimport { FormError } from '../../utils'\n\n// `range`, `showInput`, `showCancelButton` and `showResetButton` are not picked from the `DatePickerProps`\n// Since they require `Field.Date` specific comments, due to them having different default values\nexport type DateProps = Omit<\n FieldProps<string, undefined | string>,\n 'onBlurValidator'\n> & {\n // Validation\n pattern?: string\n /**\n * Defines if the Date field should support a value of two dates (starting and ending date).\n * The value needs to be a string containing two dates, separated by a pipe character (`|`) i.e. (`01-09-2024|30-09-2024`) when this is set to `true`.\n * Defaults to `false`.\n */\n range?: DatePickerProps['range']\n /**\n * If the input fields with the mask should be visible. Defaults to `true`.\n */\n showInput?: DatePickerProps['showInput']\n\n /**\n * If set to `true`, a cancel button will be shown. You can change the default text by using `cancel_button_text=\"Avbryt\"` Defaults to `true`. If the `range` prop is `true`, then the cancel button is shown.\n */\n showCancelButton?: DatePickerProps['showCancelButton']\n /**\n * If set to `true`, a reset button will be shown. You can change the default text by using `reset_button_text=\"Tilbakestill\"` Defaults to `true`.\n */\n showResetButton?: DatePickerProps['showResetButton']\n onBlurValidator?: ValidatorDisableable<string>\n} & Pick<\n DatePickerProps,\n | 'month'\n | 'startMonth'\n | 'endMonth'\n | 'minDate'\n | 'maxDate'\n | 'correctInvalidDate'\n | 'maskOrder'\n | 'maskPlaceholder'\n | 'dateFormat'\n | 'returnFormat'\n | 'hideNavigation'\n | 'hideDays'\n | 'onlyMonth'\n | 'hideLastWeek'\n | 'disableAutofocus'\n | 'showSubmitButton'\n | 'submitButtonText'\n | 'cancelButtonText'\n | 'resetButtonText'\n | 'firstDay'\n | 'link'\n | 'size'\n | 'sync'\n | 'addonElement'\n | 'shortcuts'\n | 'opened'\n | 'direction'\n | 'alignPicker'\n | 'onDaysRender'\n | 'onType'\n | 'onShow'\n | 'onHide'\n | 'onSubmit'\n | 'onCancel'\n | 'onReset'\n >\n\nfunction DateComponent(props: DateProps) {\n const { errorRequired, label: defaultLabel } = useTranslation().Date\n const { locale } = useContext(SharedContext)\n\n const errorMessages = useMemo(() => {\n return {\n 'Field.errorRequired': errorRequired,\n 'Field.errorPattern': errorRequired,\n ...props.errorMessages,\n }\n }, [props.errorMessages, errorRequired])\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n pattern: props.pattern,\n },\n [props.schema, props.pattern]\n )\n\n const validateRequired = useCallback(\n (value: string, { required, error }) => {\n if (required && (!value || !isValid(parseISO(value)))) {\n return error\n }\n\n return undefined\n },\n []\n )\n\n const dateLimitValidator = useCallback(\n (value: string) => {\n const res = validateDateLimit({\n value,\n locale,\n minDate: props.minDate,\n maxDate: props.maxDate,\n isRange: props.range,\n })\n\n return res\n },\n [props.maxDate, props.minDate, props.range, locale]\n )\n\n const onBlurValidator = useMemo(() => {\n if (props.onBlurValidator === false) {\n return undefined\n }\n\n if (props.onBlurValidator) {\n return props.onBlurValidator\n }\n\n return dateLimitValidator\n }, [props.onBlurValidator, dateLimitValidator])\n\n const hasDateLimitAndValue = useMemo(() => {\n return (props.minDate || props.maxDate) && Boolean(props.value)\n }, [props.minDate, props.maxDate, props.value])\n\n const preparedProps = {\n ...props,\n errorMessages,\n schema,\n fromInput: ({\n date,\n start_date,\n end_date,\n }: DatePickerEvent<React.ChangeEvent<HTMLInputElement>>) => {\n return range ? `${start_date}|${end_date}` : date\n },\n validateRequired,\n validateInitially: props.validateInitially ?? hasDateLimitAndValue,\n onBlurValidator,\n exportValidators: { dateLimitValidator },\n }\n\n const {\n id,\n path,\n itemPath,\n className,\n label,\n value: valueProp,\n hasError,\n disabled,\n htmlAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n setDisplayValue,\n range,\n showCancelButton = true,\n showResetButton = true,\n showInput = true,\n onReset,\n minDate,\n maxDate,\n ...rest\n } = useFieldProps(preparedProps)\n\n const datePickerProps = pickDatePickerProps(rest)\n\n const { value, startDate, endDate } = useMemo(() => {\n if (!range || !valueProp) {\n return {\n // Assign to null if falsy value, to properly clear input values\n value: valueProp ?? null,\n startDate: undefined,\n endDate: undefined,\n }\n }\n\n const [startDate, endDate] = parseRangeValue(valueProp)\n\n return {\n value: undefined,\n startDate,\n endDate,\n }\n }, [range, valueProp])\n\n useMemo(() => {\n if ((path || itemPath) && valueProp) {\n setDisplayValue(formatDate(valueProp, { locale }), undefined)\n }\n }, [itemPath, locale, path, setDisplayValue, valueProp])\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n label: label ?? defaultLabel,\n className: classnames('dnb-forms-field-string', className),\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <DatePicker\n id={id}\n date={value}\n disabled={disabled}\n showInput={showInput}\n showCancelButton={showCancelButton}\n showResetButton={showResetButton}\n startDate={startDate}\n endDate={endDate}\n minDate={minDate}\n maxDate={maxDate}\n status={hasError ? 'error' : undefined}\n range={range}\n onChange={handleChange}\n onReset={(event) => {\n handleChange(event)\n onReset?.(event)\n }}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...datePickerProps}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n}\n\nfunction parseRangeValue(value: DateProps['value']) {\n return (\n value\n .split('|')\n // Assign to null if falsy value, to properly clear input values\n .map((value) => (/(undefined|null)/.test(value) ? null : value))\n )\n}\n\nfunction validateDateLimit({\n value,\n isRange,\n locale,\n ...dates\n}: {\n value: DateProps['value']\n minDate: DateProps['minDate']\n maxDate: DateProps['maxDate']\n isRange: DateProps['range']\n locale: ProviderProps['locale']\n}) {\n if ((!dates.minDate && !dates.maxDate) || !value) {\n return\n }\n\n const [startDateParsed, endDateParsed] = parseRangeValue(value)\n\n const minDate = convertStringToDate(dates.minDate)\n const maxDate = convertStringToDate(dates.maxDate)\n\n const startDate = convertStringToDate(startDateParsed)\n const endDate = convertStringToDate(endDateParsed)\n\n const isoDates = {\n minDate:\n dates.minDate instanceof Date\n ? dates.minDate.toISOString()\n : dates.minDate,\n maxDate:\n dates.maxDate instanceof Date\n ? dates.maxDate.toISOString()\n : dates.maxDate,\n }\n\n const options: FormatDateOptions = {\n locale,\n variant: 'long',\n }\n\n // Handle non range validation\n if (!isRange) {\n if (isBefore(startDate, minDate)) {\n return new FormError('Date.errorMinDate', {\n messageValues: { date: formatDate(isoDates.minDate, options) },\n })\n }\n\n if (isAfter(startDate, maxDate)) {\n return new FormError('Date.errorMaxDate', {\n messageValues: { date: formatDate(isoDates.maxDate, options) },\n })\n }\n\n return\n }\n\n const messages: Array<FormError> = []\n\n // Start date validation\n if (isBefore(startDate, minDate)) {\n messages.push(\n new FormError('Date.errorStartDateMinDate', {\n messageValues: { date: formatDate(isoDates.minDate, options) },\n })\n )\n }\n\n if (isAfter(startDate, maxDate)) {\n messages.push(\n new FormError('Date.errorStartDateMaxDate', {\n messageValues: { date: formatDate(isoDates.maxDate, options) },\n })\n )\n }\n\n // End date validation\n if (isBefore(endDate, minDate)) {\n messages.push(\n new FormError('Date.errorEndDateMinDate', {\n messageValues: { date: formatDate(isoDates.minDate, options) },\n })\n )\n }\n\n if (isAfter(endDate, maxDate)) {\n messages.push(\n new FormError('Date.errorEndDateMaxDate', {\n messageValues: { date: formatDate(isoDates.maxDate, options) },\n })\n )\n }\n\n return messages\n}\n\n// Used to filter out DatePickerProps from the FieldProps.\n// Includes DatePickerProps that are not destructured in useFieldProps\nconst datePickerPropKeys = [\n 'month',\n 'startMonth',\n 'endMonth',\n 'minDate',\n 'maxDate',\n 'correctInvalidDate',\n 'maskOrder',\n 'maskPlaceholder',\n 'dateFormat',\n 'returnFormat',\n 'hideNavigation',\n 'hideDays',\n 'onlyMonth',\n 'hideLastWeek',\n 'disableAutofocus',\n 'showSubmitButton',\n 'submitButtonText',\n 'cancelButtonText',\n 'resetButtonText',\n 'firstDay',\n 'link',\n 'size',\n 'sync',\n 'addonElement',\n 'shortcuts',\n 'opened',\n 'direction',\n 'alignPicker',\n 'onDaysRender',\n 'showInput',\n 'onDaysRender',\n 'onType',\n 'onShow',\n 'onHide',\n 'onSubmit',\n 'onCancel',\n 'onReset',\n]\n\nfunction pickDatePickerProps(props: DateProps) {\n const datePickerProps = Object.keys(props).reduce(\n (datePickerProps, key) => {\n if (datePickerPropKeys.includes(key)) {\n datePickerProps[key] = props[key]\n }\n\n return datePickerProps\n },\n {}\n )\n\n return datePickerProps\n}\n\nDateComponent._supportsSpacingProps = true\nexport default DateComponent\n"],"mappings":"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"}
1
+ {"version":3,"file":"Date.js","names":["React","useCallback","useContext","useMemo","DatePicker","useFieldProps","pickSpacingProps","classnames","FieldBlock","SharedContext","parseISO","isValid","isBefore","isAfter","useTranslation","formatDate","convertStringToDate","FormError","DateComponent","props","_props$validateInitia","errorRequired","label","defaultLabel","Date","locale","errorMessages","_objectSpread","schema","_props$schema","type","pattern","validateRequired","value","required","error","undefined","dateLimitValidator","res","validateDateLimit","minDate","maxDate","isRange","range","onBlurValidator","hasDateLimitAndValue","Boolean","preparedProps","fromInput","date","start_date","end_date","validateInitially","exportValidators","_useFieldProps","id","path","itemPath","className","valueProp","hasError","disabled","htmlAttributes","handleFocus","handleBlur","handleChange","setDisplayValue","showCancelButton","showResetButton","showInput","onReset","rest","_objectWithoutProperties","_excluded","datePickerProps","pickDatePickerProps","startDate","endDate","parseRangeValue","fieldBlockProps","forId","createElement","_extends","status","onChange","event","onFocus","onBlur","split","map","test","_ref","dates","_excluded2","startDateParsed","endDateParsed","isoDates","toISOString","options","variant","messageValues","messages","push","datePickerPropKeys","Object","keys","reduce","key","includes","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Date/Date.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport { DatePicker } from '../../../../components'\nimport { useFieldProps } from '../../hooks'\nimport type {\n FieldProps,\n AllJSONSchemaVersions,\n ValidatorDisableable,\n} from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport classnames from 'classnames'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport SharedContext from '../../../../shared/Context'\nimport { parseISO, isValid, isBefore, isAfter } from 'date-fns'\nimport useTranslation from '../../hooks/useTranslation'\nimport { FormatDateOptions, formatDate } from '../../Value/Date'\nimport {\n DatePickerEvent,\n DatePickerProps,\n} from '../../../../components/DatePicker'\nimport { convertStringToDate } from '../../../../components/date-picker/DatePickerCalc'\nimport { ProviderProps } from '../../../../shared/Provider'\nimport { FormError } from '../../utils'\n\n// `range`, `showInput`, `showCancelButton` and `showResetButton` are not picked from the `DatePickerProps`\n// Since they require `Field.Date` specific comments, due to them having different default values\nexport type DateProps = Omit<\n FieldProps<string, undefined | string>,\n 'onBlurValidator'\n> & {\n // Validation\n pattern?: string\n /**\n * Defines if the Date field should support a value of two dates (starting and ending date).\n * The value needs to be a string containing two dates, separated by a pipe character (`|`) i.e. (`01-09-2024|30-09-2024`) when this is set to `true`.\n * Defaults to `false`.\n */\n range?: DatePickerProps['range']\n /**\n * If the input fields with the mask should be visible. Defaults to `true`.\n */\n showInput?: DatePickerProps['showInput']\n\n /**\n * If set to `true`, a cancel button will be shown. You can change the default text by using `cancel_button_text=\"Avbryt\"` Defaults to `true`. If the `range` prop is `true`, then the cancel button is shown.\n */\n showCancelButton?: DatePickerProps['showCancelButton']\n /**\n * If set to `true`, a reset button will be shown. You can change the default text by using `reset_button_text=\"Tilbakestill\"` Defaults to `true`.\n */\n showResetButton?: DatePickerProps['showResetButton']\n onBlurValidator?: ValidatorDisableable<string>\n} & Pick<\n DatePickerProps,\n | 'month'\n | 'startMonth'\n | 'endMonth'\n | 'minDate'\n | 'maxDate'\n | 'correctInvalidDate'\n | 'maskOrder'\n | 'maskPlaceholder'\n | 'dateFormat'\n | 'returnFormat'\n | 'hideNavigation'\n | 'hideDays'\n | 'onlyMonth'\n | 'hideLastWeek'\n | 'disableAutofocus'\n | 'showSubmitButton'\n | 'submitButtonText'\n | 'cancelButtonText'\n | 'resetButtonText'\n | 'firstDay'\n | 'link'\n | 'size'\n | 'sync'\n | 'addonElement'\n | 'shortcuts'\n | 'opened'\n | 'direction'\n | 'alignPicker'\n | 'onDaysRender'\n | 'onType'\n | 'onShow'\n | 'onHide'\n | 'onSubmit'\n | 'onCancel'\n | 'onReset'\n | 'skipPortal'\n >\n\nfunction DateComponent(props: DateProps) {\n const { errorRequired, label: defaultLabel } = useTranslation().Date\n const { locale } = useContext(SharedContext)\n\n const errorMessages = useMemo(() => {\n return {\n 'Field.errorRequired': errorRequired,\n 'Field.errorPattern': errorRequired,\n ...props.errorMessages,\n }\n }, [props.errorMessages, errorRequired])\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n pattern: props.pattern,\n },\n [props.schema, props.pattern]\n )\n\n const validateRequired = useCallback(\n (value: string, { required, error }) => {\n if (required && (!value || !isValid(parseISO(value)))) {\n return error\n }\n\n return undefined\n },\n []\n )\n\n const dateLimitValidator = useCallback(\n (value: string) => {\n const res = validateDateLimit({\n value,\n locale,\n minDate: props.minDate,\n maxDate: props.maxDate,\n isRange: props.range,\n })\n\n return res\n },\n [props.maxDate, props.minDate, props.range, locale]\n )\n\n const onBlurValidator = useMemo(() => {\n if (props.onBlurValidator === false) {\n return undefined\n }\n\n if (props.onBlurValidator) {\n return props.onBlurValidator\n }\n\n return dateLimitValidator\n }, [props.onBlurValidator, dateLimitValidator])\n\n const hasDateLimitAndValue = useMemo(() => {\n return (props.minDate || props.maxDate) && Boolean(props.value)\n }, [props.minDate, props.maxDate, props.value])\n\n const preparedProps = {\n ...props,\n errorMessages,\n schema,\n fromInput: ({\n date,\n start_date,\n end_date,\n }: DatePickerEvent<React.ChangeEvent<HTMLInputElement>>) => {\n return range ? `${start_date}|${end_date}` : date\n },\n validateRequired,\n validateInitially: props.validateInitially ?? hasDateLimitAndValue,\n onBlurValidator,\n exportValidators: { dateLimitValidator },\n }\n\n const {\n id,\n path,\n itemPath,\n className,\n label,\n value: valueProp,\n hasError,\n disabled,\n htmlAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n setDisplayValue,\n range,\n showCancelButton = true,\n showResetButton = true,\n showInput = true,\n onReset,\n minDate,\n maxDate,\n ...rest\n } = useFieldProps(preparedProps)\n\n const datePickerProps = pickDatePickerProps(rest)\n\n const { value, startDate, endDate } = useMemo(() => {\n if (!range || !valueProp) {\n return {\n // Assign to null if falsy value, to properly clear input values\n value: valueProp ?? null,\n startDate: undefined,\n endDate: undefined,\n }\n }\n\n const [startDate, endDate] = parseRangeValue(valueProp)\n\n return {\n value: undefined,\n startDate,\n endDate,\n }\n }, [range, valueProp])\n\n useMemo(() => {\n if ((path || itemPath) && valueProp) {\n setDisplayValue(formatDate(valueProp, { locale }), undefined)\n }\n }, [itemPath, locale, path, setDisplayValue, valueProp])\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n label: label ?? defaultLabel,\n className: classnames('dnb-forms-field-string', className),\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <DatePicker\n id={id}\n date={value}\n disabled={disabled}\n showInput={showInput}\n showCancelButton={showCancelButton}\n showResetButton={showResetButton}\n startDate={startDate}\n endDate={endDate}\n minDate={minDate}\n maxDate={maxDate}\n status={hasError ? 'error' : undefined}\n range={range}\n onChange={handleChange}\n onReset={(event) => {\n handleChange(event)\n onReset?.(event)\n }}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...datePickerProps}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n}\n\nfunction parseRangeValue(value: DateProps['value']) {\n return (\n value\n .split('|')\n // Assign to null if falsy value, to properly clear input values\n .map((value) => (/(undefined|null)/.test(value) ? null : value))\n )\n}\n\nfunction validateDateLimit({\n value,\n isRange,\n locale,\n ...dates\n}: {\n value: DateProps['value']\n minDate: DateProps['minDate']\n maxDate: DateProps['maxDate']\n isRange: DateProps['range']\n locale: ProviderProps['locale']\n}) {\n if ((!dates.minDate && !dates.maxDate) || !value) {\n return\n }\n\n const [startDateParsed, endDateParsed] = parseRangeValue(value)\n\n const minDate = convertStringToDate(dates.minDate)\n const maxDate = convertStringToDate(dates.maxDate)\n\n const startDate = convertStringToDate(startDateParsed)\n const endDate = convertStringToDate(endDateParsed)\n\n const isoDates = {\n minDate:\n dates.minDate instanceof Date\n ? dates.minDate.toISOString()\n : dates.minDate,\n maxDate:\n dates.maxDate instanceof Date\n ? dates.maxDate.toISOString()\n : dates.maxDate,\n }\n\n const options: FormatDateOptions = {\n locale,\n variant: 'long',\n }\n\n // Handle non range validation\n if (!isRange) {\n if (isBefore(startDate, minDate)) {\n return new FormError('Date.errorMinDate', {\n messageValues: { date: formatDate(isoDates.minDate, options) },\n })\n }\n\n if (isAfter(startDate, maxDate)) {\n return new FormError('Date.errorMaxDate', {\n messageValues: { date: formatDate(isoDates.maxDate, options) },\n })\n }\n\n return\n }\n\n const messages: Array<FormError> = []\n\n // Start date validation\n if (isBefore(startDate, minDate)) {\n messages.push(\n new FormError('Date.errorStartDateMinDate', {\n messageValues: { date: formatDate(isoDates.minDate, options) },\n })\n )\n }\n\n if (isAfter(startDate, maxDate)) {\n messages.push(\n new FormError('Date.errorStartDateMaxDate', {\n messageValues: { date: formatDate(isoDates.maxDate, options) },\n })\n )\n }\n\n // End date validation\n if (isBefore(endDate, minDate)) {\n messages.push(\n new FormError('Date.errorEndDateMinDate', {\n messageValues: { date: formatDate(isoDates.minDate, options) },\n })\n )\n }\n\n if (isAfter(endDate, maxDate)) {\n messages.push(\n new FormError('Date.errorEndDateMaxDate', {\n messageValues: { date: formatDate(isoDates.maxDate, options) },\n })\n )\n }\n\n return messages\n}\n\n// Used to filter out DatePickerProps from the FieldProps.\n// Includes DatePickerProps that are not destructured in useFieldProps\nconst datePickerPropKeys = [\n 'month',\n 'startMonth',\n 'endMonth',\n 'minDate',\n 'maxDate',\n 'correctInvalidDate',\n 'maskOrder',\n 'maskPlaceholder',\n 'dateFormat',\n 'returnFormat',\n 'hideNavigation',\n 'hideDays',\n 'onlyMonth',\n 'hideLastWeek',\n 'disableAutofocus',\n 'showSubmitButton',\n 'submitButtonText',\n 'cancelButtonText',\n 'resetButtonText',\n 'firstDay',\n 'link',\n 'size',\n 'sync',\n 'addonElement',\n 'shortcuts',\n 'opened',\n 'direction',\n 'alignPicker',\n 'onDaysRender',\n 'showInput',\n 'onDaysRender',\n 'onType',\n 'onShow',\n 'onHide',\n 'onSubmit',\n 'onCancel',\n 'onReset',\n 'skipPortal',\n]\n\nfunction pickDatePickerProps(props: DateProps) {\n const datePickerProps = Object.keys(props).reduce(\n (datePickerProps, key) => {\n if (datePickerPropKeys.includes(key)) {\n datePickerProps[key] = props[key]\n }\n\n return datePickerProps\n },\n {}\n )\n\n return datePickerProps\n}\n\nDateComponent._supportsSpacingProps = true\nexport default DateComponent\n"],"mappings":"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"}
@@ -11,10 +11,17 @@ import Slider from '../../../../components/Slider';
11
11
  import { pickSpacingProps } from '../../../../components/flex/utils';
12
12
  import DataContext from '../../DataContext/Context';
13
13
  import useDataValue from '../../hooks/useDataValue';
14
+ import { useTranslation as useSharedTranslation } from '../../../../shared';
14
15
  function SliderComponent(props) {
15
16
  var _ref, _ref2, _props$paths;
16
17
  const dataContextRef = useRef();
17
18
  dataContextRef.current = useContext(DataContext);
19
+ const {
20
+ Slider: {
21
+ addTitle: addTitleLabel,
22
+ subtractTitle: subtractTitleLabel
23
+ }
24
+ } = useSharedTranslation();
18
25
  const {
19
26
  getSourceValue
20
27
  } = useDataValue();
@@ -43,10 +50,10 @@ function SliderComponent(props) {
43
50
  vertical,
44
51
  reverse,
45
52
  hideButtons,
46
- multiThumbBehavior,
53
+ multiThumbBehavior = 'swap',
47
54
  thumbTitle,
48
- subtractTitle,
49
- addTitle,
55
+ subtractTitle = subtractTitleLabel,
56
+ addTitle = addTitleLabel,
50
57
  numberFormat,
51
58
  tooltip,
52
59
  alwaysShowTooltip,
@@ -77,10 +84,12 @@ function SliderComponent(props) {
77
84
  handleChange === null || handleChange === void 0 ? void 0 : handleChange(value);
78
85
  }, [handleChange, props.paths]);
79
86
  const fieldBlockProps = _objectSpread({
80
- forId: id,
87
+ id: id,
88
+ forId: `${id}-slider-thumb-0`,
81
89
  width
82
90
  }, pickSpacingProps(props));
83
91
  const sliderProps = {
92
+ id: `${id}-slider`,
84
93
  value,
85
94
  step,
86
95
  min,
@@ -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","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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"}
1
+ {"version":3,"file":"Slider.js","names":["React","useCallback","useContext","useMemo","useRef","FieldBlock","useFieldProps","getFormattedNumber","Slider","pickSpacingProps","DataContext","useDataValue","useTranslation","useSharedTranslation","SliderComponent","props","_ref","_ref2","_props$paths","dataContextRef","current","addTitle","addTitleLabel","subtractTitle","subtractTitleLabel","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","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'\nimport { useTranslation as useSharedTranslation } from '../../../../shared'\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 const {\n Slider: { addTitle: addTitleLabel, subtractTitle: subtractTitleLabel },\n } = useSharedTranslation()\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 = 'swap',\n thumbTitle,\n subtractTitle = subtractTitleLabel,\n addTitle = addTitleLabel,\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 id: id,\n forId: `${id}-slider-thumb-0`,\n width,\n ...pickSpacingProps(props),\n }\n\n const sliderProps: SliderProps = {\n id: `${id}-slider`,\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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"}
@@ -158,7 +158,8 @@ function UploadComponent(props) {
158
158
  })) : labelDescription !== null && labelDescription !== void 0 ? labelDescription : text
159
159
  }, htmlAttributes), help && React.createElement(HelpButtonInlineContent, {
160
160
  contentId: `${id}-help`,
161
- help: help
161
+ help: help,
162
+ roundedCorner: false
162
163
  })));
163
164
  }
164
165
  export default UploadComponent;
@@ -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","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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"}
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","roundedCorner","_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\n contentId={`${id}-help`}\n help={help}\n roundedCorner={false}\n />\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,4 +1,9 @@
1
1
  .dnb-forms-field-upload .dnb-help-button__content .dnb-section {
2
+ --outset-left: calc(var(--spacing-medium));
3
+ --outset-right: calc(var(--spacing-medium));
2
4
  margin-left: var(--upload-border-width);
3
5
  margin-right: var(--upload-border-width);
6
+ }
7
+ .dnb-forms-field-upload .dnb-help-button__content .dnb-section::before {
8
+ z-index: 0;
4
9
  }
@@ -1 +1 @@
1
- .dnb-forms-field-upload .dnb-help-button__content .dnb-section{margin-left:var(--upload-border-width);margin-right:var(--upload-border-width)}
1
+ .dnb-forms-field-upload .dnb-help-button__content .dnb-section{--outset-left:calc(var(--spacing-medium));--outset-right:calc(var(--spacing-medium));margin-left:var(--upload-border-width);margin-right:var(--upload-border-width)}.dnb-forms-field-upload .dnb-help-button__content .dnb-section:before{z-index:0}
@@ -1,8 +1,14 @@
1
1
  .dnb-forms-field-upload {
2
2
  .dnb-help-button__content {
3
3
  .dnb-section {
4
+ --outset-left: calc(var(--spacing-medium));
5
+ --outset-right: calc(var(--spacing-medium));
6
+
4
7
  margin-left: var(--upload-border-width);
5
8
  margin-right: var(--upload-border-width);
9
+ &::before {
10
+ z-index: 0;
11
+ }
6
12
  }
7
13
  }
8
14
  }
@@ -44,7 +44,7 @@ function FieldBlock(props) {
44
44
  required,
45
45
  info,
46
46
  warning,
47
- error: errorProp,
47
+ error,
48
48
  disableStatusSummary,
49
49
  fieldState,
50
50
  disabled,
@@ -59,6 +59,9 @@ 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 infoRef = useRef();
63
+ const warningRef = useRef();
64
+ const errorRef = useRef();
62
65
  const blockId = useId(props.id);
63
66
  const [salt, forceUpdate] = useReducer(() => ({}), {});
64
67
  const mountedFieldsRef = useRef({});
@@ -66,9 +69,7 @@ function FieldBlock(props) {
66
69
  const stateRecordRef = useRef({});
67
70
  const fieldStateIdsRef = useRef(null);
68
71
  const contentsRef = useRef(null);
69
- const hasInitiallyErrorProp = useMemo(() => {
70
- return Boolean(errorProp);
71
- }, []);
72
+ const hasInitiallyErrorPropRef = useRef(Boolean(error));
72
73
  const label = useIterateItemNo({
73
74
  label: labelProp,
74
75
  labelSuffix,
@@ -130,15 +131,17 @@ function FieldBlock(props) {
130
131
  }
131
132
  }, [nestedFieldBlockContext]);
132
133
  const statusContent = useMemo(() => {
133
- if (typeof errorProp !== 'undefined') {
134
+ if (typeof error !== 'undefined' || errorRef.current && !error) {
135
+ errorRef.current = error;
134
136
  setInternalRecord({
135
137
  identifier: blockId,
136
- showInitially: hasInitiallyErrorProp,
138
+ showInitially: hasInitiallyErrorPropRef.current,
137
139
  type: 'error',
138
- content: errorProp
140
+ content: error
139
141
  });
140
142
  }
141
- if (typeof warning !== 'undefined') {
143
+ if (typeof warning !== 'undefined' || warningRef.current !== warning) {
144
+ warningRef.current = warning;
142
145
  setInternalRecord({
143
146
  identifier: blockId,
144
147
  showInitially: true,
@@ -146,7 +149,8 @@ function FieldBlock(props) {
146
149
  content: warning
147
150
  });
148
151
  }
149
- if (typeof info !== 'undefined') {
152
+ if (typeof info !== 'undefined' || infoRef.current !== info) {
153
+ infoRef.current = info;
150
154
  setInternalRecord({
151
155
  identifier: blockId,
152
156
  showInitially: true,
@@ -222,12 +226,12 @@ function FieldBlock(props) {
222
226
  }
223
227
  return acc;
224
228
  }, salt);
225
- }, [errorProp, warning, info, salt, setInternalRecord, blockId, hasInitiallyErrorProp, props.id, forId, label]);
229
+ }, [error, warning, info, salt, setInternalRecord, blockId, props.id, forId, label]);
226
230
  useEffect(() => {
227
231
  if (!nestedFieldBlockContext) {
228
- showFieldError(blockId, Boolean(errorProp));
232
+ showFieldError(blockId, Boolean(error));
229
233
  }
230
- }, [errorProp, blockId, showFieldError, nestedFieldBlockContext]);
234
+ }, [error, blockId, showFieldError, nestedFieldBlockContext]);
231
235
  useEffect(() => () => {
232
236
  mountedFieldsRef.current = {};
233
237
  stateRecordRef.current = {};
@@ -280,7 +284,7 @@ function FieldBlock(props) {
280
284
  setBlockRecord,
281
285
  setFieldState,
282
286
  showFieldError,
283
- hasErrorProp: Boolean(errorProp),
287
+ hasErrorProp: Boolean(error),
284
288
  fieldStateIdsRef,
285
289
  mountedFieldsRef,
286
290
  composition,