@dnb/eufemia 10.43.0 → 10.44.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 (432) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/cjs/components/autocomplete/Autocomplete.d.ts +2 -2
  3. package/cjs/components/autocomplete/AutocompleteDocs.js +7 -7
  4. package/cjs/components/autocomplete/AutocompleteDocs.js.map +1 -1
  5. package/cjs/components/button/Button.d.ts +1 -1
  6. package/cjs/components/button/Button.js +6 -5
  7. package/cjs/components/button/Button.js.map +1 -1
  8. package/cjs/components/input-masked/InputMaskedHooks.js +4 -0
  9. package/cjs/components/input-masked/InputMaskedHooks.js.map +1 -1
  10. package/cjs/components/space/Space.d.ts +1 -1
  11. package/cjs/components/space/Space.js.map +1 -1
  12. package/cjs/components/table/table-accordion/TableAccordionHead.js.map +1 -1
  13. package/cjs/components/table/table-navigation/TableNavigationHead.js +1 -1
  14. package/cjs/components/table/table-navigation/TableNavigationHead.js.map +1 -1
  15. package/cjs/components/upload/UploadDocs.js +1 -1
  16. package/cjs/components/upload/UploadDocs.js.map +1 -1
  17. package/cjs/components/upload/UploadInfo.js +1 -1
  18. package/cjs/components/upload/UploadInfo.js.map +1 -1
  19. package/cjs/components/upload/UploadVerify.js +4 -1
  20. package/cjs/components/upload/UploadVerify.js.map +1 -1
  21. package/cjs/components/upload/types.d.ts +2 -2
  22. package/cjs/components/upload/types.js.map +1 -1
  23. package/cjs/extensions/forms/DataContext/Context.d.ts +1 -0
  24. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  25. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +5 -12
  26. package/cjs/extensions/forms/DataContext/Provider/Provider.js +43 -18
  27. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  28. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +6 -1
  29. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  30. package/cjs/extensions/forms/Field/Currency/CurrencyDocs.d.ts +2 -0
  31. package/cjs/extensions/forms/Field/Currency/CurrencyDocs.js +31 -0
  32. package/cjs/extensions/forms/Field/Currency/CurrencyDocs.js.map +1 -0
  33. package/cjs/extensions/forms/Field/Expiry/Expiry.d.ts +1 -1
  34. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  35. package/cjs/extensions/forms/Field/FieldDocs.d.ts +7 -0
  36. package/cjs/extensions/forms/Field/FieldDocs.js +20 -1
  37. package/cjs/extensions/forms/Field/FieldDocs.js.map +1 -1
  38. package/cjs/extensions/forms/Field/Number/Number.js +7 -12
  39. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  40. package/cjs/extensions/forms/Field/Option/Option.d.ts +2 -4
  41. package/cjs/extensions/forms/Field/Option/Option.js +0 -21
  42. package/cjs/extensions/forms/Field/Option/Option.js.map +1 -1
  43. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +5 -2
  44. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +33 -15
  45. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  46. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.d.ts +3 -0
  47. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js +28 -0
  48. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js.map +1 -0
  49. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
  50. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +32 -16
  51. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  52. package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.d.ts +1 -0
  53. package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +16 -0
  54. package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -0
  55. package/cjs/extensions/forms/Field/Selection/Selection.d.ts +40 -16
  56. package/cjs/extensions/forms/Field/Selection/Selection.js +71 -16
  57. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  58. package/cjs/extensions/forms/Field/Selection/SelectionDocs.js +10 -0
  59. package/cjs/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -1
  60. package/cjs/extensions/forms/Field/Toggle/Toggle.js +1 -1
  61. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  62. package/cjs/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  63. package/cjs/extensions/forms/Form/Handler/Handler.js +3 -1
  64. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  65. package/cjs/extensions/forms/Form/Isolation/Isolation.d.ts +26 -5
  66. package/cjs/extensions/forms/Form/Isolation/Isolation.js +66 -26
  67. package/cjs/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  68. package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -0
  69. package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
  70. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js +11 -1
  71. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  72. package/cjs/extensions/forms/Form/Section/Section.js +2 -2
  73. package/cjs/extensions/forms/Form/Section/Section.js.map +1 -1
  74. package/cjs/extensions/forms/Form/data-context/clearData.d.ts +1 -0
  75. package/cjs/extensions/forms/Form/data-context/clearData.js +16 -0
  76. package/cjs/extensions/forms/Form/data-context/clearData.js.map +1 -0
  77. package/cjs/extensions/forms/Form/index.d.ts +1 -0
  78. package/cjs/extensions/forms/Form/index.js +7 -0
  79. package/cjs/extensions/forms/Form/index.js.map +1 -1
  80. package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
  81. package/cjs/extensions/forms/Iterate/Array/types.d.ts +1 -4
  82. package/cjs/extensions/forms/Iterate/Array/types.js.map +1 -1
  83. package/cjs/extensions/forms/Iterate/style/dnb-iterate.css +1 -1
  84. package/cjs/extensions/forms/Iterate/style/dnb-iterate.min.css +1 -1
  85. package/cjs/extensions/forms/Iterate/style/dnb-iterate.scss +1 -1
  86. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +4 -0
  87. package/cjs/extensions/forms/constants/locales/en-GB.js +4 -0
  88. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  89. package/cjs/extensions/forms/constants/locales/en-US.d.ts +4 -0
  90. package/cjs/extensions/forms/constants/locales/index.d.ts +8 -0
  91. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +4 -0
  92. package/cjs/extensions/forms/constants/locales/nb-NO.js +4 -0
  93. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  94. package/cjs/extensions/forms/hooks/DataValueDocs.js +4 -4
  95. package/cjs/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  96. package/cjs/extensions/forms/hooks/useDataValue.d.ts +1 -0
  97. package/cjs/extensions/forms/hooks/useDataValue.js +18 -9
  98. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  99. package/cjs/extensions/forms/hooks/useFieldProps.d.ts +5 -5
  100. package/cjs/extensions/forms/hooks/useFieldProps.js +39 -23
  101. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  102. package/cjs/extensions/forms/style/dnb-forms.css +1 -1
  103. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  104. package/cjs/extensions/forms/types.d.ts +16 -7
  105. package/cjs/extensions/forms/types.js.map +1 -1
  106. package/cjs/shared/Eufemia.d.ts +1 -1
  107. package/cjs/shared/Eufemia.js +2 -2
  108. package/cjs/shared/Eufemia.js.map +1 -1
  109. package/cjs/shared/helpers/isAsync.js +2 -2
  110. package/cjs/shared/helpers/isAsync.js.map +1 -1
  111. package/cjs/style/core/scopes.scss +1 -1
  112. package/cjs/style/dnb-ui-basis.css +1 -1
  113. package/cjs/style/dnb-ui-basis.min.css +1 -1
  114. package/cjs/style/dnb-ui-body.css +1 -1
  115. package/cjs/style/dnb-ui-body.min.css +1 -1
  116. package/cjs/style/dnb-ui-components.css +1 -1
  117. package/cjs/style/dnb-ui-components.min.css +1 -1
  118. package/cjs/style/dnb-ui-core.css +1 -1
  119. package/cjs/style/dnb-ui-core.min.css +1 -1
  120. package/cjs/style/dnb-ui-extensions.css +1 -1
  121. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  122. package/cjs/style/dnb-ui-forms.css +1 -1
  123. package/cjs/style/dnb-ui-forms.min.css +1 -1
  124. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +2 -2
  125. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  126. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
  127. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  128. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
  129. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  130. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +2 -2
  131. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  132. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
  133. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  134. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
  135. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  136. package/cjs/style/themes/theme-ui/ui-theme-components.css +2 -2
  137. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  138. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +1 -1
  139. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  140. package/cjs/style/themes/theme-ui/ui-theme-forms.css +1 -1
  141. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  142. package/components/autocomplete/Autocomplete.d.ts +2 -2
  143. package/components/autocomplete/AutocompleteDocs.js +7 -7
  144. package/components/autocomplete/AutocompleteDocs.js.map +1 -1
  145. package/components/button/Button.d.ts +1 -1
  146. package/components/button/Button.js +6 -5
  147. package/components/button/Button.js.map +1 -1
  148. package/components/input-masked/InputMaskedHooks.js +4 -0
  149. package/components/input-masked/InputMaskedHooks.js.map +1 -1
  150. package/components/space/Space.d.ts +1 -1
  151. package/components/space/Space.js.map +1 -1
  152. package/components/table/table-accordion/TableAccordionHead.js.map +1 -1
  153. package/components/table/table-navigation/TableNavigationHead.js +1 -1
  154. package/components/table/table-navigation/TableNavigationHead.js.map +1 -1
  155. package/components/upload/UploadDocs.js +1 -1
  156. package/components/upload/UploadDocs.js.map +1 -1
  157. package/components/upload/UploadInfo.js +1 -1
  158. package/components/upload/UploadInfo.js.map +1 -1
  159. package/components/upload/UploadVerify.js +4 -1
  160. package/components/upload/UploadVerify.js.map +1 -1
  161. package/components/upload/types.d.ts +2 -2
  162. package/components/upload/types.js.map +1 -1
  163. package/es/components/autocomplete/Autocomplete.d.ts +2 -2
  164. package/es/components/autocomplete/AutocompleteDocs.js +7 -7
  165. package/es/components/autocomplete/AutocompleteDocs.js.map +1 -1
  166. package/es/components/button/Button.d.ts +1 -1
  167. package/es/components/button/Button.js +6 -5
  168. package/es/components/button/Button.js.map +1 -1
  169. package/es/components/input-masked/InputMaskedHooks.js +4 -0
  170. package/es/components/input-masked/InputMaskedHooks.js.map +1 -1
  171. package/es/components/space/Space.d.ts +1 -1
  172. package/es/components/space/Space.js.map +1 -1
  173. package/es/components/table/table-accordion/TableAccordionHead.js.map +1 -1
  174. package/es/components/table/table-navigation/TableNavigationHead.js +1 -1
  175. package/es/components/table/table-navigation/TableNavigationHead.js.map +1 -1
  176. package/es/components/upload/UploadDocs.js +1 -1
  177. package/es/components/upload/UploadDocs.js.map +1 -1
  178. package/es/components/upload/UploadInfo.js +1 -1
  179. package/es/components/upload/UploadInfo.js.map +1 -1
  180. package/es/components/upload/UploadVerify.js +4 -1
  181. package/es/components/upload/UploadVerify.js.map +1 -1
  182. package/es/components/upload/types.d.ts +2 -2
  183. package/es/components/upload/types.js.map +1 -1
  184. package/es/extensions/forms/DataContext/Context.d.ts +1 -0
  185. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  186. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +5 -12
  187. package/es/extensions/forms/DataContext/Provider/Provider.js +41 -18
  188. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  189. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +6 -1
  190. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  191. package/es/extensions/forms/Field/Currency/CurrencyDocs.d.ts +2 -0
  192. package/es/extensions/forms/Field/Currency/CurrencyDocs.js +22 -0
  193. package/es/extensions/forms/Field/Currency/CurrencyDocs.js.map +1 -0
  194. package/es/extensions/forms/Field/Expiry/Expiry.d.ts +1 -1
  195. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  196. package/es/extensions/forms/Field/FieldDocs.d.ts +7 -0
  197. package/es/extensions/forms/Field/FieldDocs.js +16 -0
  198. package/es/extensions/forms/Field/FieldDocs.js.map +1 -1
  199. package/es/extensions/forms/Field/Number/Number.js +7 -12
  200. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  201. package/es/extensions/forms/Field/Option/Option.d.ts +2 -4
  202. package/es/extensions/forms/Field/Option/Option.js +0 -20
  203. package/es/extensions/forms/Field/Option/Option.js.map +1 -1
  204. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +5 -2
  205. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +32 -15
  206. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  207. package/es/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.d.ts +3 -0
  208. package/es/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js +20 -0
  209. package/es/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js.map +1 -0
  210. package/es/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
  211. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +16 -3
  212. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  213. package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.d.ts +1 -0
  214. package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +9 -0
  215. package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -0
  216. package/es/extensions/forms/Field/Selection/Selection.d.ts +40 -16
  217. package/es/extensions/forms/Field/Selection/Selection.js +67 -15
  218. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  219. package/es/extensions/forms/Field/Selection/SelectionDocs.js +10 -0
  220. package/es/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -1
  221. package/es/extensions/forms/Field/Toggle/Toggle.js +1 -1
  222. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  223. package/es/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  224. package/es/extensions/forms/Form/Handler/Handler.js +3 -1
  225. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  226. package/es/extensions/forms/Form/Isolation/Isolation.d.ts +26 -5
  227. package/es/extensions/forms/Form/Isolation/Isolation.js +67 -27
  228. package/es/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  229. package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -0
  230. package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
  231. package/es/extensions/forms/Form/Isolation/IsolationDocs.js +11 -1
  232. package/es/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  233. package/es/extensions/forms/Form/Section/Section.js +2 -2
  234. package/es/extensions/forms/Form/Section/Section.js.map +1 -1
  235. package/es/extensions/forms/Form/data-context/clearData.d.ts +1 -0
  236. package/es/extensions/forms/Form/data-context/clearData.js +10 -0
  237. package/es/extensions/forms/Form/data-context/clearData.js.map +1 -0
  238. package/es/extensions/forms/Form/index.d.ts +1 -0
  239. package/es/extensions/forms/Form/index.js +1 -0
  240. package/es/extensions/forms/Form/index.js.map +1 -1
  241. package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
  242. package/es/extensions/forms/Iterate/Array/types.d.ts +1 -4
  243. package/es/extensions/forms/Iterate/Array/types.js.map +1 -1
  244. package/es/extensions/forms/Iterate/style/dnb-iterate.css +1 -1
  245. package/es/extensions/forms/Iterate/style/dnb-iterate.min.css +1 -1
  246. package/es/extensions/forms/Iterate/style/dnb-iterate.scss +1 -1
  247. package/es/extensions/forms/constants/locales/en-GB.d.ts +4 -0
  248. package/es/extensions/forms/constants/locales/en-GB.js +4 -0
  249. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  250. package/es/extensions/forms/constants/locales/en-US.d.ts +4 -0
  251. package/es/extensions/forms/constants/locales/index.d.ts +8 -0
  252. package/es/extensions/forms/constants/locales/nb-NO.d.ts +4 -0
  253. package/es/extensions/forms/constants/locales/nb-NO.js +4 -0
  254. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  255. package/es/extensions/forms/hooks/DataValueDocs.js +4 -4
  256. package/es/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  257. package/es/extensions/forms/hooks/useDataValue.d.ts +1 -0
  258. package/es/extensions/forms/hooks/useDataValue.js +18 -9
  259. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  260. package/es/extensions/forms/hooks/useFieldProps.d.ts +5 -5
  261. package/es/extensions/forms/hooks/useFieldProps.js +39 -23
  262. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  263. package/es/extensions/forms/style/dnb-forms.css +1 -1
  264. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  265. package/es/extensions/forms/types.d.ts +16 -7
  266. package/es/extensions/forms/types.js.map +1 -1
  267. package/es/shared/Eufemia.d.ts +1 -1
  268. package/es/shared/Eufemia.js +2 -2
  269. package/es/shared/Eufemia.js.map +1 -1
  270. package/es/shared/helpers/isAsync.js +2 -2
  271. package/es/shared/helpers/isAsync.js.map +1 -1
  272. package/es/style/core/scopes.scss +1 -1
  273. package/es/style/dnb-ui-basis.css +1 -1
  274. package/es/style/dnb-ui-basis.min.css +1 -1
  275. package/es/style/dnb-ui-body.css +1 -1
  276. package/es/style/dnb-ui-body.min.css +1 -1
  277. package/es/style/dnb-ui-components.css +1 -1
  278. package/es/style/dnb-ui-components.min.css +1 -1
  279. package/es/style/dnb-ui-core.css +1 -1
  280. package/es/style/dnb-ui-core.min.css +1 -1
  281. package/es/style/dnb-ui-extensions.css +1 -1
  282. package/es/style/dnb-ui-extensions.min.css +1 -1
  283. package/es/style/dnb-ui-forms.css +1 -1
  284. package/es/style/dnb-ui-forms.min.css +1 -1
  285. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +2 -2
  286. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  287. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
  288. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  289. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
  290. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  291. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +2 -2
  292. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  293. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
  294. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  295. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
  296. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  297. package/es/style/themes/theme-ui/ui-theme-components.css +2 -2
  298. package/es/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  299. package/es/style/themes/theme-ui/ui-theme-extensions.css +1 -1
  300. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  301. package/es/style/themes/theme-ui/ui-theme-forms.css +1 -1
  302. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  303. package/esm/dnb-ui-basis.min.mjs +1 -1
  304. package/esm/dnb-ui-components.min.mjs +1 -1
  305. package/esm/dnb-ui-elements.min.mjs +1 -1
  306. package/esm/dnb-ui-extensions.min.mjs +3 -3
  307. package/esm/dnb-ui-lib.min.mjs +1 -1
  308. package/extensions/forms/DataContext/Context.d.ts +1 -0
  309. package/extensions/forms/DataContext/Context.js.map +1 -1
  310. package/extensions/forms/DataContext/Provider/Provider.d.ts +5 -12
  311. package/extensions/forms/DataContext/Provider/Provider.js +41 -18
  312. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  313. package/extensions/forms/DataContext/Provider/ProviderDocs.js +6 -1
  314. package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  315. package/extensions/forms/Field/Currency/CurrencyDocs.d.ts +2 -0
  316. package/extensions/forms/Field/Currency/CurrencyDocs.js +22 -0
  317. package/extensions/forms/Field/Currency/CurrencyDocs.js.map +1 -0
  318. package/extensions/forms/Field/Expiry/Expiry.d.ts +1 -1
  319. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  320. package/extensions/forms/Field/FieldDocs.d.ts +7 -0
  321. package/extensions/forms/Field/FieldDocs.js +18 -0
  322. package/extensions/forms/Field/FieldDocs.js.map +1 -1
  323. package/extensions/forms/Field/Number/Number.js +7 -12
  324. package/extensions/forms/Field/Number/Number.js.map +1 -1
  325. package/extensions/forms/Field/Option/Option.d.ts +2 -4
  326. package/extensions/forms/Field/Option/Option.js +0 -20
  327. package/extensions/forms/Field/Option/Option.js.map +1 -1
  328. package/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +5 -2
  329. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +33 -15
  330. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  331. package/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.d.ts +3 -0
  332. package/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js +20 -0
  333. package/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js.map +1 -0
  334. package/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
  335. package/extensions/forms/Field/SelectCountry/SelectCountry.js +32 -16
  336. package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  337. package/extensions/forms/Field/SelectCountry/SelectCountryDocs.d.ts +1 -0
  338. package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +9 -0
  339. package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -0
  340. package/extensions/forms/Field/Selection/Selection.d.ts +40 -16
  341. package/extensions/forms/Field/Selection/Selection.js +70 -15
  342. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  343. package/extensions/forms/Field/Selection/SelectionDocs.js +10 -0
  344. package/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -1
  345. package/extensions/forms/Field/Toggle/Toggle.js +1 -1
  346. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  347. package/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  348. package/extensions/forms/Form/Handler/Handler.js +3 -1
  349. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  350. package/extensions/forms/Form/Isolation/Isolation.d.ts +26 -5
  351. package/extensions/forms/Form/Isolation/Isolation.js +67 -27
  352. package/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  353. package/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -0
  354. package/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
  355. package/extensions/forms/Form/Isolation/IsolationDocs.js +11 -1
  356. package/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  357. package/extensions/forms/Form/Section/Section.js +2 -2
  358. package/extensions/forms/Form/Section/Section.js.map +1 -1
  359. package/extensions/forms/Form/data-context/clearData.d.ts +1 -0
  360. package/extensions/forms/Form/data-context/clearData.js +10 -0
  361. package/extensions/forms/Form/data-context/clearData.js.map +1 -0
  362. package/extensions/forms/Form/index.d.ts +1 -0
  363. package/extensions/forms/Form/index.js +1 -0
  364. package/extensions/forms/Form/index.js.map +1 -1
  365. package/extensions/forms/Iterate/Array/Array.js.map +1 -1
  366. package/extensions/forms/Iterate/Array/types.d.ts +1 -4
  367. package/extensions/forms/Iterate/Array/types.js.map +1 -1
  368. package/extensions/forms/Iterate/style/dnb-iterate.css +1 -1
  369. package/extensions/forms/Iterate/style/dnb-iterate.min.css +1 -1
  370. package/extensions/forms/Iterate/style/dnb-iterate.scss +1 -1
  371. package/extensions/forms/constants/locales/en-GB.d.ts +4 -0
  372. package/extensions/forms/constants/locales/en-GB.js +4 -0
  373. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  374. package/extensions/forms/constants/locales/en-US.d.ts +4 -0
  375. package/extensions/forms/constants/locales/index.d.ts +8 -0
  376. package/extensions/forms/constants/locales/nb-NO.d.ts +4 -0
  377. package/extensions/forms/constants/locales/nb-NO.js +4 -0
  378. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  379. package/extensions/forms/hooks/DataValueDocs.js +4 -4
  380. package/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  381. package/extensions/forms/hooks/useDataValue.d.ts +1 -0
  382. package/extensions/forms/hooks/useDataValue.js +18 -9
  383. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  384. package/extensions/forms/hooks/useFieldProps.d.ts +5 -5
  385. package/extensions/forms/hooks/useFieldProps.js +39 -23
  386. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  387. package/extensions/forms/style/dnb-forms.css +1 -1
  388. package/extensions/forms/style/dnb-forms.min.css +1 -1
  389. package/extensions/forms/types.d.ts +16 -7
  390. package/extensions/forms/types.js.map +1 -1
  391. package/package.json +1 -1
  392. package/shared/Eufemia.d.ts +1 -1
  393. package/shared/Eufemia.js +2 -2
  394. package/shared/Eufemia.js.map +1 -1
  395. package/shared/helpers/isAsync.js +2 -2
  396. package/shared/helpers/isAsync.js.map +1 -1
  397. package/style/core/scopes.scss +1 -1
  398. package/style/dnb-ui-basis.css +1 -1
  399. package/style/dnb-ui-basis.min.css +1 -1
  400. package/style/dnb-ui-body.css +1 -1
  401. package/style/dnb-ui-body.min.css +1 -1
  402. package/style/dnb-ui-components.css +1 -1
  403. package/style/dnb-ui-components.min.css +1 -1
  404. package/style/dnb-ui-core.css +1 -1
  405. package/style/dnb-ui-core.min.css +1 -1
  406. package/style/dnb-ui-extensions.css +1 -1
  407. package/style/dnb-ui-extensions.min.css +1 -1
  408. package/style/dnb-ui-forms.css +1 -1
  409. package/style/dnb-ui-forms.min.css +1 -1
  410. package/style/themes/theme-eiendom/eiendom-theme-components.css +2 -2
  411. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  412. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
  413. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  414. package/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
  415. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  416. package/style/themes/theme-sbanken/sbanken-theme-components.css +2 -2
  417. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  418. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
  419. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  420. package/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
  421. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  422. package/style/themes/theme-ui/ui-theme-components.css +2 -2
  423. package/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  424. package/style/themes/theme-ui/ui-theme-extensions.css +1 -1
  425. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  426. package/style/themes/theme-ui/ui-theme-forms.css +1 -1
  427. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  428. package/umd/dnb-ui-basis.min.js +1 -1
  429. package/umd/dnb-ui-components.min.js +1 -1
  430. package/umd/dnb-ui-elements.min.js +1 -1
  431. package/umd/dnb-ui-extensions.min.js +3 -3
  432. package/umd/dnb-ui-lib.min.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderDocs.js","names":["ProviderProperties","defaultData","doc","type","status","data","id","schema","errorMessages","minimumAsyncBehaviorTime","asyncSubmitTimeout","scrollTopOnSubmit","sessionStorageId","ajvInstance","transformIn","transformOut","filterSubmitData","globalStatusId","required","disabled","locale","children","ProviderEvents","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/ProviderDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const ProviderProperties: PropertiesTableProps = {\n defaultData: {\n doc: 'Default source data, only used if no other source is available, and not leading to updates if changed after mount.',\n type: 'object',\n status: 'optional',\n },\n data: {\n doc: 'Dynamic source data used as both initial data, and updates internal data if changed after mount.',\n type: 'object',\n status: 'optional',\n },\n id: {\n doc: 'Unique id for connecting Form.Handler and helper tools such as Form.useData.',\n type: 'string',\n status: 'optional',\n },\n schema: {\n doc: 'JSON Schema for validation of the data set.',\n type: 'object',\n status: 'optional',\n },\n errorMessages: {\n doc: 'Object containing error messages by either type of JSON Pointer path and type.',\n type: 'object',\n status: 'optional',\n },\n minimumAsyncBehaviorTime: {\n doc: 'Minimum time to display the submit indicator. Default is 1s.',\n type: 'boolean',\n status: 'optional',\n },\n asyncSubmitTimeout: {\n doc: 'The maximum time to display the submit indicator before it changes back to normal. In case something went wrong during submission. Default is 30s.',\n type: 'boolean',\n status: 'optional',\n },\n scrollTopOnSubmit: {\n doc: 'True for the UI to scroll to the top of the page when data is submitted.',\n type: 'boolean',\n status: 'optional',\n },\n sessionStorageId: {\n doc: 'Key for saving active data to session storage and loading it on mount.',\n type: 'string',\n status: 'optional',\n },\n ajvInstance: {\n doc: 'Provide your own custom Ajv instance. More info in the <a href=\"/uilib/extensions/forms/Form/schema-validation/#custom-ajv-instance-and-keywords\">Schema validation</a> section.',\n type: 'ajv',\n status: 'optional',\n },\n transformIn: {\n doc: \"Mutate the data context (internally as well) based on your criteria: `({ path, value, data, props, internal }) => 'new value'`. It will iterate on each data entry (/path).\",\n type: 'function',\n status: 'optional',\n },\n transformOut: {\n doc: \"Mutate the data before it enters onSubmit or onChange based on your criteria: `({ path, value, data, props, internal }) => 'new value'`. It will iterate on each data entry (/path).\",\n type: 'function',\n status: 'optional',\n },\n filterSubmitData: {\n doc: 'Filter the `onSubmit` output data, based on your criteria: `({ path, value, data, props, internal }) => !props?.disabled`. It will iterate on each data entry (/path). Return false to exclude the entry.',\n type: 'function',\n status: 'optional',\n },\n globalStatusId: {\n doc: 'If needed, you can define a custom [GlobalStatus](/uilib/components/global-status) id. Defaults to `main`.',\n type: 'string',\n status: 'optional',\n },\n required: {\n doc: 'Make all fields required.',\n type: 'boolean',\n status: 'optional',\n },\n disabled: {\n doc: 'Disable all fields.',\n type: 'boolean',\n status: 'optional',\n },\n locale: {\n doc: 'Locale (language) to use for all nested Eufemia components.',\n type: 'string',\n status: 'optional',\n },\n children: {\n doc: 'Contents.',\n type: 'React.Node',\n status: 'required',\n },\n}\n\nexport const ProviderEvents: PropertiesTableProps = {\n onChange: {\n doc: \"Will be called when a value of a field was changed by the user, with the data set (including the changed value) as argument. When an async function is provided, it will show an indicator on the current label during a field change. Related props: `minimumAsyncBehaviorTime` and `asyncSubmitTimeout`. You can return an error or an object with these keys `{ info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` in addition to { success: 'saved' } indicate the field was saved. Will emit unvalidated by default and validated when an async function is provided (like `onSubmit`).\",\n type: 'function',\n status: 'optional',\n },\n onPathChange: {\n doc: 'Will be called when a value of a field was changed by the user, with the `path` (JSON Pointer) and new `value` as arguments. Can be an async function. Will emit unvalidated by default and validated when `onChange` is an async function.',\n type: 'function',\n status: 'optional',\n },\n onSubmit: {\n doc: \"Will be called (on validation success) when the user submit the form (i.e by clicking a [SubmitButton](/uilib/extensions/forms/Form/SubmitButton) component inside), with the data set as argument. When an async function is provided, it will show an indicator on the submit button during the form submission. All form elements will be disabled during the submit. The indicator will be shown for minimum 1 second. Related props: `minimumAsyncBehaviorTime` and `asyncSubmitTimeout`. You can return an error or an object with these keys `{ status: 'pending', info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` to be shown in a [FormStatus](/uilib/components/form-status). Will only emit when every validation has passed.\",\n type: 'function',\n status: 'optional',\n },\n onSubmitRequest: {\n doc: 'Will be called when the user tries to submit, but errors stop the data from being submitted.',\n type: 'function',\n status: 'optional',\n },\n onSubmitComplete: {\n doc: 'Will be called after onSubmit has finished and had not errors. It supports the same return values as `onSubmit` and will be merged together.',\n type: 'function',\n status: 'optional',\n },\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ProviderDocs.js","names":["ProviderProperties","defaultData","doc","type","status","data","id","schema","errorMessages","minimumAsyncBehaviorTime","asyncSubmitTimeout","scrollTopOnSubmit","sessionStorageId","ajvInstance","transformIn","transformOut","filterSubmitData","globalStatusId","required","disabled","locale","children","ProviderEvents","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete","onClear"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/ProviderDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const ProviderProperties: PropertiesTableProps = {\n defaultData: {\n doc: 'Default source data, only used if no other source is available, and not leading to updates if changed after mount.',\n type: 'object',\n status: 'optional',\n },\n data: {\n doc: 'Dynamic source data used as both initial data, and updates internal data if changed after mount.',\n type: 'object',\n status: 'optional',\n },\n id: {\n doc: 'Unique id for connecting Form.Handler and helper tools such as Form.useData.',\n type: 'string',\n status: 'optional',\n },\n schema: {\n doc: 'JSON Schema for validation of the data set.',\n type: 'object',\n status: 'optional',\n },\n errorMessages: {\n doc: 'Object containing error messages by either type of JSON Pointer path and type.',\n type: 'object',\n status: 'optional',\n },\n minimumAsyncBehaviorTime: {\n doc: 'Minimum time to display the submit indicator. Default is 1s.',\n type: 'boolean',\n status: 'optional',\n },\n asyncSubmitTimeout: {\n doc: 'The maximum time to display the submit indicator before it changes back to normal. In case something went wrong during submission. Default is 30s.',\n type: 'boolean',\n status: 'optional',\n },\n scrollTopOnSubmit: {\n doc: 'True for the UI to scroll to the top of the page when data is submitted.',\n type: 'boolean',\n status: 'optional',\n },\n sessionStorageId: {\n doc: 'Key for saving active data to session storage and loading it on mount.',\n type: 'string',\n status: 'optional',\n },\n ajvInstance: {\n doc: 'Provide your own custom Ajv instance. More info in the [Schema validation](/uilib/extensions/forms/Form/schema-validation/#custom-ajv-instance-and-keywords) section.',\n type: 'ajv',\n status: 'optional',\n },\n transformIn: {\n doc: \"Mutate the data context (internally as well) based on your criteria: `({ path, value, data, props, internal }) => 'new value'`. It will iterate on each data entry (/path).\",\n type: 'function',\n status: 'optional',\n },\n transformOut: {\n doc: \"Mutate the data before it enters onSubmit or onChange based on your criteria: `({ path, value, data, props, internal }) => 'new value'`. It will iterate on each data entry (/path).\",\n type: 'function',\n status: 'optional',\n },\n filterSubmitData: {\n doc: 'Filter the `onSubmit` output data, based on your criteria: `({ path, value, data, props, internal }) => !props?.disabled`. It will iterate on each data entry (/path). Return false to exclude the entry.',\n type: 'function',\n status: 'optional',\n },\n globalStatusId: {\n doc: 'If needed, you can define a custom [GlobalStatus](/uilib/components/global-status) id. Defaults to `main`.',\n type: 'string',\n status: 'optional',\n },\n required: {\n doc: 'Make all fields required.',\n type: 'boolean',\n status: 'optional',\n },\n disabled: {\n doc: 'Disable all fields.',\n type: 'boolean',\n status: 'optional',\n },\n locale: {\n doc: 'Locale (language) to use for all nested Eufemia components.',\n type: 'string',\n status: 'optional',\n },\n children: {\n doc: 'Contents.',\n type: 'React.Node',\n status: 'required',\n },\n}\n\nexport const ProviderEvents: PropertiesTableProps = {\n onChange: {\n doc: \"Will be called when a value of a field was changed by the user, with the data set (including the changed value) as argument. When an async function is provided, it will show an indicator on the current label during a field change. Related props: `minimumAsyncBehaviorTime` and `asyncSubmitTimeout`. You can return an error or an object with these keys `{ info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` in addition to { success: 'saved' } indicate the field was saved. Will emit unvalidated by default and validated when an async function is provided (like `onSubmit`).\",\n type: 'function',\n status: 'optional',\n },\n onPathChange: {\n doc: 'Will be called when a value of a field was changed by the user, with the `path` (JSON Pointer) and new `value` as arguments. Can be an async function. Will emit unvalidated by default and validated when `onChange` is an async function.',\n type: 'function',\n status: 'optional',\n },\n onSubmit: {\n doc: \"Will be called (on validation success) when the user submit the form (i.e by clicking a [SubmitButton](/uilib/extensions/forms/Form/SubmitButton) component inside), with the data set as argument. When an async function is provided, it will show an indicator on the submit button during the form submission. All form elements will be disabled during the submit. The indicator will be shown for minimum 1 second. Related props: `minimumAsyncBehaviorTime` and `asyncSubmitTimeout`. You can return an error or an object with these keys `{ status: 'pending', info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` to be shown in a [FormStatus](/uilib/components/form-status). Will only emit when every validation has passed.\",\n type: 'function',\n status: 'optional',\n },\n onSubmitRequest: {\n doc: 'Will be called when the user tries to submit, but errors stop the data from being submitted.',\n type: 'function',\n status: 'optional',\n },\n onSubmitComplete: {\n doc: 'Will be called after onSubmit has finished and had not errors. It supports the same return values as `onSubmit` and will be merged together.',\n type: 'function',\n status: 'optional',\n },\n onClear: {\n doc: 'Will be called when the form is cleared via `Form.clearData` or via the `onSubmit` event (or `onCommit`) argument `{ clearData }`.',\n type: 'function',\n status: 'optional',\n },\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { PropertiesTableProps } from '../../../../shared/types';
2
+ export declare const currencyProperties: PropertiesTableProps;
@@ -0,0 +1,22 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ 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; }
3
+ 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; }
4
+ import { numberProperties } from '../Number/NumberDocs';
5
+ export const currencyProperties = _objectSpread({
6
+ currency: {
7
+ doc: 'Defines what format to show the currency value in I.e `NOK` or `USD`.',
8
+ type: 'string',
9
+ status: 'optional'
10
+ },
11
+ currencyDisplay: {
12
+ doc: 'Defined the currency display style. Defaults to `code`.',
13
+ type: ['code', 'symbol', 'narrowSymbol', 'name'],
14
+ status: 'optional'
15
+ },
16
+ help: {
17
+ doc: 'Provide a help button. Object consisting of `title` and `content`.',
18
+ type: 'object',
19
+ status: 'optional'
20
+ }
21
+ }, numberProperties);
22
+ //# sourceMappingURL=CurrencyDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurrencyDocs.js","names":["numberProperties","currencyProperties","_objectSpread","currency","doc","type","status","currencyDisplay","help"],"sources":["../../../../../../src/extensions/forms/Field/Currency/CurrencyDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\nimport { numberProperties } from '../Number/NumberDocs'\n\nexport const currencyProperties: PropertiesTableProps = {\n currency: {\n doc: 'Defines what format to show the currency value in I.e `NOK` or `USD`.',\n type: 'string',\n status: 'optional',\n },\n currencyDisplay: {\n doc: 'Defined the currency display style. Defaults to `code`.',\n type: ['code', 'symbol', 'narrowSymbol', 'name'],\n status: 'optional',\n },\n help: {\n doc: 'Provide a help button. Object consisting of `title` and `content`.',\n type: 'object',\n status: 'optional',\n },\n ...numberProperties,\n}\n"],"mappings":";;;AACA,SAASA,gBAAgB,QAAQ,sBAAsB;AAEvD,OAAO,MAAMC,kBAAwC,GAAAC,aAAA;EACnDC,QAAQ,EAAE;IACRC,GAAG,EAAE,uEAAuE;IAC5EC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,eAAe,EAAE;IACfH,GAAG,EAAE,yDAAyD;IAC9DC,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC;IAChDC,MAAM,EAAE;EACV,CAAC;EACDE,IAAI,EAAE;IACJJ,GAAG,EAAE,oEAAoE;IACzEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV;AAAC,GACEN,gBAAgB,CACpB"}
@@ -1,5 +1,5 @@
1
1
  import { FieldHelpProps, FieldProps } from '../../types';
2
- export type ExpiryProps = FieldHelpProps & FieldProps<string>;
2
+ export type ExpiryProps = FieldHelpProps & FieldProps<string, undefined | ''>;
3
3
  declare function Expiry(props: ExpiryProps): import("react/jsx-runtime").JSX.Element;
4
4
  declare namespace Expiry {
5
5
  var _supportsEufemiaSpacingProps: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Expiry.js","names":["React","useCallback","pickSpacingProps","useFieldProps","classnames","FieldBlock","MultiInputMask","HelpButton","useErrorMessage","useTranslation","useSharedTranslation","Expiry","props","_value$substring","Date","errorRequired","label","expiryLabel","DatePicker","placeholder_characters","placeholders","month","monthLabel","year","yearLabel","errorMessages","path","required","validateRequired","value","_ref","error","undefined","preparedProps","_objectSpread","fromInput","toExpiryString","id","className","hasError","info","warning","help","disabled","labelDescription","layout","htmlAttributes","handleFocus","handleBlur","handleChange","expiry","ensureValidMonth","substring","status","createElement","_extends","forId","stretch","values","statusState","onChange","onBlur","onFocus","delimiter","inputMode","inputs","mask","getMonthMask","placeholderCharacter","autoComplete","suffix","title","content","Object","join","firstMask","secondMask","firstDigit","charAt","isFirstDigitValid","test","secondDigit","isSecondDigitValid","_supportsEufemiaSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Expiry/Expiry.tsx"],"sourcesContent":["import React, { useCallback } from 'react'\nimport { FieldHelpProps, FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { useFieldProps } from '../../hooks'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { MultiInputMask } from '../../../../components/input-masked'\nimport type { MultiInputMaskValue } from '../../../../components/input-masked'\nimport { HelpButton } from '../../../../components'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport { useTranslation as useSharedTranslation } from '../../../../shared'\nimport useTranslation from '../../hooks/useTranslation'\n\ntype ExpiryValue = MultiInputMaskValue<'month' | 'year'>\n\nexport type ExpiryProps = FieldHelpProps & FieldProps<string>\n\nfunction Expiry(props: ExpiryProps) {\n const {\n Date: { errorRequired },\n Expiry: { label: expiryLabel },\n } = useTranslation()\n\n const {\n DatePicker: {\n placeholder_characters: placeholders,\n month: monthLabel,\n year: yearLabel,\n },\n } = useSharedTranslation()\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: errorRequired,\n })\n\n const validateRequired = useCallback(\n (value: string, { required, error }) => {\n return required && !value ? error : undefined\n },\n []\n )\n\n const preparedProps: ExpiryProps = {\n ...props,\n errorMessages,\n fromInput: toExpiryString,\n validateRequired,\n }\n\n const {\n id,\n className,\n label = expiryLabel,\n error,\n hasError,\n info,\n warning,\n help,\n disabled,\n value = '',\n labelDescription,\n layout = 'vertical',\n htmlAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const expiry: ExpiryValue = {\n month: ensureValidMonth(value?.substring(0, 2)),\n year: value?.substring(2, 4) ?? '',\n }\n\n const status = hasError\n ? 'error'\n : warning\n ? 'warn'\n : info\n ? 'info'\n : null\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-expiry', className)}\n id={id}\n forId={`${id}-input-month`}\n label={label}\n layout={layout}\n labelDescription={labelDescription}\n info={info}\n warning={warning}\n error={error}\n {...pickSpacingProps(props)}\n >\n <MultiInputMask\n stretch\n id={`${id}-input`}\n values={expiry}\n status={status}\n statusState={disabled ? 'disabled' : undefined}\n disabled={disabled}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n delimiter=\"/\"\n inputMode=\"numeric\"\n inputs={[\n {\n id: 'month',\n label: monthLabel,\n mask: getMonthMask(expiry?.month),\n placeholderCharacter: placeholders['month'],\n autoComplete: 'cc-exp-month',\n ...htmlAttributes,\n },\n {\n id: 'year',\n label: yearLabel,\n mask: [/[0-9]/, /[0-9]/],\n placeholderCharacter: placeholders['year'],\n autoComplete: 'cc-exp-year',\n ...htmlAttributes,\n },\n ]}\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined\n }\n />\n </FieldBlock>\n )\n\n function toExpiryString(values: ExpiryValue) {\n return Object.values(values).join('')\n }\n\n function ensureValidMonth(month: string) {\n // Return empty value if no month is given\n if (!month) {\n return ''\n }\n\n const [firstMask, secondMask] = getMonthMask(month)\n\n const firstDigit = month?.charAt(0)\n const isFirstDigitValid = firstMask.test(firstDigit)\n\n if (firstDigit && !isFirstDigitValid) {\n // Return empty value if the first digit is invalid\n return ''\n }\n\n const secondDigit = month?.charAt(1)\n const isSecondDigitValid = secondMask.test(secondDigit)\n\n if (secondDigit && !isSecondDigitValid) {\n // Return empty value if the second digit is invalid\n return ''\n }\n\n // Return given month of month value is valid\n return month\n }\n\n function getMonthMask(month: string) {\n const firstDigit = month?.charAt(0)\n\n return [\n /[0-1]/,\n firstDigit === '0' || firstDigit === '' ? /[1-9]/ : /[0-2]/,\n ]\n }\n}\n\nExpiry._supportsEufemiaSpacingProps = true\nexport default Expiry\n"],"mappings":"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"}
1
+ {"version":3,"file":"Expiry.js","names":["React","useCallback","pickSpacingProps","useFieldProps","classnames","FieldBlock","MultiInputMask","HelpButton","useErrorMessage","useTranslation","useSharedTranslation","Expiry","props","_value$substring","Date","errorRequired","label","expiryLabel","DatePicker","placeholder_characters","placeholders","month","monthLabel","year","yearLabel","errorMessages","path","required","validateRequired","value","_ref","error","undefined","preparedProps","_objectSpread","fromInput","toExpiryString","id","className","hasError","info","warning","help","disabled","labelDescription","layout","htmlAttributes","handleFocus","handleBlur","handleChange","expiry","ensureValidMonth","substring","status","createElement","_extends","forId","stretch","values","statusState","onChange","onBlur","onFocus","delimiter","inputMode","inputs","mask","getMonthMask","placeholderCharacter","autoComplete","suffix","title","content","Object","join","firstMask","secondMask","firstDigit","charAt","isFirstDigitValid","test","secondDigit","isSecondDigitValid","_supportsEufemiaSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Expiry/Expiry.tsx"],"sourcesContent":["import React, { useCallback } from 'react'\nimport { FieldHelpProps, FieldProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { useFieldProps } from '../../hooks'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { MultiInputMask } from '../../../../components/input-masked'\nimport type { MultiInputMaskValue } from '../../../../components/input-masked'\nimport { HelpButton } from '../../../../components'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport { useTranslation as useSharedTranslation } from '../../../../shared'\nimport useTranslation from '../../hooks/useTranslation'\n\ntype ExpiryValue = MultiInputMaskValue<'month' | 'year'>\n\nexport type ExpiryProps = FieldHelpProps &\n FieldProps<string, undefined | ''>\n\nfunction Expiry(props: ExpiryProps) {\n const {\n Date: { errorRequired },\n Expiry: { label: expiryLabel },\n } = useTranslation()\n\n const {\n DatePicker: {\n placeholder_characters: placeholders,\n month: monthLabel,\n year: yearLabel,\n },\n } = useSharedTranslation()\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: errorRequired,\n })\n\n const validateRequired = useCallback(\n (value: string, { required, error }) => {\n return required && !value ? error : undefined\n },\n []\n )\n\n const preparedProps: ExpiryProps = {\n ...props,\n errorMessages,\n fromInput: toExpiryString,\n validateRequired,\n }\n\n const {\n id,\n className,\n label = expiryLabel,\n error,\n hasError,\n info,\n warning,\n help,\n disabled,\n value = '',\n labelDescription,\n layout = 'vertical',\n htmlAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const expiry: ExpiryValue = {\n month: ensureValidMonth(value?.substring(0, 2)),\n year: value?.substring(2, 4) ?? '',\n }\n\n const status = hasError\n ? 'error'\n : warning\n ? 'warn'\n : info\n ? 'info'\n : null\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-expiry', className)}\n id={id}\n forId={`${id}-input-month`}\n label={label}\n layout={layout}\n labelDescription={labelDescription}\n info={info}\n warning={warning}\n error={error}\n {...pickSpacingProps(props)}\n >\n <MultiInputMask\n stretch\n id={`${id}-input`}\n values={expiry}\n status={status}\n statusState={disabled ? 'disabled' : undefined}\n disabled={disabled}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n delimiter=\"/\"\n inputMode=\"numeric\"\n inputs={[\n {\n id: 'month',\n label: monthLabel,\n mask: getMonthMask(expiry?.month),\n placeholderCharacter: placeholders['month'],\n autoComplete: 'cc-exp-month',\n ...htmlAttributes,\n },\n {\n id: 'year',\n label: yearLabel,\n mask: [/[0-9]/, /[0-9]/],\n placeholderCharacter: placeholders['year'],\n autoComplete: 'cc-exp-year',\n ...htmlAttributes,\n },\n ]}\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined\n }\n />\n </FieldBlock>\n )\n\n function toExpiryString(values: ExpiryValue) {\n return Object.values(values).join('')\n }\n\n function ensureValidMonth(month: string) {\n // Return empty value if no month is given\n if (!month) {\n return ''\n }\n\n const [firstMask, secondMask] = getMonthMask(month)\n\n const firstDigit = month?.charAt(0)\n const isFirstDigitValid = firstMask.test(firstDigit)\n\n if (firstDigit && !isFirstDigitValid) {\n // Return empty value if the first digit is invalid\n return ''\n }\n\n const secondDigit = month?.charAt(1)\n const isSecondDigitValid = secondMask.test(secondDigit)\n\n if (secondDigit && !isSecondDigitValid) {\n // Return empty value if the second digit is invalid\n return ''\n }\n\n // Return given month of month value is valid\n return month\n }\n\n function getMonthMask(month: string) {\n const firstDigit = month?.charAt(0)\n\n return [\n /[0-1]/,\n firstDigit === '0' || firstDigit === '' ? /[1-9]/ : /[0-2]/,\n ]\n }\n}\n\nExpiry._supportsEufemiaSpacingProps = true\nexport default Expiry\n"],"mappings":"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"}
@@ -1,3 +1,10 @@
1
1
  import { PropertiesTableProps } from '../../../shared/types';
2
2
  export declare const fieldProperties: PropertiesTableProps;
3
3
  export declare const fieldEvents: PropertiesTableProps;
4
+ export declare const getFieldEventsWithTypes: (valueType?: {
5
+ type: string;
6
+ optional?: boolean;
7
+ }, additionalArgsType?: {
8
+ type: string;
9
+ optional?: boolean;
10
+ }) => PropertiesTableProps;
@@ -5,4 +5,22 @@ import { fieldBlockSharedProperties } from '../FieldBlock/FieldBlockDocs';
5
5
  import { dataValueEvents, dataValueProperties } from '../hooks/DataValueDocs';
6
6
  export const fieldProperties = _objectSpread(_objectSpread({}, dataValueProperties), fieldBlockSharedProperties);
7
7
  export const fieldEvents = _objectSpread({}, dataValueEvents);
8
+ export const getFieldEventsWithTypes = function () {
9
+ let valueType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
10
+ let additionalArgsType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
11
+ const value = valueType ? `value${valueType.optional ? '?' : ''}: ${valueType.type}` : 'value';
12
+ const add = additionalArgsType ? `, additionalArgs${additionalArgsType.optional ? '?' : ''}: ${additionalArgsType.type}` : '';
13
+ const typeString = `(${value}${add}) => void`;
14
+ return _objectSpread(_objectSpread({}, fieldEvents), {}, {
15
+ onChange: _objectSpread(_objectSpread({}, fieldEvents.onChange), {}, {
16
+ type: typeString
17
+ }),
18
+ onFocus: _objectSpread(_objectSpread({}, fieldEvents.onFocus), {}, {
19
+ type: typeString
20
+ }),
21
+ onBlur: _objectSpread(_objectSpread({}, fieldEvents.onBlur), {}, {
22
+ type: typeString
23
+ })
24
+ });
25
+ };
8
26
  //# sourceMappingURL=FieldDocs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldDocs.js","names":["fieldBlockSharedProperties","dataValueEvents","dataValueProperties","fieldProperties","_objectSpread","fieldEvents"],"sources":["../../../../../src/extensions/forms/Field/FieldDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../shared/types'\nimport { fieldBlockSharedProperties } from '../FieldBlock/FieldBlockDocs'\nimport {\n dataValueEvents,\n dataValueProperties,\n} from '../hooks/DataValueDocs'\n\nexport const fieldProperties: PropertiesTableProps = {\n ...dataValueProperties,\n ...fieldBlockSharedProperties,\n}\n\nexport const fieldEvents: PropertiesTableProps = {\n ...dataValueEvents,\n}\n"],"mappings":";;;AACA,SAASA,0BAA0B,QAAQ,8BAA8B;AACzE,SACEC,eAAe,EACfC,mBAAmB,QACd,wBAAwB;AAE/B,OAAO,MAAMC,eAAqC,GAAAC,aAAA,CAAAA,aAAA,KAC7CF,mBAAmB,GACnBF,0BAA0B,CAC9B;AAED,OAAO,MAAMK,WAAiC,GAAAD,aAAA,KACzCH,eAAe,CACnB"}
1
+ {"version":3,"file":"FieldDocs.js","names":["fieldBlockSharedProperties","dataValueEvents","dataValueProperties","fieldProperties","_objectSpread","fieldEvents","getFieldEventsWithTypes","valueType","arguments","length","undefined","additionalArgsType","value","optional","type","add","typeString","onChange","onFocus","onBlur"],"sources":["../../../../../src/extensions/forms/Field/FieldDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../shared/types'\nimport { fieldBlockSharedProperties } from '../FieldBlock/FieldBlockDocs'\nimport {\n dataValueEvents,\n dataValueProperties,\n} from '../hooks/DataValueDocs'\n\nexport const fieldProperties: PropertiesTableProps = {\n ...dataValueProperties,\n ...fieldBlockSharedProperties,\n}\n\nexport const fieldEvents: PropertiesTableProps = {\n ...dataValueEvents,\n}\n\nexport const getFieldEventsWithTypes = (\n valueType: { type: string; optional?: boolean } = undefined,\n additionalArgsType: { type: string; optional?: boolean } = undefined\n): PropertiesTableProps => {\n const value = valueType\n ? `value${valueType.optional ? '?' : ''}: ${valueType.type}`\n : 'value'\n\n const add = additionalArgsType\n ? `, additionalArgs${additionalArgsType.optional ? '?' : ''}: ${\n additionalArgsType.type\n }`\n : ''\n\n const typeString = `(${value}${add}) => void`\n\n return {\n ...fieldEvents,\n onChange: {\n ...fieldEvents.onChange,\n type: typeString,\n },\n onFocus: {\n ...fieldEvents.onFocus,\n type: typeString,\n },\n onBlur: {\n ...fieldEvents.onBlur,\n type: typeString,\n },\n }\n}\n"],"mappings":";;;AACA,SAASA,0BAA0B,QAAQ,8BAA8B;AACzE,SACEC,eAAe,EACfC,mBAAmB,QACd,wBAAwB;AAE/B,OAAO,MAAMC,eAAqC,GAAAC,aAAA,CAAAA,aAAA,KAC7CF,mBAAmB,GACnBF,0BAA0B,CAC9B;AAED,OAAO,MAAMK,WAAiC,GAAAD,aAAA,KACzCH,eAAe,CACnB;AAED,OAAO,MAAMK,uBAAuB,GAAG,SAAAA,CAAA,EAGZ;EAAA,IAFzBC,SAA+C,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGE,SAAS;EAAA,IAC3DC,kBAAwD,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGE,SAAS;EAEpE,MAAME,KAAK,GAAGL,SAAS,GAClB,QAAOA,SAAS,CAACM,QAAQ,GAAG,GAAG,GAAG,EAAG,KAAIN,SAAS,CAACO,IAAK,EAAC,GAC1D,OAAO;EAEX,MAAMC,GAAG,GAAGJ,kBAAkB,GACzB,mBAAkBA,kBAAkB,CAACE,QAAQ,GAAG,GAAG,GAAG,EAAG,KACxDF,kBAAkB,CAACG,IACpB,EAAC,GACF,EAAE;EAEN,MAAME,UAAU,GAAI,IAAGJ,KAAM,GAAEG,GAAI,WAAU;EAE7C,OAAAX,aAAA,CAAAA,aAAA,KACKC,WAAW;IACdY,QAAQ,EAAAb,aAAA,CAAAA,aAAA,KACHC,WAAW,CAACY,QAAQ;MACvBH,IAAI,EAAEE;IAAU,EACjB;IACDE,OAAO,EAAAd,aAAA,CAAAA,aAAA,KACFC,WAAW,CAACa,OAAO;MACtBJ,IAAI,EAAEE;IAAU,EACjB;IACDG,MAAM,EAAAf,aAAA,CAAAA,aAAA,KACDC,WAAW,CAACc,MAAM;MACrBL,IAAI,EAAEE;IAAU;EACjB;AAEL,CAAC"}
@@ -16,6 +16,8 @@ import { clamp } from '../../../../components/slider/SliderHelpers';
16
16
  import useErrorMessage from '../../hooks/useErrorMessage';
17
17
  import useTranslation from '../../hooks/useTranslation';
18
18
  import DataContext from '../../DataContext/Context';
19
+ const defaultMinimum = Number.MIN_SAFE_INTEGER;
20
+ const defaultMaximum = Number.MAX_SAFE_INTEGER;
19
21
  function NumberComponent(props) {
20
22
  var _props$width, _dataContext$props2, _sharedContext$transl, _sharedContext$transl2;
21
23
  const dataContext = useContext(DataContext);
@@ -44,11 +46,11 @@ function NumberComponent(props) {
44
46
  multipleOf: translations.NumberField.errorMultipleOf
45
47
  });
46
48
  const schema = useMemo(() => {
47
- var _props$schema;
49
+ var _props$schema, _props$minimum, _props$maximum;
48
50
  return (_props$schema = props.schema) !== null && _props$schema !== void 0 ? _props$schema : {
49
51
  type: 'number',
50
- minimum: props.minimum,
51
- maximum: props.maximum,
52
+ minimum: (_props$minimum = props.minimum) !== null && _props$minimum !== void 0 ? _props$minimum : defaultMinimum,
53
+ maximum: (_props$maximum = props.maximum) !== null && _props$maximum !== void 0 ? _props$maximum : defaultMaximum,
52
54
  exclusiveMinimum: props.exclusiveMinimum,
53
55
  exclusiveMaximum: props.exclusiveMaximum,
54
56
  multipleOf: props.multipleOf
@@ -70,12 +72,6 @@ function NumberComponent(props) {
70
72
  }
71
73
  return numberValue;
72
74
  }, [props.emptyValue]);
73
- const transformValue = useCallback((value, currentValue) => {
74
- if (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER) {
75
- return currentValue;
76
- }
77
- return value;
78
- }, []);
79
75
  const maskProps = useMemo(() => {
80
76
  const mask_options = {
81
77
  prefix,
@@ -112,7 +108,6 @@ function NumberComponent(props) {
112
108
  schema,
113
109
  toInput,
114
110
  fromInput,
115
- transformValue,
116
111
  width: (_props$width = props.width) !== null && _props$width !== void 0 ? _props$width : fieldBlockContext !== null && fieldBlockContext !== void 0 && fieldBlockContext.composition ? 'stretch' : 'medium'
117
112
  });
118
113
  const {
@@ -127,8 +122,8 @@ function NumberComponent(props) {
127
122
  labelDescription,
128
123
  value,
129
124
  startWith = null,
130
- minimum = Number.MIN_SAFE_INTEGER,
131
- maximum = Number.MAX_SAFE_INTEGER,
125
+ minimum = defaultMinimum,
126
+ maximum = defaultMaximum,
132
127
  disabled,
133
128
  htmlAttributes,
134
129
  info,
@@ -1 +1 @@
1
- {"version":3,"file":"Number.js","names":["React","useContext","useMemo","useCallback","InputMasked","HelpButton","Button","SharedContext","FieldBlockContext","classnames","FieldBlock","useFieldProps","pickSpacingProps","clamp","useErrorMessage","useTranslation","DataContext","NumberComponent","props","_props$width","_dataContext$props2","_sharedContext$transl","_sharedContext$transl2","dataContext","fieldBlockContext","sharedContext","translations","currency","currencyDisplay","percent","mask","step","decimalLimit","allowNegative","disallowLeadingZeroes","prefix","suffix","showStepControls","errorMessages","path","required","Field","errorRequired","minimum","NumberField","errorMinimum","maximum","errorMaximum","exclusiveMinimum","errorExclusiveMinimum","exclusiveMaximum","errorExclusiveMaximum","multipleOf","errorMultipleOf","schema","_props$schema","type","toInput","external","undefined","fromInput","_ref","value","numberValue","emptyValue","transformValue","currentValue","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","maskProps","mask_options","as_currency","currency_mask","as_percent","as_number","number_mask","_objectSpread","preparedProps","valueType","width","composition","id","name","className","inputClassName","autoComplete","layout","placeholder","label","labelDescription","startWith","disabled","htmlAttributes","info","warning","error","hasError","help","size","align","handleFocus","handleBlur","handleChange","handleSubmit","onKeyDownHandler","_ref2","_dataContext$props","event","isolate","key","_event$preventDefault","preventDefault","call","persist","fieldBlockProps","contentClassName","forId","contentWidth","increaseClickHandler","increaseProps","variant","icon","tabIndex","onClick","title","translation","Slider","addTitle","replace","String","decreaseClickHandler","decreaseProps","subtractTitle","ariaParams","role","inputProps","onKeyDown","onFocus","onBlur","onChange","status","stretch","Boolean","createElement","content","_extends","asFieldset","left","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Number/Number.tsx"],"sourcesContent":["import React, { useContext, useMemo, useCallback } from 'react'\nimport { InputMasked, HelpButton, Button } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport type { InputAlign, InputSize } from '../../../../components/Input'\nimport SharedContext from '../../../../shared/Context'\nimport FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport {\n FieldProps,\n FieldHelpProps,\n AllJSONSchemaVersions,\n CustomErrorMessages,\n FieldBlockWidth,\n} from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { ButtonProps, ButtonSize } from '../../../../components/Button'\nimport { clamp } from '../../../../components/slider/SliderHelpers'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\nimport DataContext from '../../DataContext/Context'\n\ninterface ErrorMessages extends CustomErrorMessages {\n required?: string\n schema?: string\n minimum?: string\n maximum?: string\n exclusiveMinimum?: string\n exclusiveMaximum?: string\n multipleOf?: string\n}\n\nexport type Props = FieldHelpProps &\n FieldProps<number, undefined | number, ErrorMessages> & {\n inputClassName?: string\n currency?: InputMaskedProps['as_currency']\n currencyDisplay?: 'code' | 'symbol' | 'narrowSymbol' | 'name'\n percent?: InputMaskedProps['as_percent']\n mask?: InputMaskedProps['mask']\n step?: number\n startWith?: number\n // Formatting\n decimalLimit?: number\n allowNegative?: boolean\n disallowLeadingZeroes?: boolean\n prefix?: string\n suffix?: string\n // Validation\n minimum?: number // aka greater than or equal to\n maximum?: number // aka less than or equal to\n exclusiveMinimum?: number // aka greater than\n exclusiveMaximum?: number // aka less than\n multipleOf?: number\n // Styling\n size?: InputSize\n width?: FieldBlockWidth\n align?: InputAlign\n showStepControls?: boolean\n }\n\nfunction NumberComponent(props: Props) {\n const dataContext = useContext(DataContext)\n const fieldBlockContext = useContext(FieldBlockContext)\n const sharedContext = useContext(SharedContext)\n const translations = useTranslation()\n\n const {\n currency,\n currencyDisplay,\n percent,\n mask,\n step = 1,\n decimalLimit = 12,\n allowNegative = true,\n disallowLeadingZeroes = false,\n prefix,\n suffix,\n showStepControls,\n } = props\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.Field.errorRequired,\n minimum: translations.NumberField.errorMinimum,\n maximum: translations.NumberField.errorMaximum,\n exclusiveMinimum: translations.NumberField.errorExclusiveMinimum,\n exclusiveMaximum: translations.NumberField.errorExclusiveMaximum,\n multipleOf: translations.NumberField.errorMultipleOf,\n })\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'number',\n minimum: props.minimum,\n maximum: props.maximum,\n exclusiveMinimum: props.exclusiveMinimum,\n exclusiveMaximum: props.exclusiveMaximum,\n multipleOf: props.multipleOf,\n },\n [\n props.schema,\n props.minimum,\n props.maximum,\n props.exclusiveMinimum,\n props.exclusiveMaximum,\n props.multipleOf,\n ]\n )\n\n const toInput = useCallback((external: number | undefined) => {\n if (external === undefined) {\n return null\n }\n return external\n }, [])\n const fromInput = useCallback(\n ({ value, numberValue }: { value: string; numberValue: number }) => {\n if (value === '') {\n return props.emptyValue\n }\n return numberValue\n },\n [props.emptyValue]\n )\n const transformValue = useCallback(\n (value: number, currentValue: number) => {\n if (\n value > Number.MAX_SAFE_INTEGER ||\n value < Number.MIN_SAFE_INTEGER\n ) {\n return currentValue\n }\n\n return value\n },\n []\n )\n\n const maskProps: Partial<InputMaskedProps> = useMemo(() => {\n const mask_options = {\n prefix,\n suffix,\n decimalLimit,\n allowNegative,\n disallowLeadingZeroes,\n }\n\n if (currency) {\n return {\n as_currency: currency,\n mask_options,\n currency_mask: {\n currencyDisplay,\n },\n }\n }\n\n if (percent) {\n return {\n as_percent: percent,\n mask_options,\n }\n }\n\n // Custom mask based on props\n return {\n as_number: true,\n mask,\n number_mask: {\n ...mask_options,\n },\n }\n }, [\n currency,\n currencyDisplay,\n decimalLimit,\n mask,\n percent,\n prefix,\n suffix,\n allowNegative,\n disallowLeadingZeroes,\n ])\n\n const preparedProps: Props = {\n valueType: 'number',\n ...props,\n errorMessages,\n schema,\n toInput,\n fromInput,\n transformValue,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'medium'),\n }\n\n const {\n id,\n name,\n className,\n inputClassName,\n autoComplete,\n layout,\n placeholder,\n label,\n labelDescription,\n value,\n startWith = null,\n minimum = Number.MIN_SAFE_INTEGER,\n maximum = Number.MAX_SAFE_INTEGER,\n disabled,\n htmlAttributes,\n info,\n warning,\n error,\n hasError,\n help,\n size,\n width,\n align,\n handleFocus,\n handleBlur,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const { handleSubmit } = dataContext ?? {}\n const onKeyDownHandler = useCallback(\n ({ event }: { event: React.KeyboardEvent<HTMLInputElement> }) => {\n if (dataContext?.props?.isolate && event.key === 'Enter') {\n handleSubmit() // So we commit the data to the outer context\n event.preventDefault?.() // And prevent the default form submit\n }\n\n if (!showStepControls) {\n return\n }\n\n let numberValue = null\n\n switch (event.key) {\n case 'ArrowUp':\n numberValue = clamp(\n (value ?? startWith) + step,\n minimum,\n maximum\n )\n break\n case 'ArrowDown':\n numberValue = clamp(\n (value ?? startWith) - step,\n minimum,\n maximum\n )\n break\n }\n\n if (numberValue !== null) {\n event.persist()\n event.preventDefault()\n handleChange({ numberValue })\n }\n },\n [\n dataContext?.props?.isolate,\n handleChange,\n handleSubmit,\n maximum,\n minimum,\n showStepControls,\n startWith,\n step,\n value,\n ]\n )\n\n const fieldBlockProps = {\n className: classnames(\n 'dnb-forms-field-number',\n 'dnb-input__border--tokens', // Used by \"dnb-input__border\"\n className\n ),\n contentClassName: classnames(\n 'dnb-forms-field-number__contents',\n showStepControls && 'dnb-forms-field-number__contents--has-controls',\n hasError && 'dnb-input__status--error', // Also used by \"dnb-input__border\"\n disabled && 'dnb-input--disabled' // Also used by \"dnb-input__border\"\n ),\n forId: id,\n layout,\n label,\n labelDescription,\n info,\n warning,\n error,\n disabled,\n width:\n (width === 'stretch' || fieldBlockContext?.composition) &&\n !showStepControls\n ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\n\n const increaseClickHandler = useCallback(() => {\n handleChange({\n numberValue: clamp((value ?? startWith) + step, minimum, maximum),\n })\n }, [handleChange, maximum, minimum, startWith, step, value])\n\n const increaseProps: ButtonProps = showStepControls && {\n 'aria-hidden': true,\n className: 'dnb-button--control-after',\n variant: 'secondary',\n icon: 'add',\n size: (size || 'small') as ButtonSize,\n tabIndex: -1,\n disabled: disabled || value >= maximum,\n onClick: increaseClickHandler,\n title: sharedContext?.translation.Slider.addTitle?.replace(\n '%s',\n String(value + step)\n ),\n }\n\n const decreaseClickHandler = useCallback(() => {\n handleChange({\n numberValue: clamp((value ?? startWith) - step, minimum, maximum),\n })\n }, [handleChange, maximum, minimum, startWith, step, value])\n\n const decreaseProps: ButtonProps = showStepControls && {\n ...increaseProps,\n className: 'dnb-button--control-before',\n icon: 'subtract',\n size: (size || 'small') as ButtonSize,\n disabled: disabled || value <= minimum,\n onClick: decreaseClickHandler,\n title: sharedContext?.translation.Slider.subtractTitle?.replace(\n '%s',\n String(value - step)\n ),\n }\n\n const ariaParams = showStepControls && {\n role: 'spinbutton',\n 'aria-valuemin': String(minimum),\n 'aria-valuemax': String(maximum),\n 'aria-valuenow': String(value), // without it, VO will read an invalid value\n 'aria-valuetext': String(value), // without it, VO will read %\n }\n\n const inputProps = {\n id,\n name,\n autoComplete,\n className: classnames(\n 'dnb-forms-field-number__input',\n `dnb-input--${size}`,\n inputClassName\n ),\n step: showStepControls ? step : undefined,\n placeholder,\n value,\n align: showStepControls ? 'center' : align,\n ...maskProps,\n onKeyDown: onKeyDownHandler,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onChange: handleChange,\n disabled,\n ...htmlAttributes,\n status: hasError ? 'error' : undefined,\n stretch: Boolean(\n width !== undefined || fieldBlockContext?.composition\n ),\n suffix:\n help && !showStepControls ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n ...ariaParams,\n }\n\n if (showStepControls) {\n return (\n <FieldBlock {...fieldBlockProps} asFieldset={false}>\n <span className=\"dnb-input__border dnb-input__border--root\">\n {<Button {...decreaseProps} />}\n <InputMasked {...inputProps} />\n {<Button {...increaseProps} />}\n </span>\n {help && (\n <HelpButton left=\"x-small\" title={help.title}>\n {help.content}\n </HelpButton>\n )}\n </FieldBlock>\n )\n }\n\n return (\n <FieldBlock {...fieldBlockProps} asFieldset={false}>\n <InputMasked {...inputProps} />\n </FieldBlock>\n )\n}\n\nNumberComponent._supportsSpacingProps = true\nexport default NumberComponent\n"],"mappings":"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"}
1
+ {"version":3,"file":"Number.js","names":["React","useContext","useMemo","useCallback","InputMasked","HelpButton","Button","SharedContext","FieldBlockContext","classnames","FieldBlock","useFieldProps","pickSpacingProps","clamp","useErrorMessage","useTranslation","DataContext","defaultMinimum","Number","MIN_SAFE_INTEGER","defaultMaximum","MAX_SAFE_INTEGER","NumberComponent","props","_props$width","_dataContext$props2","_sharedContext$transl","_sharedContext$transl2","dataContext","fieldBlockContext","sharedContext","translations","currency","currencyDisplay","percent","mask","step","decimalLimit","allowNegative","disallowLeadingZeroes","prefix","suffix","showStepControls","errorMessages","path","required","Field","errorRequired","minimum","NumberField","errorMinimum","maximum","errorMaximum","exclusiveMinimum","errorExclusiveMinimum","exclusiveMaximum","errorExclusiveMaximum","multipleOf","errorMultipleOf","schema","_props$schema","_props$minimum","_props$maximum","type","toInput","external","undefined","fromInput","_ref","value","numberValue","emptyValue","maskProps","mask_options","as_currency","currency_mask","as_percent","as_number","number_mask","_objectSpread","preparedProps","valueType","width","composition","id","name","className","inputClassName","autoComplete","layout","placeholder","label","labelDescription","startWith","disabled","htmlAttributes","info","warning","error","hasError","help","size","align","handleFocus","handleBlur","handleChange","handleSubmit","onKeyDownHandler","_ref2","_dataContext$props","event","isolate","key","_event$preventDefault","preventDefault","call","persist","fieldBlockProps","contentClassName","forId","contentWidth","increaseClickHandler","increaseProps","variant","icon","tabIndex","onClick","title","translation","Slider","addTitle","replace","String","decreaseClickHandler","decreaseProps","subtractTitle","ariaParams","role","inputProps","onKeyDown","onFocus","onBlur","onChange","status","stretch","Boolean","createElement","content","_extends","asFieldset","left","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Number/Number.tsx"],"sourcesContent":["import React, { useContext, useMemo, useCallback } from 'react'\nimport { InputMasked, HelpButton, Button } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport type { InputAlign, InputSize } from '../../../../components/Input'\nimport SharedContext from '../../../../shared/Context'\nimport FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport {\n FieldProps,\n FieldHelpProps,\n AllJSONSchemaVersions,\n CustomErrorMessages,\n FieldBlockWidth,\n} from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { ButtonProps, ButtonSize } from '../../../../components/Button'\nimport { clamp } from '../../../../components/slider/SliderHelpers'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\nimport DataContext from '../../DataContext/Context'\n\ninterface ErrorMessages extends CustomErrorMessages {\n required?: string\n schema?: string\n minimum?: string\n maximum?: string\n exclusiveMinimum?: string\n exclusiveMaximum?: string\n multipleOf?: string\n}\n\nexport type Props = FieldHelpProps &\n FieldProps<number, undefined | number, ErrorMessages> & {\n inputClassName?: string\n currency?: InputMaskedProps['as_currency']\n currencyDisplay?: 'code' | 'symbol' | 'narrowSymbol' | 'name'\n percent?: InputMaskedProps['as_percent']\n mask?: InputMaskedProps['mask']\n step?: number\n startWith?: number\n // Formatting\n decimalLimit?: number\n allowNegative?: boolean\n disallowLeadingZeroes?: boolean\n prefix?: string\n suffix?: string\n // Validation\n minimum?: number // aka greater than or equal to\n maximum?: number // aka less than or equal to\n exclusiveMinimum?: number // aka greater than\n exclusiveMaximum?: number // aka less than\n multipleOf?: number\n // Styling\n size?: InputSize\n width?: FieldBlockWidth\n align?: InputAlign\n showStepControls?: boolean\n }\n\nconst defaultMinimum = Number.MIN_SAFE_INTEGER\nconst defaultMaximum = Number.MAX_SAFE_INTEGER\n\nfunction NumberComponent(props: Props) {\n const dataContext = useContext(DataContext)\n const fieldBlockContext = useContext(FieldBlockContext)\n const sharedContext = useContext(SharedContext)\n const translations = useTranslation()\n\n const {\n currency,\n currencyDisplay,\n percent,\n mask,\n step = 1,\n decimalLimit = 12,\n allowNegative = true,\n disallowLeadingZeroes = false,\n prefix,\n suffix,\n showStepControls,\n } = props\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.Field.errorRequired,\n minimum: translations.NumberField.errorMinimum,\n maximum: translations.NumberField.errorMaximum,\n exclusiveMinimum: translations.NumberField.errorExclusiveMinimum,\n exclusiveMaximum: translations.NumberField.errorExclusiveMaximum,\n multipleOf: translations.NumberField.errorMultipleOf,\n })\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'number',\n minimum: props.minimum ?? defaultMinimum,\n maximum: props.maximum ?? defaultMaximum,\n exclusiveMinimum: props.exclusiveMinimum,\n exclusiveMaximum: props.exclusiveMaximum,\n multipleOf: props.multipleOf,\n },\n [\n props.schema,\n props.minimum,\n props.maximum,\n props.exclusiveMinimum,\n props.exclusiveMaximum,\n props.multipleOf,\n ]\n )\n\n const toInput = useCallback((external: number | undefined) => {\n if (external === undefined) {\n return null\n }\n return external\n }, [])\n const fromInput = useCallback(\n ({ value, numberValue }: { value: string; numberValue: number }) => {\n if (value === '') {\n return props.emptyValue\n }\n return numberValue\n },\n [props.emptyValue]\n )\n\n const maskProps: Partial<InputMaskedProps> = useMemo(() => {\n const mask_options = {\n prefix,\n suffix,\n decimalLimit,\n allowNegative,\n disallowLeadingZeroes,\n }\n\n if (currency) {\n return {\n as_currency: currency,\n mask_options,\n currency_mask: {\n currencyDisplay,\n },\n }\n }\n\n if (percent) {\n return {\n as_percent: percent,\n mask_options,\n }\n }\n\n // Custom mask based on props\n return {\n as_number: true,\n mask,\n number_mask: {\n ...mask_options,\n },\n }\n }, [\n currency,\n currencyDisplay,\n decimalLimit,\n mask,\n percent,\n prefix,\n suffix,\n allowNegative,\n disallowLeadingZeroes,\n ])\n\n const preparedProps: Props = {\n valueType: 'number',\n ...props,\n errorMessages,\n schema,\n toInput,\n fromInput,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'medium'),\n }\n\n const {\n id,\n name,\n className,\n inputClassName,\n autoComplete,\n layout,\n placeholder,\n label,\n labelDescription,\n value,\n startWith = null,\n minimum = defaultMinimum,\n maximum = defaultMaximum,\n disabled,\n htmlAttributes,\n info,\n warning,\n error,\n hasError,\n help,\n size,\n width,\n align,\n handleFocus,\n handleBlur,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const { handleSubmit } = dataContext ?? {}\n const onKeyDownHandler = useCallback(\n ({ event }: { event: React.KeyboardEvent<HTMLInputElement> }) => {\n if (dataContext?.props?.isolate && event.key === 'Enter') {\n handleSubmit() // So we commit the data to the outer context\n event.preventDefault?.() // And prevent the default form submit\n }\n\n if (!showStepControls) {\n return\n }\n\n let numberValue = null\n\n switch (event.key) {\n case 'ArrowUp':\n numberValue = clamp(\n (value ?? startWith) + step,\n minimum,\n maximum\n )\n break\n case 'ArrowDown':\n numberValue = clamp(\n (value ?? startWith) - step,\n minimum,\n maximum\n )\n break\n }\n\n if (numberValue !== null) {\n event.persist()\n event.preventDefault()\n handleChange({ numberValue })\n }\n },\n [\n dataContext?.props?.isolate,\n handleChange,\n handleSubmit,\n maximum,\n minimum,\n showStepControls,\n startWith,\n step,\n value,\n ]\n )\n\n const fieldBlockProps = {\n className: classnames(\n 'dnb-forms-field-number',\n 'dnb-input__border--tokens', // Used by \"dnb-input__border\"\n className\n ),\n contentClassName: classnames(\n 'dnb-forms-field-number__contents',\n showStepControls && 'dnb-forms-field-number__contents--has-controls',\n hasError && 'dnb-input__status--error', // Also used by \"dnb-input__border\"\n disabled && 'dnb-input--disabled' // Also used by \"dnb-input__border\"\n ),\n forId: id,\n layout,\n label,\n labelDescription,\n info,\n warning,\n error,\n disabled,\n width:\n (width === 'stretch' || fieldBlockContext?.composition) &&\n !showStepControls\n ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\n\n const increaseClickHandler = useCallback(() => {\n handleChange({\n numberValue: clamp((value ?? startWith) + step, minimum, maximum),\n })\n }, [handleChange, maximum, minimum, startWith, step, value])\n\n const increaseProps: ButtonProps = showStepControls && {\n 'aria-hidden': true,\n className: 'dnb-button--control-after',\n variant: 'secondary',\n icon: 'add',\n size: (size || 'small') as ButtonSize,\n tabIndex: -1,\n disabled: disabled || value >= maximum,\n onClick: increaseClickHandler,\n title: sharedContext?.translation.Slider.addTitle?.replace(\n '%s',\n String(value + step)\n ),\n }\n\n const decreaseClickHandler = useCallback(() => {\n handleChange({\n numberValue: clamp((value ?? startWith) - step, minimum, maximum),\n })\n }, [handleChange, maximum, minimum, startWith, step, value])\n\n const decreaseProps: ButtonProps = showStepControls && {\n ...increaseProps,\n className: 'dnb-button--control-before',\n icon: 'subtract',\n size: (size || 'small') as ButtonSize,\n disabled: disabled || value <= minimum,\n onClick: decreaseClickHandler,\n title: sharedContext?.translation.Slider.subtractTitle?.replace(\n '%s',\n String(value - step)\n ),\n }\n\n const ariaParams = showStepControls && {\n role: 'spinbutton',\n 'aria-valuemin': String(minimum),\n 'aria-valuemax': String(maximum),\n 'aria-valuenow': String(value), // without it, VO will read an invalid value\n 'aria-valuetext': String(value), // without it, VO will read %\n }\n\n const inputProps = {\n id,\n name,\n autoComplete,\n className: classnames(\n 'dnb-forms-field-number__input',\n `dnb-input--${size}`,\n inputClassName\n ),\n step: showStepControls ? step : undefined,\n placeholder,\n value,\n align: showStepControls ? 'center' : align,\n ...maskProps,\n onKeyDown: onKeyDownHandler,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onChange: handleChange,\n disabled,\n ...htmlAttributes,\n status: hasError ? 'error' : undefined,\n stretch: Boolean(\n width !== undefined || fieldBlockContext?.composition\n ),\n suffix:\n help && !showStepControls ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n ...ariaParams,\n }\n\n if (showStepControls) {\n return (\n <FieldBlock {...fieldBlockProps} asFieldset={false}>\n <span className=\"dnb-input__border dnb-input__border--root\">\n {<Button {...decreaseProps} />}\n <InputMasked {...inputProps} />\n {<Button {...increaseProps} />}\n </span>\n {help && (\n <HelpButton left=\"x-small\" title={help.title}>\n {help.content}\n </HelpButton>\n )}\n </FieldBlock>\n )\n }\n\n return (\n <FieldBlock {...fieldBlockProps} asFieldset={false}>\n <InputMasked {...inputProps} />\n </FieldBlock>\n )\n}\n\nNumberComponent._supportsSpacingProps = true\nexport default NumberComponent\n"],"mappings":"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"}
@@ -1,10 +1,8 @@
1
1
  import React from 'react';
2
2
  import type { FieldHelpProps, FieldProps } from '../../types';
3
- import { DrawerListProps } from '../../../../fragments/DrawerList';
4
3
  export type Props = FieldHelpProps & FieldProps<number | string> & {
5
- title?: string;
6
- text?: string;
4
+ title?: React.ReactNode;
5
+ text?: React.ReactNode;
7
6
  children?: React.ReactNode;
8
7
  };
9
8
  export default function Option({ className, title, text, children, }: Props): import("react/jsx-runtime").JSX.Element;
10
- export declare function makeOptions<T = DrawerListProps['data']>(children: React.ReactNode): T;
@@ -1,4 +1,3 @@
1
- var _em;
2
1
  import React from 'react';
3
2
  import classnames from 'classnames';
4
3
  export default function Option(_ref) {
@@ -13,23 +12,4 @@ export default function Option(_ref) {
13
12
  role: "option"
14
13
  }, children !== null && children !== void 0 ? children : title, text);
15
14
  }
16
- export function makeOptions(children) {
17
- return React.Children.map(children, child => {
18
- if (React.isValidElement(child) && child.type === Option) {
19
- var _child$props$value, _ref2, _child$props$children, _child$props$children2;
20
- return child.props.text ? {
21
- selectedKey: String((_child$props$value = child.props.value) !== null && _child$props$value !== void 0 ? _child$props$value : ''),
22
- content: [(_ref2 = (_child$props$children = child.props.children) !== null && _child$props$children !== void 0 ? _child$props$children : child.props.title) !== null && _ref2 !== void 0 ? _ref2 : _em || (_em = React.createElement("em", null, "Untitled")), child.props.text]
23
- } : {
24
- selectedKey: child.props.value,
25
- content: (_child$props$children2 = child.props.children) !== null && _child$props$children2 !== void 0 ? _child$props$children2 : child.props.title
26
- };
27
- }
28
- if (child) {
29
- return {
30
- content: child
31
- };
32
- }
33
- }).filter(Boolean);
34
- }
35
15
  //# sourceMappingURL=Option.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Option.js","names":["React","classnames","Option","_ref","className","title","text","children","createElement","role","makeOptions","Children","map","child","isValidElement","type","_child$props$value","_ref2","_child$props$children","_child$props$children2","props","selectedKey","String","value","content","_em","filter","Boolean"],"sources":["../../../../../../src/extensions/forms/Field/Option/Option.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport type { FieldHelpProps, FieldProps } from '../../types'\nimport { DrawerListProps } from '../../../../fragments/DrawerList'\n\nexport type Props = FieldHelpProps &\n FieldProps<number | string> & {\n title?: string\n text?: string\n children?: React.ReactNode\n }\n\nexport default function Option({\n className,\n title,\n text,\n children,\n}: Props) {\n return (\n <span\n className={classnames('dnb-forms-field-option', className)}\n // eslint-disable-next-line jsx-a11y/role-has-required-aria-props\n role=\"option\"\n >\n {children ?? title}\n {text}\n </span>\n )\n}\n\nexport function makeOptions<T = DrawerListProps['data']>(\n children: React.ReactNode\n): T {\n return React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child.type === Option) {\n // Option components\n return child.props.text\n ? {\n selectedKey: String(child.props.value ?? ''),\n content: [\n child.props.children ?? child.props.title ?? (\n <em>Untitled</em>\n ),\n child.props.text,\n ],\n }\n : {\n selectedKey: child.props.value,\n content: child.props.children ?? child.props.title,\n }\n }\n\n if (child) {\n // For other children, just show them as content\n return {\n content: child,\n }\n }\n }).filter(Boolean) as T\n}\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AAWnC,eAAe,SAASC,MAAMA,CAAAC,IAAA,EAKpB;EAAA,IALqB;IAC7BC,SAAS;IACTC,KAAK;IACLC,IAAI;IACJC;EACK,CAAC,GAAAJ,IAAA;EACN,OACEH,KAAA,CAAAQ,aAAA;IACEJ,SAAS,EAAEH,UAAU,CAAC,wBAAwB,EAAEG,SAAS,CAAE;IAE3DK,IAAI,EAAC;EAAQ,GAEZF,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAIF,KAAK,EACjBC,IACG,CAAC;AAEX;AAEA,OAAO,SAASI,WAAWA,CACzBH,QAAyB,EACtB;EACH,OAAOP,KAAK,CAACW,QAAQ,CAACC,GAAG,CAACL,QAAQ,EAAGM,KAAK,IAAK;IAC7C,IAAIb,KAAK,CAACc,cAAc,CAACD,KAAK,CAAC,IAAIA,KAAK,CAACE,IAAI,KAAKb,MAAM,EAAE;MAAA,IAAAc,kBAAA,EAAAC,KAAA,EAAAC,qBAAA,EAAAC,sBAAA;MAExD,OAAON,KAAK,CAACO,KAAK,CAACd,IAAI,GACnB;QACEe,WAAW,EAAEC,MAAM,EAAAN,kBAAA,GAACH,KAAK,CAACO,KAAK,CAACG,KAAK,cAAAP,kBAAA,cAAAA,kBAAA,GAAI,EAAE,CAAC;QAC5CQ,OAAO,EAAE,EAAAP,KAAA,IAAAC,qBAAA,GACPL,KAAK,CAACO,KAAK,CAACb,QAAQ,cAAAW,qBAAA,cAAAA,qBAAA,GAAIL,KAAK,CAACO,KAAK,CAACf,KAAK,cAAAY,KAAA,cAAAA,KAAA,GAAAQ,GAAA,KAAAA,GAAA,GACvCzB,KAAA,CAAAQ,aAAA,aAAI,UAAY,CAAC,GAEnBK,KAAK,CAACO,KAAK,CAACd,IAAI;MAEpB,CAAC,GACD;QACEe,WAAW,EAAER,KAAK,CAACO,KAAK,CAACG,KAAK;QAC9BC,OAAO,GAAAL,sBAAA,GAAEN,KAAK,CAACO,KAAK,CAACb,QAAQ,cAAAY,sBAAA,cAAAA,sBAAA,GAAIN,KAAK,CAACO,KAAK,CAACf;MAC/C,CAAC;IACP;IAEA,IAAIQ,KAAK,EAAE;MAET,OAAO;QACLW,OAAO,EAAEX;MACX,CAAC;IACH;EACF,CAAC,CAAC,CAACa,MAAM,CAACC,OAAO,CAAC;AACpB"}
1
+ {"version":3,"file":"Option.js","names":["React","classnames","Option","_ref","className","title","text","children","createElement","role"],"sources":["../../../../../../src/extensions/forms/Field/Option/Option.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport type { FieldHelpProps, FieldProps } from '../../types'\n\nexport type Props = FieldHelpProps &\n FieldProps<number | string> & {\n title?: React.ReactNode\n text?: React.ReactNode\n children?: React.ReactNode\n }\n\nexport default function Option({\n className,\n title,\n text,\n children,\n}: Props) {\n return (\n <span\n className={classnames('dnb-forms-field-option', className)}\n // eslint-disable-next-line jsx-a11y/role-has-required-aria-props\n role=\"option\"\n >\n {children ?? title}\n {text}\n </span>\n )\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AAUnC,eAAe,SAASC,MAAMA,CAAAC,IAAA,EAKpB;EAAA,IALqB;IAC7BC,SAAS;IACTC,KAAK;IACLC,IAAI;IACJC;EACK,CAAC,GAAAJ,IAAA;EACN,OACEH,KAAA,CAAAQ,aAAA;IACEJ,SAAS,EAAEH,UAAU,CAAC,wBAAwB,EAAEG,SAAS,CAAE;IAE3DK,IAAI,EAAC;EAAQ,GAEZF,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAIF,KAAK,EACjBC,IACG,CAAC;AAEX"}
@@ -1,9 +1,12 @@
1
1
  import { InputMaskedProps } from '../../../../components/InputMasked';
2
2
  import { type CountryType } from '../../constants/countries';
3
3
  import { Props as StringFieldProps } from '../String';
4
- import { FieldHelpProps, FieldProps } from '../../types';
4
+ import { FieldHelpProps, FieldPropsWithExtraValue } from '../../types';
5
5
  import { CountryFilterSet } from '../SelectCountry';
6
- export type Props = FieldHelpProps & FieldProps<string, undefined | string> & {
6
+ export type Props = FieldHelpProps & FieldPropsWithExtraValue<string, {
7
+ country: string;
8
+ phone: string;
9
+ }, undefined | string> & {
7
10
  countryCodeFieldClassName?: string;
8
11
  numberFieldClassName?: string;
9
12
  countryCodePlaceholder?: string;
@@ -93,8 +93,7 @@ function PhoneNumber(props) {
93
93
  continuousValidation,
94
94
  validateUnchanged,
95
95
  omitCountryCodeField,
96
- handleFocus,
97
- handleBlur,
96
+ setHasFocus,
98
97
  handleChange,
99
98
  onCountryCodeChange,
100
99
  onNumberChange,
@@ -122,18 +121,31 @@ function PhoneNumber(props) {
122
121
  makeObject
123
122
  });
124
123
  }, [lang, filterCountries, ccFilter]);
125
- const callOnChange = useCallback(_ref2 => {
124
+ const getEventValues = useCallback(function () {
126
125
  let {
127
- countryCode = omitCountryCodeField ? emptyValue : countryCodeRef.current || emptyValue,
126
+ countryCode = countryCodeRef.current || emptyValue,
128
127
  phoneNumber = numberRef.current || emptyValue
129
- } = _ref2;
130
- handleChange(joinValue([countryCode, phoneNumber]), omitCountryCodeField ? {
128
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
129
+ return _objectSpread(_objectSpread({}, !omitCountryCodeField ? {
130
+ countryCode
131
+ } : {}), {}, {
131
132
  phoneNumber
132
- } : {
133
+ });
134
+ }, [omitCountryCodeField, emptyValue]);
135
+ const callOnChange = useCallback(_ref2 => {
136
+ let {
137
+ countryCode = undefined,
138
+ phoneNumber = undefined
139
+ } = _ref2;
140
+ const eventValues = getEventValues({
133
141
  countryCode,
134
142
  phoneNumber
135
143
  });
136
- }, [omitCountryCodeField, emptyValue, handleChange]);
144
+ handleChange(joinValue([eventValues.countryCode, eventValues.phoneNumber]), eventValues);
145
+ }, [getEventValues, handleChange]);
146
+ const callOnBlurOrFocus = useCallback(hasFocus => {
147
+ setHasFocus(hasFocus, undefined, getEventValues());
148
+ }, [setHasFocus, getEventValues]);
137
149
  useMemo(() => {
138
150
  const [countryCode, phoneNumber] = splitValue(props.value || value);
139
151
  numberRef.current = phoneNumber;
@@ -164,7 +176,13 @@ function PhoneNumber(props) {
164
176
  });
165
177
  onNumberChange === null || onNumberChange === void 0 ? void 0 : onNumberChange(phoneNumber);
166
178
  }, [emptyValue, callOnChange, onNumberChange]);
167
- const onFocusHandler = useCallback(_ref4 => {
179
+ const handleOnBlur = useCallback(() => {
180
+ callOnBlurOrFocus(false);
181
+ }, [callOnBlurOrFocus]);
182
+ const handleOnFocus = useCallback(() => {
183
+ callOnBlurOrFocus(true);
184
+ }, [callOnBlurOrFocus]);
185
+ const handleCountryCodeFocus = useCallback(_ref4 => {
168
186
  let {
169
187
  updateData
170
188
  } = _ref4;
@@ -173,8 +191,8 @@ function PhoneNumber(props) {
173
191
  updateCurrentDataSet();
174
192
  updateData(dataRef.current);
175
193
  }
176
- handleFocus();
177
- }, [handleFocus, updateCurrentDataSet]);
194
+ handleOnFocus();
195
+ }, [handleOnFocus, updateCurrentDataSet]);
178
196
  const onTypeHandler = useCallback(_ref5 => {
179
197
  var _event$nativeEvent;
180
198
  let {
@@ -224,8 +242,8 @@ function PhoneNumber(props) {
224
242
  value: countryCodeRef.current,
225
243
  status: hasError ? 'error' : undefined,
226
244
  disabled: disabled,
227
- on_focus: onFocusHandler,
228
- on_blur: handleBlur,
245
+ on_focus: handleCountryCodeFocus,
246
+ on_blur: handleOnBlur,
229
247
  on_change: handleCountryCodeChange,
230
248
  on_type: onTypeHandler,
231
249
  independent_width: true,
@@ -243,8 +261,8 @@ function PhoneNumber(props) {
243
261
  label: label,
244
262
  placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : isDefault ? defaultPlaceholder : undefined,
245
263
  mask: numberMask !== null && numberMask !== void 0 ? numberMask : isDefault ? defaultMask : Array(12).fill(/\d/),
246
- onFocus: handleFocus,
247
- onBlur: handleBlur,
264
+ onFocus: handleOnFocus,
265
+ onBlur: handleOnBlur,
248
266
  onChange: handleNumberChange,
249
267
  value: numberRef.current,
250
268
  info: info,