@dnb/eufemia 10.57.1 → 10.58.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 (528) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/cjs/components/date-picker/DatePickerContext.d.ts +1 -1
  3. package/cjs/components/date-picker/DatePickerContext.js.map +1 -1
  4. package/cjs/components/date-picker/DatePickerFooter.js +5 -5
  5. package/cjs/components/date-picker/DatePickerFooter.js.map +1 -1
  6. package/cjs/components/date-picker/DatePickerProvider.js +2 -2
  7. package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
  8. package/cjs/components/date-picker/hooks/useDates.d.ts +1 -1
  9. package/cjs/components/date-picker/hooks/useDates.js +94 -23
  10. package/cjs/components/date-picker/hooks/useDates.js.map +1 -1
  11. package/cjs/components/dialog/parts/DialogAction.js +18 -16
  12. package/cjs/components/dialog/parts/DialogAction.js.map +1 -1
  13. package/cjs/components/number-format/NumberUtils.js +15 -15
  14. package/cjs/components/number-format/NumberUtils.js.map +1 -1
  15. package/cjs/extensions/forms/DataContext/Context.d.ts +8 -5
  16. package/cjs/extensions/forms/DataContext/Context.js +0 -1
  17. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  18. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +4 -3
  19. package/cjs/extensions/forms/DataContext/Provider/Provider.js +2 -2
  20. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  21. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
  22. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  23. package/cjs/extensions/forms/Field/Date/Date.js +2 -2
  24. package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
  25. package/cjs/extensions/forms/Field/Provider/FieldProvider.d.ts +3 -2
  26. package/cjs/extensions/forms/Field/Provider/FieldProvider.js.map +1 -1
  27. package/cjs/extensions/forms/Field/Upload/Upload.js +11 -3
  28. package/cjs/extensions/forms/Field/Upload/Upload.js.map +1 -1
  29. package/cjs/extensions/forms/Form/Element/Element.d.ts +2 -2
  30. package/cjs/extensions/forms/Form/Element/Element.js +50 -11
  31. package/cjs/extensions/forms/Form/Element/Element.js.map +1 -1
  32. package/cjs/extensions/forms/Form/Handler/Handler.d.ts +7 -3
  33. package/cjs/extensions/forms/Form/Handler/Handler.js +23 -97
  34. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  35. package/cjs/extensions/forms/Form/Isolation/Isolation.d.ts +3 -3
  36. package/cjs/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  37. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js +1 -1
  38. package/cjs/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js.map +1 -1
  39. package/cjs/extensions/forms/Form/Section/Section.d.ts +4 -4
  40. package/cjs/extensions/forms/Form/Section/Section.js +2 -1
  41. package/cjs/extensions/forms/Form/Section/Section.js.map +1 -1
  42. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js +1 -1
  43. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js.map +1 -1
  44. package/cjs/extensions/forms/Form/Section/containers/SectionContainer.d.ts +1 -1
  45. package/cjs/extensions/forms/Form/Section/containers/SectionContainer.js +1 -0
  46. package/cjs/extensions/forms/Form/Section/containers/SectionContainer.js.map +1 -1
  47. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.css +10 -6
  48. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -1
  49. package/cjs/extensions/forms/Form/Section/style/dnb-form-section.scss +13 -7
  50. package/cjs/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.css +3 -0
  51. package/cjs/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.min.css +1 -0
  52. package/cjs/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.scss +7 -0
  53. package/cjs/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.css +4 -0
  54. package/cjs/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.min.css +1 -0
  55. package/cjs/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.scss +8 -0
  56. package/cjs/extensions/forms/Form/Section/style/themes/ui.d.ts +1 -0
  57. package/cjs/extensions/forms/Form/Section/style/themes/ui.js +4 -0
  58. package/cjs/extensions/forms/Form/Section/style/themes/ui.js.map +1 -0
  59. package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.js +3 -3
  60. package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
  61. package/cjs/extensions/forms/Form/data-context/clearData.d.ts +2 -1
  62. package/cjs/extensions/forms/Form/data-context/clearData.js +1 -1
  63. package/cjs/extensions/forms/Form/data-context/clearData.js.map +1 -1
  64. package/cjs/extensions/forms/Form/data-context/getData.js +1 -1
  65. package/cjs/extensions/forms/Form/data-context/getData.js.map +1 -1
  66. package/cjs/extensions/forms/Form/data-context/useData.js +1 -1
  67. package/cjs/extensions/forms/Form/data-context/useData.js.map +1 -1
  68. package/cjs/extensions/forms/Form/data-context/useValidation.js +2 -2
  69. package/cjs/extensions/forms/Form/data-context/useValidation.js.map +1 -1
  70. package/cjs/extensions/forms/Iterate/Array/ArrayItemArea.d.ts +3 -2
  71. package/cjs/extensions/forms/Iterate/Array/ArrayItemArea.js +9 -5
  72. package/cjs/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -1
  73. package/cjs/extensions/forms/Iterate/Array/ArrayItemAreaContext.d.ts +3 -0
  74. package/cjs/extensions/forms/Iterate/Array/ArrayItemAreaContext.js.map +1 -1
  75. package/cjs/extensions/forms/Iterate/Count/Count.d.ts +4 -3
  76. package/cjs/extensions/forms/Iterate/Count/Count.js.map +1 -1
  77. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.d.ts +1 -1
  78. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js +7 -4
  79. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  80. package/cjs/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +2 -2
  81. package/cjs/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
  82. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +1 -1
  83. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  84. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.d.ts +3 -1
  85. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js +27 -6
  86. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  87. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButtonDocs.js +5 -0
  88. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButtonDocs.js.map +1 -1
  89. package/cjs/extensions/forms/Iterate/Toolbar/Toolbar.js +8 -4
  90. package/cjs/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  91. package/cjs/extensions/forms/Iterate/ViewContainer/RemoveButton.d.ts +2 -1
  92. package/cjs/extensions/forms/Iterate/ViewContainer/RemoveButton.js +4 -3
  93. package/cjs/extensions/forms/Iterate/ViewContainer/RemoveButton.js.map +1 -1
  94. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.d.ts +1 -1
  95. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js +3 -2
  96. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  97. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +2 -2
  98. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
  99. package/cjs/extensions/forms/Iterate/hooks/useItem.d.ts +5 -1
  100. package/cjs/extensions/forms/Iterate/hooks/useItem.js.map +1 -1
  101. package/cjs/extensions/forms/Tools/ListAllProps.d.ts +7 -7
  102. package/cjs/extensions/forms/Tools/ListAllProps.js.map +1 -1
  103. package/cjs/extensions/forms/Value/PhoneNumber/PhoneNumber.js +1 -1
  104. package/cjs/extensions/forms/Value/PhoneNumber/PhoneNumber.js.map +1 -1
  105. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +1 -1
  106. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  107. package/cjs/extensions/forms/Wizard/hooks/useStep.d.ts +2 -2
  108. package/cjs/extensions/forms/Wizard/hooks/useStep.js +1 -1
  109. package/cjs/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  110. package/cjs/extensions/forms/Wizard/style/themes/dnb-wizard-layout-theme-ui.scss +2 -0
  111. package/cjs/extensions/forms/constants/countries.js +1 -1
  112. package/cjs/extensions/forms/constants/countries.js.map +1 -1
  113. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +1 -0
  114. package/cjs/extensions/forms/constants/locales/en-GB.js +2 -1
  115. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  116. package/cjs/extensions/forms/constants/locales/en-US.d.ts +1 -0
  117. package/cjs/extensions/forms/constants/locales/index.d.ts +2 -0
  118. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
  119. package/cjs/extensions/forms/constants/locales/nb-NO.js +2 -1
  120. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  121. package/cjs/extensions/forms/hooks/useDataContext.js +1 -1
  122. package/cjs/extensions/forms/hooks/useDataContext.js.map +1 -1
  123. package/cjs/extensions/forms/hooks/useSnapshot.d.ts +3 -2
  124. package/cjs/extensions/forms/hooks/useSnapshot.js.map +1 -1
  125. package/cjs/extensions/forms/style/dnb-forms.css +10 -6
  126. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  127. package/cjs/extensions/forms/types.d.ts +4 -4
  128. package/cjs/extensions/forms/types.js.map +1 -1
  129. package/cjs/extensions/forms/utils/json-pointer/json-pointer.d.ts +2 -2
  130. package/cjs/extensions/forms/utils/json-pointer/json-pointer.js.map +1 -1
  131. package/cjs/shared/Eufemia.d.ts +1 -1
  132. package/cjs/shared/Eufemia.js +2 -2
  133. package/cjs/shared/Eufemia.js.map +1 -1
  134. package/cjs/shared/helpers/useSharedState.d.ts +19 -13
  135. package/cjs/shared/helpers/useSharedState.js +23 -11
  136. package/cjs/shared/helpers/useSharedState.js.map +1 -1
  137. package/cjs/style/core/scopes.scss +1 -1
  138. package/cjs/style/dnb-ui-basis.css +1 -1
  139. package/cjs/style/dnb-ui-basis.min.css +1 -1
  140. package/cjs/style/dnb-ui-body.css +1 -1
  141. package/cjs/style/dnb-ui-body.min.css +1 -1
  142. package/cjs/style/dnb-ui-components.css +10 -6
  143. package/cjs/style/dnb-ui-components.min.css +1 -1
  144. package/cjs/style/dnb-ui-core.css +1 -1
  145. package/cjs/style/dnb-ui-core.min.css +1 -1
  146. package/cjs/style/dnb-ui-extensions.css +10 -6
  147. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  148. package/cjs/style/dnb-ui-forms.css +10 -6
  149. package/cjs/style/dnb-ui-forms.min.css +1 -1
  150. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +25 -12
  151. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  152. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +15 -6
  153. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +2 -2
  154. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -0
  155. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +15 -6
  156. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +2 -2
  157. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.scss +1 -0
  158. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +24 -12
  159. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  160. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +14 -6
  161. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +2 -2
  162. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -0
  163. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +14 -6
  164. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +2 -2
  165. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.scss +1 -0
  166. package/cjs/style/themes/theme-ui/ui-theme-components.css +25 -12
  167. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  168. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +15 -6
  169. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +2 -2
  170. package/cjs/style/themes/theme-ui/ui-theme-extensions.scss +1 -0
  171. package/cjs/style/themes/theme-ui/ui-theme-forms.css +15 -6
  172. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +2 -2
  173. package/cjs/style/themes/theme-ui/ui-theme-forms.scss +1 -0
  174. package/components/date-picker/DatePickerContext.d.ts +1 -1
  175. package/components/date-picker/DatePickerContext.js.map +1 -1
  176. package/components/date-picker/DatePickerFooter.js +5 -5
  177. package/components/date-picker/DatePickerFooter.js.map +1 -1
  178. package/components/date-picker/DatePickerProvider.js +2 -2
  179. package/components/date-picker/DatePickerProvider.js.map +1 -1
  180. package/components/date-picker/hooks/useDates.d.ts +1 -1
  181. package/components/date-picker/hooks/useDates.js +95 -24
  182. package/components/date-picker/hooks/useDates.js.map +1 -1
  183. package/components/dialog/parts/DialogAction.js +19 -17
  184. package/components/dialog/parts/DialogAction.js.map +1 -1
  185. package/components/number-format/NumberUtils.js +15 -15
  186. package/components/number-format/NumberUtils.js.map +1 -1
  187. package/es/components/date-picker/DatePickerContext.d.ts +1 -1
  188. package/es/components/date-picker/DatePickerContext.js.map +1 -1
  189. package/es/components/date-picker/DatePickerFooter.js +5 -5
  190. package/es/components/date-picker/DatePickerFooter.js.map +1 -1
  191. package/es/components/date-picker/DatePickerProvider.js +2 -2
  192. package/es/components/date-picker/DatePickerProvider.js.map +1 -1
  193. package/es/components/date-picker/hooks/useDates.d.ts +1 -1
  194. package/es/components/date-picker/hooks/useDates.js +87 -17
  195. package/es/components/date-picker/hooks/useDates.js.map +1 -1
  196. package/es/components/dialog/parts/DialogAction.js +19 -17
  197. package/es/components/dialog/parts/DialogAction.js.map +1 -1
  198. package/es/components/number-format/NumberUtils.js +15 -15
  199. package/es/components/number-format/NumberUtils.js.map +1 -1
  200. package/es/extensions/forms/DataContext/Context.d.ts +8 -5
  201. package/es/extensions/forms/DataContext/Context.js +0 -1
  202. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  203. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +4 -3
  204. package/es/extensions/forms/DataContext/Provider/Provider.js +3 -3
  205. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  206. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
  207. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  208. package/es/extensions/forms/Field/Date/Date.js +2 -2
  209. package/es/extensions/forms/Field/Date/Date.js.map +1 -1
  210. package/es/extensions/forms/Field/Provider/FieldProvider.d.ts +3 -2
  211. package/es/extensions/forms/Field/Provider/FieldProvider.js.map +1 -1
  212. package/es/extensions/forms/Field/Upload/Upload.js +6 -1
  213. package/es/extensions/forms/Field/Upload/Upload.js.map +1 -1
  214. package/es/extensions/forms/Form/Element/Element.d.ts +2 -2
  215. package/es/extensions/forms/Form/Element/Element.js +45 -12
  216. package/es/extensions/forms/Form/Element/Element.js.map +1 -1
  217. package/es/extensions/forms/Form/Handler/Handler.d.ts +7 -3
  218. package/es/extensions/forms/Form/Handler/Handler.js +24 -93
  219. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  220. package/es/extensions/forms/Form/Isolation/Isolation.d.ts +3 -3
  221. package/es/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  222. package/es/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js +1 -1
  223. package/es/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js.map +1 -1
  224. package/es/extensions/forms/Form/Section/Section.d.ts +4 -4
  225. package/es/extensions/forms/Form/Section/Section.js +2 -1
  226. package/es/extensions/forms/Form/Section/Section.js.map +1 -1
  227. package/es/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js +1 -1
  228. package/es/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js.map +1 -1
  229. package/es/extensions/forms/Form/Section/containers/SectionContainer.d.ts +1 -1
  230. package/es/extensions/forms/Form/Section/containers/SectionContainer.js +1 -0
  231. package/es/extensions/forms/Form/Section/containers/SectionContainer.js.map +1 -1
  232. package/es/extensions/forms/Form/Section/style/dnb-form-section.css +10 -6
  233. package/es/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -1
  234. package/es/extensions/forms/Form/Section/style/dnb-form-section.scss +13 -7
  235. package/es/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.css +3 -0
  236. package/es/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.min.css +1 -0
  237. package/es/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.scss +7 -0
  238. package/es/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.css +4 -0
  239. package/es/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.min.css +1 -0
  240. package/es/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.scss +8 -0
  241. package/es/extensions/forms/Form/Section/style/themes/ui.d.ts +1 -0
  242. package/es/extensions/forms/Form/Section/style/themes/ui.js +1 -0
  243. package/es/extensions/forms/Form/Section/style/themes/ui.js.map +1 -0
  244. package/es/extensions/forms/Form/SubmitButton/SubmitButton.js +3 -3
  245. package/es/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
  246. package/es/extensions/forms/Form/data-context/clearData.d.ts +2 -1
  247. package/es/extensions/forms/Form/data-context/clearData.js +2 -2
  248. package/es/extensions/forms/Form/data-context/clearData.js.map +1 -1
  249. package/es/extensions/forms/Form/data-context/getData.js +2 -2
  250. package/es/extensions/forms/Form/data-context/getData.js.map +1 -1
  251. package/es/extensions/forms/Form/data-context/useData.js +2 -2
  252. package/es/extensions/forms/Form/data-context/useData.js.map +1 -1
  253. package/es/extensions/forms/Form/data-context/useValidation.js +3 -3
  254. package/es/extensions/forms/Form/data-context/useValidation.js.map +1 -1
  255. package/es/extensions/forms/Iterate/Array/ArrayItemArea.d.ts +3 -2
  256. package/es/extensions/forms/Iterate/Array/ArrayItemArea.js +9 -5
  257. package/es/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -1
  258. package/es/extensions/forms/Iterate/Array/ArrayItemAreaContext.d.ts +3 -0
  259. package/es/extensions/forms/Iterate/Array/ArrayItemAreaContext.js.map +1 -1
  260. package/es/extensions/forms/Iterate/Count/Count.d.ts +4 -3
  261. package/es/extensions/forms/Iterate/Count/Count.js.map +1 -1
  262. package/es/extensions/forms/Iterate/EditContainer/EditContainer.d.ts +1 -1
  263. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js +7 -4
  264. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  265. package/es/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +2 -2
  266. package/es/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
  267. package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +1 -1
  268. package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  269. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.d.ts +3 -1
  270. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js +25 -7
  271. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  272. package/es/extensions/forms/Iterate/RemoveButton/RemoveButtonDocs.js +5 -0
  273. package/es/extensions/forms/Iterate/RemoveButton/RemoveButtonDocs.js.map +1 -1
  274. package/es/extensions/forms/Iterate/Toolbar/Toolbar.js +8 -4
  275. package/es/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  276. package/es/extensions/forms/Iterate/ViewContainer/RemoveButton.d.ts +2 -1
  277. package/es/extensions/forms/Iterate/ViewContainer/RemoveButton.js +4 -3
  278. package/es/extensions/forms/Iterate/ViewContainer/RemoveButton.js.map +1 -1
  279. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.d.ts +1 -1
  280. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js +3 -2
  281. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  282. package/es/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +2 -2
  283. package/es/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
  284. package/es/extensions/forms/Iterate/hooks/useItem.d.ts +5 -1
  285. package/es/extensions/forms/Iterate/hooks/useItem.js.map +1 -1
  286. package/es/extensions/forms/Tools/ListAllProps.d.ts +7 -7
  287. package/es/extensions/forms/Tools/ListAllProps.js.map +1 -1
  288. package/es/extensions/forms/Value/PhoneNumber/PhoneNumber.js +2 -2
  289. package/es/extensions/forms/Value/PhoneNumber/PhoneNumber.js.map +1 -1
  290. package/es/extensions/forms/Wizard/Container/WizardContainer.js +2 -2
  291. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  292. package/es/extensions/forms/Wizard/hooks/useStep.d.ts +2 -2
  293. package/es/extensions/forms/Wizard/hooks/useStep.js +2 -2
  294. package/es/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  295. package/es/extensions/forms/Wizard/style/themes/dnb-wizard-layout-theme-ui.scss +2 -0
  296. package/es/extensions/forms/constants/countries.js +1 -1
  297. package/es/extensions/forms/constants/countries.js.map +1 -1
  298. package/es/extensions/forms/constants/locales/en-GB.d.ts +1 -0
  299. package/es/extensions/forms/constants/locales/en-GB.js +2 -1
  300. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  301. package/es/extensions/forms/constants/locales/en-US.d.ts +1 -0
  302. package/es/extensions/forms/constants/locales/index.d.ts +2 -0
  303. package/es/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
  304. package/es/extensions/forms/constants/locales/nb-NO.js +2 -1
  305. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  306. package/es/extensions/forms/hooks/useDataContext.js +2 -2
  307. package/es/extensions/forms/hooks/useDataContext.js.map +1 -1
  308. package/es/extensions/forms/hooks/useSnapshot.d.ts +3 -2
  309. package/es/extensions/forms/hooks/useSnapshot.js.map +1 -1
  310. package/es/extensions/forms/style/dnb-forms.css +10 -6
  311. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  312. package/es/extensions/forms/types.d.ts +4 -4
  313. package/es/extensions/forms/types.js.map +1 -1
  314. package/es/extensions/forms/utils/json-pointer/json-pointer.d.ts +2 -2
  315. package/es/extensions/forms/utils/json-pointer/json-pointer.js.map +1 -1
  316. package/es/shared/Eufemia.d.ts +1 -1
  317. package/es/shared/Eufemia.js +2 -2
  318. package/es/shared/Eufemia.js.map +1 -1
  319. package/es/shared/helpers/useSharedState.d.ts +19 -13
  320. package/es/shared/helpers/useSharedState.js +22 -11
  321. package/es/shared/helpers/useSharedState.js.map +1 -1
  322. package/es/style/core/scopes.scss +1 -1
  323. package/es/style/dnb-ui-basis.css +1 -1
  324. package/es/style/dnb-ui-basis.min.css +1 -1
  325. package/es/style/dnb-ui-body.css +1 -1
  326. package/es/style/dnb-ui-body.min.css +1 -1
  327. package/es/style/dnb-ui-components.css +10 -6
  328. package/es/style/dnb-ui-components.min.css +1 -1
  329. package/es/style/dnb-ui-core.css +1 -1
  330. package/es/style/dnb-ui-core.min.css +1 -1
  331. package/es/style/dnb-ui-extensions.css +10 -6
  332. package/es/style/dnb-ui-extensions.min.css +1 -1
  333. package/es/style/dnb-ui-forms.css +10 -6
  334. package/es/style/dnb-ui-forms.min.css +1 -1
  335. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +25 -12
  336. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  337. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +15 -6
  338. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +2 -2
  339. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -0
  340. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +15 -6
  341. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +2 -2
  342. package/es/style/themes/theme-eiendom/eiendom-theme-forms.scss +1 -0
  343. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +24 -12
  344. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  345. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +14 -6
  346. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +2 -2
  347. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -0
  348. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +14 -6
  349. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +2 -2
  350. package/es/style/themes/theme-sbanken/sbanken-theme-forms.scss +1 -0
  351. package/es/style/themes/theme-ui/ui-theme-components.css +25 -12
  352. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  353. package/es/style/themes/theme-ui/ui-theme-extensions.css +15 -6
  354. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +2 -2
  355. package/es/style/themes/theme-ui/ui-theme-extensions.scss +1 -0
  356. package/es/style/themes/theme-ui/ui-theme-forms.css +15 -6
  357. package/es/style/themes/theme-ui/ui-theme-forms.min.css +2 -2
  358. package/es/style/themes/theme-ui/ui-theme-forms.scss +1 -0
  359. package/esm/dnb-ui-basis.min.mjs +1 -1
  360. package/esm/dnb-ui-components.min.mjs +1 -1
  361. package/esm/dnb-ui-elements.min.mjs +1 -1
  362. package/esm/dnb-ui-extensions.min.mjs +1 -1
  363. package/esm/dnb-ui-lib.min.mjs +1 -1
  364. package/extensions/forms/DataContext/Context.d.ts +8 -5
  365. package/extensions/forms/DataContext/Context.js +0 -1
  366. package/extensions/forms/DataContext/Context.js.map +1 -1
  367. package/extensions/forms/DataContext/Provider/Provider.d.ts +4 -3
  368. package/extensions/forms/DataContext/Provider/Provider.js +3 -3
  369. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  370. package/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
  371. package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  372. package/extensions/forms/Field/Date/Date.js +2 -2
  373. package/extensions/forms/Field/Date/Date.js.map +1 -1
  374. package/extensions/forms/Field/Provider/FieldProvider.d.ts +3 -2
  375. package/extensions/forms/Field/Provider/FieldProvider.js.map +1 -1
  376. package/extensions/forms/Field/Upload/Upload.js +11 -3
  377. package/extensions/forms/Field/Upload/Upload.js.map +1 -1
  378. package/extensions/forms/Form/Element/Element.d.ts +2 -2
  379. package/extensions/forms/Form/Element/Element.js +50 -13
  380. package/extensions/forms/Form/Element/Element.js.map +1 -1
  381. package/extensions/forms/Form/Handler/Handler.d.ts +7 -3
  382. package/extensions/forms/Form/Handler/Handler.js +24 -97
  383. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  384. package/extensions/forms/Form/Isolation/Isolation.d.ts +3 -3
  385. package/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  386. package/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js +1 -1
  387. package/extensions/forms/Form/Section/EditContainer/EditContainerDocs.js.map +1 -1
  388. package/extensions/forms/Form/Section/Section.d.ts +4 -4
  389. package/extensions/forms/Form/Section/Section.js +2 -1
  390. package/extensions/forms/Form/Section/Section.js.map +1 -1
  391. package/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js +1 -1
  392. package/extensions/forms/Form/Section/ViewContainer/ViewContainerDocs.js.map +1 -1
  393. package/extensions/forms/Form/Section/containers/SectionContainer.d.ts +1 -1
  394. package/extensions/forms/Form/Section/containers/SectionContainer.js +1 -0
  395. package/extensions/forms/Form/Section/containers/SectionContainer.js.map +1 -1
  396. package/extensions/forms/Form/Section/style/dnb-form-section.css +10 -6
  397. package/extensions/forms/Form/Section/style/dnb-form-section.min.css +1 -1
  398. package/extensions/forms/Form/Section/style/dnb-form-section.scss +13 -7
  399. package/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.css +3 -0
  400. package/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.min.css +1 -0
  401. package/extensions/forms/Form/Section/style/themes/dnb-section-theme-sbanken.scss +7 -0
  402. package/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.css +4 -0
  403. package/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.min.css +1 -0
  404. package/extensions/forms/Form/Section/style/themes/dnb-section-theme-ui.scss +8 -0
  405. package/extensions/forms/Form/Section/style/themes/ui.d.ts +1 -0
  406. package/extensions/forms/Form/Section/style/themes/ui.js +1 -0
  407. package/extensions/forms/Form/Section/style/themes/ui.js.map +1 -0
  408. package/extensions/forms/Form/SubmitButton/SubmitButton.js +3 -3
  409. package/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
  410. package/extensions/forms/Form/data-context/clearData.d.ts +2 -1
  411. package/extensions/forms/Form/data-context/clearData.js +2 -2
  412. package/extensions/forms/Form/data-context/clearData.js.map +1 -1
  413. package/extensions/forms/Form/data-context/getData.js +2 -2
  414. package/extensions/forms/Form/data-context/getData.js.map +1 -1
  415. package/extensions/forms/Form/data-context/useData.js +2 -2
  416. package/extensions/forms/Form/data-context/useData.js.map +1 -1
  417. package/extensions/forms/Form/data-context/useValidation.js +3 -3
  418. package/extensions/forms/Form/data-context/useValidation.js.map +1 -1
  419. package/extensions/forms/Iterate/Array/ArrayItemArea.d.ts +3 -2
  420. package/extensions/forms/Iterate/Array/ArrayItemArea.js +9 -5
  421. package/extensions/forms/Iterate/Array/ArrayItemArea.js.map +1 -1
  422. package/extensions/forms/Iterate/Array/ArrayItemAreaContext.d.ts +3 -0
  423. package/extensions/forms/Iterate/Array/ArrayItemAreaContext.js.map +1 -1
  424. package/extensions/forms/Iterate/Count/Count.d.ts +4 -3
  425. package/extensions/forms/Iterate/Count/Count.js.map +1 -1
  426. package/extensions/forms/Iterate/EditContainer/EditContainer.d.ts +1 -1
  427. package/extensions/forms/Iterate/EditContainer/EditContainer.js +7 -4
  428. package/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  429. package/extensions/forms/Iterate/EditContainer/EditContainerDocs.js +2 -2
  430. package/extensions/forms/Iterate/EditContainer/EditContainerDocs.js.map +1 -1
  431. package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +1 -1
  432. package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  433. package/extensions/forms/Iterate/RemoveButton/RemoveButton.d.ts +3 -1
  434. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js +26 -7
  435. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  436. package/extensions/forms/Iterate/RemoveButton/RemoveButtonDocs.js +5 -0
  437. package/extensions/forms/Iterate/RemoveButton/RemoveButtonDocs.js.map +1 -1
  438. package/extensions/forms/Iterate/Toolbar/Toolbar.js +8 -4
  439. package/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  440. package/extensions/forms/Iterate/ViewContainer/RemoveButton.d.ts +2 -1
  441. package/extensions/forms/Iterate/ViewContainer/RemoveButton.js +4 -3
  442. package/extensions/forms/Iterate/ViewContainer/RemoveButton.js.map +1 -1
  443. package/extensions/forms/Iterate/ViewContainer/ViewContainer.d.ts +1 -1
  444. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js +3 -2
  445. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  446. package/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js +2 -2
  447. package/extensions/forms/Iterate/ViewContainer/ViewContainerDocs.js.map +1 -1
  448. package/extensions/forms/Iterate/hooks/useItem.d.ts +5 -1
  449. package/extensions/forms/Iterate/hooks/useItem.js.map +1 -1
  450. package/extensions/forms/Tools/ListAllProps.d.ts +7 -7
  451. package/extensions/forms/Tools/ListAllProps.js.map +1 -1
  452. package/extensions/forms/Value/PhoneNumber/PhoneNumber.js +2 -2
  453. package/extensions/forms/Value/PhoneNumber/PhoneNumber.js.map +1 -1
  454. package/extensions/forms/Wizard/Container/WizardContainer.js +2 -2
  455. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  456. package/extensions/forms/Wizard/hooks/useStep.d.ts +2 -2
  457. package/extensions/forms/Wizard/hooks/useStep.js +2 -2
  458. package/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  459. package/extensions/forms/Wizard/style/themes/dnb-wizard-layout-theme-ui.scss +2 -0
  460. package/extensions/forms/constants/countries.js +1 -1
  461. package/extensions/forms/constants/countries.js.map +1 -1
  462. package/extensions/forms/constants/locales/en-GB.d.ts +1 -0
  463. package/extensions/forms/constants/locales/en-GB.js +2 -1
  464. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  465. package/extensions/forms/constants/locales/en-US.d.ts +1 -0
  466. package/extensions/forms/constants/locales/index.d.ts +2 -0
  467. package/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
  468. package/extensions/forms/constants/locales/nb-NO.js +2 -1
  469. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  470. package/extensions/forms/hooks/useDataContext.js +2 -2
  471. package/extensions/forms/hooks/useDataContext.js.map +1 -1
  472. package/extensions/forms/hooks/useSnapshot.d.ts +3 -2
  473. package/extensions/forms/hooks/useSnapshot.js.map +1 -1
  474. package/extensions/forms/style/dnb-forms.css +10 -6
  475. package/extensions/forms/style/dnb-forms.min.css +1 -1
  476. package/extensions/forms/types.d.ts +4 -4
  477. package/extensions/forms/types.js.map +1 -1
  478. package/extensions/forms/utils/json-pointer/json-pointer.d.ts +2 -2
  479. package/extensions/forms/utils/json-pointer/json-pointer.js.map +1 -1
  480. package/package.json +1 -1
  481. package/shared/Eufemia.d.ts +1 -1
  482. package/shared/Eufemia.js +2 -2
  483. package/shared/Eufemia.js.map +1 -1
  484. package/shared/helpers/useSharedState.d.ts +19 -13
  485. package/shared/helpers/useSharedState.js +22 -11
  486. package/shared/helpers/useSharedState.js.map +1 -1
  487. package/style/core/scopes.scss +1 -1
  488. package/style/dnb-ui-basis.css +1 -1
  489. package/style/dnb-ui-basis.min.css +1 -1
  490. package/style/dnb-ui-body.css +1 -1
  491. package/style/dnb-ui-body.min.css +1 -1
  492. package/style/dnb-ui-components.css +10 -6
  493. package/style/dnb-ui-components.min.css +1 -1
  494. package/style/dnb-ui-core.css +1 -1
  495. package/style/dnb-ui-core.min.css +1 -1
  496. package/style/dnb-ui-extensions.css +10 -6
  497. package/style/dnb-ui-extensions.min.css +1 -1
  498. package/style/dnb-ui-forms.css +10 -6
  499. package/style/dnb-ui-forms.min.css +1 -1
  500. package/style/themes/theme-eiendom/eiendom-theme-components.css +25 -12
  501. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  502. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +15 -6
  503. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +2 -2
  504. package/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -0
  505. package/style/themes/theme-eiendom/eiendom-theme-forms.css +15 -6
  506. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +2 -2
  507. package/style/themes/theme-eiendom/eiendom-theme-forms.scss +1 -0
  508. package/style/themes/theme-sbanken/sbanken-theme-components.css +24 -12
  509. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  510. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +14 -6
  511. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +2 -2
  512. package/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -0
  513. package/style/themes/theme-sbanken/sbanken-theme-forms.css +14 -6
  514. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +2 -2
  515. package/style/themes/theme-sbanken/sbanken-theme-forms.scss +1 -0
  516. package/style/themes/theme-ui/ui-theme-components.css +25 -12
  517. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  518. package/style/themes/theme-ui/ui-theme-extensions.css +15 -6
  519. package/style/themes/theme-ui/ui-theme-extensions.min.css +2 -2
  520. package/style/themes/theme-ui/ui-theme-extensions.scss +1 -0
  521. package/style/themes/theme-ui/ui-theme-forms.css +15 -6
  522. package/style/themes/theme-ui/ui-theme-forms.min.css +2 -2
  523. package/style/themes/theme-ui/ui-theme-forms.scss +1 -0
  524. package/umd/dnb-ui-basis.min.js +1 -1
  525. package/umd/dnb-ui-components.min.js +1 -1
  526. package/umd/dnb-ui-elements.min.js +1 -1
  527. package/umd/dnb-ui-extensions.min.js +1 -1
  528. package/umd/dnb-ui-lib.min.js +1 -1
@@ -7,28 +7,42 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
7
7
  import { convertStringToDate, isDisabled } from '../DatePickerCalc';
8
8
  import isValid from 'date-fns/isValid';
9
9
  import format from 'date-fns/format';
10
- import { addMonths } from 'date-fns';
10
+ import { addMonths, isSameDay } from 'date-fns';
11
11
  export default function useDates(dateProps, {
12
12
  dateFormat,
13
13
  isRange = false,
14
14
  shouldCorrectDate = false
15
15
  }) {
16
- const [previousDates, setPreviousDates] = useState(dateProps);
17
- const [dates, setDates] = useState(_objectSpread({}, mapDates(dateProps, previousDates, {
16
+ const [previousDateProps, setPreviousDateProps] = useState(dateProps);
17
+ const [dates, setDates] = useState(_objectSpread({}, mapDates(dateProps, {
18
18
  dateFormat,
19
19
  isRange,
20
20
  shouldCorrectDate
21
21
  })));
22
22
  const hasDatePropChanges = useMemo(() => Object.keys(dateProps).some(date => {
23
- return dateProps[date] !== previousDates[date];
24
- }), [dateProps, previousDates]);
23
+ const dateProp = dateProps[date];
24
+ const previousDate = previousDateProps[date];
25
+ const convertedDateProp = convertStringToDate(dateProp, {
26
+ dateFormat
27
+ });
28
+ const convertedPreviousDate = convertStringToDate(previousDate, {
29
+ dateFormat
30
+ });
31
+ if (convertedDateProp instanceof Date && convertedPreviousDate instanceof Date) {
32
+ return !isSameDay(convertedDateProp, convertedPreviousDate);
33
+ }
34
+ return dateProp !== previousDate;
35
+ }), [dateProps, previousDateProps, dateFormat]);
25
36
  if (hasDatePropChanges) {
26
- setDates(_objectSpread({}, mapDates(_objectSpread(_objectSpread({}, dates), dateProps), previousDates, {
37
+ const derivedDates = deriveDatesFromProps({
38
+ dates,
39
+ dateProps,
40
+ previousDateProps,
27
41
  dateFormat,
28
- isRange,
29
- shouldCorrectDate
30
- })));
31
- setPreviousDates(dateProps);
42
+ isRange
43
+ });
44
+ setDates(currentDates => _objectSpread(_objectSpread({}, currentDates), derivedDates));
45
+ setPreviousDateProps(dateProps);
32
46
  }
33
47
  const hasHadValidDate = useRef(false);
34
48
  const updateDates = useCallback((newDates, callback) => {
@@ -50,8 +64,8 @@ export default function useDates(dateProps, {
50
64
  callback === null || callback === void 0 ? void 0 : callback(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, dates), newDates), months), correctedDates));
51
65
  }, [dates, shouldCorrectDate, isRange]);
52
66
  useEffect(() => {
53
- const startDates = updateInputDates('start', dates);
54
- const endDates = updateInputDates('end', dates);
67
+ const startDates = updateInputDates('start', dates.startDate);
68
+ const endDates = updateInputDates('end', dates.endDate);
55
69
  hasHadValidDate.current = isValid(dates.startDate) || isValid(dates.endDate);
56
70
  setDates(currentDates => _objectSpread(_objectSpread(_objectSpread({}, currentDates), startDates), endDates));
57
71
  }, [dates.startDate, dates.endDate]);
@@ -59,12 +73,11 @@ export default function useDates(dateProps, {
59
73
  dates,
60
74
  updateDates,
61
75
  hasHadValidDate: hasHadValidDate.current,
62
- previousDates
76
+ previousDateProps
63
77
  };
64
78
  }
65
- function updateInputDates(type, dates) {
79
+ function updateInputDates(type, date) {
66
80
  const updatedDates = {};
67
- const date = dates[`${type}Date`];
68
81
  if (isValid(date)) {
69
82
  updatedDates[`__${type}Day`] = pad(format(date, 'dd'), 2);
70
83
  updatedDates[`__${type}Month`] = pad(format(date, 'MM'), 2);
@@ -76,13 +89,13 @@ function updateInputDates(type, dates) {
76
89
  }
77
90
  return updatedDates;
78
91
  }
79
- function mapDates(dateProps, previousDates, {
92
+ function mapDates(dateProps, {
80
93
  dateFormat,
81
94
  isRange,
82
95
  shouldCorrectDate
83
96
  }) {
84
97
  var _ref, _convertStringToDate, _convertStringToDate2;
85
- const date = previousDates.date !== dateProps.date ? dateProps.date : previousDates.date;
98
+ const date = dateProps.date;
86
99
  const startDate = typeof (dateProps === null || dateProps === void 0 ? void 0 : dateProps.startDate) !== 'undefined' ? getDate(dateProps.startDate, dateFormat) : typeof date !== 'undefined' ? getDate(date, dateFormat) : undefined;
87
100
  const endDate = !isRange ? startDate : convertStringToDate(dateProps === null || dateProps === void 0 ? void 0 : dateProps.endDate, {
88
101
  dateFormat
@@ -109,6 +122,7 @@ function mapDates(dateProps, previousDates, {
109
122
  isRange
110
123
  }) : {};
111
124
  const dates = _objectSpread({
125
+ date,
112
126
  startDate,
113
127
  endDate,
114
128
  startMonth,
@@ -125,6 +139,53 @@ function mapDates(dateProps, previousDates, {
125
139
  __endYear: hasValidEndDate ? format(dates.endDate, 'yyyy') : null
126
140
  });
127
141
  }
142
+ function deriveDatesFromProps({
143
+ dates,
144
+ dateProps,
145
+ previousDateProps,
146
+ dateFormat,
147
+ isRange
148
+ }) {
149
+ const derivedDates = {};
150
+ const startDate = getStartDate(dateProps, previousDateProps);
151
+ if (typeof startDate !== 'undefined' && startDate !== dates.startDate) {
152
+ derivedDates.startDate = convertStringToDate(startDate, {
153
+ dateFormat
154
+ }) || undefined;
155
+ if (!isRange) {
156
+ derivedDates.startMonth = convertStringToDate(startDate, {
157
+ dateFormat
158
+ }) || undefined;
159
+ derivedDates.endDate = derivedDates.startDate;
160
+ }
161
+ }
162
+ if (isRange && typeof dateProps.endDate !== 'undefined' && dateProps.endDate !== dates.endDate) {
163
+ derivedDates.endDate = convertStringToDate(dateProps.endDate, {
164
+ dateFormat
165
+ }) || undefined;
166
+ }
167
+ if (typeof dateProps.startMonth !== 'undefined' && dateProps.startMonth !== previousDateProps.startMonth) {
168
+ derivedDates.startMonth = convertStringToDate(dateProps.startMonth, {
169
+ dateFormat
170
+ });
171
+ }
172
+ if (typeof dateProps.endMonth !== 'undefined' && dateProps.endMonth !== previousDateProps.endMonth) {
173
+ derivedDates.endMonth = convertStringToDate(dateProps.endMonth, {
174
+ dateFormat
175
+ });
176
+ }
177
+ if (typeof dateProps.minDate !== 'undefined' && dateProps.minDate !== previousDateProps.minDate) {
178
+ derivedDates.minDate = convertStringToDate(dateProps.minDate, {
179
+ dateFormat
180
+ });
181
+ }
182
+ if (typeof dateProps.maxDate !== 'undefined' && dateProps.maxDate !== previousDateProps.maxDate) {
183
+ derivedDates.maxDate = convertStringToDate(dateProps.maxDate, {
184
+ dateFormat
185
+ });
186
+ }
187
+ return derivedDates;
188
+ }
128
189
  function correctDates({
129
190
  startDate,
130
191
  endDate,
@@ -162,6 +223,15 @@ function getDate(date, dateFormat) {
162
223
  dateFormat
163
224
  });
164
225
  }
226
+ function getStartDate(dateProps, previousDateProps) {
227
+ if (typeof dateProps.startDate !== 'undefined' && dateProps.startDate !== previousDateProps.startDate) {
228
+ return dateProps.startDate;
229
+ }
230
+ if (typeof dateProps.date !== 'undefined' && dateProps.date !== previousDateProps.date) {
231
+ return dateProps.date;
232
+ }
233
+ return undefined;
234
+ }
165
235
  export function pad(date, size) {
166
236
  const dateWithPadding = '000000000' + date;
167
237
  return dateWithPadding.substring(dateWithPadding.length - size);
@@ -1 +1 @@
1
- {"version":3,"file":"useDates.js","names":["useCallback","useEffect","useMemo","useRef","useState","convertStringToDate","isDisabled","isValid","format","addMonths","useDates","dateProps","dateFormat","isRange","shouldCorrectDate","previousDates","setPreviousDates","dates","setDates","_objectSpread","mapDates","hasDatePropChanges","Object","keys","some","date","hasHadValidDate","updateDates","newDates","callback","_newDates$startDate","_newDates$endDate","correctedDates","correctDates","startDate","endDate","minDate","maxDate","months","updateMonths","currentDates","startDates","updateInputDates","endDates","current","type","updatedDates","pad","undefined","_ref","_convertStringToDate","_convertStringToDate2","getDate","startMonth","Date","endMonth","hasValidStartDate","hasValidEndDate","__startDay","__startMonth","__startYear","__endDay","__endMonth","__endYear","_ref2","_newDates$startMonth","_ref3","_newDates$endMonth","size","dateWithPadding","substring","length"],"sources":["../../../../../src/components/date-picker/hooks/useDates.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { convertStringToDate, isDisabled } from '../DatePickerCalc'\nimport isValid from 'date-fns/isValid'\nimport format from 'date-fns/format'\nimport { addMonths } from 'date-fns'\nimport { DateType } from '../DatePickerContext'\n\nexport type DatePickerDateProps = {\n date?: DateType\n startDate?: DateType\n endDate?: DateType\n startMonth?: DateType\n endMonth?: DateType\n minDate?: DateType\n maxDate?: DateType\n hoverDate?: DateType | null\n}\n\ntype UseDatesOptions = {\n dateFormat: string\n isRange: boolean\n shouldCorrectDate: boolean\n}\n// TODO: Move to DatePickerInput\nexport type DatePickerInputDates = {\n __startDay?: string\n __startMonth?: string\n __startYear?: string\n __endDay?: string\n __endMonth?: string\n __endYear?: string\n}\n\nexport type DatePickerDates = {\n date?: DateType\n startDate?: Date\n endDate?: Date\n minDate?: Date\n maxDate?: Date\n startMonth?: Date\n endMonth?: Date\n partialStartDate?: string\n partialEndDate?: string\n hasHadValidDate?: boolean\n hoverDate?: Date\n} & DatePickerInputDates\n\nexport default function useDates(\n dateProps: DatePickerDateProps,\n {\n dateFormat,\n isRange = false,\n shouldCorrectDate = false,\n }: UseDatesOptions\n) {\n const [previousDates, setPreviousDates] = useState(dateProps)\n const [dates, setDates] = useState<DatePickerDates>({\n ...mapDates(dateProps, previousDates, {\n dateFormat,\n isRange,\n shouldCorrectDate,\n }),\n })\n\n const hasDatePropChanges = useMemo(\n () =>\n Object.keys(dateProps).some((date) => {\n return dateProps[date] !== previousDates[date]\n }),\n [dateProps, previousDates]\n )\n\n // Update dates on prop change\n if (hasDatePropChanges) {\n setDates({\n ...mapDates({ ...dates, ...dateProps }, previousDates, {\n dateFormat,\n isRange,\n shouldCorrectDate,\n }),\n })\n setPreviousDates(dateProps)\n }\n\n const hasHadValidDate = useRef<boolean>(false)\n\n const updateDates = useCallback(\n (\n newDates: DatePickerDates,\n callback?: (dates: DatePickerDates) => void\n ) => {\n // Correct dates based on min and max date\n const correctedDates = shouldCorrectDate\n ? correctDates({\n startDate: newDates.startDate ?? dates.startDate,\n endDate: newDates.endDate ?? dates.endDate,\n minDate: dates.minDate,\n maxDate: dates.maxDate,\n isRange,\n })\n : {}\n\n // Update months based on month or start/end date changes\n const months = updateMonths({\n newDates,\n currentDates: dates,\n })\n\n setDates((currentDates) => {\n return {\n ...currentDates,\n ...newDates,\n ...months,\n ...correctedDates,\n }\n })\n\n callback?.({\n ...dates,\n ...newDates,\n ...months,\n ...correctedDates,\n })\n },\n [dates, shouldCorrectDate, isRange]\n )\n\n // Updated input dates based on start and end dates, move to DatePickerInput\n // TODO: Move to DatePickerInput\n useEffect(() => {\n const startDates = updateInputDates('start', dates)\n const endDates = updateInputDates('end', dates)\n\n hasHadValidDate.current =\n isValid(dates.startDate) || isValid(dates.endDate)\n\n setDates((currentDates) => ({\n ...currentDates,\n ...startDates,\n ...endDates,\n }))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dates.startDate, dates.endDate])\n\n return {\n dates,\n updateDates,\n hasHadValidDate: hasHadValidDate.current,\n previousDates,\n } as const\n}\n\n// TODO: Move to DatePickerInput\nfunction updateInputDates(type: 'start' | 'end', dates: DatePickerDates) {\n const updatedDates = {}\n const date = dates[`${type}Date`]\n\n if (isValid(date)) {\n updatedDates[`__${type}Day`] = pad(format(date, 'dd'), 2)\n updatedDates[`__${type}Month`] = pad(format(date, 'MM'), 2)\n updatedDates[`__${type}Year`] = format(date, 'yyyy')\n } else if (date === undefined) {\n updatedDates[`__${type}Day`] = null\n updatedDates[`__${type}Month`] = null\n updatedDates[`__${type}Year`] = null\n }\n\n return updatedDates\n}\n\nfunction mapDates(\n dateProps: DatePickerDateProps,\n previousDates: DatePickerDateProps,\n {\n dateFormat,\n isRange,\n shouldCorrectDate,\n }: Omit<UseDatesOptions, 'isLinked'>\n) {\n const date =\n previousDates.date !== dateProps.date\n ? dateProps.date\n : previousDates.date\n\n const startDate =\n typeof dateProps?.startDate !== 'undefined'\n ? getDate(dateProps.startDate, dateFormat)\n : typeof date !== 'undefined'\n ? getDate(date, dateFormat)\n : undefined\n\n const endDate = !isRange\n ? startDate\n : convertStringToDate(dateProps?.endDate, {\n dateFormat,\n }) || undefined\n\n // Ensure that the calendar view displays the correct start and end months, and to prevent date flickering bug\n const startMonth =\n convertStringToDate(dateProps.startMonth, {\n dateFormat,\n }) ??\n startDate ??\n new Date()\n\n const endMonth =\n convertStringToDate(dateProps.endMonth, {\n dateFormat: dateFormat,\n }) ?? (isRange ? endDate ?? addMonths(startMonth, 1) : startMonth)\n\n const minDate = convertStringToDate(dateProps.minDate, {\n dateFormat,\n })\n\n const maxDate = convertStringToDate(dateProps.maxDate, {\n dateFormat,\n })\n\n const hasValidStartDate = isValid(startDate)\n const hasValidEndDate = isValid(endDate)\n\n const correctedDates = shouldCorrectDate\n ? correctDates({ startDate, endDate, minDate, maxDate, isRange })\n : {}\n\n const dates = {\n startDate,\n endDate,\n startMonth,\n endMonth,\n minDate,\n maxDate,\n ...correctedDates,\n }\n\n return {\n ...dates,\n __startDay: hasValidStartDate\n ? pad(format(dates.startDate, 'dd'), 2)\n : null,\n __startMonth: hasValidStartDate\n ? pad(format(dates.startDate, 'MM'), 2)\n : null,\n __startYear: hasValidStartDate\n ? format(dates.startDate, 'yyyy')\n : null,\n __endDay: hasValidEndDate ? pad(format(dates.endDate, 'dd'), 2) : null,\n __endMonth: hasValidEndDate\n ? pad(format(dates.endDate, 'MM'), 2)\n : null,\n __endYear: hasValidEndDate ? format(dates.endDate, 'yyyy') : null,\n }\n}\n\nfunction correctDates({\n startDate,\n endDate,\n minDate,\n maxDate,\n isRange,\n}: {\n startDate: Date\n endDate: Date\n minDate: Date\n maxDate: Date\n isRange: boolean\n}) {\n const correctedDates = {}\n\n if (isDisabled(startDate, minDate, maxDate)) {\n correctedDates['startDate'] = minDate\n }\n if (isDisabled(endDate, minDate, maxDate)) {\n // state.endDate is only used by the input if range is set to true.\n // this is done to make maxDate correction work if the input is not a range and only maxDate is defined.\n if (!isRange && !minDate) {\n correctedDates['startDate'] = maxDate\n } else {\n correctedDates['endDate'] = maxDate\n }\n }\n\n return correctedDates\n}\n\nfunction updateMonths({\n newDates,\n currentDates,\n}: {\n newDates: DatePickerDates\n currentDates: DatePickerDates\n}) {\n const startMonth =\n newDates.startMonth ?? newDates.startDate ?? currentDates.startMonth\n const endMonth =\n newDates.endMonth ?? newDates.endDate ?? currentDates.endMonth\n\n return {\n startMonth,\n endMonth,\n }\n}\n\nfunction getDate(date: DateType, dateFormat: string) {\n return date instanceof Date\n ? date\n : convertStringToDate(date ?? '', {\n dateFormat,\n })\n}\n\nexport function pad(date: string, size: number) {\n const dateWithPadding = '000000000' + date\n\n return dateWithPadding.substring(dateWithPadding.length - size)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useDates.js","names":["useCallback","useEffect","useMemo","useRef","useState","convertStringToDate","isDisabled","isValid","format","addMonths","isSameDay","useDates","dateProps","dateFormat","isRange","shouldCorrectDate","previousDateProps","setPreviousDateProps","dates","setDates","_objectSpread","mapDates","hasDatePropChanges","Object","keys","some","date","dateProp","previousDate","convertedDateProp","convertedPreviousDate","Date","derivedDates","deriveDatesFromProps","currentDates","hasHadValidDate","updateDates","newDates","callback","_newDates$startDate","_newDates$endDate","correctedDates","correctDates","startDate","endDate","minDate","maxDate","months","updateMonths","startDates","updateInputDates","endDates","current","type","updatedDates","pad","undefined","_ref","_convertStringToDate","_convertStringToDate2","getDate","startMonth","endMonth","hasValidStartDate","hasValidEndDate","__startDay","__startMonth","__startYear","__endDay","__endMonth","__endYear","getStartDate","_ref2","_newDates$startMonth","_ref3","_newDates$endMonth","size","dateWithPadding","substring","length"],"sources":["../../../../../src/components/date-picker/hooks/useDates.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { convertStringToDate, isDisabled } from '../DatePickerCalc'\nimport isValid from 'date-fns/isValid'\nimport format from 'date-fns/format'\nimport { addMonths, isSameDay } from 'date-fns'\nimport { DateType } from '../DatePickerContext'\n\nexport type DatePickerDateProps = {\n date?: DateType\n startDate?: DateType\n endDate?: DateType\n startMonth?: DateType\n endMonth?: DateType\n minDate?: DateType\n maxDate?: DateType\n hoverDate?: DateType | null\n}\n\ntype UseDatesOptions = {\n dateFormat: string\n isRange: boolean\n shouldCorrectDate: boolean\n}\n// TODO: Move to DatePickerInput\nexport type DatePickerInputDates = {\n __startDay?: string\n __startMonth?: string\n __startYear?: string\n __endDay?: string\n __endMonth?: string\n __endYear?: string\n}\n\nexport type DatePickerDates = {\n date?: DateType\n startDate?: Date\n endDate?: Date\n minDate?: Date\n maxDate?: Date\n startMonth?: Date\n endMonth?: Date\n partialStartDate?: string\n partialEndDate?: string\n hasHadValidDate?: boolean\n hoverDate?: Date\n} & DatePickerInputDates\n\nexport default function useDates(\n dateProps: DatePickerDateProps,\n {\n dateFormat,\n isRange = false,\n shouldCorrectDate = false,\n }: UseDatesOptions\n) {\n const [previousDateProps, setPreviousDateProps] = useState(dateProps)\n const [dates, setDates] = useState<DatePickerDates>({\n ...mapDates(dateProps, {\n dateFormat,\n isRange,\n shouldCorrectDate,\n }),\n })\n\n const hasDatePropChanges = useMemo(\n () =>\n Object.keys(dateProps).some((date) => {\n const dateProp = dateProps[date]\n const previousDate = previousDateProps[date]\n\n const convertedDateProp = convertStringToDate(dateProp, {\n dateFormat,\n })\n const convertedPreviousDate = convertStringToDate(previousDate, {\n dateFormat,\n })\n // Make sure that same dates does not trigger a change\n // i.e. 2021-01-01 and new Date('2021-01-01')\n if (\n convertedDateProp instanceof Date &&\n convertedPreviousDate instanceof Date\n ) {\n return !isSameDay(convertedDateProp, convertedPreviousDate)\n }\n\n return dateProp !== previousDate\n }),\n [dateProps, previousDateProps, dateFormat]\n )\n\n // Update dates on prop change\n if (hasDatePropChanges) {\n const derivedDates = deriveDatesFromProps({\n dates,\n dateProps,\n previousDateProps,\n dateFormat,\n isRange,\n })\n\n setDates((currentDates) => ({ ...currentDates, ...derivedDates }))\n setPreviousDateProps(dateProps)\n }\n\n const hasHadValidDate = useRef<boolean>(false)\n\n const updateDates = useCallback(\n (\n newDates: DatePickerDates,\n callback?: (dates: DatePickerDates) => void\n ) => {\n // Correct dates based on min and max date\n const correctedDates = shouldCorrectDate\n ? correctDates({\n startDate: newDates.startDate ?? dates.startDate,\n endDate: newDates.endDate ?? dates.endDate,\n minDate: dates.minDate,\n maxDate: dates.maxDate,\n isRange,\n })\n : {}\n\n // Update months based on month or start/end date changes\n const months = updateMonths({\n newDates,\n currentDates: dates,\n })\n\n setDates((currentDates) => {\n return {\n ...currentDates,\n ...newDates,\n ...months,\n ...correctedDates,\n }\n })\n\n callback?.({\n ...dates,\n ...newDates,\n ...months,\n ...correctedDates,\n })\n },\n [dates, shouldCorrectDate, isRange]\n )\n\n // Updated input dates based on start and end dates, move to DatePickerInput\n // TODO: Move to DatePickerInput\n useEffect(() => {\n const startDates = updateInputDates('start', dates.startDate)\n const endDates = updateInputDates('end', dates.endDate)\n\n hasHadValidDate.current =\n isValid(dates.startDate) || isValid(dates.endDate)\n\n setDates((currentDates) => ({\n ...currentDates,\n ...startDates,\n ...endDates,\n }))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dates.startDate, dates.endDate])\n\n return {\n dates,\n updateDates,\n hasHadValidDate: hasHadValidDate.current,\n previousDateProps,\n } as const\n}\n\n// TODO: Move to DatePickerInput\nfunction updateInputDates(type: 'start' | 'end', date: Date | undefined) {\n const updatedDates = {}\n\n if (isValid(date)) {\n updatedDates[`__${type}Day`] = pad(format(date, 'dd'), 2)\n updatedDates[`__${type}Month`] = pad(format(date, 'MM'), 2)\n updatedDates[`__${type}Year`] = format(date, 'yyyy')\n } else if (date === undefined) {\n updatedDates[`__${type}Day`] = null\n updatedDates[`__${type}Month`] = null\n updatedDates[`__${type}Year`] = null\n }\n\n return updatedDates\n}\n\nfunction mapDates(\n dateProps: DatePickerDateProps,\n {\n dateFormat,\n isRange,\n shouldCorrectDate,\n }: Omit<UseDatesOptions, 'isLinked'>\n) {\n const date = dateProps.date\n\n const startDate =\n typeof dateProps?.startDate !== 'undefined'\n ? getDate(dateProps.startDate, dateFormat)\n : typeof date !== 'undefined'\n ? getDate(date, dateFormat)\n : undefined\n\n const endDate = !isRange\n ? startDate\n : convertStringToDate(dateProps?.endDate, {\n dateFormat,\n }) || undefined\n\n // Ensure that the calendar view displays the correct start and end months, and to prevent date flickering bug\n const startMonth =\n convertStringToDate(dateProps.startMonth, {\n dateFormat,\n }) ??\n startDate ??\n new Date()\n\n const endMonth =\n convertStringToDate(dateProps.endMonth, {\n dateFormat: dateFormat,\n }) ?? (isRange ? endDate ?? addMonths(startMonth, 1) : startMonth)\n\n const minDate = convertStringToDate(dateProps.minDate, {\n dateFormat,\n })\n\n const maxDate = convertStringToDate(dateProps.maxDate, {\n dateFormat,\n })\n\n const hasValidStartDate = isValid(startDate)\n const hasValidEndDate = isValid(endDate)\n\n const correctedDates = shouldCorrectDate\n ? correctDates({ startDate, endDate, minDate, maxDate, isRange })\n : {}\n\n const dates = {\n date,\n startDate,\n endDate,\n startMonth,\n endMonth,\n minDate,\n maxDate,\n ...correctedDates,\n }\n\n return {\n ...dates,\n __startDay: hasValidStartDate\n ? pad(format(dates.startDate, 'dd'), 2)\n : null,\n __startMonth: hasValidStartDate\n ? pad(format(dates.startDate, 'MM'), 2)\n : null,\n __startYear: hasValidStartDate\n ? format(dates.startDate, 'yyyy')\n : null,\n __endDay: hasValidEndDate ? pad(format(dates.endDate, 'dd'), 2) : null,\n __endMonth: hasValidEndDate\n ? pad(format(dates.endDate, 'MM'), 2)\n : null,\n __endYear: hasValidEndDate ? format(dates.endDate, 'yyyy') : null,\n }\n}\n\nfunction deriveDatesFromProps({\n dates,\n dateProps,\n previousDateProps,\n dateFormat,\n isRange,\n}: {\n dates: DatePickerDates\n dateProps: DatePickerDateProps\n previousDateProps: DatePickerDateProps\n dateFormat: UseDatesOptions['dateFormat']\n isRange: UseDatesOptions['isRange']\n}) {\n const derivedDates: DatePickerDates = {}\n\n const startDate = getStartDate(dateProps, previousDateProps)\n\n // Handle updates related to date and startDate changes when not in range mode\n if (typeof startDate !== 'undefined' && startDate !== dates.startDate) {\n derivedDates.startDate =\n convertStringToDate(startDate, {\n dateFormat,\n }) || undefined\n\n // Set endDate and startMonth to startDate if not in range mode\n if (!isRange) {\n derivedDates.startMonth =\n convertStringToDate(startDate, {\n dateFormat,\n }) || undefined\n\n derivedDates.endDate = derivedDates.startDate\n }\n }\n\n // update endDate based on endDate prop if in range mode\n if (\n isRange &&\n typeof dateProps.endDate !== 'undefined' &&\n dateProps.endDate !== dates.endDate\n ) {\n derivedDates.endDate =\n convertStringToDate(dateProps.endDate, {\n dateFormat,\n }) || undefined\n }\n\n // Handle startMonth/endMonth\n if (\n typeof dateProps.startMonth !== 'undefined' &&\n dateProps.startMonth !== previousDateProps.startMonth\n ) {\n derivedDates.startMonth = convertStringToDate(dateProps.startMonth, {\n dateFormat,\n })\n }\n if (\n typeof dateProps.endMonth !== 'undefined' &&\n dateProps.endMonth !== previousDateProps.endMonth\n ) {\n derivedDates.endMonth = convertStringToDate(dateProps.endMonth, {\n dateFormat,\n })\n }\n\n // Handle minDate/maxDate\n if (\n typeof dateProps.minDate !== 'undefined' &&\n dateProps.minDate !== previousDateProps.minDate\n ) {\n derivedDates.minDate = convertStringToDate(dateProps.minDate, {\n dateFormat,\n })\n }\n if (\n typeof dateProps.maxDate !== 'undefined' &&\n dateProps.maxDate !== previousDateProps.maxDate\n ) {\n derivedDates.maxDate = convertStringToDate(dateProps.maxDate, {\n dateFormat,\n })\n }\n\n return derivedDates\n}\n\nfunction correctDates({\n startDate,\n endDate,\n minDate,\n maxDate,\n isRange,\n}: {\n startDate: Date\n endDate: Date\n minDate: Date\n maxDate: Date\n isRange: boolean\n}) {\n const correctedDates = {}\n\n if (isDisabled(startDate, minDate, maxDate)) {\n correctedDates['startDate'] = minDate\n }\n if (isDisabled(endDate, minDate, maxDate)) {\n // state.endDate is only used by the input if range is set to true.\n // this is done to make maxDate correction work if the input is not a range and only maxDate is defined.\n if (!isRange && !minDate) {\n correctedDates['startDate'] = maxDate\n } else {\n correctedDates['endDate'] = maxDate\n }\n }\n\n return correctedDates\n}\n\nfunction updateMonths({\n newDates,\n currentDates,\n}: {\n newDates: DatePickerDates\n currentDates: DatePickerDates\n}) {\n const startMonth =\n newDates.startMonth ?? newDates.startDate ?? currentDates.startMonth\n const endMonth =\n newDates.endMonth ?? newDates.endDate ?? currentDates.endMonth\n\n return {\n startMonth,\n endMonth,\n }\n}\n\nfunction getDate(date: DateType, dateFormat: string) {\n return date instanceof Date\n ? date\n : convertStringToDate(date ?? '', {\n dateFormat,\n })\n}\n\nfunction getStartDate(\n dateProps: DatePickerDateProps,\n previousDateProps: DatePickerDateProps\n) {\n // priortize startDate over date if provided\n if (\n typeof dateProps.startDate !== 'undefined' &&\n dateProps.startDate !== previousDateProps.startDate\n ) {\n return dateProps.startDate\n }\n\n if (\n typeof dateProps.date !== 'undefined' &&\n dateProps.date !== previousDateProps.date\n ) {\n return dateProps.date\n }\n\n return undefined\n}\n\nexport function pad(date: string, size: number) {\n const dateWithPadding = '000000000' + date\n\n return dateWithPadding.substring(dateWithPadding.length - size)\n}\n"],"mappings":"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"}
@@ -6,7 +6,7 @@ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutPr
6
6
  const _excluded = ["declineText", "confirmText", "hideDecline", "hideConfirm", "onConfirm", "onDecline", "className", "children"];
7
7
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8
8
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
9
- import React, { useContext } from 'react';
9
+ import React, { useCallback, useContext } from 'react';
10
10
  import classNames from 'classnames';
11
11
  import Button from '../../button/Button';
12
12
  import Space from '../../space/Space';
@@ -37,6 +37,22 @@ const DialogAction = _ref => {
37
37
  close
38
38
  } = useContext(ModalContext);
39
39
  let childrenWithCloseFunc;
40
+ const onConfirmHandler = useCallback(event => {
41
+ dispatchCustomElementEvent({
42
+ onConfirm
43
+ }, 'onConfirm', {
44
+ event,
45
+ close
46
+ });
47
+ }, [close, onConfirm]);
48
+ const onDeclineHandler = useCallback(event => {
49
+ dispatchCustomElementEvent({
50
+ onDecline
51
+ }, 'onDecline', {
52
+ event,
53
+ close
54
+ });
55
+ }, [close, onDecline]);
40
56
  if (children) {
41
57
  childrenWithCloseFunc = React.Children.map(children, child => {
42
58
  if (child.type === Button) {
@@ -59,26 +75,12 @@ const DialogAction = _ref => {
59
75
  }, props), childrenWithCloseFunc, !children && !hideDecline && React.createElement(Button, {
60
76
  text: declineText || (translation === null || translation === void 0 ? void 0 : (_translation$Dialog = translation.Dialog) === null || _translation$Dialog === void 0 ? void 0 : _translation$Dialog.declineText),
61
77
  variant: "secondary",
62
- onClick: event => {
63
- dispatchCustomElementEvent({
64
- onDecline
65
- }, 'onDecline', {
66
- event,
67
- close
68
- });
69
- },
78
+ onClick: onDeclineHandler,
70
79
  size: (ButtonContext === null || ButtonContext === void 0 ? void 0 : ButtonContext.size) || 'large'
71
80
  }), !children && !hideConfirm && React.createElement(Button, {
72
81
  text: confirmText || (translation === null || translation === void 0 ? void 0 : (_translation$Dialog2 = translation.Dialog) === null || _translation$Dialog2 === void 0 ? void 0 : _translation$Dialog2.confirmText),
73
82
  variant: "primary",
74
- onClick: event => {
75
- dispatchCustomElementEvent({
76
- onConfirm
77
- }, 'onConfirm', {
78
- event,
79
- close
80
- });
81
- },
83
+ onClick: onConfirmHandler,
82
84
  size: (ButtonContext === null || ButtonContext === void 0 ? void 0 : ButtonContext.size) || 'large'
83
85
  }));
84
86
  };
@@ -1 +1 @@
1
- {"version":3,"file":"DialogAction.js","names":["React","useContext","classNames","Button","Space","Context","ModalContext","dispatchCustomElementEvent","fallbackCloseAction","close","DialogAction","_ref","_translation$Dialog","_translation$Dialog2","declineText","confirmText","hideDecline","hideConfirm","onConfirm","onDecline","className","children","props","_objectWithoutProperties","_excluded","translation","ButtonContext","childrenWithCloseFunc","Children","map","child","type","cloneElement","_objectSpread","on_click","event","createElement","_extends","element","text","Dialog","variant","onClick","size","_supportsSpacingProps"],"sources":["../../../../../src/components/dialog/parts/DialogAction.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport classNames from 'classnames'\nimport Button from '../../button/Button'\nimport Space from '../../space/Space'\nimport { Context } from '../../../shared'\nimport ModalContext from '../../modal/ModalContext'\nimport { dispatchCustomElementEvent } from '../../../shared/component-helper'\n\nimport type { SpacingProps } from '../../space/types'\n\ntype extendedMouseEvent = {\n event: React.MouseEvent<HTMLElement>\n close: () => void\n}\n\nexport type DialogActionProps = {\n /**\n * For dialog actions, give a custom text for the decline button.\n */\n declineText?: string | React.ReactNode\n\n /**\n * For dialog actions, give a custom text for the confirm button.\n */\n confirmText?: string | React.ReactNode\n\n /**\n * For variant confirmation, handle the confirm action click.\n */\n onConfirm?: (event: extendedMouseEvent) => void\n\n /**\n * For variant confirmation, handle the decline action click.\n */\n onDecline?: (event: extendedMouseEvent) => void\n\n /**\n * For variant confirmation, hide the default decline button and only show the confirm button.\n */\n hideDecline?: boolean\n\n /**\n * For variant confirmation, hide the default confirm button and only show the decline button.\n */\n hideConfirm?: boolean\n\n /**\n * Pass in custom confirm/decline buttons for action handling. Every child of type Button will be provided with a `close` function attribute.\n */\n children?: React.ReactElement | Array<React.ReactElement>\n}\n\nexport type DialogActionAllProps = DialogActionProps &\n SpacingProps &\n Omit<React.HTMLAttributes<HTMLElement>, 'children'>\n\nconst fallbackCloseAction = ({ close }: extendedMouseEvent) => close()\n\nconst DialogAction = ({\n declineText = null,\n confirmText = null,\n hideDecline = false,\n hideConfirm = false,\n onConfirm = fallbackCloseAction,\n onDecline = fallbackCloseAction,\n className,\n children,\n ...props\n}: DialogActionAllProps) => {\n const { translation, Button: ButtonContext } = useContext(Context)\n const { close } = useContext(ModalContext)\n let childrenWithCloseFunc: Array<React.ReactChild>\n\n if (children) {\n childrenWithCloseFunc = React.Children.map(children, (child) => {\n if (child.type === Button) {\n return React.cloneElement(\n child,\n {\n ...child.props,\n on_click: (event) => {\n dispatchCustomElementEvent(child.props, 'on_click', {\n event,\n close,\n })\n },\n },\n child.props.children\n )\n } else {\n return child\n }\n })\n }\n\n return (\n <Space\n element=\"section\"\n className={classNames('dnb-dialog__actions', className)}\n {...props}\n >\n {childrenWithCloseFunc}\n\n {!children && !hideDecline && (\n <Button\n text={declineText || translation?.Dialog?.declineText}\n variant=\"secondary\"\n onClick={(event) => {\n dispatchCustomElementEvent({ onDecline }, 'onDecline', {\n event,\n close,\n })\n }}\n size={ButtonContext?.size || 'large'}\n />\n )}\n {!children && !hideConfirm && (\n <Button\n text={confirmText || translation?.Dialog?.confirmText}\n variant=\"primary\"\n onClick={(event) => {\n dispatchCustomElementEvent({ onConfirm }, 'onConfirm', {\n event,\n close,\n })\n }}\n size={ButtonContext?.size || 'large'}\n />\n )}\n </Space>\n )\n}\n\nDialogAction._supportsSpacingProps = true\n\nexport default DialogAction\n"],"mappings":"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"}
1
+ {"version":3,"file":"DialogAction.js","names":["React","useCallback","useContext","classNames","Button","Space","Context","ModalContext","dispatchCustomElementEvent","fallbackCloseAction","close","DialogAction","_ref","_translation$Dialog","_translation$Dialog2","declineText","confirmText","hideDecline","hideConfirm","onConfirm","onDecline","className","children","props","_objectWithoutProperties","_excluded","translation","ButtonContext","childrenWithCloseFunc","onConfirmHandler","event","onDeclineHandler","Children","map","child","type","cloneElement","_objectSpread","on_click","createElement","_extends","element","text","Dialog","variant","onClick","size","_supportsSpacingProps"],"sources":["../../../../../src/components/dialog/parts/DialogAction.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport classNames from 'classnames'\nimport Button from '../../button/Button'\nimport Space from '../../space/Space'\nimport { Context } from '../../../shared'\nimport ModalContext from '../../modal/ModalContext'\nimport { dispatchCustomElementEvent } from '../../../shared/component-helper'\n\nimport type { SpacingProps } from '../../space/types'\n\ntype extendedMouseEvent = {\n event: React.MouseEvent<HTMLElement>\n close: () => void\n}\n\nexport type DialogActionProps = {\n /**\n * For dialog actions, give a custom text for the decline button.\n */\n declineText?: string | React.ReactNode\n\n /**\n * For dialog actions, give a custom text for the confirm button.\n */\n confirmText?: string | React.ReactNode\n\n /**\n * For variant confirmation, handle the confirm action click.\n */\n onConfirm?: (event: extendedMouseEvent) => void\n\n /**\n * For variant confirmation, handle the decline action click.\n */\n onDecline?: (event: extendedMouseEvent) => void\n\n /**\n * For variant confirmation, hide the default decline button and only show the confirm button.\n */\n hideDecline?: boolean\n\n /**\n * For variant confirmation, hide the default confirm button and only show the decline button.\n */\n hideConfirm?: boolean\n\n /**\n * Pass in custom confirm/decline buttons for action handling. Every child of type Button will be provided with a `close` function attribute.\n */\n children?: React.ReactElement | Array<React.ReactElement>\n}\n\nexport type DialogActionAllProps = DialogActionProps &\n SpacingProps &\n Omit<React.HTMLAttributes<HTMLElement>, 'children'>\n\nconst fallbackCloseAction = ({ close }: extendedMouseEvent) => close()\n\nconst DialogAction = ({\n declineText = null,\n confirmText = null,\n hideDecline = false,\n hideConfirm = false,\n onConfirm = fallbackCloseAction,\n onDecline = fallbackCloseAction,\n className,\n children,\n ...props\n}: DialogActionAllProps) => {\n const { translation, Button: ButtonContext } = useContext(Context)\n const { close } = useContext(ModalContext)\n let childrenWithCloseFunc: Array<React.ReactChild>\n\n const onConfirmHandler = useCallback(\n (event) => {\n dispatchCustomElementEvent({ onConfirm }, 'onConfirm', {\n event,\n close,\n })\n },\n [close, onConfirm]\n )\n const onDeclineHandler = useCallback(\n (event) => {\n dispatchCustomElementEvent({ onDecline }, 'onDecline', {\n event,\n close,\n })\n },\n [close, onDecline]\n )\n\n if (children) {\n childrenWithCloseFunc = React.Children.map(children, (child) => {\n if (child.type === Button) {\n return React.cloneElement(\n child,\n {\n ...child.props,\n on_click: (event) => {\n dispatchCustomElementEvent(child.props, 'on_click', {\n event,\n close,\n })\n },\n },\n child.props.children\n )\n } else {\n return child\n }\n })\n }\n\n return (\n <Space\n element=\"section\"\n className={classNames('dnb-dialog__actions', className)}\n {...props}\n >\n {childrenWithCloseFunc}\n\n {!children && !hideDecline && (\n <Button\n text={declineText || translation?.Dialog?.declineText}\n variant=\"secondary\"\n onClick={onDeclineHandler}\n size={ButtonContext?.size || 'large'}\n />\n )}\n {!children && !hideConfirm && (\n <Button\n text={confirmText || translation?.Dialog?.confirmText}\n variant=\"primary\"\n onClick={onConfirmHandler}\n size={ButtonContext?.size || 'large'}\n />\n )}\n </Space>\n )\n}\n\nDialogAction._supportsSpacingProps = true\n\nexport default DialogAction\n"],"mappings":";;;;;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;AACtD,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,MAAM,MAAM,qBAAqB;AACxC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,SAASC,OAAO,QAAQ,iBAAiB;AACzC,OAAOC,YAAY,MAAM,0BAA0B;AACnD,SAASC,0BAA0B,QAAQ,kCAAkC;AAkD7E,MAAMC,mBAAmB,GAAGA,CAAC;EAAEC;AAA0B,CAAC,KAAKA,KAAK,CAAC,CAAC;AAEtE,MAAMC,YAAY,GAAGC,IAAA,IAUO;EAAA,IAAAC,mBAAA,EAAAC,oBAAA;EAAA,IAVN;MACpBC,WAAW,GAAG,IAAI;MAClBC,WAAW,GAAG,IAAI;MAClBC,WAAW,GAAG,KAAK;MACnBC,WAAW,GAAG,KAAK;MACnBC,SAAS,GAAGV,mBAAmB;MAC/BW,SAAS,GAAGX,mBAAmB;MAC/BY,SAAS;MACTC;IAEoB,CAAC,GAAAV,IAAA;IADlBW,KAAK,GAAAC,wBAAA,CAAAZ,IAAA,EAAAa,SAAA;EAER,MAAM;IAAEC,WAAW;IAAEtB,MAAM,EAAEuB;EAAc,CAAC,GAAGzB,UAAU,CAACI,OAAO,CAAC;EAClE,MAAM;IAAEI;EAAM,CAAC,GAAGR,UAAU,CAACK,YAAY,CAAC;EAC1C,IAAIqB,qBAA8C;EAElD,MAAMC,gBAAgB,GAAG5B,WAAW,CACjC6B,KAAK,IAAK;IACTtB,0BAA0B,CAAC;MAAEW;IAAU,CAAC,EAAE,WAAW,EAAE;MACrDW,KAAK;MACLpB;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACA,KAAK,EAAES,SAAS,CACnB,CAAC;EACD,MAAMY,gBAAgB,GAAG9B,WAAW,CACjC6B,KAAK,IAAK;IACTtB,0BAA0B,CAAC;MAAEY;IAAU,CAAC,EAAE,WAAW,EAAE;MACrDU,KAAK;MACLpB;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACA,KAAK,EAAEU,SAAS,CACnB,CAAC;EAED,IAAIE,QAAQ,EAAE;IACZM,qBAAqB,GAAG5B,KAAK,CAACgC,QAAQ,CAACC,GAAG,CAACX,QAAQ,EAAGY,KAAK,IAAK;MAC9D,IAAIA,KAAK,CAACC,IAAI,KAAK/B,MAAM,EAAE;QACzB,OAAOJ,KAAK,CAACoC,YAAY,CACvBF,KAAK,EAAAG,aAAA,CAAAA,aAAA,KAEAH,KAAK,CAACX,KAAK;UACde,QAAQ,EAAGR,KAAK,IAAK;YACnBtB,0BAA0B,CAAC0B,KAAK,CAACX,KAAK,EAAE,UAAU,EAAE;cAClDO,KAAK;cACLpB;YACF,CAAC,CAAC;UACJ;QAAC,IAEHwB,KAAK,CAACX,KAAK,CAACD,QACd,CAAC;MACH,CAAC,MAAM;QACL,OAAOY,KAAK;MACd;IACF,CAAC,CAAC;EACJ;EAEA,OACElC,KAAA,CAAAuC,aAAA,CAAClC,KAAK,EAAAmC,QAAA;IACJC,OAAO,EAAC,SAAS;IACjBpB,SAAS,EAAElB,UAAU,CAAC,qBAAqB,EAAEkB,SAAS;EAAE,GACpDE,KAAK,GAERK,qBAAqB,EAErB,CAACN,QAAQ,IAAI,CAACL,WAAW,IACxBjB,KAAA,CAAAuC,aAAA,CAACnC,MAAM;IACLsC,IAAI,EAAE3B,WAAW,KAAIW,WAAW,aAAXA,WAAW,wBAAAb,mBAAA,GAAXa,WAAW,CAAEiB,MAAM,cAAA9B,mBAAA,uBAAnBA,mBAAA,CAAqBE,WAAW,CAAC;IACtD6B,OAAO,EAAC,WAAW;IACnBC,OAAO,EAAEd,gBAAiB;IAC1Be,IAAI,EAAE,CAAAnB,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEmB,IAAI,KAAI;EAAQ,CACtC,CACF,EACA,CAACxB,QAAQ,IAAI,CAACJ,WAAW,IACxBlB,KAAA,CAAAuC,aAAA,CAACnC,MAAM;IACLsC,IAAI,EAAE1B,WAAW,KAAIU,WAAW,aAAXA,WAAW,wBAAAZ,oBAAA,GAAXY,WAAW,CAAEiB,MAAM,cAAA7B,oBAAA,uBAAnBA,oBAAA,CAAqBE,WAAW,CAAC;IACtD4B,OAAO,EAAC,SAAS;IACjBC,OAAO,EAAEhB,gBAAiB;IAC1BiB,IAAI,EAAE,CAAAnB,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEmB,IAAI,KAAI;EAAQ,CACtC,CAEE,CAAC;AAEZ,CAAC;AAEDnC,YAAY,CAACoC,qBAAqB,GAAG,IAAI;AAEzC,eAAepC,YAAY"}
@@ -347,30 +347,30 @@ export const formatPhone = (number, locale = null) => {
347
347
  switch (locale) {
348
348
  default:
349
349
  {
350
- number = String(number).replace(/[^+0-9]/g, '');
351
350
  let code = '';
352
- if (number.length > 8 && number.substring(0, 2) !== '00' && !number.startsWith('+')) {
353
- number = '+' + number;
354
- }
355
- if (number[0] === '+') {
356
- code = number.substring(0, 3) + ' ';
357
- number = number.substring(3);
358
- } else if (number.substring(0, 2) === '00') {
359
- code = number.substring(0, 4) + ' ';
360
- number = number.substring(4);
351
+ number = String(number).replace(/^(00|\+|)47([^\s])/, '+47 $2').replace(/^00/, '+');
352
+ if (number.substring(0, 1) === '+') {
353
+ const codeAndNumber = number.match(/^\+([\d-]{1,8})\s{0,2}([\d\s-]{1,20})$/);
354
+ if (codeAndNumber) {
355
+ code = `+${codeAndNumber[1]} `;
356
+ number = codeAndNumber[2];
357
+ }
361
358
  }
362
- code = code.replace(/^00/, '+');
359
+ number = number.replace(/[^+\d]/g, '');
363
360
  const length = number.length;
364
- if (length === 8 && number[0] === '8') {
365
- display = code + number.split(/([0-9]{3})([0-9]{2})/).filter(s => s).join(' ');
361
+ if (length === 8 && number.substring(0, 1) === '8') {
362
+ display = code + number.split(/([\d]{3})([\d]{2})/).filter(s => s).join(' ');
366
363
  } else {
367
364
  if (length < 6) {
368
365
  display = code + number;
369
366
  } else {
370
- display = code + number.split(length === 6 ? /^(\+[0-9]{2})|([0-9]{3})/ : /^(\+[0-9]{2})|([0-9]{2})/).filter(s => s).join(' ');
367
+ if (code.includes('-')) {
368
+ code = code.replace(/(\+[\d]{1,2})-([\d]{1,6})/, '$1 ($2)');
369
+ }
370
+ display = code + number.split(length === 6 ? /^(\+[\d]{2})|([\d]{3})/ : /^(\+[\d]{2})|([\d]{2})/).filter(s => s).join(' ');
371
371
  }
372
372
  }
373
- aria = code + number.split(/([0-9]{2})/).filter(s => s).join(' ');
373
+ aria = code + number.split(/([\d]{2})/).filter(s => s).join(' ');
374
374
  }
375
375
  }
376
376
  if (aria === null) {