@dnb/eufemia 10.54.1 → 10.55.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 (1106) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/cjs/components/ListFormat.d.ts +12 -0
  3. package/cjs/components/ListFormat.js +24 -0
  4. package/cjs/components/ListFormat.js.map +1 -0
  5. package/cjs/components/anchor/Anchor.js +1 -1
  6. package/cjs/components/anchor/Anchor.js.map +1 -1
  7. package/cjs/components/autocomplete/Autocomplete.js +3 -3
  8. package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
  9. package/cjs/components/card/Card.js +14 -5
  10. package/cjs/components/card/Card.js.map +1 -1
  11. package/cjs/components/card/CardContext.d.ts +6 -0
  12. package/cjs/components/card/CardContext.js +12 -0
  13. package/cjs/components/card/CardContext.js.map +1 -0
  14. package/cjs/components/card/CardDocs.js +2 -2
  15. package/cjs/components/card/CardDocs.js.map +1 -1
  16. package/cjs/components/card/style/dnb-card.css +3 -0
  17. package/cjs/components/card/style/dnb-card.min.css +1 -1
  18. package/cjs/components/card/style/dnb-card.scss +5 -0
  19. package/cjs/components/card/style/themes/dnb-card-theme-sbanken.css +3 -0
  20. package/cjs/components/card/style/themes/dnb-card-theme-sbanken.min.css +1 -1
  21. package/cjs/components/card/style/themes/dnb-card-theme-sbanken.scss +5 -0
  22. package/cjs/components/card/style/themes/dnb-card-theme-ui.css +5 -0
  23. package/cjs/components/card/style/themes/dnb-card-theme-ui.min.css +1 -1
  24. package/cjs/components/card/style/themes/dnb-card-theme-ui.scss +7 -0
  25. package/cjs/components/country-flag/CountryFlagDocs.js +5 -0
  26. package/cjs/components/country-flag/CountryFlagDocs.js.map +1 -1
  27. package/cjs/components/date-picker/DatePicker.d.ts +261 -291
  28. package/cjs/components/date-picker/DatePicker.js +346 -482
  29. package/cjs/components/date-picker/DatePicker.js.map +1 -1
  30. package/cjs/components/date-picker/DatePickerAddon.d.ts +21 -20
  31. package/cjs/components/date-picker/DatePickerAddon.js +66 -84
  32. package/cjs/components/date-picker/DatePickerAddon.js.map +1 -1
  33. package/cjs/components/date-picker/DatePickerCalc.d.ts +19 -21
  34. package/cjs/components/date-picker/DatePickerCalc.js +44 -44
  35. package/cjs/components/date-picker/DatePickerCalc.js.map +1 -1
  36. package/cjs/components/date-picker/DatePickerCalendar.d.ts +73 -39
  37. package/cjs/components/date-picker/DatePickerCalendar.js +391 -535
  38. package/cjs/components/date-picker/DatePickerCalendar.js.map +1 -1
  39. package/cjs/components/date-picker/DatePickerContext.d.ts +26 -2
  40. package/cjs/components/date-picker/DatePickerContext.js.map +1 -1
  41. package/cjs/components/date-picker/DatePickerFooter.d.ts +20 -18
  42. package/cjs/components/date-picker/DatePickerFooter.js +92 -117
  43. package/cjs/components/date-picker/DatePickerFooter.js.map +1 -1
  44. package/cjs/components/date-picker/DatePickerInput.d.ts +56 -64
  45. package/cjs/components/date-picker/DatePickerInput.js +515 -533
  46. package/cjs/components/date-picker/DatePickerInput.js.map +1 -1
  47. package/cjs/components/date-picker/DatePickerOld.d.ts +334 -0
  48. package/cjs/components/date-picker/DatePickerOld.js +538 -0
  49. package/cjs/components/date-picker/DatePickerOld.js.map +1 -0
  50. package/cjs/components/date-picker/DatePickerProvider.d.ts +40 -17
  51. package/cjs/components/date-picker/DatePickerProvider.js +125 -236
  52. package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
  53. package/cjs/components/date-picker/DatePickerRange.d.ts +22 -20
  54. package/cjs/components/date-picker/DatePickerRange.js +61 -144
  55. package/cjs/components/date-picker/DatePickerRange.js.map +1 -1
  56. package/cjs/components/date-picker/hooks/useDates.d.ts +45 -0
  57. package/cjs/components/date-picker/hooks/useDates.js +182 -0
  58. package/cjs/components/date-picker/hooks/useDates.js.map +1 -0
  59. package/cjs/components/date-picker/hooks/useLastEventCallCache.d.ts +9 -0
  60. package/cjs/components/date-picker/hooks/useLastEventCallCache.js +16 -0
  61. package/cjs/components/date-picker/hooks/useLastEventCallCache.js.map +1 -0
  62. package/cjs/components/date-picker/hooks/useViews.d.ts +20 -0
  63. package/cjs/components/date-picker/hooks/useViews.js +84 -0
  64. package/cjs/components/date-picker/hooks/useViews.js.map +1 -0
  65. package/cjs/components/date-picker/style/dnb-date-picker.css +12 -1
  66. package/cjs/components/date-picker/style/dnb-date-picker.min.css +1 -1
  67. package/cjs/components/dropdown/Dropdown.js +3 -3
  68. package/cjs/components/dropdown/Dropdown.js.map +1 -1
  69. package/cjs/components/flex/StackDocs.d.ts +2 -0
  70. package/cjs/components/flex/StackDocs.js +30 -0
  71. package/cjs/components/flex/StackDocs.js.map +1 -0
  72. package/cjs/components/form-row/FormRow.js +3 -3
  73. package/cjs/components/form-row/FormRow.js.map +1 -1
  74. package/cjs/components/form-row/style/dnb-form-row.css +12 -1
  75. package/cjs/components/form-row/style/dnb-form-row.min.css +1 -1
  76. package/cjs/components/form-status/FormStatus.d.ts +4 -1
  77. package/cjs/components/icon/style/dnb-icon.scss +1 -1
  78. package/cjs/components/index.d.ts +2 -1
  79. package/cjs/components/index.js +7 -0
  80. package/cjs/components/index.js.map +1 -1
  81. package/cjs/components/input-masked/TextMask.d.ts +2 -1
  82. package/cjs/components/input-masked/style/dnb-input-masked.css +12 -1
  83. package/cjs/components/input-masked/style/dnb-input-masked.min.css +1 -1
  84. package/cjs/components/lib.d.ts +3 -1
  85. package/cjs/components/lib.js +8 -0
  86. package/cjs/components/lib.js.map +1 -1
  87. package/cjs/components/list-format/ListFormat.d.ts +40 -0
  88. package/cjs/components/list-format/ListFormat.js +122 -0
  89. package/cjs/components/list-format/ListFormat.js.map +1 -0
  90. package/cjs/components/list-format/ListFormatDocs.d.ts +2 -0
  91. package/cjs/components/list-format/ListFormatDocs.js +35 -0
  92. package/cjs/components/list-format/ListFormatDocs.js.map +1 -0
  93. package/cjs/components/list-format/index.d.ts +7 -0
  94. package/cjs/components/list-format/index.js +24 -0
  95. package/cjs/components/list-format/index.js.map +1 -0
  96. package/cjs/components/number-format/NumberUtils.js +1 -1
  97. package/cjs/components/number-format/NumberUtils.js.map +1 -1
  98. package/cjs/components/radio/style/dnb-radio.css +12 -1
  99. package/cjs/components/radio/style/dnb-radio.min.css +1 -1
  100. package/cjs/components/step-indicator/StepIndicatorTriggerButton.js +1 -1
  101. package/cjs/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
  102. package/cjs/components/textarea/Textarea.js +3 -3
  103. package/cjs/components/textarea/Textarea.js.map +1 -1
  104. package/cjs/components/toggle-button/ToggleButton.js +3 -3
  105. package/cjs/components/toggle-button/ToggleButton.js.map +1 -1
  106. package/cjs/components/toggle-button/style/dnb-toggle-button.css +12 -1
  107. package/cjs/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  108. package/cjs/components/upload/Upload.js +2 -1
  109. package/cjs/components/upload/Upload.js.map +1 -1
  110. package/cjs/components/upload/UploadContext.d.ts +1 -0
  111. package/cjs/components/upload/UploadContext.js +2 -1
  112. package/cjs/components/upload/UploadContext.js.map +1 -1
  113. package/cjs/components/upload/UploadDocs.js +5 -0
  114. package/cjs/components/upload/UploadDocs.js.map +1 -1
  115. package/cjs/components/upload/UploadDropzone.js.map +1 -1
  116. package/cjs/components/upload/UploadFileList.js +3 -1
  117. package/cjs/components/upload/UploadFileList.js.map +1 -1
  118. package/cjs/components/upload/UploadFileListCell.d.ts +22 -3
  119. package/cjs/components/upload/UploadFileListCell.js +17 -8
  120. package/cjs/components/upload/UploadFileListCell.js.map +1 -1
  121. package/cjs/components/upload/UploadVerify.d.ts +2 -2
  122. package/cjs/components/upload/UploadVerify.js.map +1 -1
  123. package/cjs/components/upload/types.d.ts +11 -5
  124. package/cjs/components/upload/types.js.map +1 -1
  125. package/cjs/components/upload/useUpload.d.ts +6 -6
  126. package/cjs/components/upload/useUpload.js.map +1 -1
  127. package/cjs/elements/lists/style/lists-mixins.scss +1 -0
  128. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +1 -1
  129. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  130. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +11 -14
  131. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  132. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +3 -4
  133. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  134. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +4 -4
  135. package/cjs/extensions/forms/Field/Boolean/Boolean.d.ts +3 -2
  136. package/cjs/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
  137. package/cjs/extensions/forms/Field/Composition/CompositionDocs.js +1 -1
  138. package/cjs/extensions/forms/Field/Composition/CompositionDocs.js.map +1 -1
  139. package/cjs/extensions/forms/Field/Date/Date.js +4 -12
  140. package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
  141. package/cjs/extensions/forms/Field/Expiry/Expiry.js +6 -14
  142. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  143. package/cjs/extensions/forms/Field/FieldDocs.d.ts +2 -2
  144. package/cjs/extensions/forms/Field/FieldDocs.js +10 -10
  145. package/cjs/extensions/forms/Field/FieldDocs.js.map +1 -1
  146. package/cjs/extensions/forms/Field/Number/Number.d.ts +2 -1
  147. package/cjs/extensions/forms/Field/Number/Number.js +7 -19
  148. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  149. package/cjs/extensions/forms/Field/Number/style/dnb-number.css +0 -3
  150. package/cjs/extensions/forms/Field/Number/style/dnb-number.min.css +1 -1
  151. package/cjs/extensions/forms/Field/Number/style/dnb-number.scss +0 -2
  152. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +2 -2
  153. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +9 -10
  154. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  155. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.d.ts +1 -1
  156. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js +3 -3
  157. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js.map +1 -1
  158. package/cjs/extensions/forms/Field/Provider/FieldProviderDocs.js +6 -3
  159. package/cjs/extensions/forms/Field/Provider/FieldProviderDocs.js.map +1 -1
  160. package/cjs/extensions/forms/Field/Provider/useFieldProvider.d.ts +10 -3
  161. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -1
  162. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +14 -12
  163. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  164. package/cjs/extensions/forms/Field/Selection/Selection.d.ts +2 -1
  165. package/cjs/extensions/forms/Field/Selection/Selection.js +5 -13
  166. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  167. package/cjs/extensions/forms/Field/Slider/Slider.d.ts +2 -1
  168. package/cjs/extensions/forms/Field/Slider/Slider.js +0 -13
  169. package/cjs/extensions/forms/Field/Slider/Slider.js.map +1 -1
  170. package/cjs/extensions/forms/Field/String/String.d.ts +2 -1
  171. package/cjs/extensions/forms/Field/String/String.js +7 -20
  172. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  173. package/cjs/extensions/forms/Field/Toggle/Toggle.d.ts +1 -1
  174. package/cjs/extensions/forms/Field/Toggle/Toggle.js +6 -18
  175. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  176. package/cjs/extensions/forms/Field/Upload/Upload.d.ts +4 -3
  177. package/cjs/extensions/forms/Field/Upload/Upload.js +2 -12
  178. package/cjs/extensions/forms/Field/Upload/Upload.js.map +1 -1
  179. package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +45 -6
  180. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +39 -20
  181. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  182. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.d.ts +1 -0
  183. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  184. package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.d.ts +3 -2
  185. package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.js +20 -5
  186. package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -1
  187. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +34 -11
  188. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  189. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.scss +56 -13
  190. package/cjs/extensions/forms/FieldBlock/style/themes/dnb-field-block-theme-sbanken.css +7 -0
  191. package/cjs/extensions/forms/FieldBlock/style/themes/dnb-field-block-theme-sbanken.min.css +1 -0
  192. package/cjs/extensions/forms/FieldBlock/style/themes/dnb-field-block-theme-sbanken.scss +10 -0
  193. package/cjs/extensions/forms/Form/Section/EditContainer/CancelButton.d.ts +1 -0
  194. package/cjs/extensions/forms/Form/Section/EditContainer/{EditToolbarTools.js → CancelButton.js} +15 -41
  195. package/cjs/extensions/forms/Form/Section/EditContainer/CancelButton.js.map +1 -0
  196. package/cjs/extensions/forms/Form/Section/EditContainer/DoneButton.d.ts +1 -0
  197. package/cjs/extensions/forms/Form/Section/EditContainer/DoneButton.js +52 -0
  198. package/cjs/extensions/forms/Form/Section/EditContainer/DoneButton.js.map +1 -0
  199. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainer.d.ts +2 -0
  200. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainer.js +11 -4
  201. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainer.js.map +1 -1
  202. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js +1 -1
  203. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js.map +1 -1
  204. package/cjs/extensions/forms/Form/Section/Section.d.ts +4 -2
  205. package/cjs/extensions/forms/Form/Section/Section.js +2 -0
  206. package/cjs/extensions/forms/Form/Section/Section.js.map +1 -1
  207. package/cjs/extensions/forms/Form/Section/Toolbar/Toolbar.d.ts +7 -0
  208. package/cjs/extensions/forms/Form/Section/Toolbar/Toolbar.js +68 -0
  209. package/cjs/extensions/forms/Form/Section/Toolbar/Toolbar.js.map +1 -0
  210. package/cjs/extensions/forms/Form/Section/Toolbar/ToolbarContext.d.ts +9 -0
  211. package/cjs/extensions/forms/Form/Section/Toolbar/ToolbarContext.js +12 -0
  212. package/cjs/extensions/forms/Form/Section/Toolbar/ToolbarContext.js.map +1 -0
  213. package/cjs/extensions/forms/Form/Section/Toolbar/ToolbarDocs.d.ts +3 -0
  214. package/cjs/extensions/forms/Form/Section/Toolbar/ToolbarDocs.js +11 -0
  215. package/cjs/extensions/forms/Form/Section/Toolbar/ToolbarDocs.js.map +1 -0
  216. package/cjs/extensions/forms/Form/Section/Toolbar/index.d.ts +2 -0
  217. package/cjs/extensions/forms/Form/Section/Toolbar/index.js +27 -0
  218. package/cjs/extensions/forms/Form/Section/Toolbar/index.js.map +1 -0
  219. package/cjs/extensions/forms/Form/Section/ViewContainer/EditButton.d.ts +1 -0
  220. package/cjs/extensions/forms/Form/Section/ViewContainer/{ViewToolbarTools.js → EditButton.js} +12 -13
  221. package/cjs/extensions/forms/Form/Section/ViewContainer/EditButton.js.map +1 -0
  222. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewContainer.d.ts +1 -0
  223. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewContainer.js +9 -4
  224. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewContainer.js.map +1 -1
  225. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js +1 -1
  226. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js.map +1 -1
  227. package/cjs/extensions/forms/Form/Section/containers/SectionContainer.js +3 -2
  228. package/cjs/extensions/forms/Form/Section/containers/SectionContainer.js.map +1 -1
  229. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.css +6 -13
  230. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -1
  231. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.scss +11 -24
  232. package/cjs/extensions/forms/Iterate/Array/ArrayDocs.js +5 -5
  233. package/cjs/extensions/forms/Iterate/Array/ArrayDocs.js.map +1 -1
  234. package/cjs/extensions/forms/Iterate/Array/ArrayItemArea.js +3 -2
  235. package/cjs/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -1
  236. package/cjs/extensions/forms/Iterate/EditContainer/CancelButton.d.ts +1 -1
  237. package/cjs/extensions/forms/Iterate/EditContainer/CancelButton.js +2 -2
  238. package/cjs/extensions/forms/Iterate/EditContainer/CancelButton.js.map +1 -1
  239. package/cjs/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +1 -1
  240. package/cjs/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
  241. package/cjs/extensions/forms/Iterate/ViewContainer/EditButton.d.ts +1 -1
  242. package/cjs/extensions/forms/Iterate/ViewContainer/EditButton.js +2 -2
  243. package/cjs/extensions/forms/Iterate/ViewContainer/EditButton.js.map +1 -1
  244. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +1 -1
  245. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
  246. package/cjs/extensions/forms/Value/ArraySelection/ArraySelection.d.ts +2 -25
  247. package/cjs/extensions/forms/Value/ArraySelection/ArraySelection.js +16 -49
  248. package/cjs/extensions/forms/Value/ArraySelection/ArraySelection.js.map +1 -1
  249. package/cjs/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js +7 -17
  250. package/cjs/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js.map +1 -1
  251. package/cjs/extensions/forms/Value/Composition/CompositionDocs.js +3 -1
  252. package/cjs/extensions/forms/Value/Composition/CompositionDocs.js.map +1 -1
  253. package/cjs/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -1
  254. package/cjs/extensions/forms/Value/SummaryList/SummaryListDocs.js +5 -5
  255. package/cjs/extensions/forms/Value/SummaryList/SummaryListDocs.js.map +1 -1
  256. package/cjs/extensions/forms/Value/Upload/Upload.d.ts +11 -0
  257. package/cjs/extensions/forms/Value/Upload/Upload.js +99 -0
  258. package/cjs/extensions/forms/Value/Upload/Upload.js.map +1 -0
  259. package/cjs/extensions/forms/Value/Upload/UploadDocs.d.ts +2 -0
  260. package/cjs/extensions/forms/Value/Upload/UploadDocs.js +26 -0
  261. package/cjs/extensions/forms/Value/Upload/UploadDocs.js.map +1 -0
  262. package/cjs/extensions/forms/Value/Upload/index.d.ts +2 -0
  263. package/cjs/extensions/forms/Value/Upload/index.js +27 -0
  264. package/cjs/extensions/forms/Value/Upload/index.js.map +1 -0
  265. package/cjs/extensions/forms/Value/index.d.ts +1 -0
  266. package/cjs/extensions/forms/Value/index.js +7 -0
  267. package/cjs/extensions/forms/Value/index.js.map +1 -1
  268. package/cjs/extensions/forms/ValueBlock/ValueBlock.js +8 -3
  269. package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  270. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.css +0 -7
  271. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  272. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.scss +0 -10
  273. package/cjs/extensions/forms/Wizard/Step/StepDocs.js +1 -1
  274. package/cjs/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  275. package/cjs/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js +2 -0
  276. package/cjs/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js.map +1 -1
  277. package/cjs/extensions/forms/hooks/DataValueWritePropsDocs.d.ts +3 -0
  278. package/cjs/extensions/forms/hooks/{DataValueDocs.js → DataValueWritePropsDocs.js} +6 -6
  279. package/cjs/extensions/forms/hooks/DataValueWritePropsDocs.js.map +1 -0
  280. package/cjs/extensions/forms/hooks/useDataValue.js +6 -1
  281. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  282. package/cjs/extensions/forms/hooks/useFieldProps.js +8 -3
  283. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  284. package/cjs/extensions/forms/hooks/useValueProps.js +1 -6
  285. package/cjs/extensions/forms/hooks/useValueProps.js.map +1 -1
  286. package/cjs/extensions/forms/style/dnb-forms.css +45 -38
  287. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  288. package/cjs/extensions/forms/types.d.ts +6 -28
  289. package/cjs/extensions/forms/types.js.map +1 -1
  290. package/cjs/extensions/forms/utils/TestElement/style/dnb-test-element.css +2 -0
  291. package/cjs/extensions/forms/utils/TestElement/style/dnb-test-element.min.css +1 -1
  292. package/cjs/extensions/forms/utils/TestElement/style/dnb-test-element.scss +2 -0
  293. package/cjs/index.d.ts +2 -1
  294. package/cjs/index.js +7 -0
  295. package/cjs/index.js.map +1 -1
  296. package/cjs/shared/Context.d.ts +4 -0
  297. package/cjs/shared/Context.js.map +1 -1
  298. package/cjs/shared/Eufemia.d.ts +1 -1
  299. package/cjs/shared/Eufemia.js +2 -2
  300. package/cjs/shared/Eufemia.js.map +1 -1
  301. package/cjs/shared/component-helper.d.ts +1 -1
  302. package/cjs/shared/component-helper.js.map +1 -1
  303. package/cjs/style/core/reset.scss +0 -8
  304. package/cjs/style/core/scopes.scss +1 -1
  305. package/cjs/style/core/utilities.scss +12 -16
  306. package/cjs/style/dnb-ui-basis.css +1 -7
  307. package/cjs/style/dnb-ui-basis.min.css +1 -1
  308. package/cjs/style/dnb-ui-body.css +1 -7
  309. package/cjs/style/dnb-ui-body.min.css +1 -1
  310. package/cjs/style/dnb-ui-components.css +108 -42
  311. package/cjs/style/dnb-ui-components.min.css +3 -3
  312. package/cjs/style/dnb-ui-core.css +1 -8
  313. package/cjs/style/dnb-ui-core.min.css +1 -1
  314. package/cjs/style/dnb-ui-elements.css +1 -0
  315. package/cjs/style/dnb-ui-elements.min.css +1 -1
  316. package/cjs/style/dnb-ui-extensions.css +45 -38
  317. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  318. package/cjs/style/dnb-ui-forms.css +45 -38
  319. package/cjs/style/dnb-ui-forms.min.css +1 -1
  320. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +1 -0
  321. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  322. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +158 -79
  323. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
  324. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.css +1 -0
  325. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  326. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +45 -38
  327. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  328. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +45 -38
  329. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  330. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +1 -0
  331. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  332. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +163 -82
  333. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +5 -5
  334. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -0
  335. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  336. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +50 -41
  337. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +2 -2
  338. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -1
  339. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +52 -41
  340. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +2 -2
  341. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.scss +1 -1
  342. package/cjs/style/themes/theme-ui/ui-theme-basis.css +1 -0
  343. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  344. package/cjs/style/themes/theme-ui/ui-theme-components.css +158 -79
  345. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +4 -4
  346. package/cjs/style/themes/theme-ui/ui-theme-elements.css +1 -0
  347. package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  348. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +45 -38
  349. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  350. package/cjs/style/themes/theme-ui/ui-theme-forms.css +45 -38
  351. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  352. package/cjs/style/themes/theme-ui/ui-theme-tags.css +1 -0
  353. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  354. package/components/ListFormat.d.ts +12 -0
  355. package/components/ListFormat.js +4 -0
  356. package/components/ListFormat.js.map +1 -0
  357. package/components/anchor/Anchor.js +1 -1
  358. package/components/anchor/Anchor.js.map +1 -1
  359. package/components/autocomplete/Autocomplete.js +3 -3
  360. package/components/autocomplete/Autocomplete.js.map +1 -1
  361. package/components/card/Card.js +13 -5
  362. package/components/card/Card.js.map +1 -1
  363. package/components/card/CardContext.d.ts +6 -0
  364. package/components/card/CardContext.js +4 -0
  365. package/components/card/CardContext.js.map +1 -0
  366. package/components/card/CardDocs.js +2 -2
  367. package/components/card/CardDocs.js.map +1 -1
  368. package/components/card/style/dnb-card.css +3 -0
  369. package/components/card/style/dnb-card.min.css +1 -1
  370. package/components/card/style/dnb-card.scss +5 -0
  371. package/components/card/style/themes/dnb-card-theme-sbanken.css +3 -0
  372. package/components/card/style/themes/dnb-card-theme-sbanken.min.css +1 -1
  373. package/components/card/style/themes/dnb-card-theme-sbanken.scss +5 -0
  374. package/components/card/style/themes/dnb-card-theme-ui.css +5 -0
  375. package/components/card/style/themes/dnb-card-theme-ui.min.css +1 -1
  376. package/components/card/style/themes/dnb-card-theme-ui.scss +7 -0
  377. package/components/country-flag/CountryFlagDocs.js +5 -0
  378. package/components/country-flag/CountryFlagDocs.js.map +1 -1
  379. package/components/date-picker/DatePicker.d.ts +261 -291
  380. package/components/date-picker/DatePicker.js +343 -481
  381. package/components/date-picker/DatePicker.js.map +1 -1
  382. package/components/date-picker/DatePickerAddon.d.ts +21 -20
  383. package/components/date-picker/DatePickerAddon.js +64 -81
  384. package/components/date-picker/DatePickerAddon.js.map +1 -1
  385. package/components/date-picker/DatePickerCalc.d.ts +19 -21
  386. package/components/date-picker/DatePickerCalc.js +35 -34
  387. package/components/date-picker/DatePickerCalc.js.map +1 -1
  388. package/components/date-picker/DatePickerCalendar.d.ts +73 -39
  389. package/components/date-picker/DatePickerCalendar.js +389 -534
  390. package/components/date-picker/DatePickerCalendar.js.map +1 -1
  391. package/components/date-picker/DatePickerContext.d.ts +26 -2
  392. package/components/date-picker/DatePickerContext.js.map +1 -1
  393. package/components/date-picker/DatePickerFooter.d.ts +20 -18
  394. package/components/date-picker/DatePickerFooter.js +90 -116
  395. package/components/date-picker/DatePickerFooter.js.map +1 -1
  396. package/components/date-picker/DatePickerInput.d.ts +56 -64
  397. package/components/date-picker/DatePickerInput.js +515 -532
  398. package/components/date-picker/DatePickerInput.js.map +1 -1
  399. package/components/date-picker/DatePickerOld.d.ts +334 -0
  400. package/components/date-picker/DatePickerOld.js +528 -0
  401. package/components/date-picker/DatePickerOld.js.map +1 -0
  402. package/components/date-picker/DatePickerProvider.d.ts +40 -17
  403. package/components/date-picker/DatePickerProvider.js +123 -235
  404. package/components/date-picker/DatePickerProvider.js.map +1 -1
  405. package/components/date-picker/DatePickerRange.d.ts +22 -20
  406. package/components/date-picker/DatePickerRange.js +58 -140
  407. package/components/date-picker/DatePickerRange.js.map +1 -1
  408. package/components/date-picker/hooks/useDates.d.ts +45 -0
  409. package/components/date-picker/hooks/useDates.js +173 -0
  410. package/components/date-picker/hooks/useDates.js.map +1 -0
  411. package/components/date-picker/hooks/useLastEventCallCache.d.ts +9 -0
  412. package/components/date-picker/hooks/useLastEventCallCache.js +11 -0
  413. package/components/date-picker/hooks/useLastEventCallCache.js.map +1 -0
  414. package/components/date-picker/hooks/useViews.d.ts +20 -0
  415. package/components/date-picker/hooks/useViews.js +74 -0
  416. package/components/date-picker/hooks/useViews.js.map +1 -0
  417. package/components/date-picker/style/dnb-date-picker.css +12 -1
  418. package/components/date-picker/style/dnb-date-picker.min.css +1 -1
  419. package/components/dropdown/Dropdown.js +3 -3
  420. package/components/dropdown/Dropdown.js.map +1 -1
  421. package/components/flex/StackDocs.d.ts +2 -0
  422. package/components/flex/StackDocs.js +23 -0
  423. package/components/flex/StackDocs.js.map +1 -0
  424. package/components/form-row/FormRow.js +3 -3
  425. package/components/form-row/FormRow.js.map +1 -1
  426. package/components/form-row/style/dnb-form-row.css +12 -1
  427. package/components/form-row/style/dnb-form-row.min.css +1 -1
  428. package/components/form-status/FormStatus.d.ts +4 -1
  429. package/components/icon/style/dnb-icon.scss +1 -1
  430. package/components/index.d.ts +2 -1
  431. package/components/index.js +2 -1
  432. package/components/index.js.map +1 -1
  433. package/components/input-masked/TextMask.d.ts +2 -1
  434. package/components/input-masked/style/dnb-input-masked.css +12 -1
  435. package/components/input-masked/style/dnb-input-masked.min.css +1 -1
  436. package/components/lib.d.ts +3 -1
  437. package/components/lib.js +3 -1
  438. package/components/lib.js.map +1 -1
  439. package/components/list-format/ListFormat.d.ts +40 -0
  440. package/components/list-format/ListFormat.js +112 -0
  441. package/components/list-format/ListFormat.js.map +1 -0
  442. package/components/list-format/ListFormatDocs.d.ts +2 -0
  443. package/components/list-format/ListFormatDocs.js +28 -0
  444. package/components/list-format/ListFormatDocs.js.map +1 -0
  445. package/components/list-format/index.d.ts +7 -0
  446. package/components/list-format/index.js +4 -0
  447. package/components/list-format/index.js.map +1 -0
  448. package/components/number-format/NumberUtils.js +1 -1
  449. package/components/number-format/NumberUtils.js.map +1 -1
  450. package/components/radio/style/dnb-radio.css +12 -1
  451. package/components/radio/style/dnb-radio.min.css +1 -1
  452. package/components/step-indicator/StepIndicatorTriggerButton.js +1 -1
  453. package/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
  454. package/components/textarea/Textarea.js +3 -3
  455. package/components/textarea/Textarea.js.map +1 -1
  456. package/components/toggle-button/ToggleButton.js +3 -3
  457. package/components/toggle-button/ToggleButton.js.map +1 -1
  458. package/components/toggle-button/style/dnb-toggle-button.css +12 -1
  459. package/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  460. package/components/upload/Upload.js +2 -1
  461. package/components/upload/Upload.js.map +1 -1
  462. package/components/upload/UploadContext.d.ts +1 -0
  463. package/components/upload/UploadContext.js +2 -1
  464. package/components/upload/UploadContext.js.map +1 -1
  465. package/components/upload/UploadDocs.js +5 -0
  466. package/components/upload/UploadDocs.js.map +1 -1
  467. package/components/upload/UploadDropzone.js.map +1 -1
  468. package/components/upload/UploadFileList.js +3 -1
  469. package/components/upload/UploadFileList.js.map +1 -1
  470. package/components/upload/UploadFileListCell.d.ts +22 -3
  471. package/components/upload/UploadFileListCell.js +16 -8
  472. package/components/upload/UploadFileListCell.js.map +1 -1
  473. package/components/upload/UploadVerify.d.ts +2 -2
  474. package/components/upload/UploadVerify.js.map +1 -1
  475. package/components/upload/types.d.ts +11 -5
  476. package/components/upload/types.js.map +1 -1
  477. package/components/upload/useUpload.d.ts +6 -6
  478. package/components/upload/useUpload.js.map +1 -1
  479. package/elements/lists/style/lists-mixins.scss +1 -0
  480. package/es/components/ListFormat.d.ts +12 -0
  481. package/es/components/ListFormat.js +4 -0
  482. package/es/components/ListFormat.js.map +1 -0
  483. package/es/components/anchor/Anchor.js +1 -1
  484. package/es/components/anchor/Anchor.js.map +1 -1
  485. package/es/components/autocomplete/Autocomplete.js +3 -3
  486. package/es/components/autocomplete/Autocomplete.js.map +1 -1
  487. package/es/components/card/Card.js +13 -5
  488. package/es/components/card/Card.js.map +1 -1
  489. package/es/components/card/CardContext.d.ts +6 -0
  490. package/es/components/card/CardContext.js +4 -0
  491. package/es/components/card/CardContext.js.map +1 -0
  492. package/es/components/card/CardDocs.js +2 -2
  493. package/es/components/card/CardDocs.js.map +1 -1
  494. package/es/components/card/style/dnb-card.css +3 -0
  495. package/es/components/card/style/dnb-card.min.css +1 -1
  496. package/es/components/card/style/dnb-card.scss +5 -0
  497. package/es/components/card/style/themes/dnb-card-theme-sbanken.css +3 -0
  498. package/es/components/card/style/themes/dnb-card-theme-sbanken.min.css +1 -1
  499. package/es/components/card/style/themes/dnb-card-theme-sbanken.scss +5 -0
  500. package/es/components/card/style/themes/dnb-card-theme-ui.css +5 -0
  501. package/es/components/card/style/themes/dnb-card-theme-ui.min.css +1 -1
  502. package/es/components/card/style/themes/dnb-card-theme-ui.scss +7 -0
  503. package/es/components/country-flag/CountryFlagDocs.js +5 -0
  504. package/es/components/country-flag/CountryFlagDocs.js.map +1 -1
  505. package/es/components/date-picker/DatePicker.d.ts +261 -291
  506. package/es/components/date-picker/DatePicker.js +342 -481
  507. package/es/components/date-picker/DatePicker.js.map +1 -1
  508. package/es/components/date-picker/DatePickerAddon.d.ts +21 -20
  509. package/es/components/date-picker/DatePickerAddon.js +65 -82
  510. package/es/components/date-picker/DatePickerAddon.js.map +1 -1
  511. package/es/components/date-picker/DatePickerCalc.d.ts +19 -21
  512. package/es/components/date-picker/DatePickerCalc.js +38 -37
  513. package/es/components/date-picker/DatePickerCalc.js.map +1 -1
  514. package/es/components/date-picker/DatePickerCalendar.d.ts +73 -39
  515. package/es/components/date-picker/DatePickerCalendar.js +387 -531
  516. package/es/components/date-picker/DatePickerCalendar.js.map +1 -1
  517. package/es/components/date-picker/DatePickerContext.d.ts +26 -2
  518. package/es/components/date-picker/DatePickerContext.js.map +1 -1
  519. package/es/components/date-picker/DatePickerFooter.d.ts +20 -18
  520. package/es/components/date-picker/DatePickerFooter.js +89 -116
  521. package/es/components/date-picker/DatePickerFooter.js.map +1 -1
  522. package/es/components/date-picker/DatePickerInput.d.ts +56 -64
  523. package/es/components/date-picker/DatePickerInput.js +508 -525
  524. package/es/components/date-picker/DatePickerInput.js.map +1 -1
  525. package/es/components/date-picker/DatePickerOld.d.ts +334 -0
  526. package/es/components/date-picker/DatePickerOld.js +528 -0
  527. package/es/components/date-picker/DatePickerOld.js.map +1 -0
  528. package/es/components/date-picker/DatePickerProvider.d.ts +40 -17
  529. package/es/components/date-picker/DatePickerProvider.js +122 -230
  530. package/es/components/date-picker/DatePickerProvider.js.map +1 -1
  531. package/es/components/date-picker/DatePickerRange.d.ts +22 -20
  532. package/es/components/date-picker/DatePickerRange.js +57 -138
  533. package/es/components/date-picker/DatePickerRange.js.map +1 -1
  534. package/es/components/date-picker/hooks/useDates.d.ts +45 -0
  535. package/es/components/date-picker/hooks/useDates.js +169 -0
  536. package/es/components/date-picker/hooks/useDates.js.map +1 -0
  537. package/es/components/date-picker/hooks/useLastEventCallCache.d.ts +9 -0
  538. package/es/components/date-picker/hooks/useLastEventCallCache.js +11 -0
  539. package/es/components/date-picker/hooks/useLastEventCallCache.js.map +1 -0
  540. package/es/components/date-picker/hooks/useViews.d.ts +20 -0
  541. package/es/components/date-picker/hooks/useViews.js +72 -0
  542. package/es/components/date-picker/hooks/useViews.js.map +1 -0
  543. package/es/components/date-picker/style/dnb-date-picker.css +12 -1
  544. package/es/components/date-picker/style/dnb-date-picker.min.css +1 -1
  545. package/es/components/dropdown/Dropdown.js +3 -3
  546. package/es/components/dropdown/Dropdown.js.map +1 -1
  547. package/es/components/flex/StackDocs.d.ts +2 -0
  548. package/es/components/flex/StackDocs.js +23 -0
  549. package/es/components/flex/StackDocs.js.map +1 -0
  550. package/es/components/form-row/FormRow.js +3 -3
  551. package/es/components/form-row/FormRow.js.map +1 -1
  552. package/es/components/form-row/style/dnb-form-row.css +12 -1
  553. package/es/components/form-row/style/dnb-form-row.min.css +1 -1
  554. package/es/components/form-status/FormStatus.d.ts +4 -1
  555. package/es/components/icon/style/dnb-icon.scss +1 -1
  556. package/es/components/index.d.ts +2 -1
  557. package/es/components/index.js +2 -1
  558. package/es/components/index.js.map +1 -1
  559. package/es/components/input-masked/TextMask.d.ts +2 -1
  560. package/es/components/input-masked/style/dnb-input-masked.css +12 -1
  561. package/es/components/input-masked/style/dnb-input-masked.min.css +1 -1
  562. package/es/components/lib.d.ts +3 -1
  563. package/es/components/lib.js +3 -1
  564. package/es/components/lib.js.map +1 -1
  565. package/es/components/list-format/ListFormat.d.ts +40 -0
  566. package/es/components/list-format/ListFormat.js +111 -0
  567. package/es/components/list-format/ListFormat.js.map +1 -0
  568. package/es/components/list-format/ListFormatDocs.d.ts +2 -0
  569. package/es/components/list-format/ListFormatDocs.js +28 -0
  570. package/es/components/list-format/ListFormatDocs.js.map +1 -0
  571. package/es/components/list-format/index.d.ts +7 -0
  572. package/es/components/list-format/index.js +4 -0
  573. package/es/components/list-format/index.js.map +1 -0
  574. package/es/components/number-format/NumberUtils.js +1 -1
  575. package/es/components/number-format/NumberUtils.js.map +1 -1
  576. package/es/components/radio/style/dnb-radio.css +12 -1
  577. package/es/components/radio/style/dnb-radio.min.css +1 -1
  578. package/es/components/step-indicator/StepIndicatorTriggerButton.js +1 -1
  579. package/es/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
  580. package/es/components/textarea/Textarea.js +3 -3
  581. package/es/components/textarea/Textarea.js.map +1 -1
  582. package/es/components/toggle-button/ToggleButton.js +3 -3
  583. package/es/components/toggle-button/ToggleButton.js.map +1 -1
  584. package/es/components/toggle-button/style/dnb-toggle-button.css +12 -1
  585. package/es/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  586. package/es/components/upload/Upload.js +2 -1
  587. package/es/components/upload/Upload.js.map +1 -1
  588. package/es/components/upload/UploadContext.d.ts +1 -0
  589. package/es/components/upload/UploadContext.js +2 -1
  590. package/es/components/upload/UploadContext.js.map +1 -1
  591. package/es/components/upload/UploadDocs.js +5 -0
  592. package/es/components/upload/UploadDocs.js.map +1 -1
  593. package/es/components/upload/UploadDropzone.js.map +1 -1
  594. package/es/components/upload/UploadFileList.js +3 -1
  595. package/es/components/upload/UploadFileList.js.map +1 -1
  596. package/es/components/upload/UploadFileListCell.d.ts +22 -3
  597. package/es/components/upload/UploadFileListCell.js +16 -8
  598. package/es/components/upload/UploadFileListCell.js.map +1 -1
  599. package/es/components/upload/UploadVerify.d.ts +2 -2
  600. package/es/components/upload/UploadVerify.js.map +1 -1
  601. package/es/components/upload/types.d.ts +11 -5
  602. package/es/components/upload/types.js.map +1 -1
  603. package/es/components/upload/useUpload.d.ts +6 -6
  604. package/es/components/upload/useUpload.js.map +1 -1
  605. package/es/elements/lists/style/lists-mixins.scss +1 -0
  606. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +1 -1
  607. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  608. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +11 -14
  609. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  610. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +3 -4
  611. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  612. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +4 -4
  613. package/es/extensions/forms/Field/Boolean/Boolean.d.ts +3 -2
  614. package/es/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
  615. package/es/extensions/forms/Field/Composition/CompositionDocs.js +2 -2
  616. package/es/extensions/forms/Field/Composition/CompositionDocs.js.map +1 -1
  617. package/es/extensions/forms/Field/Date/Date.js +4 -12
  618. package/es/extensions/forms/Field/Date/Date.js.map +1 -1
  619. package/es/extensions/forms/Field/Expiry/Expiry.js +6 -14
  620. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  621. package/es/extensions/forms/Field/FieldDocs.d.ts +2 -2
  622. package/es/extensions/forms/Field/FieldDocs.js +8 -8
  623. package/es/extensions/forms/Field/FieldDocs.js.map +1 -1
  624. package/es/extensions/forms/Field/Number/Number.d.ts +2 -1
  625. package/es/extensions/forms/Field/Number/Number.js +8 -19
  626. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  627. package/es/extensions/forms/Field/Number/style/dnb-number.css +0 -3
  628. package/es/extensions/forms/Field/Number/style/dnb-number.min.css +1 -1
  629. package/es/extensions/forms/Field/Number/style/dnb-number.scss +0 -2
  630. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +2 -2
  631. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +9 -10
  632. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  633. package/es/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.d.ts +1 -1
  634. package/es/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js +1 -1
  635. package/es/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js.map +1 -1
  636. package/es/extensions/forms/Field/Provider/FieldProviderDocs.js +6 -3
  637. package/es/extensions/forms/Field/Provider/FieldProviderDocs.js.map +1 -1
  638. package/es/extensions/forms/Field/Provider/useFieldProvider.d.ts +10 -3
  639. package/es/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -1
  640. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +14 -12
  641. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  642. package/es/extensions/forms/Field/Selection/Selection.d.ts +2 -1
  643. package/es/extensions/forms/Field/Selection/Selection.js +5 -13
  644. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  645. package/es/extensions/forms/Field/Slider/Slider.d.ts +2 -1
  646. package/es/extensions/forms/Field/Slider/Slider.js +0 -13
  647. package/es/extensions/forms/Field/Slider/Slider.js.map +1 -1
  648. package/es/extensions/forms/Field/String/String.d.ts +2 -1
  649. package/es/extensions/forms/Field/String/String.js +7 -20
  650. package/es/extensions/forms/Field/String/String.js.map +1 -1
  651. package/es/extensions/forms/Field/Toggle/Toggle.d.ts +1 -1
  652. package/es/extensions/forms/Field/Toggle/Toggle.js +6 -18
  653. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  654. package/es/extensions/forms/Field/Upload/Upload.d.ts +4 -3
  655. package/es/extensions/forms/Field/Upload/Upload.js +2 -12
  656. package/es/extensions/forms/Field/Upload/Upload.js.map +1 -1
  657. package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +45 -6
  658. package/es/extensions/forms/FieldBlock/FieldBlock.js +39 -20
  659. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  660. package/es/extensions/forms/FieldBlock/FieldBlockContext.d.ts +1 -0
  661. package/es/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  662. package/es/extensions/forms/FieldBlock/FieldBlockDocs.d.ts +3 -2
  663. package/es/extensions/forms/FieldBlock/FieldBlockDocs.js +17 -2
  664. package/es/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -1
  665. package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +34 -11
  666. package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  667. package/es/extensions/forms/FieldBlock/style/dnb-field-block.scss +56 -13
  668. package/es/extensions/forms/FieldBlock/style/themes/dnb-field-block-theme-sbanken.css +7 -0
  669. package/es/extensions/forms/FieldBlock/style/themes/dnb-field-block-theme-sbanken.min.css +1 -0
  670. package/es/extensions/forms/FieldBlock/style/themes/dnb-field-block-theme-sbanken.scss +10 -0
  671. package/es/extensions/forms/Form/Section/EditContainer/CancelButton.d.ts +1 -0
  672. package/es/extensions/forms/Form/Section/EditContainer/CancelButton.js +51 -0
  673. package/es/extensions/forms/Form/Section/EditContainer/CancelButton.js.map +1 -0
  674. package/es/extensions/forms/Form/Section/EditContainer/DoneButton.d.ts +1 -0
  675. package/es/extensions/forms/Form/Section/EditContainer/DoneButton.js +44 -0
  676. package/es/extensions/forms/Form/Section/EditContainer/DoneButton.js.map +1 -0
  677. package/es/extensions/forms/Form/Section/EditContainer/EditContainer.d.ts +2 -0
  678. package/es/extensions/forms/Form/Section/EditContainer/EditContainer.js +11 -4
  679. package/es/extensions/forms/Form/Section/EditContainer/EditContainer.js.map +1 -1
  680. package/es/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js +1 -1
  681. package/es/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js.map +1 -1
  682. package/es/extensions/forms/Form/Section/Section.d.ts +4 -2
  683. package/es/extensions/forms/Form/Section/Section.js +2 -0
  684. package/es/extensions/forms/Form/Section/Section.js.map +1 -1
  685. package/es/extensions/forms/Form/Section/Toolbar/Toolbar.d.ts +7 -0
  686. package/es/extensions/forms/Form/Section/Toolbar/Toolbar.js +59 -0
  687. package/es/extensions/forms/Form/Section/Toolbar/Toolbar.js.map +1 -0
  688. package/es/extensions/forms/Form/Section/Toolbar/ToolbarContext.d.ts +9 -0
  689. package/es/extensions/forms/Form/Section/Toolbar/ToolbarContext.js +4 -0
  690. package/es/extensions/forms/Form/Section/Toolbar/ToolbarContext.js.map +1 -0
  691. package/es/extensions/forms/Form/Section/Toolbar/ToolbarDocs.d.ts +3 -0
  692. package/es/extensions/forms/Form/Section/Toolbar/ToolbarDocs.js +3 -0
  693. package/es/extensions/forms/Form/Section/Toolbar/ToolbarDocs.js.map +1 -0
  694. package/es/extensions/forms/Form/Section/Toolbar/index.d.ts +2 -0
  695. package/es/extensions/forms/Form/Section/Toolbar/index.js +3 -0
  696. package/es/extensions/forms/Form/Section/Toolbar/index.js.map +1 -0
  697. package/es/extensions/forms/Form/Section/ViewContainer/EditButton.d.ts +1 -0
  698. package/es/extensions/forms/Form/Section/ViewContainer/{ViewToolbarTools.js → EditButton.js} +10 -11
  699. package/es/extensions/forms/Form/Section/ViewContainer/EditButton.js.map +1 -0
  700. package/es/extensions/forms/Form/Section/ViewContainer/ViewContainer.d.ts +1 -0
  701. package/es/extensions/forms/Form/Section/ViewContainer/ViewContainer.js +9 -4
  702. package/es/extensions/forms/Form/Section/ViewContainer/ViewContainer.js.map +1 -1
  703. package/es/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js +1 -1
  704. package/es/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js.map +1 -1
  705. package/es/extensions/forms/Form/Section/containers/SectionContainer.js +4 -3
  706. package/es/extensions/forms/Form/Section/containers/SectionContainer.js.map +1 -1
  707. package/es/extensions/forms/Form/Section/style/dnb-form-section.css +6 -13
  708. package/es/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -1
  709. package/es/extensions/forms/Form/Section/style/dnb-form-section.scss +11 -24
  710. package/es/extensions/forms/Iterate/Array/ArrayDocs.js +5 -5
  711. package/es/extensions/forms/Iterate/Array/ArrayDocs.js.map +1 -1
  712. package/es/extensions/forms/Iterate/Array/ArrayItemArea.js +4 -3
  713. package/es/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -1
  714. package/es/extensions/forms/Iterate/EditContainer/CancelButton.d.ts +1 -1
  715. package/es/extensions/forms/Iterate/EditContainer/CancelButton.js +1 -1
  716. package/es/extensions/forms/Iterate/EditContainer/CancelButton.js.map +1 -1
  717. package/es/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +1 -1
  718. package/es/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
  719. package/es/extensions/forms/Iterate/ViewContainer/EditButton.d.ts +1 -1
  720. package/es/extensions/forms/Iterate/ViewContainer/EditButton.js +1 -1
  721. package/es/extensions/forms/Iterate/ViewContainer/EditButton.js.map +1 -1
  722. package/es/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +1 -1
  723. package/es/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
  724. package/es/extensions/forms/Value/ArraySelection/ArraySelection.d.ts +2 -25
  725. package/es/extensions/forms/Value/ArraySelection/ArraySelection.js +14 -45
  726. package/es/extensions/forms/Value/ArraySelection/ArraySelection.js.map +1 -1
  727. package/es/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js +5 -17
  728. package/es/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js.map +1 -1
  729. package/es/extensions/forms/Value/Composition/CompositionDocs.js +3 -1
  730. package/es/extensions/forms/Value/Composition/CompositionDocs.js.map +1 -1
  731. package/es/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -1
  732. package/es/extensions/forms/Value/SummaryList/SummaryListDocs.js +5 -5
  733. package/es/extensions/forms/Value/SummaryList/SummaryListDocs.js.map +1 -1
  734. package/es/extensions/forms/Value/Upload/Upload.d.ts +11 -0
  735. package/es/extensions/forms/Value/Upload/Upload.js +88 -0
  736. package/es/extensions/forms/Value/Upload/Upload.js.map +1 -0
  737. package/es/extensions/forms/Value/Upload/UploadDocs.d.ts +2 -0
  738. package/es/extensions/forms/Value/Upload/UploadDocs.js +17 -0
  739. package/es/extensions/forms/Value/Upload/UploadDocs.js.map +1 -0
  740. package/es/extensions/forms/Value/Upload/index.d.ts +2 -0
  741. package/es/extensions/forms/Value/Upload/index.js +3 -0
  742. package/es/extensions/forms/Value/Upload/index.js.map +1 -0
  743. package/es/extensions/forms/Value/index.d.ts +1 -0
  744. package/es/extensions/forms/Value/index.js +1 -0
  745. package/es/extensions/forms/Value/index.js.map +1 -1
  746. package/es/extensions/forms/ValueBlock/ValueBlock.js +8 -3
  747. package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  748. package/es/extensions/forms/ValueBlock/style/dnb-value-block.css +0 -7
  749. package/es/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  750. package/es/extensions/forms/ValueBlock/style/dnb-value-block.scss +0 -10
  751. package/es/extensions/forms/Wizard/Step/StepDocs.js +1 -1
  752. package/es/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  753. package/es/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js +2 -0
  754. package/es/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js.map +1 -1
  755. package/es/extensions/forms/hooks/DataValueWritePropsDocs.d.ts +3 -0
  756. package/es/extensions/forms/hooks/{DataValueDocs.js → DataValueWritePropsDocs.js} +3 -3
  757. package/es/extensions/forms/hooks/DataValueWritePropsDocs.js.map +1 -0
  758. package/es/extensions/forms/hooks/useDataValue.js +6 -1
  759. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  760. package/es/extensions/forms/hooks/useFieldProps.js +8 -3
  761. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  762. package/es/extensions/forms/hooks/useValueProps.js +1 -6
  763. package/es/extensions/forms/hooks/useValueProps.js.map +1 -1
  764. package/es/extensions/forms/style/dnb-forms.css +45 -38
  765. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  766. package/es/extensions/forms/types.d.ts +6 -28
  767. package/es/extensions/forms/types.js.map +1 -1
  768. package/es/extensions/forms/utils/TestElement/style/dnb-test-element.css +2 -0
  769. package/es/extensions/forms/utils/TestElement/style/dnb-test-element.min.css +1 -1
  770. package/es/extensions/forms/utils/TestElement/style/dnb-test-element.scss +2 -0
  771. package/es/index.d.ts +2 -1
  772. package/es/index.js +2 -1
  773. package/es/index.js.map +1 -1
  774. package/es/shared/Context.d.ts +4 -0
  775. package/es/shared/Context.js.map +1 -1
  776. package/es/shared/Eufemia.d.ts +1 -1
  777. package/es/shared/Eufemia.js +2 -2
  778. package/es/shared/Eufemia.js.map +1 -1
  779. package/es/shared/component-helper.d.ts +1 -1
  780. package/es/shared/component-helper.js.map +1 -1
  781. package/es/style/core/reset.scss +0 -8
  782. package/es/style/core/scopes.scss +1 -1
  783. package/es/style/core/utilities.scss +12 -16
  784. package/es/style/dnb-ui-basis.css +1 -7
  785. package/es/style/dnb-ui-basis.min.css +1 -1
  786. package/es/style/dnb-ui-body.css +1 -7
  787. package/es/style/dnb-ui-body.min.css +1 -1
  788. package/es/style/dnb-ui-components.css +108 -42
  789. package/es/style/dnb-ui-components.min.css +3 -3
  790. package/es/style/dnb-ui-core.css +1 -8
  791. package/es/style/dnb-ui-core.min.css +1 -1
  792. package/es/style/dnb-ui-elements.css +1 -0
  793. package/es/style/dnb-ui-elements.min.css +1 -1
  794. package/es/style/dnb-ui-extensions.css +45 -38
  795. package/es/style/dnb-ui-extensions.min.css +1 -1
  796. package/es/style/dnb-ui-forms.css +45 -38
  797. package/es/style/dnb-ui-forms.min.css +1 -1
  798. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +1 -0
  799. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  800. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +158 -79
  801. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
  802. package/es/style/themes/theme-eiendom/eiendom-theme-elements.css +1 -0
  803. package/es/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  804. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +45 -38
  805. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  806. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +45 -38
  807. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  808. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +1 -0
  809. package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  810. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +163 -82
  811. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +5 -5
  812. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -0
  813. package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  814. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +50 -41
  815. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +2 -2
  816. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -1
  817. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +52 -41
  818. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +2 -2
  819. package/es/style/themes/theme-sbanken/sbanken-theme-forms.scss +1 -1
  820. package/es/style/themes/theme-ui/ui-theme-basis.css +1 -0
  821. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  822. package/es/style/themes/theme-ui/ui-theme-components.css +158 -79
  823. package/es/style/themes/theme-ui/ui-theme-components.min.css +4 -4
  824. package/es/style/themes/theme-ui/ui-theme-elements.css +1 -0
  825. package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  826. package/es/style/themes/theme-ui/ui-theme-extensions.css +45 -38
  827. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  828. package/es/style/themes/theme-ui/ui-theme-forms.css +45 -38
  829. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  830. package/es/style/themes/theme-ui/ui-theme-tags.css +1 -0
  831. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  832. package/esm/dnb-ui-basis.min.mjs +1 -1
  833. package/esm/dnb-ui-components.min.mjs +1 -1
  834. package/esm/dnb-ui-elements.min.mjs +1 -1
  835. package/esm/dnb-ui-extensions.min.mjs +3 -3
  836. package/esm/dnb-ui-lib.min.mjs +1 -1
  837. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +1 -1
  838. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  839. package/extensions/forms/Field/ArraySelection/ArraySelection.js +11 -14
  840. package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  841. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +3 -4
  842. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  843. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +4 -4
  844. package/extensions/forms/Field/Boolean/Boolean.d.ts +3 -2
  845. package/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
  846. package/extensions/forms/Field/Composition/CompositionDocs.js +2 -2
  847. package/extensions/forms/Field/Composition/CompositionDocs.js.map +1 -1
  848. package/extensions/forms/Field/Date/Date.js +4 -12
  849. package/extensions/forms/Field/Date/Date.js.map +1 -1
  850. package/extensions/forms/Field/Expiry/Expiry.js +6 -14
  851. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  852. package/extensions/forms/Field/FieldDocs.d.ts +2 -2
  853. package/extensions/forms/Field/FieldDocs.js +8 -8
  854. package/extensions/forms/Field/FieldDocs.js.map +1 -1
  855. package/extensions/forms/Field/Number/Number.d.ts +2 -1
  856. package/extensions/forms/Field/Number/Number.js +7 -19
  857. package/extensions/forms/Field/Number/Number.js.map +1 -1
  858. package/extensions/forms/Field/Number/style/dnb-number.css +0 -3
  859. package/extensions/forms/Field/Number/style/dnb-number.min.css +1 -1
  860. package/extensions/forms/Field/Number/style/dnb-number.scss +0 -2
  861. package/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +2 -2
  862. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +9 -10
  863. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  864. package/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.d.ts +1 -1
  865. package/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js +1 -1
  866. package/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js.map +1 -1
  867. package/extensions/forms/Field/Provider/FieldProviderDocs.js +6 -3
  868. package/extensions/forms/Field/Provider/FieldProviderDocs.js.map +1 -1
  869. package/extensions/forms/Field/Provider/useFieldProvider.d.ts +10 -3
  870. package/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -1
  871. package/extensions/forms/Field/SelectCountry/SelectCountry.js +14 -12
  872. package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  873. package/extensions/forms/Field/Selection/Selection.d.ts +2 -1
  874. package/extensions/forms/Field/Selection/Selection.js +5 -13
  875. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  876. package/extensions/forms/Field/Slider/Slider.d.ts +2 -1
  877. package/extensions/forms/Field/Slider/Slider.js +0 -13
  878. package/extensions/forms/Field/Slider/Slider.js.map +1 -1
  879. package/extensions/forms/Field/String/String.d.ts +2 -1
  880. package/extensions/forms/Field/String/String.js +7 -20
  881. package/extensions/forms/Field/String/String.js.map +1 -1
  882. package/extensions/forms/Field/Toggle/Toggle.d.ts +1 -1
  883. package/extensions/forms/Field/Toggle/Toggle.js +6 -18
  884. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  885. package/extensions/forms/Field/Upload/Upload.d.ts +4 -3
  886. package/extensions/forms/Field/Upload/Upload.js +2 -12
  887. package/extensions/forms/Field/Upload/Upload.js.map +1 -1
  888. package/extensions/forms/FieldBlock/FieldBlock.d.ts +45 -6
  889. package/extensions/forms/FieldBlock/FieldBlock.js +39 -20
  890. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  891. package/extensions/forms/FieldBlock/FieldBlockContext.d.ts +1 -0
  892. package/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  893. package/extensions/forms/FieldBlock/FieldBlockDocs.d.ts +3 -2
  894. package/extensions/forms/FieldBlock/FieldBlockDocs.js +17 -2
  895. package/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -1
  896. package/extensions/forms/FieldBlock/style/dnb-field-block.css +34 -11
  897. package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  898. package/extensions/forms/FieldBlock/style/dnb-field-block.scss +56 -13
  899. package/extensions/forms/FieldBlock/style/themes/dnb-field-block-theme-sbanken.css +7 -0
  900. package/extensions/forms/FieldBlock/style/themes/dnb-field-block-theme-sbanken.min.css +1 -0
  901. package/extensions/forms/FieldBlock/style/themes/dnb-field-block-theme-sbanken.scss +10 -0
  902. package/extensions/forms/Form/Section/EditContainer/CancelButton.d.ts +1 -0
  903. package/extensions/forms/Form/Section/EditContainer/CancelButton.js +51 -0
  904. package/extensions/forms/Form/Section/EditContainer/CancelButton.js.map +1 -0
  905. package/extensions/forms/Form/Section/EditContainer/DoneButton.d.ts +1 -0
  906. package/extensions/forms/Form/Section/EditContainer/DoneButton.js +44 -0
  907. package/extensions/forms/Form/Section/EditContainer/DoneButton.js.map +1 -0
  908. package/extensions/forms/Form/Section/EditContainer/EditContainer.d.ts +2 -0
  909. package/extensions/forms/Form/Section/EditContainer/EditContainer.js +11 -4
  910. package/extensions/forms/Form/Section/EditContainer/EditContainer.js.map +1 -1
  911. package/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js +1 -1
  912. package/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js.map +1 -1
  913. package/extensions/forms/Form/Section/Section.d.ts +4 -2
  914. package/extensions/forms/Form/Section/Section.js +2 -0
  915. package/extensions/forms/Form/Section/Section.js.map +1 -1
  916. package/extensions/forms/Form/Section/Toolbar/Toolbar.d.ts +7 -0
  917. package/extensions/forms/Form/Section/Toolbar/Toolbar.js +59 -0
  918. package/extensions/forms/Form/Section/Toolbar/Toolbar.js.map +1 -0
  919. package/extensions/forms/Form/Section/Toolbar/ToolbarContext.d.ts +9 -0
  920. package/extensions/forms/Form/Section/Toolbar/ToolbarContext.js +4 -0
  921. package/extensions/forms/Form/Section/Toolbar/ToolbarContext.js.map +1 -0
  922. package/extensions/forms/Form/Section/Toolbar/ToolbarDocs.d.ts +3 -0
  923. package/extensions/forms/Form/Section/Toolbar/ToolbarDocs.js +3 -0
  924. package/extensions/forms/Form/Section/Toolbar/ToolbarDocs.js.map +1 -0
  925. package/extensions/forms/Form/Section/Toolbar/index.d.ts +2 -0
  926. package/extensions/forms/Form/Section/Toolbar/index.js +3 -0
  927. package/extensions/forms/Form/Section/Toolbar/index.js.map +1 -0
  928. package/extensions/forms/Form/Section/ViewContainer/EditButton.d.ts +1 -0
  929. package/extensions/forms/Form/Section/ViewContainer/{ViewToolbarTools.js → EditButton.js} +10 -11
  930. package/extensions/forms/Form/Section/ViewContainer/EditButton.js.map +1 -0
  931. package/extensions/forms/Form/Section/ViewContainer/ViewContainer.d.ts +1 -0
  932. package/extensions/forms/Form/Section/ViewContainer/ViewContainer.js +9 -4
  933. package/extensions/forms/Form/Section/ViewContainer/ViewContainer.js.map +1 -1
  934. package/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js +1 -1
  935. package/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js.map +1 -1
  936. package/extensions/forms/Form/Section/containers/SectionContainer.js +4 -3
  937. package/extensions/forms/Form/Section/containers/SectionContainer.js.map +1 -1
  938. package/extensions/forms/Form/Section/style/dnb-form-section.css +6 -13
  939. package/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -1
  940. package/extensions/forms/Form/Section/style/dnb-form-section.scss +11 -24
  941. package/extensions/forms/Iterate/Array/ArrayDocs.js +5 -5
  942. package/extensions/forms/Iterate/Array/ArrayDocs.js.map +1 -1
  943. package/extensions/forms/Iterate/Array/ArrayItemArea.js +4 -3
  944. package/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -1
  945. package/extensions/forms/Iterate/EditContainer/CancelButton.d.ts +1 -1
  946. package/extensions/forms/Iterate/EditContainer/CancelButton.js +1 -1
  947. package/extensions/forms/Iterate/EditContainer/CancelButton.js.map +1 -1
  948. package/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +1 -1
  949. package/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
  950. package/extensions/forms/Iterate/ViewContainer/EditButton.d.ts +1 -1
  951. package/extensions/forms/Iterate/ViewContainer/EditButton.js +1 -1
  952. package/extensions/forms/Iterate/ViewContainer/EditButton.js.map +1 -1
  953. package/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +1 -1
  954. package/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
  955. package/extensions/forms/Value/ArraySelection/ArraySelection.d.ts +2 -25
  956. package/extensions/forms/Value/ArraySelection/ArraySelection.js +14 -46
  957. package/extensions/forms/Value/ArraySelection/ArraySelection.js.map +1 -1
  958. package/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js +5 -17
  959. package/extensions/forms/Value/ArraySelection/ArraySelectionDocs.js.map +1 -1
  960. package/extensions/forms/Value/Composition/CompositionDocs.js +3 -1
  961. package/extensions/forms/Value/Composition/CompositionDocs.js.map +1 -1
  962. package/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -1
  963. package/extensions/forms/Value/SummaryList/SummaryListDocs.js +5 -5
  964. package/extensions/forms/Value/SummaryList/SummaryListDocs.js.map +1 -1
  965. package/extensions/forms/Value/Upload/Upload.d.ts +11 -0
  966. package/extensions/forms/Value/Upload/Upload.js +88 -0
  967. package/extensions/forms/Value/Upload/Upload.js.map +1 -0
  968. package/extensions/forms/Value/Upload/UploadDocs.d.ts +2 -0
  969. package/extensions/forms/Value/Upload/UploadDocs.js +17 -0
  970. package/extensions/forms/Value/Upload/UploadDocs.js.map +1 -0
  971. package/extensions/forms/Value/Upload/index.d.ts +2 -0
  972. package/extensions/forms/Value/Upload/index.js +3 -0
  973. package/extensions/forms/Value/Upload/index.js.map +1 -0
  974. package/extensions/forms/Value/index.d.ts +1 -0
  975. package/extensions/forms/Value/index.js +1 -0
  976. package/extensions/forms/Value/index.js.map +1 -1
  977. package/extensions/forms/ValueBlock/ValueBlock.js +8 -3
  978. package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  979. package/extensions/forms/ValueBlock/style/dnb-value-block.css +0 -7
  980. package/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  981. package/extensions/forms/ValueBlock/style/dnb-value-block.scss +0 -10
  982. package/extensions/forms/Wizard/Step/StepDocs.js +1 -1
  983. package/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  984. package/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js +2 -0
  985. package/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js.map +1 -1
  986. package/extensions/forms/hooks/DataValueWritePropsDocs.d.ts +3 -0
  987. package/extensions/forms/hooks/{DataValueDocs.js → DataValueWritePropsDocs.js} +3 -3
  988. package/extensions/forms/hooks/DataValueWritePropsDocs.js.map +1 -0
  989. package/extensions/forms/hooks/useDataValue.js +6 -1
  990. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  991. package/extensions/forms/hooks/useFieldProps.js +8 -3
  992. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  993. package/extensions/forms/hooks/useValueProps.js +1 -6
  994. package/extensions/forms/hooks/useValueProps.js.map +1 -1
  995. package/extensions/forms/style/dnb-forms.css +45 -38
  996. package/extensions/forms/style/dnb-forms.min.css +1 -1
  997. package/extensions/forms/types.d.ts +6 -28
  998. package/extensions/forms/types.js.map +1 -1
  999. package/extensions/forms/utils/TestElement/style/dnb-test-element.css +2 -0
  1000. package/extensions/forms/utils/TestElement/style/dnb-test-element.min.css +1 -1
  1001. package/extensions/forms/utils/TestElement/style/dnb-test-element.scss +2 -0
  1002. package/index.d.ts +2 -1
  1003. package/index.js +2 -1
  1004. package/index.js.map +1 -1
  1005. package/package.json +1 -1
  1006. package/shared/Context.d.ts +4 -0
  1007. package/shared/Context.js.map +1 -1
  1008. package/shared/Eufemia.d.ts +1 -1
  1009. package/shared/Eufemia.js +2 -2
  1010. package/shared/Eufemia.js.map +1 -1
  1011. package/shared/component-helper.d.ts +1 -1
  1012. package/shared/component-helper.js.map +1 -1
  1013. package/style/core/reset.scss +0 -8
  1014. package/style/core/scopes.scss +1 -1
  1015. package/style/core/utilities.scss +12 -16
  1016. package/style/dnb-ui-basis.css +1 -7
  1017. package/style/dnb-ui-basis.min.css +1 -1
  1018. package/style/dnb-ui-body.css +1 -7
  1019. package/style/dnb-ui-body.min.css +1 -1
  1020. package/style/dnb-ui-components.css +108 -42
  1021. package/style/dnb-ui-components.min.css +3 -3
  1022. package/style/dnb-ui-core.css +1 -8
  1023. package/style/dnb-ui-core.min.css +1 -1
  1024. package/style/dnb-ui-elements.css +1 -0
  1025. package/style/dnb-ui-elements.min.css +1 -1
  1026. package/style/dnb-ui-extensions.css +45 -38
  1027. package/style/dnb-ui-extensions.min.css +1 -1
  1028. package/style/dnb-ui-forms.css +45 -38
  1029. package/style/dnb-ui-forms.min.css +1 -1
  1030. package/style/themes/theme-eiendom/eiendom-theme-basis.css +1 -0
  1031. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  1032. package/style/themes/theme-eiendom/eiendom-theme-components.css +158 -79
  1033. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +4 -4
  1034. package/style/themes/theme-eiendom/eiendom-theme-elements.css +1 -0
  1035. package/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  1036. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +45 -38
  1037. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  1038. package/style/themes/theme-eiendom/eiendom-theme-forms.css +45 -38
  1039. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  1040. package/style/themes/theme-sbanken/sbanken-theme-basis.css +1 -0
  1041. package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  1042. package/style/themes/theme-sbanken/sbanken-theme-components.css +163 -82
  1043. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +5 -5
  1044. package/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -0
  1045. package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  1046. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +50 -41
  1047. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +2 -2
  1048. package/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -1
  1049. package/style/themes/theme-sbanken/sbanken-theme-forms.css +52 -41
  1050. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +2 -2
  1051. package/style/themes/theme-sbanken/sbanken-theme-forms.scss +1 -1
  1052. package/style/themes/theme-ui/ui-theme-basis.css +1 -0
  1053. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  1054. package/style/themes/theme-ui/ui-theme-components.css +158 -79
  1055. package/style/themes/theme-ui/ui-theme-components.min.css +4 -4
  1056. package/style/themes/theme-ui/ui-theme-elements.css +1 -0
  1057. package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  1058. package/style/themes/theme-ui/ui-theme-extensions.css +45 -38
  1059. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  1060. package/style/themes/theme-ui/ui-theme-forms.css +45 -38
  1061. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  1062. package/style/themes/theme-ui/ui-theme-tags.css +1 -0
  1063. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  1064. package/umd/dnb-ui-basis.min.js +1 -1
  1065. package/umd/dnb-ui-components.min.js +1 -1
  1066. package/umd/dnb-ui-elements.min.js +1 -1
  1067. package/umd/dnb-ui-extensions.min.js +3 -3
  1068. package/umd/dnb-ui-lib.min.js +1 -1
  1069. package/cjs/extensions/forms/FieldBlock/style/themes/dnb-field-block-sbanken.css +0 -4
  1070. package/cjs/extensions/forms/FieldBlock/style/themes/dnb-field-block-sbanken.min.css +0 -1
  1071. package/cjs/extensions/forms/FieldBlock/style/themes/dnb-field-block-sbanken.scss +0 -6
  1072. package/cjs/extensions/forms/Form/Section/EditContainer/EditToolbarTools.d.ts +0 -5
  1073. package/cjs/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +0 -1
  1074. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.d.ts +0 -4
  1075. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js.map +0 -1
  1076. package/cjs/extensions/forms/Form/Section/containers/Toolbar.d.ts +0 -7
  1077. package/cjs/extensions/forms/Form/Section/containers/Toolbar.js +0 -35
  1078. package/cjs/extensions/forms/Form/Section/containers/Toolbar.js.map +0 -1
  1079. package/cjs/extensions/forms/hooks/DataValueDocs.d.ts +0 -3
  1080. package/cjs/extensions/forms/hooks/DataValueDocs.js.map +0 -1
  1081. package/es/extensions/forms/FieldBlock/style/themes/dnb-field-block-sbanken.css +0 -4
  1082. package/es/extensions/forms/FieldBlock/style/themes/dnb-field-block-sbanken.min.css +0 -1
  1083. package/es/extensions/forms/FieldBlock/style/themes/dnb-field-block-sbanken.scss +0 -6
  1084. package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.d.ts +0 -5
  1085. package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +0 -77
  1086. package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +0 -1
  1087. package/es/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.d.ts +0 -4
  1088. package/es/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js.map +0 -1
  1089. package/es/extensions/forms/Form/Section/containers/Toolbar.d.ts +0 -7
  1090. package/es/extensions/forms/Form/Section/containers/Toolbar.js +0 -27
  1091. package/es/extensions/forms/Form/Section/containers/Toolbar.js.map +0 -1
  1092. package/es/extensions/forms/hooks/DataValueDocs.d.ts +0 -3
  1093. package/es/extensions/forms/hooks/DataValueDocs.js.map +0 -1
  1094. package/extensions/forms/FieldBlock/style/themes/dnb-field-block-sbanken.css +0 -4
  1095. package/extensions/forms/FieldBlock/style/themes/dnb-field-block-sbanken.min.css +0 -1
  1096. package/extensions/forms/FieldBlock/style/themes/dnb-field-block-sbanken.scss +0 -6
  1097. package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.d.ts +0 -5
  1098. package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +0 -77
  1099. package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +0 -1
  1100. package/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.d.ts +0 -4
  1101. package/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js.map +0 -1
  1102. package/extensions/forms/Form/Section/containers/Toolbar.d.ts +0 -7
  1103. package/extensions/forms/Form/Section/containers/Toolbar.js +0 -27
  1104. package/extensions/forms/Form/Section/containers/Toolbar.js.map +0 -1
  1105. package/extensions/forms/hooks/DataValueDocs.d.ts +0 -3
  1106. package/extensions/forms/hooks/DataValueDocs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"UploadFileList.js","names":["React","UploadContext","UploadFileListCell","useUpload","UploadFileList","context","useContext","id","fileListAriaLabel","deleteButton","loadingText","onFileDelete","onChange","files","setFiles","setInternalFiles","length","createElement","className","map","uploadFile","index","onDeleteHandler","fileItem","cleanedFiles","filter","fileListElement","file","key","onDelete","deleteButtonText"],"sources":["../../../../src/components/upload/UploadFileList.tsx"],"sourcesContent":["import React from 'react'\nimport { UploadFile } from './types'\nimport { UploadContext } from './UploadContext'\nimport UploadFileListCell from './UploadFileListCell'\nimport useUpload from './useUpload'\n\nfunction UploadFileList() {\n const context = React.useContext(UploadContext)\n\n const {\n id,\n fileListAriaLabel,\n deleteButton,\n loadingText,\n onFileDelete,\n onChange,\n } = context\n\n const { files, setFiles, setInternalFiles } = useUpload(id)\n\n if (files === null || files.length < 1) {\n return null\n }\n\n return (\n <ul className=\"dnb-upload__file-list\" aria-label={fileListAriaLabel}>\n {files.map((uploadFile: UploadFile, index: number) => {\n const onDeleteHandler = () => {\n if (typeof onFileDelete === 'function') {\n onFileDelete({ fileItem: uploadFile })\n }\n\n const cleanedFiles = files.filter(\n (fileListElement) => fileListElement.file != uploadFile.file\n )\n\n setFiles(cleanedFiles)\n setInternalFiles(cleanedFiles)\n\n if (typeof onChange === 'function') {\n onChange({ files: cleanedFiles })\n }\n }\n\n return (\n <UploadFileListCell\n key={index}\n id={id}\n uploadFile={uploadFile}\n onDelete={onDeleteHandler}\n deleteButtonText={deleteButton}\n loadingText={loadingText}\n />\n )\n })}\n </ul>\n )\n}\n\nexport default UploadFileList\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,OAAOC,kBAAkB,MAAM,sBAAsB;AACrD,OAAOC,SAAS,MAAM,aAAa;AAEnC,SAASC,cAAcA,CAAA,EAAG;EACxB,MAAMC,OAAO,GAAGL,KAAK,CAACM,UAAU,CAACL,aAAa,CAAC;EAE/C,MAAM;IACJM,EAAE;IACFC,iBAAiB;IACjBC,YAAY;IACZC,WAAW;IACXC,YAAY;IACZC;EACF,CAAC,GAAGP,OAAO;EAEX,MAAM;IAAEQ,KAAK;IAAEC,QAAQ;IAAEC;EAAiB,CAAC,GAAGZ,SAAS,CAACI,EAAE,CAAC;EAE3D,IAAIM,KAAK,KAAK,IAAI,IAAIA,KAAK,CAACG,MAAM,GAAG,CAAC,EAAE;IACtC,OAAO,IAAI;EACb;EAEA,OACEhB,KAAA,CAAAiB,aAAA;IAAIC,SAAS,EAAC,uBAAuB;IAAC,cAAYV;EAAkB,GACjEK,KAAK,CAACM,GAAG,CAAC,CAACC,UAAsB,EAAEC,KAAa,KAAK;IACpD,MAAMC,eAAe,GAAGA,CAAA,KAAM;MAC5B,IAAI,OAAOX,YAAY,KAAK,UAAU,EAAE;QACtCA,YAAY,CAAC;UAAEY,QAAQ,EAAEH;QAAW,CAAC,CAAC;MACxC;MAEA,MAAMI,YAAY,GAAGX,KAAK,CAACY,MAAM,CAC9BC,eAAe,IAAKA,eAAe,CAACC,IAAI,IAAIP,UAAU,CAACO,IAC1D,CAAC;MAEDb,QAAQ,CAACU,YAAY,CAAC;MACtBT,gBAAgB,CAACS,YAAY,CAAC;MAE9B,IAAI,OAAOZ,QAAQ,KAAK,UAAU,EAAE;QAClCA,QAAQ,CAAC;UAAEC,KAAK,EAAEW;QAAa,CAAC,CAAC;MACnC;IACF,CAAC;IAED,OACExB,KAAA,CAAAiB,aAAA,CAACf,kBAAkB;MACjB0B,GAAG,EAAEP,KAAM;MACXd,EAAE,EAAEA,EAAG;MACPa,UAAU,EAAEA,UAAW;MACvBS,QAAQ,EAAEP,eAAgB;MAC1BQ,gBAAgB,EAAErB,YAAa;MAC/BC,WAAW,EAAEA;IAAY,CAC1B,CAAC;EAEN,CAAC,CACC,CAAC;AAET;AAEA,eAAeN,cAAc"}
1
+ {"version":3,"file":"UploadFileList.js","names":["React","UploadContext","UploadFileListCell","useUpload","UploadFileList","context","useContext","id","fileListAriaLabel","deleteButton","download","loadingText","onFileDelete","onChange","files","setFiles","setInternalFiles","length","createElement","className","map","uploadFile","index","onDeleteHandler","fileItem","cleanedFiles","filter","fileListElement","file","key","onDelete","deleteButtonText"],"sources":["../../../../src/components/upload/UploadFileList.tsx"],"sourcesContent":["import React from 'react'\nimport { UploadFile } from './types'\nimport { UploadContext } from './UploadContext'\nimport UploadFileListCell from './UploadFileListCell'\nimport useUpload from './useUpload'\n\nfunction UploadFileList() {\n const context = React.useContext(UploadContext)\n\n const {\n id,\n fileListAriaLabel,\n deleteButton,\n download,\n loadingText,\n onFileDelete,\n onChange,\n } = context\n\n const { files, setFiles, setInternalFiles } = useUpload(id)\n\n if (files === null || files.length < 1) {\n return null\n }\n\n return (\n <ul className=\"dnb-upload__file-list\" aria-label={fileListAriaLabel}>\n {files.map((uploadFile: UploadFile, index: number) => {\n const onDeleteHandler = () => {\n if (typeof onFileDelete === 'function') {\n onFileDelete({ fileItem: uploadFile })\n }\n\n const cleanedFiles = files.filter(\n (fileListElement) => fileListElement.file != uploadFile.file\n )\n\n setFiles(cleanedFiles)\n setInternalFiles(cleanedFiles)\n\n if (typeof onChange === 'function') {\n onChange({ files: cleanedFiles })\n }\n }\n\n return (\n <UploadFileListCell\n key={index}\n id={id}\n uploadFile={uploadFile}\n onDelete={onDeleteHandler}\n deleteButtonText={deleteButton}\n loadingText={loadingText}\n download={download}\n />\n )\n })}\n </ul>\n )\n}\n\nexport default UploadFileList\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,OAAOC,kBAAkB,MAAM,sBAAsB;AACrD,OAAOC,SAAS,MAAM,aAAa;AAEnC,SAASC,cAAcA,CAAA,EAAG;EACxB,MAAMC,OAAO,GAAGL,KAAK,CAACM,UAAU,CAACL,aAAa,CAAC;EAE/C,MAAM;IACJM,EAAE;IACFC,iBAAiB;IACjBC,YAAY;IACZC,QAAQ;IACRC,WAAW;IACXC,YAAY;IACZC;EACF,CAAC,GAAGR,OAAO;EAEX,MAAM;IAAES,KAAK;IAAEC,QAAQ;IAAEC;EAAiB,CAAC,GAAGb,SAAS,CAACI,EAAE,CAAC;EAE3D,IAAIO,KAAK,KAAK,IAAI,IAAIA,KAAK,CAACG,MAAM,GAAG,CAAC,EAAE;IACtC,OAAO,IAAI;EACb;EAEA,OACEjB,KAAA,CAAAkB,aAAA;IAAIC,SAAS,EAAC,uBAAuB;IAAC,cAAYX;EAAkB,GACjEM,KAAK,CAACM,GAAG,CAAC,CAACC,UAAsB,EAAEC,KAAa,KAAK;IACpD,MAAMC,eAAe,GAAGA,CAAA,KAAM;MAC5B,IAAI,OAAOX,YAAY,KAAK,UAAU,EAAE;QACtCA,YAAY,CAAC;UAAEY,QAAQ,EAAEH;QAAW,CAAC,CAAC;MACxC;MAEA,MAAMI,YAAY,GAAGX,KAAK,CAACY,MAAM,CAC9BC,eAAe,IAAKA,eAAe,CAACC,IAAI,IAAIP,UAAU,CAACO,IAC1D,CAAC;MAEDb,QAAQ,CAACU,YAAY,CAAC;MACtBT,gBAAgB,CAACS,YAAY,CAAC;MAE9B,IAAI,OAAOZ,QAAQ,KAAK,UAAU,EAAE;QAClCA,QAAQ,CAAC;UAAEC,KAAK,EAAEW;QAAa,CAAC,CAAC;MACnC;IACF,CAAC;IAED,OACEzB,KAAA,CAAAkB,aAAA,CAAChB,kBAAkB;MACjB2B,GAAG,EAAEP,KAAM;MACXf,EAAE,EAAEA,EAAG;MACPc,UAAU,EAAEA,UAAW;MACvBS,QAAQ,EAAEP,eAAgB;MAC1BQ,gBAAgB,EAAEtB,YAAa;MAC/BE,WAAW,EAAEA,WAAY;MACzBD,QAAQ,EAAEA;IAAS,CACpB,CAAC;EAEN,CAAC,CACC,CAAC;AAET;AAEA,eAAeN,cAAc"}
@@ -1,20 +1,39 @@
1
1
  import React from 'react';
2
- import { UploadFile } from './types';
2
+ import { UploadFile, UploadFileNative } from './types';
3
+ export declare const fileExtensionImages: {
4
+ png: (props: any) => import("react/jsx-runtime").JSX.Element;
5
+ jpg: (props: any) => import("react/jsx-runtime").JSX.Element;
6
+ pdf: (props: any) => import("react/jsx-runtime").JSX.Element;
7
+ doc: (props: any) => import("react/jsx-runtime").JSX.Element;
8
+ docx: (props: any) => import("react/jsx-runtime").JSX.Element;
9
+ odt: (props: any) => import("react/jsx-runtime").JSX.Element;
10
+ xls: (props: any) => import("react/jsx-runtime").JSX.Element;
11
+ ppt: (props: any) => import("react/jsx-runtime").JSX.Element;
12
+ csv: (props: any) => import("react/jsx-runtime").JSX.Element;
13
+ txt: (props: any) => import("react/jsx-runtime").JSX.Element;
14
+ xml: (props: any) => import("react/jsx-runtime").JSX.Element;
15
+ file: (props: any) => import("react/jsx-runtime").JSX.Element;
16
+ };
3
17
  export type UploadFileListCellProps = {
4
18
  id: string;
5
19
  /**
6
20
  * Uploaded file
7
21
  */
8
- uploadFile: UploadFile;
22
+ uploadFile: UploadFile | UploadFileNative;
9
23
  /**
10
24
  * Calls onDelete when clicking the delete button
11
25
  */
12
26
  onDelete: () => void;
27
+ /**
28
+ * Causes the browser to treat all listed files as downloadable instead of opening them in a new browser tab or window.
29
+ * Default: false
30
+ */
31
+ download?: boolean;
13
32
  /**
14
33
  * Text
15
34
  */
16
35
  loadingText: React.ReactNode;
17
36
  deleteButtonText: React.ReactNode;
18
37
  };
19
- declare const UploadFileListCell: ({ id, uploadFile, onDelete, loadingText, deleteButtonText, }: UploadFileListCellProps) => import("react/jsx-runtime").JSX.Element;
38
+ declare const UploadFileListCell: ({ id, uploadFile, onDelete, loadingText, deleteButtonText, download, }: UploadFileListCellProps) => import("react/jsx-runtime").JSX.Element;
20
39
  export default UploadFileListCell;
@@ -3,16 +3,22 @@
3
3
  var _ProgressIndicator, _Icon;
4
4
  import React, { useRef } from 'react';
5
5
  import classnames from 'classnames';
6
+ import Anchor from '../../components/Anchor';
6
7
  import Button from '../button/Button';
7
8
  import Icon from '../../components/Icon';
8
9
  import FormStatus from '../../components/FormStatus';
9
10
  import ProgressIndicator from '../../components/progress-indicator';
10
- import { trash as TrashIcon, exclamation_medium as ExclamationIcon, file_pdf_medium as pdf, file_xls_medium as xls, file_ppt_medium as ppt, file_csv_medium as csv, file_txt_medium as txt, file_xml_medium as xml, file_medium as file } from '../../icons';
11
+ import { trash as TrashIcon, exclamation_medium as ExclamationIcon, file_png_medium as png, file_jpg_medium as jpg, file_word_medium as doc, file_pdf_medium as pdf, file_xls_medium as xls, file_ppt_medium as ppt, file_csv_medium as csv, file_txt_medium as txt, file_xml_medium as xml, file_medium as file } from '../../icons';
11
12
  import { getPreviousSibling, warn } from '../../shared/component-helper';
12
13
  import useUpload from './useUpload';
13
14
  import { getFileTypeFromExtension } from './UploadVerify';
14
- const images = {
15
+ export const fileExtensionImages = {
16
+ png,
17
+ jpg,
15
18
  pdf,
19
+ doc,
20
+ docx: doc,
21
+ odt: doc,
16
22
  xls,
17
23
  ppt,
18
24
  csv,
@@ -25,7 +31,8 @@ const UploadFileListCell = ({
25
31
  uploadFile,
26
32
  onDelete,
27
33
  loadingText,
28
- deleteButtonText
34
+ deleteButtonText,
35
+ download
29
36
  }) => {
30
37
  var _div, _FormStatus;
31
38
  const {
@@ -74,13 +81,13 @@ const UploadFileListCell = ({
74
81
  let iconFileType = fileType;
75
82
  if (!iconFileType) {
76
83
  const mimeParts = file.type.split('/');
77
- iconFileType = images[mimeParts[0]] || images[mimeParts[1]];
84
+ iconFileType = fileExtensionImages[mimeParts[0]] || fileExtensionImages[mimeParts[1]];
78
85
  }
79
- if (!Object.prototype.hasOwnProperty.call(images, iconFileType)) {
86
+ if (!Object.prototype.hasOwnProperty.call(fileExtensionImages, iconFileType)) {
80
87
  iconFileType = 'file';
81
88
  }
82
89
  return React.createElement(Icon, {
83
- icon: images[iconFileType]
90
+ icon: fileExtensionImages[iconFileType]
84
91
  });
85
92
  }
86
93
  function getTitle() {
@@ -88,10 +95,11 @@ const UploadFileListCell = ({
88
95
  className: "dnb-upload__file-cell__text-container dnb-upload__file-cell__text-container--loading"
89
96
  }, loadingText)) : React.createElement("div", {
90
97
  className: "dnb-upload__file-cell__text-container"
91
- }, React.createElement("a", {
98
+ }, React.createElement(Anchor, {
92
99
  target: "_blank",
93
100
  href: imageUrl,
94
- className: "dnb-anchor dnb-upload__file-cell__title",
101
+ download: download ? file.name : null,
102
+ className: "dnb-anchor--no-launch-icon dnb-upload__file-cell__title",
95
103
  rel: "noopener noreferrer"
96
104
  }, file.name));
97
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UploadFileListCell.js","names":["React","useRef","classnames","Button","Icon","FormStatus","ProgressIndicator","trash","TrashIcon","exclamation_medium","ExclamationIcon","file_pdf_medium","pdf","file_xls_medium","xls","file_ppt_medium","ppt","file_csv_medium","csv","file_txt_medium","txt","file_xml_medium","xml","file_medium","file","getPreviousSibling","warn","useUpload","getFileTypeFromExtension","images","UploadFileListCell","id","uploadFile","onDelete","loadingText","deleteButtonText","_div","_FormStatus","errorMessage","isLoading","hasWarning","fileType","imageUrl","URL","createObjectURL","cellRef","exists","useExistsHighlight","handleDisappearFocus","cellElement","current","focusElement","querySelector","focus","e","onDeleteHandler","createElement","className","ref","getIcon","getTitle","icon","variant","onClick","icon_position","getWarning","_ProgressIndicator","_Icon","iconFileType","mimeParts","type","split","Object","prototype","hasOwnProperty","call","target","href","rel","name","top","text","stretch","internalFiles","updateExists","useState","timerRef","clearTimers","clearTimeout","useEffect","some","f","size","setTimeout"],"sources":["../../../../src/components/upload/UploadFileListCell.tsx"],"sourcesContent":["import React, { useRef } from 'react'\nimport classnames from 'classnames'\n\n// Components\nimport Button from '../button/Button'\nimport Icon from '../../components/Icon'\nimport FormStatus from '../../components/FormStatus'\nimport ProgressIndicator from '../../components/progress-indicator'\n\n// Icons\nimport {\n trash as TrashIcon,\n exclamation_medium as ExclamationIcon,\n file_pdf_medium as pdf,\n file_xls_medium as xls,\n file_ppt_medium as ppt,\n file_csv_medium as csv,\n file_txt_medium as txt,\n file_xml_medium as xml,\n file_medium as file,\n} from '../../icons'\nimport { UploadFile } from './types'\n\n// Shared\nimport { getPreviousSibling, warn } from '../../shared/component-helper'\nimport useUpload from './useUpload'\nimport { getFileTypeFromExtension } from './UploadVerify'\n\nconst images = {\n pdf,\n xls,\n ppt,\n csv,\n txt,\n xml,\n file,\n}\n\nexport type UploadFileListCellProps = {\n id: string\n\n /**\n * Uploaded file\n */\n uploadFile: UploadFile\n\n /**\n * Calls onDelete when clicking the delete button\n */\n onDelete: () => void\n\n /**\n * Text\n */\n loadingText: React.ReactNode\n deleteButtonText: React.ReactNode\n}\n\nconst UploadFileListCell = ({\n id,\n uploadFile,\n onDelete,\n loadingText,\n deleteButtonText,\n}: UploadFileListCellProps) => {\n const { file, errorMessage, isLoading } = uploadFile\n const hasWarning = errorMessage != null\n\n const fileType = getFileTypeFromExtension(file)\n\n const imageUrl = URL.createObjectURL(file)\n const cellRef = useRef<HTMLLIElement>()\n const exists = useExistsHighlight(id, file)\n\n const handleDisappearFocus = () => {\n try {\n const cellElement = cellRef.current\n const focusElement = getPreviousSibling(\n '.dnb-upload',\n cellElement\n ).querySelector(\n '.dnb-upload__file-input-button'\n ) as HTMLButtonElement\n focusElement.focus()\n } catch (e) {\n warn(e)\n }\n }\n\n const onDeleteHandler = () => {\n handleDisappearFocus()\n\n onDelete()\n }\n\n return (\n <li\n className={classnames(\n 'dnb-upload__file-cell',\n hasWarning && 'dnb-upload__file-cell--warning',\n exists && 'dnb-upload__file-cell--highlight'\n )}\n ref={cellRef}\n >\n <div className=\"dnb-upload__file-cell__content\">\n <div className=\"dnb-upload__file-cell__content__left\">\n {getIcon()}\n {getTitle()}\n </div>\n <div>\n <Button\n icon={TrashIcon}\n variant=\"tertiary\"\n onClick={onDeleteHandler}\n icon_position=\"left\"\n >\n {deleteButtonText}\n </Button>\n </div>\n </div>\n\n {getWarning()}\n </li>\n )\n\n function getIcon() {\n if (isLoading) {\n return <ProgressIndicator />\n }\n\n if (hasWarning) return <Icon icon={ExclamationIcon} />\n\n let iconFileType = fileType\n\n if (!iconFileType) {\n const mimeParts = file.type.split('/')\n iconFileType = images[mimeParts[0]] || images[mimeParts[1]]\n }\n\n if (!Object.prototype.hasOwnProperty.call(images, iconFileType)) {\n iconFileType = 'file'\n }\n\n return <Icon icon={images[iconFileType]} />\n }\n\n function getTitle() {\n return isLoading ? (\n <div\n className={classnames(\n 'dnb-upload__file-cell__text-container',\n 'dnb-upload__file-cell__text-container--loading'\n )}\n >\n {loadingText}\n </div>\n ) : (\n <div className=\"dnb-upload__file-cell__text-container\">\n <a\n target=\"_blank\"\n href={imageUrl}\n className={classnames(\n 'dnb-anchor',\n 'dnb-upload__file-cell__title'\n )}\n rel=\"noopener noreferrer\"\n >\n {file.name}\n </a>\n </div>\n )\n }\n\n function getWarning() {\n return hasWarning ? (\n <FormStatus top=\"small\" text={errorMessage} stretch />\n ) : null\n }\n}\n\nexport default UploadFileListCell\n\nfunction useExistsHighlight(id: string, file: File) {\n const { internalFiles } = useUpload(id)\n const [exists, updateExists] = React.useState(false)\n const timerRef = React.useRef<NodeJS.Timer>()\n\n const clearTimers = () => {\n clearTimeout(timerRef.current)\n }\n\n React.useEffect(() => {\n const exists = internalFiles.some(({ exists, file: f }) => {\n return exists && f.name === file.name && f.size === file.size\n })\n\n if (exists) {\n updateExists(true)\n clearTimers()\n timerRef.current = setTimeout(() => updateExists(false), 1500) // transition-duration in CSS\n }\n\n return clearTimers\n }, [file, internalFiles])\n\n return exists\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"UploadFileListCell.js","names":["React","useRef","classnames","Anchor","Button","Icon","FormStatus","ProgressIndicator","trash","TrashIcon","exclamation_medium","ExclamationIcon","file_png_medium","png","file_jpg_medium","jpg","file_word_medium","doc","file_pdf_medium","pdf","file_xls_medium","xls","file_ppt_medium","ppt","file_csv_medium","csv","file_txt_medium","txt","file_xml_medium","xml","file_medium","file","getPreviousSibling","warn","useUpload","getFileTypeFromExtension","fileExtensionImages","docx","odt","UploadFileListCell","id","uploadFile","onDelete","loadingText","deleteButtonText","download","_div","_FormStatus","errorMessage","isLoading","hasWarning","fileType","imageUrl","URL","createObjectURL","cellRef","exists","useExistsHighlight","handleDisappearFocus","cellElement","current","focusElement","querySelector","focus","e","onDeleteHandler","createElement","className","ref","getIcon","getTitle","icon","variant","onClick","icon_position","getWarning","_ProgressIndicator","_Icon","iconFileType","mimeParts","type","split","Object","prototype","hasOwnProperty","call","target","href","name","rel","top","text","stretch","internalFiles","updateExists","useState","timerRef","clearTimers","clearTimeout","useEffect","some","f","size","setTimeout"],"sources":["../../../../src/components/upload/UploadFileListCell.tsx"],"sourcesContent":["import React, { useRef } from 'react'\nimport classnames from 'classnames'\n\n// Components\nimport Anchor from '../../components/Anchor'\nimport Button from '../button/Button'\nimport Icon from '../../components/Icon'\nimport FormStatus from '../../components/FormStatus'\nimport ProgressIndicator from '../../components/progress-indicator'\n\n// Icons\nimport {\n trash as TrashIcon,\n exclamation_medium as ExclamationIcon,\n file_png_medium as png,\n file_jpg_medium as jpg,\n file_word_medium as doc,\n file_pdf_medium as pdf,\n file_xls_medium as xls,\n file_ppt_medium as ppt,\n file_csv_medium as csv,\n file_txt_medium as txt,\n file_xml_medium as xml,\n file_medium as file,\n} from '../../icons'\nimport { UploadFile, UploadFileNative } from './types'\n\n// Shared\nimport { getPreviousSibling, warn } from '../../shared/component-helper'\nimport useUpload from './useUpload'\nimport { getFileTypeFromExtension } from './UploadVerify'\n\n// Will be deprecated - and then default to only showing the file icon,\n// and not file icon per file extension type\nexport const fileExtensionImages = {\n png,\n jpg,\n pdf,\n doc,\n docx: doc,\n odt: doc,\n xls,\n ppt,\n csv,\n txt,\n xml,\n file,\n}\n\nexport type UploadFileListCellProps = {\n id: string\n\n /**\n * Uploaded file\n */\n uploadFile: UploadFile | UploadFileNative\n\n /**\n * Calls onDelete when clicking the delete button\n */\n onDelete: () => void\n\n /**\n * Causes the browser to treat all listed files as downloadable instead of opening them in a new browser tab or window.\n * Default: false\n */\n download?: boolean\n\n /**\n * Text\n */\n loadingText: React.ReactNode\n deleteButtonText: React.ReactNode\n}\n\nconst UploadFileListCell = ({\n id,\n uploadFile,\n onDelete,\n loadingText,\n deleteButtonText,\n download,\n}: UploadFileListCellProps) => {\n const { file, errorMessage, isLoading } = uploadFile\n const hasWarning = errorMessage != null\n\n const fileType = getFileTypeFromExtension(file)\n\n const imageUrl = URL.createObjectURL(file)\n const cellRef = useRef<HTMLLIElement>()\n const exists = useExistsHighlight(id, file)\n\n const handleDisappearFocus = () => {\n try {\n const cellElement = cellRef.current\n const focusElement = getPreviousSibling(\n '.dnb-upload',\n cellElement\n ).querySelector(\n '.dnb-upload__file-input-button'\n ) as HTMLButtonElement\n focusElement.focus()\n } catch (e) {\n warn(e)\n }\n }\n\n const onDeleteHandler = () => {\n handleDisappearFocus()\n\n onDelete()\n }\n\n return (\n <li\n className={classnames(\n 'dnb-upload__file-cell',\n hasWarning && 'dnb-upload__file-cell--warning',\n exists && 'dnb-upload__file-cell--highlight'\n )}\n ref={cellRef}\n >\n <div className=\"dnb-upload__file-cell__content\">\n <div className=\"dnb-upload__file-cell__content__left\">\n {getIcon()}\n {getTitle()}\n </div>\n <div>\n <Button\n icon={TrashIcon}\n variant=\"tertiary\"\n onClick={onDeleteHandler}\n icon_position=\"left\"\n >\n {deleteButtonText}\n </Button>\n </div>\n </div>\n\n {getWarning()}\n </li>\n )\n\n function getIcon() {\n if (isLoading) {\n return <ProgressIndicator />\n }\n\n if (hasWarning) return <Icon icon={ExclamationIcon} />\n\n let iconFileType = fileType\n\n if (!iconFileType) {\n const mimeParts = file.type.split('/')\n iconFileType =\n fileExtensionImages[mimeParts[0]] ||\n fileExtensionImages[mimeParts[1]]\n }\n\n if (\n !Object.prototype.hasOwnProperty.call(\n fileExtensionImages,\n iconFileType\n )\n ) {\n iconFileType = 'file'\n }\n\n return <Icon icon={fileExtensionImages[iconFileType]} />\n }\n\n function getTitle() {\n return isLoading ? (\n <div\n className={classnames(\n 'dnb-upload__file-cell__text-container',\n 'dnb-upload__file-cell__text-container--loading'\n )}\n >\n {loadingText}\n </div>\n ) : (\n <div className=\"dnb-upload__file-cell__text-container\">\n <Anchor\n target=\"_blank\"\n href={imageUrl}\n download={download ? file.name : null}\n className={classnames(\n 'dnb-anchor--no-launch-icon',\n 'dnb-upload__file-cell__title'\n )}\n rel=\"noopener noreferrer\"\n >\n {file.name}\n </Anchor>\n </div>\n )\n }\n\n function getWarning() {\n return hasWarning ? (\n <FormStatus top=\"small\" text={errorMessage} stretch />\n ) : null\n }\n}\n\nexport default UploadFileListCell\n\nfunction useExistsHighlight(id: string, file: File) {\n const { internalFiles } = useUpload(id)\n const [exists, updateExists] = React.useState(false)\n const timerRef = React.useRef<NodeJS.Timer>()\n\n const clearTimers = () => {\n clearTimeout(timerRef.current)\n }\n\n React.useEffect(() => {\n const exists = internalFiles.some(({ exists, file: f }) => {\n return exists && f.name === file.name && f.size === file.size\n })\n\n if (exists) {\n updateExists(true)\n clearTimers()\n timerRef.current = setTimeout(() => updateExists(false), 1500) // transition-duration in CSS\n }\n\n return clearTimers\n }, [file, internalFiles])\n\n return exists\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { UploadFile, UploadContextProps, UploadAcceptedFileTypes, UploadAcceptedFileTypesWithFileMaxSize } from './types';
1
+ import { UploadFile, UploadContextProps, UploadAcceptedFileTypes, UploadAcceptedFileTypesWithFileMaxSize, UploadFileNative } from './types';
2
2
  export declare const BYTES_IN_A_MEGA_BYTE = 1048576;
3
- export declare function verifyFiles(files: UploadFile[], context: Pick<UploadContextProps, 'errorUnsupportedFile' | 'errorLargeFile' | 'acceptedFileTypes' | 'fileMaxSize'>): UploadFile[];
3
+ export declare function verifyFiles(files: Array<UploadFile | UploadFileNative>, context: Pick<UploadContextProps, 'errorUnsupportedFile' | 'errorLargeFile' | 'acceptedFileTypes' | 'fileMaxSize'>): (UploadFile | UploadFileNative)[];
4
4
  export declare function getFileTypeFromExtension(file: File): string;
5
5
  export declare function getAcceptedFileTypes(acceptedFileTypes: UploadAcceptedFileTypes | UploadAcceptedFileTypesWithFileMaxSize): string;
6
6
  export declare function hasPreferredMimeType(acceptedFileTypes: UploadAcceptedFileTypes, file: File): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"UploadVerify.js","names":["format","BYTES_IN_A_MEGA_BYTE","verifyFiles","files","context","fileMaxSize","acceptedFileTypes","errorLargeFile","errorUnsupportedFile","getFileType","file","listOfAcceptedFilesTypes","hasPreferredMimeType","type","getFileTypeFromExtension","handleSize","validateFileSize","fileSize","maxFileSize","String","replace","toString","isArrayOfStrings","length","size","isArrayOfObjects","fileType","getAcceptedFileTypesAsListOfStrings","acceptedFileTypeObj","find","item","toLowerCase","undefined","handleType","foundType","extendWithAbbreviation","some","includes","cleanedFiles","map","errorMessage","name","getAcceptedFileTypes","join","split","obj","arr","Array","isArray","every","i","abbreviations","jpg","list","Object","entries","forEach","abbr","t","push"],"sources":["../../../../src/components/upload/UploadVerify.tsx"],"sourcesContent":["import { format } from '../number-format/NumberUtils'\nimport {\n UploadFile,\n UploadContextProps,\n UploadAcceptedFileTypes,\n UploadAcceptedFileTypesWithFileMaxSize,\n} from './types'\n\nexport const BYTES_IN_A_MEGA_BYTE = 1048576\n\nexport function verifyFiles(\n files: UploadFile[],\n context: Pick<\n UploadContextProps,\n | 'errorUnsupportedFile'\n | 'errorLargeFile'\n | 'acceptedFileTypes'\n | 'fileMaxSize'\n >\n) {\n const {\n fileMaxSize,\n acceptedFileTypes,\n errorLargeFile,\n errorUnsupportedFile,\n } = context\n\n const getFileType = (\n file: File,\n listOfAcceptedFilesTypes: UploadAcceptedFileTypes\n ) => {\n return hasPreferredMimeType(listOfAcceptedFilesTypes, file)\n ? file.type\n : getFileTypeFromExtension(file) || file.type\n }\n\n const handleSize = (file: File) => {\n const validateFileSize = (\n fileSize: number,\n maxFileSize: number | false\n ) => {\n if (\n maxFileSize &&\n // Converts from b (binary) to MB (decimal)\n fileSize / BYTES_IN_A_MEGA_BYTE > maxFileSize\n ) {\n return String(errorLargeFile).replace(\n '%size',\n format(maxFileSize).toString()\n )\n }\n return null\n }\n\n if (\n isArrayOfStrings(acceptedFileTypes) ||\n acceptedFileTypes.length === 0 ||\n !acceptedFileTypes\n ) {\n return validateFileSize(file.size, fileMaxSize)\n } else if (isArrayOfObjects(acceptedFileTypes)) {\n const fileType = getFileType(\n file,\n getAcceptedFileTypesAsListOfStrings(acceptedFileTypes)\n )\n\n const acceptedFileTypeObj = (\n acceptedFileTypes as UploadAcceptedFileTypesWithFileMaxSize\n ).find((item) => {\n return item.fileType.toLowerCase() === fileType.toLowerCase()\n })\n\n return validateFileSize(\n file.size,\n acceptedFileTypeObj.fileMaxSize !== undefined\n ? acceptedFileTypeObj.fileMaxSize\n : fileMaxSize\n )\n }\n return null\n }\n\n const handleType = (file: File) => {\n if (acceptedFileTypes.length === 0) {\n return false\n }\n\n const listOfAcceptedFilesTypes =\n getAcceptedFileTypesAsListOfStrings(acceptedFileTypes)\n const fileType = getFileType(file, listOfAcceptedFilesTypes)\n const foundType = extendWithAbbreviation(\n listOfAcceptedFilesTypes\n ).some((type) => {\n /**\n * \"file.type\" can be e.g. \"image/png\"\n */\n return fileType.toLowerCase().includes(type.toLowerCase())\n })\n return !foundType ? errorUnsupportedFile : null\n }\n\n const cleanedFiles = files.map((item) => {\n const { file } = item\n\n const errorMessage = handleSize(file) || handleType(file)\n\n if (errorMessage) {\n item.errorMessage = errorMessage\n }\n\n return item\n })\n\n return cleanedFiles\n}\n\nexport function getFileTypeFromExtension(file: File) {\n return (\n (file.name.includes('.') && file.name.replace(/.*\\.([^.]+)$/, '$1')) ||\n null\n )\n}\n\nexport function getAcceptedFileTypes(\n acceptedFileTypes:\n | UploadAcceptedFileTypes\n | UploadAcceptedFileTypesWithFileMaxSize\n) {\n return extendWithAbbreviation(\n getAcceptedFileTypesAsListOfStrings(acceptedFileTypes)\n )\n .map((type) => (type.includes('/') ? type : `.${type}`))\n .join(',')\n}\n\nexport function hasPreferredMimeType(\n acceptedFileTypes: UploadAcceptedFileTypes,\n file: File\n) {\n return (\n file.type.split('/')[1] &&\n (!acceptedFileTypes?.length ||\n acceptedFileTypes?.some(\n (type) => type.toLowerCase() === file.type.toLowerCase()\n ))\n )\n}\n\nfunction getAcceptedFileTypesAsListOfStrings(\n acceptedFileTypes:\n | UploadAcceptedFileTypes\n | UploadAcceptedFileTypesWithFileMaxSize\n) {\n return isArrayOfStrings(acceptedFileTypes)\n ? (acceptedFileTypes as UploadAcceptedFileTypes)\n : (acceptedFileTypes as UploadAcceptedFileTypesWithFileMaxSize).map(\n (obj) => obj.fileType\n )\n}\n\nexport function isArrayOfStrings(arr) {\n return (\n Array.isArray(arr) &&\n arr.length > 0 &&\n arr.every((i) => typeof i === 'string')\n )\n}\n\nexport function isArrayOfObjects(arr) {\n return (\n Array.isArray(arr) &&\n arr.length > 0 &&\n arr.every((i) => typeof i === 'object')\n )\n}\n\nexport function extendWithAbbreviation(\n acceptedFileTypes: UploadAcceptedFileTypes,\n abbreviations = { jpg: 'jpeg' }\n) {\n const list = [...acceptedFileTypes]\n\n Object.entries(abbreviations).forEach(([type, abbr]) => {\n if (list.some((t) => t === type) && !list.some((t) => t === abbr)) {\n list.push(abbr)\n }\n })\n\n return list\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"UploadVerify.js","names":["format","BYTES_IN_A_MEGA_BYTE","verifyFiles","files","context","fileMaxSize","acceptedFileTypes","errorLargeFile","errorUnsupportedFile","getFileType","file","listOfAcceptedFilesTypes","hasPreferredMimeType","type","getFileTypeFromExtension","handleSize","validateFileSize","fileSize","maxFileSize","String","replace","toString","isArrayOfStrings","length","size","isArrayOfObjects","fileType","getAcceptedFileTypesAsListOfStrings","acceptedFileTypeObj","find","item","toLowerCase","undefined","handleType","foundType","extendWithAbbreviation","some","includes","cleanedFiles","map","errorMessage","name","getAcceptedFileTypes","join","split","obj","arr","Array","isArray","every","i","abbreviations","jpg","list","Object","entries","forEach","abbr","t","push"],"sources":["../../../../src/components/upload/UploadVerify.tsx"],"sourcesContent":["import { format } from '../number-format/NumberUtils'\nimport {\n UploadFile,\n UploadContextProps,\n UploadAcceptedFileTypes,\n UploadAcceptedFileTypesWithFileMaxSize,\n UploadFileNative,\n} from './types'\n\nexport const BYTES_IN_A_MEGA_BYTE = 1048576\n\nexport function verifyFiles(\n files: Array<UploadFile | UploadFileNative>,\n context: Pick<\n UploadContextProps,\n | 'errorUnsupportedFile'\n | 'errorLargeFile'\n | 'acceptedFileTypes'\n | 'fileMaxSize'\n >\n) {\n const {\n fileMaxSize,\n acceptedFileTypes,\n errorLargeFile,\n errorUnsupportedFile,\n } = context\n\n const getFileType = (\n file: File,\n listOfAcceptedFilesTypes: UploadAcceptedFileTypes\n ) => {\n return hasPreferredMimeType(listOfAcceptedFilesTypes, file)\n ? file.type\n : getFileTypeFromExtension(file) || file.type\n }\n\n const handleSize = (file: File) => {\n const validateFileSize = (\n fileSize: number,\n maxFileSize: number | false\n ) => {\n if (\n maxFileSize &&\n // Converts from b (binary) to MB (decimal)\n fileSize / BYTES_IN_A_MEGA_BYTE > maxFileSize\n ) {\n return String(errorLargeFile).replace(\n '%size',\n format(maxFileSize).toString()\n )\n }\n return null\n }\n\n if (\n isArrayOfStrings(acceptedFileTypes) ||\n acceptedFileTypes.length === 0 ||\n !acceptedFileTypes\n ) {\n return validateFileSize(file.size, fileMaxSize)\n } else if (isArrayOfObjects(acceptedFileTypes)) {\n const fileType = getFileType(\n file,\n getAcceptedFileTypesAsListOfStrings(acceptedFileTypes)\n )\n\n const acceptedFileTypeObj = (\n acceptedFileTypes as UploadAcceptedFileTypesWithFileMaxSize\n ).find((item) => {\n return item.fileType.toLowerCase() === fileType.toLowerCase()\n })\n\n return validateFileSize(\n file.size,\n acceptedFileTypeObj.fileMaxSize !== undefined\n ? acceptedFileTypeObj.fileMaxSize\n : fileMaxSize\n )\n }\n return null\n }\n\n const handleType = (file: File) => {\n if (acceptedFileTypes.length === 0) {\n return false\n }\n\n const listOfAcceptedFilesTypes =\n getAcceptedFileTypesAsListOfStrings(acceptedFileTypes)\n const fileType = getFileType(file, listOfAcceptedFilesTypes)\n const foundType = extendWithAbbreviation(\n listOfAcceptedFilesTypes\n ).some((type) => {\n /**\n * \"file.type\" can be e.g. \"image/png\"\n */\n return fileType.toLowerCase().includes(type.toLowerCase())\n })\n return !foundType ? errorUnsupportedFile : null\n }\n\n const cleanedFiles = files.map((item) => {\n const { file } = item\n\n const errorMessage = handleSize(file) || handleType(file)\n\n if (errorMessage) {\n item.errorMessage = errorMessage\n }\n\n return item\n })\n\n return cleanedFiles\n}\n\nexport function getFileTypeFromExtension(file: File) {\n return (\n (file.name.includes('.') && file.name.replace(/.*\\.([^.]+)$/, '$1')) ||\n null\n )\n}\n\nexport function getAcceptedFileTypes(\n acceptedFileTypes:\n | UploadAcceptedFileTypes\n | UploadAcceptedFileTypesWithFileMaxSize\n) {\n return extendWithAbbreviation(\n getAcceptedFileTypesAsListOfStrings(acceptedFileTypes)\n )\n .map((type) => (type.includes('/') ? type : `.${type}`))\n .join(',')\n}\n\nexport function hasPreferredMimeType(\n acceptedFileTypes: UploadAcceptedFileTypes,\n file: File\n) {\n return (\n file.type.split('/')[1] &&\n (!acceptedFileTypes?.length ||\n acceptedFileTypes?.some(\n (type) => type.toLowerCase() === file.type.toLowerCase()\n ))\n )\n}\n\nfunction getAcceptedFileTypesAsListOfStrings(\n acceptedFileTypes:\n | UploadAcceptedFileTypes\n | UploadAcceptedFileTypesWithFileMaxSize\n) {\n return isArrayOfStrings(acceptedFileTypes)\n ? (acceptedFileTypes as UploadAcceptedFileTypes)\n : (acceptedFileTypes as UploadAcceptedFileTypesWithFileMaxSize).map(\n (obj) => obj.fileType\n )\n}\n\nexport function isArrayOfStrings(arr) {\n return (\n Array.isArray(arr) &&\n arr.length > 0 &&\n arr.every((i) => typeof i === 'string')\n )\n}\n\nexport function isArrayOfObjects(arr) {\n return (\n Array.isArray(arr) &&\n arr.length > 0 &&\n arr.every((i) => typeof i === 'object')\n )\n}\n\nexport function extendWithAbbreviation(\n acceptedFileTypes: UploadAcceptedFileTypes,\n abbreviations = { jpg: 'jpeg' }\n) {\n const list = [...acceptedFileTypes]\n\n Object.entries(abbreviations).forEach(([type, abbr]) => {\n if (list.some((t) => t === type) && !list.some((t) => t === abbr)) {\n list.push(abbr)\n }\n })\n\n return list\n}\n"],"mappings":"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"}
@@ -35,7 +35,7 @@ export type UploadProps = {
35
35
  * will be called on `files` changes made by the user. Access the files with `{ files }`.
36
36
  */
37
37
  onChange?: ({ files }: {
38
- files: UploadFile[];
38
+ files: Array<UploadFile>;
39
39
  }) => void;
40
40
  /**
41
41
  * will be called once a file gets deleted by the user. Access the deleted file with `{ fileItem }`.
@@ -43,6 +43,11 @@ export type UploadProps = {
43
43
  onFileDelete?: ({ fileItem }: {
44
44
  fileItem: UploadFile;
45
45
  }) => void;
46
+ /**
47
+ * Causes the browser to treat all listed files as downloadable instead of opening them in a new browser tab or window.
48
+ * Default: false
49
+ */
50
+ download?: boolean;
46
51
  /**
47
52
  * Custom text properties
48
53
  */
@@ -65,12 +70,13 @@ export type UploadProps = {
65
70
  export type UploadAllProps = UploadProps & SpacingProps & LocaleProps & Omit<React.HTMLProps<HTMLElement>, 'onChange' | 'title'>;
66
71
  export type UploadContextProps = {
67
72
  id?: string;
68
- onInputUpload: (files: UploadFile[]) => void;
73
+ onInputUpload: (files: Array<UploadFileNative>) => void;
69
74
  } & Partial<UploadProps>;
70
75
  export type UploadFile = {
71
76
  file: File;
72
- errorMessage?: React.ReactNode;
77
+ id: string;
78
+ exists: boolean;
73
79
  isLoading?: boolean;
74
- exists?: boolean;
75
- id?: string;
80
+ errorMessage?: React.ReactNode;
76
81
  };
82
+ export type UploadFileNative = Omit<UploadFile, 'id' | 'exists'> & Partial<Pick<UploadFile, 'id' | 'exists'>>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../src/components/upload/types.ts"],"sourcesContent":["import React from 'react'\nimport type { SkeletonShow } from '../skeleton/Skeleton'\nimport type { LocaleProps, SpacingProps } from '../../shared/types'\n\nexport type UploadAcceptedFileTypes = string[]\n\nexport type UploadAcceptedFileTypesWithFileMaxSize =\n UploadAcceptedFileTypeObject[]\n\nexport type UploadAcceptedFileTypeObject = {\n fileType: string\n fileMaxSize?: number | false\n}\n\nexport type UploadProps = {\n /**\n * unique id used with the useUpload hook to manage the files\n */\n id: string\n\n /**\n * list of accepted file types.\n */\n acceptedFileTypes:\n | UploadAcceptedFileTypes\n | UploadAcceptedFileTypesWithFileMaxSize\n\n /**\n * Skeleton should be applied when loading content\n * Default: null\n */\n skeleton?: SkeletonShow\n\n /**\n * Defines the amount of files the user can select and upload\n * Default: 100\n */\n filesAmountLimit?: number\n\n /**\n * Defines the max file size of each file in MB. Use either `0` or `false` to disable.\n * Default: 5 MB\n */\n fileMaxSize?: number | false\n\n /**\n * will be called on `files` changes made by the user. Access the files with `{ files }`.\n */\n onChange?: ({ files }: { files: UploadFile[] }) => void\n\n /**\n * will be called once a file gets deleted by the user. Access the deleted file with `{ fileItem }`.\n */\n onFileDelete?: ({ fileItem }: { fileItem: UploadFile }) => void\n\n /**\n * Custom text properties\n */\n title?: React.ReactNode\n text?: React.ReactNode\n fileTypeTableCaption?: React.ReactNode\n fileTypeDescription?: React.ReactNode\n fileSizeDescription?: React.ReactNode\n fileAmountDescription?: React.ReactNode\n fileSizeContent?: React.ReactNode\n buttonText?: React.ReactNode\n errorLargeFile?: React.ReactNode\n errorUnsupportedFile?: React.ReactNode\n errorAmountLimit?: React.ReactNode\n loadingText?: React.ReactNode\n deleteButton?: React.ReactNode\n fileListAriaLabel?: string\n children?: React.ReactNode\n}\n\nexport type UploadAllProps = UploadProps &\n SpacingProps &\n LocaleProps &\n Omit<React.HTMLProps<HTMLElement>, 'onChange' | 'title'>\n\nexport type UploadContextProps = {\n id?: string\n onInputUpload: (files: UploadFile[]) => void\n} & Partial<UploadProps>\n\nexport type UploadFile = {\n file: File\n errorMessage?: React.ReactNode\n isLoading?: boolean\n exists?: boolean\n id?: string\n}\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../src/components/upload/types.ts"],"sourcesContent":["import React from 'react'\nimport type { SkeletonShow } from '../skeleton/Skeleton'\nimport type { LocaleProps, SpacingProps } from '../../shared/types'\n\nexport type UploadAcceptedFileTypes = string[]\n\nexport type UploadAcceptedFileTypesWithFileMaxSize =\n UploadAcceptedFileTypeObject[]\n\nexport type UploadAcceptedFileTypeObject = {\n fileType: string\n fileMaxSize?: number | false\n}\n\nexport type UploadProps = {\n /**\n * unique id used with the useUpload hook to manage the files\n */\n id: string\n\n /**\n * list of accepted file types.\n */\n acceptedFileTypes:\n | UploadAcceptedFileTypes\n | UploadAcceptedFileTypesWithFileMaxSize\n\n /**\n * Skeleton should be applied when loading content\n * Default: null\n */\n skeleton?: SkeletonShow\n\n /**\n * Defines the amount of files the user can select and upload\n * Default: 100\n */\n filesAmountLimit?: number\n\n /**\n * Defines the max file size of each file in MB. Use either `0` or `false` to disable.\n * Default: 5 MB\n */\n fileMaxSize?: number | false\n\n /**\n * will be called on `files` changes made by the user. Access the files with `{ files }`.\n */\n onChange?: ({ files }: { files: Array<UploadFile> }) => void\n\n /**\n * will be called once a file gets deleted by the user. Access the deleted file with `{ fileItem }`.\n */\n onFileDelete?: ({ fileItem }: { fileItem: UploadFile }) => void\n\n /**\n * Causes the browser to treat all listed files as downloadable instead of opening them in a new browser tab or window.\n * Default: false\n */\n download?: boolean\n\n /**\n * Custom text properties\n */\n title?: React.ReactNode\n text?: React.ReactNode\n fileTypeTableCaption?: React.ReactNode\n fileTypeDescription?: React.ReactNode\n fileSizeDescription?: React.ReactNode\n fileAmountDescription?: React.ReactNode\n fileSizeContent?: React.ReactNode\n buttonText?: React.ReactNode\n errorLargeFile?: React.ReactNode\n errorUnsupportedFile?: React.ReactNode\n errorAmountLimit?: React.ReactNode\n loadingText?: React.ReactNode\n deleteButton?: React.ReactNode\n fileListAriaLabel?: string\n children?: React.ReactNode\n}\n\nexport type UploadAllProps = UploadProps &\n SpacingProps &\n LocaleProps &\n Omit<React.HTMLProps<HTMLElement>, 'onChange' | 'title'>\n\nexport type UploadContextProps = {\n id?: string\n onInputUpload: (files: Array<UploadFileNative>) => void\n} & Partial<UploadProps>\n\nexport type UploadFile = {\n file: File\n id: string\n exists: boolean\n isLoading?: boolean\n errorMessage?: React.ReactNode\n}\n\nexport type UploadFileNative = Omit<UploadFile, 'id' | 'exists'> &\n Partial<Pick<UploadFile, 'id' | 'exists'>>\n"],"mappings":""}
@@ -1,10 +1,10 @@
1
- import type { UploadFile } from './types';
1
+ import type { UploadFile, UploadFileNative } from './types';
2
2
  export type useUploadReturn = {
3
- files: UploadFile[];
4
- setFiles: (files: UploadFile[]) => void;
5
- internalFiles: UploadFile[];
6
- setInternalFiles: (files: UploadFile[]) => void;
7
- getExistingFile: (file: File, fileItems?: UploadFile[]) => UploadFile;
3
+ files: Array<UploadFile>;
4
+ setFiles: (files: Array<UploadFile | UploadFileNative>) => void;
5
+ internalFiles: Array<UploadFile>;
6
+ setInternalFiles: (files: Array<UploadFile>) => void;
7
+ getExistingFile: (file: File, fileItems?: Array<UploadFile>) => UploadFile;
8
8
  };
9
9
  /**
10
10
  * Use together with Upload with the same id to manage the files from outside the component.
@@ -1 +1 @@
1
- {"version":3,"file":"useUpload.js","names":["useCallback","useMemo","useSharedState","useUpload","id","data","extend","setFiles","files","setInternalFiles","internalFiles","getExistingFile","file","fileItems","find","f","name","size","lastModified"],"sources":["../../../../src/components/upload/useUpload.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport { useSharedState } from '../../shared/helpers/useSharedState'\nimport type { UploadFile } from './types'\n\nexport type useUploadReturn = {\n files: UploadFile[]\n setFiles: (files: UploadFile[]) => void\n internalFiles: UploadFile[]\n setInternalFiles: (files: UploadFile[]) => void\n getExistingFile: (file: File, fileItems?: UploadFile[]) => UploadFile\n}\n\n/**\n * Use together with Upload with the same id to manage the files from outside the component.\n */\nfunction useUpload(id: string): useUploadReturn {\n const { data, extend } = useSharedState<{\n files?: UploadFile[]\n internalFiles?: UploadFile[]\n }>(id)\n\n const setFiles = useCallback(\n (files: UploadFile[]) => {\n extend({ files })\n },\n [extend]\n )\n\n const setInternalFiles = useCallback(\n (internalFiles: UploadFile[]) => {\n extend({ internalFiles })\n },\n [extend]\n )\n\n const files = useMemo(() => data?.files || [], [data?.files])\n const internalFiles = useMemo(\n () => data?.internalFiles || [],\n [data?.internalFiles]\n )\n\n const getExistingFile = useCallback(\n (file: File, fileItems: UploadFile[] = files) => {\n return fileItems.find(({ file: f }) => {\n return (\n f.name === file.name &&\n f.size === file.size &&\n f.lastModified === file.lastModified\n )\n })\n },\n [files]\n )\n\n return {\n files,\n setFiles,\n internalFiles,\n setInternalFiles,\n getExistingFile,\n }\n}\n\nexport default useUpload\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,OAAO,QAAQ,OAAO;AAC5C,SAASC,cAAc,QAAQ,qCAAqC;AAcpE,SAASC,SAASA,CAACC,EAAU,EAAmB;EAC9C,MAAM;IAAEC,IAAI;IAAEC;EAAO,CAAC,GAAGJ,cAAc,CAGpCE,EAAE,CAAC;EAEN,MAAMG,QAAQ,GAAGP,WAAW,CACzBQ,KAAmB,IAAK;IACvBF,MAAM,CAAC;MAAEE;IAAM,CAAC,CAAC;EACnB,CAAC,EACD,CAACF,MAAM,CACT,CAAC;EAED,MAAMG,gBAAgB,GAAGT,WAAW,CACjCU,aAA2B,IAAK;IAC/BJ,MAAM,CAAC;MAAEI;IAAc,CAAC,CAAC;EAC3B,CAAC,EACD,CAACJ,MAAM,CACT,CAAC;EAED,MAAME,KAAK,GAAGP,OAAO,CAAC,MAAM,CAAAI,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEG,KAAK,KAAI,EAAE,EAAE,CAACH,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEG,KAAK,CAAC,CAAC;EAC7D,MAAME,aAAa,GAAGT,OAAO,CAC3B,MAAM,CAAAI,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,aAAa,KAAI,EAAE,EAC/B,CAACL,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,aAAa,CACtB,CAAC;EAED,MAAMC,eAAe,GAAGX,WAAW,CACjC,CAACY,IAAU,EAAEC,SAAuB,GAAGL,KAAK,KAAK;IAC/C,OAAOK,SAAS,CAACC,IAAI,CAAC,CAAC;MAAEF,IAAI,EAAEG;IAAE,CAAC,KAAK;MACrC,OACEA,CAAC,CAACC,IAAI,KAAKJ,IAAI,CAACI,IAAI,IACpBD,CAAC,CAACE,IAAI,KAAKL,IAAI,CAACK,IAAI,IACpBF,CAAC,CAACG,YAAY,KAAKN,IAAI,CAACM,YAAY;IAExC,CAAC,CAAC;EACJ,CAAC,EACD,CAACV,KAAK,CACR,CAAC;EAED,OAAO;IACLA,KAAK;IACLD,QAAQ;IACRG,aAAa;IACbD,gBAAgB;IAChBE;EACF,CAAC;AACH;AAEA,eAAeR,SAAS"}
1
+ {"version":3,"file":"useUpload.js","names":["useCallback","useMemo","useSharedState","useUpload","id","data","extend","setFiles","files","setInternalFiles","internalFiles","getExistingFile","file","fileItems","find","f","name","size","lastModified"],"sources":["../../../../src/components/upload/useUpload.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport { useSharedState } from '../../shared/helpers/useSharedState'\nimport type { UploadFile, UploadFileNative } from './types'\n\nexport type useUploadReturn = {\n files: Array<UploadFile>\n setFiles: (files: Array<UploadFile | UploadFileNative>) => void\n internalFiles: Array<UploadFile>\n setInternalFiles: (files: Array<UploadFile>) => void\n getExistingFile: (\n file: File,\n fileItems?: Array<UploadFile>\n ) => UploadFile\n}\n\n/**\n * Use together with Upload with the same id to manage the files from outside the component.\n */\nfunction useUpload(id: string): useUploadReturn {\n const { data, extend } = useSharedState<{\n files?: Array<UploadFile>\n internalFiles?: Array<UploadFile>\n }>(id)\n\n const setFiles = useCallback(\n (files: Array<UploadFile>) => {\n extend({ files })\n },\n [extend]\n )\n\n const setInternalFiles = useCallback(\n (internalFiles: Array<UploadFile>) => {\n extend({ internalFiles })\n },\n [extend]\n )\n\n const files = useMemo(() => data?.files || [], [data?.files])\n const internalFiles = useMemo(\n () => data?.internalFiles || [],\n [data?.internalFiles]\n )\n\n const getExistingFile = useCallback(\n (file: File, fileItems: Array<UploadFile> = files) => {\n return fileItems.find(({ file: f }) => {\n return (\n f.name === file.name &&\n f.size === file.size &&\n f.lastModified === file.lastModified\n )\n })\n },\n [files]\n )\n\n return {\n files,\n setFiles,\n internalFiles,\n setInternalFiles,\n getExistingFile,\n }\n}\n\nexport default useUpload\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,OAAO,QAAQ,OAAO;AAC5C,SAASC,cAAc,QAAQ,qCAAqC;AAiBpE,SAASC,SAASA,CAACC,EAAU,EAAmB;EAC9C,MAAM;IAAEC,IAAI;IAAEC;EAAO,CAAC,GAAGJ,cAAc,CAGpCE,EAAE,CAAC;EAEN,MAAMG,QAAQ,GAAGP,WAAW,CACzBQ,KAAwB,IAAK;IAC5BF,MAAM,CAAC;MAAEE;IAAM,CAAC,CAAC;EACnB,CAAC,EACD,CAACF,MAAM,CACT,CAAC;EAED,MAAMG,gBAAgB,GAAGT,WAAW,CACjCU,aAAgC,IAAK;IACpCJ,MAAM,CAAC;MAAEI;IAAc,CAAC,CAAC;EAC3B,CAAC,EACD,CAACJ,MAAM,CACT,CAAC;EAED,MAAME,KAAK,GAAGP,OAAO,CAAC,MAAM,CAAAI,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEG,KAAK,KAAI,EAAE,EAAE,CAACH,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEG,KAAK,CAAC,CAAC;EAC7D,MAAME,aAAa,GAAGT,OAAO,CAC3B,MAAM,CAAAI,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,aAAa,KAAI,EAAE,EAC/B,CAACL,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,aAAa,CACtB,CAAC;EAED,MAAMC,eAAe,GAAGX,WAAW,CACjC,CAACY,IAAU,EAAEC,SAA4B,GAAGL,KAAK,KAAK;IACpD,OAAOK,SAAS,CAACC,IAAI,CAAC,CAAC;MAAEF,IAAI,EAAEG;IAAE,CAAC,KAAK;MACrC,OACEA,CAAC,CAACC,IAAI,KAAKJ,IAAI,CAACI,IAAI,IACpBD,CAAC,CAACE,IAAI,KAAKL,IAAI,CAACK,IAAI,IACpBF,CAAC,CAACG,YAAY,KAAKN,IAAI,CAACM,YAAY;IAExC,CAAC,CAAC;EACJ,CAAC,EACD,CAACV,KAAK,CACR,CAAC;EAED,OAAO;IACLA,KAAK;IACLD,QAAQ;IACRG,aAAa;IACbD,gBAAgB;IAChBE;EACF,CAAC;AACH;AAEA,eAAeR,SAAS"}
@@ -156,6 +156,7 @@
156
156
  display: flex;
157
157
  flex-wrap: wrap;
158
158
  max-width: 60ch; // to enhance readability
159
+ width: 100%;
159
160
 
160
161
  & dt {
161
162
  margin-top: 0;
@@ -40,7 +40,7 @@ export default function FieldBoundaryProvider(props) {
40
40
  forceUpdate();
41
41
  }, []);
42
42
  const setShowBoundaryErrors = useCallback(showBoundaryErrors => {
43
- showBoundaryErrorsRef.current = showBoundaryErrors;
43
+ showBoundaryErrorsRef.current = showBoundaryErrors ? Date.now() : false;
44
44
  forceUpdate();
45
45
  }, []);
46
46
  const context = {
@@ -1 +1 @@
1
- {"version":3,"file":"FieldBoundaryProvider.js","names":["React","useCallback","useContext","useReducer","useRef","FieldBoundaryContext","DataContext","FieldBoundaryProvider","props","showErrors","onPathError","children","forceUpdate","showAllErrors","onPathErrorRef","current","errorsRef","showBoundaryErrorsRef","hasError","Object","keys","length","hasSubmitError","setFieldError","path","error","_onPathErrorRef$curre","_errorsRef$current","call","hasVisibleErrorRef","setVisibleError","setShowBoundaryErrors","showBoundaryErrors","context","hasVisibleError","createElement","Provider","value"],"sources":["../../../../../../src/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.tsx"],"sourcesContent":["import React, { useCallback, useContext, useReducer, useRef } from 'react'\nimport FieldBoundaryContext, {\n FieldBoundaryContextState,\n} from './FieldBoundaryContext'\nimport DataContext from '../Context'\nimport { Path } from '../../types'\n\nexport type Props = {\n showErrors?: boolean\n onPathError?: (path: Path, error: Error) => void\n children: React.ReactNode\n}\n\nexport default function FieldBoundaryProvider(props: Props) {\n const { showErrors = false, onPathError = null, children } = props\n const [, forceUpdate] = useReducer(() => ({}), {})\n const { showAllErrors } = useContext(DataContext)\n\n const onPathErrorRef = useRef(onPathError)\n onPathErrorRef.current = onPathError\n const errorsRef = useRef<Record<Path, boolean>>({})\n const showBoundaryErrorsRef =\n useRef<FieldBoundaryContextState['showBoundaryErrors']>(showErrors)\n const hasError = Object.keys(errorsRef.current).length > 0\n const hasSubmitError = showAllErrors && hasError\n\n const setFieldError = useCallback((path: Path, error: Error) => {\n if (error) {\n errorsRef.current[path] = !!error\n } else {\n delete errorsRef.current?.[path]\n }\n forceUpdate()\n onPathErrorRef.current?.(path, error)\n }, [])\n\n const hasVisibleErrorRef = useRef<Record<Path, boolean>>({})\n const setVisibleError = useCallback((path: Path, hasError: boolean) => {\n if (hasError) {\n hasVisibleErrorRef.current[path] = hasError\n } else {\n delete hasVisibleErrorRef.current[path]\n }\n forceUpdate()\n }, [])\n\n const setShowBoundaryErrors: FieldBoundaryContextState['setShowBoundaryErrors'] =\n useCallback((showBoundaryErrors) => {\n showBoundaryErrorsRef.current = showBoundaryErrors\n forceUpdate()\n }, [])\n\n const context: FieldBoundaryContextState = {\n hasError,\n hasSubmitError,\n hasVisibleError: Object.keys(hasVisibleErrorRef.current).length > 0,\n errorsRef,\n showBoundaryErrors: showBoundaryErrorsRef.current,\n setShowBoundaryErrors,\n setFieldError,\n setVisibleError,\n }\n\n return (\n <FieldBoundaryContext.Provider value={context}>\n {children}\n </FieldBoundaryContext.Provider>\n )\n}\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,EAAEC,UAAU,EAAEC,MAAM,QAAQ,OAAO;AAC1E,OAAOC,oBAAoB,MAEpB,wBAAwB;AAC/B,OAAOC,WAAW,MAAM,YAAY;AASpC,eAAe,SAASC,qBAAqBA,CAACC,KAAY,EAAE;EAC1D,MAAM;IAAEC,UAAU,GAAG,KAAK;IAAEC,WAAW,GAAG,IAAI;IAAEC;EAAS,CAAC,GAAGH,KAAK;EAClE,MAAM,GAAGI,WAAW,CAAC,GAAGT,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClD,MAAM;IAAEU;EAAc,CAAC,GAAGX,UAAU,CAACI,WAAW,CAAC;EAEjD,MAAMQ,cAAc,GAAGV,MAAM,CAACM,WAAW,CAAC;EAC1CI,cAAc,CAACC,OAAO,GAAGL,WAAW;EACpC,MAAMM,SAAS,GAAGZ,MAAM,CAAwB,CAAC,CAAC,CAAC;EACnD,MAAMa,qBAAqB,GACzBb,MAAM,CAAkDK,UAAU,CAAC;EACrE,MAAMS,QAAQ,GAAGC,MAAM,CAACC,IAAI,CAACJ,SAAS,CAACD,OAAO,CAAC,CAACM,MAAM,GAAG,CAAC;EAC1D,MAAMC,cAAc,GAAGT,aAAa,IAAIK,QAAQ;EAEhD,MAAMK,aAAa,GAAGtB,WAAW,CAAC,CAACuB,IAAU,EAAEC,KAAY,KAAK;IAAA,IAAAC,qBAAA;IAC9D,IAAID,KAAK,EAAE;MACTT,SAAS,CAACD,OAAO,CAACS,IAAI,CAAC,GAAG,CAAC,CAACC,KAAK;IACnC,CAAC,MAAM;MAAA,IAAAE,kBAAA;MACL,CAAAA,kBAAA,GAAOX,SAAS,CAACD,OAAO,cAAAY,kBAAA,qBAAxB,OAAOA,kBAAA,CAAoBH,IAAI,CAAC;IAClC;IACAZ,WAAW,CAAC,CAAC;IACb,CAAAc,qBAAA,GAAAZ,cAAc,CAACC,OAAO,cAAAW,qBAAA,uBAAtBA,qBAAA,CAAAE,IAAA,CAAAd,cAAc,EAAWU,IAAI,EAAEC,KAAK,CAAC;EACvC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMI,kBAAkB,GAAGzB,MAAM,CAAwB,CAAC,CAAC,CAAC;EAC5D,MAAM0B,eAAe,GAAG7B,WAAW,CAAC,CAACuB,IAAU,EAAEN,QAAiB,KAAK;IACrE,IAAIA,QAAQ,EAAE;MACZW,kBAAkB,CAACd,OAAO,CAACS,IAAI,CAAC,GAAGN,QAAQ;IAC7C,CAAC,MAAM;MACL,OAAOW,kBAAkB,CAACd,OAAO,CAACS,IAAI,CAAC;IACzC;IACAZ,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMmB,qBAAyE,GAC7E9B,WAAW,CAAE+B,kBAAkB,IAAK;IAClCf,qBAAqB,CAACF,OAAO,GAAGiB,kBAAkB;IAClDpB,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,EAAE,CAAC;EAER,MAAMqB,OAAkC,GAAG;IACzCf,QAAQ;IACRI,cAAc;IACdY,eAAe,EAAEf,MAAM,CAACC,IAAI,CAACS,kBAAkB,CAACd,OAAO,CAAC,CAACM,MAAM,GAAG,CAAC;IACnEL,SAAS;IACTgB,kBAAkB,EAAEf,qBAAqB,CAACF,OAAO;IACjDgB,qBAAqB;IACrBR,aAAa;IACbO;EACF,CAAC;EAED,OACE9B,KAAA,CAAAmC,aAAA,CAAC9B,oBAAoB,CAAC+B,QAAQ;IAACC,KAAK,EAAEJ;EAAQ,GAC3CtB,QAC4B,CAAC;AAEpC"}
1
+ {"version":3,"file":"FieldBoundaryProvider.js","names":["React","useCallback","useContext","useReducer","useRef","FieldBoundaryContext","DataContext","FieldBoundaryProvider","props","showErrors","onPathError","children","forceUpdate","showAllErrors","onPathErrorRef","current","errorsRef","showBoundaryErrorsRef","hasError","Object","keys","length","hasSubmitError","setFieldError","path","error","_onPathErrorRef$curre","_errorsRef$current","call","hasVisibleErrorRef","setVisibleError","setShowBoundaryErrors","showBoundaryErrors","Date","now","context","hasVisibleError","createElement","Provider","value"],"sources":["../../../../../../src/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.tsx"],"sourcesContent":["import React, { useCallback, useContext, useReducer, useRef } from 'react'\nimport FieldBoundaryContext, {\n FieldBoundaryContextState,\n} from './FieldBoundaryContext'\nimport DataContext from '../Context'\nimport { Path } from '../../types'\n\nexport type Props = {\n showErrors?: boolean\n onPathError?: (path: Path, error: Error) => void\n children: React.ReactNode\n}\n\nexport default function FieldBoundaryProvider(props: Props) {\n const { showErrors = false, onPathError = null, children } = props\n const [, forceUpdate] = useReducer(() => ({}), {})\n const { showAllErrors } = useContext(DataContext)\n\n const onPathErrorRef = useRef(onPathError)\n onPathErrorRef.current = onPathError\n const errorsRef = useRef<Record<Path, boolean>>({})\n const showBoundaryErrorsRef =\n useRef<FieldBoundaryContextState['showBoundaryErrors']>(showErrors)\n const hasError = Object.keys(errorsRef.current).length > 0\n const hasSubmitError = showAllErrors && hasError\n\n const setFieldError = useCallback((path: Path, error: Error) => {\n if (error) {\n errorsRef.current[path] = !!error\n } else {\n delete errorsRef.current?.[path]\n }\n forceUpdate()\n onPathErrorRef.current?.(path, error)\n }, [])\n\n const hasVisibleErrorRef = useRef<Record<Path, boolean>>({})\n const setVisibleError = useCallback((path: Path, hasError: boolean) => {\n if (hasError) {\n hasVisibleErrorRef.current[path] = hasError\n } else {\n delete hasVisibleErrorRef.current[path]\n }\n forceUpdate()\n }, [])\n\n const setShowBoundaryErrors: FieldBoundaryContextState['setShowBoundaryErrors'] =\n useCallback((showBoundaryErrors) => {\n showBoundaryErrorsRef.current = showBoundaryErrors\n ? Date.now() // in order to renew the internal dependency \"showBoundaryErrors\"\n : false\n forceUpdate()\n }, [])\n\n const context: FieldBoundaryContextState = {\n hasError,\n hasSubmitError,\n hasVisibleError: Object.keys(hasVisibleErrorRef.current).length > 0,\n errorsRef,\n showBoundaryErrors: showBoundaryErrorsRef.current,\n setShowBoundaryErrors,\n setFieldError,\n setVisibleError,\n }\n\n return (\n <FieldBoundaryContext.Provider value={context}>\n {children}\n </FieldBoundaryContext.Provider>\n )\n}\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,EAAEC,UAAU,EAAEC,MAAM,QAAQ,OAAO;AAC1E,OAAOC,oBAAoB,MAEpB,wBAAwB;AAC/B,OAAOC,WAAW,MAAM,YAAY;AASpC,eAAe,SAASC,qBAAqBA,CAACC,KAAY,EAAE;EAC1D,MAAM;IAAEC,UAAU,GAAG,KAAK;IAAEC,WAAW,GAAG,IAAI;IAAEC;EAAS,CAAC,GAAGH,KAAK;EAClE,MAAM,GAAGI,WAAW,CAAC,GAAGT,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClD,MAAM;IAAEU;EAAc,CAAC,GAAGX,UAAU,CAACI,WAAW,CAAC;EAEjD,MAAMQ,cAAc,GAAGV,MAAM,CAACM,WAAW,CAAC;EAC1CI,cAAc,CAACC,OAAO,GAAGL,WAAW;EACpC,MAAMM,SAAS,GAAGZ,MAAM,CAAwB,CAAC,CAAC,CAAC;EACnD,MAAMa,qBAAqB,GACzBb,MAAM,CAAkDK,UAAU,CAAC;EACrE,MAAMS,QAAQ,GAAGC,MAAM,CAACC,IAAI,CAACJ,SAAS,CAACD,OAAO,CAAC,CAACM,MAAM,GAAG,CAAC;EAC1D,MAAMC,cAAc,GAAGT,aAAa,IAAIK,QAAQ;EAEhD,MAAMK,aAAa,GAAGtB,WAAW,CAAC,CAACuB,IAAU,EAAEC,KAAY,KAAK;IAAA,IAAAC,qBAAA;IAC9D,IAAID,KAAK,EAAE;MACTT,SAAS,CAACD,OAAO,CAACS,IAAI,CAAC,GAAG,CAAC,CAACC,KAAK;IACnC,CAAC,MAAM;MAAA,IAAAE,kBAAA;MACL,CAAAA,kBAAA,GAAOX,SAAS,CAACD,OAAO,cAAAY,kBAAA,qBAAxB,OAAOA,kBAAA,CAAoBH,IAAI,CAAC;IAClC;IACAZ,WAAW,CAAC,CAAC;IACb,CAAAc,qBAAA,GAAAZ,cAAc,CAACC,OAAO,cAAAW,qBAAA,uBAAtBA,qBAAA,CAAAE,IAAA,CAAAd,cAAc,EAAWU,IAAI,EAAEC,KAAK,CAAC;EACvC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMI,kBAAkB,GAAGzB,MAAM,CAAwB,CAAC,CAAC,CAAC;EAC5D,MAAM0B,eAAe,GAAG7B,WAAW,CAAC,CAACuB,IAAU,EAAEN,QAAiB,KAAK;IACrE,IAAIA,QAAQ,EAAE;MACZW,kBAAkB,CAACd,OAAO,CAACS,IAAI,CAAC,GAAGN,QAAQ;IAC7C,CAAC,MAAM;MACL,OAAOW,kBAAkB,CAACd,OAAO,CAACS,IAAI,CAAC;IACzC;IACAZ,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMmB,qBAAyE,GAC7E9B,WAAW,CAAE+B,kBAAkB,IAAK;IAClCf,qBAAqB,CAACF,OAAO,GAAGiB,kBAAkB,GAC9CC,IAAI,CAACC,GAAG,CAAC,CAAC,GACV,KAAK;IACTtB,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,EAAE,CAAC;EAER,MAAMuB,OAAkC,GAAG;IACzCjB,QAAQ;IACRI,cAAc;IACdc,eAAe,EAAEjB,MAAM,CAACC,IAAI,CAACS,kBAAkB,CAACd,OAAO,CAAC,CAACM,MAAM,GAAG,CAAC;IACnEL,SAAS;IACTgB,kBAAkB,EAAEf,qBAAqB,CAACF,OAAO;IACjDgB,qBAAqB;IACrBR,aAAa;IACbO;EACF,CAAC;EAED,OACE9B,KAAA,CAAAqC,aAAA,CAAChC,oBAAoB,CAACiC,QAAQ;IAACC,KAAK,EAAEJ;EAAQ,GAC3CxB,QAC4B,CAAC;AAEpC"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
- import _extends from "@babel/runtime/helpers/esm/extends";
4
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
+ import _extends from "@babel/runtime/helpers/esm/extends";
5
5
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
6
6
  const _excluded = ["value", "error", "title", "help", "className", "children"];
7
7
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -26,10 +26,8 @@ function ArraySelection(props) {
26
26
  variant = 'checkbox',
27
27
  layout = 'vertical',
28
28
  optionsLayout = 'vertical',
29
- label,
30
29
  labelDescription,
31
30
  value,
32
- error,
33
31
  hasError,
34
32
  help,
35
33
  info,
@@ -49,17 +47,12 @@ function ArraySelection(props) {
49
47
  forId: id,
50
48
  className: classnames(`dnb-forms-field-array-selection dnb-forms-field-array-selection--variant-${variant === 'checkbox' ? 'checkbox' : 'button'} dnb-forms-field-array-selection--layout-${layout} dnb-forms-field-array-selection--options-layout-${optionsLayout}`, className),
51
49
  contentClassName: 'dnb-forms-field-array-selection__options',
52
- help,
53
- info,
54
- warning,
55
- error,
56
- layout,
57
- label,
58
50
  labelDescription: React.createElement(React.Fragment, null, labelDescription, help ? React.createElement(HelpButton, {
59
51
  size: "small",
60
52
  left: labelDescription ? 'x-small' : false,
61
53
  title: help.title
62
- }, help.content) : undefined)
54
+ }, help.content) : undefined),
55
+ disableStatusSummary: true
63
56
  }, pickSpacingProps(props));
64
57
  const options = useCheckboxOrToggleOptions({
65
58
  id,
@@ -83,13 +76,16 @@ function ArraySelection(props) {
83
76
  });
84
77
  switch (variant) {
85
78
  case 'checkbox':
86
- return React.createElement(FieldBlock, fieldBlockProps, options);
79
+ return React.createElement(FieldBlock, _extends({}, fieldBlockProps, {
80
+ labelHeight: "small"
81
+ }), options);
87
82
  default:
88
- return React.createElement(FieldBlock, fieldBlockProps, React.createElement(ToggleButtonGroupContext.Provider, {
83
+ return React.createElement(FieldBlock, _extends({}, fieldBlockProps, {
84
+ labelHeight: "small"
85
+ }), React.createElement(ToggleButtonGroupContext.Provider, {
89
86
  value: {
90
87
  status: hasError ? 'error' : undefined,
91
- disabled,
92
- variant: variant === 'checkbox-button' ? 'checkbox' : 'default'
88
+ disabled
93
89
  }
94
90
  }, options));
95
91
  }
@@ -142,6 +138,7 @@ export function useCheckboxOrToggleOptions({
142
138
  return React.createElement(Component, _extends({
143
139
  id: optionsCount === 1 ? id : undefined,
144
140
  key: `option-${i}-${value}`,
141
+ variant: variant === 'checkbox-button' ? 'checkbox' : undefined,
145
142
  className: classnames(`dnb-forms-field-array-selection__${variant === 'checkbox' ? 'checkbox' : 'button'}`, className),
146
143
  label: variant === 'checkbox' ? label : undefined,
147
144
  text: variant !== 'checkbox' ? label : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"ArraySelection.js","names":["React","useCallback","useContext","useMemo","Checkbox","HelpButton","ToggleButton","classnames","FieldBlock","useFieldProps","pickSpacingProps","getStatus","mapOptions","ToggleButtonGroupContext","DataContext","useDataValue","ArraySelection","props","id","path","dataPath","data","className","variant","layout","optionsLayout","label","labelDescription","value","error","hasError","help","info","warning","disabled","emptyValue","htmlAttributes","handleChange","setDisplayValue","children","getValueByPath","dataList","fieldBlockProps","_objectSpread","forId","contentClassName","createElement","Fragment","size","left","title","content","undefined","options","useCheckboxOrToggleOptions","handleActiveData","labels","Provider","status","setFieldProps","optionsCount","Children","count","length","activeData","createOption","i","active","rest","_objectWithoutProperties","_excluded","includes","push","suffix","handleSelect","newValue","filter","Component","_extends","key","text","checked","on_change","result","map","Boolean","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/ArraySelection/ArraySelection.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport { Checkbox, HelpButton, ToggleButton } from '../../../../components'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { ReturnAdditional } from '../../hooks/useFieldProps'\nimport {\n DefaultErrorMessages,\n FieldHelpProps,\n FieldProps,\n Path,\n} from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { getStatus, mapOptions, Data } from '../Selection'\nimport { HelpButtonProps } from '../../../../components/HelpButton'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\nimport DataContext from '../../DataContext/Context'\nimport useDataValue from '../../hooks/useDataValue'\nimport { FormError } from '../../utils'\n\ntype OptionProps = React.ComponentProps<\n React.FC<{\n value: number | string\n error: Error | FormError | undefined\n title: React.ReactNode\n help: HelpButtonProps\n className: string\n children: React.ReactNode\n handleSelect: () => void\n }>\n>\n\ntype OptionValue = string | number\n\nexport type Props = FieldHelpProps &\n FieldProps<Array<OptionValue> | undefined> & {\n children?: React.ReactNode\n variant?: 'checkbox' | 'button' | 'checkbox-button'\n optionsLayout?: 'horizontal' | 'vertical'\n /**\n * The path to the context data (Form.Handler).\n * The context data object needs to have a `value` and a `title` property.\n */\n dataPath?: Path\n\n /**\n * Data to be used for the component. The object needs to have a `value` and a `title` property.\n * The generated options will be placed above given JSX based children.\n */\n data?: Data\n\n errorMessages?: DefaultErrorMessages & {\n minItems?: string\n maxItems?: string\n }\n }\n\nfunction ArraySelection(props: Props) {\n const {\n id,\n path,\n dataPath,\n data,\n className,\n variant = 'checkbox',\n layout = 'vertical',\n optionsLayout = 'vertical',\n label,\n labelDescription,\n value,\n error,\n hasError,\n help,\n info,\n warning,\n disabled,\n emptyValue,\n htmlAttributes,\n handleChange,\n setDisplayValue,\n children,\n } = useFieldProps(props)\n\n const { getValueByPath } = useDataValue()\n const dataList = dataPath ? getValueByPath(dataPath) : data\n\n const fieldBlockProps = {\n forId: id,\n className: classnames(\n 'dnb-forms-field-array-selection',\n `dnb-forms-field-array-selection--variant-${\n variant === 'checkbox' ? 'checkbox' : 'button'\n }`,\n `dnb-forms-field-array-selection--layout-${layout}`,\n `dnb-forms-field-array-selection--options-layout-${optionsLayout}`,\n className\n ),\n contentClassName: 'dnb-forms-field-array-selection__options',\n help,\n info,\n warning,\n error,\n layout,\n label,\n labelDescription: (\n <>\n {labelDescription}\n {help ? (\n <HelpButton\n size=\"small\"\n left={labelDescription ? 'x-small' : false}\n title={help.title}\n >\n {help.content}\n </HelpButton>\n ) : undefined}\n </>\n ),\n ...pickSpacingProps(props),\n }\n\n const options = useCheckboxOrToggleOptions({\n id,\n path,\n variant,\n info,\n warning,\n emptyValue,\n htmlAttributes,\n dataList,\n children,\n value,\n disabled,\n hasError,\n handleChange,\n handleActiveData: ({ labels }) => {\n setDisplayValue(path, labels)\n },\n })\n\n switch (variant) {\n case 'checkbox':\n return <FieldBlock {...fieldBlockProps}>{options}</FieldBlock>\n default:\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButtonGroupContext.Provider\n value={{\n status: hasError ? 'error' : undefined,\n disabled,\n variant:\n variant === 'checkbox-button' ? 'checkbox' : 'default',\n }}\n >\n {options}\n </ToggleButtonGroupContext.Provider>\n </FieldBlock>\n )\n }\n}\n\nexport function useCheckboxOrToggleOptions({\n id,\n path,\n variant = 'checkbox',\n info,\n warning,\n emptyValue,\n htmlAttributes,\n dataList,\n children,\n value,\n disabled,\n hasError,\n handleChange,\n handleActiveData,\n}: {\n id: Props['id']\n path?: Props['path']\n variant?: Props['variant']\n info?: Props['info']\n warning?: Props['warning']\n emptyValue?: Props['emptyValue']\n htmlAttributes?: Props['htmlAttributes']\n dataList?: Props['data']\n children?: Props['children']\n value?: Props['value']\n disabled?: Props['disabled']\n hasError?: ReturnAdditional<Props['value']>['hasError']\n handleChange?: ReturnAdditional<Props['value']>['handleChange']\n handleActiveData?: (item: { labels: Array<Props['children']> }) => void\n}) {\n const { setFieldProps } = useContext(DataContext)\n const optionsCount = useMemo(\n () => React.Children.count(children) + (dataList?.length || 0),\n [dataList, children]\n )\n const activeData = []\n\n const createOption = useCallback(\n (props: OptionProps, i: number) => {\n const {\n value: active,\n error,\n title,\n help,\n className,\n children,\n ...rest\n } = props\n\n if (value?.includes(active)) {\n activeData.push(props)\n }\n\n const label = title ?? children\n const status = getStatus(error, info, warning)\n const suffix = help ? (\n <HelpButton size=\"small\" title={help.title}>\n {help.content}\n </HelpButton>\n ) : undefined\n\n const handleSelect = () => {\n const newValue = value?.includes(active)\n ? value.filter((value) => value !== active)\n : [...(value ?? []), active]\n\n handleChange?.(\n newValue.length === 0 ? (emptyValue as typeof value) : newValue\n )\n }\n\n const Component = (\n variant === 'checkbox' ? Checkbox : ToggleButton\n ) as typeof Checkbox & typeof ToggleButton\n\n return (\n <Component\n id={optionsCount === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n className={classnames(\n `dnb-forms-field-array-selection__${\n variant === 'checkbox' ? 'checkbox' : 'button'\n }`,\n className\n )}\n label={variant === 'checkbox' ? label : undefined}\n text={variant !== 'checkbox' ? label : undefined}\n value={value}\n disabled={disabled}\n checked={value?.includes(active)}\n status={(hasError || status) && 'error'}\n suffix={suffix}\n on_change={handleSelect}\n {...htmlAttributes}\n {...rest}\n />\n )\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n disabled,\n emptyValue,\n handleChange,\n hasError,\n htmlAttributes,\n id,\n info,\n optionsCount,\n value,\n variant,\n warning,\n ]\n )\n\n const result = [\n ...(dataList || []).map((props, i) =>\n createOption(props as OptionProps, i)\n ),\n ...(mapOptions(children, { createOption }) || []).filter(Boolean),\n ]\n\n if (handleActiveData) {\n handleActiveData({\n labels: activeData.map(({ title, children }) => title ?? children),\n })\n }\n\n if (path) {\n setFieldProps?.(path + '/arraySelectionData', activeData)\n }\n\n return result\n}\n\nArraySelection._supportsSpacingProps = true\nexport default ArraySelection\n"],"mappings":"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"}
1
+ {"version":3,"file":"ArraySelection.js","names":["React","useCallback","useContext","useMemo","Checkbox","HelpButton","ToggleButton","classnames","FieldBlock","useFieldProps","pickSpacingProps","getStatus","mapOptions","ToggleButtonGroupContext","DataContext","useDataValue","ArraySelection","props","id","path","dataPath","data","className","variant","layout","optionsLayout","labelDescription","value","hasError","help","info","warning","disabled","emptyValue","htmlAttributes","handleChange","setDisplayValue","children","getValueByPath","dataList","fieldBlockProps","_objectSpread","forId","contentClassName","createElement","Fragment","size","left","title","content","undefined","disableStatusSummary","options","useCheckboxOrToggleOptions","handleActiveData","labels","_extends","labelHeight","Provider","status","setFieldProps","optionsCount","Children","count","length","activeData","createOption","i","active","error","rest","_objectWithoutProperties","_excluded","includes","push","label","suffix","handleSelect","newValue","filter","Component","key","text","checked","on_change","result","map","Boolean","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/ArraySelection/ArraySelection.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport { Checkbox, HelpButton, ToggleButton } from '../../../../components'\nimport classnames from 'classnames'\nimport FieldBlock, { Props as FieldBlockProps } from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { ReturnAdditional } from '../../hooks/useFieldProps'\nimport {\n DefaultErrorMessages,\n FieldHelpProps,\n FieldProps,\n Path,\n} from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { getStatus, mapOptions, Data } from '../Selection'\nimport { HelpButtonProps } from '../../../../components/HelpButton'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\nimport DataContext from '../../DataContext/Context'\nimport useDataValue from '../../hooks/useDataValue'\nimport { FormError } from '../../utils'\n\ntype OptionProps = React.ComponentProps<\n React.FC<{\n value: number | string\n error: Error | FormError | undefined\n title: React.ReactNode\n help: HelpButtonProps\n className: string\n children: React.ReactNode\n handleSelect: () => void\n }>\n>\n\ntype OptionValue = string | number\n\nexport type Props = FieldHelpProps &\n FieldProps<Array<OptionValue> | undefined> & {\n children?: React.ReactNode\n variant?: 'checkbox' | 'button' | 'checkbox-button'\n optionsLayout?: 'horizontal' | 'vertical'\n /**\n * The path to the context data (Form.Handler).\n * The context data object needs to have a `value` and a `title` property.\n */\n dataPath?: Path\n\n /**\n * Data to be used for the component. The object needs to have a `value` and a `title` property.\n * The generated options will be placed above given JSX based children.\n */\n data?: Data\n\n errorMessages?: DefaultErrorMessages & {\n minItems?: string\n maxItems?: string\n }\n }\n\nfunction ArraySelection(props: Props) {\n const {\n id,\n path,\n dataPath,\n data,\n className,\n variant = 'checkbox',\n layout = 'vertical',\n optionsLayout = 'vertical',\n labelDescription,\n value,\n hasError,\n help,\n info,\n warning,\n disabled,\n emptyValue,\n htmlAttributes,\n handleChange,\n setDisplayValue,\n children,\n } = useFieldProps(props)\n\n const { getValueByPath } = useDataValue()\n const dataList = dataPath ? getValueByPath(dataPath) : data\n\n const fieldBlockProps: FieldBlockProps = {\n forId: id,\n className: classnames(\n 'dnb-forms-field-array-selection',\n `dnb-forms-field-array-selection--variant-${\n variant === 'checkbox' ? 'checkbox' : 'button'\n }`,\n `dnb-forms-field-array-selection--layout-${layout}`,\n `dnb-forms-field-array-selection--options-layout-${optionsLayout}`,\n className\n ),\n contentClassName: 'dnb-forms-field-array-selection__options',\n labelDescription: (\n <>\n {labelDescription}\n {help ? (\n <HelpButton\n size=\"small\"\n left={labelDescription ? 'x-small' : false}\n title={help.title}\n >\n {help.content}\n </HelpButton>\n ) : undefined}\n </>\n ),\n disableStatusSummary: true,\n ...pickSpacingProps(props),\n }\n\n const options = useCheckboxOrToggleOptions({\n id,\n path,\n variant,\n info,\n warning,\n emptyValue,\n htmlAttributes,\n dataList,\n children,\n value,\n disabled,\n hasError,\n handleChange,\n handleActiveData: ({ labels }) => {\n setDisplayValue(path, labels)\n },\n })\n\n switch (variant) {\n case 'checkbox':\n return (\n <FieldBlock {...fieldBlockProps} labelHeight=\"small\">\n {options}\n </FieldBlock>\n )\n default:\n return (\n <FieldBlock {...fieldBlockProps} labelHeight=\"small\">\n <ToggleButtonGroupContext.Provider\n value={{\n status: hasError ? 'error' : undefined,\n disabled,\n }}\n >\n {options}\n </ToggleButtonGroupContext.Provider>\n </FieldBlock>\n )\n }\n}\n\nexport function useCheckboxOrToggleOptions({\n id,\n path,\n variant = 'checkbox',\n info,\n warning,\n emptyValue,\n htmlAttributes,\n dataList,\n children,\n value,\n disabled,\n hasError,\n handleChange,\n handleActiveData,\n}: {\n id: Props['id']\n path?: Props['path']\n variant?: Props['variant']\n info?: Props['info']\n warning?: Props['warning']\n emptyValue?: Props['emptyValue']\n htmlAttributes?: Props['htmlAttributes']\n dataList?: Props['data']\n children?: Props['children']\n value?: Props['value']\n disabled?: Props['disabled']\n hasError?: ReturnAdditional<Props['value']>['hasError']\n handleChange?: ReturnAdditional<Props['value']>['handleChange']\n handleActiveData?: (item: { labels: Array<Props['children']> }) => void\n}) {\n const { setFieldProps } = useContext(DataContext)\n const optionsCount = useMemo(\n () => React.Children.count(children) + (dataList?.length || 0),\n [dataList, children]\n )\n const activeData = []\n\n const createOption = useCallback(\n (props: OptionProps, i: number) => {\n const {\n value: active,\n error,\n title,\n help,\n className,\n children,\n ...rest\n } = props\n\n if (value?.includes(active)) {\n activeData.push(props)\n }\n\n const label = title ?? children\n const status = getStatus(error, info, warning)\n const suffix = help ? (\n <HelpButton size=\"small\" title={help.title}>\n {help.content}\n </HelpButton>\n ) : undefined\n\n const handleSelect = () => {\n const newValue = value?.includes(active)\n ? value.filter((value) => value !== active)\n : [...(value ?? []), active]\n\n handleChange?.(\n newValue.length === 0 ? (emptyValue as typeof value) : newValue\n )\n }\n\n const Component = (\n variant === 'checkbox' ? Checkbox : ToggleButton\n ) as typeof Checkbox & typeof ToggleButton\n\n return (\n <Component\n id={optionsCount === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n variant={variant === 'checkbox-button' ? 'checkbox' : undefined}\n className={classnames(\n `dnb-forms-field-array-selection__${\n variant === 'checkbox' ? 'checkbox' : 'button'\n }`,\n className\n )}\n label={variant === 'checkbox' ? label : undefined}\n text={variant !== 'checkbox' ? label : undefined}\n value={value}\n disabled={disabled}\n checked={value?.includes(active)}\n status={(hasError || status) && 'error'}\n suffix={suffix}\n on_change={handleSelect}\n {...htmlAttributes}\n {...rest}\n />\n )\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n disabled,\n emptyValue,\n handleChange,\n hasError,\n htmlAttributes,\n id,\n info,\n optionsCount,\n value,\n variant,\n warning,\n ]\n )\n\n const result = [\n ...(dataList || []).map((props, i) =>\n createOption(props as OptionProps, i)\n ),\n ...(mapOptions(children, { createOption }) || []).filter(Boolean),\n ]\n\n if (handleActiveData) {\n handleActiveData({\n labels: activeData.map(({ title, children }) => title ?? children),\n })\n }\n\n if (path) {\n setFieldProps?.(path + '/arraySelectionData', activeData)\n }\n\n return result\n}\n\nArraySelection._supportsSpacingProps = true\nexport default ArraySelection\n"],"mappings":"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"}
@@ -4,6 +4,9 @@
4
4
  .dnb-forms-field-array-selection {
5
5
  --row-gap: var(--spacing-x-small);
6
6
  }
7
+ .dnb-forms-field-array-selection--variant-button {
8
+ --row-gap: var(--spacing-small);
9
+ }
7
10
  .dnb-forms-field-array-selection--options-layout-vertical .dnb-forms-field-array-selection__options {
8
11
  display: flex;
9
12
  flex-flow: column;
@@ -12,9 +15,6 @@
12
15
  .dnb-forms-field-array-selection--options-layout-vertical.dnb-forms-field-array-selection--layout-horizontal .dnb-forms-field-block__label {
13
16
  align-items: flex-start;
14
17
  }
15
- .dnb-forms-field-array-selection--variant-checkbox.dnb-forms-field-array-selection--layout-horizontal .dnb-forms-field-array-selection__options {
16
- row-gap: 0;
17
- }
18
18
  .dnb-forms-field-array-selection--variant-button.dnb-forms-field-array-selection--options-layout-vertical.dnb-forms-field-array-selection--layout-horizontal .dnb-forms-field-block__label {
19
19
  line-height: 2.5rem;
20
20
  }
@@ -27,7 +27,6 @@
27
27
  }
28
28
  @media screen and (min-width: 40.00625em) {
29
29
  .dnb-forms-field-array-selection .dnb-forms-field-block--layout-horizontal .dnb-form-label {
30
- line-height: 2.5rem;
31
30
  margin-bottom: 0;
32
31
  }
33
32
  }
@@ -1 +1 @@
1
- .dnb-forms-field-array-selection{--row-gap:var(--spacing-x-small)}.dnb-forms-field-array-selection--options-layout-vertical .dnb-forms-field-array-selection__options{display:flex;flex-flow:column;row-gap:var(--row-gap)}.dnb-forms-field-array-selection--options-layout-vertical.dnb-forms-field-array-selection--layout-horizontal .dnb-forms-field-block__label{align-items:flex-start}.dnb-forms-field-array-selection--variant-checkbox.dnb-forms-field-array-selection--layout-horizontal .dnb-forms-field-array-selection__options{row-gap:0}.dnb-forms-field-array-selection--variant-button.dnb-forms-field-array-selection--options-layout-vertical.dnb-forms-field-array-selection--layout-horizontal .dnb-forms-field-block__label{line-height:2.5rem}.dnb-forms-field-array-selection--options-layout-horizontal .dnb-forms-field-array-selection__options{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row wrap;row-gap:var(--row-gap)}@media screen and (min-width:40.00625em){.dnb-forms-field-array-selection .dnb-forms-field-block--layout-horizontal .dnb-form-label{line-height:2.5rem;margin-bottom:0}}
1
+ .dnb-forms-field-array-selection{--row-gap:var(--spacing-x-small)}.dnb-forms-field-array-selection--variant-button{--row-gap:var(--spacing-small)}.dnb-forms-field-array-selection--options-layout-vertical .dnb-forms-field-array-selection__options{display:flex;flex-flow:column;row-gap:var(--row-gap)}.dnb-forms-field-array-selection--options-layout-vertical.dnb-forms-field-array-selection--layout-horizontal .dnb-forms-field-block__label{align-items:flex-start}.dnb-forms-field-array-selection--variant-button.dnb-forms-field-array-selection--options-layout-vertical.dnb-forms-field-array-selection--layout-horizontal .dnb-forms-field-block__label{line-height:2.5rem}.dnb-forms-field-array-selection--options-layout-horizontal .dnb-forms-field-array-selection__options{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row wrap;row-gap:var(--row-gap)}@media screen and (min-width:40.00625em){.dnb-forms-field-array-selection .dnb-forms-field-block--layout-horizontal .dnb-form-label{margin-bottom:0}}
@@ -2,6 +2,10 @@
2
2
 
3
3
  .dnb-forms-field-array-selection {
4
4
  --row-gap: var(--spacing-x-small);
5
+ &--variant-button {
6
+ --row-gap: var(--spacing-small);
7
+ }
8
+
5
9
  &--options-layout-vertical &__options {
6
10
  display: flex;
7
11
  flex-flow: column;
@@ -12,9 +16,6 @@
12
16
  align-items: flex-start;
13
17
  }
14
18
  }
15
- &--variant-checkbox#{&}--layout-horizontal &__options {
16
- row-gap: 0;
17
- }
18
19
  &--variant-button#{&}--options-layout-vertical#{&}--layout-horizontal {
19
20
  .dnb-forms-field-block__label {
20
21
  line-height: 2.5rem;
@@ -30,7 +31,6 @@
30
31
 
31
32
  @include allAbove(small) {
32
33
  .dnb-forms-field-block--layout-horizontal .dnb-form-label {
33
- line-height: 2.5rem;
34
34
  margin-bottom: 0;
35
35
  }
36
36
  }