@dnb/eufemia 10.69.1 → 10.70.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 (726) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/cjs/components/aria-live/AriaLiveDocs.d.ts +2 -0
  3. package/cjs/components/aria-live/AriaLiveDocs.js +54 -0
  4. package/cjs/components/aria-live/AriaLiveDocs.js.map +1 -0
  5. package/cjs/components/avatar/Avatar.d.ts +10 -0
  6. package/cjs/components/avatar/Avatar.js +17 -3
  7. package/cjs/components/avatar/Avatar.js.map +1 -1
  8. package/cjs/components/avatar/AvatarDocs.d.ts +3 -0
  9. package/cjs/components/avatar/AvatarDocs.js +101 -0
  10. package/cjs/components/avatar/AvatarDocs.js.map +1 -0
  11. package/cjs/components/avatar/AvatarGroup.d.ts +10 -0
  12. package/cjs/components/avatar/AvatarGroup.js +17 -5
  13. package/cjs/components/avatar/AvatarGroup.js.map +1 -1
  14. package/cjs/components/avatar/style/dnb-avatar.css +8 -0
  15. package/cjs/components/avatar/style/dnb-avatar.min.css +1 -1
  16. package/cjs/components/avatar/style/dnb-avatar.scss +9 -0
  17. package/cjs/components/avatar/style/themes/dnb-avatar-theme-sbanken.css +5 -5
  18. package/cjs/components/avatar/style/themes/dnb-avatar-theme-sbanken.min.css +1 -1
  19. package/cjs/components/avatar/style/themes/dnb-avatar-theme-sbanken.scss +5 -6
  20. package/cjs/components/avatar/style/themes/dnb-avatar-theme-ui.css +5 -5
  21. package/cjs/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -1
  22. package/cjs/components/avatar/style/themes/dnb-avatar-theme-ui.scss +5 -5
  23. package/cjs/components/badge/BadgeDocs.d.ts +2 -0
  24. package/cjs/components/badge/BadgeDocs.js +54 -0
  25. package/cjs/components/badge/BadgeDocs.js.map +1 -0
  26. package/cjs/components/breadcrumb/BreadcrumbDocs.d.ts +5 -0
  27. package/cjs/components/breadcrumb/BreadcrumbDocs.js +125 -0
  28. package/cjs/components/breadcrumb/BreadcrumbDocs.js.map +1 -0
  29. package/cjs/components/button/Button.d.ts +0 -3
  30. package/cjs/components/button/ButtonDocs.d.ts +1 -0
  31. package/cjs/components/button/ButtonDocs.js +8 -1
  32. package/cjs/components/button/ButtonDocs.js.map +1 -1
  33. package/cjs/components/date-picker/DatePickerAddon.js +1 -3
  34. package/cjs/components/date-picker/DatePickerAddon.js.map +1 -1
  35. package/cjs/components/date-picker/DatePickerCalc.d.ts +13 -0
  36. package/cjs/components/date-picker/DatePickerCalc.js +44 -0
  37. package/cjs/components/date-picker/DatePickerCalc.js.map +1 -1
  38. package/cjs/components/date-picker/DatePickerCalendar.js +13 -11
  39. package/cjs/components/date-picker/DatePickerCalendar.js.map +1 -1
  40. package/cjs/components/date-picker/DatePickerContext.d.ts +1 -1
  41. package/cjs/components/date-picker/DatePickerContext.js.map +1 -1
  42. package/cjs/components/date-picker/DatePickerProvider.js +2 -2
  43. package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
  44. package/cjs/components/date-picker/hooks/useViews.d.ts +2 -4
  45. package/cjs/components/date-picker/hooks/useViews.js +37 -23
  46. package/cjs/components/date-picker/hooks/useViews.js.map +1 -1
  47. package/cjs/components/dialog/DialogDocs.d.ts +1 -0
  48. package/cjs/components/dialog/DialogDocs.js +13 -1
  49. package/cjs/components/dialog/DialogDocs.js.map +1 -1
  50. package/cjs/components/drawer/DrawerDocs.d.ts +2 -0
  51. package/cjs/components/drawer/DrawerDocs.js +69 -0
  52. package/cjs/components/drawer/DrawerDocs.js.map +1 -0
  53. package/cjs/components/dropdown/DropdownDocs.d.ts +2 -0
  54. package/cjs/components/dropdown/DropdownDocs.js +29 -0
  55. package/cjs/components/dropdown/DropdownDocs.js.map +1 -0
  56. package/cjs/components/form-label/FormLabelDocs.d.ts +2 -0
  57. package/cjs/components/form-label/FormLabelDocs.js +59 -0
  58. package/cjs/components/form-label/FormLabelDocs.js.map +1 -0
  59. package/cjs/components/form-row/FormRow.d.ts +45 -0
  60. package/cjs/components/form-row/FormRowDocs.d.ts +2 -0
  61. package/cjs/components/form-row/FormRowDocs.js +89 -0
  62. package/cjs/components/form-row/FormRowDocs.js.map +1 -0
  63. package/cjs/components/form-set/FormSet.d.ts +18 -0
  64. package/cjs/components/form-set/FormSetDocs.d.ts +3 -0
  65. package/cjs/components/form-set/FormSetDocs.js +56 -0
  66. package/cjs/components/form-set/FormSetDocs.js.map +1 -0
  67. package/cjs/components/form-status/FormStatus.d.ts +18 -18
  68. package/cjs/components/form-status/FormStatusDocs.d.ts +2 -0
  69. package/cjs/components/form-status/FormStatusDocs.js +89 -0
  70. package/cjs/components/form-status/FormStatusDocs.js.map +1 -0
  71. package/cjs/components/global-error/GlobalError.d.ts +12 -0
  72. package/cjs/components/global-error/GlobalError.js +15 -6
  73. package/cjs/components/global-error/GlobalError.js.map +1 -1
  74. package/cjs/components/global-error/GlobalErrorDocs.js +14 -4
  75. package/cjs/components/global-error/GlobalErrorDocs.js.map +1 -1
  76. package/cjs/components/global-status/GlobalStatus.d.ts +37 -58
  77. package/cjs/components/global-status/GlobalStatusController.d.ts +0 -9
  78. package/cjs/components/global-status/GlobalStatusDocs.d.ts +6 -0
  79. package/cjs/components/global-status/GlobalStatusDocs.js +192 -0
  80. package/cjs/components/global-status/GlobalStatusDocs.js.map +1 -0
  81. package/cjs/components/heading/HeadingDocs.d.ts +2 -0
  82. package/cjs/components/heading/HeadingDocs.js +79 -0
  83. package/cjs/components/heading/HeadingDocs.js.map +1 -0
  84. package/cjs/components/help-button/HelpButtonDocs.d.ts +3 -0
  85. package/cjs/components/help-button/HelpButtonDocs.js +46 -0
  86. package/cjs/components/help-button/HelpButtonDocs.js.map +1 -0
  87. package/cjs/components/icon/IconDocs.d.ts +2 -0
  88. package/cjs/components/icon/IconDocs.js +59 -0
  89. package/cjs/components/icon/IconDocs.js.map +1 -0
  90. package/cjs/components/icon/IconPrimaryDocs.d.ts +2 -0
  91. package/cjs/components/icon/IconPrimaryDocs.js +24 -0
  92. package/cjs/components/icon/IconPrimaryDocs.js.map +1 -0
  93. package/cjs/components/info-card/InfoCard.d.ts +6 -1
  94. package/cjs/components/info-card/InfoCard.js +4 -3
  95. package/cjs/components/info-card/InfoCard.js.map +1 -1
  96. package/cjs/components/info-card/InfoCardDocs.js +8 -3
  97. package/cjs/components/info-card/InfoCardDocs.js.map +1 -1
  98. package/cjs/components/input/Input.d.ts +0 -21
  99. package/cjs/components/input/InputDocs.d.ts +1 -0
  100. package/cjs/components/input/InputDocs.js +33 -1
  101. package/cjs/components/input/InputDocs.js.map +1 -1
  102. package/cjs/components/input-masked/InputMasked.d.ts +0 -12
  103. package/cjs/components/input-masked/InputMaskedDocs.d.ts +1 -0
  104. package/cjs/components/input-masked/InputMaskedDocs.js +13 -1
  105. package/cjs/components/input-masked/InputMaskedDocs.js.map +1 -1
  106. package/cjs/components/input-masked/MultiInputMaskedDocs.d.ts +2 -0
  107. package/cjs/components/input-masked/MultiInputMaskedDocs.js +24 -0
  108. package/cjs/components/input-masked/MultiInputMaskedDocs.js.map +1 -0
  109. package/cjs/components/pagination/Pagination.d.ts +35 -33
  110. package/cjs/components/pagination/Pagination.js +2 -0
  111. package/cjs/components/pagination/Pagination.js.map +1 -1
  112. package/cjs/components/pagination/PaginationDocs.d.ts +3 -0
  113. package/cjs/components/pagination/PaginationDocs.js +191 -0
  114. package/cjs/components/pagination/PaginationDocs.js.map +1 -0
  115. package/cjs/components/pagination/PaginationHelpers.d.ts +0 -3
  116. package/cjs/components/pagination/PaginationInfinity.d.ts +0 -3
  117. package/cjs/components/pagination/PaginationProvider.js +1 -1
  118. package/cjs/components/pagination/PaginationProvider.js.map +1 -1
  119. package/cjs/components/radio/Radio.d.ts +12 -15
  120. package/cjs/components/radio/RadioDocs.d.ts +5 -0
  121. package/cjs/components/radio/RadioDocs.js +145 -0
  122. package/cjs/components/radio/RadioDocs.js.map +1 -0
  123. package/cjs/components/radio/RadioGroup.d.ts +0 -30
  124. package/cjs/components/skeleton/SkeletonDocs.d.ts +2 -0
  125. package/cjs/components/skeleton/SkeletonDocs.js +44 -0
  126. package/cjs/components/skeleton/SkeletonDocs.js.map +1 -0
  127. package/cjs/components/skeleton/SkeletonHelper.d.ts +0 -6
  128. package/cjs/components/skip-content/SkipContentDocs.d.ts +2 -0
  129. package/cjs/components/skip-content/SkipContentDocs.js +29 -0
  130. package/cjs/components/skip-content/SkipContentDocs.js.map +1 -0
  131. package/cjs/components/tag/TagDocs.d.ts +4 -0
  132. package/cjs/components/tag/TagDocs.js +93 -0
  133. package/cjs/components/tag/TagDocs.js.map +1 -0
  134. package/cjs/components/textarea/Textarea.d.ts +0 -12
  135. package/cjs/components/textarea/TextareaDocs.d.ts +1 -0
  136. package/cjs/components/textarea/TextareaDocs.js +23 -1
  137. package/cjs/components/textarea/TextareaDocs.js.map +1 -1
  138. package/cjs/components/timeline/TimelineDocs.d.ts +3 -0
  139. package/cjs/components/timeline/TimelineDocs.js +66 -0
  140. package/cjs/components/timeline/TimelineDocs.js.map +1 -0
  141. package/cjs/components/toggle-button/ToggleButton.d.ts +0 -3
  142. package/cjs/components/toggle-button/ToggleButtonDocs.d.ts +1 -0
  143. package/cjs/components/toggle-button/ToggleButtonDocs.js +8 -1
  144. package/cjs/components/toggle-button/ToggleButtonDocs.js.map +1 -1
  145. package/cjs/components/toggle-button/ToggleButtonGroup.d.ts +0 -3
  146. package/cjs/components/toggle-button/ToggleButtonGroupDocs.d.ts +1 -0
  147. package/cjs/components/toggle-button/ToggleButtonGroupDocs.js +8 -1
  148. package/cjs/components/toggle-button/ToggleButtonGroupDocs.js.map +1 -1
  149. package/cjs/components/tooltip/TooltipDocs.d.ts +2 -0
  150. package/cjs/components/tooltip/TooltipDocs.js +79 -0
  151. package/cjs/components/tooltip/TooltipDocs.js.map +1 -0
  152. package/cjs/components/upload/Upload.js +6 -4
  153. package/cjs/components/upload/Upload.js.map +1 -1
  154. package/cjs/components/upload/UploadDocs.js +5 -0
  155. package/cjs/components/upload/UploadDocs.js.map +1 -1
  156. package/cjs/components/upload/UploadFileList.js +3 -1
  157. package/cjs/components/upload/UploadFileList.js.map +1 -1
  158. package/cjs/components/upload/UploadFileListCell.d.ts +6 -1
  159. package/cjs/components/upload/UploadFileListCell.js +8 -5
  160. package/cjs/components/upload/UploadFileListCell.js.map +1 -1
  161. package/cjs/components/upload/types.d.ts +5 -0
  162. package/cjs/components/upload/types.js.map +1 -1
  163. package/cjs/components/upload/useUpload.d.ts +1 -0
  164. package/cjs/components/upload/useUpload.js +9 -2
  165. package/cjs/components/upload/useUpload.js.map +1 -1
  166. package/cjs/components/visually-hidden/VisuallyHiddenDocs.d.ts +2 -0
  167. package/cjs/components/visually-hidden/VisuallyHiddenDocs.js +19 -0
  168. package/cjs/components/visually-hidden/VisuallyHiddenDocs.js.map +1 -0
  169. package/cjs/extensions/forms/DataContext/Context.d.ts +6 -5
  170. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  171. package/cjs/extensions/forms/DataContext/Provider/Provider.js +29 -35
  172. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  173. package/cjs/extensions/forms/Field/Date/Date.d.ts +1 -0
  174. package/cjs/extensions/forms/Field/Date/Date.js +8 -8
  175. package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
  176. package/cjs/extensions/forms/Field/Password/Password.js +2 -1
  177. package/cjs/extensions/forms/Field/Password/Password.js.map +1 -1
  178. package/cjs/extensions/forms/Field/Provider/useFieldProvider.d.ts +9 -3
  179. package/cjs/extensions/forms/Field/Upload/Upload.d.ts +1 -1
  180. package/cjs/extensions/forms/Field/Upload/Upload.js +10 -2
  181. package/cjs/extensions/forms/Field/Upload/Upload.js.map +1 -1
  182. package/cjs/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js +4 -4
  183. package/cjs/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js.map +1 -1
  184. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
  185. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  186. package/cjs/extensions/forms/Form/Visibility/useVisibility.js +10 -14
  187. package/cjs/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  188. package/cjs/extensions/forms/Value/Date/Date.d.ts +0 -6
  189. package/cjs/extensions/forms/Value/Date/Date.js +14 -38
  190. package/cjs/extensions/forms/Value/Date/Date.js.map +1 -1
  191. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +2 -2
  192. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  193. package/cjs/extensions/forms/hooks/useFieldProps.js +3 -4
  194. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  195. package/cjs/extensions/payment-card/PaymentCard.d.ts +7 -7
  196. package/cjs/extensions/payment-card/PaymentCardDocs.d.ts +5 -0
  197. package/cjs/extensions/payment-card/PaymentCardDocs.js +205 -0
  198. package/cjs/extensions/payment-card/PaymentCardDocs.js.map +1 -0
  199. package/cjs/fragments/scroll-view/ScrollViewDocs.d.ts +2 -0
  200. package/cjs/fragments/scroll-view/ScrollViewDocs.js +19 -0
  201. package/cjs/fragments/scroll-view/ScrollViewDocs.js.map +1 -0
  202. package/cjs/fragments/text-counter/TextCounterDocs.d.ts +2 -0
  203. package/cjs/fragments/text-counter/TextCounterDocs.js +29 -0
  204. package/cjs/fragments/text-counter/TextCounterDocs.js.map +1 -0
  205. package/cjs/shared/Eufemia.d.ts +1 -1
  206. package/cjs/shared/Eufemia.js +2 -2
  207. package/cjs/shared/Eufemia.js.map +1 -1
  208. package/cjs/shared/MediaQueryDocs.d.ts +2 -0
  209. package/cjs/shared/MediaQueryDocs.js +34 -0
  210. package/cjs/shared/MediaQueryDocs.js.map +1 -0
  211. package/cjs/shared/ThemeDocs.d.ts +2 -0
  212. package/cjs/shared/ThemeDocs.js +39 -0
  213. package/cjs/shared/ThemeDocs.js.map +1 -0
  214. package/cjs/shared/locales/en-GB.d.ts +1 -0
  215. package/cjs/shared/locales/en-GB.js +1 -0
  216. package/cjs/shared/locales/en-GB.js.map +1 -1
  217. package/cjs/shared/locales/en-US.d.ts +1 -0
  218. package/cjs/shared/locales/index.d.ts +2 -0
  219. package/cjs/shared/locales/nb-NO.d.ts +1 -0
  220. package/cjs/shared/locales/nb-NO.js +1 -0
  221. package/cjs/shared/locales/nb-NO.js.map +1 -1
  222. package/cjs/shared/locales/sv-SE.d.ts +1 -0
  223. package/cjs/shared/locales/sv-SE.js +1 -0
  224. package/cjs/shared/locales/sv-SE.js.map +1 -1
  225. package/cjs/style/core/scopes.scss +1 -1
  226. package/cjs/style/dnb-ui-basis.css +1 -1
  227. package/cjs/style/dnb-ui-basis.min.css +1 -1
  228. package/cjs/style/dnb-ui-body.css +1 -1
  229. package/cjs/style/dnb-ui-body.min.css +1 -1
  230. package/cjs/style/dnb-ui-components.css +8 -0
  231. package/cjs/style/dnb-ui-components.min.css +1 -1
  232. package/cjs/style/dnb-ui-core.css +1 -1
  233. package/cjs/style/dnb-ui-core.min.css +1 -1
  234. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +13 -5
  235. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  236. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +13 -5
  237. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  238. package/cjs/style/themes/theme-ui/ui-theme-components.css +13 -5
  239. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  240. package/components/aria-live/AriaLiveDocs.d.ts +2 -0
  241. package/components/aria-live/AriaLiveDocs.js +48 -0
  242. package/components/aria-live/AriaLiveDocs.js.map +1 -0
  243. package/components/avatar/Avatar.d.ts +10 -0
  244. package/components/avatar/Avatar.js +17 -3
  245. package/components/avatar/Avatar.js.map +1 -1
  246. package/components/avatar/AvatarDocs.d.ts +3 -0
  247. package/components/avatar/AvatarDocs.js +95 -0
  248. package/components/avatar/AvatarDocs.js.map +1 -0
  249. package/components/avatar/AvatarGroup.d.ts +10 -0
  250. package/components/avatar/AvatarGroup.js +17 -5
  251. package/components/avatar/AvatarGroup.js.map +1 -1
  252. package/components/avatar/style/dnb-avatar.css +8 -0
  253. package/components/avatar/style/dnb-avatar.min.css +1 -1
  254. package/components/avatar/style/dnb-avatar.scss +9 -0
  255. package/components/avatar/style/themes/dnb-avatar-theme-sbanken.css +5 -5
  256. package/components/avatar/style/themes/dnb-avatar-theme-sbanken.min.css +1 -1
  257. package/components/avatar/style/themes/dnb-avatar-theme-sbanken.scss +5 -6
  258. package/components/avatar/style/themes/dnb-avatar-theme-ui.css +5 -5
  259. package/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -1
  260. package/components/avatar/style/themes/dnb-avatar-theme-ui.scss +5 -5
  261. package/components/badge/BadgeDocs.d.ts +2 -0
  262. package/components/badge/BadgeDocs.js +48 -0
  263. package/components/badge/BadgeDocs.js.map +1 -0
  264. package/components/breadcrumb/BreadcrumbDocs.d.ts +5 -0
  265. package/components/breadcrumb/BreadcrumbDocs.js +119 -0
  266. package/components/breadcrumb/BreadcrumbDocs.js.map +1 -0
  267. package/components/button/Button.d.ts +0 -3
  268. package/components/button/ButtonDocs.d.ts +1 -0
  269. package/components/button/ButtonDocs.js +7 -0
  270. package/components/button/ButtonDocs.js.map +1 -1
  271. package/components/date-picker/DatePickerAddon.js +1 -3
  272. package/components/date-picker/DatePickerAddon.js.map +1 -1
  273. package/components/date-picker/DatePickerCalc.d.ts +13 -0
  274. package/components/date-picker/DatePickerCalc.js +41 -0
  275. package/components/date-picker/DatePickerCalc.js.map +1 -1
  276. package/components/date-picker/DatePickerCalendar.js +13 -11
  277. package/components/date-picker/DatePickerCalendar.js.map +1 -1
  278. package/components/date-picker/DatePickerContext.d.ts +1 -1
  279. package/components/date-picker/DatePickerContext.js.map +1 -1
  280. package/components/date-picker/DatePickerProvider.js +2 -2
  281. package/components/date-picker/DatePickerProvider.js.map +1 -1
  282. package/components/date-picker/hooks/useViews.d.ts +2 -4
  283. package/components/date-picker/hooks/useViews.js +38 -24
  284. package/components/date-picker/hooks/useViews.js.map +1 -1
  285. package/components/dialog/DialogDocs.d.ts +1 -0
  286. package/components/dialog/DialogDocs.js +12 -0
  287. package/components/dialog/DialogDocs.js.map +1 -1
  288. package/components/drawer/DrawerDocs.d.ts +2 -0
  289. package/components/drawer/DrawerDocs.js +63 -0
  290. package/components/drawer/DrawerDocs.js.map +1 -0
  291. package/components/dropdown/DropdownDocs.d.ts +2 -0
  292. package/components/dropdown/DropdownDocs.js +23 -0
  293. package/components/dropdown/DropdownDocs.js.map +1 -0
  294. package/components/form-label/FormLabelDocs.d.ts +2 -0
  295. package/components/form-label/FormLabelDocs.js +53 -0
  296. package/components/form-label/FormLabelDocs.js.map +1 -0
  297. package/components/form-row/FormRow.d.ts +45 -0
  298. package/components/form-row/FormRowDocs.d.ts +2 -0
  299. package/components/form-row/FormRowDocs.js +83 -0
  300. package/components/form-row/FormRowDocs.js.map +1 -0
  301. package/components/form-set/FormSet.d.ts +18 -0
  302. package/components/form-set/FormSetDocs.d.ts +3 -0
  303. package/components/form-set/FormSetDocs.js +50 -0
  304. package/components/form-set/FormSetDocs.js.map +1 -0
  305. package/components/form-status/FormStatus.d.ts +18 -18
  306. package/components/form-status/FormStatusDocs.d.ts +2 -0
  307. package/components/form-status/FormStatusDocs.js +83 -0
  308. package/components/form-status/FormStatusDocs.js.map +1 -0
  309. package/components/global-error/GlobalError.d.ts +12 -0
  310. package/components/global-error/GlobalError.js +15 -6
  311. package/components/global-error/GlobalError.js.map +1 -1
  312. package/components/global-error/GlobalErrorDocs.js +14 -4
  313. package/components/global-error/GlobalErrorDocs.js.map +1 -1
  314. package/components/global-status/GlobalStatus.d.ts +37 -58
  315. package/components/global-status/GlobalStatusController.d.ts +0 -9
  316. package/components/global-status/GlobalStatusDocs.d.ts +6 -0
  317. package/components/global-status/GlobalStatusDocs.js +186 -0
  318. package/components/global-status/GlobalStatusDocs.js.map +1 -0
  319. package/components/heading/HeadingDocs.d.ts +2 -0
  320. package/components/heading/HeadingDocs.js +73 -0
  321. package/components/heading/HeadingDocs.js.map +1 -0
  322. package/components/help-button/HelpButtonDocs.d.ts +3 -0
  323. package/components/help-button/HelpButtonDocs.js +40 -0
  324. package/components/help-button/HelpButtonDocs.js.map +1 -0
  325. package/components/icon/IconDocs.d.ts +2 -0
  326. package/components/icon/IconDocs.js +53 -0
  327. package/components/icon/IconDocs.js.map +1 -0
  328. package/components/icon/IconPrimaryDocs.d.ts +2 -0
  329. package/components/icon/IconPrimaryDocs.js +18 -0
  330. package/components/icon/IconPrimaryDocs.js.map +1 -0
  331. package/components/info-card/InfoCard.d.ts +6 -1
  332. package/components/info-card/InfoCard.js +4 -3
  333. package/components/info-card/InfoCard.js.map +1 -1
  334. package/components/info-card/InfoCardDocs.js +8 -3
  335. package/components/info-card/InfoCardDocs.js.map +1 -1
  336. package/components/input/Input.d.ts +0 -21
  337. package/components/input/InputDocs.d.ts +1 -0
  338. package/components/input/InputDocs.js +32 -0
  339. package/components/input/InputDocs.js.map +1 -1
  340. package/components/input-masked/InputMasked.d.ts +0 -12
  341. package/components/input-masked/InputMaskedDocs.d.ts +1 -0
  342. package/components/input-masked/InputMaskedDocs.js +12 -0
  343. package/components/input-masked/InputMaskedDocs.js.map +1 -1
  344. package/components/input-masked/MultiInputMaskedDocs.d.ts +2 -0
  345. package/components/input-masked/MultiInputMaskedDocs.js +18 -0
  346. package/components/input-masked/MultiInputMaskedDocs.js.map +1 -0
  347. package/components/pagination/Pagination.d.ts +35 -33
  348. package/components/pagination/Pagination.js +2 -0
  349. package/components/pagination/Pagination.js.map +1 -1
  350. package/components/pagination/PaginationDocs.d.ts +3 -0
  351. package/components/pagination/PaginationDocs.js +185 -0
  352. package/components/pagination/PaginationDocs.js.map +1 -0
  353. package/components/pagination/PaginationHelpers.d.ts +0 -3
  354. package/components/pagination/PaginationInfinity.d.ts +0 -3
  355. package/components/pagination/PaginationProvider.js +1 -1
  356. package/components/pagination/PaginationProvider.js.map +1 -1
  357. package/components/radio/Radio.d.ts +12 -15
  358. package/components/radio/RadioDocs.d.ts +5 -0
  359. package/components/radio/RadioDocs.js +139 -0
  360. package/components/radio/RadioDocs.js.map +1 -0
  361. package/components/radio/RadioGroup.d.ts +0 -30
  362. package/components/skeleton/SkeletonDocs.d.ts +2 -0
  363. package/components/skeleton/SkeletonDocs.js +38 -0
  364. package/components/skeleton/SkeletonDocs.js.map +1 -0
  365. package/components/skeleton/SkeletonHelper.d.ts +0 -6
  366. package/components/skip-content/SkipContentDocs.d.ts +2 -0
  367. package/components/skip-content/SkipContentDocs.js +23 -0
  368. package/components/skip-content/SkipContentDocs.js.map +1 -0
  369. package/components/tag/TagDocs.d.ts +4 -0
  370. package/components/tag/TagDocs.js +87 -0
  371. package/components/tag/TagDocs.js.map +1 -0
  372. package/components/textarea/Textarea.d.ts +0 -12
  373. package/components/textarea/TextareaDocs.d.ts +1 -0
  374. package/components/textarea/TextareaDocs.js +22 -0
  375. package/components/textarea/TextareaDocs.js.map +1 -1
  376. package/components/timeline/TimelineDocs.d.ts +3 -0
  377. package/components/timeline/TimelineDocs.js +60 -0
  378. package/components/timeline/TimelineDocs.js.map +1 -0
  379. package/components/toggle-button/ToggleButton.d.ts +0 -3
  380. package/components/toggle-button/ToggleButtonDocs.d.ts +1 -0
  381. package/components/toggle-button/ToggleButtonDocs.js +7 -0
  382. package/components/toggle-button/ToggleButtonDocs.js.map +1 -1
  383. package/components/toggle-button/ToggleButtonGroup.d.ts +0 -3
  384. package/components/toggle-button/ToggleButtonGroupDocs.d.ts +1 -0
  385. package/components/toggle-button/ToggleButtonGroupDocs.js +7 -0
  386. package/components/toggle-button/ToggleButtonGroupDocs.js.map +1 -1
  387. package/components/tooltip/TooltipDocs.d.ts +2 -0
  388. package/components/tooltip/TooltipDocs.js +73 -0
  389. package/components/tooltip/TooltipDocs.js.map +1 -0
  390. package/components/upload/Upload.js +6 -4
  391. package/components/upload/Upload.js.map +1 -1
  392. package/components/upload/UploadDocs.js +5 -0
  393. package/components/upload/UploadDocs.js.map +1 -1
  394. package/components/upload/UploadFileList.js +3 -1
  395. package/components/upload/UploadFileList.js.map +1 -1
  396. package/components/upload/UploadFileListCell.d.ts +6 -1
  397. package/components/upload/UploadFileListCell.js +8 -5
  398. package/components/upload/UploadFileListCell.js.map +1 -1
  399. package/components/upload/types.d.ts +5 -0
  400. package/components/upload/types.js.map +1 -1
  401. package/components/upload/useUpload.d.ts +1 -0
  402. package/components/upload/useUpload.js +7 -1
  403. package/components/upload/useUpload.js.map +1 -1
  404. package/components/visually-hidden/VisuallyHiddenDocs.d.ts +2 -0
  405. package/components/visually-hidden/VisuallyHiddenDocs.js +13 -0
  406. package/components/visually-hidden/VisuallyHiddenDocs.js.map +1 -0
  407. package/es/components/aria-live/AriaLiveDocs.d.ts +2 -0
  408. package/es/components/aria-live/AriaLiveDocs.js +48 -0
  409. package/es/components/aria-live/AriaLiveDocs.js.map +1 -0
  410. package/es/components/avatar/Avatar.d.ts +10 -0
  411. package/es/components/avatar/Avatar.js +17 -3
  412. package/es/components/avatar/Avatar.js.map +1 -1
  413. package/es/components/avatar/AvatarDocs.d.ts +3 -0
  414. package/es/components/avatar/AvatarDocs.js +95 -0
  415. package/es/components/avatar/AvatarDocs.js.map +1 -0
  416. package/es/components/avatar/AvatarGroup.d.ts +10 -0
  417. package/es/components/avatar/AvatarGroup.js +17 -5
  418. package/es/components/avatar/AvatarGroup.js.map +1 -1
  419. package/es/components/avatar/style/dnb-avatar.css +8 -0
  420. package/es/components/avatar/style/dnb-avatar.min.css +1 -1
  421. package/es/components/avatar/style/dnb-avatar.scss +9 -0
  422. package/es/components/avatar/style/themes/dnb-avatar-theme-sbanken.css +5 -5
  423. package/es/components/avatar/style/themes/dnb-avatar-theme-sbanken.min.css +1 -1
  424. package/es/components/avatar/style/themes/dnb-avatar-theme-sbanken.scss +5 -6
  425. package/es/components/avatar/style/themes/dnb-avatar-theme-ui.css +5 -5
  426. package/es/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -1
  427. package/es/components/avatar/style/themes/dnb-avatar-theme-ui.scss +5 -5
  428. package/es/components/badge/BadgeDocs.d.ts +2 -0
  429. package/es/components/badge/BadgeDocs.js +48 -0
  430. package/es/components/badge/BadgeDocs.js.map +1 -0
  431. package/es/components/breadcrumb/BreadcrumbDocs.d.ts +5 -0
  432. package/es/components/breadcrumb/BreadcrumbDocs.js +119 -0
  433. package/es/components/breadcrumb/BreadcrumbDocs.js.map +1 -0
  434. package/es/components/button/Button.d.ts +0 -3
  435. package/es/components/button/ButtonDocs.d.ts +1 -0
  436. package/es/components/button/ButtonDocs.js +7 -0
  437. package/es/components/button/ButtonDocs.js.map +1 -1
  438. package/es/components/date-picker/DatePickerAddon.js +1 -3
  439. package/es/components/date-picker/DatePickerAddon.js.map +1 -1
  440. package/es/components/date-picker/DatePickerCalc.d.ts +13 -0
  441. package/es/components/date-picker/DatePickerCalc.js +39 -0
  442. package/es/components/date-picker/DatePickerCalc.js.map +1 -1
  443. package/es/components/date-picker/DatePickerCalendar.js +13 -11
  444. package/es/components/date-picker/DatePickerCalendar.js.map +1 -1
  445. package/es/components/date-picker/DatePickerContext.d.ts +1 -1
  446. package/es/components/date-picker/DatePickerContext.js.map +1 -1
  447. package/es/components/date-picker/DatePickerProvider.js +2 -2
  448. package/es/components/date-picker/DatePickerProvider.js.map +1 -1
  449. package/es/components/date-picker/hooks/useViews.d.ts +2 -4
  450. package/es/components/date-picker/hooks/useViews.js +39 -25
  451. package/es/components/date-picker/hooks/useViews.js.map +1 -1
  452. package/es/components/dialog/DialogDocs.d.ts +1 -0
  453. package/es/components/dialog/DialogDocs.js +12 -0
  454. package/es/components/dialog/DialogDocs.js.map +1 -1
  455. package/es/components/drawer/DrawerDocs.d.ts +2 -0
  456. package/es/components/drawer/DrawerDocs.js +63 -0
  457. package/es/components/drawer/DrawerDocs.js.map +1 -0
  458. package/es/components/dropdown/DropdownDocs.d.ts +2 -0
  459. package/es/components/dropdown/DropdownDocs.js +23 -0
  460. package/es/components/dropdown/DropdownDocs.js.map +1 -0
  461. package/es/components/form-label/FormLabelDocs.d.ts +2 -0
  462. package/es/components/form-label/FormLabelDocs.js +53 -0
  463. package/es/components/form-label/FormLabelDocs.js.map +1 -0
  464. package/es/components/form-row/FormRow.d.ts +45 -0
  465. package/es/components/form-row/FormRowDocs.d.ts +2 -0
  466. package/es/components/form-row/FormRowDocs.js +83 -0
  467. package/es/components/form-row/FormRowDocs.js.map +1 -0
  468. package/es/components/form-set/FormSet.d.ts +18 -0
  469. package/es/components/form-set/FormSetDocs.d.ts +3 -0
  470. package/es/components/form-set/FormSetDocs.js +50 -0
  471. package/es/components/form-set/FormSetDocs.js.map +1 -0
  472. package/es/components/form-status/FormStatus.d.ts +18 -18
  473. package/es/components/form-status/FormStatusDocs.d.ts +2 -0
  474. package/es/components/form-status/FormStatusDocs.js +83 -0
  475. package/es/components/form-status/FormStatusDocs.js.map +1 -0
  476. package/es/components/global-error/GlobalError.d.ts +12 -0
  477. package/es/components/global-error/GlobalError.js +14 -6
  478. package/es/components/global-error/GlobalError.js.map +1 -1
  479. package/es/components/global-error/GlobalErrorDocs.js +14 -4
  480. package/es/components/global-error/GlobalErrorDocs.js.map +1 -1
  481. package/es/components/global-status/GlobalStatus.d.ts +37 -58
  482. package/es/components/global-status/GlobalStatusController.d.ts +0 -9
  483. package/es/components/global-status/GlobalStatusDocs.d.ts +6 -0
  484. package/es/components/global-status/GlobalStatusDocs.js +186 -0
  485. package/es/components/global-status/GlobalStatusDocs.js.map +1 -0
  486. package/es/components/heading/HeadingDocs.d.ts +2 -0
  487. package/es/components/heading/HeadingDocs.js +73 -0
  488. package/es/components/heading/HeadingDocs.js.map +1 -0
  489. package/es/components/help-button/HelpButtonDocs.d.ts +3 -0
  490. package/es/components/help-button/HelpButtonDocs.js +40 -0
  491. package/es/components/help-button/HelpButtonDocs.js.map +1 -0
  492. package/es/components/icon/IconDocs.d.ts +2 -0
  493. package/es/components/icon/IconDocs.js +53 -0
  494. package/es/components/icon/IconDocs.js.map +1 -0
  495. package/es/components/icon/IconPrimaryDocs.d.ts +2 -0
  496. package/es/components/icon/IconPrimaryDocs.js +18 -0
  497. package/es/components/icon/IconPrimaryDocs.js.map +1 -0
  498. package/es/components/info-card/InfoCard.d.ts +6 -1
  499. package/es/components/info-card/InfoCard.js +4 -3
  500. package/es/components/info-card/InfoCard.js.map +1 -1
  501. package/es/components/info-card/InfoCardDocs.js +8 -3
  502. package/es/components/info-card/InfoCardDocs.js.map +1 -1
  503. package/es/components/input/Input.d.ts +0 -21
  504. package/es/components/input/InputDocs.d.ts +1 -0
  505. package/es/components/input/InputDocs.js +32 -0
  506. package/es/components/input/InputDocs.js.map +1 -1
  507. package/es/components/input-masked/InputMasked.d.ts +0 -12
  508. package/es/components/input-masked/InputMaskedDocs.d.ts +1 -0
  509. package/es/components/input-masked/InputMaskedDocs.js +12 -0
  510. package/es/components/input-masked/InputMaskedDocs.js.map +1 -1
  511. package/es/components/input-masked/MultiInputMaskedDocs.d.ts +2 -0
  512. package/es/components/input-masked/MultiInputMaskedDocs.js +18 -0
  513. package/es/components/input-masked/MultiInputMaskedDocs.js.map +1 -0
  514. package/es/components/pagination/Pagination.d.ts +35 -33
  515. package/es/components/pagination/Pagination.js +2 -0
  516. package/es/components/pagination/Pagination.js.map +1 -1
  517. package/es/components/pagination/PaginationDocs.d.ts +3 -0
  518. package/es/components/pagination/PaginationDocs.js +185 -0
  519. package/es/components/pagination/PaginationDocs.js.map +1 -0
  520. package/es/components/pagination/PaginationHelpers.d.ts +0 -3
  521. package/es/components/pagination/PaginationInfinity.d.ts +0 -3
  522. package/es/components/pagination/PaginationProvider.js +1 -1
  523. package/es/components/pagination/PaginationProvider.js.map +1 -1
  524. package/es/components/radio/Radio.d.ts +12 -15
  525. package/es/components/radio/RadioDocs.d.ts +5 -0
  526. package/es/components/radio/RadioDocs.js +139 -0
  527. package/es/components/radio/RadioDocs.js.map +1 -0
  528. package/es/components/radio/RadioGroup.d.ts +0 -30
  529. package/es/components/skeleton/SkeletonDocs.d.ts +2 -0
  530. package/es/components/skeleton/SkeletonDocs.js +38 -0
  531. package/es/components/skeleton/SkeletonDocs.js.map +1 -0
  532. package/es/components/skeleton/SkeletonHelper.d.ts +0 -6
  533. package/es/components/skip-content/SkipContentDocs.d.ts +2 -0
  534. package/es/components/skip-content/SkipContentDocs.js +23 -0
  535. package/es/components/skip-content/SkipContentDocs.js.map +1 -0
  536. package/es/components/tag/TagDocs.d.ts +4 -0
  537. package/es/components/tag/TagDocs.js +87 -0
  538. package/es/components/tag/TagDocs.js.map +1 -0
  539. package/es/components/textarea/Textarea.d.ts +0 -12
  540. package/es/components/textarea/TextareaDocs.d.ts +1 -0
  541. package/es/components/textarea/TextareaDocs.js +22 -0
  542. package/es/components/textarea/TextareaDocs.js.map +1 -1
  543. package/es/components/timeline/TimelineDocs.d.ts +3 -0
  544. package/es/components/timeline/TimelineDocs.js +60 -0
  545. package/es/components/timeline/TimelineDocs.js.map +1 -0
  546. package/es/components/toggle-button/ToggleButton.d.ts +0 -3
  547. package/es/components/toggle-button/ToggleButtonDocs.d.ts +1 -0
  548. package/es/components/toggle-button/ToggleButtonDocs.js +7 -0
  549. package/es/components/toggle-button/ToggleButtonDocs.js.map +1 -1
  550. package/es/components/toggle-button/ToggleButtonGroup.d.ts +0 -3
  551. package/es/components/toggle-button/ToggleButtonGroupDocs.d.ts +1 -0
  552. package/es/components/toggle-button/ToggleButtonGroupDocs.js +7 -0
  553. package/es/components/toggle-button/ToggleButtonGroupDocs.js.map +1 -1
  554. package/es/components/tooltip/TooltipDocs.d.ts +2 -0
  555. package/es/components/tooltip/TooltipDocs.js +73 -0
  556. package/es/components/tooltip/TooltipDocs.js.map +1 -0
  557. package/es/components/upload/Upload.js +6 -4
  558. package/es/components/upload/Upload.js.map +1 -1
  559. package/es/components/upload/UploadDocs.js +5 -0
  560. package/es/components/upload/UploadDocs.js.map +1 -1
  561. package/es/components/upload/UploadFileList.js +3 -1
  562. package/es/components/upload/UploadFileList.js.map +1 -1
  563. package/es/components/upload/UploadFileListCell.d.ts +6 -1
  564. package/es/components/upload/UploadFileListCell.js +8 -5
  565. package/es/components/upload/UploadFileListCell.js.map +1 -1
  566. package/es/components/upload/types.d.ts +5 -0
  567. package/es/components/upload/types.js.map +1 -1
  568. package/es/components/upload/useUpload.d.ts +1 -0
  569. package/es/components/upload/useUpload.js +7 -1
  570. package/es/components/upload/useUpload.js.map +1 -1
  571. package/es/components/visually-hidden/VisuallyHiddenDocs.d.ts +2 -0
  572. package/es/components/visually-hidden/VisuallyHiddenDocs.js +13 -0
  573. package/es/components/visually-hidden/VisuallyHiddenDocs.js.map +1 -0
  574. package/es/extensions/forms/DataContext/Context.d.ts +6 -5
  575. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  576. package/es/extensions/forms/DataContext/Provider/Provider.js +28 -34
  577. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  578. package/es/extensions/forms/Field/Date/Date.d.ts +1 -0
  579. package/es/extensions/forms/Field/Date/Date.js +2 -3
  580. package/es/extensions/forms/Field/Date/Date.js.map +1 -1
  581. package/es/extensions/forms/Field/Password/Password.js +2 -1
  582. package/es/extensions/forms/Field/Password/Password.js.map +1 -1
  583. package/es/extensions/forms/Field/Provider/useFieldProvider.d.ts +9 -3
  584. package/es/extensions/forms/Field/Upload/Upload.d.ts +1 -1
  585. package/es/extensions/forms/Field/Upload/Upload.js +10 -2
  586. package/es/extensions/forms/Field/Upload/Upload.js.map +1 -1
  587. package/es/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js +4 -4
  588. package/es/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js.map +1 -1
  589. package/es/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
  590. package/es/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  591. package/es/extensions/forms/Form/Visibility/useVisibility.js +10 -14
  592. package/es/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  593. package/es/extensions/forms/Value/Date/Date.d.ts +0 -6
  594. package/es/extensions/forms/Value/Date/Date.js +13 -34
  595. package/es/extensions/forms/Value/Date/Date.js.map +1 -1
  596. package/es/extensions/forms/Wizard/Container/WizardContainer.js +2 -2
  597. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  598. package/es/extensions/forms/hooks/useFieldProps.js +3 -4
  599. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  600. package/es/extensions/payment-card/PaymentCard.d.ts +7 -7
  601. package/es/extensions/payment-card/PaymentCardDocs.d.ts +5 -0
  602. package/es/extensions/payment-card/PaymentCardDocs.js +199 -0
  603. package/es/extensions/payment-card/PaymentCardDocs.js.map +1 -0
  604. package/es/fragments/scroll-view/ScrollViewDocs.d.ts +2 -0
  605. package/es/fragments/scroll-view/ScrollViewDocs.js +13 -0
  606. package/es/fragments/scroll-view/ScrollViewDocs.js.map +1 -0
  607. package/es/fragments/text-counter/TextCounterDocs.d.ts +2 -0
  608. package/es/fragments/text-counter/TextCounterDocs.js +23 -0
  609. package/es/fragments/text-counter/TextCounterDocs.js.map +1 -0
  610. package/es/shared/Eufemia.d.ts +1 -1
  611. package/es/shared/Eufemia.js +2 -2
  612. package/es/shared/Eufemia.js.map +1 -1
  613. package/es/shared/MediaQueryDocs.d.ts +2 -0
  614. package/es/shared/MediaQueryDocs.js +28 -0
  615. package/es/shared/MediaQueryDocs.js.map +1 -0
  616. package/es/shared/ThemeDocs.d.ts +2 -0
  617. package/es/shared/ThemeDocs.js +33 -0
  618. package/es/shared/ThemeDocs.js.map +1 -0
  619. package/es/shared/locales/en-GB.d.ts +1 -0
  620. package/es/shared/locales/en-GB.js +1 -0
  621. package/es/shared/locales/en-GB.js.map +1 -1
  622. package/es/shared/locales/en-US.d.ts +1 -0
  623. package/es/shared/locales/index.d.ts +2 -0
  624. package/es/shared/locales/nb-NO.d.ts +1 -0
  625. package/es/shared/locales/nb-NO.js +1 -0
  626. package/es/shared/locales/nb-NO.js.map +1 -1
  627. package/es/shared/locales/sv-SE.d.ts +1 -0
  628. package/es/shared/locales/sv-SE.js +1 -0
  629. package/es/shared/locales/sv-SE.js.map +1 -1
  630. package/es/style/core/scopes.scss +1 -1
  631. package/es/style/dnb-ui-basis.css +1 -1
  632. package/es/style/dnb-ui-basis.min.css +1 -1
  633. package/es/style/dnb-ui-body.css +1 -1
  634. package/es/style/dnb-ui-body.min.css +1 -1
  635. package/es/style/dnb-ui-components.css +8 -0
  636. package/es/style/dnb-ui-components.min.css +1 -1
  637. package/es/style/dnb-ui-core.css +1 -1
  638. package/es/style/dnb-ui-core.min.css +1 -1
  639. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +13 -5
  640. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  641. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +13 -5
  642. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  643. package/es/style/themes/theme-ui/ui-theme-components.css +13 -5
  644. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  645. package/esm/dnb-ui-basis.min.mjs +1 -1
  646. package/esm/dnb-ui-components.min.mjs +1 -1
  647. package/esm/dnb-ui-elements.min.mjs +1 -1
  648. package/esm/dnb-ui-extensions.min.mjs +1 -1
  649. package/esm/dnb-ui-lib.min.mjs +1 -1
  650. package/extensions/forms/DataContext/Context.d.ts +6 -5
  651. package/extensions/forms/DataContext/Context.js.map +1 -1
  652. package/extensions/forms/DataContext/Provider/Provider.js +29 -35
  653. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  654. package/extensions/forms/Field/Date/Date.d.ts +1 -0
  655. package/extensions/forms/Field/Date/Date.js +2 -3
  656. package/extensions/forms/Field/Date/Date.js.map +1 -1
  657. package/extensions/forms/Field/Password/Password.js +2 -1
  658. package/extensions/forms/Field/Password/Password.js.map +1 -1
  659. package/extensions/forms/Field/Provider/useFieldProvider.d.ts +9 -3
  660. package/extensions/forms/Field/Upload/Upload.d.ts +1 -1
  661. package/extensions/forms/Field/Upload/Upload.js +10 -2
  662. package/extensions/forms/Field/Upload/Upload.js.map +1 -1
  663. package/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js +4 -4
  664. package/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js.map +1 -1
  665. package/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
  666. package/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  667. package/extensions/forms/Form/Visibility/useVisibility.js +10 -14
  668. package/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  669. package/extensions/forms/Value/Date/Date.d.ts +0 -6
  670. package/extensions/forms/Value/Date/Date.js +14 -36
  671. package/extensions/forms/Value/Date/Date.js.map +1 -1
  672. package/extensions/forms/Wizard/Container/WizardContainer.js +2 -2
  673. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  674. package/extensions/forms/hooks/useFieldProps.js +3 -4
  675. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  676. package/extensions/payment-card/PaymentCard.d.ts +7 -7
  677. package/extensions/payment-card/PaymentCardDocs.d.ts +5 -0
  678. package/extensions/payment-card/PaymentCardDocs.js +199 -0
  679. package/extensions/payment-card/PaymentCardDocs.js.map +1 -0
  680. package/fragments/scroll-view/ScrollViewDocs.d.ts +2 -0
  681. package/fragments/scroll-view/ScrollViewDocs.js +13 -0
  682. package/fragments/scroll-view/ScrollViewDocs.js.map +1 -0
  683. package/fragments/text-counter/TextCounterDocs.d.ts +2 -0
  684. package/fragments/text-counter/TextCounterDocs.js +23 -0
  685. package/fragments/text-counter/TextCounterDocs.js.map +1 -0
  686. package/package.json +1 -1
  687. package/shared/Eufemia.d.ts +1 -1
  688. package/shared/Eufemia.js +2 -2
  689. package/shared/Eufemia.js.map +1 -1
  690. package/shared/MediaQueryDocs.d.ts +2 -0
  691. package/shared/MediaQueryDocs.js +28 -0
  692. package/shared/MediaQueryDocs.js.map +1 -0
  693. package/shared/ThemeDocs.d.ts +2 -0
  694. package/shared/ThemeDocs.js +33 -0
  695. package/shared/ThemeDocs.js.map +1 -0
  696. package/shared/locales/en-GB.d.ts +1 -0
  697. package/shared/locales/en-GB.js +1 -0
  698. package/shared/locales/en-GB.js.map +1 -1
  699. package/shared/locales/en-US.d.ts +1 -0
  700. package/shared/locales/index.d.ts +2 -0
  701. package/shared/locales/nb-NO.d.ts +1 -0
  702. package/shared/locales/nb-NO.js +1 -0
  703. package/shared/locales/nb-NO.js.map +1 -1
  704. package/shared/locales/sv-SE.d.ts +1 -0
  705. package/shared/locales/sv-SE.js +1 -0
  706. package/shared/locales/sv-SE.js.map +1 -1
  707. package/style/core/scopes.scss +1 -1
  708. package/style/dnb-ui-basis.css +1 -1
  709. package/style/dnb-ui-basis.min.css +1 -1
  710. package/style/dnb-ui-body.css +1 -1
  711. package/style/dnb-ui-body.min.css +1 -1
  712. package/style/dnb-ui-components.css +8 -0
  713. package/style/dnb-ui-components.min.css +1 -1
  714. package/style/dnb-ui-core.css +1 -1
  715. package/style/dnb-ui-core.min.css +1 -1
  716. package/style/themes/theme-eiendom/eiendom-theme-components.css +13 -5
  717. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  718. package/style/themes/theme-sbanken/sbanken-theme-components.css +13 -5
  719. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  720. package/style/themes/theme-ui/ui-theme-components.css +13 -5
  721. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  722. package/umd/dnb-ui-basis.min.js +1 -1
  723. package/umd/dnb-ui-components.min.js +1 -1
  724. package/umd/dnb-ui-elements.min.js +1 -1
  725. package/umd/dnb-ui-extensions.min.js +1 -1
  726. package/umd/dnb-ui-lib.min.js +1 -1
@@ -9,7 +9,7 @@ import FormStatus from '../../components/FormStatus';
9
9
  import ProgressIndicator from '../../components/progress-indicator';
10
10
  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
11
  import { getPreviousSibling } from '../../shared/component-helper';
12
- import useUpload from './useUpload';
12
+ import useUpload, { isFileEqual } from './useUpload';
13
13
  import { getFileTypeFromExtension } from './UploadVerify';
14
14
  import UploadFileLink from './UploadFileListLink';
15
15
  export const fileExtensionImages = {
@@ -33,7 +33,8 @@ const UploadFileListCell = ({
33
33
  onClick,
34
34
  loadingText,
35
35
  deleteButtonText,
36
- download
36
+ download,
37
+ allowDuplicates
37
38
  }) => {
38
39
  var _div, _FormStatus;
39
40
  const {
@@ -45,6 +46,7 @@ const UploadFileListCell = ({
45
46
  const imageUrl = (file === null || file === void 0 ? void 0 : file.size) > 0 ? URL.createObjectURL(file) : null;
46
47
  const cellRef = useRef();
47
48
  const exists = useExistsHighlight(id, file);
49
+ const isDuplicate = !allowDuplicates && exists;
48
50
  const handleDisappearFocus = useCallback(() => {
49
51
  var _getPreviousSibling;
50
52
  const cellElement = cellRef.current;
@@ -58,7 +60,7 @@ const UploadFileListCell = ({
58
60
  onDelete();
59
61
  }, [handleDisappearFocus, onDelete]);
60
62
  return React.createElement("li", {
61
- className: classnames('dnb-upload__file-cell', hasWarning && 'dnb-upload__file-cell--warning', exists && 'dnb-upload__file-cell--highlight'),
63
+ className: classnames('dnb-upload__file-cell', hasWarning && 'dnb-upload__file-cell--warning', isDuplicate && 'dnb-upload__file-cell--highlight'),
62
64
  ref: cellRef
63
65
  }, React.createElement("div", {
64
66
  className: "dnb-upload__file-cell__content"
@@ -82,7 +84,8 @@ const UploadFileListCell = ({
82
84
  text: file.name,
83
85
  href: imageUrl,
84
86
  download: download,
85
- onClick: onClick
87
+ onClick: onClick,
88
+ bottom: 0
86
89
  }));
87
90
  }
88
91
  function getWarning() {
@@ -108,7 +111,7 @@ function useExistsHighlight(id, file) {
108
111
  exists,
109
112
  file: f
110
113
  }) => {
111
- return exists && f.name === file.name && f.size === file.size;
114
+ return exists && isFileEqual(file, f);
112
115
  });
113
116
  if (exists) {
114
117
  updateExists(true);
@@ -1 +1 @@
1
- {"version":3,"file":"UploadFileListCell.js","names":["React","useCallback","useRef","classnames","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","useUpload","getFileTypeFromExtension","UploadFileLink","fileExtensionImages","docx","odt","UploadFileListCell","id","uploadFile","onDelete","onClick","loadingText","deleteButtonText","download","_div","_FormStatus","errorMessage","isLoading","hasWarning","imageUrl","size","URL","createObjectURL","cellRef","exists","useExistsHighlight","handleDisappearFocus","_getPreviousSibling","cellElement","current","focusElement","querySelector","focus","preventScroll","onDeleteHandler","createElement","className","ref","getFileIcon","getTitle","icon","variant","icon_position","disabled","getWarning","text","name","href","top","stretch","internalFiles","updateExists","useState","timerRef","clearTimers","clearTimeout","useEffect","some","f","setTimeout","loading","_loading$size","_Icon","iconFileType","mimeParts","type","split","Object","prototype","hasOwnProperty","call"],"sources":["../../../../src/components/upload/UploadFileListCell.tsx"],"sourcesContent":["import React, { useCallback, 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_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 } from '../../shared/component-helper'\nimport useUpload from './useUpload'\nimport { getFileTypeFromExtension } from './UploadVerify'\nimport UploadFileLink from './UploadFileListLink'\nimport { ProgressIndicatorAllProps } from '../progress-indicator/types'\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 * Calls onClick when clicking the file name\n */\n onClick?: () => 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 onClick,\n loadingText,\n deleteButtonText,\n download,\n}: UploadFileListCellProps) => {\n const { file, errorMessage, isLoading } = uploadFile\n const hasWarning = errorMessage != null\n\n const imageUrl = file?.size > 0 ? URL.createObjectURL(file) : null\n const cellRef = useRef<HTMLLIElement>()\n const exists = useExistsHighlight(id, file)\n\n const handleDisappearFocus = useCallback(() => {\n const cellElement = cellRef.current\n const focusElement = getPreviousSibling(\n '.dnb-upload',\n cellElement\n )?.querySelector('.dnb-upload__file-input-button') as HTMLButtonElement\n focusElement?.focus({ preventScroll: true })\n }, [cellRef])\n\n const onDeleteHandler = useCallback(() => {\n handleDisappearFocus()\n\n onDelete()\n }, [handleDisappearFocus, onDelete])\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 {getFileIcon(file, { isLoading }, hasWarning)}\n {getTitle()}\n </div>\n <div>\n <Button\n icon={TrashIcon}\n variant=\"tertiary\"\n onClick={onDeleteHandler}\n icon_position=\"left\"\n disabled={isLoading}\n >\n {deleteButtonText}\n </Button>\n </div>\n </div>\n\n {getWarning()}\n </li>\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 <UploadFileLink\n text={file.name}\n href={imageUrl}\n download={download}\n onClick={onClick}\n />\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\nexport function getFileIcon(\n file: File,\n loading?: {\n isLoading: UploadFile['isLoading']\n size?: ProgressIndicatorAllProps['size']\n },\n hasWarning?: boolean\n) {\n if (loading?.isLoading) {\n return <ProgressIndicator size={loading?.size ?? 'default'} />\n }\n\n if (hasWarning) return <Icon icon={ExclamationIcon} />\n\n let iconFileType = getFileTypeFromExtension(file)\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"UploadFileListCell.js","names":["React","useCallback","useRef","classnames","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","useUpload","isFileEqual","getFileTypeFromExtension","UploadFileLink","fileExtensionImages","docx","odt","UploadFileListCell","id","uploadFile","onDelete","onClick","loadingText","deleteButtonText","download","allowDuplicates","_div","_FormStatus","errorMessage","isLoading","hasWarning","imageUrl","size","URL","createObjectURL","cellRef","exists","useExistsHighlight","isDuplicate","handleDisappearFocus","_getPreviousSibling","cellElement","current","focusElement","querySelector","focus","preventScroll","onDeleteHandler","createElement","className","ref","getFileIcon","getTitle","icon","variant","icon_position","disabled","getWarning","text","name","href","bottom","top","stretch","internalFiles","updateExists","useState","timerRef","clearTimers","clearTimeout","useEffect","some","f","setTimeout","loading","_loading$size","_Icon","iconFileType","mimeParts","type","split","Object","prototype","hasOwnProperty","call"],"sources":["../../../../src/components/upload/UploadFileListCell.tsx"],"sourcesContent":["import React, { useCallback, 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_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 } from '../../shared/component-helper'\nimport useUpload, { isFileEqual } from './useUpload'\nimport { getFileTypeFromExtension } from './UploadVerify'\nimport UploadFileLink from './UploadFileListLink'\nimport { ProgressIndicatorAllProps } from '../progress-indicator/types'\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 * Calls onClick when clicking the file name\n */\n onClick?: () => 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 * Allows uploading of duplicate files.\n * Default: false\n */\n allowDuplicates?: 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 onClick,\n loadingText,\n deleteButtonText,\n download,\n allowDuplicates,\n}: UploadFileListCellProps) => {\n const { file, errorMessage, isLoading } = uploadFile\n const hasWarning = errorMessage != null\n\n const imageUrl = file?.size > 0 ? URL.createObjectURL(file) : null\n const cellRef = useRef<HTMLLIElement>()\n const exists = useExistsHighlight(id, file)\n const isDuplicate = !allowDuplicates && exists\n\n const handleDisappearFocus = useCallback(() => {\n const cellElement = cellRef.current\n const focusElement = getPreviousSibling(\n '.dnb-upload',\n cellElement\n )?.querySelector('.dnb-upload__file-input-button') as HTMLButtonElement\n focusElement?.focus({ preventScroll: true })\n }, [cellRef])\n\n const onDeleteHandler = useCallback(() => {\n handleDisappearFocus()\n\n onDelete()\n }, [handleDisappearFocus, onDelete])\n\n return (\n <li\n className={classnames(\n 'dnb-upload__file-cell',\n hasWarning && 'dnb-upload__file-cell--warning',\n isDuplicate && '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 {getFileIcon(file, { isLoading }, hasWarning)}\n {getTitle()}\n </div>\n <div>\n <Button\n icon={TrashIcon}\n variant=\"tertiary\"\n onClick={onDeleteHandler}\n icon_position=\"left\"\n disabled={isLoading}\n >\n {deleteButtonText}\n </Button>\n </div>\n </div>\n\n {getWarning()}\n </li>\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 <UploadFileLink\n text={file.name}\n href={imageUrl}\n download={download}\n onClick={onClick}\n bottom={0}\n />\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 && isFileEqual(file, f)\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\nexport function getFileIcon(\n file: File,\n loading?: {\n isLoading: UploadFile['isLoading']\n size?: ProgressIndicatorAllProps['size']\n },\n hasWarning?: boolean\n) {\n if (loading?.isLoading) {\n return <ProgressIndicator size={loading?.size ?? 'default'} />\n }\n\n if (hasWarning) return <Icon icon={ExclamationIcon} />\n\n let iconFileType = getFileTypeFromExtension(file)\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"],"mappings":"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","ignoreList":[]}
@@ -55,6 +55,11 @@ export type UploadProps = {
55
55
  * Default: false
56
56
  */
57
57
  download?: boolean;
58
+ /**
59
+ * Allows uploading of duplicate files.
60
+ * Default: false
61
+ */
62
+ allowDuplicates?: boolean;
58
63
  /**
59
64
  * Custom text properties
60
65
  */
@@ -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'\nimport type { SharedStateId } from '../../shared/helpers/useSharedState'\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?: SharedStateId\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?: ({\n fileItem,\n }: {\n fileItem: UploadFile\n }) => void | Promise<void>\n\n /**\n * Will be called once a file gets clicked on by the user. Access the clicked file with `{ fileItem }`.\n */\n onFileClick?: ({\n fileItem,\n }: {\n fileItem: UploadFile\n }) => void | Promise<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<UploadAllProps>\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":"","ignoreList":[]}
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'\nimport type { SharedStateId } from '../../shared/helpers/useSharedState'\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?: SharedStateId\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?: ({\n fileItem,\n }: {\n fileItem: UploadFile\n }) => void | Promise<void>\n\n /**\n * Will be called once a file gets clicked on by the user. Access the clicked file with `{ fileItem }`.\n */\n onFileClick?: ({\n fileItem,\n }: {\n fileItem: UploadFile\n }) => void | Promise<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 * Allows uploading of duplicate files.\n * Default: false\n */\n allowDuplicates?: 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<UploadAllProps>\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":"","ignoreList":[]}
@@ -10,4 +10,5 @@ export type useUploadReturn = {
10
10
  * Use together with Upload with the same id to manage the files from outside the component.
11
11
  */
12
12
  declare function useUpload(id: UploadProps['id']): useUploadReturn;
13
+ export declare const isFileEqual: (fileA: File, fileB: File) => boolean;
13
14
  export default useUpload;
@@ -21,7 +21,7 @@ function useUpload(id) {
21
21
  return fileItems.find(({
22
22
  file: f
23
23
  }) => {
24
- return f.name === file.name && f.size === file.size && f.lastModified === file.lastModified;
24
+ return isFileEqual(file, f);
25
25
  });
26
26
  }, [files]);
27
27
  return {
@@ -32,5 +32,11 @@ function useUpload(id) {
32
32
  getExistingFile
33
33
  };
34
34
  }
35
+ export const isFileEqual = (fileA, fileB) => {
36
+ const compareExistingProperty = function (a, b, property) {
37
+ return a && property in a && b && property in b && (a[property] === 0 || b[property] === 0 || a[property] === b[property]);
38
+ };
39
+ return fileA.name === fileB.name && compareExistingProperty(fileA, fileB, 'size') && compareExistingProperty(fileA, fileB, 'lastModified');
40
+ };
35
41
  export default useUpload;
36
42
  //# sourceMappingURL=useUpload.js.map
@@ -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, UploadFileNative, UploadProps } 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: UploadProps['id']): 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,EAAqB,EAAmB;EACzD,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","ignoreList":[]}
1
+ {"version":3,"file":"useUpload.js","names":["useCallback","useMemo","useSharedState","useUpload","id","data","extend","setFiles","files","setInternalFiles","internalFiles","getExistingFile","file","fileItems","find","f","isFileEqual","fileA","fileB","compareExistingProperty","a","b","property","name"],"sources":["../../../../src/components/upload/useUpload.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport { useSharedState } from '../../shared/helpers/useSharedState'\nimport type { UploadFile, UploadFileNative, UploadProps } 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: UploadProps['id']): 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 isFileEqual(file, f)\n })\n },\n [files]\n )\n\n return {\n files,\n setFiles,\n internalFiles,\n setInternalFiles,\n getExistingFile,\n }\n}\n\nexport const isFileEqual = (fileA: File, fileB: File): boolean => {\n const compareExistingProperty = function (\n a: File,\n b: File,\n property: string\n ) {\n return (\n a &&\n property in a &&\n b &&\n property in b &&\n (a[property] === 0 || // If value is 0, which is default when not provided, we can't say whether the file is equal or not, so we assume they are.\n b[property] === 0 || // If value is 0, which is default when not provided, we can't say whether the file is equal or not, so we assume they are.\n a[property] === b[property])\n )\n }\n return (\n fileA.name === fileB.name &&\n compareExistingProperty(fileA, fileB, 'size') &&\n compareExistingProperty(fileA, fileB, 'lastModified')\n )\n}\n\nexport default useUpload\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,OAAO,QAAQ,OAAO;AAC5C,SAASC,cAAc,QAAQ,qCAAqC;AAiBpE,SAASC,SAASA,CAACC,EAAqB,EAAmB;EACzD,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,OAAOC,WAAW,CAACJ,IAAI,EAAEG,CAAC,CAAC;IAC7B,CAAC,CAAC;EACJ,CAAC,EACD,CAACP,KAAK,CACR,CAAC;EAED,OAAO;IACLA,KAAK;IACLD,QAAQ;IACRG,aAAa;IACbD,gBAAgB;IAChBE;EACF,CAAC;AACH;AAEA,OAAO,MAAMK,WAAW,GAAGA,CAACC,KAAW,EAAEC,KAAW,KAAc;EAChE,MAAMC,uBAAuB,GAAG,SAAAA,CAC9BC,CAAO,EACPC,CAAO,EACPC,QAAgB,EAChB;IACA,OACEF,CAAC,IACDE,QAAQ,IAAIF,CAAC,IACbC,CAAC,IACDC,QAAQ,IAAID,CAAC,KACZD,CAAC,CAACE,QAAQ,CAAC,KAAK,CAAC,IAChBD,CAAC,CAACC,QAAQ,CAAC,KAAK,CAAC,IACjBF,CAAC,CAACE,QAAQ,CAAC,KAAKD,CAAC,CAACC,QAAQ,CAAC,CAAC;EAElC,CAAC;EACD,OACEL,KAAK,CAACM,IAAI,KAAKL,KAAK,CAACK,IAAI,IACzBJ,uBAAuB,CAACF,KAAK,EAAEC,KAAK,EAAE,MAAM,CAAC,IAC7CC,uBAAuB,CAACF,KAAK,EAAEC,KAAK,EAAE,cAAc,CAAC;AAEzD,CAAC;AAED,eAAef,SAAS","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import { PropertiesTableProps } from '../../shared/types';
2
+ export declare const VisuallyHiddenProperties: PropertiesTableProps;
@@ -0,0 +1,13 @@
1
+ export const VisuallyHiddenProperties = {
2
+ focusable: {
3
+ doc: 'Set to `true` to hide an element by default, but to display it when it’s focused (e.g. by a keyboard-only user) root. Defaults to `false`.',
4
+ type: ['boolean'],
5
+ status: 'optional'
6
+ },
7
+ element: {
8
+ doc: 'Custom root HTML element for the component. Defaults to `<span>`.',
9
+ type: ['string', 'React.Element'],
10
+ status: 'optional'
11
+ }
12
+ };
13
+ //# sourceMappingURL=VisuallyHiddenDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisuallyHiddenDocs.js","names":["VisuallyHiddenProperties","focusable","doc","type","status","element"],"sources":["../../../../src/components/visually-hidden/VisuallyHiddenDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../shared/types'\n\nexport const VisuallyHiddenProperties: PropertiesTableProps = {\n focusable: {\n doc: 'Set to `true` to hide an element by default, but to display it when it’s focused (e.g. by a keyboard-only user) root. Defaults to `false`.',\n type: ['boolean'],\n status: 'optional',\n },\n element: {\n doc: 'Custom root HTML element for the component. Defaults to `<span>`.',\n type: ['string', 'React.Element'],\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,wBAA8C,GAAG;EAC5DC,SAAS,EAAE;IACTC,GAAG,EAAE,4IAA4I;IACjJC,IAAI,EAAE,CAAC,SAAS,CAAC;IACjBC,MAAM,EAAE;EACV,CAAC;EACDC,OAAO,EAAE;IACPH,GAAG,EAAE,mEAAmE;IACxEC,IAAI,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC;IACjCC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
@@ -13,9 +13,11 @@ export type MountState = {
13
13
  };
14
14
  export type EventListenerCall = {
15
15
  path?: Path;
16
- type?: 'onSubmit' | 'onSubmitRequest' | 'onPathChange' | 'onMount';
16
+ type?: 'onSubmit' | 'onSubmitCall' | 'onSubmitRequest' | 'onPathChange' | 'onMount';
17
17
  callback: (params?: {
18
18
  value: unknown;
19
+ } | {
20
+ preventSubmit: () => void;
19
21
  }) => void | Promise<void | Error>;
20
22
  };
21
23
  export type VisibleDataHandler<Data> = (data?: Data, options?: VisibleDataOptions) => Partial<Data>;
@@ -109,13 +111,12 @@ export interface ContextState {
109
111
  }) => Promise<EventStateObject | undefined>;
110
112
  getSubmitData?: () => unknown;
111
113
  getSubmitParams?: () => OnSubmitParams;
112
- setFieldEventListener?: (path: EventListenerCall['path'], type: EventListenerCall['type'], callback: EventListenerCall['callback']) => void;
114
+ setFieldEventListener?: (path: EventListenerCall['path'], type: EventListenerCall['type'], callback: EventListenerCall['callback'], params?: {
115
+ remove?: boolean;
116
+ }) => void;
113
117
  revealError?: (path: Path, hasError: boolean) => void;
114
118
  setFieldInternals?: (path: Path, props: unknown, id?: string) => void;
115
119
  setValueInternals?: (path: Path, props: unknown) => void;
116
- setHandleSubmit?: (callback: HandleSubmitCallback, params?: {
117
- remove?: boolean;
118
- }) => void;
119
120
  setFieldConnection?: (path: Path, connections: FieldConnections) => void;
120
121
  isEmptyDataRef?: React.MutableRefObject<boolean>;
121
122
  addSetShowAllErrorsRef?: React.MutableRefObject<Array<(showAllErrors: boolean) => void>>;
@@ -1 +1 @@
1
- {"version":3,"file":"Context.js","names":["React","makeAjvInstance","defaultContextState","hasContext","data","undefined","schema","submitState","handlePathChange","handlePathChangeUnvalidated","updateDataValue","setData","validateData","handleSubmit","scrollToTop","showAllErrors","hasVisibleError","formState","setFormState","setSubmitState","handleSubmitCall","setShowAllErrors","setMountedFieldState","hasErrors","hasFieldState","hasFieldError","ajvInstance","contextErrorMessages","props","Context","createContext"],"sources":["../../../../../src/extensions/forms/DataContext/Context.ts"],"sourcesContent":["import React from 'react'\nimport { Ajv, FormError, JsonObject, makeAjvInstance } from '../utils'\nimport {\n AllJSONSchemaVersions,\n GlobalErrorMessagesWithPaths,\n SubmitState,\n Path,\n EventStateObject,\n EventReturnWithStateObject,\n FieldProps,\n ValueProps,\n OnChange,\n OnSubmitParams,\n CountryCode,\n} from '../types'\nimport { Props as ProviderProps } from './Provider'\nimport { SnapshotName } from '../Form/Snapshot'\nimport { SharedStateId } from '../../../shared/helpers/useSharedState'\n\nexport type MountState = {\n isPreMounted?: boolean\n isMounted?: boolean\n isVisible?: boolean\n isFocused?: boolean\n wasStepChange?: boolean\n}\n\nexport type EventListenerCall = {\n path?: Path\n type?: 'onSubmit' | 'onSubmitRequest' | 'onPathChange' | 'onMount'\n callback: (params?: { value: unknown }) => void | Promise<void | Error>\n}\n\nexport type VisibleDataHandler<Data> = (\n data?: Data,\n options?: VisibleDataOptions\n) => Partial<Data>\nexport type VisibleDataOptions = {\n keepPaths?: Array<Path>\n removePaths?: Array<Path>\n}\nexport type MutateDataHandler<Data> = (\n data: Data,\n mutate: TransformData\n) => Partial<Data>\nexport type FilterDataHandler<Data> = (\n data: Data,\n filter: FilterData\n) => Partial<Data>\nexport type FilterDataHandlerCallback<R> = (\n parameters: FilterDataHandlerParameters\n) => R\nexport type FilterDataHandlerParameters = DataPathHandlerParameters & {\n path: Path\n}\nexport type DataPathHandler<Data = unknown> = (\n parameters: DataPathHandlerParameters<Data>\n) => boolean | undefined\nexport type DataPathHandlerParameters<Data = unknown> = {\n path: Path\n value: unknown\n displayValue: undefined | React.ReactNode | Array<React.ReactNode>\n label: React.ReactNode\n props: FieldProps\n error: Error | undefined\n\n /**\n * Used in the \"filterData\" given by the \"useData\" hook.\n */\n data: Data\n\n /** @deprecated – can be removed in v11 */\n internal: {\n error: Error | undefined\n }\n}\nexport type FilterDataPathObject<Data> = Record<\n Path,\n DataPathHandler<Data> | boolean | undefined\n>\nexport type FilterData<Data = unknown> =\n | FilterDataPathObject<Data>\n | FilterDataHandlerCallback<boolean | undefined>\nexport type VisibleData<Data = unknown> = Partial<Data>\nexport type TransformData = FilterDataHandlerCallback<unknown>\nexport type HandleSubmitCallback = ({\n preventSubmit,\n}: {\n preventSubmit: () => void\n}) => void\nexport type FieldConnections = {\n setEventResult?: (status: EventStateObject) => void\n}\nexport type FieldInternalsRefProps =\n | (FieldProps & { children: unknown })\n | undefined\nexport type FieldInternalsRef = Record<\n Path,\n {\n props: FieldInternalsRefProps\n id: string | undefined\n }\n>\nexport type ValueInternalsRef = Record<\n Path,\n { props: ValueProps | undefined }\n>\n\nexport interface ContextState {\n id?: SharedStateId\n hasContext: boolean\n /** The dataset for the form / form wizard */\n data: any\n internalDataRef?: React.MutableRefObject<any>\n /** Should the form validate data before submitting? */\n errors?: Record<Path, Error>\n /** Will set autoComplete=\"on\" on each nested Field.String and Field.Number */\n autoComplete?: boolean\n handlePathChange: (\n path: Path,\n value?: any\n ) =>\n | EventReturnWithStateObject\n | unknown\n | Promise<EventReturnWithStateObject | unknown>\n handlePathChangeUnvalidated: (path: Path, value: any) => void\n updateDataValue: (\n path: Path,\n value: any,\n options?: { preventUpdate?: boolean }\n ) => void\n setData: (data: any) => void\n clearData?: () => void\n mutateDataHandler?: MutateDataHandler<unknown>\n filterDataHandler?: FilterDataHandler<unknown>\n visibleDataHandler?: VisibleDataHandler<unknown>\n validateData: () => void\n handleSubmit: () => Promise<EventStateObject | undefined>\n scrollToTop: () => void\n setShowAllErrors: (showAllErrors: boolean) => void\n hasErrors: () => boolean\n hasFieldState: (state: SubmitState) => boolean\n hasFieldError: (path: Path) => boolean\n setFieldState?: (path: Path, fieldState: SubmitState) => void\n setFieldError?: (path: Path, error: Error | FormError) => void\n setMountedFieldState: (path: Path, options: MountState) => void\n setFormState?: (\n state: SubmitState,\n options?: { keepPending?: boolean }\n ) => void\n setSubmitState?: (state: EventStateObject) => void\n addOnChangeHandler?: (callback: OnChange) => void\n handleSubmitCall: ({\n onSubmit,\n enableAsyncBehavior,\n skipFieldValidation,\n skipErrorCheck,\n }: {\n onSubmit: () =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n enableAsyncBehavior: boolean\n skipFieldValidation?: boolean\n skipErrorCheck?: boolean\n }) => Promise<EventStateObject | undefined>\n getSubmitData?: () => unknown\n getSubmitParams?: () => OnSubmitParams\n setFieldEventListener?: (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback']\n ) => void\n revealError?: (path: Path, hasError: boolean) => void\n setFieldInternals?: (path: Path, props: unknown, id?: string) => void\n setValueInternals?: (path: Path, props: unknown) => void\n setHandleSubmit?: (\n callback: HandleSubmitCallback,\n params?: { remove?: boolean }\n ) => void\n setFieldConnection?: (path: Path, connections: FieldConnections) => void\n isEmptyDataRef?: React.MutableRefObject<boolean>\n addSetShowAllErrorsRef?: React.MutableRefObject<\n Array<(showAllErrors: boolean) => void>\n >\n fieldDisplayValueRef?: React.MutableRefObject<\n Record<Path, { type: 'field'; value?: React.ReactNode }>\n >\n fieldInternalsRef?: React.MutableRefObject<FieldInternalsRef>\n valueInternalsRef?: React.MutableRefObject<ValueInternalsRef>\n fieldConnectionsRef?: React.RefObject<Record<Path, FieldConnections>>\n mountedFieldsRef?: React.MutableRefObject<Map<Path, MountState>>\n snapshotsRef?: React.MutableRefObject<\n Map<SnapshotName, Map<Path, unknown>>\n >\n existingFieldsRef?: React.MutableRefObject<Map<Path, boolean>>\n formElementRef?: React.MutableRefObject<HTMLFormElement>\n fieldErrorRef?: React.MutableRefObject<Record<Path, Error>>\n showAllErrors: boolean | number\n hasVisibleError: boolean\n formState: SubmitState\n ajvInstance: Ajv\n contextErrorMessages: GlobalErrorMessagesWithPaths\n schema: AllJSONSchemaVersions\n path?: Path\n disabled?: boolean\n required?: boolean\n countryCode?: CountryCode\n submitState: Partial<EventStateObject>\n prerenderFieldProps?: boolean\n decoupleForm?: boolean\n hasElementRef?: React.MutableRefObject<boolean>\n restHandlerProps?: Record<string, unknown>\n props: ProviderProps<JsonObject>\n}\n\nexport const defaultContextState: ContextState = {\n hasContext: false,\n data: undefined,\n schema: undefined,\n submitState: undefined,\n handlePathChange: () => null,\n handlePathChangeUnvalidated: () => null,\n updateDataValue: () => null,\n setData: () => null,\n validateData: () => null,\n handleSubmit: () => null,\n scrollToTop: () => null,\n showAllErrors: false,\n hasVisibleError: false,\n formState: undefined,\n setFormState: () => null,\n setSubmitState: () => null,\n handleSubmitCall: () => null,\n setShowAllErrors: () => null,\n setMountedFieldState: () => null,\n hasErrors: () => false,\n hasFieldState: () => false,\n hasFieldError: () => false,\n ajvInstance: makeAjvInstance(),\n contextErrorMessages: undefined,\n props: null,\n}\n\nconst Context = React.createContext<ContextState>(defaultContextState)\n\nexport default Context\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAqCC,eAAe,QAAQ,UAAU;AAuNtE,OAAO,MAAMC,mBAAiC,GAAG;EAC/CC,UAAU,EAAE,KAAK;EACjBC,IAAI,EAAEC,SAAS;EACfC,MAAM,EAAED,SAAS;EACjBE,WAAW,EAAEF,SAAS;EACtBG,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,2BAA2B,EAAEA,CAAA,KAAM,IAAI;EACvCC,eAAe,EAAEA,CAAA,KAAM,IAAI;EAC3BC,OAAO,EAAEA,CAAA,KAAM,IAAI;EACnBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,WAAW,EAAEA,CAAA,KAAM,IAAI;EACvBC,aAAa,EAAE,KAAK;EACpBC,eAAe,EAAE,KAAK;EACtBC,SAAS,EAAEZ,SAAS;EACpBa,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,cAAc,EAAEA,CAAA,KAAM,IAAI;EAC1BC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,oBAAoB,EAAEA,CAAA,KAAM,IAAI;EAChCC,SAAS,EAAEA,CAAA,KAAM,KAAK;EACtBC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,WAAW,EAAEzB,eAAe,CAAC,CAAC;EAC9B0B,oBAAoB,EAAEtB,SAAS;EAC/BuB,KAAK,EAAE;AACT,CAAC;AAED,MAAMC,OAAO,GAAG7B,KAAK,CAAC8B,aAAa,CAAe5B,mBAAmB,CAAC;AAEtE,eAAe2B,OAAO","ignoreList":[]}
1
+ {"version":3,"file":"Context.js","names":["React","makeAjvInstance","defaultContextState","hasContext","data","undefined","schema","submitState","handlePathChange","handlePathChangeUnvalidated","updateDataValue","setData","validateData","handleSubmit","scrollToTop","showAllErrors","hasVisibleError","formState","setFormState","setSubmitState","handleSubmitCall","setShowAllErrors","setMountedFieldState","hasErrors","hasFieldState","hasFieldError","ajvInstance","contextErrorMessages","props","Context","createContext"],"sources":["../../../../../src/extensions/forms/DataContext/Context.ts"],"sourcesContent":["import React from 'react'\nimport { Ajv, FormError, JsonObject, makeAjvInstance } from '../utils'\nimport {\n AllJSONSchemaVersions,\n GlobalErrorMessagesWithPaths,\n SubmitState,\n Path,\n EventStateObject,\n EventReturnWithStateObject,\n FieldProps,\n ValueProps,\n OnChange,\n OnSubmitParams,\n CountryCode,\n} from '../types'\nimport { Props as ProviderProps } from './Provider'\nimport { SnapshotName } from '../Form/Snapshot'\nimport { SharedStateId } from '../../../shared/helpers/useSharedState'\n\nexport type MountState = {\n isPreMounted?: boolean\n isMounted?: boolean\n isVisible?: boolean\n isFocused?: boolean\n wasStepChange?: boolean\n}\n\nexport type EventListenerCall = {\n path?: Path\n type?:\n | 'onSubmit'\n | 'onSubmitCall'\n | 'onSubmitRequest'\n | 'onPathChange'\n | 'onMount'\n callback: (\n params?: { value: unknown } | { preventSubmit: () => void }\n ) => void | Promise<void | Error>\n}\n\nexport type VisibleDataHandler<Data> = (\n data?: Data,\n options?: VisibleDataOptions\n) => Partial<Data>\nexport type VisibleDataOptions = {\n keepPaths?: Array<Path>\n removePaths?: Array<Path>\n}\nexport type MutateDataHandler<Data> = (\n data: Data,\n mutate: TransformData\n) => Partial<Data>\nexport type FilterDataHandler<Data> = (\n data: Data,\n filter: FilterData\n) => Partial<Data>\nexport type FilterDataHandlerCallback<R> = (\n parameters: FilterDataHandlerParameters\n) => R\nexport type FilterDataHandlerParameters = DataPathHandlerParameters & {\n path: Path\n}\nexport type DataPathHandler<Data = unknown> = (\n parameters: DataPathHandlerParameters<Data>\n) => boolean | undefined\nexport type DataPathHandlerParameters<Data = unknown> = {\n path: Path\n value: unknown\n displayValue: undefined | React.ReactNode | Array<React.ReactNode>\n label: React.ReactNode\n props: FieldProps\n error: Error | undefined\n\n /**\n * Used in the \"filterData\" given by the \"useData\" hook.\n */\n data: Data\n\n /** @deprecated – can be removed in v11 */\n internal: {\n error: Error | undefined\n }\n}\nexport type FilterDataPathObject<Data> = Record<\n Path,\n DataPathHandler<Data> | boolean | undefined\n>\nexport type FilterData<Data = unknown> =\n | FilterDataPathObject<Data>\n | FilterDataHandlerCallback<boolean | undefined>\nexport type VisibleData<Data = unknown> = Partial<Data>\nexport type TransformData = FilterDataHandlerCallback<unknown>\nexport type HandleSubmitCallback = ({\n preventSubmit,\n}: {\n preventSubmit: () => void\n}) => void\nexport type FieldConnections = {\n setEventResult?: (status: EventStateObject) => void\n}\nexport type FieldInternalsRefProps =\n | (FieldProps & { children: unknown })\n | undefined\nexport type FieldInternalsRef = Record<\n Path,\n {\n props: FieldInternalsRefProps\n id: string | undefined\n }\n>\nexport type ValueInternalsRef = Record<\n Path,\n { props: ValueProps | undefined }\n>\n\nexport interface ContextState {\n id?: SharedStateId\n hasContext: boolean\n /** The dataset for the form / form wizard */\n data: any\n internalDataRef?: React.MutableRefObject<any>\n /** Should the form validate data before submitting? */\n errors?: Record<Path, Error>\n /** Will set autoComplete=\"on\" on each nested Field.String and Field.Number */\n autoComplete?: boolean\n handlePathChange: (\n path: Path,\n value?: any\n ) =>\n | EventReturnWithStateObject\n | unknown\n | Promise<EventReturnWithStateObject | unknown>\n handlePathChangeUnvalidated: (path: Path, value: any) => void\n updateDataValue: (\n path: Path,\n value: any,\n options?: { preventUpdate?: boolean }\n ) => void\n setData: (data: any) => void\n clearData?: () => void\n mutateDataHandler?: MutateDataHandler<unknown>\n filterDataHandler?: FilterDataHandler<unknown>\n visibleDataHandler?: VisibleDataHandler<unknown>\n validateData: () => void\n handleSubmit: () => Promise<EventStateObject | undefined>\n scrollToTop: () => void\n setShowAllErrors: (showAllErrors: boolean) => void\n hasErrors: () => boolean\n hasFieldState: (state: SubmitState) => boolean\n hasFieldError: (path: Path) => boolean\n setFieldState?: (path: Path, fieldState: SubmitState) => void\n setFieldError?: (path: Path, error: Error | FormError) => void\n setMountedFieldState: (path: Path, options: MountState) => void\n setFormState?: (\n state: SubmitState,\n options?: { keepPending?: boolean }\n ) => void\n setSubmitState?: (state: EventStateObject) => void\n addOnChangeHandler?: (callback: OnChange) => void\n handleSubmitCall: ({\n onSubmit,\n enableAsyncBehavior,\n skipFieldValidation,\n skipErrorCheck,\n }: {\n onSubmit: () =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n enableAsyncBehavior: boolean\n skipFieldValidation?: boolean\n skipErrorCheck?: boolean\n }) => Promise<EventStateObject | undefined>\n getSubmitData?: () => unknown\n getSubmitParams?: () => OnSubmitParams\n setFieldEventListener?: (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback'],\n params?: { remove?: boolean }\n ) => void\n revealError?: (path: Path, hasError: boolean) => void\n setFieldInternals?: (path: Path, props: unknown, id?: string) => void\n setValueInternals?: (path: Path, props: unknown) => void\n setFieldConnection?: (path: Path, connections: FieldConnections) => void\n isEmptyDataRef?: React.MutableRefObject<boolean>\n addSetShowAllErrorsRef?: React.MutableRefObject<\n Array<(showAllErrors: boolean) => void>\n >\n fieldDisplayValueRef?: React.MutableRefObject<\n Record<Path, { type: 'field'; value?: React.ReactNode }>\n >\n fieldInternalsRef?: React.MutableRefObject<FieldInternalsRef>\n valueInternalsRef?: React.MutableRefObject<ValueInternalsRef>\n fieldConnectionsRef?: React.RefObject<Record<Path, FieldConnections>>\n mountedFieldsRef?: React.MutableRefObject<Map<Path, MountState>>\n snapshotsRef?: React.MutableRefObject<\n Map<SnapshotName, Map<Path, unknown>>\n >\n existingFieldsRef?: React.MutableRefObject<Map<Path, boolean>>\n formElementRef?: React.MutableRefObject<HTMLFormElement>\n fieldErrorRef?: React.MutableRefObject<Record<Path, Error>>\n showAllErrors: boolean | number\n hasVisibleError: boolean\n formState: SubmitState\n ajvInstance: Ajv\n contextErrorMessages: GlobalErrorMessagesWithPaths\n schema: AllJSONSchemaVersions\n path?: Path\n disabled?: boolean\n required?: boolean\n countryCode?: CountryCode\n submitState: Partial<EventStateObject>\n prerenderFieldProps?: boolean\n decoupleForm?: boolean\n hasElementRef?: React.MutableRefObject<boolean>\n restHandlerProps?: Record<string, unknown>\n props: ProviderProps<JsonObject>\n}\n\nexport const defaultContextState: ContextState = {\n hasContext: false,\n data: undefined,\n schema: undefined,\n submitState: undefined,\n handlePathChange: () => null,\n handlePathChangeUnvalidated: () => null,\n updateDataValue: () => null,\n setData: () => null,\n validateData: () => null,\n handleSubmit: () => null,\n scrollToTop: () => null,\n showAllErrors: false,\n hasVisibleError: false,\n formState: undefined,\n setFormState: () => null,\n setSubmitState: () => null,\n handleSubmitCall: () => null,\n setShowAllErrors: () => null,\n setMountedFieldState: () => null,\n hasErrors: () => false,\n hasFieldState: () => false,\n hasFieldError: () => false,\n ajvInstance: makeAjvInstance(),\n contextErrorMessages: undefined,\n props: null,\n}\n\nconst Context = React.createContext<ContextState>(defaultContextState)\n\nexport default Context\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAqCC,eAAe,QAAQ,UAAU;AA2NtE,OAAO,MAAMC,mBAAiC,GAAG;EAC/CC,UAAU,EAAE,KAAK;EACjBC,IAAI,EAAEC,SAAS;EACfC,MAAM,EAAED,SAAS;EACjBE,WAAW,EAAEF,SAAS;EACtBG,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,2BAA2B,EAAEA,CAAA,KAAM,IAAI;EACvCC,eAAe,EAAEA,CAAA,KAAM,IAAI;EAC3BC,OAAO,EAAEA,CAAA,KAAM,IAAI;EACnBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,WAAW,EAAEA,CAAA,KAAM,IAAI;EACvBC,aAAa,EAAE,KAAK;EACpBC,eAAe,EAAE,KAAK;EACtBC,SAAS,EAAEZ,SAAS;EACpBa,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,cAAc,EAAEA,CAAA,KAAM,IAAI;EAC1BC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,oBAAoB,EAAEA,CAAA,KAAM,IAAI;EAChCC,SAAS,EAAEA,CAAA,KAAM,KAAK;EACtBC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,WAAW,EAAEzB,eAAe,CAAC,CAAC;EAC9B0B,oBAAoB,EAAEtB,SAAS;EAC/BuB,KAAK,EAAE;AACT,CAAC;AAED,MAAMC,OAAO,GAAG7B,KAAK,CAAC8B,aAAa,CAAe5B,mBAAmB,CAAC;AAEtE,eAAe2B,OAAO","ignoreList":[]}
@@ -535,7 +535,7 @@ export default function Provider(props) {
535
535
  type,
536
536
  callback
537
537
  } = item;
538
- if (type === 'onSubmit' && (_mountedFieldsRef$cur2 = mountedFieldsRef.current.get(path)) !== null && _mountedFieldsRef$cur2 !== void 0 && _mountedFieldsRef$cur2.isMounted) {
538
+ if (type === 'onSubmitCall' && (_mountedFieldsRef$cur2 = mountedFieldsRef.current.get(path)) !== null && _mountedFieldsRef$cur2 !== void 0 && _mountedFieldsRef$cur2.isMounted) {
539
539
  if (asyncBehaviorIsEnabled) {
540
540
  await callback();
541
541
  } else {
@@ -582,9 +582,8 @@ export default function Provider(props) {
582
582
  }
583
583
  } else {
584
584
  if (asyncBehaviorIsEnabled) {
585
- window.requestAnimationFrame(() => {
586
- setFormState(undefined);
587
- });
585
+ await new Promise(resolve => window.requestAnimationFrame(resolve));
586
+ setFormState(undefined);
588
587
  if (!skipFieldValidation) {
589
588
  onSubmitContinueRef.current = () => {
590
589
  window.requestAnimationFrame(() => {
@@ -611,27 +610,6 @@ export default function Provider(props) {
611
610
  }
612
611
  return result;
613
612
  }, [clearData, getDataPathHandlerParameters, hasErrors, hasFieldState, hasFieldWithAsyncValidator, isolate, onCommit, onSubmitRequest, setFormState, setShowAllErrors, setSubmitState]);
614
- const handleSubmitListenersRef = useRef([]);
615
- const setHandleSubmit = useCallback((callback, {
616
- remove = false
617
- } = {}) => {
618
- const listeners = handleSubmitListenersRef.current;
619
- if (remove) {
620
- handleSubmitListenersRef.current = listeners.filter(item => item !== callback);
621
- } else if (!listeners.includes(callback)) {
622
- listeners.push(callback);
623
- }
624
- }, []);
625
- const handleSubmitListeners = useCallback(() => {
626
- let stop = false;
627
- const preventSubmit = () => stop = true;
628
- handleSubmitListenersRef.current.forEach(cb => {
629
- cb({
630
- preventSubmit
631
- });
632
- });
633
- return stop;
634
- }, []);
635
613
  const getSubmitData = useCallback(() => {
636
614
  const data = internalDataRef.current;
637
615
  const mutatedData = transformOut ? mutateDataHandler(data, transformOut) : data;
@@ -673,7 +651,20 @@ export default function Provider(props) {
673
651
  return await handleSubmitCall({
674
652
  enableAsyncBehavior: isAsync(onSubmit),
675
653
  onSubmit: async () => {
676
- if (handleSubmitListeners()) {
654
+ let stop = false;
655
+ const preventSubmit = () => stop = true;
656
+ for (const item of fieldEventListenersRef.current) {
657
+ const {
658
+ type,
659
+ callback
660
+ } = item;
661
+ if (type === 'onSubmit') {
662
+ callback({
663
+ preventSubmit
664
+ });
665
+ }
666
+ }
667
+ if (stop) {
677
668
  return;
678
669
  }
679
670
  const data = getSubmitData();
@@ -694,9 +685,11 @@ export default function Provider(props) {
694
685
  return result;
695
686
  }
696
687
  });
697
- }, [getSubmitData, getSubmitParams, handleSubmitCall, handleSubmitListeners, onSubmit, onSubmitComplete, scrollToTop, scrollTopOnSubmit]);
688
+ }, [getSubmitData, getSubmitParams, handleSubmitCall, onSubmit, onSubmitComplete, scrollToTop, scrollTopOnSubmit]);
698
689
  const fieldEventListenersRef = useRef([]);
699
- const setFieldEventListener = useCallback((path, type, callback) => {
690
+ const setFieldEventListener = useCallback((path, type, callback, {
691
+ remove = false
692
+ } = {}) => {
700
693
  fieldEventListenersRef.current = fieldEventListenersRef.current.filter(({
701
694
  path: p,
702
695
  type: t,
@@ -704,11 +697,13 @@ export default function Provider(props) {
704
697
  }) => {
705
698
  return !(p === path && t === type && c === callback);
706
699
  });
707
- fieldEventListenersRef.current.push({
708
- path,
709
- type,
710
- callback
711
- });
700
+ if (!remove) {
701
+ fieldEventListenersRef.current.push({
702
+ path,
703
+ type,
704
+ callback
705
+ });
706
+ }
712
707
  }, []);
713
708
  const onSubmitContinueRef = useRef(null);
714
709
  if (!hasFieldState('pending')) {
@@ -819,7 +814,6 @@ export default function Provider(props) {
819
814
  getSubmitData,
820
815
  getSubmitParams,
821
816
  addOnChangeHandler,
822
- setHandleSubmit,
823
817
  scrollToTop,
824
818
  schema,
825
819
  disabled,