@dnb/eufemia 10.45.0 → 10.46.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 (465) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/cjs/components/CopyOnClick.d.ts +12 -0
  3. package/cjs/components/CopyOnClick.js +24 -0
  4. package/cjs/components/CopyOnClick.js.map +1 -0
  5. package/cjs/components/copy-on-click/CopyOnClick.d.ts +9 -0
  6. package/cjs/components/copy-on-click/CopyOnClick.js +72 -0
  7. package/cjs/components/copy-on-click/CopyOnClick.js.map +1 -0
  8. package/cjs/components/copy-on-click/CopyOnClickDocs.d.ts +2 -0
  9. package/cjs/components/copy-on-click/CopyOnClickDocs.js +25 -0
  10. package/cjs/components/copy-on-click/CopyOnClickDocs.js.map +1 -0
  11. package/cjs/components/copy-on-click/index.d.ts +7 -0
  12. package/cjs/components/copy-on-click/index.js +24 -0
  13. package/cjs/components/copy-on-click/index.js.map +1 -0
  14. package/cjs/components/copy-on-click/style/dnb-copy-on-click.css +7 -0
  15. package/cjs/components/copy-on-click/style/dnb-copy-on-click.min.css +1 -0
  16. package/cjs/components/copy-on-click/style/dnb-copy-on-click.scss +10 -0
  17. package/cjs/components/copy-on-click/style/index.d.ts +5 -0
  18. package/cjs/components/copy-on-click/style/index.js +4 -0
  19. package/cjs/components/copy-on-click/style/index.js.map +1 -0
  20. package/cjs/components/copy-on-click/style.d.ts +5 -0
  21. package/cjs/components/copy-on-click/style.js +4 -0
  22. package/cjs/components/copy-on-click/style.js.map +1 -0
  23. package/cjs/components/copy-on-click/types.d.ts +19 -0
  24. package/cjs/components/copy-on-click/types.js +1 -0
  25. package/cjs/components/copy-on-click/types.js.map +1 -0
  26. package/cjs/components/index.d.ts +2 -1
  27. package/cjs/components/index.js +7 -0
  28. package/cjs/components/index.js.map +1 -1
  29. package/cjs/components/lib.d.ts +6 -1
  30. package/cjs/components/lib.js +8 -0
  31. package/cjs/components/lib.js.map +1 -1
  32. package/cjs/components/pagination/Pagination.d.ts +27 -1
  33. package/cjs/components/pagination/Pagination.js +3 -1
  34. package/cjs/components/pagination/Pagination.js.map +1 -1
  35. package/cjs/components/pagination/PaginationInfinity.js +20 -8
  36. package/cjs/components/pagination/PaginationInfinity.js.map +1 -1
  37. package/cjs/extensions/forms/DataContext/Context.d.ts +2 -2
  38. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  39. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +1 -5
  40. package/cjs/extensions/forms/DataContext/Provider/Provider.js +26 -19
  41. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  42. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +2 -7
  43. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  44. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +15 -3
  45. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +12 -3
  46. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  47. package/cjs/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js +10 -0
  48. package/cjs/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js.map +1 -1
  49. package/cjs/extensions/forms/Field/Email/Email.js +1 -1
  50. package/cjs/extensions/forms/Field/Email/Email.js.map +1 -1
  51. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +22 -3
  52. package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  53. package/cjs/extensions/forms/Field/Number/Number.d.ts +2 -2
  54. package/cjs/extensions/forms/Field/Number/Number.js +33 -31
  55. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  56. package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.d.ts +3 -1
  57. package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +11 -3
  58. package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
  59. package/cjs/extensions/forms/Field/Selection/Selection.d.ts +1 -1
  60. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  61. package/cjs/extensions/forms/Field/Selection/SelectionDocs.js +6 -1
  62. package/cjs/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -1
  63. package/cjs/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  64. package/cjs/extensions/forms/Form/Handler/Handler.js +1 -3
  65. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  66. package/cjs/extensions/forms/Form/Isolation/Isolation.d.ts +1 -1
  67. package/cjs/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  68. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js +0 -1
  69. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  70. package/cjs/extensions/forms/Form/Section/Section.js.map +1 -1
  71. package/cjs/extensions/forms/Form/data-context/useData.js +9 -7
  72. package/cjs/extensions/forms/Form/data-context/useData.js.map +1 -1
  73. package/cjs/extensions/forms/Value/SelectCountry/SelectCountry.d.ts +7 -0
  74. package/cjs/extensions/forms/Value/SelectCountry/SelectCountry.js +54 -0
  75. package/cjs/extensions/forms/Value/SelectCountry/SelectCountry.js.map +1 -0
  76. package/cjs/extensions/forms/Value/SelectCountry/index.d.ts +2 -0
  77. package/cjs/extensions/forms/Value/SelectCountry/index.js +27 -0
  78. package/cjs/extensions/forms/Value/SelectCountry/index.js.map +1 -0
  79. package/cjs/extensions/forms/Value/Selection/SelectionDocs.js +1 -1
  80. package/cjs/extensions/forms/Value/Selection/SelectionDocs.js.map +1 -1
  81. package/cjs/extensions/forms/Value/index.d.ts +1 -0
  82. package/cjs/extensions/forms/Value/index.js +7 -0
  83. package/cjs/extensions/forms/Value/index.js.map +1 -1
  84. package/cjs/extensions/forms/ValueBlock/ValueBlock.js +4 -3
  85. package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  86. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.css +3 -0
  87. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  88. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.scss +3 -0
  89. package/cjs/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js +4 -4
  90. package/cjs/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js.map +1 -1
  91. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +2 -0
  92. package/cjs/extensions/forms/constants/locales/en-GB.js +3 -1
  93. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  94. package/cjs/extensions/forms/constants/locales/en-US.d.ts +2 -0
  95. package/cjs/extensions/forms/constants/locales/index.d.ts +4 -0
  96. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +2 -0
  97. package/cjs/extensions/forms/constants/locales/nb-NO.js +3 -1
  98. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  99. package/cjs/extensions/forms/hooks/DataValueDocs.js +3 -3
  100. package/cjs/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  101. package/cjs/extensions/forms/style/dnb-forms.css +3 -0
  102. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  103. package/cjs/extensions/forms/types.d.ts +5 -2
  104. package/cjs/extensions/forms/types.js.map +1 -1
  105. package/cjs/index.d.ts +2 -1
  106. package/cjs/index.js +7 -0
  107. package/cjs/index.js.map +1 -1
  108. package/cjs/shared/Context.js +4 -6
  109. package/cjs/shared/Context.js.map +1 -1
  110. package/cjs/shared/Eufemia.d.ts +1 -1
  111. package/cjs/shared/Eufemia.js +2 -2
  112. package/cjs/shared/Eufemia.js.map +1 -1
  113. package/cjs/shared/locales/en-GB.d.ts +3 -0
  114. package/cjs/shared/locales/en-GB.js +3 -0
  115. package/cjs/shared/locales/en-GB.js.map +1 -1
  116. package/cjs/shared/locales/en-US.d.ts +3 -0
  117. package/cjs/shared/locales/index.d.ts +6 -0
  118. package/cjs/shared/locales/nb-NO.d.ts +3 -0
  119. package/cjs/shared/locales/nb-NO.js +3 -0
  120. package/cjs/shared/locales/nb-NO.js.map +1 -1
  121. package/cjs/style/core/scopes.scss +1 -1
  122. package/cjs/style/dnb-ui-basis.css +1 -1
  123. package/cjs/style/dnb-ui-basis.min.css +1 -1
  124. package/cjs/style/dnb-ui-body.css +1 -1
  125. package/cjs/style/dnb-ui-body.min.css +1 -1
  126. package/cjs/style/dnb-ui-components.css +11 -0
  127. package/cjs/style/dnb-ui-components.min.css +2 -2
  128. package/cjs/style/dnb-ui-components.scss +1 -0
  129. package/cjs/style/dnb-ui-core.css +1 -1
  130. package/cjs/style/dnb-ui-core.min.css +1 -1
  131. package/cjs/style/dnb-ui-extensions.css +3 -0
  132. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  133. package/cjs/style/dnb-ui-forms.css +3 -0
  134. package/cjs/style/dnb-ui-forms.min.css +1 -1
  135. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +14 -0
  136. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  137. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -0
  138. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  139. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +3 -0
  140. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  141. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +14 -0
  142. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  143. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -0
  144. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  145. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +3 -0
  146. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  147. package/cjs/style/themes/theme-ui/ui-theme-components.css +14 -0
  148. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  149. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +3 -0
  150. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  151. package/cjs/style/themes/theme-ui/ui-theme-forms.css +3 -0
  152. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  153. package/components/CopyOnClick.d.ts +12 -0
  154. package/components/CopyOnClick.js +4 -0
  155. package/components/CopyOnClick.js.map +1 -0
  156. package/components/copy-on-click/CopyOnClick.d.ts +9 -0
  157. package/components/copy-on-click/CopyOnClick.js +62 -0
  158. package/components/copy-on-click/CopyOnClick.js.map +1 -0
  159. package/components/copy-on-click/CopyOnClickDocs.d.ts +2 -0
  160. package/components/copy-on-click/CopyOnClickDocs.js +18 -0
  161. package/components/copy-on-click/CopyOnClickDocs.js.map +1 -0
  162. package/components/copy-on-click/index.d.ts +7 -0
  163. package/components/copy-on-click/index.js +4 -0
  164. package/components/copy-on-click/index.js.map +1 -0
  165. package/components/copy-on-click/style/dnb-copy-on-click.css +7 -0
  166. package/components/copy-on-click/style/dnb-copy-on-click.min.css +1 -0
  167. package/components/copy-on-click/style/dnb-copy-on-click.scss +10 -0
  168. package/components/copy-on-click/style/index.d.ts +5 -0
  169. package/components/copy-on-click/style/index.js +1 -0
  170. package/components/copy-on-click/style/index.js.map +1 -0
  171. package/components/copy-on-click/style.d.ts +5 -0
  172. package/components/copy-on-click/style.js +1 -0
  173. package/components/copy-on-click/style.js.map +1 -0
  174. package/components/copy-on-click/types.d.ts +19 -0
  175. package/components/copy-on-click/types.js +1 -0
  176. package/components/copy-on-click/types.js.map +1 -0
  177. package/components/index.d.ts +2 -1
  178. package/components/index.js +2 -1
  179. package/components/index.js.map +1 -1
  180. package/components/lib.d.ts +6 -1
  181. package/components/lib.js +3 -1
  182. package/components/lib.js.map +1 -1
  183. package/components/pagination/Pagination.d.ts +27 -1
  184. package/components/pagination/Pagination.js +3 -1
  185. package/components/pagination/Pagination.js.map +1 -1
  186. package/components/pagination/PaginationInfinity.js +20 -8
  187. package/components/pagination/PaginationInfinity.js.map +1 -1
  188. package/es/components/CopyOnClick.d.ts +12 -0
  189. package/es/components/CopyOnClick.js +4 -0
  190. package/es/components/CopyOnClick.js.map +1 -0
  191. package/es/components/copy-on-click/CopyOnClick.d.ts +9 -0
  192. package/es/components/copy-on-click/CopyOnClick.js +62 -0
  193. package/es/components/copy-on-click/CopyOnClick.js.map +1 -0
  194. package/es/components/copy-on-click/CopyOnClickDocs.d.ts +2 -0
  195. package/es/components/copy-on-click/CopyOnClickDocs.js +18 -0
  196. package/es/components/copy-on-click/CopyOnClickDocs.js.map +1 -0
  197. package/es/components/copy-on-click/index.d.ts +7 -0
  198. package/es/components/copy-on-click/index.js +4 -0
  199. package/es/components/copy-on-click/index.js.map +1 -0
  200. package/es/components/copy-on-click/style/dnb-copy-on-click.css +7 -0
  201. package/es/components/copy-on-click/style/dnb-copy-on-click.min.css +1 -0
  202. package/es/components/copy-on-click/style/dnb-copy-on-click.scss +10 -0
  203. package/es/components/copy-on-click/style/index.d.ts +5 -0
  204. package/es/components/copy-on-click/style/index.js +1 -0
  205. package/es/components/copy-on-click/style/index.js.map +1 -0
  206. package/es/components/copy-on-click/style.d.ts +5 -0
  207. package/es/components/copy-on-click/style.js +1 -0
  208. package/es/components/copy-on-click/style.js.map +1 -0
  209. package/es/components/copy-on-click/types.d.ts +19 -0
  210. package/es/components/copy-on-click/types.js +1 -0
  211. package/es/components/copy-on-click/types.js.map +1 -0
  212. package/es/components/index.d.ts +2 -1
  213. package/es/components/index.js +2 -1
  214. package/es/components/index.js.map +1 -1
  215. package/es/components/lib.d.ts +6 -1
  216. package/es/components/lib.js +3 -1
  217. package/es/components/lib.js.map +1 -1
  218. package/es/components/pagination/Pagination.d.ts +27 -1
  219. package/es/components/pagination/Pagination.js +3 -1
  220. package/es/components/pagination/Pagination.js.map +1 -1
  221. package/es/components/pagination/PaginationInfinity.js +20 -8
  222. package/es/components/pagination/PaginationInfinity.js.map +1 -1
  223. package/es/extensions/forms/DataContext/Context.d.ts +2 -2
  224. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  225. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +1 -5
  226. package/es/extensions/forms/DataContext/Provider/Provider.js +25 -18
  227. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  228. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +2 -7
  229. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  230. package/es/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +15 -3
  231. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +12 -3
  232. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  233. package/es/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js +10 -0
  234. package/es/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js.map +1 -1
  235. package/es/extensions/forms/Field/Email/Email.js +1 -1
  236. package/es/extensions/forms/Field/Email/Email.js.map +1 -1
  237. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +23 -4
  238. package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  239. package/es/extensions/forms/Field/Number/Number.d.ts +2 -2
  240. package/es/extensions/forms/Field/Number/Number.js +33 -31
  241. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  242. package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.d.ts +3 -1
  243. package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +8 -1
  244. package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
  245. package/es/extensions/forms/Field/Selection/Selection.d.ts +1 -1
  246. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  247. package/es/extensions/forms/Field/Selection/SelectionDocs.js +6 -1
  248. package/es/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -1
  249. package/es/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  250. package/es/extensions/forms/Form/Handler/Handler.js +1 -3
  251. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  252. package/es/extensions/forms/Form/Isolation/Isolation.d.ts +1 -1
  253. package/es/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  254. package/es/extensions/forms/Form/Isolation/IsolationDocs.js +0 -1
  255. package/es/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  256. package/es/extensions/forms/Form/Section/Section.js.map +1 -1
  257. package/es/extensions/forms/Form/data-context/useData.js +9 -7
  258. package/es/extensions/forms/Form/data-context/useData.js.map +1 -1
  259. package/es/extensions/forms/Value/SelectCountry/SelectCountry.d.ts +7 -0
  260. package/es/extensions/forms/Value/SelectCountry/SelectCountry.js +44 -0
  261. package/es/extensions/forms/Value/SelectCountry/SelectCountry.js.map +1 -0
  262. package/es/extensions/forms/Value/SelectCountry/index.d.ts +2 -0
  263. package/es/extensions/forms/Value/SelectCountry/index.js +3 -0
  264. package/es/extensions/forms/Value/SelectCountry/index.js.map +1 -0
  265. package/es/extensions/forms/Value/Selection/SelectionDocs.js +1 -1
  266. package/es/extensions/forms/Value/Selection/SelectionDocs.js.map +1 -1
  267. package/es/extensions/forms/Value/index.d.ts +1 -0
  268. package/es/extensions/forms/Value/index.js +1 -0
  269. package/es/extensions/forms/Value/index.js.map +1 -1
  270. package/es/extensions/forms/ValueBlock/ValueBlock.js +4 -3
  271. package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  272. package/es/extensions/forms/ValueBlock/style/dnb-value-block.css +3 -0
  273. package/es/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  274. package/es/extensions/forms/ValueBlock/style/dnb-value-block.scss +3 -0
  275. package/es/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js +4 -4
  276. package/es/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js.map +1 -1
  277. package/es/extensions/forms/constants/locales/en-GB.d.ts +2 -0
  278. package/es/extensions/forms/constants/locales/en-GB.js +3 -1
  279. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  280. package/es/extensions/forms/constants/locales/en-US.d.ts +2 -0
  281. package/es/extensions/forms/constants/locales/index.d.ts +4 -0
  282. package/es/extensions/forms/constants/locales/nb-NO.d.ts +2 -0
  283. package/es/extensions/forms/constants/locales/nb-NO.js +3 -1
  284. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  285. package/es/extensions/forms/hooks/DataValueDocs.js +3 -3
  286. package/es/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  287. package/es/extensions/forms/style/dnb-forms.css +3 -0
  288. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  289. package/es/extensions/forms/types.d.ts +5 -2
  290. package/es/extensions/forms/types.js.map +1 -1
  291. package/es/index.d.ts +2 -1
  292. package/es/index.js +2 -1
  293. package/es/index.js.map +1 -1
  294. package/es/shared/Context.js +4 -6
  295. package/es/shared/Context.js.map +1 -1
  296. package/es/shared/Eufemia.d.ts +1 -1
  297. package/es/shared/Eufemia.js +2 -2
  298. package/es/shared/Eufemia.js.map +1 -1
  299. package/es/shared/locales/en-GB.d.ts +3 -0
  300. package/es/shared/locales/en-GB.js +3 -0
  301. package/es/shared/locales/en-GB.js.map +1 -1
  302. package/es/shared/locales/en-US.d.ts +3 -0
  303. package/es/shared/locales/index.d.ts +6 -0
  304. package/es/shared/locales/nb-NO.d.ts +3 -0
  305. package/es/shared/locales/nb-NO.js +3 -0
  306. package/es/shared/locales/nb-NO.js.map +1 -1
  307. package/es/style/core/scopes.scss +1 -1
  308. package/es/style/dnb-ui-basis.css +1 -1
  309. package/es/style/dnb-ui-basis.min.css +1 -1
  310. package/es/style/dnb-ui-body.css +1 -1
  311. package/es/style/dnb-ui-body.min.css +1 -1
  312. package/es/style/dnb-ui-components.css +11 -0
  313. package/es/style/dnb-ui-components.min.css +2 -2
  314. package/es/style/dnb-ui-components.scss +1 -0
  315. package/es/style/dnb-ui-core.css +1 -1
  316. package/es/style/dnb-ui-core.min.css +1 -1
  317. package/es/style/dnb-ui-extensions.css +3 -0
  318. package/es/style/dnb-ui-extensions.min.css +1 -1
  319. package/es/style/dnb-ui-forms.css +3 -0
  320. package/es/style/dnb-ui-forms.min.css +1 -1
  321. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +14 -0
  322. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  323. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -0
  324. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  325. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +3 -0
  326. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  327. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +14 -0
  328. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  329. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -0
  330. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  331. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +3 -0
  332. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  333. package/es/style/themes/theme-ui/ui-theme-components.css +14 -0
  334. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  335. package/es/style/themes/theme-ui/ui-theme-extensions.css +3 -0
  336. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  337. package/es/style/themes/theme-ui/ui-theme-forms.css +3 -0
  338. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  339. package/esm/dnb-ui-basis.min.mjs +1 -1
  340. package/esm/dnb-ui-components.min.mjs +1 -1
  341. package/esm/dnb-ui-elements.min.mjs +1 -1
  342. package/esm/dnb-ui-extensions.min.mjs +2 -2
  343. package/esm/dnb-ui-lib.min.mjs +1 -1
  344. package/extensions/forms/DataContext/Context.d.ts +2 -2
  345. package/extensions/forms/DataContext/Context.js.map +1 -1
  346. package/extensions/forms/DataContext/Provider/Provider.d.ts +1 -5
  347. package/extensions/forms/DataContext/Provider/Provider.js +26 -19
  348. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  349. package/extensions/forms/DataContext/Provider/ProviderDocs.js +2 -7
  350. package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  351. package/extensions/forms/Field/ArraySelection/ArraySelection.d.ts +15 -3
  352. package/extensions/forms/Field/ArraySelection/ArraySelection.js +12 -3
  353. package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  354. package/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js +10 -0
  355. package/extensions/forms/Field/ArraySelection/ArraySelectionDocs.js.map +1 -1
  356. package/extensions/forms/Field/Email/Email.js +1 -1
  357. package/extensions/forms/Field/Email/Email.js.map +1 -1
  358. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +23 -4
  359. package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
  360. package/extensions/forms/Field/Number/Number.d.ts +2 -2
  361. package/extensions/forms/Field/Number/Number.js +33 -31
  362. package/extensions/forms/Field/Number/Number.js.map +1 -1
  363. package/extensions/forms/Field/SelectCountry/SelectCountryDocs.d.ts +3 -1
  364. package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +8 -1
  365. package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
  366. package/extensions/forms/Field/Selection/Selection.d.ts +1 -1
  367. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  368. package/extensions/forms/Field/Selection/SelectionDocs.js +6 -1
  369. package/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -1
  370. package/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  371. package/extensions/forms/Form/Handler/Handler.js +1 -3
  372. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  373. package/extensions/forms/Form/Isolation/Isolation.d.ts +1 -1
  374. package/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  375. package/extensions/forms/Form/Isolation/IsolationDocs.js +0 -1
  376. package/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  377. package/extensions/forms/Form/Section/Section.js.map +1 -1
  378. package/extensions/forms/Form/data-context/useData.js +9 -7
  379. package/extensions/forms/Form/data-context/useData.js.map +1 -1
  380. package/extensions/forms/Value/SelectCountry/SelectCountry.d.ts +7 -0
  381. package/extensions/forms/Value/SelectCountry/SelectCountry.js +44 -0
  382. package/extensions/forms/Value/SelectCountry/SelectCountry.js.map +1 -0
  383. package/extensions/forms/Value/SelectCountry/index.d.ts +2 -0
  384. package/extensions/forms/Value/SelectCountry/index.js +3 -0
  385. package/extensions/forms/Value/SelectCountry/index.js.map +1 -0
  386. package/extensions/forms/Value/Selection/SelectionDocs.js +1 -1
  387. package/extensions/forms/Value/Selection/SelectionDocs.js.map +1 -1
  388. package/extensions/forms/Value/index.d.ts +1 -0
  389. package/extensions/forms/Value/index.js +1 -0
  390. package/extensions/forms/Value/index.js.map +1 -1
  391. package/extensions/forms/ValueBlock/ValueBlock.js +4 -3
  392. package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  393. package/extensions/forms/ValueBlock/style/dnb-value-block.css +3 -0
  394. package/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  395. package/extensions/forms/ValueBlock/style/dnb-value-block.scss +3 -0
  396. package/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js +4 -4
  397. package/extensions/forms/blocks/ChildrenWithAge/ChildrenWithAge.js.map +1 -1
  398. package/extensions/forms/constants/locales/en-GB.d.ts +2 -0
  399. package/extensions/forms/constants/locales/en-GB.js +3 -1
  400. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  401. package/extensions/forms/constants/locales/en-US.d.ts +2 -0
  402. package/extensions/forms/constants/locales/index.d.ts +4 -0
  403. package/extensions/forms/constants/locales/nb-NO.d.ts +2 -0
  404. package/extensions/forms/constants/locales/nb-NO.js +3 -1
  405. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  406. package/extensions/forms/hooks/DataValueDocs.js +3 -3
  407. package/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  408. package/extensions/forms/style/dnb-forms.css +3 -0
  409. package/extensions/forms/style/dnb-forms.min.css +1 -1
  410. package/extensions/forms/types.d.ts +5 -2
  411. package/extensions/forms/types.js.map +1 -1
  412. package/index.d.ts +2 -1
  413. package/index.js +2 -1
  414. package/index.js.map +1 -1
  415. package/package.json +2 -1
  416. package/shared/Context.js +4 -6
  417. package/shared/Context.js.map +1 -1
  418. package/shared/Eufemia.d.ts +1 -1
  419. package/shared/Eufemia.js +2 -2
  420. package/shared/Eufemia.js.map +1 -1
  421. package/shared/locales/en-GB.d.ts +3 -0
  422. package/shared/locales/en-GB.js +3 -0
  423. package/shared/locales/en-GB.js.map +1 -1
  424. package/shared/locales/en-US.d.ts +3 -0
  425. package/shared/locales/index.d.ts +6 -0
  426. package/shared/locales/nb-NO.d.ts +3 -0
  427. package/shared/locales/nb-NO.js +3 -0
  428. package/shared/locales/nb-NO.js.map +1 -1
  429. package/style/core/scopes.scss +1 -1
  430. package/style/dnb-ui-basis.css +1 -1
  431. package/style/dnb-ui-basis.min.css +1 -1
  432. package/style/dnb-ui-body.css +1 -1
  433. package/style/dnb-ui-body.min.css +1 -1
  434. package/style/dnb-ui-components.css +11 -0
  435. package/style/dnb-ui-components.min.css +2 -2
  436. package/style/dnb-ui-components.scss +1 -0
  437. package/style/dnb-ui-core.css +1 -1
  438. package/style/dnb-ui-core.min.css +1 -1
  439. package/style/dnb-ui-extensions.css +3 -0
  440. package/style/dnb-ui-extensions.min.css +1 -1
  441. package/style/dnb-ui-forms.css +3 -0
  442. package/style/dnb-ui-forms.min.css +1 -1
  443. package/style/themes/theme-eiendom/eiendom-theme-components.css +14 -0
  444. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  445. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +3 -0
  446. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  447. package/style/themes/theme-eiendom/eiendom-theme-forms.css +3 -0
  448. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  449. package/style/themes/theme-sbanken/sbanken-theme-components.css +14 -0
  450. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  451. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +3 -0
  452. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  453. package/style/themes/theme-sbanken/sbanken-theme-forms.css +3 -0
  454. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  455. package/style/themes/theme-ui/ui-theme-components.css +14 -0
  456. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  457. package/style/themes/theme-ui/ui-theme-extensions.css +3 -0
  458. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  459. package/style/themes/theme-ui/ui-theme-forms.css +3 -0
  460. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  461. package/umd/dnb-ui-basis.min.js +1 -1
  462. package/umd/dnb-ui-components.min.js +1 -1
  463. package/umd/dnb-ui-elements.min.js +1 -1
  464. package/umd/dnb-ui-extensions.min.js +2 -2
  465. 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","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":"AAEA,OAAO,MAAMA,kBAAwC,GAAG;EACtDC,WAAW,EAAE;IACXC,GAAG,EAAE,oHAAoH;IACzHC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE;IACJH,GAAG,EAAE,kGAAkG;IACvGC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,EAAE,EAAE;IACFJ,GAAG,EAAE,8EAA8E;IACnFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,MAAM,EAAE;IACNL,GAAG,EAAE,6CAA6C;IAClDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,aAAa,EAAE;IACbN,GAAG,EAAE,gFAAgF;IACrFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDK,wBAAwB,EAAE;IACxBP,GAAG,EAAE,8DAA8D;IACnEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDM,kBAAkB,EAAE;IAClBR,GAAG,EAAE,oJAAoJ;IACzJC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDO,iBAAiB,EAAE;IACjBT,GAAG,EAAE,0EAA0E;IAC/EC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDQ,gBAAgB,EAAE;IAChBV,GAAG,EAAE,wEAAwE;IAC7EC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDS,WAAW,EAAE;IACXX,GAAG,EAAE,uKAAuK;IAC5KC,IAAI,EAAE,KAAK;IACXC,MAAM,EAAE;EACV,CAAC;EACDU,WAAW,EAAE;IACXZ,GAAG,EAAE,6KAA6K;IAClLC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDW,YAAY,EAAE;IACZb,GAAG,EAAE,sLAAsL;IAC3LC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDY,gBAAgB,EAAE;IAChBd,GAAG,EAAE,2MAA2M;IAChNC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDa,cAAc,EAAE;IACdf,GAAG,EAAE,4GAA4G;IACjHC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDc,QAAQ,EAAE;IACRhB,GAAG,EAAE,2BAA2B;IAChCC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDe,QAAQ,EAAE;IACRjB,GAAG,EAAE,qBAAqB;IAC1BC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDgB,MAAM,EAAE;IACNlB,GAAG,EAAE,6DAA6D;IAClEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDiB,QAAQ,EAAE;IACRnB,GAAG,EAAE,WAAW;IAChBC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMkB,cAAoC,GAAG;EAClDC,QAAQ,EAAE;IACRrB,GAAG,EAAE,kmBAAkmB;IACvmBC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDoB,YAAY,EAAE;IACZtB,GAAG,EAAE,6OAA6O;IAClPC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDqB,QAAQ,EAAE;IACRvB,GAAG,EAAE,ivBAAivB;IACtvBC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDsB,eAAe,EAAE;IACfxB,GAAG,EAAE,8FAA8F;IACnGC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDuB,gBAAgB,EAAE;IAChBzB,GAAG,EAAE,8IAA8I;IACnJC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDwB,OAAO,EAAE;IACP1B,GAAG,EAAE,oIAAoI;IACzIC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AACF,CAAC"}
1
+ {"version":3,"file":"ProviderDocs.js","names":["ProviderProperties","defaultData","doc","type","status","data","id","schema","errorMessages","minimumAsyncBehaviorTime","asyncSubmitTimeout","scrollTopOnSubmit","sessionStorageId","ajvInstance","transformIn","transformOut","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 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`). The second parameter is an object containing the `filterData`, `resetForm` and `clearData` functions.\",\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. The second parameter is an object containing the `filterData` function.\",\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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"}
@@ -1,16 +1,27 @@
1
1
  import React from 'react';
2
2
  import { ReturnAdditional } from '../../hooks/useFieldProps';
3
- import { FieldHelpProps, FieldProps } from '../../types';
3
+ import { FieldHelpProps, FieldProps, Path } from '../../types';
4
+ import { Data } from '../Selection';
4
5
  export type Props = FieldHelpProps & FieldProps<Array<string | number> | undefined> & {
5
6
  children?: React.ReactNode;
6
7
  variant?: 'checkbox' | 'button' | 'checkbox-button';
7
8
  optionsLayout?: 'horizontal' | 'vertical';
9
+ /**
10
+ * The path to the context data (Form.Handler).
11
+ * The context data object needs to have a `value` and a `title` property.
12
+ */
13
+ dataPath?: Path;
14
+ /**
15
+ * Data to be used for the component. The object needs to have a `value` and a `title` property.
16
+ * The generated options will be placed above given JSX based children.
17
+ */
18
+ data?: Data;
8
19
  };
9
20
  declare function ArraySelection(props: Props): import("react/jsx-runtime").JSX.Element;
10
21
  declare namespace ArraySelection {
11
22
  var _supportsSpacingProps: boolean;
12
23
  }
13
- export declare function useCheckboxOrToggleOptions({ id, path, variant, info, warning, emptyValue, htmlAttributes, children, value, disabled, hasError, handleChange, }: {
24
+ export declare function useCheckboxOrToggleOptions({ id, path, variant, info, warning, emptyValue, htmlAttributes, dataList, children, value, disabled, hasError, handleChange, }: {
14
25
  id: Props['id'];
15
26
  path?: Props['path'];
16
27
  variant?: Props['variant'];
@@ -18,10 +29,11 @@ export declare function useCheckboxOrToggleOptions({ id, path, variant, info, wa
18
29
  warning?: Props['warning'];
19
30
  emptyValue?: Props['emptyValue'];
20
31
  htmlAttributes?: Props['htmlAttributes'];
32
+ dataList?: Props['data'];
21
33
  children?: Props['children'];
22
34
  value?: Props['value'];
23
35
  disabled?: Props['disabled'];
24
36
  hasError?: ReturnAdditional<Props['value']>['hasError'];
25
37
  handleChange?: ReturnAdditional<Props['value']>['handleChange'];
26
- }): any;
38
+ }): any[];
27
39
  export default ArraySelection;
@@ -15,10 +15,13 @@ import { pickSpacingProps } from '../../../../components/flex/utils';
15
15
  import { getStatus, mapOptions } from '../Selection';
16
16
  import ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext';
17
17
  import DataContext from '../../DataContext/Context';
18
+ import useDataValue from '../../hooks/useDataValue';
18
19
  function ArraySelection(props) {
19
20
  const {
20
21
  id,
21
22
  path,
23
+ dataPath,
24
+ data,
22
25
  className,
23
26
  variant = 'checkbox',
24
27
  layout = 'vertical',
@@ -37,6 +40,10 @@ function ArraySelection(props) {
37
40
  handleChange,
38
41
  children
39
42
  } = useFieldProps(props);
43
+ const {
44
+ getValueByPath
45
+ } = useDataValue();
46
+ const dataList = dataPath ? getValueByPath(dataPath) : data;
40
47
  const fieldBlockProps = _objectSpread({
41
48
  forId: id,
42
49
  className: classnames(`dnb-forms-field-array-selection dnb-forms-field-array-selection--variant-${variant === 'checkbox' ? 'checkbox' : 'button'} dnb-forms-field-array-selection--layout-${layout} dnb-forms-field-array-selection--options-layout-${optionsLayout}`, className),
@@ -61,6 +68,7 @@ function ArraySelection(props) {
61
68
  warning,
62
69
  emptyValue,
63
70
  htmlAttributes,
71
+ dataList,
64
72
  children,
65
73
  value,
66
74
  disabled,
@@ -89,6 +97,7 @@ export function useCheckboxOrToggleOptions(_ref) {
89
97
  warning,
90
98
  emptyValue,
91
99
  htmlAttributes,
100
+ dataList,
92
101
  children,
93
102
  value,
94
103
  disabled,
@@ -98,7 +107,7 @@ export function useCheckboxOrToggleOptions(_ref) {
98
107
  const {
99
108
  setFieldProps
100
109
  } = useContext(DataContext);
101
- const optionsCount = useMemo(() => React.Children.count(children), [children]);
110
+ const optionsCount = useMemo(() => React.Children.count(children) + ((dataList === null || dataList === void 0 ? void 0 : dataList.length) || 0), [dataList, children]);
102
111
  const collectedData = [];
103
112
  const createOption = useCallback((props, i) => {
104
113
  const {
@@ -138,9 +147,9 @@ export function useCheckboxOrToggleOptions(_ref) {
138
147
  on_change: handleSelect
139
148
  }, htmlAttributes, rest));
140
149
  }, [disabled, emptyValue, handleChange, hasError, htmlAttributes, id, info, optionsCount, value, variant, warning]);
141
- const result = mapOptions(children, {
150
+ const result = [...(dataList || []).map((props, i) => createOption(props, i)), ...(mapOptions(children, {
142
151
  createOption
143
- });
152
+ }) || []).filter(Boolean)];
144
153
  if (path) {
145
154
  setFieldProps === null || setFieldProps === void 0 ? void 0 : setFieldProps(path + '/arraySelectionData', collectedData);
146
155
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ArraySelection.js","names":["React","useCallback","useContext","useMemo","Checkbox","HelpButton","ToggleButton","classnames","FieldBlock","useFieldProps","pickSpacingProps","getStatus","mapOptions","ToggleButtonGroupContext","DataContext","ArraySelection","props","id","path","className","variant","layout","optionsLayout","label","labelDescription","value","error","hasError","help","info","warning","disabled","emptyValue","htmlAttributes","handleChange","children","fieldBlockProps","_objectSpread","forId","contentClassName","createElement","Fragment","size","left","title","content","undefined","options","useCheckboxOrToggleOptions","Provider","status","_ref","setFieldProps","optionsCount","Children","count","collectedData","createOption","i","selected","rest","_objectWithoutProperties","_excluded","includes","push","suffix","handleSelect","newValue","filter","length","Component","_extends","key","text","checked","on_change","result","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/ArraySelection/ArraySelection.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport { Checkbox, HelpButton, ToggleButton } from '../../../../components'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { ReturnAdditional } from '../../hooks/useFieldProps'\nimport { FieldHelpProps, FieldProps, FormError } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { getStatus, mapOptions } from '../Selection'\nimport { HelpButtonProps } from '../../../../components/HelpButton'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\nimport DataContext from '../../DataContext/Context'\n\ntype OptionProps = React.ComponentProps<\n React.FC<{\n value: number | string\n error: Error | FormError | undefined\n title: React.ReactNode\n help: HelpButtonProps\n className: string\n children: React.ReactNode\n handleSelect: () => void\n }>\n>\n\nexport type Props = FieldHelpProps &\n FieldProps<Array<string | number> | undefined> & {\n children?: React.ReactNode\n variant?: 'checkbox' | 'button' | 'checkbox-button'\n optionsLayout?: 'horizontal' | 'vertical'\n }\n\nfunction ArraySelection(props: Props) {\n const {\n id,\n path,\n className,\n variant = 'checkbox',\n layout = 'vertical',\n optionsLayout = 'vertical',\n label,\n labelDescription,\n value,\n error,\n hasError,\n help,\n info,\n warning,\n disabled,\n emptyValue,\n htmlAttributes,\n handleChange,\n children,\n } = useFieldProps(props)\n\n const fieldBlockProps = {\n forId: id,\n className: classnames(\n 'dnb-forms-field-array-selection',\n `dnb-forms-field-array-selection--variant-${\n variant === 'checkbox' ? 'checkbox' : 'button'\n }`,\n `dnb-forms-field-array-selection--layout-${layout}`,\n `dnb-forms-field-array-selection--options-layout-${optionsLayout}`,\n className\n ),\n contentClassName: 'dnb-forms-field-array-selection__options',\n help,\n info,\n warning,\n error,\n layout,\n label,\n labelDescription: (\n <>\n {labelDescription}\n {help ? (\n <HelpButton\n size=\"small\"\n left={labelDescription ? 'x-small' : false}\n title={help.title}\n >\n {help.content}\n </HelpButton>\n ) : undefined}\n </>\n ),\n ...pickSpacingProps(props),\n }\n\n const options = useCheckboxOrToggleOptions({\n id,\n path,\n variant,\n info,\n warning,\n emptyValue,\n htmlAttributes,\n children,\n value,\n disabled,\n handleChange,\n hasError,\n })\n\n switch (variant) {\n case 'checkbox':\n return <FieldBlock {...fieldBlockProps}>{options}</FieldBlock>\n default:\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButtonGroupContext.Provider\n value={{\n status: hasError ? 'error' : undefined,\n disabled,\n variant:\n variant === 'checkbox-button' ? 'checkbox' : 'default',\n }}\n >\n {options}\n </ToggleButtonGroupContext.Provider>\n </FieldBlock>\n )\n }\n}\n\nexport function useCheckboxOrToggleOptions({\n id,\n path,\n variant = 'checkbox',\n info,\n warning,\n emptyValue,\n htmlAttributes,\n children,\n value,\n disabled,\n hasError,\n handleChange,\n}: {\n id: Props['id']\n path?: Props['path']\n variant?: Props['variant']\n info?: Props['info']\n warning?: Props['warning']\n emptyValue?: Props['emptyValue']\n htmlAttributes?: Props['htmlAttributes']\n children?: Props['children']\n value?: Props['value']\n disabled?: Props['disabled']\n hasError?: ReturnAdditional<Props['value']>['hasError']\n handleChange?: ReturnAdditional<Props['value']>['handleChange']\n}) {\n const { setFieldProps } = useContext(DataContext)\n const optionsCount = useMemo(\n () => React.Children.count(children),\n [children]\n )\n const collectedData = []\n\n const createOption = useCallback(\n (props: OptionProps, i: number) => {\n const {\n value: selected,\n error,\n title,\n help,\n className,\n children,\n ...rest\n } = props\n\n if (value?.includes(selected)) {\n collectedData.push(props)\n }\n\n const label = title ?? children\n const status = getStatus(error, info, warning)\n const suffix = help ? (\n <HelpButton size=\"small\" title={help.title}>\n {help.content}\n </HelpButton>\n ) : undefined\n const handleSelect = () => {\n const newValue = value?.includes(selected)\n ? value.filter((value) => value !== selected)\n : [...(value ?? []), selected]\n\n handleChange?.(\n newValue.length === 0 ? (emptyValue as typeof value) : newValue\n )\n }\n\n const Component = (\n variant === 'checkbox' ? Checkbox : ToggleButton\n ) as typeof Checkbox & typeof ToggleButton\n\n return (\n <Component\n id={optionsCount === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n className={classnames(\n `dnb-forms-field-array-selection__${\n variant === 'checkbox' ? 'checkbox' : 'button'\n }`,\n className\n )}\n label={variant === 'checkbox' ? label : undefined}\n text={variant !== 'checkbox' ? label : undefined}\n value={value}\n disabled={disabled}\n checked={value?.includes(selected)}\n status={(hasError || status) && 'error'}\n suffix={suffix}\n on_change={handleSelect}\n {...htmlAttributes}\n {...rest}\n />\n )\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n disabled,\n emptyValue,\n handleChange,\n hasError,\n htmlAttributes,\n id,\n info,\n optionsCount,\n value,\n variant,\n warning,\n ]\n )\n\n const result = mapOptions(children, { createOption })\n\n if (path) {\n setFieldProps?.(path + '/arraySelectionData', collectedData)\n }\n\n return result\n}\n\nArraySelection._supportsSpacingProps = true\nexport default ArraySelection\n"],"mappings":"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"}
1
+ {"version":3,"file":"ArraySelection.js","names":["React","useCallback","useContext","useMemo","Checkbox","HelpButton","ToggleButton","classnames","FieldBlock","useFieldProps","pickSpacingProps","getStatus","mapOptions","ToggleButtonGroupContext","DataContext","useDataValue","ArraySelection","props","id","path","dataPath","data","className","variant","layout","optionsLayout","label","labelDescription","value","error","hasError","help","info","warning","disabled","emptyValue","htmlAttributes","handleChange","children","getValueByPath","dataList","fieldBlockProps","_objectSpread","forId","contentClassName","createElement","Fragment","size","left","title","content","undefined","options","useCheckboxOrToggleOptions","Provider","status","_ref","setFieldProps","optionsCount","Children","count","length","collectedData","createOption","i","selected","rest","_objectWithoutProperties","_excluded","includes","push","suffix","handleSelect","newValue","filter","Component","_extends","key","text","checked","on_change","result","map","Boolean","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/ArraySelection/ArraySelection.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport { Checkbox, HelpButton, ToggleButton } from '../../../../components'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { ReturnAdditional } from '../../hooks/useFieldProps'\nimport { FieldHelpProps, FieldProps, FormError, Path } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { getStatus, mapOptions, Data } from '../Selection'\nimport { HelpButtonProps } from '../../../../components/HelpButton'\nimport ToggleButtonGroupContext from '../../../../components/toggle-button/ToggleButtonGroupContext'\nimport DataContext from '../../DataContext/Context'\nimport useDataValue from '../../hooks/useDataValue'\n\ntype OptionProps = React.ComponentProps<\n React.FC<{\n value: number | string\n error: Error | FormError | undefined\n title: React.ReactNode\n help: HelpButtonProps\n className: string\n children: React.ReactNode\n handleSelect: () => void\n }>\n>\n\nexport type Props = FieldHelpProps &\n FieldProps<Array<string | number> | undefined> & {\n children?: React.ReactNode\n variant?: 'checkbox' | 'button' | 'checkbox-button'\n optionsLayout?: 'horizontal' | 'vertical'\n /**\n * The path to the context data (Form.Handler).\n * The context data object needs to have a `value` and a `title` property.\n */\n dataPath?: Path\n\n /**\n * Data to be used for the component. The object needs to have a `value` and a `title` property.\n * The generated options will be placed above given JSX based children.\n */\n data?: Data\n }\n\nfunction ArraySelection(props: Props) {\n const {\n id,\n path,\n dataPath,\n data,\n className,\n variant = 'checkbox',\n layout = 'vertical',\n optionsLayout = 'vertical',\n label,\n labelDescription,\n value,\n error,\n hasError,\n help,\n info,\n warning,\n disabled,\n emptyValue,\n htmlAttributes,\n handleChange,\n children,\n } = useFieldProps(props)\n\n const { getValueByPath } = useDataValue()\n const dataList = dataPath ? getValueByPath(dataPath) : data\n\n const fieldBlockProps = {\n forId: id,\n className: classnames(\n 'dnb-forms-field-array-selection',\n `dnb-forms-field-array-selection--variant-${\n variant === 'checkbox' ? 'checkbox' : 'button'\n }`,\n `dnb-forms-field-array-selection--layout-${layout}`,\n `dnb-forms-field-array-selection--options-layout-${optionsLayout}`,\n className\n ),\n contentClassName: 'dnb-forms-field-array-selection__options',\n help,\n info,\n warning,\n error,\n layout,\n label,\n labelDescription: (\n <>\n {labelDescription}\n {help ? (\n <HelpButton\n size=\"small\"\n left={labelDescription ? 'x-small' : false}\n title={help.title}\n >\n {help.content}\n </HelpButton>\n ) : undefined}\n </>\n ),\n ...pickSpacingProps(props),\n }\n\n const options = useCheckboxOrToggleOptions({\n id,\n path,\n variant,\n info,\n warning,\n emptyValue,\n htmlAttributes,\n dataList,\n children,\n value,\n disabled,\n handleChange,\n hasError,\n })\n\n switch (variant) {\n case 'checkbox':\n return <FieldBlock {...fieldBlockProps}>{options}</FieldBlock>\n default:\n return (\n <FieldBlock {...fieldBlockProps}>\n <ToggleButtonGroupContext.Provider\n value={{\n status: hasError ? 'error' : undefined,\n disabled,\n variant:\n variant === 'checkbox-button' ? 'checkbox' : 'default',\n }}\n >\n {options}\n </ToggleButtonGroupContext.Provider>\n </FieldBlock>\n )\n }\n}\n\nexport function useCheckboxOrToggleOptions({\n id,\n path,\n variant = 'checkbox',\n info,\n warning,\n emptyValue,\n htmlAttributes,\n dataList,\n children,\n value,\n disabled,\n hasError,\n handleChange,\n}: {\n id: Props['id']\n path?: Props['path']\n variant?: Props['variant']\n info?: Props['info']\n warning?: Props['warning']\n emptyValue?: Props['emptyValue']\n htmlAttributes?: Props['htmlAttributes']\n dataList?: Props['data']\n children?: Props['children']\n value?: Props['value']\n disabled?: Props['disabled']\n hasError?: ReturnAdditional<Props['value']>['hasError']\n handleChange?: ReturnAdditional<Props['value']>['handleChange']\n}) {\n const { setFieldProps } = useContext(DataContext)\n const optionsCount = useMemo(\n () => React.Children.count(children) + (dataList?.length || 0),\n [dataList, children]\n )\n const collectedData = []\n\n const createOption = useCallback(\n (props: OptionProps, i: number) => {\n const {\n value: selected,\n error,\n title,\n help,\n className,\n children,\n ...rest\n } = props\n\n if (value?.includes(selected)) {\n collectedData.push(props)\n }\n\n const label = title ?? children\n const status = getStatus(error, info, warning)\n const suffix = help ? (\n <HelpButton size=\"small\" title={help.title}>\n {help.content}\n </HelpButton>\n ) : undefined\n const handleSelect = () => {\n const newValue = value?.includes(selected)\n ? value.filter((value) => value !== selected)\n : [...(value ?? []), selected]\n\n handleChange?.(\n newValue.length === 0 ? (emptyValue as typeof value) : newValue\n )\n }\n\n const Component = (\n variant === 'checkbox' ? Checkbox : ToggleButton\n ) as typeof Checkbox & typeof ToggleButton\n\n return (\n <Component\n id={optionsCount === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n className={classnames(\n `dnb-forms-field-array-selection__${\n variant === 'checkbox' ? 'checkbox' : 'button'\n }`,\n className\n )}\n label={variant === 'checkbox' ? label : undefined}\n text={variant !== 'checkbox' ? label : undefined}\n value={value}\n disabled={disabled}\n checked={value?.includes(selected)}\n status={(hasError || status) && 'error'}\n suffix={suffix}\n on_change={handleSelect}\n {...htmlAttributes}\n {...rest}\n />\n )\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n disabled,\n emptyValue,\n handleChange,\n hasError,\n htmlAttributes,\n id,\n info,\n optionsCount,\n value,\n variant,\n warning,\n ]\n )\n\n const result = [\n ...(dataList || []).map((props, i) =>\n createOption(props as OptionProps, i)\n ),\n ...(mapOptions(children, { createOption }) || []).filter(Boolean),\n ]\n\n if (path) {\n setFieldProps?.(path + '/arraySelectionData', collectedData)\n }\n\n return result\n}\n\nArraySelection._supportsSpacingProps = true\nexport default ArraySelection\n"],"mappings":";;;;;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAC/D,SAASC,QAAQ,EAAEC,UAAU,EAAEC,YAAY,QAAQ,wBAAwB;AAC3E,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,UAAU,MAAM,kBAAkB;AACzC,SAASC,aAAa,QAAQ,aAAa;AAG3C,SAASC,gBAAgB,QAAQ,mCAAmC;AACpE,SAASC,SAAS,EAAEC,UAAU,QAAc,cAAc;AAE1D,OAAOC,wBAAwB,MAAM,+DAA+D;AACpG,OAAOC,WAAW,MAAM,2BAA2B;AACnD,OAAOC,YAAY,MAAM,0BAA0B;AAgCnD,SAASC,cAAcA,CAACC,KAAY,EAAE;EACpC,MAAM;IACJC,EAAE;IACFC,IAAI;IACJC,QAAQ;IACRC,IAAI;IACJC,SAAS;IACTC,OAAO,GAAG,UAAU;IACpBC,MAAM,GAAG,UAAU;IACnBC,aAAa,GAAG,UAAU;IAC1BC,KAAK;IACLC,gBAAgB;IAChBC,KAAK;IACLC,KAAK;IACLC,QAAQ;IACRC,IAAI;IACJC,IAAI;IACJC,OAAO;IACPC,QAAQ;IACRC,UAAU;IACVC,cAAc;IACdC,YAAY;IACZC;EACF,CAAC,GAAG7B,aAAa,CAACQ,KAAK,CAAC;EAExB,MAAM;IAAEsB;EAAe,CAAC,GAAGxB,YAAY,CAAC,CAAC;EACzC,MAAMyB,QAAQ,GAAGpB,QAAQ,GAAGmB,cAAc,CAACnB,QAAQ,CAAC,GAAGC,IAAI;EAE3D,MAAMoB,eAAe,GAAAC,aAAA;IACnBC,KAAK,EAAEzB,EAAE;IACTI,SAAS,EAAEf,UAAU,6EAGjBgB,OAAO,KAAK,UAAU,GAAG,UAAU,GAAG,QAAQ,4CAELC,MAAM,oDACEC,aAAc,IACjEH,SACF,CAAC;IACDsB,gBAAgB,EAAE,0CAA0C;IAC5Db,IAAI;IACJC,IAAI;IACJC,OAAO;IACPJ,KAAK;IACLL,MAAM;IACNE,KAAK;IACLC,gBAAgB,EACd3B,KAAA,CAAA6C,aAAA,CAAA7C,KAAA,CAAA8C,QAAA,QACGnB,gBAAgB,EAChBI,IAAI,GACH/B,KAAA,CAAA6C,aAAA,CAACxC,UAAU;MACT0C,IAAI,EAAC,OAAO;MACZC,IAAI,EAAErB,gBAAgB,GAAG,SAAS,GAAG,KAAM;MAC3CsB,KAAK,EAAElB,IAAI,CAACkB;IAAM,GAEjBlB,IAAI,CAACmB,OACI,CAAC,GACXC,SACJ;EACH,GACEzC,gBAAgB,CAACO,KAAK,CAAC,CAC3B;EAED,MAAMmC,OAAO,GAAGC,0BAA0B,CAAC;IACzCnC,EAAE;IACFC,IAAI;IACJI,OAAO;IACPS,IAAI;IACJC,OAAO;IACPE,UAAU;IACVC,cAAc;IACdI,QAAQ;IACRF,QAAQ;IACRV,KAAK;IACLM,QAAQ;IACRG,YAAY;IACZP;EACF,CAAC,CAAC;EAEF,QAAQP,OAAO;IACb,KAAK,UAAU;MACb,OAAOvB,KAAA,CAAA6C,aAAA,CAACrC,UAAU,EAAKiC,eAAe,EAAGW,OAAoB,CAAC;IAChE;MACE,OACEpD,KAAA,CAAA6C,aAAA,CAACrC,UAAU,EAAKiC,eAAe,EAC7BzC,KAAA,CAAA6C,aAAA,CAAChC,wBAAwB,CAACyC,QAAQ;QAChC1B,KAAK,EAAE;UACL2B,MAAM,EAAEzB,QAAQ,GAAG,OAAO,GAAGqB,SAAS;UACtCjB,QAAQ;UACRX,OAAO,EACLA,OAAO,KAAK,iBAAiB,GAAG,UAAU,GAAG;QACjD;MAAE,GAED6B,OACgC,CACzB,CAAC;EAEnB;AACF;AAEA,OAAO,SAASC,0BAA0BA,CAAAG,IAAA,EA4BvC;EAAA,IA5BwC;IACzCtC,EAAE;IACFC,IAAI;IACJI,OAAO,GAAG,UAAU;IACpBS,IAAI;IACJC,OAAO;IACPE,UAAU;IACVC,cAAc;IACdI,QAAQ;IACRF,QAAQ;IACRV,KAAK;IACLM,QAAQ;IACRJ,QAAQ;IACRO;EAeF,CAAC,GAAAmB,IAAA;EACC,MAAM;IAAEC;EAAc,CAAC,GAAGvD,UAAU,CAACY,WAAW,CAAC;EACjD,MAAM4C,YAAY,GAAGvD,OAAO,CAC1B,MAAMH,KAAK,CAAC2D,QAAQ,CAACC,KAAK,CAACtB,QAAQ,CAAC,IAAI,CAAAE,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEqB,MAAM,KAAI,CAAC,CAAC,EAC9D,CAACrB,QAAQ,EAAEF,QAAQ,CACrB,CAAC;EACD,MAAMwB,aAAa,GAAG,EAAE;EAExB,MAAMC,YAAY,GAAG9D,WAAW,CAC9B,CAACgB,KAAkB,EAAE+C,CAAS,KAAK;IACjC,MAAM;QACJpC,KAAK,EAAEqC,QAAQ;QACfpC,KAAK;QACLoB,KAAK;QACLlB,IAAI;QACJT,SAAS;QACTgB;MAEF,CAAC,GAAGrB,KAAK;MADJiD,IAAI,GAAAC,wBAAA,CACLlD,KAAK,EAAAmD,SAAA;IAET,IAAIxC,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEyC,QAAQ,CAACJ,QAAQ,CAAC,EAAE;MAC7BH,aAAa,CAACQ,IAAI,CAACrD,KAAK,CAAC;IAC3B;IAEA,MAAMS,KAAK,GAAGuB,KAAK,aAALA,KAAK,cAALA,KAAK,GAAIX,QAAQ;IAC/B,MAAMiB,MAAM,GAAG5C,SAAS,CAACkB,KAAK,EAAEG,IAAI,EAAEC,OAAO,CAAC;IAC9C,MAAMsC,MAAM,GAAGxC,IAAI,GACjB/B,KAAA,CAAA6C,aAAA,CAACxC,UAAU;MAAC0C,IAAI,EAAC,OAAO;MAACE,KAAK,EAAElB,IAAI,CAACkB;IAAM,GACxClB,IAAI,CAACmB,OACI,CAAC,GACXC,SAAS;IACb,MAAMqB,YAAY,GAAGA,CAAA,KAAM;MACzB,MAAMC,QAAQ,GAAG7C,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEyC,QAAQ,CAACJ,QAAQ,CAAC,GACtCrC,KAAK,CAAC8C,MAAM,CAAE9C,KAAK,IAAKA,KAAK,KAAKqC,QAAQ,CAAC,GAC3C,CAAC,IAAIrC,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,EAAE,CAAC,EAAEqC,QAAQ,CAAC;MAEhC5B,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CACVoC,QAAQ,CAACZ,MAAM,KAAK,CAAC,GAAI1B,UAAU,GAAoBsC,QACzD,CAAC;IACH,CAAC;IAED,MAAME,SAAS,GACbpD,OAAO,KAAK,UAAU,GAAGnB,QAAQ,GAAGE,YACI;IAE1C,OACEN,KAAA,CAAA6C,aAAA,CAAC8B,SAAS,EAAAC,QAAA;MACR1D,EAAE,EAAEwC,YAAY,KAAK,CAAC,GAAGxC,EAAE,GAAGiC,SAAU;MACxC0B,GAAG,EAAG,UAASb,CAAE,IAAGpC,KAAM,EAAE;MAC5BN,SAAS,EAAEf,UAAU,CAClB,oCACCgB,OAAO,KAAK,UAAU,GAAG,UAAU,GAAG,QACvC,EAAC,EACFD,SACF,CAAE;MACFI,KAAK,EAAEH,OAAO,KAAK,UAAU,GAAGG,KAAK,GAAGyB,SAAU;MAClD2B,IAAI,EAAEvD,OAAO,KAAK,UAAU,GAAGG,KAAK,GAAGyB,SAAU;MACjDvB,KAAK,EAAEA,KAAM;MACbM,QAAQ,EAAEA,QAAS;MACnB6C,OAAO,EAAEnD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEyC,QAAQ,CAACJ,QAAQ,CAAE;MACnCV,MAAM,EAAE,CAACzB,QAAQ,IAAIyB,MAAM,KAAK,OAAQ;MACxCgB,MAAM,EAAEA,MAAO;MACfS,SAAS,EAAER;IAAa,GACpBpC,cAAc,EACd8B,IAAI,CACT,CAAC;EAEN,CAAC,EAED,CACEhC,QAAQ,EACRC,UAAU,EACVE,YAAY,EACZP,QAAQ,EACRM,cAAc,EACdlB,EAAE,EACFc,IAAI,EACJ0B,YAAY,EACZ9B,KAAK,EACLL,OAAO,EACPU,OAAO,CAEX,CAAC;EAED,MAAMgD,MAAM,GAAG,CACb,GAAG,CAACzC,QAAQ,IAAI,EAAE,EAAE0C,GAAG,CAAC,CAACjE,KAAK,EAAE+C,CAAC,KAC/BD,YAAY,CAAC9C,KAAK,EAAiB+C,CAAC,CACtC,CAAC,EACD,GAAG,CAACpD,UAAU,CAAC0B,QAAQ,EAAE;IAAEyB;EAAa,CAAC,CAAC,IAAI,EAAE,EAAEW,MAAM,CAACS,OAAO,CAAC,CAClE;EAED,IAAIhE,IAAI,EAAE;IACRsC,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAGtC,IAAI,GAAG,qBAAqB,EAAE2C,aAAa,CAAC;EAC9D;EAEA,OAAOmB,MAAM;AACf;AAEAjE,cAAc,CAACoE,qBAAqB,GAAG,IAAI;AAC3C,eAAepE,cAAc"}
@@ -15,6 +15,16 @@ export const arraySelectionProperties = {
15
15
  doc: 'For providing `<Field.Option>` components.',
16
16
  type: 'React.Node',
17
17
  status: 'optional'
18
+ },
19
+ data: {
20
+ doc: 'Data to be used for the component. The object needs to have a `value` and a `title` property. Provide the Dropdown or Autocomplete data in the format documented here: [Dropdown](/uilib/components/dropdown) and [Autocomplete](/uilib/components/autocomplete) documentation.',
21
+ type: 'array',
22
+ status: 'optional'
23
+ },
24
+ dataPath: {
25
+ doc: 'The path to the context data (Form.Handler). The context data object needs to have a `value` and a `title` property. The generated options will be placed above given JSX based children.',
26
+ type: 'string',
27
+ status: 'optional'
18
28
  }
19
29
  };
20
30
  //# sourceMappingURL=ArraySelectionDocs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArraySelectionDocs.js","names":["arraySelectionProperties","variant","doc","type","defaultValue","status","optionsLayout","children"],"sources":["../../../../../../src/extensions/forms/Field/ArraySelection/ArraySelectionDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const arraySelectionProperties: PropertiesTableProps = {\n variant: {\n doc: 'Choice of UI feature.',\n type: [`'checkbox'`, `'button'`, `'checkbox-button'`],\n defaultValue: `'checkbox'`,\n status: 'optional',\n },\n optionsLayout: {\n doc: 'Layout for the list of options.',\n type: [`'horizontal'`, `'vertical'`],\n defaultValue: `'vertical'`,\n status: 'optional',\n },\n children: {\n doc: 'For providing `<Field.Option>` components.',\n type: 'React.Node',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,wBAA8C,GAAG;EAC5DC,OAAO,EAAE;IACPC,GAAG,EAAE,uBAAuB;IAC5BC,IAAI,EAAE,CAAE,YAAW,EAAG,UAAS,EAAG,mBAAkB,CAAC;IACrDC,YAAY,EAAG,YAAW;IAC1BC,MAAM,EAAE;EACV,CAAC;EACDC,aAAa,EAAE;IACbJ,GAAG,EAAE,iCAAiC;IACtCC,IAAI,EAAE,CAAE,cAAa,EAAG,YAAW,CAAC;IACpCC,YAAY,EAAG,YAAW;IAC1BC,MAAM,EAAE;EACV,CAAC;EACDE,QAAQ,EAAE;IACRL,GAAG,EAAE,4CAA4C;IACjDC,IAAI,EAAE,YAAY;IAClBE,MAAM,EAAE;EACV;AACF,CAAC"}
1
+ {"version":3,"file":"ArraySelectionDocs.js","names":["arraySelectionProperties","variant","doc","type","defaultValue","status","optionsLayout","children","data","dataPath"],"sources":["../../../../../../src/extensions/forms/Field/ArraySelection/ArraySelectionDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const arraySelectionProperties: PropertiesTableProps = {\n variant: {\n doc: 'Choice of UI feature.',\n type: [`'checkbox'`, `'button'`, `'checkbox-button'`],\n defaultValue: `'checkbox'`,\n status: 'optional',\n },\n optionsLayout: {\n doc: 'Layout for the list of options.',\n type: [`'horizontal'`, `'vertical'`],\n defaultValue: `'vertical'`,\n status: 'optional',\n },\n children: {\n doc: 'For providing `<Field.Option>` components.',\n type: 'React.Node',\n status: 'optional',\n },\n data: {\n doc: 'Data to be used for the component. The object needs to have a `value` and a `title` property. Provide the Dropdown or Autocomplete data in the format documented here: [Dropdown](/uilib/components/dropdown) and [Autocomplete](/uilib/components/autocomplete) documentation.',\n type: 'array',\n status: 'optional',\n },\n dataPath: {\n doc: 'The path to the context data (Form.Handler). The context data object needs to have a `value` and a `title` property. The generated options will be placed above given JSX based children.',\n type: 'string',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,wBAA8C,GAAG;EAC5DC,OAAO,EAAE;IACPC,GAAG,EAAE,uBAAuB;IAC5BC,IAAI,EAAE,CAAE,YAAW,EAAG,UAAS,EAAG,mBAAkB,CAAC;IACrDC,YAAY,EAAG,YAAW;IAC1BC,MAAM,EAAE;EACV,CAAC;EACDC,aAAa,EAAE;IACbJ,GAAG,EAAE,iCAAiC;IACtCC,IAAI,EAAE,CAAE,cAAa,EAAG,YAAW,CAAC;IACpCC,YAAY,EAAG,YAAW;IAC1BC,MAAM,EAAE;EACV,CAAC;EACDE,QAAQ,EAAE;IACRL,GAAG,EAAE,4CAA4C;IACjDC,IAAI,EAAE,YAAY;IAClBE,MAAM,EAAE;EACV,CAAC;EACDG,IAAI,EAAE;IACJN,GAAG,EAAE,iRAAiR;IACtRC,IAAI,EAAE,OAAO;IACbE,MAAM,EAAE;EACV,CAAC;EACDI,QAAQ,EAAE;IACRP,GAAG,EAAE,2LAA2L;IAChMC,IAAI,EAAE,QAAQ;IACdE,MAAM,EAAE;EACV;AACF,CAAC"}
@@ -15,7 +15,7 @@ function Email(props) {
15
15
  label: translations.label,
16
16
  autoComplete: 'email',
17
17
  inputMode: 'email',
18
- pattern: "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$",
18
+ pattern: `^(?!.*\\.\\.)(?!.*--)(?!.*\\.-)(?!.*-\\.)` + `[a-zA-Z0-9]+([._%+-]?[a-zA-Z0-9]+)*@` + `(?:` + `([a-zA-Z0-9]+([.-]?[a-zA-Z0-9]+)*\\.[a-zA-Z]{2,})` + `|` + `\\[(?:` + `(?:\\d{1,3}\\.){3}\\d{1,3}` + `|` + `IPv6:[0-9a-fA-F:]+` + `)\\]` + `)$`,
19
19
  trim: true
20
20
  }, props), {}, {
21
21
  errorMessages
@@ -1 +1 @@
1
- {"version":3,"file":"Email.js","names":["React","StringField","useErrorMessage","useTranslation","Email","props","translations","errorMessages","path","required","errorRequired","pattern","errorPattern","StringFieldProps","_objectSpread","label","autoComplete","inputMode","trim","createElement","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Email/Email.tsx"],"sourcesContent":["import React from 'react'\nimport StringField, { Props as StringFieldProps } from '../String'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type Props = StringFieldProps\n\nfunction Email(props: Props) {\n const translations = useTranslation().Email\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.errorRequired,\n pattern: translations.errorPattern,\n })\n\n const StringFieldProps: Props = {\n label: translations.label,\n autoComplete: 'email',\n inputMode: 'email',\n pattern:\n \"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$\",\n trim: true,\n ...props,\n errorMessages,\n }\n\n return <StringField {...StringFieldProps} />\n}\n\nEmail._supportsSpacingProps = true\nexport default Email\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,WAAW,MAAqC,WAAW;AAClE,OAAOC,eAAe,MAAM,6BAA6B;AACzD,OAAOC,cAAc,MAAM,4BAA4B;AAIvD,SAASC,KAAKA,CAACC,KAAY,EAAE;EAC3B,MAAMC,YAAY,GAAGH,cAAc,CAAC,CAAC,CAACC,KAAK;EAE3C,MAAMG,aAAa,GAAGL,eAAe,CAACG,KAAK,CAACG,IAAI,EAAEH,KAAK,CAACE,aAAa,EAAE;IACrEE,QAAQ,EAAEH,YAAY,CAACI,aAAa;IACpCC,OAAO,EAAEL,YAAY,CAACM;EACxB,CAAC,CAAC;EAEF,MAAMC,gBAAuB,GAAAC,aAAA,CAAAA,aAAA;IAC3BC,KAAK,EAAET,YAAY,CAACS,KAAK;IACzBC,YAAY,EAAE,OAAO;IACrBC,SAAS,EAAE,OAAO;IAClBN,OAAO,EACL,qEAAqE;IACvEO,IAAI,EAAE;EAAI,GACPb,KAAK;IACRE;EAAa,EACd;EAED,OAAOP,KAAA,CAAAmB,aAAA,CAAClB,WAAW,EAAKY,gBAAmB,CAAC;AAC9C;AAEAT,KAAK,CAACgB,qBAAqB,GAAG,IAAI;AAClC,eAAehB,KAAK"}
1
+ {"version":3,"file":"Email.js","names":["React","StringField","useErrorMessage","useTranslation","Email","props","translations","errorMessages","path","required","errorRequired","pattern","errorPattern","StringFieldProps","_objectSpread","label","autoComplete","inputMode","trim","createElement","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Email/Email.tsx"],"sourcesContent":["import React from 'react'\nimport StringField, { Props as StringFieldProps } from '../String'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type Props = StringFieldProps\n\nfunction Email(props: Props) {\n const translations = useTranslation().Email\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.errorRequired,\n pattern: translations.errorPattern,\n })\n\n const StringFieldProps: Props = {\n label: translations.label,\n autoComplete: 'email',\n inputMode: 'email',\n pattern:\n `^(?!.*\\\\.\\\\.)(?!.*--)(?!.*\\\\.-)(?!.*-\\\\.)` + // No consecutive dots, hyphens, or dot-hyphen sequences\n `[a-zA-Z0-9]+([._%+-]?[a-zA-Z0-9]+)*@` + // Local part: letters, numbers, dots, etc.\n `(?:` +\n `([a-zA-Z0-9]+([.-]?[a-zA-Z0-9]+)*\\\\.[a-zA-Z]{2,})` + // Domain part: standard domain names\n `|` +\n `\\\\[(?:` +\n `(?:\\\\d{1,3}\\\\.){3}\\\\d{1,3}` + // Allow IPv4 address (no validation)\n `|` +\n `IPv6:[0-9a-fA-F:]+` + // Allow IPv6 address (no validation)\n `)\\\\]` +\n `)$`,\n trim: true,\n ...props,\n errorMessages,\n }\n\n return <StringField {...StringFieldProps} />\n}\n\nEmail._supportsSpacingProps = true\nexport default Email\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,WAAW,MAAqC,WAAW;AAClE,OAAOC,eAAe,MAAM,6BAA6B;AACzD,OAAOC,cAAc,MAAM,4BAA4B;AAIvD,SAASC,KAAKA,CAACC,KAAY,EAAE;EAC3B,MAAMC,YAAY,GAAGH,cAAc,CAAC,CAAC,CAACC,KAAK;EAE3C,MAAMG,aAAa,GAAGL,eAAe,CAACG,KAAK,CAACG,IAAI,EAAEH,KAAK,CAACE,aAAa,EAAE;IACrEE,QAAQ,EAAEH,YAAY,CAACI,aAAa;IACpCC,OAAO,EAAEL,YAAY,CAACM;EACxB,CAAC,CAAC;EAEF,MAAMC,gBAAuB,GAAAC,aAAA,CAAAA,aAAA;IAC3BC,KAAK,EAAET,YAAY,CAACS,KAAK;IACzBC,YAAY,EAAE,OAAO;IACrBC,SAAS,EAAE,OAAO;IAClBN,OAAO,EACJ,2CAA0C,GAC1C,sCAAqC,GACrC,KAAI,GACJ,mDAAkD,GAClD,GAAE,GACF,QAAO,GACP,4BAA2B,GAC3B,GAAE,GACF,oBAAmB,GACnB,MAAK,GACL,IAAG;IACNO,IAAI,EAAE;EAAI,GACPb,KAAK;IACRE;EAAa,EACd;EAED,OAAOP,KAAA,CAAAmB,aAAA,CAAClB,WAAW,EAAKY,gBAAmB,CAAC;AAC9C;AAEAT,KAAK,CAACgB,qBAAqB,GAAG,IAAI;AAClC,eAAehB,KAAK"}
@@ -1,12 +1,13 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
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
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 React, { useMemo } from 'react';
4
+ import React, { useCallback, useMemo } from 'react';
5
5
  import StringField from '../String';
6
+ import { dnr, fnr } from '@navikt/fnrvalidator';
6
7
  import useErrorMessage from '../../hooks/useErrorMessage';
7
8
  import useTranslation from '../../hooks/useTranslation';
8
9
  function NationalIdentityNumber(props) {
9
- var _props$pattern, _props$label, _props$width;
10
+ var _props$label, _props$width;
10
11
  const translations = useTranslation().NationalIdentityNumber;
11
12
  const errorMessage = translations.errorRequired;
12
13
  const {
@@ -18,13 +19,31 @@ function NationalIdentityNumber(props) {
18
19
  pattern: errorMessage
19
20
  });
20
21
  const mask = useMemo(() => omitMask ? Array(11).fill(/\d/) : [/\d/, /\d/, /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, /\d/], [omitMask]);
22
+ const validationPattern = '^[0-9]{11}$';
23
+ const fnrValidator = useCallback(value => {
24
+ if (new RegExp(validationPattern).test(value) && fnr(value).status === 'invalid') {
25
+ return Error(translations.errorFnr);
26
+ }
27
+ return undefined;
28
+ }, [translations.errorFnr]);
29
+ const dnrValidator = useCallback(value => {
30
+ const validationPattern = '^[4-7]([0-9]{10}$)';
31
+ if (new RegExp(validationPattern).test(value) && dnr(value).status === 'invalid') {
32
+ return Error(translations.errorDnr);
33
+ }
34
+ return undefined;
35
+ }, [translations.errorDnr]);
36
+ const dnrAndFnrValidator = useCallback(value => {
37
+ return dnrValidator(value) || fnrValidator(value);
38
+ }, [dnrValidator, fnrValidator]);
21
39
  const StringFieldProps = _objectSpread(_objectSpread({}, props), {}, {
22
- pattern: (_props$pattern = props.pattern) !== null && _props$pattern !== void 0 ? _props$pattern : validate && !props.validator ? '^[0-9]{11}$' : undefined,
40
+ pattern: validate && props.pattern ? props.pattern : validate && !props.validator ? validationPattern : undefined,
23
41
  label: (_props$label = props.label) !== null && _props$label !== void 0 ? _props$label : translations.label,
24
42
  errorMessages,
25
43
  mask,
26
44
  width: (_props$width = props.width) !== null && _props$width !== void 0 ? _props$width : 'medium',
27
- inputMode: 'numeric'
45
+ inputMode: 'numeric',
46
+ validator: validate ? props.validator || dnrAndFnrValidator : undefined
28
47
  });
29
48
  return React.createElement(StringField, StringFieldProps);
30
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NationalIdentityNumber.js","names":["React","useMemo","StringField","useErrorMessage","useTranslation","NationalIdentityNumber","props","_props$pattern","_props$label","_props$width","translations","errorMessage","errorRequired","validate","omitMask","errorMessages","path","required","pattern","mask","Array","fill","StringFieldProps","_objectSpread","validator","undefined","label","width","inputMode","createElement","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.tsx"],"sourcesContent":["import React, { useMemo } from 'react'\nimport StringField, { Props as StringFieldProps } from '../String'\n\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type Props = StringFieldProps & {\n omitMask?: boolean\n validate?: boolean\n}\n\nfunction NationalIdentityNumber(props: Props) {\n const translations = useTranslation().NationalIdentityNumber\n const errorMessage = translations.errorRequired\n\n const { validate = true, omitMask } = props\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: errorMessage,\n pattern: errorMessage,\n })\n\n const mask = useMemo(\n () =>\n omitMask\n ? Array(11).fill(/\\d/)\n : [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ],\n [omitMask]\n )\n\n const StringFieldProps: Props = {\n ...props,\n pattern:\n props.pattern ??\n (validate && !props.validator ? '^[0-9]{11}$' : undefined),\n label: props.label ?? translations.label,\n errorMessages,\n mask,\n width: props.width ?? 'medium',\n inputMode: 'numeric',\n }\n\n return <StringField {...StringFieldProps} />\n}\n\nNationalIdentityNumber._supportsSpacingProps = true\nexport default NationalIdentityNumber\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,OAAOC,WAAW,MAAqC,WAAW;AAElE,OAAOC,eAAe,MAAM,6BAA6B;AACzD,OAAOC,cAAc,MAAM,4BAA4B;AAOvD,SAASC,sBAAsBA,CAACC,KAAY,EAAE;EAAA,IAAAC,cAAA,EAAAC,YAAA,EAAAC,YAAA;EAC5C,MAAMC,YAAY,GAAGN,cAAc,CAAC,CAAC,CAACC,sBAAsB;EAC5D,MAAMM,YAAY,GAAGD,YAAY,CAACE,aAAa;EAE/C,MAAM;IAAEC,QAAQ,GAAG,IAAI;IAAEC;EAAS,CAAC,GAAGR,KAAK;EAE3C,MAAMS,aAAa,GAAGZ,eAAe,CAACG,KAAK,CAACU,IAAI,EAAEV,KAAK,CAACS,aAAa,EAAE;IACrEE,QAAQ,EAAEN,YAAY;IACtBO,OAAO,EAAEP;EACX,CAAC,CAAC;EAEF,MAAMQ,IAAI,GAAGlB,OAAO,CAClB,MACEa,QAAQ,GACJM,KAAK,CAAC,EAAE,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,GACpB,CACE,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,EACP,CAACP,QAAQ,CACX,CAAC;EAED,MAAMQ,gBAAuB,GAAAC,aAAA,CAAAA,aAAA,KACxBjB,KAAK;IACRY,OAAO,GAAAX,cAAA,GACLD,KAAK,CAACY,OAAO,cAAAX,cAAA,cAAAA,cAAA,GACZM,QAAQ,IAAI,CAACP,KAAK,CAACkB,SAAS,GAAG,aAAa,GAAGC,SAAU;IAC5DC,KAAK,GAAAlB,YAAA,GAAEF,KAAK,CAACoB,KAAK,cAAAlB,YAAA,cAAAA,YAAA,GAAIE,YAAY,CAACgB,KAAK;IACxCX,aAAa;IACbI,IAAI;IACJQ,KAAK,GAAAlB,YAAA,GAAEH,KAAK,CAACqB,KAAK,cAAAlB,YAAA,cAAAA,YAAA,GAAI,QAAQ;IAC9BmB,SAAS,EAAE;EAAS,EACrB;EAED,OAAO5B,KAAA,CAAA6B,aAAA,CAAC3B,WAAW,EAAKoB,gBAAmB,CAAC;AAC9C;AAEAjB,sBAAsB,CAACyB,qBAAqB,GAAG,IAAI;AACnD,eAAezB,sBAAsB"}
1
+ {"version":3,"file":"NationalIdentityNumber.js","names":["React","useCallback","useMemo","StringField","dnr","fnr","useErrorMessage","useTranslation","NationalIdentityNumber","props","_props$label","_props$width","translations","errorMessage","errorRequired","validate","omitMask","errorMessages","path","required","pattern","mask","Array","fill","validationPattern","fnrValidator","value","RegExp","test","status","Error","errorFnr","undefined","dnrValidator","errorDnr","dnrAndFnrValidator","StringFieldProps","_objectSpread","validator","label","width","inputMode","createElement","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react'\nimport StringField, { Props as StringFieldProps } from '../String'\nimport { dnr, fnr } from '@navikt/fnrvalidator'\n\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type Props = StringFieldProps & {\n omitMask?: boolean\n validate?: boolean\n}\n\nfunction NationalIdentityNumber(props: Props) {\n const translations = useTranslation().NationalIdentityNumber\n const errorMessage = translations.errorRequired\n\n const { validate = true, omitMask } = props\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: errorMessage,\n pattern: errorMessage,\n })\n\n const mask = useMemo(\n () =>\n omitMask\n ? Array(11).fill(/\\d/)\n : [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ],\n [omitMask]\n )\n const validationPattern = '^[0-9]{11}$'\n\n const fnrValidator = useCallback(\n (value: string) => {\n if (\n new RegExp(validationPattern).test(value) &&\n fnr(value).status === 'invalid'\n ) {\n return Error(translations.errorFnr)\n }\n return undefined\n },\n [translations.errorFnr]\n )\n\n const dnrValidator = useCallback(\n (value: string) => {\n const validationPattern = '^[4-7]([0-9]{10}$)' // 1st num is increased by 4. i.e, if 01.01.1985, D number would be 410185.\n if (\n new RegExp(validationPattern).test(value) &&\n dnr(value).status === 'invalid'\n ) {\n return Error(translations.errorDnr)\n }\n return undefined\n },\n [translations.errorDnr]\n )\n\n const dnrAndFnrValidator = useCallback(\n (value: string) => {\n return dnrValidator(value) || fnrValidator(value)\n },\n [dnrValidator, fnrValidator]\n )\n\n const StringFieldProps: Props = {\n ...props,\n pattern:\n validate && props.pattern\n ? props.pattern\n : validate && !props.validator\n ? validationPattern\n : undefined,\n label: props.label ?? translations.label,\n errorMessages,\n mask,\n width: props.width ?? 'medium',\n inputMode: 'numeric',\n validator: validate\n ? props.validator || dnrAndFnrValidator\n : undefined,\n }\n\n return <StringField {...StringFieldProps} />\n}\n\nNationalIdentityNumber._supportsSpacingProps = true\nexport default NationalIdentityNumber\n"],"mappings":"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"}
@@ -21,8 +21,8 @@ export type Props = FieldHelpProps & FieldProps<number, undefined | number, Erro
21
21
  decimalLimit?: number;
22
22
  allowNegative?: boolean;
23
23
  disallowLeadingZeroes?: boolean;
24
- prefix?: string;
25
- suffix?: string;
24
+ prefix?: string | ((value: number) => string);
25
+ suffix?: string | ((value: number) => string);
26
26
  minimum?: number;
27
27
  maximum?: number;
28
28
  exclusiveMinimum?: number;
@@ -33,8 +33,8 @@ function NumberComponent(props) {
33
33
  decimalLimit = 12,
34
34
  allowNegative = true,
35
35
  disallowLeadingZeroes = false,
36
- prefix,
37
- suffix,
36
+ prefix: prefixProp,
37
+ suffix: suffixProp,
38
38
  showStepControls
39
39
  } = props;
40
40
  const errorMessages = useErrorMessage(props.path, props.errorMessages, {
@@ -72,35 +72,6 @@ function NumberComponent(props) {
72
72
  }
73
73
  return numberValue;
74
74
  }, [props.emptyValue]);
75
- const maskProps = useMemo(() => {
76
- const mask_options = {
77
- prefix,
78
- suffix,
79
- decimalLimit,
80
- allowNegative,
81
- disallowLeadingZeroes
82
- };
83
- if (currency) {
84
- return {
85
- as_currency: currency,
86
- mask_options,
87
- currency_mask: {
88
- currencyDisplay
89
- }
90
- };
91
- }
92
- if (percent) {
93
- return {
94
- as_percent: percent,
95
- mask_options
96
- };
97
- }
98
- return {
99
- as_number: true,
100
- mask,
101
- number_mask: _objectSpread({}, mask_options)
102
- };
103
- }, [currency, currencyDisplay, decimalLimit, mask, percent, prefix, suffix, allowNegative, disallowLeadingZeroes]);
104
75
  const preparedProps = _objectSpread(_objectSpread({
105
76
  valueType: 'number'
106
77
  }, props), {}, {
@@ -214,6 +185,37 @@ function NumberComponent(props) {
214
185
  onClick: decreaseClickHandler,
215
186
  title: sharedContext === null || sharedContext === void 0 ? void 0 : (_sharedContext$transl2 = sharedContext.translation.Slider.subtractTitle) === null || _sharedContext$transl2 === void 0 ? void 0 : _sharedContext$transl2.replace('%s', String(value - step))
216
187
  });
188
+ const prefix = typeof prefixProp === 'function' ? prefixProp(value) : prefixProp;
189
+ const suffix = typeof suffixProp === 'function' ? suffixProp(value) : suffixProp;
190
+ const maskProps = useMemo(() => {
191
+ const mask_options = {
192
+ prefix,
193
+ suffix,
194
+ decimalLimit,
195
+ allowNegative,
196
+ disallowLeadingZeroes
197
+ };
198
+ if (currency) {
199
+ return {
200
+ as_currency: currency,
201
+ mask_options,
202
+ currency_mask: {
203
+ currencyDisplay
204
+ }
205
+ };
206
+ }
207
+ if (percent) {
208
+ return {
209
+ as_percent: percent,
210
+ mask_options
211
+ };
212
+ }
213
+ return {
214
+ as_number: true,
215
+ mask,
216
+ number_mask: _objectSpread({}, mask_options)
217
+ };
218
+ }, [currency, currencyDisplay, decimalLimit, mask, percent, prefix, suffix, allowNegative, disallowLeadingZeroes]);
217
219
  const ariaParams = showStepControls && {
218
220
  role: 'spinbutton',
219
221
  'aria-valuemin': String(minimum),
@@ -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","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
+ {"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","prefixProp","suffix","suffixProp","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","preparedProps","_objectSpread","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","maskProps","mask_options","as_currency","currency_mask","as_percent","as_number","number_mask","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 | ((value: number) => string)\n suffix?: string | ((value: number) => 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: prefixProp,\n suffix: suffixProp,\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 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 prefix =\n typeof prefixProp === 'function' ? prefixProp(value) : prefixProp\n const suffix =\n typeof suffixProp === 'function' ? suffixProp(value) : suffixProp\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 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 +1,3 @@
1
- export declare const selectCountryGeneralEvents: import("../../../../shared/types").PropertiesTableProps;
1
+ import { PropertiesTableProps } from '../../../../shared/types';
2
+ export declare const SelectCountryProperties: PropertiesTableProps;
3
+ export declare const SelectCountryGeneralEvents: PropertiesTableProps;
@@ -1,5 +1,12 @@
1
1
  import { getFieldEventsWithTypes } from '../FieldDocs';
2
- export const selectCountryGeneralEvents = getFieldEventsWithTypes({
2
+ export const SelectCountryProperties = {
3
+ countries: {
4
+ doc: 'List only a certain set of countries: `Scandinavia`, `Nordic`, `Europe` or `Prioritized`(all countries [sorted by priority](/uilib/extensions/forms/feature-fields/SelectCountry/#filter-or-prioritize-country-listing)). Defaults to `Prioritized`.',
5
+ type: 'string',
6
+ status: 'optional'
7
+ }
8
+ };
9
+ export const SelectCountryGeneralEvents = getFieldEventsWithTypes({
3
10
  type: 'string',
4
11
  optional: true
5
12
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"SelectCountryDocs.js","names":["getFieldEventsWithTypes","selectCountryGeneralEvents","type","optional"],"sources":["../../../../../../src/extensions/forms/Field/SelectCountry/SelectCountryDocs.ts"],"sourcesContent":["import { getFieldEventsWithTypes } from '../FieldDocs'\n\nexport const selectCountryGeneralEvents = getFieldEventsWithTypes(\n { type: 'string', optional: true },\n { type: 'object', optional: true }\n)\n"],"mappings":"AAAA,SAASA,uBAAuB,QAAQ,cAAc;AAEtD,OAAO,MAAMC,0BAA0B,GAAGD,uBAAuB,CAC/D;EAAEE,IAAI,EAAE,QAAQ;EAAEC,QAAQ,EAAE;AAAK,CAAC,EAClC;EAAED,IAAI,EAAE,QAAQ;EAAEC,QAAQ,EAAE;AAAK,CACnC,CAAC"}
1
+ {"version":3,"file":"SelectCountryDocs.js","names":["getFieldEventsWithTypes","SelectCountryProperties","countries","doc","type","status","SelectCountryGeneralEvents","optional"],"sources":["../../../../../../src/extensions/forms/Field/SelectCountry/SelectCountryDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\nimport { getFieldEventsWithTypes } from '../FieldDocs'\n\nexport const SelectCountryProperties: PropertiesTableProps = {\n countries: {\n doc: 'List only a certain set of countries: `Scandinavia`, `Nordic`, `Europe` or `Prioritized`(all countries [sorted by priority](/uilib/extensions/forms/feature-fields/SelectCountry/#filter-or-prioritize-country-listing)). Defaults to `Prioritized`.',\n type: 'string',\n status: 'optional',\n },\n}\n\nexport const SelectCountryGeneralEvents = getFieldEventsWithTypes(\n { type: 'string', optional: true },\n { type: 'object', optional: true }\n)\n"],"mappings":"AACA,SAASA,uBAAuB,QAAQ,cAAc;AAEtD,OAAO,MAAMC,uBAA6C,GAAG;EAC3DC,SAAS,EAAE;IACTC,GAAG,EAAE,sPAAsP;IAC3PC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMC,0BAA0B,GAAGN,uBAAuB,CAC/D;EAAEI,IAAI,EAAE,QAAQ;EAAEG,QAAQ,EAAE;AAAK,CAAC,EAClC;EAAEH,IAAI,EAAE,QAAQ;EAAEG,QAAQ,EAAE;AAAK,CACnC,CAAC"}
@@ -32,7 +32,7 @@ export type Props = FieldHelpProps & FieldProps<IOption['value']> & {
32
32
  optionsLayout?: 'horizontal' | 'vertical';
33
33
  /**
34
34
  * The path to the context data (Form.Handler).
35
- * The object needs to have a `value` and a `title` property.
35
+ * The context data object needs to have a `value` and a `title` property.
36
36
  */
37
37
  dataPath?: Path;
38
38
  /**