@dnb/eufemia 10.28.0 → 10.29.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 (651) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/cjs/components/aria-live/useAriaLive.d.ts +1 -1
  3. package/cjs/components/autocomplete/Autocomplete.d.ts +19 -5
  4. package/cjs/components/dropdown/Dropdown.d.ts +22 -5
  5. package/cjs/components/height-animation/HeightAnimationInstance.js +5 -0
  6. package/cjs/components/height-animation/HeightAnimationInstance.js.map +1 -1
  7. package/cjs/components/icon/style/dnb-icon.css +1 -0
  8. package/cjs/components/icon/style/dnb-icon.min.css +1 -1
  9. package/cjs/components/icon/style/dnb-icon.scss +1 -0
  10. package/cjs/components/progress-indicator/ProgressIndicator.d.ts +2 -52
  11. package/cjs/components/progress-indicator/ProgressIndicator.js +27 -14
  12. package/cjs/components/progress-indicator/ProgressIndicator.js.map +1 -1
  13. package/cjs/components/progress-indicator/ProgressIndicatorCircular.d.ts +2 -23
  14. package/cjs/components/progress-indicator/ProgressIndicatorCircular.js +63 -27
  15. package/cjs/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
  16. package/cjs/components/progress-indicator/ProgressIndicatorDocs.d.ts +1 -0
  17. package/cjs/components/progress-indicator/ProgressIndicatorDocs.js +45 -11
  18. package/cjs/components/progress-indicator/ProgressIndicatorDocs.js.map +1 -1
  19. package/cjs/components/progress-indicator/ProgressIndicatorLinear.d.ts +2 -22
  20. package/cjs/components/progress-indicator/ProgressIndicatorLinear.js +18 -10
  21. package/cjs/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
  22. package/cjs/components/progress-indicator/style/dnb-progress-indicator.css +52 -55
  23. package/cjs/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
  24. package/cjs/components/progress-indicator/style/dnb-progress-indicator.scss +65 -69
  25. package/cjs/components/progress-indicator/types.d.ts +95 -0
  26. package/cjs/components/progress-indicator/types.js +11 -0
  27. package/cjs/components/progress-indicator/types.js.map +1 -0
  28. package/cjs/extensions/forms/DataContext/Context.d.ts +5 -1
  29. package/cjs/extensions/forms/DataContext/Context.js +0 -1
  30. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  31. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +17 -5
  32. package/cjs/extensions/forms/DataContext/Provider/Provider.js +60 -30
  33. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  34. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +12 -2
  35. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  36. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +1 -1
  37. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  38. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +5 -2
  39. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  40. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +5 -2
  41. package/cjs/extensions/forms/Field/Name/Name.d.ts +10 -0
  42. package/cjs/extensions/forms/Field/Name/Name.js +73 -0
  43. package/cjs/extensions/forms/Field/Name/Name.js.map +1 -0
  44. package/cjs/extensions/forms/Field/Name/NameDocs.d.ts +2 -0
  45. package/cjs/extensions/forms/Field/Name/NameDocs.js +15 -0
  46. package/cjs/extensions/forms/Field/Name/NameDocs.js.map +1 -0
  47. package/cjs/extensions/forms/Field/Name/index.d.ts +2 -0
  48. package/cjs/extensions/forms/Field/Name/index.js +27 -0
  49. package/cjs/extensions/forms/Field/Name/index.js.map +1 -0
  50. package/cjs/extensions/forms/Field/Number/Number.d.ts +2 -2
  51. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  52. package/cjs/extensions/forms/Field/Option/Option.d.ts +2 -0
  53. package/cjs/extensions/forms/Field/Option/Option.js +21 -0
  54. package/cjs/extensions/forms/Field/Option/Option.js.map +1 -1
  55. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  56. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js +25 -0
  57. package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  58. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
  59. package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  60. package/cjs/extensions/forms/Field/Selection/Selection.d.ts +11 -4
  61. package/cjs/extensions/forms/Field/Selection/Selection.js +20 -32
  62. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  63. package/cjs/extensions/forms/Field/Selection/SelectionDocs.d.ts +2 -0
  64. package/cjs/extensions/forms/Field/Selection/SelectionDocs.js +45 -0
  65. package/cjs/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -0
  66. package/cjs/extensions/forms/Field/String/String.d.ts +2 -2
  67. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  68. package/cjs/extensions/forms/Field/index.d.ts +1 -0
  69. package/cjs/extensions/forms/Field/index.js +7 -0
  70. package/cjs/extensions/forms/Field/index.js.map +1 -1
  71. package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +3 -3
  72. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  73. package/cjs/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  74. package/cjs/extensions/forms/Form/Handler/Handler.js +8 -2
  75. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  76. package/cjs/extensions/forms/Form/MainHeading/MainHeading.js +1 -1
  77. package/cjs/extensions/forms/Form/MainHeading/MainHeading.js.map +1 -1
  78. package/cjs/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.css +3 -3
  79. package/cjs/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.min.css +1 -1
  80. package/cjs/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.scss +1 -1
  81. package/cjs/extensions/forms/Form/SubHeading/SubHeading.js +1 -1
  82. package/cjs/extensions/forms/Form/SubHeading/SubHeading.js.map +1 -1
  83. package/cjs/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.css +2 -2
  84. package/cjs/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.min.css +1 -1
  85. package/cjs/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.scss +1 -1
  86. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +2 -2
  87. package/cjs/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -1
  88. package/cjs/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.css +13 -13
  89. package/cjs/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.min.css +1 -1
  90. package/cjs/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.scss +1 -1
  91. package/cjs/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +4 -4
  92. package/cjs/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
  93. package/cjs/extensions/forms/Iterate/Array/Array.js +2 -2
  94. package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
  95. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js +1 -1
  96. package/cjs/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  97. package/cjs/extensions/forms/Iterate/PushButton/PushButton.js +1 -1
  98. package/cjs/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  99. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js +1 -1
  100. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  101. package/cjs/extensions/forms/Iterate/Toolbar/Toolbar.js +1 -1
  102. package/cjs/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  103. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js +1 -1
  104. package/cjs/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  105. package/cjs/extensions/forms/Iterate/style/dnb-form-iterate.css +14 -14
  106. package/cjs/extensions/forms/Iterate/style/dnb-form-iterate.min.css +1 -1
  107. package/cjs/extensions/forms/Iterate/style/dnb-form-iterate.scss +1 -1
  108. package/cjs/extensions/forms/Value/Boolean/Boolean.js +8 -3
  109. package/cjs/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
  110. package/cjs/extensions/forms/Value/Name/Name.d.ts +10 -0
  111. package/cjs/extensions/forms/Value/Name/Name.js +50 -0
  112. package/cjs/extensions/forms/Value/Name/Name.js.map +1 -0
  113. package/cjs/extensions/forms/Value/Name/index.d.ts +2 -0
  114. package/cjs/extensions/forms/Value/Name/index.js +27 -0
  115. package/cjs/extensions/forms/Value/Name/index.js.map +1 -0
  116. package/cjs/extensions/forms/Value/OrganizationNumber/OrganizationNumber.d.ts +7 -0
  117. package/cjs/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js +36 -0
  118. package/cjs/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js.map +1 -0
  119. package/cjs/extensions/forms/Value/OrganizationNumber/index.d.ts +2 -0
  120. package/cjs/extensions/forms/Value/OrganizationNumber/index.js +27 -0
  121. package/cjs/extensions/forms/Value/OrganizationNumber/index.js.map +1 -0
  122. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.d.ts +7 -0
  123. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js +41 -0
  124. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -0
  125. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  126. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js +20 -0
  127. package/cjs/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  128. package/cjs/extensions/forms/Value/PostalCodeAndCity/index.d.ts +2 -0
  129. package/cjs/extensions/forms/Value/PostalCodeAndCity/index.js +27 -0
  130. package/cjs/extensions/forms/Value/PostalCodeAndCity/index.js.map +1 -0
  131. package/cjs/extensions/forms/Value/String/String.js +8 -3
  132. package/cjs/extensions/forms/Value/String/String.js.map +1 -1
  133. package/cjs/extensions/forms/Value/SummaryList/SummaryList.js +1 -1
  134. package/cjs/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -1
  135. package/cjs/extensions/forms/Value/ValueDocs.js +6 -1
  136. package/cjs/extensions/forms/Value/ValueDocs.js.map +1 -1
  137. package/cjs/extensions/forms/Value/index.d.ts +3 -0
  138. package/cjs/extensions/forms/Value/index.js +21 -0
  139. package/cjs/extensions/forms/Value/index.js.map +1 -1
  140. package/cjs/extensions/forms/ValueBlock/ValueBlock.js +2 -1
  141. package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  142. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.css +11 -6
  143. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  144. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.scss +11 -3
  145. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +17 -52
  146. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  147. package/cjs/extensions/forms/Wizard/Container/useHandleLayoutEffect.d.ts +9 -0
  148. package/cjs/extensions/forms/Wizard/Container/useHandleLayoutEffect.js +53 -0
  149. package/cjs/extensions/forms/Wizard/Container/useHandleLayoutEffect.js.map +1 -0
  150. package/cjs/extensions/forms/Wizard/Container/useStepAnimation.d.ts +4 -0
  151. package/cjs/extensions/forms/Wizard/Container/useStepAnimation.js +37 -0
  152. package/cjs/extensions/forms/Wizard/Container/useStepAnimation.js.map +1 -0
  153. package/cjs/extensions/forms/Wizard/Step/Step.js +13 -1
  154. package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -1
  155. package/cjs/extensions/forms/Wizard/hooks/useStep.js +5 -2
  156. package/cjs/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  157. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.css +29 -2
  158. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  159. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.scss +35 -2
  160. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +9 -0
  161. package/cjs/extensions/forms/constants/locales/en-GB.js +12 -3
  162. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  163. package/cjs/extensions/forms/constants/locales/en-US.d.ts +9 -0
  164. package/cjs/extensions/forms/constants/locales/index.d.ts +18 -0
  165. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +9 -0
  166. package/cjs/extensions/forms/constants/locales/nb-NO.js +11 -2
  167. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  168. package/cjs/extensions/forms/style/dnb-forms.css +77 -43
  169. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  170. package/cjs/extensions/forms/types.d.ts +3 -2
  171. package/cjs/extensions/forms/types.js.map +1 -1
  172. package/cjs/fragments/drawer-list/DrawerList.d.ts +8 -4
  173. package/cjs/shared/Context.d.ts +2 -4
  174. package/cjs/shared/Context.js.map +1 -1
  175. package/cjs/shared/Eufemia.d.ts +1 -1
  176. package/cjs/shared/Eufemia.js +2 -2
  177. package/cjs/shared/Eufemia.js.map +1 -1
  178. package/cjs/shared/component-helper.js +1 -1
  179. package/cjs/shared/component-helper.js.map +1 -1
  180. package/cjs/style/core/scopes.scss +1 -1
  181. package/cjs/style/dnb-ui-basis.css +1 -1
  182. package/cjs/style/dnb-ui-basis.min.css +1 -1
  183. package/cjs/style/dnb-ui-body.css +1 -1
  184. package/cjs/style/dnb-ui-body.min.css +1 -1
  185. package/cjs/style/dnb-ui-components.css +129 -98
  186. package/cjs/style/dnb-ui-components.min.css +2 -2
  187. package/cjs/style/dnb-ui-core.css +1 -1
  188. package/cjs/style/dnb-ui-core.min.css +1 -1
  189. package/cjs/style/dnb-ui-extensions.css +77 -43
  190. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  191. package/cjs/style/dnb-ui-forms.css +77 -43
  192. package/cjs/style/dnb-ui-forms.min.css +1 -1
  193. package/cjs/style/dnb-ui-forms.scss +1 -1
  194. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +205 -141
  195. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  196. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +77 -43
  197. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  198. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +77 -43
  199. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  200. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +205 -141
  201. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  202. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +77 -43
  203. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  204. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +77 -43
  205. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  206. package/cjs/style/themes/theme-ui/ui-theme-components.css +205 -141
  207. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  208. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +77 -43
  209. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  210. package/cjs/style/themes/theme-ui/ui-theme-forms.css +77 -43
  211. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  212. package/components/aria-live/useAriaLive.d.ts +1 -1
  213. package/components/autocomplete/Autocomplete.d.ts +19 -5
  214. package/components/dropdown/Dropdown.d.ts +22 -5
  215. package/components/height-animation/HeightAnimationInstance.js +5 -0
  216. package/components/height-animation/HeightAnimationInstance.js.map +1 -1
  217. package/components/icon/style/dnb-icon.css +1 -0
  218. package/components/icon/style/dnb-icon.min.css +1 -1
  219. package/components/icon/style/dnb-icon.scss +1 -0
  220. package/components/progress-indicator/ProgressIndicator.d.ts +2 -52
  221. package/components/progress-indicator/ProgressIndicator.js +27 -14
  222. package/components/progress-indicator/ProgressIndicator.js.map +1 -1
  223. package/components/progress-indicator/ProgressIndicatorCircular.d.ts +2 -23
  224. package/components/progress-indicator/ProgressIndicatorCircular.js +63 -27
  225. package/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
  226. package/components/progress-indicator/ProgressIndicatorDocs.d.ts +1 -0
  227. package/components/progress-indicator/ProgressIndicatorDocs.js +43 -10
  228. package/components/progress-indicator/ProgressIndicatorDocs.js.map +1 -1
  229. package/components/progress-indicator/ProgressIndicatorLinear.d.ts +2 -22
  230. package/components/progress-indicator/ProgressIndicatorLinear.js +18 -10
  231. package/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
  232. package/components/progress-indicator/style/dnb-progress-indicator.css +52 -55
  233. package/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
  234. package/components/progress-indicator/style/dnb-progress-indicator.scss +65 -69
  235. package/components/progress-indicator/types.d.ts +95 -0
  236. package/components/progress-indicator/types.js +5 -0
  237. package/components/progress-indicator/types.js.map +1 -0
  238. package/es/components/aria-live/useAriaLive.d.ts +1 -1
  239. package/es/components/autocomplete/Autocomplete.d.ts +19 -5
  240. package/es/components/dropdown/Dropdown.d.ts +22 -5
  241. package/es/components/height-animation/HeightAnimationInstance.js +5 -0
  242. package/es/components/height-animation/HeightAnimationInstance.js.map +1 -1
  243. package/es/components/icon/style/dnb-icon.css +1 -0
  244. package/es/components/icon/style/dnb-icon.min.css +1 -1
  245. package/es/components/icon/style/dnb-icon.scss +1 -0
  246. package/es/components/progress-indicator/ProgressIndicator.d.ts +2 -52
  247. package/es/components/progress-indicator/ProgressIndicator.js +27 -14
  248. package/es/components/progress-indicator/ProgressIndicator.js.map +1 -1
  249. package/es/components/progress-indicator/ProgressIndicatorCircular.d.ts +2 -23
  250. package/es/components/progress-indicator/ProgressIndicatorCircular.js +62 -27
  251. package/es/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
  252. package/es/components/progress-indicator/ProgressIndicatorDocs.d.ts +1 -0
  253. package/es/components/progress-indicator/ProgressIndicatorDocs.js +43 -10
  254. package/es/components/progress-indicator/ProgressIndicatorDocs.js.map +1 -1
  255. package/es/components/progress-indicator/ProgressIndicatorLinear.d.ts +2 -22
  256. package/es/components/progress-indicator/ProgressIndicatorLinear.js +18 -10
  257. package/es/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
  258. package/es/components/progress-indicator/style/dnb-progress-indicator.css +52 -55
  259. package/es/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
  260. package/es/components/progress-indicator/style/dnb-progress-indicator.scss +65 -69
  261. package/es/components/progress-indicator/types.d.ts +95 -0
  262. package/es/components/progress-indicator/types.js +5 -0
  263. package/es/components/progress-indicator/types.js.map +1 -0
  264. package/es/extensions/forms/DataContext/Context.d.ts +5 -1
  265. package/es/extensions/forms/DataContext/Context.js +0 -1
  266. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  267. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +17 -5
  268. package/es/extensions/forms/DataContext/Provider/Provider.js +58 -29
  269. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  270. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +12 -2
  271. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  272. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +1 -1
  273. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  274. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +5 -2
  275. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  276. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +5 -2
  277. package/es/extensions/forms/Field/Name/Name.d.ts +10 -0
  278. package/es/extensions/forms/Field/Name/Name.js +63 -0
  279. package/es/extensions/forms/Field/Name/Name.js.map +1 -0
  280. package/es/extensions/forms/Field/Name/NameDocs.d.ts +2 -0
  281. package/es/extensions/forms/Field/Name/NameDocs.js +8 -0
  282. package/es/extensions/forms/Field/Name/NameDocs.js.map +1 -0
  283. package/es/extensions/forms/Field/Name/index.d.ts +2 -0
  284. package/es/extensions/forms/Field/Name/index.js +3 -0
  285. package/es/extensions/forms/Field/Name/index.js.map +1 -0
  286. package/es/extensions/forms/Field/Number/Number.d.ts +2 -2
  287. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  288. package/es/extensions/forms/Field/Option/Option.d.ts +2 -0
  289. package/es/extensions/forms/Field/Option/Option.js +20 -0
  290. package/es/extensions/forms/Field/Option/Option.js.map +1 -1
  291. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  292. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js +18 -0
  293. package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  294. package/es/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
  295. package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  296. package/es/extensions/forms/Field/Selection/Selection.d.ts +11 -4
  297. package/es/extensions/forms/Field/Selection/Selection.js +20 -32
  298. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  299. package/es/extensions/forms/Field/Selection/SelectionDocs.d.ts +2 -0
  300. package/es/extensions/forms/Field/Selection/SelectionDocs.js +38 -0
  301. package/es/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -0
  302. package/es/extensions/forms/Field/String/String.d.ts +2 -2
  303. package/es/extensions/forms/Field/String/String.js.map +1 -1
  304. package/es/extensions/forms/Field/index.d.ts +1 -0
  305. package/es/extensions/forms/Field/index.js +1 -0
  306. package/es/extensions/forms/Field/index.js.map +1 -1
  307. package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +3 -3
  308. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  309. package/es/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  310. package/es/extensions/forms/Form/Handler/Handler.js +8 -2
  311. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  312. package/es/extensions/forms/Form/MainHeading/MainHeading.js +1 -1
  313. package/es/extensions/forms/Form/MainHeading/MainHeading.js.map +1 -1
  314. package/es/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.css +3 -3
  315. package/es/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.min.css +1 -1
  316. package/es/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.scss +1 -1
  317. package/es/extensions/forms/Form/SubHeading/SubHeading.js +1 -1
  318. package/es/extensions/forms/Form/SubHeading/SubHeading.js.map +1 -1
  319. package/es/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.css +2 -2
  320. package/es/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.min.css +1 -1
  321. package/es/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.scss +1 -1
  322. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +2 -2
  323. package/es/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -1
  324. package/es/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.css +13 -13
  325. package/es/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.min.css +1 -1
  326. package/es/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.scss +1 -1
  327. package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +4 -4
  328. package/es/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
  329. package/es/extensions/forms/Iterate/Array/Array.js +2 -2
  330. package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
  331. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js +1 -1
  332. package/es/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  333. package/es/extensions/forms/Iterate/PushButton/PushButton.js +1 -1
  334. package/es/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  335. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js +1 -1
  336. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  337. package/es/extensions/forms/Iterate/Toolbar/Toolbar.js +1 -1
  338. package/es/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  339. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js +1 -1
  340. package/es/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  341. package/es/extensions/forms/Iterate/style/dnb-form-iterate.css +14 -14
  342. package/es/extensions/forms/Iterate/style/dnb-form-iterate.min.css +1 -1
  343. package/es/extensions/forms/Iterate/style/dnb-form-iterate.scss +1 -1
  344. package/es/extensions/forms/Value/Boolean/Boolean.js +8 -3
  345. package/es/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
  346. package/es/extensions/forms/Value/Name/Name.d.ts +10 -0
  347. package/es/extensions/forms/Value/Name/Name.js +40 -0
  348. package/es/extensions/forms/Value/Name/Name.js.map +1 -0
  349. package/es/extensions/forms/Value/Name/index.d.ts +2 -0
  350. package/es/extensions/forms/Value/Name/index.js +3 -0
  351. package/es/extensions/forms/Value/Name/index.js.map +1 -0
  352. package/es/extensions/forms/Value/OrganizationNumber/OrganizationNumber.d.ts +7 -0
  353. package/es/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js +24 -0
  354. package/es/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js.map +1 -0
  355. package/es/extensions/forms/Value/OrganizationNumber/index.d.ts +2 -0
  356. package/es/extensions/forms/Value/OrganizationNumber/index.js +3 -0
  357. package/es/extensions/forms/Value/OrganizationNumber/index.js.map +1 -0
  358. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.d.ts +7 -0
  359. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js +31 -0
  360. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -0
  361. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  362. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js +13 -0
  363. package/es/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  364. package/es/extensions/forms/Value/PostalCodeAndCity/index.d.ts +2 -0
  365. package/es/extensions/forms/Value/PostalCodeAndCity/index.js +3 -0
  366. package/es/extensions/forms/Value/PostalCodeAndCity/index.js.map +1 -0
  367. package/es/extensions/forms/Value/String/String.js +8 -3
  368. package/es/extensions/forms/Value/String/String.js.map +1 -1
  369. package/es/extensions/forms/Value/SummaryList/SummaryList.js +1 -1
  370. package/es/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -1
  371. package/es/extensions/forms/Value/ValueDocs.js +6 -1
  372. package/es/extensions/forms/Value/ValueDocs.js.map +1 -1
  373. package/es/extensions/forms/Value/index.d.ts +3 -0
  374. package/es/extensions/forms/Value/index.js +3 -0
  375. package/es/extensions/forms/Value/index.js.map +1 -1
  376. package/es/extensions/forms/ValueBlock/ValueBlock.js +2 -1
  377. package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  378. package/es/extensions/forms/ValueBlock/style/dnb-value-block.css +11 -6
  379. package/es/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  380. package/es/extensions/forms/ValueBlock/style/dnb-value-block.scss +11 -3
  381. package/es/extensions/forms/Wizard/Container/WizardContainer.js +17 -51
  382. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  383. package/es/extensions/forms/Wizard/Container/useHandleLayoutEffect.d.ts +9 -0
  384. package/es/extensions/forms/Wizard/Container/useHandleLayoutEffect.js +46 -0
  385. package/es/extensions/forms/Wizard/Container/useHandleLayoutEffect.js.map +1 -0
  386. package/es/extensions/forms/Wizard/Container/useStepAnimation.d.ts +4 -0
  387. package/es/extensions/forms/Wizard/Container/useStepAnimation.js +29 -0
  388. package/es/extensions/forms/Wizard/Container/useStepAnimation.js.map +1 -0
  389. package/es/extensions/forms/Wizard/Step/Step.js +14 -2
  390. package/es/extensions/forms/Wizard/Step/Step.js.map +1 -1
  391. package/es/extensions/forms/Wizard/hooks/useStep.js +3 -2
  392. package/es/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  393. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.css +29 -2
  394. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  395. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.scss +35 -2
  396. package/es/extensions/forms/constants/locales/en-GB.d.ts +9 -0
  397. package/es/extensions/forms/constants/locales/en-GB.js +12 -3
  398. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  399. package/es/extensions/forms/constants/locales/en-US.d.ts +9 -0
  400. package/es/extensions/forms/constants/locales/index.d.ts +18 -0
  401. package/es/extensions/forms/constants/locales/nb-NO.d.ts +9 -0
  402. package/es/extensions/forms/constants/locales/nb-NO.js +11 -2
  403. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  404. package/es/extensions/forms/style/dnb-forms.css +77 -43
  405. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  406. package/es/extensions/forms/types.d.ts +3 -2
  407. package/es/extensions/forms/types.js.map +1 -1
  408. package/es/fragments/drawer-list/DrawerList.d.ts +8 -4
  409. package/es/shared/Context.d.ts +2 -4
  410. package/es/shared/Context.js.map +1 -1
  411. package/es/shared/Eufemia.d.ts +1 -1
  412. package/es/shared/Eufemia.js +2 -2
  413. package/es/shared/Eufemia.js.map +1 -1
  414. package/es/shared/component-helper.js +1 -1
  415. package/es/shared/component-helper.js.map +1 -1
  416. package/es/style/core/scopes.scss +1 -1
  417. package/es/style/dnb-ui-basis.css +1 -1
  418. package/es/style/dnb-ui-basis.min.css +1 -1
  419. package/es/style/dnb-ui-body.css +1 -1
  420. package/es/style/dnb-ui-body.min.css +1 -1
  421. package/es/style/dnb-ui-components.css +129 -98
  422. package/es/style/dnb-ui-components.min.css +2 -2
  423. package/es/style/dnb-ui-core.css +1 -1
  424. package/es/style/dnb-ui-core.min.css +1 -1
  425. package/es/style/dnb-ui-extensions.css +77 -43
  426. package/es/style/dnb-ui-extensions.min.css +1 -1
  427. package/es/style/dnb-ui-forms.css +77 -43
  428. package/es/style/dnb-ui-forms.min.css +1 -1
  429. package/es/style/dnb-ui-forms.scss +1 -1
  430. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +205 -141
  431. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  432. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +77 -43
  433. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  434. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +77 -43
  435. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  436. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +205 -141
  437. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  438. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +77 -43
  439. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  440. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +77 -43
  441. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  442. package/es/style/themes/theme-ui/ui-theme-components.css +205 -141
  443. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  444. package/es/style/themes/theme-ui/ui-theme-extensions.css +77 -43
  445. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  446. package/es/style/themes/theme-ui/ui-theme-forms.css +77 -43
  447. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  448. package/esm/dnb-ui-basis.min.mjs +1 -1
  449. package/esm/dnb-ui-components.min.mjs +1 -1
  450. package/esm/dnb-ui-elements.min.mjs +1 -1
  451. package/esm/dnb-ui-extensions.min.mjs +3 -3
  452. package/esm/dnb-ui-lib.min.mjs +1 -1
  453. package/extensions/forms/DataContext/Context.d.ts +5 -1
  454. package/extensions/forms/DataContext/Context.js +0 -1
  455. package/extensions/forms/DataContext/Context.js.map +1 -1
  456. package/extensions/forms/DataContext/Provider/Provider.d.ts +17 -5
  457. package/extensions/forms/DataContext/Provider/Provider.js +60 -30
  458. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  459. package/extensions/forms/DataContext/Provider/ProviderDocs.js +12 -2
  460. package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  461. package/extensions/forms/Field/ArraySelection/ArraySelection.js +1 -1
  462. package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  463. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +5 -2
  464. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  465. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +5 -2
  466. package/extensions/forms/Field/Name/Name.d.ts +10 -0
  467. package/extensions/forms/Field/Name/Name.js +63 -0
  468. package/extensions/forms/Field/Name/Name.js.map +1 -0
  469. package/extensions/forms/Field/Name/NameDocs.d.ts +2 -0
  470. package/extensions/forms/Field/Name/NameDocs.js +8 -0
  471. package/extensions/forms/Field/Name/NameDocs.js.map +1 -0
  472. package/extensions/forms/Field/Name/index.d.ts +2 -0
  473. package/extensions/forms/Field/Name/index.js +3 -0
  474. package/extensions/forms/Field/Name/index.js.map +1 -0
  475. package/extensions/forms/Field/Number/Number.d.ts +2 -2
  476. package/extensions/forms/Field/Number/Number.js.map +1 -1
  477. package/extensions/forms/Field/Option/Option.d.ts +2 -0
  478. package/extensions/forms/Field/Option/Option.js +20 -0
  479. package/extensions/forms/Field/Option/Option.js.map +1 -1
  480. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  481. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js +18 -0
  482. package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  483. package/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
  484. package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
  485. package/extensions/forms/Field/Selection/Selection.d.ts +11 -4
  486. package/extensions/forms/Field/Selection/Selection.js +20 -32
  487. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  488. package/extensions/forms/Field/Selection/SelectionDocs.d.ts +2 -0
  489. package/extensions/forms/Field/Selection/SelectionDocs.js +38 -0
  490. package/extensions/forms/Field/Selection/SelectionDocs.js.map +1 -0
  491. package/extensions/forms/Field/String/String.d.ts +2 -2
  492. package/extensions/forms/Field/String/String.js.map +1 -1
  493. package/extensions/forms/Field/index.d.ts +1 -0
  494. package/extensions/forms/Field/index.js +1 -0
  495. package/extensions/forms/Field/index.js.map +1 -1
  496. package/extensions/forms/FieldBlock/FieldBlock.d.ts +3 -3
  497. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  498. package/extensions/forms/Form/Handler/Handler.d.ts +1 -1
  499. package/extensions/forms/Form/Handler/Handler.js +8 -2
  500. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  501. package/extensions/forms/Form/MainHeading/MainHeading.js +1 -1
  502. package/extensions/forms/Form/MainHeading/MainHeading.js.map +1 -1
  503. package/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.css +3 -3
  504. package/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.min.css +1 -1
  505. package/extensions/forms/Form/MainHeading/style/dnb-form-main-heading.scss +1 -1
  506. package/extensions/forms/Form/SubHeading/SubHeading.js +1 -1
  507. package/extensions/forms/Form/SubHeading/SubHeading.js.map +1 -1
  508. package/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.css +2 -2
  509. package/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.min.css +1 -1
  510. package/extensions/forms/Form/SubHeading/style/dnb-form-sub-heading.scss +1 -1
  511. package/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js +2 -2
  512. package/extensions/forms/Form/SubmitIndicator/SubmitIndicator.js.map +1 -1
  513. package/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.css +13 -13
  514. package/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.min.css +1 -1
  515. package/extensions/forms/Form/SubmitIndicator/style/dnb-form-submit-indicator.scss +1 -1
  516. package/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js +4 -4
  517. package/extensions/forms/Iterate/AnimatedContainer/ElementBlock.js.map +1 -1
  518. package/extensions/forms/Iterate/Array/Array.js +2 -2
  519. package/extensions/forms/Iterate/Array/Array.js.map +1 -1
  520. package/extensions/forms/Iterate/EditContainer/EditContainer.js +1 -1
  521. package/extensions/forms/Iterate/EditContainer/EditContainer.js.map +1 -1
  522. package/extensions/forms/Iterate/PushButton/PushButton.js +1 -1
  523. package/extensions/forms/Iterate/PushButton/PushButton.js.map +1 -1
  524. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js +1 -1
  525. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  526. package/extensions/forms/Iterate/Toolbar/Toolbar.js +1 -1
  527. package/extensions/forms/Iterate/Toolbar/Toolbar.js.map +1 -1
  528. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js +1 -1
  529. package/extensions/forms/Iterate/ViewContainer/ViewContainer.js.map +1 -1
  530. package/extensions/forms/Iterate/style/dnb-form-iterate.css +14 -14
  531. package/extensions/forms/Iterate/style/dnb-form-iterate.min.css +1 -1
  532. package/extensions/forms/Iterate/style/dnb-form-iterate.scss +1 -1
  533. package/extensions/forms/Value/Boolean/Boolean.js +8 -3
  534. package/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
  535. package/extensions/forms/Value/Name/Name.d.ts +10 -0
  536. package/extensions/forms/Value/Name/Name.js +40 -0
  537. package/extensions/forms/Value/Name/Name.js.map +1 -0
  538. package/extensions/forms/Value/Name/index.d.ts +2 -0
  539. package/extensions/forms/Value/Name/index.js +3 -0
  540. package/extensions/forms/Value/Name/index.js.map +1 -0
  541. package/extensions/forms/Value/OrganizationNumber/OrganizationNumber.d.ts +7 -0
  542. package/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js +24 -0
  543. package/extensions/forms/Value/OrganizationNumber/OrganizationNumber.js.map +1 -0
  544. package/extensions/forms/Value/OrganizationNumber/index.d.ts +2 -0
  545. package/extensions/forms/Value/OrganizationNumber/index.js +3 -0
  546. package/extensions/forms/Value/OrganizationNumber/index.js.map +1 -0
  547. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.d.ts +7 -0
  548. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js +31 -0
  549. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -0
  550. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.d.ts +2 -0
  551. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js +13 -0
  552. package/extensions/forms/Value/PostalCodeAndCity/PostalCodeAndCityDocs.js.map +1 -0
  553. package/extensions/forms/Value/PostalCodeAndCity/index.d.ts +2 -0
  554. package/extensions/forms/Value/PostalCodeAndCity/index.js +3 -0
  555. package/extensions/forms/Value/PostalCodeAndCity/index.js.map +1 -0
  556. package/extensions/forms/Value/String/String.js +8 -3
  557. package/extensions/forms/Value/String/String.js.map +1 -1
  558. package/extensions/forms/Value/SummaryList/SummaryList.js +1 -1
  559. package/extensions/forms/Value/SummaryList/SummaryList.js.map +1 -1
  560. package/extensions/forms/Value/ValueDocs.js +6 -1
  561. package/extensions/forms/Value/ValueDocs.js.map +1 -1
  562. package/extensions/forms/Value/index.d.ts +3 -0
  563. package/extensions/forms/Value/index.js +3 -0
  564. package/extensions/forms/Value/index.js.map +1 -1
  565. package/extensions/forms/ValueBlock/ValueBlock.js +2 -1
  566. package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  567. package/extensions/forms/ValueBlock/style/dnb-value-block.css +11 -6
  568. package/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  569. package/extensions/forms/ValueBlock/style/dnb-value-block.scss +11 -3
  570. package/extensions/forms/Wizard/Container/WizardContainer.js +17 -52
  571. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  572. package/extensions/forms/Wizard/Container/useHandleLayoutEffect.d.ts +9 -0
  573. package/extensions/forms/Wizard/Container/useHandleLayoutEffect.js +47 -0
  574. package/extensions/forms/Wizard/Container/useHandleLayoutEffect.js.map +1 -0
  575. package/extensions/forms/Wizard/Container/useStepAnimation.d.ts +4 -0
  576. package/extensions/forms/Wizard/Container/useStepAnimation.js +30 -0
  577. package/extensions/forms/Wizard/Container/useStepAnimation.js.map +1 -0
  578. package/extensions/forms/Wizard/Step/Step.js +14 -2
  579. package/extensions/forms/Wizard/Step/Step.js.map +1 -1
  580. package/extensions/forms/Wizard/hooks/useStep.js +3 -2
  581. package/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  582. package/extensions/forms/Wizard/style/dnb-wizard-layout.css +29 -2
  583. package/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  584. package/extensions/forms/Wizard/style/dnb-wizard-layout.scss +35 -2
  585. package/extensions/forms/constants/locales/en-GB.d.ts +9 -0
  586. package/extensions/forms/constants/locales/en-GB.js +12 -3
  587. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  588. package/extensions/forms/constants/locales/en-US.d.ts +9 -0
  589. package/extensions/forms/constants/locales/index.d.ts +18 -0
  590. package/extensions/forms/constants/locales/nb-NO.d.ts +9 -0
  591. package/extensions/forms/constants/locales/nb-NO.js +11 -2
  592. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  593. package/extensions/forms/style/dnb-forms.css +77 -43
  594. package/extensions/forms/style/dnb-forms.min.css +1 -1
  595. package/extensions/forms/types.d.ts +3 -2
  596. package/extensions/forms/types.js.map +1 -1
  597. package/fragments/drawer-list/DrawerList.d.ts +8 -4
  598. package/package.json +1 -1
  599. package/shared/Context.d.ts +2 -4
  600. package/shared/Context.js.map +1 -1
  601. package/shared/Eufemia.d.ts +1 -1
  602. package/shared/Eufemia.js +2 -2
  603. package/shared/Eufemia.js.map +1 -1
  604. package/shared/component-helper.js +1 -1
  605. package/shared/component-helper.js.map +1 -1
  606. package/style/core/scopes.scss +1 -1
  607. package/style/dnb-ui-basis.css +1 -1
  608. package/style/dnb-ui-basis.min.css +1 -1
  609. package/style/dnb-ui-body.css +1 -1
  610. package/style/dnb-ui-body.min.css +1 -1
  611. package/style/dnb-ui-components.css +129 -98
  612. package/style/dnb-ui-components.min.css +2 -2
  613. package/style/dnb-ui-core.css +1 -1
  614. package/style/dnb-ui-core.min.css +1 -1
  615. package/style/dnb-ui-extensions.css +77 -43
  616. package/style/dnb-ui-extensions.min.css +1 -1
  617. package/style/dnb-ui-forms.css +77 -43
  618. package/style/dnb-ui-forms.min.css +1 -1
  619. package/style/dnb-ui-forms.scss +1 -1
  620. package/style/themes/theme-eiendom/eiendom-theme-components.css +205 -141
  621. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  622. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +77 -43
  623. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  624. package/style/themes/theme-eiendom/eiendom-theme-forms.css +77 -43
  625. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  626. package/style/themes/theme-sbanken/sbanken-theme-components.css +205 -141
  627. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  628. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +77 -43
  629. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  630. package/style/themes/theme-sbanken/sbanken-theme-forms.css +77 -43
  631. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  632. package/style/themes/theme-ui/ui-theme-components.css +205 -141
  633. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  634. package/style/themes/theme-ui/ui-theme-extensions.css +77 -43
  635. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  636. package/style/themes/theme-ui/ui-theme-forms.css +77 -43
  637. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  638. package/umd/dnb-ui-basis.min.js +1 -1
  639. package/umd/dnb-ui-components.min.js +1 -1
  640. package/umd/dnb-ui-elements.min.js +1 -1
  641. package/umd/dnb-ui-extensions.min.js +3 -3
  642. package/umd/dnb-ui-lib.min.js +1 -1
  643. /package/cjs/extensions/forms/Form/Element/style/{dnb-forms-element.css → dnb-form-element.css} +0 -0
  644. /package/cjs/extensions/forms/Form/Element/style/{dnb-forms-element.min.css → dnb-form-element.min.css} +0 -0
  645. /package/cjs/extensions/forms/Form/Element/style/{dnb-forms-element.scss → dnb-form-element.scss} +0 -0
  646. /package/es/extensions/forms/Form/Element/style/{dnb-forms-element.css → dnb-form-element.css} +0 -0
  647. /package/es/extensions/forms/Form/Element/style/{dnb-forms-element.min.css → dnb-form-element.min.css} +0 -0
  648. /package/es/extensions/forms/Form/Element/style/{dnb-forms-element.scss → dnb-form-element.scss} +0 -0
  649. /package/extensions/forms/Form/Element/style/{dnb-forms-element.css → dnb-form-element.css} +0 -0
  650. /package/extensions/forms/Form/Element/style/{dnb-forms-element.min.css → dnb-form-element.min.css} +0 -0
  651. /package/extensions/forms/Form/Element/style/{dnb-forms-element.scss → dnb-form-element.scss} +0 -0
@@ -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","NumberComponent","props","_props$width","_sharedContext$transl","_sharedContext$transl2","fieldBlockContext","sharedContext","translations","currency","currencyDisplay","percent","mask","step","decimalLimit","prefix","suffix","showStepControls","errorMessages","path","required","Field","errorRequired","minimum","NumberField","errorMinimum","maximum","errorMaximum","exclusiveMinimum","errorExclusiveMinimum","exclusiveMaximum","errorExclusiveMaximum","multipleOf","errorMultipleOf","schema","_props$schema","type","toInput","external","undefined","fromInput","value","numberValue","emptyValue","transformValue","currentValue","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","maskProps","mask_options","as_currency","currency_mask","as_percent","as_number","number_mask","_objectSpread","preparedProps","width","composition","id","name","className","inputClassName","autoComplete","layout","placeholder","label","labelDescription","disabled","htmlAttributes","info","warning","error","hasError","help","size","align","handleFocus","handleBlur","handleChange","onKeyDownHandler","key","event","persist","preventDefault","fieldBlockProps","contentClassName","forId","contentWidth","increaseProps","variant","icon","tabIndex","onClick","title","translation","Slider","addTitle","replace","String","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} 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'\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, 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 // Formatting\n decimalLimit?: number\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?: false | 'small' | 'medium' | 'large' | 'stretch'\n align?: InputAlign\n showStepControls?: boolean\n }\n\nfunction NumberComponent(props: Props) {\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 prefix,\n suffix,\n showStepControls,\n } = props\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.Field.errorRequired,\n minimum: translations.NumberField.errorMinimum,\n maximum: translations.NumberField.errorMaximum,\n exclusiveMinimum: translations.NumberField.errorExclusiveMinimum,\n exclusiveMaximum: translations.NumberField.errorExclusiveMaximum,\n multipleOf: translations.NumberField.errorMultipleOf,\n })\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'number',\n minimum: props.minimum,\n maximum: props.maximum,\n exclusiveMinimum: props.exclusiveMinimum,\n exclusiveMaximum: props.exclusiveMaximum,\n multipleOf: props.multipleOf,\n },\n [\n props.schema,\n props.minimum,\n props.maximum,\n props.exclusiveMinimum,\n props.exclusiveMaximum,\n props.multipleOf,\n ]\n )\n\n const toInput = useCallback((external: number | undefined) => {\n if (external === undefined) {\n return ''\n }\n return external\n }, [])\n const fromInput = useCallback(\n ({ value, numberValue }: { value: string; numberValue: number }) => {\n if (value === '') {\n return props.emptyValue\n }\n return numberValue\n },\n [props.emptyValue]\n )\n const transformValue = useCallback(\n (value: number, currentValue: number) => {\n if (\n value > Number.MAX_SAFE_INTEGER ||\n value < Number.MIN_SAFE_INTEGER\n ) {\n return currentValue\n }\n\n return value\n },\n []\n )\n\n const maskProps: Partial<InputMaskedProps> = useMemo(() => {\n const mask_options = { prefix, suffix, decimalLimit }\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 ])\n\n const preparedProps: Props = {\n ...props,\n errorMessages,\n schema,\n toInput,\n fromInput,\n transformValue,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'medium'),\n }\n\n const {\n id,\n name,\n className,\n inputClassName,\n autoComplete,\n layout,\n placeholder,\n label,\n labelDescription,\n value,\n minimum = Number.MIN_SAFE_INTEGER,\n maximum = Number.MAX_SAFE_INTEGER,\n disabled,\n htmlAttributes,\n info,\n warning,\n error,\n hasError,\n help,\n size,\n width,\n align,\n handleFocus,\n handleBlur,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const onKeyDownHandler = useCallback(\n ({ key, event }) => {\n if (!showStepControls) {\n return\n }\n\n let numberValue = null\n\n switch (key) {\n case 'ArrowUp':\n numberValue = clamp((value as number) + step, minimum, maximum)\n break\n case 'ArrowDown':\n numberValue = clamp((value as number) - step, minimum, maximum)\n break\n }\n\n if (numberValue !== null) {\n event.persist()\n event.preventDefault()\n handleChange({ numberValue })\n }\n },\n [handleChange, maximum, minimum, showStepControls, step, value]\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 ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\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: () => {\n handleChange({\n numberValue: clamp((value as number) + step, minimum, maximum),\n })\n },\n title: sharedContext?.translation.Slider.addTitle?.replace(\n '%s',\n String(value + step)\n ),\n }\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: () => {\n handleChange({\n numberValue: clamp((value as number) - step, minimum, maximum),\n })\n },\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","NumberComponent","props","_props$width","_sharedContext$transl","_sharedContext$transl2","fieldBlockContext","sharedContext","translations","currency","currencyDisplay","percent","mask","step","decimalLimit","prefix","suffix","showStepControls","errorMessages","path","required","Field","errorRequired","minimum","NumberField","errorMinimum","maximum","errorMaximum","exclusiveMinimum","errorExclusiveMinimum","exclusiveMaximum","errorExclusiveMaximum","multipleOf","errorMultipleOf","schema","_props$schema","type","toInput","external","undefined","fromInput","value","numberValue","emptyValue","transformValue","currentValue","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","maskProps","mask_options","as_currency","currency_mask","as_percent","as_number","number_mask","_objectSpread","preparedProps","width","composition","id","name","className","inputClassName","autoComplete","layout","placeholder","label","labelDescription","disabled","htmlAttributes","info","warning","error","hasError","help","size","align","handleFocus","handleBlur","handleChange","onKeyDownHandler","key","event","persist","preventDefault","fieldBlockProps","contentClassName","forId","contentWidth","increaseProps","variant","icon","tabIndex","onClick","title","translation","Slider","addTitle","replace","String","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'\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, 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 // Formatting\n decimalLimit?: number\n prefix?: string\n suffix?: string\n // Validation\n minimum?: number // aka greater than or equal to\n maximum?: number // aka less than or equal to\n exclusiveMinimum?: number // aka greater than\n exclusiveMaximum?: number // aka less than\n multipleOf?: number\n // Styling\n size?: InputSize\n width?: FieldBlockWidth\n align?: InputAlign\n showStepControls?: boolean\n }\n\nfunction NumberComponent(props: Props) {\n const 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 prefix,\n suffix,\n showStepControls,\n } = props\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.Field.errorRequired,\n minimum: translations.NumberField.errorMinimum,\n maximum: translations.NumberField.errorMaximum,\n exclusiveMinimum: translations.NumberField.errorExclusiveMinimum,\n exclusiveMaximum: translations.NumberField.errorExclusiveMaximum,\n multipleOf: translations.NumberField.errorMultipleOf,\n })\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'number',\n minimum: props.minimum,\n maximum: props.maximum,\n exclusiveMinimum: props.exclusiveMinimum,\n exclusiveMaximum: props.exclusiveMaximum,\n multipleOf: props.multipleOf,\n },\n [\n props.schema,\n props.minimum,\n props.maximum,\n props.exclusiveMinimum,\n props.exclusiveMaximum,\n props.multipleOf,\n ]\n )\n\n const toInput = useCallback((external: number | undefined) => {\n if (external === undefined) {\n return ''\n }\n return external\n }, [])\n const fromInput = useCallback(\n ({ value, numberValue }: { value: string; numberValue: number }) => {\n if (value === '') {\n return props.emptyValue\n }\n return numberValue\n },\n [props.emptyValue]\n )\n const transformValue = useCallback(\n (value: number, currentValue: number) => {\n if (\n value > Number.MAX_SAFE_INTEGER ||\n value < Number.MIN_SAFE_INTEGER\n ) {\n return currentValue\n }\n\n return value\n },\n []\n )\n\n const maskProps: Partial<InputMaskedProps> = useMemo(() => {\n const mask_options = { prefix, suffix, decimalLimit }\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 ])\n\n const preparedProps: Props = {\n ...props,\n errorMessages,\n schema,\n toInput,\n fromInput,\n transformValue,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'medium'),\n }\n\n const {\n id,\n name,\n className,\n inputClassName,\n autoComplete,\n layout,\n placeholder,\n label,\n labelDescription,\n value,\n minimum = Number.MIN_SAFE_INTEGER,\n maximum = Number.MAX_SAFE_INTEGER,\n disabled,\n htmlAttributes,\n info,\n warning,\n error,\n hasError,\n help,\n size,\n width,\n align,\n handleFocus,\n handleBlur,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const onKeyDownHandler = useCallback(\n ({ key, event }) => {\n if (!showStepControls) {\n return\n }\n\n let numberValue = null\n\n switch (key) {\n case 'ArrowUp':\n numberValue = clamp((value as number) + step, minimum, maximum)\n break\n case 'ArrowDown':\n numberValue = clamp((value as number) - step, minimum, maximum)\n break\n }\n\n if (numberValue !== null) {\n event.persist()\n event.preventDefault()\n handleChange({ numberValue })\n }\n },\n [handleChange, maximum, minimum, showStepControls, step, value]\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 ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\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: () => {\n handleChange({\n numberValue: clamp((value as number) + step, minimum, maximum),\n })\n },\n title: sharedContext?.translation.Slider.addTitle?.replace(\n '%s',\n String(value + step)\n ),\n }\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: () => {\n handleChange({\n numberValue: clamp((value as number) - step, minimum, maximum),\n })\n },\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,8 +1,10 @@
1
1
  import React from 'react';
2
2
  import type { FieldProps } from '../../types';
3
+ import { DrawerListProps } from '../../../../fragments/DrawerList';
3
4
  export type Props = FieldProps<number | string> & {
4
5
  title?: string;
5
6
  text?: string;
6
7
  children?: React.ReactNode;
7
8
  };
8
9
  export default function Option({ className, title, text, children, }: Props): import("react/jsx-runtime").JSX.Element;
10
+ export declare function makeOptions<T = DrawerListProps['data']>(children: React.ReactNode): T;
@@ -1,3 +1,4 @@
1
+ var _em;
1
2
  import React from 'react';
2
3
  import classnames from 'classnames';
3
4
  export default function Option({
@@ -11,4 +12,23 @@ export default function Option({
11
12
  role: "option"
12
13
  }, children !== null && children !== void 0 ? children : title, text);
13
14
  }
15
+ export function makeOptions(children) {
16
+ return React.Children.map(children, child => {
17
+ if (React.isValidElement(child) && child.type === Option) {
18
+ var _child$props$value, _ref, _child$props$children, _child$props$children2;
19
+ return child.props.text ? {
20
+ selectedKey: String((_child$props$value = child.props.value) !== null && _child$props$value !== void 0 ? _child$props$value : ''),
21
+ content: [(_ref = (_child$props$children = child.props.children) !== null && _child$props$children !== void 0 ? _child$props$children : child.props.title) !== null && _ref !== void 0 ? _ref : _em || (_em = React.createElement("em", null, "Untitled")), child.props.text]
22
+ } : {
23
+ selectedKey: child.props.value,
24
+ content: (_child$props$children2 = child.props.children) !== null && _child$props$children2 !== void 0 ? _child$props$children2 : child.props.title
25
+ };
26
+ }
27
+ if (child) {
28
+ return {
29
+ content: child
30
+ };
31
+ }
32
+ }).filter(Boolean);
33
+ }
14
34
  //# sourceMappingURL=Option.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Option.js","names":["React","classnames","Option","className","title","text","children","createElement","role"],"sources":["../../../../../../src/extensions/forms/Field/Option/Option.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport type { FieldProps } from '../../types'\n\nexport type Props = FieldProps<number | string> & {\n title?: string\n text?: string\n children?: React.ReactNode\n}\n\nexport default function Option({\n className,\n title,\n text,\n children,\n}: Props) {\n return (\n <span\n className={classnames('dnb-forms-field-option', className)}\n // eslint-disable-next-line jsx-a11y/role-has-required-aria-props\n role=\"option\"\n >\n {children ?? title}\n {text}\n </span>\n )\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AASnC,eAAe,SAASC,MAAMA,CAAC;EAC7BC,SAAS;EACTC,KAAK;EACLC,IAAI;EACJC;AACK,CAAC,EAAE;EACR,OACEN,KAAA,CAAAO,aAAA;IACEJ,SAAS,EAAEF,UAAU,CAAC,wBAAwB,EAAEE,SAAS,CAAE;IAE3DK,IAAI,EAAC;EAAQ,GAEZF,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAIF,KAAK,EACjBC,IACG,CAAC;AAEX"}
1
+ {"version":3,"file":"Option.js","names":["React","classnames","Option","className","title","text","children","createElement","role","makeOptions","Children","map","child","isValidElement","type","_child$props$value","_ref","_child$props$children","_child$props$children2","props","selectedKey","String","value","content","_em","filter","Boolean"],"sources":["../../../../../../src/extensions/forms/Field/Option/Option.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport type { FieldProps } from '../../types'\nimport { DrawerListProps } from '../../../../fragments/DrawerList'\n\nexport type Props = FieldProps<number | string> & {\n title?: string\n text?: string\n children?: React.ReactNode\n}\n\nexport default function Option({\n className,\n title,\n text,\n children,\n}: Props) {\n return (\n <span\n className={classnames('dnb-forms-field-option', className)}\n // eslint-disable-next-line jsx-a11y/role-has-required-aria-props\n role=\"option\"\n >\n {children ?? title}\n {text}\n </span>\n )\n}\n\nexport function makeOptions<T = DrawerListProps['data']>(\n children: React.ReactNode\n): T {\n return React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child.type === Option) {\n // Option components\n return child.props.text\n ? {\n selectedKey: String(child.props.value ?? ''),\n content: [\n child.props.children ?? child.props.title ?? (\n <em>Untitled</em>\n ),\n child.props.text,\n ],\n }\n : {\n selectedKey: child.props.value,\n content: child.props.children ?? child.props.title,\n }\n }\n\n if (child) {\n // For other children, just show them as content\n return {\n content: child,\n }\n }\n }).filter(Boolean) as T\n}\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AAUnC,eAAe,SAASC,MAAMA,CAAC;EAC7BC,SAAS;EACTC,KAAK;EACLC,IAAI;EACJC;AACK,CAAC,EAAE;EACR,OACEN,KAAA,CAAAO,aAAA;IACEJ,SAAS,EAAEF,UAAU,CAAC,wBAAwB,EAAEE,SAAS,CAAE;IAE3DK,IAAI,EAAC;EAAQ,GAEZF,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAIF,KAAK,EACjBC,IACG,CAAC;AAEX;AAEA,OAAO,SAASI,WAAWA,CACzBH,QAAyB,EACtB;EACH,OAAON,KAAK,CAACU,QAAQ,CAACC,GAAG,CAACL,QAAQ,EAAGM,KAAK,IAAK;IAC7C,IAAIZ,KAAK,CAACa,cAAc,CAACD,KAAK,CAAC,IAAIA,KAAK,CAACE,IAAI,KAAKZ,MAAM,EAAE;MAAA,IAAAa,kBAAA,EAAAC,IAAA,EAAAC,qBAAA,EAAAC,sBAAA;MAExD,OAAON,KAAK,CAACO,KAAK,CAACd,IAAI,GACnB;QACEe,WAAW,EAAEC,MAAM,EAAAN,kBAAA,GAACH,KAAK,CAACO,KAAK,CAACG,KAAK,cAAAP,kBAAA,cAAAA,kBAAA,GAAI,EAAE,CAAC;QAC5CQ,OAAO,EAAE,EAAAP,IAAA,IAAAC,qBAAA,GACPL,KAAK,CAACO,KAAK,CAACb,QAAQ,cAAAW,qBAAA,cAAAA,qBAAA,GAAIL,KAAK,CAACO,KAAK,CAACf,KAAK,cAAAY,IAAA,cAAAA,IAAA,GAAAQ,GAAA,KAAAA,GAAA,GACvCxB,KAAA,CAAAO,aAAA,aAAI,UAAY,CAAC,GAEnBK,KAAK,CAACO,KAAK,CAACd,IAAI;MAEpB,CAAC,GACD;QACEe,WAAW,EAAER,KAAK,CAACO,KAAK,CAACG,KAAK;QAC9BC,OAAO,GAAAL,sBAAA,GAAEN,KAAK,CAACO,KAAK,CAACb,QAAQ,cAAAY,sBAAA,cAAAA,sBAAA,GAAIN,KAAK,CAACO,KAAK,CAACf;MAC/C,CAAC;IACP;IAEA,IAAIQ,KAAK,EAAE;MAET,OAAO;QACLW,OAAO,EAAEX;MACX,CAAC;IACH;EACF,CAAC,CAAC,CAACa,MAAM,CAACC,OAAO,CAAC;AACpB"}
@@ -0,0 +1,2 @@
1
+ import { PropertiesTableProps } from '../../../../shared/types';
2
+ export declare const PostalCodeAndCityProperties: PropertiesTableProps;
@@ -0,0 +1,18 @@
1
+ export const PostalCodeAndCityProperties = {
2
+ postalCode: {
3
+ doc: 'Properties for the [Field.String](/uilib/extensions/forms/base-fields/String/) component for postcode.',
4
+ type: 'object',
5
+ status: 'required'
6
+ },
7
+ city: {
8
+ doc: 'Properties for the [Field.String](/uilib/extensions/forms/base-fields/String/) component for city.',
9
+ type: 'object',
10
+ status: 'required'
11
+ },
12
+ help: {
13
+ doc: 'Provide a help button. Object consisting of `title` and `content`.',
14
+ type: 'object',
15
+ status: 'optional'
16
+ }
17
+ };
18
+ //# sourceMappingURL=PostalCodeAndCityDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostalCodeAndCityDocs.js","names":["PostalCodeAndCityProperties","postalCode","doc","type","status","city","help"],"sources":["../../../../../../src/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCityDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const PostalCodeAndCityProperties: PropertiesTableProps = {\n postalCode: {\n doc: 'Properties for the [Field.String](/uilib/extensions/forms/base-fields/String/) component for postcode.',\n type: 'object',\n status: 'required',\n },\n city: {\n doc: 'Properties for the [Field.String](/uilib/extensions/forms/base-fields/String/) component for city.',\n type: 'object',\n status: 'required',\n },\n help: {\n doc: 'Provide a help button. Object consisting of `title` and `content`.',\n type: 'object',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,2BAAiD,GAAG;EAC/DC,UAAU,EAAE;IACVC,GAAG,EAAE,wGAAwG;IAC7GC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE;IACJH,GAAG,EAAE,oGAAoG;IACzGC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,IAAI,EAAE;IACJJ,GAAG,EAAE,oEAAoE;IACzEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV;AACF,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { type CountryType, type CountryLang } from '../../constants/countries';
2
- import { FieldHelpProps, FieldProps } from '../../types';
2
+ import { FieldBlockWidth, FieldHelpProps, FieldProps } from '../../types';
3
3
  export type CountryFilterSet = 'Scandinavia' | 'Nordic' | 'Europe' | 'Prioritized';
4
4
  export type Props = FieldHelpProps & FieldProps<string, undefined | string> & {
5
5
  countries?: CountryFilterSet;
6
- width?: false | 'small' | 'medium' | 'large' | 'stretch';
6
+ width?: FieldBlockWidth;
7
7
  /**
8
8
  * For internal use only.
9
9
  *
@@ -1 +1 @@
1
- {"version":3,"file":"SelectCountry.js","names":["React","useCallback","useContext","useMemo","classnames","SharedContext","Autocomplete","HelpButton","pickSpacingProps","countries","prioritizedCountries","useFieldProps","FieldBlock","useErrorMessage","useTranslation","SelectCountry","props","_sharedContext$locale","sharedContext","translations","lang","locale","split","errorMessages","path","required","errorRequired","defaultProps","preparedProps","_objectSpread","className","placeholder","label","ccFilter","info","warning","error","hasError","disabled","value","width","help","htmlAttributes","handleFocus","handleBlur","handleChange","updateValue","forceUpdate","filterCountries","makeCountryFilterSet","undefined","dataRef","useRef","langRef","wasFilled","isLangChange","current","getCountryData","filter","country","iso","sort","window","requestAnimationFrame","handleCountryChange","data","newValue","selectedKey","find","fillData","onFocusHandler","updateData","onTypeHandler","currentValue","setHidden","event","_event$nativeEvent","nativeEvent","search","toLowerCase","i18n","Object","values","some","s","includes","createElement","_extends","label_direction","input_icon","on_show","on_focus","on_blur","on_change","on_type","stretch","status","show_submit_button","suffix","title","content","autoComplete","no_animation","noAnimation","makeObject","_country$i18n$lang","en","a","b","indexA","indexOf","indexB","priorityA","priorityB","localeCompare","map","_country$regions","regions","continent","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/SelectCountry/SelectCountry.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport classnames from 'classnames'\nimport SharedContext from '../../../../shared/Context'\nimport { Autocomplete, HelpButton } from '../../../../components'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport countries, {\n prioritizedCountries,\n type CountryType,\n type CountryLang,\n} from '../../constants/countries'\nimport { useFieldProps } from '../../hooks'\nimport { FieldHelpProps, FieldProps } from '../../types'\nimport FieldBlock from '../../FieldBlock'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type CountryFilterSet =\n | 'Scandinavia'\n | 'Nordic'\n | 'Europe'\n | 'Prioritized'\n\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined | string> & {\n countries?: CountryFilterSet\n\n // Styling\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n\n /**\n * For internal use only.\n *\n * @param country\n * @returns boolean\n */\n filterCountries?: (country: CountryType) => boolean\n\n /**\n * For internal testing purposes\n */\n noAnimation?: boolean\n }\n\nfunction SelectCountry(props: Props) {\n const sharedContext = useContext(SharedContext)\n const translations = useTranslation().SelectCountry\n const lang = sharedContext.locale?.split('-')[0] as CountryLang\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.errorRequired,\n })\n\n const defaultProps: Partial<Props> = {\n errorMessages,\n }\n const preparedProps: Props = {\n ...defaultProps,\n ...props,\n }\n\n const {\n className,\n placeholder = translations.placeholder,\n label = translations.label,\n countries: ccFilter = 'Prioritized',\n info,\n warning,\n error,\n hasError,\n disabled,\n value,\n width = 'large',\n help,\n htmlAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n updateValue,\n forceUpdate,\n filterCountries = ccFilter !== 'Prioritized'\n ? makeCountryFilterSet(ccFilter)\n : undefined,\n } = useFieldProps(preparedProps)\n\n const dataRef = React.useRef(null)\n const langRef = React.useRef(lang)\n const wasFilled = React.useRef(false)\n\n /**\n * We do not process the whole country list at the first render.\n * Only when the Autocomplete opens (focus).\n * To achieve this, we use memo instead of effect to update refs in sync.\n *\n * We set or update the data list depending on if the countrycode changes or lang changes.\n * We then update data set when value changes.\n */\n useMemo(() => {\n const isLangChange = lang !== langRef.current\n\n if (isLangChange || !wasFilled.current) {\n langRef.current = lang\n dataRef.current = getCountryData({\n lang,\n filter: !wasFilled.current\n ? (country) => country.iso === props.value\n : filterCountries,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n })\n\n // To force Autocomplete to re-evaluate the internal data\n if (isLangChange && props.value && typeof window !== 'undefined') {\n updateValue(null)\n window.requestAnimationFrame(() => {\n updateValue(props.value)\n })\n }\n }\n }, [lang, filterCountries, ccFilter, updateValue, props.value])\n\n const handleCountryChange = useCallback(\n ({ data }: { data: { selectedKey: string } }) => {\n const newValue = data?.selectedKey\n const country = countries.find(({ iso }) => newValue === iso)\n if (country?.iso) {\n handleChange(country.iso, country)\n }\n },\n [handleChange]\n )\n\n const fillData = useCallback(() => {\n if (!wasFilled.current) {\n wasFilled.current = true\n dataRef.current = getCountryData({\n lang: langRef.current,\n filter: filterCountries,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n })\n forceUpdate()\n }\n }, [ccFilter, filterCountries, forceUpdate])\n\n const onFocusHandler = useCallback(\n ({ updateData }) => {\n fillData()\n updateData(dataRef.current)\n handleFocus()\n },\n [fillData, handleFocus]\n )\n\n const onTypeHandler = useCallback(\n ({ value: currentValue, setHidden, event }) => {\n // Handle browser autofill/autocomplete\n if (typeof event?.nativeEvent?.data === 'undefined') {\n const search = currentValue.toLowerCase()\n const country = countries.find(({ i18n }) =>\n Object.values(i18n).some((s) => s.toLowerCase().includes(search))\n )\n if (country?.iso) {\n setHidden()\n handleChange(country.iso, country)\n }\n }\n },\n [handleChange]\n )\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-select-country', className)}\n width={width}\n info={info}\n warning={warning}\n error={error}\n {...pickSpacingProps(props)}\n >\n <Autocomplete\n placeholder={placeholder}\n label_direction=\"vertical\"\n label={label}\n input_icon={false}\n data={dataRef.current}\n value={value}\n disabled={disabled}\n on_show={fillData}\n on_focus={onFocusHandler}\n on_blur={handleBlur}\n on_change={handleCountryChange}\n on_type={onTypeHandler}\n stretch\n status={hasError ? 'error' : undefined}\n show_submit_button\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined\n }\n autoComplete=\"country-name\"\n no_animation={props.noAnimation}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n}\n\ntype GetCountryData = {\n lang?: CountryLang\n filter?: Props['filterCountries']\n sort?: Extract<CountryFilterSet, 'Prioritized'>\n makeObject?: (\n country: CountryType,\n lang: string\n ) => {\n selectedKey: string\n selected_value?: string\n content: string\n }\n}\n\nexport function getCountryData({\n lang = 'nb',\n filter = null,\n sort = null,\n makeObject = (country: CountryType, lang: string) => {\n const content = country.i18n[lang] ?? country.i18n.en\n return {\n selectedKey: country.iso,\n content,\n }\n },\n}: GetCountryData = {}) {\n return countries\n .filter((country) => {\n if (typeof filter === 'function') {\n return filter(country)\n }\n\n return !filter\n })\n .sort(({ i18n: a }, { i18n: b }) => {\n if (sort === 'Prioritized') {\n const indexA = prioritizedCountries.indexOf(a['en'])\n const indexB = prioritizedCountries.indexOf(b['en'])\n\n const priorityA = indexA !== -1\n const priorityB = indexB !== -1\n\n if (priorityA && priorityB) {\n return indexA - indexB\n } else if (priorityA) {\n return -1\n } else if (priorityB) {\n return 1\n }\n }\n\n return a[lang].localeCompare(b[lang])\n })\n .map((country) => makeObject(country, lang))\n}\n\nexport function makeCountryFilterSet(ccFilter: CountryFilterSet) {\n return (country: CountryType) => {\n switch (ccFilter) {\n case 'Scandinavia':\n case 'Nordic':\n return country.regions?.includes(ccFilter)\n case 'Europe':\n return country.continent.includes(ccFilter)\n }\n return true\n }\n}\n\nSelectCountry._supportsSpacingProps = true\nexport default SelectCountry\n"],"mappings":"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"}
1
+ {"version":3,"file":"SelectCountry.js","names":["React","useCallback","useContext","useMemo","classnames","SharedContext","Autocomplete","HelpButton","pickSpacingProps","countries","prioritizedCountries","useFieldProps","FieldBlock","useErrorMessage","useTranslation","SelectCountry","props","_sharedContext$locale","sharedContext","translations","lang","locale","split","errorMessages","path","required","errorRequired","defaultProps","preparedProps","_objectSpread","className","placeholder","label","ccFilter","info","warning","error","hasError","disabled","value","width","help","htmlAttributes","handleFocus","handleBlur","handleChange","updateValue","forceUpdate","filterCountries","makeCountryFilterSet","undefined","dataRef","useRef","langRef","wasFilled","isLangChange","current","getCountryData","filter","country","iso","sort","window","requestAnimationFrame","handleCountryChange","data","newValue","selectedKey","find","fillData","onFocusHandler","updateData","onTypeHandler","currentValue","setHidden","event","_event$nativeEvent","nativeEvent","search","toLowerCase","i18n","Object","values","some","s","includes","createElement","_extends","label_direction","input_icon","on_show","on_focus","on_blur","on_change","on_type","stretch","status","show_submit_button","suffix","title","content","autoComplete","no_animation","noAnimation","makeObject","_country$i18n$lang","en","a","b","indexA","indexOf","indexB","priorityA","priorityB","localeCompare","map","_country$regions","regions","continent","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/SelectCountry/SelectCountry.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport classnames from 'classnames'\nimport SharedContext from '../../../../shared/Context'\nimport { Autocomplete, HelpButton } from '../../../../components'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport countries, {\n prioritizedCountries,\n type CountryType,\n type CountryLang,\n} from '../../constants/countries'\nimport { useFieldProps } from '../../hooks'\nimport { FieldBlockWidth, FieldHelpProps, FieldProps } from '../../types'\nimport FieldBlock from '../../FieldBlock'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\nexport type CountryFilterSet =\n | 'Scandinavia'\n | 'Nordic'\n | 'Europe'\n | 'Prioritized'\n\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined | string> & {\n countries?: CountryFilterSet\n\n // Styling\n width?: FieldBlockWidth\n\n /**\n * For internal use only.\n *\n * @param country\n * @returns boolean\n */\n filterCountries?: (country: CountryType) => boolean\n\n /**\n * For internal testing purposes\n */\n noAnimation?: boolean\n }\n\nfunction SelectCountry(props: Props) {\n const sharedContext = useContext(SharedContext)\n const translations = useTranslation().SelectCountry\n const lang = sharedContext.locale?.split('-')[0] as CountryLang\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.errorRequired,\n })\n\n const defaultProps: Partial<Props> = {\n errorMessages,\n }\n const preparedProps: Props = {\n ...defaultProps,\n ...props,\n }\n\n const {\n className,\n placeholder = translations.placeholder,\n label = translations.label,\n countries: ccFilter = 'Prioritized',\n info,\n warning,\n error,\n hasError,\n disabled,\n value,\n width = 'large',\n help,\n htmlAttributes,\n handleFocus,\n handleBlur,\n handleChange,\n updateValue,\n forceUpdate,\n filterCountries = ccFilter !== 'Prioritized'\n ? makeCountryFilterSet(ccFilter)\n : undefined,\n } = useFieldProps(preparedProps)\n\n const dataRef = React.useRef(null)\n const langRef = React.useRef(lang)\n const wasFilled = React.useRef(false)\n\n /**\n * We do not process the whole country list at the first render.\n * Only when the Autocomplete opens (focus).\n * To achieve this, we use memo instead of effect to update refs in sync.\n *\n * We set or update the data list depending on if the countrycode changes or lang changes.\n * We then update data set when value changes.\n */\n useMemo(() => {\n const isLangChange = lang !== langRef.current\n\n if (isLangChange || !wasFilled.current) {\n langRef.current = lang\n dataRef.current = getCountryData({\n lang,\n filter: !wasFilled.current\n ? (country) => country.iso === props.value\n : filterCountries,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n })\n\n // To force Autocomplete to re-evaluate the internal data\n if (isLangChange && props.value && typeof window !== 'undefined') {\n updateValue(null)\n window.requestAnimationFrame(() => {\n updateValue(props.value)\n })\n }\n }\n }, [lang, filterCountries, ccFilter, updateValue, props.value])\n\n const handleCountryChange = useCallback(\n ({ data }: { data: { selectedKey: string } }) => {\n const newValue = data?.selectedKey\n const country = countries.find(({ iso }) => newValue === iso)\n if (country?.iso) {\n handleChange(country.iso, country)\n }\n },\n [handleChange]\n )\n\n const fillData = useCallback(() => {\n if (!wasFilled.current) {\n wasFilled.current = true\n dataRef.current = getCountryData({\n lang: langRef.current,\n filter: filterCountries,\n sort: ccFilter as Extract<CountryFilterSet, 'Prioritized'>,\n })\n forceUpdate()\n }\n }, [ccFilter, filterCountries, forceUpdate])\n\n const onFocusHandler = useCallback(\n ({ updateData }) => {\n fillData()\n updateData(dataRef.current)\n handleFocus()\n },\n [fillData, handleFocus]\n )\n\n const onTypeHandler = useCallback(\n ({ value: currentValue, setHidden, event }) => {\n // Handle browser autofill/autocomplete\n if (typeof event?.nativeEvent?.data === 'undefined') {\n const search = currentValue.toLowerCase()\n const country = countries.find(({ i18n }) =>\n Object.values(i18n).some((s) => s.toLowerCase().includes(search))\n )\n if (country?.iso) {\n setHidden()\n handleChange(country.iso, country)\n }\n }\n },\n [handleChange]\n )\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-select-country', className)}\n width={width}\n info={info}\n warning={warning}\n error={error}\n {...pickSpacingProps(props)}\n >\n <Autocomplete\n placeholder={placeholder}\n label_direction=\"vertical\"\n label={label}\n input_icon={false}\n data={dataRef.current}\n value={value}\n disabled={disabled}\n on_show={fillData}\n on_focus={onFocusHandler}\n on_blur={handleBlur}\n on_change={handleCountryChange}\n on_type={onTypeHandler}\n stretch\n status={hasError ? 'error' : undefined}\n show_submit_button\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined\n }\n autoComplete=\"country-name\"\n no_animation={props.noAnimation}\n {...htmlAttributes}\n />\n </FieldBlock>\n )\n}\n\ntype GetCountryData = {\n lang?: CountryLang\n filter?: Props['filterCountries']\n sort?: Extract<CountryFilterSet, 'Prioritized'>\n makeObject?: (\n country: CountryType,\n lang: string\n ) => {\n selectedKey: string\n selected_value?: string\n content: string\n }\n}\n\nexport function getCountryData({\n lang = 'nb',\n filter = null,\n sort = null,\n makeObject = (country: CountryType, lang: string) => {\n const content = country.i18n[lang] ?? country.i18n.en\n return {\n selectedKey: country.iso,\n content,\n }\n },\n}: GetCountryData = {}) {\n return countries\n .filter((country) => {\n if (typeof filter === 'function') {\n return filter(country)\n }\n\n return !filter\n })\n .sort(({ i18n: a }, { i18n: b }) => {\n if (sort === 'Prioritized') {\n const indexA = prioritizedCountries.indexOf(a['en'])\n const indexB = prioritizedCountries.indexOf(b['en'])\n\n const priorityA = indexA !== -1\n const priorityB = indexB !== -1\n\n if (priorityA && priorityB) {\n return indexA - indexB\n } else if (priorityA) {\n return -1\n } else if (priorityB) {\n return 1\n }\n }\n\n return a[lang].localeCompare(b[lang])\n })\n .map((country) => makeObject(country, lang))\n}\n\nexport function makeCountryFilterSet(ccFilter: CountryFilterSet) {\n return (country: CountryType) => {\n switch (ccFilter) {\n case 'Scandinavia':\n case 'Nordic':\n return country.regions?.includes(ccFilter)\n case 'Europe':\n return country.continent.includes(ccFilter)\n }\n return true\n }\n}\n\nSelectCountry._supportsSpacingProps = true\nexport default SelectCountry\n"],"mappings":"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"}
@@ -1,16 +1,23 @@
1
1
  import React from 'react';
2
- import { FieldProps, FieldHelpProps } from '../../types';
2
+ import { FieldProps, FieldHelpProps, FieldBlockWidth } from '../../types';
3
3
  import type { FormStatusText } from '../../../../components/FormStatus';
4
+ import type { AutocompleteAllProps, AutocompleteProps } from '../../../../components/Autocomplete';
5
+ import type { DropdownAllProps, DropdownProps } from '../../../../components/Dropdown';
6
+ import { ToCamelCase } from '../../../../shared/helpers/withCamelCaseProps';
4
7
  interface IOption {
5
8
  title: string | React.ReactNode;
6
9
  value: number | string;
7
10
  status: FormStatusText;
8
11
  }
12
+ export type Data = AutocompleteAllProps['data'] | DropdownAllProps['data'];
9
13
  export type Props = FieldHelpProps & FieldProps<IOption['value']> & {
10
- children?: React.ReactNode;
11
- variant?: 'dropdown' | 'radio' | 'button';
14
+ variant?: 'dropdown' | 'autocomplete' | 'radio' | 'button';
12
15
  optionsLayout?: 'horizontal' | 'vertical';
13
- width?: 'small' | 'medium' | 'large' | 'stretch';
16
+ children?: React.ReactNode;
17
+ autocompleteProps?: ToCamelCase<AutocompleteProps>;
18
+ dropdownProps?: ToCamelCase<DropdownProps>;
19
+ data?: Data;
20
+ width?: FieldBlockWidth;
14
21
  };
15
22
  declare function Selection(props: Props): import("react/jsx-runtime").JSX.Element;
16
23
  declare namespace Selection {
@@ -1,20 +1,20 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
3
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
- var _em;
5
4
  const _excluded = ["error", "title", "children"],
6
5
  _excluded2 = ["value", "title", "status"];
7
6
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8
7
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
9
8
  import React, { useMemo, useCallback } from 'react';
10
- import { ToggleButton, Dropdown, Radio, HelpButton } from '../../../../components';
11
9
  import classnames from 'classnames';
12
10
  import { makeUniqueId } from '../../../../shared/component-helper';
13
- import OptionField from '../Option';
11
+ import { ToggleButton, Dropdown, Radio, HelpButton, Autocomplete } from '../../../../components';
12
+ import OptionField, { makeOptions } from '../Option';
14
13
  import { useFieldProps } from '../../hooks';
15
- import { FormError } from '../../types';
16
14
  import { pickSpacingProps } from '../../../../components/flex/utils';
17
15
  import FieldBlock from '../../FieldBlock';
16
+ import { FormError } from '../../types';
17
+ import { convertCamelCaseProps } from '../../../../shared/helpers/withCamelCaseProps';
18
18
  function Selection(props) {
19
19
  const clearValue = useMemo(() => `clear-option-${makeUniqueId()}`, []);
20
20
  const {
@@ -38,7 +38,10 @@ function Selection(props) {
38
38
  htmlAttributes,
39
39
  setHasFocus,
40
40
  handleChange,
41
- children
41
+ children,
42
+ data,
43
+ autocompleteProps,
44
+ dropdownProps
42
45
  } = useFieldProps(props);
43
46
  const handleDropdownChange = useCallback(({
44
47
  data: {
@@ -121,37 +124,19 @@ function Selection(props) {
121
124
  }, htmlAttributes, rest));
122
125
  })));
123
126
  }
127
+ case 'autocomplete':
124
128
  case 'dropdown':
125
129
  {
126
- const optionsData = React.Children.map(children, child => {
127
- if (React.isValidElement(child) && child.type === OptionField) {
128
- var _child$props$value, _ref, _child$props$children, _child$props$children2;
129
- return child.props.text ? {
130
- selectedKey: String((_child$props$value = child.props.value) !== null && _child$props$value !== void 0 ? _child$props$value : ''),
131
- content: [(_ref = (_child$props$children = child.props.children) !== null && _child$props$children !== void 0 ? _child$props$children : child.props.title) !== null && _ref !== void 0 ? _ref : _em || (_em = React.createElement("em", null, "Untitled")), child.props.text]
132
- } : {
133
- selectedKey: child.props.value,
134
- content: (_child$props$children2 = child.props.children) !== null && _child$props$children2 !== void 0 ? _child$props$children2 : child.props.title
135
- };
136
- }
137
- if (child) {
138
- return {
139
- content: child
140
- };
141
- }
142
- }).filter(Boolean);
143
- return React.createElement(FieldBlock, _extends({}, fieldBlockProps, {
144
- width: width
145
- }), React.createElement(Dropdown, _extends({
146
- id: id,
147
- list_class: "dnb-forms-field-selection__list",
148
- portal_class: "dnb-forms-field-selection__portal",
130
+ const sharedProps = _objectSpread(_objectSpread({
131
+ id,
132
+ list_class: 'dnb-forms-field-selection__list',
133
+ portal_class: 'dnb-forms-field-selection__portal',
149
134
  title: placeholder,
150
135
  value: String(value !== null && value !== void 0 ? value : ''),
151
136
  status: (hasError || status) && 'error',
152
- disabled: disabled
153
- }, htmlAttributes, {
154
- data: optionsData,
137
+ disabled
138
+ }, htmlAttributes), {}, {
139
+ data: data !== null && data !== void 0 ? data : makeOptions(children),
155
140
  suffix: help ? React.createElement(HelpButton, {
156
141
  title: help.title
157
142
  }, help.content) : undefined,
@@ -159,7 +144,10 @@ function Selection(props) {
159
144
  on_show: handleShow,
160
145
  on_hide: handleHide,
161
146
  stretch: true
162
- })));
147
+ });
148
+ return React.createElement(FieldBlock, _extends({}, fieldBlockProps, {
149
+ width: width
150
+ }), variant === 'autocomplete' ? React.createElement(Autocomplete, _extends({}, sharedProps, autocompleteProps ? convertCamelCaseProps(autocompleteProps) : null)) : React.createElement(Dropdown, _extends({}, sharedProps, dropdownProps ? convertCamelCaseProps(dropdownProps) : null)));
163
151
  }
164
152
  }
165
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Selection.js","names":["React","useMemo","useCallback","ToggleButton","Dropdown","Radio","HelpButton","classnames","makeUniqueId","OptionField","useFieldProps","FormError","pickSpacingProps","FieldBlock","Selection","props","clearValue","id","className","variant","label","labelDescription","layout","optionsLayout","placeholder","value","info","warning","error","hasError","disabled","help","emptyValue","width","htmlAttributes","setHasFocus","handleChange","children","handleDropdownChange","data","selectedKey","onChangeHandler","undefined","handleShow","handleHide","cn","fieldBlockProps","_objectSpread","forId","getStatus","_error$message","message","Error","toString","status","options","Children","toArray","filter","child","isValidElement","type","map","option","_option$props","title","rest","_objectWithoutProperties","_excluded","Component","createElement","Group","layout_direction","on_change","String","i","_excluded2","_extends","length","key","text","optionsData","_child$props$value","_ref","_child$props$children","_child$props$children2","content","_em","Boolean","list_class","portal_class","suffix","on_show","on_hide","stretch","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Selection/Selection.tsx"],"sourcesContent":["import React, { useMemo, useCallback } from 'react'\nimport {\n ToggleButton,\n Dropdown,\n Radio,\n HelpButton,\n} from '../../../../components'\nimport classnames from 'classnames'\nimport { makeUniqueId } from '../../../../shared/component-helper'\nimport OptionField from '../Option'\nimport { useFieldProps } from '../../hooks'\nimport { FormError, FieldProps, FieldHelpProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport type { FormStatusText } from '../../../../components/FormStatus'\nimport FieldBlock from '../../FieldBlock'\n\ninterface IOption {\n title: string | React.ReactNode\n value: number | string\n status: FormStatusText\n}\n\nexport type Props = FieldHelpProps &\n FieldProps<IOption['value']> & {\n children?: React.ReactNode\n variant?: 'dropdown' | 'radio' | 'button'\n optionsLayout?: 'horizontal' | 'vertical'\n width?: 'small' | 'medium' | 'large' | 'stretch'\n }\n\nfunction Selection(props: Props) {\n const clearValue = useMemo(() => `clear-option-${makeUniqueId()}`, [])\n\n const {\n id,\n className,\n variant = 'dropdown',\n label,\n labelDescription,\n layout = 'vertical',\n optionsLayout = 'vertical',\n placeholder,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n emptyValue,\n width = 'large',\n htmlAttributes,\n setHasFocus,\n handleChange,\n children,\n } = useFieldProps(props)\n\n const handleDropdownChange = useCallback(\n ({ data: { selectedKey } }) => {\n handleChange?.(\n !selectedKey || selectedKey === clearValue\n ? emptyValue\n : selectedKey\n )\n },\n [handleChange, emptyValue, clearValue]\n )\n\n const onChangeHandler = useCallback(\n ({ value }) => {\n handleChange?.(value === undefined ? emptyValue : value)\n },\n [handleChange, emptyValue]\n )\n\n // Specific handleShow and handleHide because Dropdown preserve the initially received callbacks, so changes\n // due to `useCallback` usage will have no effect, leading to useFieldPropss handleFocus and handleBlur sending out old\n // copies of value as arguments.\n const handleShow = useCallback(\n ({ data }) => {\n setHasFocus(true, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const handleHide = useCallback(\n ({ data }) => {\n setHasFocus(false, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const cn = classnames(\n 'dnb-forms-field-selection',\n `dnb-forms-field-selection__variant--${variant}`,\n `dnb-forms-field-selection__options-layout--${optionsLayout}`,\n className\n )\n\n const fieldBlockProps = {\n forId: id,\n className: cn,\n ...pickSpacingProps(props),\n info,\n warning,\n error,\n layout,\n label,\n labelDescription,\n }\n\n const getStatus = useCallback(\n (error: Error | FormError | undefined) => {\n return (\n error?.message ??\n ((warning instanceof Error && warning.message) ||\n (warning instanceof FormError && warning.message) ||\n warning?.toString() ||\n (info instanceof Error && info.message) ||\n (info instanceof FormError && info.message) ||\n info?.toString())\n )\n },\n [info, warning]\n )\n\n const status = getStatus(error)\n\n switch (variant) {\n case 'radio':\n case 'button': {\n const options: IOption[] = React.Children.toArray(children)\n .filter(\n (child) =>\n React.isValidElement(child) && child.type === OptionField\n )\n .map((option: React.ReactElement) => {\n const { error, title, children, ...rest } = option.props\n const status = getStatus(error)\n\n return {\n title: title ?? children,\n status,\n ...rest,\n }\n })\n\n const Component = (\n variant === 'radio' ? Radio : ToggleButton\n ) as typeof Radio & typeof ToggleButton\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Component.Group\n className={cn}\n layout_direction={\n optionsLayout === 'horizontal' ? 'row' : 'column'\n }\n disabled={disabled}\n on_change={onChangeHandler}\n value={String(value ?? '')}\n >\n {options.map((option, i) => {\n const { value, title, status, ...rest } = option\n return (\n <Component\n id={options.length === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n label={variant === 'radio' ? title : undefined}\n text={variant === 'button' ? title : undefined}\n value={String(value ?? '')}\n status={(hasError || status) && 'error'}\n {...htmlAttributes}\n {...rest}\n />\n )\n })}\n </Component.Group>\n </FieldBlock>\n )\n }\n\n case 'dropdown': {\n const optionsData = React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child.type === OptionField) {\n // Option components\n return child.props.text\n ? {\n selectedKey: String(child.props.value ?? ''),\n content: [\n child.props.children ?? child.props.title ?? (\n <em>Untitled</em>\n ),\n child.props.text,\n ],\n }\n : {\n selectedKey: child.props.value,\n content: child.props.children ?? child.props.title,\n }\n }\n\n if (child) {\n // For other children, just show them as content\n return {\n content: child,\n }\n }\n }).filter(Boolean)\n\n return (\n <FieldBlock {...fieldBlockProps} width={width}>\n <Dropdown\n id={id}\n list_class=\"dnb-forms-field-selection__list\"\n portal_class=\"dnb-forms-field-selection__portal\"\n title={placeholder}\n value={String(value ?? '')}\n status={(hasError || status) && 'error'}\n disabled={disabled}\n {...htmlAttributes}\n data={optionsData}\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined\n }\n on_change={handleDropdownChange}\n on_show={handleShow}\n on_hide={handleHide}\n stretch\n />\n </FieldBlock>\n )\n }\n }\n}\n\nSelection._supportsSpacingProps = true\nexport default Selection\n"],"mappings":"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"}
1
+ {"version":3,"file":"Selection.js","names":["React","useMemo","useCallback","classnames","makeUniqueId","ToggleButton","Dropdown","Radio","HelpButton","Autocomplete","OptionField","makeOptions","useFieldProps","pickSpacingProps","FieldBlock","FormError","convertCamelCaseProps","Selection","props","clearValue","id","className","variant","label","labelDescription","layout","optionsLayout","placeholder","value","info","warning","error","hasError","disabled","help","emptyValue","width","htmlAttributes","setHasFocus","handleChange","children","data","autocompleteProps","dropdownProps","handleDropdownChange","selectedKey","onChangeHandler","undefined","handleShow","handleHide","cn","fieldBlockProps","_objectSpread","forId","getStatus","_error$message","message","Error","toString","status","options","Children","toArray","filter","child","isValidElement","type","map","option","_option$props","title","rest","_objectWithoutProperties","_excluded","Component","createElement","Group","layout_direction","on_change","String","i","_excluded2","_extends","length","key","text","sharedProps","list_class","portal_class","suffix","content","on_show","on_hide","stretch","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Selection/Selection.tsx"],"sourcesContent":["import React, { useMemo, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { makeUniqueId } from '../../../../shared/component-helper'\nimport {\n ToggleButton,\n Dropdown,\n Radio,\n HelpButton,\n Autocomplete,\n} from '../../../../components'\nimport OptionField, { makeOptions } from '../Option'\nimport { useFieldProps } from '../../hooks'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport FieldBlock from '../../FieldBlock'\nimport {\n FormError,\n FieldProps,\n FieldHelpProps,\n FieldBlockWidth,\n} from '../../types'\nimport type { FormStatusText } from '../../../../components/FormStatus'\nimport type {\n AutocompleteAllProps,\n AutocompleteProps,\n} from '../../../../components/Autocomplete'\nimport type {\n DropdownAllProps,\n DropdownProps,\n} from '../../../../components/Dropdown'\nimport {\n convertCamelCaseProps,\n ToCamelCase,\n} from '../../../../shared/helpers/withCamelCaseProps'\n\ninterface IOption {\n title: string | React.ReactNode\n value: number | string\n status: FormStatusText\n}\n\nexport type Data = AutocompleteAllProps['data'] | DropdownAllProps['data']\n\nexport type Props = FieldHelpProps &\n FieldProps<IOption['value']> & {\n variant?: 'dropdown' | 'autocomplete' | 'radio' | 'button'\n optionsLayout?: 'horizontal' | 'vertical'\n children?: React.ReactNode\n\n // - Autocomplete and Dropdown specific props\n autocompleteProps?: ToCamelCase<AutocompleteProps>\n dropdownProps?: ToCamelCase<DropdownProps>\n data?: Data\n width?: FieldBlockWidth\n }\n\nfunction Selection(props: Props) {\n const clearValue = useMemo(() => `clear-option-${makeUniqueId()}`, [])\n\n const {\n id,\n className,\n variant = 'dropdown',\n label,\n labelDescription,\n layout = 'vertical',\n optionsLayout = 'vertical',\n placeholder,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n emptyValue,\n width = 'large',\n htmlAttributes,\n setHasFocus,\n handleChange,\n children,\n\n // - Autocomplete and Dropdown specific props\n data,\n autocompleteProps,\n dropdownProps,\n } = useFieldProps(props)\n\n const handleDropdownChange = useCallback(\n ({ data: { selectedKey } }) => {\n handleChange?.(\n !selectedKey || selectedKey === clearValue\n ? emptyValue\n : selectedKey\n )\n },\n [handleChange, emptyValue, clearValue]\n )\n\n const onChangeHandler = useCallback(\n ({ value }) => {\n handleChange?.(value === undefined ? emptyValue : value)\n },\n [handleChange, emptyValue]\n )\n\n // Specific handleShow and handleHide because Dropdown preserve the initially received callbacks, so changes\n // due to `useCallback` usage will have no effect, leading to useFieldPropss handleFocus and handleBlur sending out old\n // copies of value as arguments.\n const handleShow = useCallback(\n ({ data }) => {\n setHasFocus(true, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const handleHide = useCallback(\n ({ data }) => {\n setHasFocus(false, data?.selectedKey)\n },\n [setHasFocus]\n )\n\n const cn = classnames(\n 'dnb-forms-field-selection',\n `dnb-forms-field-selection__variant--${variant}`,\n `dnb-forms-field-selection__options-layout--${optionsLayout}`,\n className\n )\n\n const fieldBlockProps = {\n forId: id,\n className: cn,\n ...pickSpacingProps(props),\n info,\n warning,\n error,\n layout,\n label,\n labelDescription,\n }\n\n const getStatus = useCallback(\n (error: Error | FormError | undefined) => {\n return (\n error?.message ??\n ((warning instanceof Error && warning.message) ||\n (warning instanceof FormError && warning.message) ||\n warning?.toString() ||\n (info instanceof Error && info.message) ||\n (info instanceof FormError && info.message) ||\n info?.toString())\n )\n },\n [info, warning]\n )\n\n const status = getStatus(error)\n\n switch (variant) {\n case 'radio':\n case 'button': {\n const options: IOption[] = React.Children.toArray(children)\n .filter(\n (child) =>\n React.isValidElement(child) && child.type === OptionField\n )\n .map((option: React.ReactElement) => {\n const { error, title, children, ...rest } = option.props\n const status = getStatus(error)\n\n return {\n title: title ?? children,\n status,\n ...rest,\n }\n })\n\n const Component = (\n variant === 'radio' ? Radio : ToggleButton\n ) as typeof Radio & typeof ToggleButton\n\n return (\n <FieldBlock {...fieldBlockProps}>\n <Component.Group\n className={cn}\n layout_direction={\n optionsLayout === 'horizontal' ? 'row' : 'column'\n }\n disabled={disabled}\n on_change={onChangeHandler}\n value={String(value ?? '')}\n >\n {options.map((option, i) => {\n const { value, title, status, ...rest } = option\n return (\n <Component\n id={options.length === 1 ? id : undefined}\n key={`option-${i}-${value}`}\n label={variant === 'radio' ? title : undefined}\n text={variant === 'button' ? title : undefined}\n value={String(value ?? '')}\n status={(hasError || status) && 'error'}\n {...htmlAttributes}\n {...rest}\n />\n )\n })}\n </Component.Group>\n </FieldBlock>\n )\n }\n\n case 'autocomplete':\n case 'dropdown': {\n const sharedProps: AutocompleteAllProps & DropdownAllProps = {\n id,\n list_class: 'dnb-forms-field-selection__list',\n portal_class: 'dnb-forms-field-selection__portal',\n title: placeholder,\n value: String(value ?? ''),\n status: (hasError || status) && 'error',\n disabled,\n ...htmlAttributes,\n data: data ?? makeOptions<Data>(children),\n suffix: help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n on_change: handleDropdownChange,\n on_show: handleShow,\n on_hide: handleHide,\n stretch: true,\n }\n\n return (\n <FieldBlock {...fieldBlockProps} width={width}>\n {variant === 'autocomplete' ? (\n <Autocomplete\n {...sharedProps}\n {...(autocompleteProps\n ? (convertCamelCaseProps(\n autocompleteProps\n ) as AutocompleteAllProps)\n : null)}\n />\n ) : (\n <Dropdown\n {...sharedProps}\n {...(dropdownProps\n ? (convertCamelCaseProps(\n dropdownProps\n ) as DropdownAllProps)\n : null)}\n />\n )}\n </FieldBlock>\n )\n }\n }\n}\n\nSelection._supportsSpacingProps = true\nexport default Selection\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { PropertiesTableProps } from '../../../../shared/types';
2
+ export declare const SelectionProperties: PropertiesTableProps;
@@ -0,0 +1,38 @@
1
+ export const SelectionProperties = {
2
+ variant: {
3
+ doc: 'Choice of UI feature. Can be: `dropdown`, `autocomplete`, `radio` or `button`.',
4
+ type: 'string',
5
+ status: 'optional'
6
+ },
7
+ optionsLayout: {
8
+ doc: 'Layout for the list of options. Can be `horizontal` or `vertical`.',
9
+ type: 'string',
10
+ status: 'optional'
11
+ },
12
+ width: {
13
+ doc: '`small`, `medium` or `large` for predefined standard widths, `stretch` for fill available width.',
14
+ type: ['string', 'false'],
15
+ status: 'optional'
16
+ },
17
+ help: {
18
+ doc: 'Provide a help button. Object consisting of `title` and `content`.',
19
+ type: 'object',
20
+ status: 'optional'
21
+ },
22
+ autocompleteProps: {
23
+ doc: 'Forward any additional props (camelCase) to the [Autocomplete](/uilib/components/autocomplete/) component.',
24
+ type: 'object',
25
+ status: 'optional'
26
+ },
27
+ dropdownProps: {
28
+ doc: 'Forward any additional props (camelCase) to the [Dropdown](/uilib/components/dropdown/) component.',
29
+ type: 'object',
30
+ status: 'optional'
31
+ },
32
+ children: {
33
+ doc: 'For providing Option components.',
34
+ type: 'React.Node',
35
+ status: 'optional'
36
+ }
37
+ };
38
+ //# sourceMappingURL=SelectionDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectionDocs.js","names":["SelectionProperties","variant","doc","type","status","optionsLayout","width","help","autocompleteProps","dropdownProps","children"],"sources":["../../../../../../src/extensions/forms/Field/Selection/SelectionDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const SelectionProperties: PropertiesTableProps = {\n variant: {\n doc: 'Choice of UI feature. Can be: `dropdown`, `autocomplete`, `radio` or `button`.',\n type: 'string',\n status: 'optional',\n },\n optionsLayout: {\n doc: 'Layout for the list of options. Can be `horizontal` or `vertical`.',\n type: 'string',\n status: 'optional',\n },\n width: {\n doc: '`small`, `medium` or `large` for predefined standard widths, `stretch` for fill available width.',\n type: ['string', 'false'],\n status: 'optional',\n },\n help: {\n doc: 'Provide a help button. Object consisting of `title` and `content`.',\n type: 'object',\n status: 'optional',\n },\n autocompleteProps: {\n doc: 'Forward any additional props (camelCase) to the [Autocomplete](/uilib/components/autocomplete/) component.',\n type: 'object',\n status: 'optional',\n },\n dropdownProps: {\n doc: 'Forward any additional props (camelCase) to the [Dropdown](/uilib/components/dropdown/) component.',\n type: 'object',\n status: 'optional',\n },\n children: {\n doc: 'For providing Option components.',\n type: 'React.Node',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,mBAAyC,GAAG;EACvDC,OAAO,EAAE;IACPC,GAAG,EAAE,gFAAgF;IACrFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,aAAa,EAAE;IACbH,GAAG,EAAE,oEAAoE;IACzEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,KAAK,EAAE;IACLJ,GAAG,EAAE,kGAAkG;IACvGC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDG,IAAI,EAAE;IACJL,GAAG,EAAE,oEAAoE;IACzEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,iBAAiB,EAAE;IACjBN,GAAG,EAAE,4GAA4G;IACjHC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDK,aAAa,EAAE;IACbP,GAAG,EAAE,oGAAoG;IACzGC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDM,QAAQ,EAAE;IACRR,GAAG,EAAE,kCAAkC;IACvCC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV;AACF,CAAC"}
@@ -3,7 +3,7 @@ import { InputProps } from '../../../../components/input/Input';
3
3
  import { InputMaskedProps } from '../../../../components/InputMasked';
4
4
  import { TextareaProps } from '../../../../components/Textarea';
5
5
  import type { TextCounterProps } from '../../../../fragments/TextCounter';
6
- import type { FieldProps, FieldHelpProps, CustomErrorMessages } from '../../types';
6
+ import type { FieldProps, FieldHelpProps, CustomErrorMessages, FieldBlockWidth } from '../../types';
7
7
  interface ErrorMessages extends CustomErrorMessages {
8
8
  required?: string;
9
9
  schema?: string;
@@ -15,7 +15,7 @@ export type Props = FieldHelpProps & FieldProps<string, undefined | string, Erro
15
15
  multiline?: boolean;
16
16
  inputClassName?: string;
17
17
  innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>;
18
- width?: false | 'small' | 'medium' | 'large' | 'stretch';
18
+ width?: FieldBlockWidth;
19
19
  size?: InputProps['size'] | TextareaProps['size'];
20
20
  keepPlaceholder?: InputProps['keep_placeholder'];
21
21
  minLength?: number;