@dnb/eufemia 10.23.0 → 10.24.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 (369) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +18 -0
  3. package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
  4. package/cjs/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +20 -0
  5. package/cjs/components/anchor/Anchor.d.ts +1 -1
  6. package/cjs/components/anchor/Anchor.js +2 -2
  7. package/cjs/components/anchor/Anchor.js.map +1 -1
  8. package/cjs/components/anchor/style/anchor-mixins.scss +46 -3
  9. package/cjs/components/anchor/style/dnb-anchor.css +73 -4
  10. package/cjs/components/anchor/style/dnb-anchor.min.css +1 -1
  11. package/cjs/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +2 -14
  12. package/cjs/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
  13. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +2 -46
  14. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  15. package/cjs/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +1 -32
  16. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.css +2 -14
  17. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  18. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.scss +1 -8
  19. package/cjs/components/breadcrumb/style/dnb-breadcrumb.css +1 -1
  20. package/cjs/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  21. package/cjs/components/breadcrumb/style/dnb-breadcrumb.scss +1 -1
  22. package/cjs/components/button/Button.js +1 -1
  23. package/cjs/components/button/Button.js.map +1 -1
  24. package/cjs/components/flex/style/dnb-flex.css +1 -1
  25. package/cjs/components/flex/style/dnb-flex.min.css +1 -1
  26. package/cjs/components/flex/style/flex-stack.scss +1 -1
  27. package/cjs/components/icon/style/dnb-icon.css +2 -2
  28. package/cjs/components/icon/style/dnb-icon.min.css +1 -1
  29. package/cjs/components/icon/style/dnb-icon.scss +1 -1
  30. package/cjs/components/input/Input.js +1 -1
  31. package/cjs/components/input/Input.js.map +1 -1
  32. package/cjs/components/table/style/dnb-table.css +6 -0
  33. package/cjs/components/table/style/dnb-table.min.css +1 -1
  34. package/cjs/components/table/style/table-th.scss +9 -25
  35. package/cjs/components/table/style/themes/dnb-table-theme-sbanken.css +1 -1
  36. package/cjs/components/table/style/themes/dnb-table-theme-sbanken.min.css +1 -1
  37. package/cjs/components/table/style/themes/dnb-table-theme-sbanken.scss +2 -1
  38. package/cjs/components/table/style/themes/dnb-table-theme-ui.css +1 -1
  39. package/cjs/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  40. package/cjs/components/table/style/themes/dnb-table-theme-ui.scss +2 -2
  41. package/cjs/components/textarea/Textarea.d.ts +9 -0
  42. package/cjs/components/textarea/Textarea.js +21 -5
  43. package/cjs/components/textarea/Textarea.js.map +1 -1
  44. package/cjs/components/textarea/TextareaDocs.js +10 -0
  45. package/cjs/components/textarea/TextareaDocs.js.map +1 -1
  46. package/cjs/components/textarea/style/dnb-textarea.css +69 -26
  47. package/cjs/components/textarea/style/dnb-textarea.min.css +1 -1
  48. package/cjs/components/textarea/style/dnb-textarea.scss +83 -31
  49. package/cjs/components/textarea/style/themes/dnb-textarea-theme-sbanken.css +15 -21
  50. package/cjs/components/textarea/style/themes/dnb-textarea-theme-sbanken.min.css +1 -1
  51. package/cjs/components/textarea/style/themes/dnb-textarea-theme-sbanken.scss +17 -28
  52. package/cjs/components/textarea/style/themes/dnb-textarea-theme-ui.css +12 -23
  53. package/cjs/components/textarea/style/themes/dnb-textarea-theme-ui.min.css +1 -1
  54. package/cjs/components/textarea/style/themes/dnb-textarea-theme-ui.scss +11 -27
  55. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +1 -2
  56. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.min.css +1 -1
  57. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +1 -2
  58. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +3 -3
  59. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  60. package/cjs/extensions/forms/Field/String/String.d.ts +6 -6
  61. package/cjs/extensions/forms/Field/String/String.js +13 -11
  62. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  63. package/cjs/extensions/forms/Form/Appearance/Appearance.js +3 -0
  64. package/cjs/extensions/forms/Form/Appearance/Appearance.js.map +1 -1
  65. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +2 -2
  66. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  67. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +2 -1
  68. package/cjs/extensions/forms/StepsLayout/Step/Step.js +2 -3
  69. package/cjs/extensions/forms/StepsLayout/Step/Step.js.map +1 -1
  70. package/cjs/extensions/forms/StepsLayout/StepsContext.d.ts +6 -4
  71. package/cjs/extensions/forms/StepsLayout/StepsContext.js +6 -1
  72. package/cjs/extensions/forms/StepsLayout/StepsContext.js.map +1 -1
  73. package/cjs/extensions/forms/StepsLayout/StepsLayout.d.ts +4 -2
  74. package/cjs/extensions/forms/StepsLayout/StepsLayout.js +83 -50
  75. package/cjs/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
  76. package/cjs/extensions/forms/StepsLayout/useStep.d.ts +3 -0
  77. package/cjs/extensions/forms/StepsLayout/useStep.js +19 -0
  78. package/cjs/extensions/forms/StepsLayout/useStep.js.map +1 -0
  79. package/cjs/extensions/forms/style/dnb-forms.css +2 -2
  80. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  81. package/cjs/extensions/forms/types.d.ts +2 -2
  82. package/cjs/extensions/forms/types.js.map +1 -1
  83. package/cjs/extensions/forms/utils/ajv.js +6 -2
  84. package/cjs/extensions/forms/utils/ajv.js.map +1 -1
  85. package/cjs/shared/Eufemia.d.ts +1 -1
  86. package/cjs/shared/Eufemia.js +2 -2
  87. package/cjs/shared/Eufemia.js.map +1 -1
  88. package/cjs/style/core/scopes.scss +1 -1
  89. package/cjs/style/dnb-ui-basis.css +1 -1
  90. package/cjs/style/dnb-ui-basis.min.css +1 -1
  91. package/cjs/style/dnb-ui-body.css +1 -1
  92. package/cjs/style/dnb-ui-body.min.css +1 -1
  93. package/cjs/style/dnb-ui-components.css +153 -36
  94. package/cjs/style/dnb-ui-components.min.css +3 -3
  95. package/cjs/style/dnb-ui-core.css +1 -1
  96. package/cjs/style/dnb-ui-core.min.css +1 -1
  97. package/cjs/style/dnb-ui-extensions.css +2 -2
  98. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  99. package/cjs/style/dnb-ui-forms.css +2 -2
  100. package/cjs/style/dnb-ui-forms.min.css +1 -1
  101. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +170 -79
  102. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +5 -5
  103. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +2 -2
  104. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  105. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +2 -2
  106. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  107. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +191 -106
  108. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +5 -5
  109. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +2 -2
  110. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  111. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +2 -2
  112. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  113. package/cjs/style/themes/theme-ui/ui-theme-components.css +170 -77
  114. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +6 -6
  115. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +2 -2
  116. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  117. package/cjs/style/themes/theme-ui/ui-theme-forms.css +2 -2
  118. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  119. package/cjs/style/themes/theme-ui/ui-theme-tags.css +37 -9
  120. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  121. package/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +18 -0
  122. package/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
  123. package/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +20 -0
  124. package/components/anchor/Anchor.d.ts +1 -1
  125. package/components/anchor/Anchor.js +2 -2
  126. package/components/anchor/Anchor.js.map +1 -1
  127. package/components/anchor/style/anchor-mixins.scss +46 -3
  128. package/components/anchor/style/dnb-anchor.css +73 -4
  129. package/components/anchor/style/dnb-anchor.min.css +1 -1
  130. package/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +2 -14
  131. package/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
  132. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +2 -46
  133. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  134. package/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +1 -32
  135. package/components/anchor/style/themes/dnb-anchor-theme-ui.css +2 -14
  136. package/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  137. package/components/anchor/style/themes/dnb-anchor-theme-ui.scss +1 -8
  138. package/components/breadcrumb/style/dnb-breadcrumb.css +1 -1
  139. package/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  140. package/components/breadcrumb/style/dnb-breadcrumb.scss +1 -1
  141. package/components/button/Button.js +1 -1
  142. package/components/button/Button.js.map +1 -1
  143. package/components/flex/style/dnb-flex.css +1 -1
  144. package/components/flex/style/dnb-flex.min.css +1 -1
  145. package/components/flex/style/flex-stack.scss +1 -1
  146. package/components/icon/style/dnb-icon.css +2 -2
  147. package/components/icon/style/dnb-icon.min.css +1 -1
  148. package/components/icon/style/dnb-icon.scss +1 -1
  149. package/components/input/Input.js +1 -1
  150. package/components/input/Input.js.map +1 -1
  151. package/components/table/style/dnb-table.css +6 -0
  152. package/components/table/style/dnb-table.min.css +1 -1
  153. package/components/table/style/table-th.scss +9 -25
  154. package/components/table/style/themes/dnb-table-theme-sbanken.css +1 -1
  155. package/components/table/style/themes/dnb-table-theme-sbanken.min.css +1 -1
  156. package/components/table/style/themes/dnb-table-theme-sbanken.scss +2 -1
  157. package/components/table/style/themes/dnb-table-theme-ui.css +1 -1
  158. package/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  159. package/components/table/style/themes/dnb-table-theme-ui.scss +2 -2
  160. package/components/textarea/Textarea.d.ts +9 -0
  161. package/components/textarea/Textarea.js +21 -5
  162. package/components/textarea/Textarea.js.map +1 -1
  163. package/components/textarea/TextareaDocs.js +10 -0
  164. package/components/textarea/TextareaDocs.js.map +1 -1
  165. package/components/textarea/style/dnb-textarea.css +69 -26
  166. package/components/textarea/style/dnb-textarea.min.css +1 -1
  167. package/components/textarea/style/dnb-textarea.scss +83 -31
  168. package/components/textarea/style/themes/dnb-textarea-theme-sbanken.css +15 -21
  169. package/components/textarea/style/themes/dnb-textarea-theme-sbanken.min.css +1 -1
  170. package/components/textarea/style/themes/dnb-textarea-theme-sbanken.scss +17 -28
  171. package/components/textarea/style/themes/dnb-textarea-theme-ui.css +12 -23
  172. package/components/textarea/style/themes/dnb-textarea-theme-ui.min.css +1 -1
  173. package/components/textarea/style/themes/dnb-textarea-theme-ui.scss +11 -27
  174. package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +1 -2
  175. package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.min.css +1 -1
  176. package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +1 -2
  177. package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.css +18 -0
  178. package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.min.css +1 -1
  179. package/es/components/accordion/style/themes/dnb-accordion-theme-sbanken.scss +20 -0
  180. package/es/components/anchor/Anchor.d.ts +1 -1
  181. package/es/components/anchor/Anchor.js +2 -2
  182. package/es/components/anchor/Anchor.js.map +1 -1
  183. package/es/components/anchor/style/anchor-mixins.scss +46 -3
  184. package/es/components/anchor/style/dnb-anchor.css +73 -4
  185. package/es/components/anchor/style/dnb-anchor.min.css +1 -1
  186. package/es/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +2 -14
  187. package/es/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
  188. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.css +2 -46
  189. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.min.css +1 -1
  190. package/es/components/anchor/style/themes/dnb-anchor-theme-sbanken.scss +1 -32
  191. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.css +2 -14
  192. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  193. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.scss +1 -8
  194. package/es/components/breadcrumb/style/dnb-breadcrumb.css +1 -1
  195. package/es/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  196. package/es/components/breadcrumb/style/dnb-breadcrumb.scss +1 -1
  197. package/es/components/button/Button.js +1 -1
  198. package/es/components/button/Button.js.map +1 -1
  199. package/es/components/flex/style/dnb-flex.css +1 -1
  200. package/es/components/flex/style/dnb-flex.min.css +1 -1
  201. package/es/components/flex/style/flex-stack.scss +1 -1
  202. package/es/components/icon/style/dnb-icon.css +2 -2
  203. package/es/components/icon/style/dnb-icon.min.css +1 -1
  204. package/es/components/icon/style/dnb-icon.scss +1 -1
  205. package/es/components/input/Input.js +1 -1
  206. package/es/components/input/Input.js.map +1 -1
  207. package/es/components/table/style/dnb-table.css +6 -0
  208. package/es/components/table/style/dnb-table.min.css +1 -1
  209. package/es/components/table/style/table-th.scss +9 -25
  210. package/es/components/table/style/themes/dnb-table-theme-sbanken.css +1 -1
  211. package/es/components/table/style/themes/dnb-table-theme-sbanken.min.css +1 -1
  212. package/es/components/table/style/themes/dnb-table-theme-sbanken.scss +2 -1
  213. package/es/components/table/style/themes/dnb-table-theme-ui.css +1 -1
  214. package/es/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  215. package/es/components/table/style/themes/dnb-table-theme-ui.scss +2 -2
  216. package/es/components/textarea/Textarea.d.ts +9 -0
  217. package/es/components/textarea/Textarea.js +21 -5
  218. package/es/components/textarea/Textarea.js.map +1 -1
  219. package/es/components/textarea/TextareaDocs.js +10 -0
  220. package/es/components/textarea/TextareaDocs.js.map +1 -1
  221. package/es/components/textarea/style/dnb-textarea.css +69 -26
  222. package/es/components/textarea/style/dnb-textarea.min.css +1 -1
  223. package/es/components/textarea/style/dnb-textarea.scss +83 -31
  224. package/es/components/textarea/style/themes/dnb-textarea-theme-sbanken.css +15 -21
  225. package/es/components/textarea/style/themes/dnb-textarea-theme-sbanken.min.css +1 -1
  226. package/es/components/textarea/style/themes/dnb-textarea-theme-sbanken.scss +17 -28
  227. package/es/components/textarea/style/themes/dnb-textarea-theme-ui.css +12 -23
  228. package/es/components/textarea/style/themes/dnb-textarea-theme-ui.min.css +1 -1
  229. package/es/components/textarea/style/themes/dnb-textarea-theme-ui.scss +11 -27
  230. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +1 -2
  231. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.min.css +1 -1
  232. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +1 -2
  233. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +3 -3
  234. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  235. package/es/extensions/forms/Field/String/String.d.ts +6 -6
  236. package/es/extensions/forms/Field/String/String.js +13 -11
  237. package/es/extensions/forms/Field/String/String.js.map +1 -1
  238. package/es/extensions/forms/Form/Appearance/Appearance.js +3 -0
  239. package/es/extensions/forms/Form/Appearance/Appearance.js.map +1 -1
  240. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +2 -2
  241. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  242. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +2 -1
  243. package/es/extensions/forms/StepsLayout/Step/Step.js +2 -3
  244. package/es/extensions/forms/StepsLayout/Step/Step.js.map +1 -1
  245. package/es/extensions/forms/StepsLayout/StepsContext.d.ts +6 -4
  246. package/es/extensions/forms/StepsLayout/StepsContext.js +6 -1
  247. package/es/extensions/forms/StepsLayout/StepsContext.js.map +1 -1
  248. package/es/extensions/forms/StepsLayout/StepsLayout.d.ts +4 -2
  249. package/es/extensions/forms/StepsLayout/StepsLayout.js +79 -49
  250. package/es/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
  251. package/es/extensions/forms/StepsLayout/useStep.d.ts +3 -0
  252. package/es/extensions/forms/StepsLayout/useStep.js +12 -0
  253. package/es/extensions/forms/StepsLayout/useStep.js.map +1 -0
  254. package/es/extensions/forms/style/dnb-forms.css +2 -2
  255. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  256. package/es/extensions/forms/types.d.ts +2 -2
  257. package/es/extensions/forms/types.js.map +1 -1
  258. package/es/extensions/forms/utils/ajv.js +6 -2
  259. package/es/extensions/forms/utils/ajv.js.map +1 -1
  260. package/es/shared/Eufemia.d.ts +1 -1
  261. package/es/shared/Eufemia.js +2 -2
  262. package/es/shared/Eufemia.js.map +1 -1
  263. package/es/style/core/scopes.scss +1 -1
  264. package/es/style/dnb-ui-basis.css +1 -1
  265. package/es/style/dnb-ui-basis.min.css +1 -1
  266. package/es/style/dnb-ui-body.css +1 -1
  267. package/es/style/dnb-ui-body.min.css +1 -1
  268. package/es/style/dnb-ui-components.css +153 -36
  269. package/es/style/dnb-ui-components.min.css +3 -3
  270. package/es/style/dnb-ui-core.css +1 -1
  271. package/es/style/dnb-ui-core.min.css +1 -1
  272. package/es/style/dnb-ui-extensions.css +2 -2
  273. package/es/style/dnb-ui-extensions.min.css +1 -1
  274. package/es/style/dnb-ui-forms.css +2 -2
  275. package/es/style/dnb-ui-forms.min.css +1 -1
  276. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +170 -79
  277. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +5 -5
  278. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +2 -2
  279. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  280. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +2 -2
  281. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  282. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +191 -106
  283. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +5 -5
  284. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +2 -2
  285. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  286. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +2 -2
  287. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  288. package/es/style/themes/theme-ui/ui-theme-components.css +170 -77
  289. package/es/style/themes/theme-ui/ui-theme-components.min.css +6 -6
  290. package/es/style/themes/theme-ui/ui-theme-extensions.css +2 -2
  291. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  292. package/es/style/themes/theme-ui/ui-theme-forms.css +2 -2
  293. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  294. package/es/style/themes/theme-ui/ui-theme-tags.css +37 -9
  295. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  296. package/esm/dnb-ui-basis.min.mjs +1 -1
  297. package/esm/dnb-ui-components.min.mjs +1 -1
  298. package/esm/dnb-ui-elements.min.mjs +1 -1
  299. package/esm/dnb-ui-extensions.min.mjs +2 -2
  300. package/esm/dnb-ui-lib.min.mjs +1 -1
  301. package/extensions/forms/DataContext/Provider/ProviderDocs.js +3 -3
  302. package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  303. package/extensions/forms/Field/String/String.d.ts +6 -6
  304. package/extensions/forms/Field/String/String.js +13 -11
  305. package/extensions/forms/Field/String/String.js.map +1 -1
  306. package/extensions/forms/Form/Appearance/Appearance.js +3 -0
  307. package/extensions/forms/Form/Appearance/Appearance.js.map +1 -1
  308. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +2 -2
  309. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  310. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +2 -1
  311. package/extensions/forms/StepsLayout/Step/Step.js +2 -3
  312. package/extensions/forms/StepsLayout/Step/Step.js.map +1 -1
  313. package/extensions/forms/StepsLayout/StepsContext.d.ts +6 -4
  314. package/extensions/forms/StepsLayout/StepsContext.js +6 -1
  315. package/extensions/forms/StepsLayout/StepsContext.js.map +1 -1
  316. package/extensions/forms/StepsLayout/StepsLayout.d.ts +4 -2
  317. package/extensions/forms/StepsLayout/StepsLayout.js +82 -51
  318. package/extensions/forms/StepsLayout/StepsLayout.js.map +1 -1
  319. package/extensions/forms/StepsLayout/useStep.d.ts +3 -0
  320. package/extensions/forms/StepsLayout/useStep.js +13 -0
  321. package/extensions/forms/StepsLayout/useStep.js.map +1 -0
  322. package/extensions/forms/style/dnb-forms.css +2 -2
  323. package/extensions/forms/style/dnb-forms.min.css +1 -1
  324. package/extensions/forms/types.d.ts +2 -2
  325. package/extensions/forms/types.js.map +1 -1
  326. package/extensions/forms/utils/ajv.js +6 -2
  327. package/extensions/forms/utils/ajv.js.map +1 -1
  328. package/package.json +1 -1
  329. package/shared/Eufemia.d.ts +1 -1
  330. package/shared/Eufemia.js +2 -2
  331. package/shared/Eufemia.js.map +1 -1
  332. package/style/core/scopes.scss +1 -1
  333. package/style/dnb-ui-basis.css +1 -1
  334. package/style/dnb-ui-basis.min.css +1 -1
  335. package/style/dnb-ui-body.css +1 -1
  336. package/style/dnb-ui-body.min.css +1 -1
  337. package/style/dnb-ui-components.css +153 -36
  338. package/style/dnb-ui-components.min.css +3 -3
  339. package/style/dnb-ui-core.css +1 -1
  340. package/style/dnb-ui-core.min.css +1 -1
  341. package/style/dnb-ui-extensions.css +2 -2
  342. package/style/dnb-ui-extensions.min.css +1 -1
  343. package/style/dnb-ui-forms.css +2 -2
  344. package/style/dnb-ui-forms.min.css +1 -1
  345. package/style/themes/theme-eiendom/eiendom-theme-components.css +170 -79
  346. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +5 -5
  347. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +2 -2
  348. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  349. package/style/themes/theme-eiendom/eiendom-theme-forms.css +2 -2
  350. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  351. package/style/themes/theme-sbanken/sbanken-theme-components.css +191 -106
  352. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +5 -5
  353. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +2 -2
  354. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  355. package/style/themes/theme-sbanken/sbanken-theme-forms.css +2 -2
  356. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  357. package/style/themes/theme-ui/ui-theme-components.css +170 -77
  358. package/style/themes/theme-ui/ui-theme-components.min.css +6 -6
  359. package/style/themes/theme-ui/ui-theme-extensions.css +2 -2
  360. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  361. package/style/themes/theme-ui/ui-theme-forms.css +2 -2
  362. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  363. package/style/themes/theme-ui/ui-theme-tags.css +37 -9
  364. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  365. package/umd/dnb-ui-basis.min.js +1 -1
  366. package/umd/dnb-ui-components.min.js +1 -1
  367. package/umd/dnb-ui-elements.min.js +1 -1
  368. package/umd/dnb-ui-extensions.min.js +3 -3
  369. package/umd/dnb-ui-lib.min.js +1 -1
@@ -57,17 +57,17 @@ export const ProviderProperties = {
57
57
  };
58
58
  export const ProviderEvents = {
59
59
  onChange: {
60
- doc: "Will be called when a value of any input component inside was changed by the user, with the data set (including the changed value) as argument. When an async function is provided, it will show an indicator on the current label during a field change. Related props: `minimumAsyncBehaviorTime` and `asyncBehaviorTimeout`. You can return an error or an object with these keys `{ info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` in addition to { success: 'saved' } indicate the field was saved.",
60
+ doc: "Will be called when a value of a field was changed by the user, with the data set (including the changed value) as argument. When an async function is provided, it will show an indicator on the current label during a field change. Related props: `minimumAsyncBehaviorTime` and `asyncBehaviorTimeout`. You can return an error or an object with these keys `{ info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` in addition to { success: 'saved' } indicate the field was saved. Will emit unvalidated by default and validated when an async function is provided.",
61
61
  type: 'function',
62
62
  status: 'optional'
63
63
  },
64
64
  onPathChange: {
65
- doc: 'Will be called when a value of any input component inside was changed by the user, with the `path` (JSON Pointer) and new `value` as arguments. Can be an async function.',
65
+ doc: 'Will be called when a value of a field was changed by the user, with the `path` (JSON Pointer) and new `value` as arguments. Can be an async function. Will emit unvalidated by default and validated when `onChange` is an async function.',
66
66
  type: 'function',
67
67
  status: 'optional'
68
68
  },
69
69
  onSubmit: {
70
- doc: "Will be called when the user submit the form (i.e by clicking a [SubmitButton](/uilib/extensions/forms/extended-features/Form/SubmitButton) component inside), with the data set as argument. When an async function is provided, it will show an indicator on the submit button during the form submission. All form elements will be disabled during the submit. The indicator will be shown for minimum 1 second. Related props: `minimumAsyncBehaviorTime` and `asyncBehaviorTimeout`. You can return an error or an object with these keys `{ status: 'pending', info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` to be shown in a [FormStatus](/uilib/components/form-status).",
70
+ doc: "Will be called (on validation success) when the user submit the form (i.e by clicking a [SubmitButton](/uilib/extensions/forms/extended-features/Form/SubmitButton) component inside), with the data set as argument. When an async function is provided, it will show an indicator on the submit button during the form submission. All form elements will be disabled during the submit. The indicator will be shown for minimum 1 second. Related props: `minimumAsyncBehaviorTime` and `asyncBehaviorTimeout`. You can return an error or an object with these keys `{ status: 'pending', info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` to be shown in a [FormStatus](/uilib/components/form-status). Will only emit when every validation has passed.",
71
71
  type: 'function',
72
72
  status: 'optional'
73
73
  },
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderDocs.js","names":["ProviderProperties","defaultData","doc","type","status","data","schema","errorMessages","minimumAsyncBehaviorTime","asyncBehaviorTimeout","scrollTopOnSubmit","sessionStorageId","ajvInstance","filterData","children","ProviderEvents","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/ProviderDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const ProviderProperties: PropertiesTableProps = {\n defaultData: {\n doc: 'Default source data, only used if no other source is available, and not leading to updates if changed after mount.',\n type: 'object',\n status: 'required',\n },\n data: {\n doc: 'Dynamic source data used as both initial data, and updates internal data if changed after mount.',\n type: 'object',\n status: 'required',\n },\n schema: {\n doc: 'JSON Schema for validation of the data set.',\n type: 'object',\n status: 'optional',\n },\n errorMessages: {\n doc: 'Object containing error messages by either type of JSON Pointer path and type.',\n type: 'object',\n status: 'optional',\n },\n minimumAsyncBehaviorTime: {\n doc: 'Minimum time to display the submit indicator. Default is 1s.',\n type: 'boolean',\n status: 'optional',\n },\n asyncBehaviorTimeout: {\n doc: 'The maximum time to display the submit indicator before it changes back to normal. In case something went wrong during submission. Default is 30s.',\n type: 'boolean',\n status: 'optional',\n },\n scrollTopOnSubmit: {\n doc: 'True for the UI to scroll to the top of the page when data is submitted.',\n type: 'boolean',\n status: 'optional',\n },\n sessionStorageId: {\n doc: 'Key for saving active data to session storage and loading it on mount.',\n type: 'string',\n status: 'optional',\n },\n ajvInstance: {\n doc: 'Provide your own custom Ajv instance. More info in the <a href=\"/uilib/extensions/forms/extended-features/Form/schema-validation/#custom-ajv-instance-and-keywords\">Schema validation</a> section.',\n type: 'ajv',\n status: 'optional',\n },\n filterData: {\n doc: 'Filter the internal data context based on your criteria: `(path, value, props) => !props?.disabled`. It will iterate on each data entry.',\n type: 'function',\n status: 'optional',\n },\n children: {\n doc: 'Contents.',\n type: 'React.Node',\n status: 'required',\n },\n}\n\nexport const ProviderEvents: PropertiesTableProps = {\n onChange: {\n doc: \"Will be called when a value of any input component inside was changed by the user, with the data set (including the changed value) as argument. When an async function is provided, it will show an indicator on the current label during a field change. Related props: `minimumAsyncBehaviorTime` and `asyncBehaviorTimeout`. You can return an error or an object with these keys `{ info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` in addition to { success: 'saved' } indicate the field was saved.\",\n type: 'function',\n status: 'optional',\n },\n onPathChange: {\n doc: 'Will be called when a value of any input component inside was changed by the user, with the `path` (JSON Pointer) and new `value` as arguments. Can be an async function.',\n type: 'function',\n status: 'optional',\n },\n onSubmit: {\n doc: \"Will be called when the user submit the form (i.e by clicking a [SubmitButton](/uilib/extensions/forms/extended-features/Form/SubmitButton) component inside), with the data set as argument. When an async function is provided, it will show an indicator on the submit button during the form submission. All form elements will be disabled during the submit. The indicator will be shown for minimum 1 second. Related props: `minimumAsyncBehaviorTime` and `asyncBehaviorTimeout`. You can return an error or an object with these keys `{ status: 'pending', info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` to be shown in a [FormStatus](/uilib/components/form-status).\",\n type: 'function',\n status: 'optional',\n },\n onSubmitRequest: {\n doc: 'Will be called when the user tries to submit, but errors stop the data from being submitted.',\n type: 'function',\n status: 'optional',\n },\n onSubmitComplete: {\n doc: 'Will be called after onSubmit has finished and had not errors. It supports the same return values as `onSubmit` and will be merged together.',\n type: 'function',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,kBAAwC,GAAG;EACtDC,WAAW,EAAE;IACXC,GAAG,EAAE,oHAAoH;IACzHC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE;IACJH,GAAG,EAAE,kGAAkG;IACvGC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,MAAM,EAAE;IACNJ,GAAG,EAAE,6CAA6C;IAClDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,aAAa,EAAE;IACbL,GAAG,EAAE,gFAAgF;IACrFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,wBAAwB,EAAE;IACxBN,GAAG,EAAE,8DAA8D;IACnEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDK,oBAAoB,EAAE;IACpBP,GAAG,EAAE,oJAAoJ;IACzJC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDM,iBAAiB,EAAE;IACjBR,GAAG,EAAE,0EAA0E;IAC/EC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDO,gBAAgB,EAAE;IAChBT,GAAG,EAAE,wEAAwE;IAC7EC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDQ,WAAW,EAAE;IACXV,GAAG,EAAE,oMAAoM;IACzMC,IAAI,EAAE,KAAK;IACXC,MAAM,EAAE;EACV,CAAC;EACDS,UAAU,EAAE;IACVX,GAAG,EAAE,0IAA0I;IAC/IC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDU,QAAQ,EAAE;IACRZ,GAAG,EAAE,WAAW;IAChBC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMW,cAAoC,GAAG;EAClDC,QAAQ,EAAE;IACRd,GAAG,EAAE,khBAAkhB;IACvhBC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDa,YAAY,EAAE;IACZf,GAAG,EAAE,2KAA2K;IAChLC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDc,QAAQ,EAAE;IACRhB,GAAG,EAAE,4rBAA4rB;IACjsBC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDe,eAAe,EAAE;IACfjB,GAAG,EAAE,8FAA8F;IACnGC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDgB,gBAAgB,EAAE;IAChBlB,GAAG,EAAE,8IAA8I;IACnJC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AACF,CAAC"}
1
+ {"version":3,"file":"ProviderDocs.js","names":["ProviderProperties","defaultData","doc","type","status","data","schema","errorMessages","minimumAsyncBehaviorTime","asyncBehaviorTimeout","scrollTopOnSubmit","sessionStorageId","ajvInstance","filterData","children","ProviderEvents","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/ProviderDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const ProviderProperties: PropertiesTableProps = {\n defaultData: {\n doc: 'Default source data, only used if no other source is available, and not leading to updates if changed after mount.',\n type: 'object',\n status: 'required',\n },\n data: {\n doc: 'Dynamic source data used as both initial data, and updates internal data if changed after mount.',\n type: 'object',\n status: 'required',\n },\n schema: {\n doc: 'JSON Schema for validation of the data set.',\n type: 'object',\n status: 'optional',\n },\n errorMessages: {\n doc: 'Object containing error messages by either type of JSON Pointer path and type.',\n type: 'object',\n status: 'optional',\n },\n minimumAsyncBehaviorTime: {\n doc: 'Minimum time to display the submit indicator. Default is 1s.',\n type: 'boolean',\n status: 'optional',\n },\n asyncBehaviorTimeout: {\n doc: 'The maximum time to display the submit indicator before it changes back to normal. In case something went wrong during submission. Default is 30s.',\n type: 'boolean',\n status: 'optional',\n },\n scrollTopOnSubmit: {\n doc: 'True for the UI to scroll to the top of the page when data is submitted.',\n type: 'boolean',\n status: 'optional',\n },\n sessionStorageId: {\n doc: 'Key for saving active data to session storage and loading it on mount.',\n type: 'string',\n status: 'optional',\n },\n ajvInstance: {\n doc: 'Provide your own custom Ajv instance. More info in the <a href=\"/uilib/extensions/forms/extended-features/Form/schema-validation/#custom-ajv-instance-and-keywords\">Schema validation</a> section.',\n type: 'ajv',\n status: 'optional',\n },\n filterData: {\n doc: 'Filter the internal data context based on your criteria: `(path, value, props) => !props?.disabled`. It will iterate on each data entry.',\n type: 'function',\n status: 'optional',\n },\n children: {\n doc: 'Contents.',\n type: 'React.Node',\n status: 'required',\n },\n}\n\nexport const ProviderEvents: PropertiesTableProps = {\n onChange: {\n doc: \"Will be called when a value of a field was changed by the user, with the data set (including the changed value) as argument. When an async function is provided, it will show an indicator on the current label during a field change. Related props: `minimumAsyncBehaviorTime` and `asyncBehaviorTimeout`. You can return an error or an object with these keys `{ info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` in addition to { success: 'saved' } indicate the field was saved. Will emit unvalidated by default and validated when an async function is provided.\",\n type: 'function',\n status: 'optional',\n },\n onPathChange: {\n doc: 'Will be called when a value of a field was changed by the user, with the `path` (JSON Pointer) and new `value` as arguments. Can be an async function. Will emit unvalidated by default and validated when `onChange` is an async function.',\n type: 'function',\n status: 'optional',\n },\n onSubmit: {\n doc: \"Will be called (on validation success) when the user submit the form (i.e by clicking a [SubmitButton](/uilib/extensions/forms/extended-features/Form/SubmitButton) component inside), with the data set as argument. When an async function is provided, it will show an indicator on the submit button during the form submission. All form elements will be disabled during the submit. The indicator will be shown for minimum 1 second. Related props: `minimumAsyncBehaviorTime` and `asyncBehaviorTimeout`. You can return an error or an object with these keys `{ status: 'pending', info: 'Info message', warning: 'Warning message', error: Error('My error') } as const` to be shown in a [FormStatus](/uilib/components/form-status). Will only emit when every validation has passed.\",\n type: 'function',\n status: 'optional',\n },\n onSubmitRequest: {\n doc: 'Will be called when the user tries to submit, but errors stop the data from being submitted.',\n type: 'function',\n status: 'optional',\n },\n onSubmitComplete: {\n doc: 'Will be called after onSubmit has finished and had not errors. It supports the same return values as `onSubmit` and will be merged together.',\n type: 'function',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,kBAAwC,GAAG;EACtDC,WAAW,EAAE;IACXC,GAAG,EAAE,oHAAoH;IACzHC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE;IACJH,GAAG,EAAE,kGAAkG;IACvGC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,MAAM,EAAE;IACNJ,GAAG,EAAE,6CAA6C;IAClDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,aAAa,EAAE;IACbL,GAAG,EAAE,gFAAgF;IACrFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,wBAAwB,EAAE;IACxBN,GAAG,EAAE,8DAA8D;IACnEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDK,oBAAoB,EAAE;IACpBP,GAAG,EAAE,oJAAoJ;IACzJC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDM,iBAAiB,EAAE;IACjBR,GAAG,EAAE,0EAA0E;IAC/EC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDO,gBAAgB,EAAE;IAChBT,GAAG,EAAE,wEAAwE;IAC7EC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDQ,WAAW,EAAE;IACXV,GAAG,EAAE,oMAAoM;IACzMC,IAAI,EAAE,KAAK;IACXC,MAAM,EAAE;EACV,CAAC;EACDS,UAAU,EAAE;IACVX,GAAG,EAAE,0IAA0I;IAC/IC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDU,QAAQ,EAAE;IACRZ,GAAG,EAAE,WAAW;IAChBC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMW,cAAoC,GAAG;EAClDC,QAAQ,EAAE;IACRd,GAAG,EAAE,klBAAklB;IACvlBC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDa,YAAY,EAAE;IACZf,GAAG,EAAE,6OAA6O;IAClPC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDc,QAAQ,EAAE;IACRhB,GAAG,EAAE,qwBAAqwB;IAC1wBC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDe,eAAe,EAAE;IACfjB,GAAG,EAAE,8FAA8F;IACnGC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDgB,gBAAgB,EAAE;IAChBlB,GAAG,EAAE,8IAA8I;IACnJC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AACF,CAAC"}
@@ -13,22 +13,22 @@ interface ErrorMessages extends CustomErrorMessages {
13
13
  }
14
14
  export type Props = FieldHelpProps & FieldProps<string, undefined | string, ErrorMessages> & {
15
15
  multiline?: boolean;
16
- mask?: InputMaskedProps['mask'];
17
- leftIcon?: string;
18
- rightIcon?: string;
19
16
  inputClassName?: string;
20
17
  innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>;
21
- submitElement?: InputProps['submit_element'];
22
18
  width?: false | 'small' | 'medium' | 'large' | 'stretch';
19
+ size?: InputProps['size'] | TextareaProps['size'];
20
+ keepPlaceholder?: InputProps['keep_placeholder'];
23
21
  minLength?: number;
24
22
  maxLength?: number;
25
23
  pattern?: string;
26
24
  type?: InputProps['type'];
27
- size?: InputProps['size'];
28
25
  align?: InputProps['align'];
29
26
  selectall?: InputProps['selectall'];
30
27
  clear?: boolean;
31
- keepPlaceholder?: InputProps['keep_placeholder'];
28
+ mask?: InputMaskedProps['mask'];
29
+ leftIcon?: string;
30
+ rightIcon?: string;
31
+ submitElement?: InputProps['submit_element'];
32
32
  rows?: TextareaProps['rows'];
33
33
  autoresizeMaxRows?: TextareaProps['autoresize_max_rows'];
34
34
  autoresize?: TextareaProps['autoresize'];
@@ -141,12 +141,19 @@ function StringComponent(props) {
141
141
  status: hasError ? 'error' : undefined,
142
142
  value: transformInstantly((_value$toString = value === null || value === void 0 ? void 0 : value.toString()) !== null && _value$toString !== void 0 ? _value$toString : '')
143
143
  });
144
+ const textareaProps = {
145
+ keepPlaceholder,
146
+ rows,
147
+ autoresize_max_rows: autoresizeMaxRows,
148
+ autoresize,
149
+ characterCounter
150
+ };
144
151
  const inputProps = {
145
- type,
146
- clear,
147
- size,
148
- align,
149
- selectall,
152
+ type: type,
153
+ clear: clear,
154
+ size: size,
155
+ align: align,
156
+ selectall: selectall,
150
157
  icon: leftIcon !== null && leftIcon !== void 0 ? leftIcon : rightIcon,
151
158
  icon_position: rightIcon && !leftIcon ? 'right' : undefined,
152
159
  submit_element: submitElement,
@@ -165,12 +172,7 @@ function StringComponent(props) {
165
172
  width: width === 'stretch' || fieldBlockContext !== null && fieldBlockContext !== void 0 && fieldBlockContext.composition ? width : undefined,
166
173
  contentWidth: width !== false ? width : undefined
167
174
  }, pickSpacingProps(props));
168
- return React.createElement(FieldBlock, fieldBlockProps, multiline ? React.createElement(Textarea, _extends({}, sharedProps, {
169
- rows: rows,
170
- autoresize_max_rows: autoresizeMaxRows,
171
- autoresize: autoresize,
172
- characterCounter: characterCounter
173
- })) : mask ? React.createElement(InputMasked, _extends({}, sharedProps, inputProps, {
175
+ return React.createElement(FieldBlock, fieldBlockProps, multiline ? React.createElement(Textarea, _extends({}, sharedProps, textareaProps)) : mask ? React.createElement(InputMasked, _extends({}, sharedProps, inputProps, {
174
176
  mask: mask
175
177
  })) : React.createElement(Input, _extends({}, sharedProps, inputProps)));
176
178
  }
@@ -1 +1 @@
1
- {"version":3,"file":"String.js","names":["React","useContext","useMemo","useCallback","classnames","HelpButton","Input","Textarea","InputMasked","SharedContext","FieldBlockContext","FieldBlock","useFieldProps","pickSpacingProps","toCapitalized","useErrorMessage","StringComponent","props","_props$width","_value$toString","fieldBlockContext","sharedContext","tr","translation","Forms","errorMessages","path","required","inputErrorRequired","minLength","stringInputErrorMinLength","maxLength","stringInputErrorMaxLength","pattern","inputErrorPattern","schema","_props$schema","type","fromInput","event","_event","_event$cleanedValue","_event2","_event3","value","emptyValue","cleanedValue","toEvent","trim","spaces","RegExp","test","replace","handleChange","transformValue","capitalize","String","preparedProps","_objectSpread","width","composition","id","name","className","innerRef","inputClassName","layout","placeholder","label","labelDescription","info","warning","error","hasError","disabled","help","multiline","mask","leftIcon","rightIcon","htmlAttributes","submitElement","clear","align","size","selectall","keepPlaceholder","rows","autoresizeMaxRows","autoresize","characterCounter","autoComplete","inputMode","autoCorrect","spellCheck","autoFocus","autoCapitalize","handleFocus","handleBlur","transformInstantly","cn","sharedProps","suffix","createElement","title","content","undefined","on_focus","on_blur","on_change","stretch","Boolean","inner_ref","status","toString","inputProps","icon","icon_position","submit_element","keep_placeholder","fieldBlockProps","forId","contentWidth","_extends","autoresize_max_rows","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/String/String.tsx"],"sourcesContent":["import React, { useContext, useMemo, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { HelpButton, Input, Textarea } from '../../../../components'\nimport { InputProps } from '../../../../components/input/Input'\nimport InputMasked, {\n InputMaskedProps,\n} from '../../../../components/InputMasked'\nimport { TextareaProps } from '../../../../components/Textarea'\nimport SharedContext from '../../../../shared/Context'\nimport FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { toCapitalized } from '../../../../shared/component-helper'\nimport type { TextCounterProps } from '../../../../fragments/TextCounter'\nimport type {\n FieldProps,\n FieldHelpProps,\n CustomErrorMessages,\n AllJSONSchemaVersions,\n} from '../../types'\nimport useErrorMessage from '../../hooks/useErrorMessage'\n\ninterface ErrorMessages extends CustomErrorMessages {\n required?: string\n schema?: string\n minLength?: string\n maxLength?: string\n pattern?: string\n}\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined | string, ErrorMessages> & {\n // - String props\n multiline?: boolean\n mask?: InputMaskedProps['mask']\n leftIcon?: string\n rightIcon?: string\n inputClassName?: string\n innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>\n submitElement?: InputProps['submit_element']\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n\n // - Validation\n minLength?: number\n maxLength?: number\n pattern?: string\n\n // - Input props\n type?: InputProps['type']\n size?: InputProps['size']\n align?: InputProps['align']\n selectall?: InputProps['selectall']\n clear?: boolean\n keepPlaceholder?: InputProps['keep_placeholder']\n\n // - Textarea props\n rows?: TextareaProps['rows']\n autoresizeMaxRows?: TextareaProps['autoresize_max_rows']\n autoresize?: TextareaProps['autoresize']\n characterCounter?: Omit<TextCounterProps, 'text'> | number\n\n // - Html props\n autoComplete?: HTMLInputElement['autocomplete']\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode']\n autoCorrect?: React.HTMLAttributes<HTMLInputElement>['autoCorrect']\n spellCheck?: React.HTMLAttributes<HTMLInputElement>['spellCheck']\n autoFocus?: React.HTMLAttributes<HTMLInputElement>['autoFocus']\n autoCapitalize?: React.HTMLAttributes<HTMLInputElement>['autoCapitalize']\n }\n\nfunction StringComponent(props: Props) {\n const fieldBlockContext = useContext(FieldBlockContext)\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: tr.inputErrorRequired,\n minLength: tr.stringInputErrorMinLength,\n maxLength: tr.stringInputErrorMaxLength,\n pattern: tr.inputErrorPattern,\n })\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n minLength: props.minLength,\n maxLength: props.maxLength,\n pattern: props.pattern,\n },\n [props.schema, props.minLength, props.maxLength, props.pattern]\n )\n const fromInput = useCallback(\n (event: { value: string; cleanedValue?: string }) => {\n if (typeof event === 'string') {\n event = { value: event }\n }\n if (event?.value === '') {\n return props.emptyValue\n }\n // Cleaned value for masked\n return event?.cleanedValue ?? event?.value\n },\n [props.emptyValue]\n )\n const toEvent = useCallback(\n (value: string, type: string) => {\n if (props.trim && type === 'onBlur') {\n const spaces = '[\\\\s ]'\n if (new RegExp(`^${spaces}|${spaces}$`).test(value)) {\n value = value.replace(\n new RegExp(`^${spaces}+|${spaces}+$`, 'g'),\n ''\n )\n handleChange(value)\n }\n }\n return value\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.trim]\n )\n const transformValue = useCallback(\n (value: string) => {\n if (props.capitalize) {\n value = toCapitalized(String(value || ''))\n }\n return value\n },\n [props.capitalize]\n )\n\n const preparedProps: Props = {\n ...props,\n errorMessages,\n schema,\n fromInput,\n toEvent,\n transformValue,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'large'),\n }\n\n const {\n id,\n name,\n className,\n\n innerRef,\n inputClassName,\n layout,\n placeholder,\n label,\n labelDescription,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n multiline,\n mask,\n leftIcon,\n rightIcon,\n width,\n htmlAttributes,\n submitElement,\n\n // - Input props\n type,\n clear,\n align,\n size,\n selectall,\n keepPlaceholder,\n\n // - Textarea props\n rows,\n // formId,\n autoresizeMaxRows = 6,\n autoresize = true,\n characterCounter,\n\n // - Html props\n\n autoComplete,\n inputMode,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n\n // - Events\n handleFocus,\n handleBlur,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const transformInstantly = useCallback(\n (value: string) => (props.capitalize ? toCapitalized(value) : value),\n [props.capitalize]\n )\n\n const cn = classnames('dnb-forms-field-string__input', inputClassName)\n\n const sharedProps: InputProps & TextareaProps = {\n id,\n name,\n autoComplete,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n inputMode,\n className: cn,\n placeholder: placeholder,\n suffix: help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n on_focus: handleFocus,\n on_blur: handleBlur,\n on_change: handleChange,\n disabled,\n ...htmlAttributes,\n stretch: Boolean(\n width !== undefined || fieldBlockContext?.composition\n ),\n inner_ref: innerRef,\n status: hasError ? 'error' : undefined,\n value: transformInstantly(value?.toString() ?? ''),\n }\n\n const inputProps: InputProps = {\n type,\n clear,\n size,\n align,\n selectall,\n icon: leftIcon ?? rightIcon,\n icon_position: rightIcon && !leftIcon ? 'right' : undefined,\n submit_element: submitElement,\n keep_placeholder: keepPlaceholder,\n }\n\n const fieldBlockProps = {\n className: classnames('dnb-forms-field-string', className),\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 return (\n <FieldBlock {...fieldBlockProps}>\n {multiline ? (\n <Textarea\n {...sharedProps}\n rows={rows}\n autoresize_max_rows={autoresizeMaxRows}\n autoresize={autoresize}\n characterCounter={characterCounter}\n />\n ) : mask ? (\n <InputMasked {...sharedProps} {...inputProps} mask={mask} />\n ) : (\n <Input {...sharedProps} {...inputProps} />\n )}\n </FieldBlock>\n )\n}\n\nStringComponent._supportsSpacingProps = true\nexport default StringComponent\n"],"mappings":"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"}
1
+ {"version":3,"file":"String.js","names":["React","useContext","useMemo","useCallback","classnames","HelpButton","Input","Textarea","InputMasked","SharedContext","FieldBlockContext","FieldBlock","useFieldProps","pickSpacingProps","toCapitalized","useErrorMessage","StringComponent","props","_props$width","_value$toString","fieldBlockContext","sharedContext","tr","translation","Forms","errorMessages","path","required","inputErrorRequired","minLength","stringInputErrorMinLength","maxLength","stringInputErrorMaxLength","pattern","inputErrorPattern","schema","_props$schema","type","fromInput","event","_event","_event$cleanedValue","_event2","_event3","value","emptyValue","cleanedValue","toEvent","trim","spaces","RegExp","test","replace","handleChange","transformValue","capitalize","String","preparedProps","_objectSpread","width","composition","id","name","className","innerRef","inputClassName","layout","placeholder","label","labelDescription","info","warning","error","hasError","disabled","help","multiline","mask","leftIcon","rightIcon","htmlAttributes","submitElement","clear","align","size","selectall","keepPlaceholder","rows","autoresizeMaxRows","autoresize","characterCounter","autoComplete","inputMode","autoCorrect","spellCheck","autoFocus","autoCapitalize","handleFocus","handleBlur","transformInstantly","cn","sharedProps","suffix","createElement","title","content","undefined","on_focus","on_blur","on_change","stretch","Boolean","inner_ref","status","toString","textareaProps","autoresize_max_rows","inputProps","icon","icon_position","submit_element","keep_placeholder","fieldBlockProps","forId","contentWidth","_extends","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/String/String.tsx"],"sourcesContent":["import React, { useContext, useMemo, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { HelpButton, Input, Textarea } from '../../../../components'\nimport { InputProps } from '../../../../components/input/Input'\nimport InputMasked, {\n InputMaskedProps,\n} from '../../../../components/InputMasked'\nimport { TextareaProps } from '../../../../components/Textarea'\nimport SharedContext from '../../../../shared/Context'\nimport FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { toCapitalized } from '../../../../shared/component-helper'\nimport type { TextCounterProps } from '../../../../fragments/TextCounter'\nimport type {\n FieldProps,\n FieldHelpProps,\n CustomErrorMessages,\n AllJSONSchemaVersions,\n} from '../../types'\nimport useErrorMessage from '../../hooks/useErrorMessage'\n\ninterface ErrorMessages extends CustomErrorMessages {\n required?: string\n schema?: string\n minLength?: string\n maxLength?: string\n pattern?: string\n}\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined | string, ErrorMessages> & {\n // - Shared props\n multiline?: boolean\n inputClassName?: string\n innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n size?: InputProps['size'] | TextareaProps['size']\n keepPlaceholder?: InputProps['keep_placeholder']\n\n // - Validation\n minLength?: number\n maxLength?: number\n pattern?: string\n\n // - Input props\n type?: InputProps['type']\n align?: InputProps['align']\n selectall?: InputProps['selectall']\n clear?: boolean\n mask?: InputMaskedProps['mask']\n leftIcon?: string\n rightIcon?: string\n submitElement?: InputProps['submit_element']\n\n // - Textarea props\n rows?: TextareaProps['rows']\n autoresizeMaxRows?: TextareaProps['autoresize_max_rows']\n autoresize?: TextareaProps['autoresize']\n characterCounter?: Omit<TextCounterProps, 'text'> | number\n\n // - Html props\n autoComplete?: HTMLInputElement['autocomplete']\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode']\n autoCorrect?: React.HTMLAttributes<HTMLInputElement>['autoCorrect']\n spellCheck?: React.HTMLAttributes<HTMLInputElement>['spellCheck']\n autoFocus?: React.HTMLAttributes<HTMLInputElement>['autoFocus']\n autoCapitalize?: React.HTMLAttributes<HTMLInputElement>['autoCapitalize']\n }\n\nfunction StringComponent(props: Props) {\n const fieldBlockContext = useContext(FieldBlockContext)\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: tr.inputErrorRequired,\n minLength: tr.stringInputErrorMinLength,\n maxLength: tr.stringInputErrorMaxLength,\n pattern: tr.inputErrorPattern,\n })\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n minLength: props.minLength,\n maxLength: props.maxLength,\n pattern: props.pattern,\n },\n [props.schema, props.minLength, props.maxLength, props.pattern]\n )\n const fromInput = useCallback(\n (event: { value: string; cleanedValue?: string }) => {\n if (typeof event === 'string') {\n event = { value: event }\n }\n if (event?.value === '') {\n return props.emptyValue\n }\n // Cleaned value for masked\n return event?.cleanedValue ?? event?.value\n },\n [props.emptyValue]\n )\n const toEvent = useCallback(\n (value: string, type: string) => {\n if (props.trim && type === 'onBlur') {\n const spaces = '[\\\\s ]'\n if (new RegExp(`^${spaces}|${spaces}$`).test(value)) {\n value = value.replace(\n new RegExp(`^${spaces}+|${spaces}+$`, 'g'),\n ''\n )\n handleChange(value)\n }\n }\n return value\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.trim]\n )\n const transformValue = useCallback(\n (value: string) => {\n if (props.capitalize) {\n value = toCapitalized(String(value || ''))\n }\n return value\n },\n [props.capitalize]\n )\n\n const preparedProps: Props = {\n ...props,\n errorMessages,\n schema,\n fromInput,\n toEvent,\n transformValue,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'large'),\n }\n\n const {\n id,\n name,\n className,\n\n innerRef,\n inputClassName,\n layout,\n placeholder,\n label,\n labelDescription,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n multiline,\n mask,\n leftIcon,\n rightIcon,\n width,\n htmlAttributes,\n submitElement,\n\n // - Input props\n type,\n clear,\n align,\n size,\n selectall,\n keepPlaceholder,\n\n // - Textarea props\n rows,\n // formId,\n autoresizeMaxRows = 6,\n autoresize = true,\n characterCounter,\n\n // - Html props\n\n autoComplete,\n inputMode,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n\n // - Events\n handleFocus,\n handleBlur,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const transformInstantly = useCallback(\n (value: string) => (props.capitalize ? toCapitalized(value) : value),\n [props.capitalize]\n )\n\n const cn = classnames('dnb-forms-field-string__input', inputClassName)\n\n const sharedProps: InputProps & TextareaProps = {\n id,\n name,\n autoComplete,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n inputMode,\n className: cn,\n placeholder: placeholder,\n suffix: help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n on_focus: handleFocus,\n on_blur: handleBlur,\n on_change: handleChange,\n disabled,\n ...htmlAttributes,\n stretch: Boolean(\n width !== undefined || fieldBlockContext?.composition\n ),\n inner_ref: innerRef,\n status: hasError ? 'error' : undefined,\n value: transformInstantly(value?.toString() ?? ''),\n }\n\n const textareaProps: TextareaProps = {\n keepPlaceholder,\n rows,\n autoresize_max_rows: autoresizeMaxRows,\n autoresize,\n characterCounter,\n }\n\n const inputProps: InputProps = {\n type: type,\n clear: clear,\n size: size,\n align: align,\n selectall: selectall,\n icon: leftIcon ?? rightIcon,\n icon_position: rightIcon && !leftIcon ? 'right' : undefined,\n submit_element: submitElement,\n keep_placeholder: keepPlaceholder,\n }\n\n const fieldBlockProps = {\n className: classnames('dnb-forms-field-string', className),\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 return (\n <FieldBlock {...fieldBlockProps}>\n {multiline ? (\n <Textarea {...sharedProps} {...textareaProps} />\n ) : mask ? (\n <InputMasked {...sharedProps} {...inputProps} mask={mask} />\n ) : (\n <Input {...sharedProps} {...inputProps} />\n )}\n </FieldBlock>\n )\n}\n\nStringComponent._supportsSpacingProps = true\nexport default StringComponent\n"],"mappings":"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"}
@@ -15,6 +15,9 @@ function FormAppearance(_ref) {
15
15
  Input: {
16
16
  size
17
17
  },
18
+ Textarea: {
19
+ size
20
+ },
18
21
  DatePicker: {
19
22
  size
20
23
  },
@@ -1 +1 @@
1
- {"version":3,"file":"Appearance.js","names":["React","Provider","FormAppearance","_ref","children","size","rest","_objectWithoutProperties","_excluded","createElement","_extends","Input","DatePicker","Autocomplete","Dropdown"],"sources":["../../../../../../src/extensions/forms/Form/Appearance/Appearance.tsx"],"sourcesContent":["import React from 'react'\nimport Provider from '../../../../shared/Provider'\n\nexport type Props = {\n size?: 'medium' | 'large'\n children: React.ReactNode\n}\n\nfunction FormAppearance({ children, size = null, ...rest }: Props) {\n return (\n <Provider\n Input={{ size }}\n DatePicker={{ size }}\n Autocomplete={{ size }}\n Dropdown={{ size }}\n {...rest}\n >\n {children}\n </Provider>\n )\n}\n\nexport default FormAppearance\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,6BAA6B;AAOlD,SAASC,cAAcA,CAAAC,IAAA,EAA4C;EAAA,IAA3C;MAAEC,QAAQ;MAAEC,IAAI,GAAG;IAAqB,CAAC,GAAAF,IAAA;IAAbG,IAAI,GAAAC,wBAAA,CAAAJ,IAAA,EAAAK,SAAA;EACtD,OACER,KAAA,CAAAS,aAAA,CAACR,QAAQ,EAAAS,QAAA;IACPC,KAAK,EAAE;MAAEN;IAAK,CAAE;IAChBO,UAAU,EAAE;MAAEP;IAAK,CAAE;IACrBQ,YAAY,EAAE;MAAER;IAAK,CAAE;IACvBS,QAAQ,EAAE;MAAET;IAAK;EAAE,GACfC,IAAI,GAEPF,QACO,CAAC;AAEf;AAEA,eAAeF,cAAc"}
1
+ {"version":3,"file":"Appearance.js","names":["React","Provider","FormAppearance","_ref","children","size","rest","_objectWithoutProperties","_excluded","createElement","_extends","Input","Textarea","DatePicker","Autocomplete","Dropdown"],"sources":["../../../../../../src/extensions/forms/Form/Appearance/Appearance.tsx"],"sourcesContent":["import React from 'react'\nimport Provider from '../../../../shared/Provider'\n\nexport type Props = {\n size?: 'medium' | 'large'\n children: React.ReactNode\n}\n\nfunction FormAppearance({ children, size = null, ...rest }: Props) {\n return (\n <Provider\n Input={{ size }}\n Textarea={{ size }}\n DatePicker={{ size }}\n Autocomplete={{ size }}\n Dropdown={{ size }}\n {...rest}\n >\n {children}\n </Provider>\n )\n}\n\nexport default FormAppearance\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,6BAA6B;AAOlD,SAASC,cAAcA,CAAAC,IAAA,EAA4C;EAAA,IAA3C;MAAEC,QAAQ;MAAEC,IAAI,GAAG;IAAqB,CAAC,GAAAF,IAAA;IAAbG,IAAI,GAAAC,wBAAA,CAAAJ,IAAA,EAAAK,SAAA;EACtD,OACER,KAAA,CAAAS,aAAA,CAACR,QAAQ,EAAAS,QAAA;IACPC,KAAK,EAAE;MAAEN;IAAK,CAAE;IAChBO,QAAQ,EAAE;MAAEP;IAAK,CAAE;IACnBQ,UAAU,EAAE;MAAER;IAAK,CAAE;IACrBS,YAAY,EAAE;MAAET;IAAK,CAAE;IACvBU,QAAQ,EAAE;MAAEV;IAAK;EAAE,GACfC,IAAI,GAEPF,QACO,CAAC;AAEf;AAEA,eAAeF,cAAc"}
@@ -4,8 +4,8 @@
4
4
  .dnb-forms-button-row {
5
5
  display: flex;
6
6
  flex-flow: row;
7
- -moz-column-gap: var(--spacing-small);
8
- column-gap: var(--spacing-small);
7
+ flex-wrap: wrap;
8
+ gap: var(--spacing-small);
9
9
  }
10
10
  .dnb-card + .dnb-forms-button-row:not([class*=space__top]) {
11
11
  margin-top: var(--spacing-small);
@@ -1 +1 @@
1
- .dnb-forms-button-row{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}.dnb-card+.dnb-forms-button-row:not([class*=space__top]){margin-top:var(--spacing-small)}.dnb-card+.dnb-forms-button-row:not([class*=space__top]) .dnb-button[class*=space__top]{margin-top:0}@media screen and (min-width:40em){.dnb-card+.dnb-forms-button-row:not([class*=space__left]){margin-left:var(--spacing-medium)}}
1
+ .dnb-forms-button-row{display:flex;flex-flow:row;flex-wrap:wrap;gap:var(--spacing-small)}.dnb-card+.dnb-forms-button-row:not([class*=space__top]){margin-top:var(--spacing-small)}.dnb-card+.dnb-forms-button-row:not([class*=space__top]) .dnb-button[class*=space__top]{margin-top:0}@media screen and (min-width:40em){.dnb-card+.dnb-forms-button-row:not([class*=space__left]){margin-left:var(--spacing-medium)}}
@@ -3,7 +3,8 @@
3
3
  .dnb-forms-button-row {
4
4
  display: flex;
5
5
  flex-flow: row;
6
- column-gap: var(--spacing-small);
6
+ flex-wrap: wrap;
7
+ gap: var(--spacing-small);
7
8
 
8
9
  .dnb-card + & {
9
10
  &:not([class*='space__top']) {
@@ -16,9 +16,8 @@ function Step(props) {
16
16
  if ((stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.activeIndex) !== index) {
17
17
  return null;
18
18
  }
19
- return React.createElement(Flex.Container, _extends({
20
- className: classnames('dnb-forms-step', className),
21
- direction: "vertical"
19
+ return React.createElement(Flex.Stack, _extends({
20
+ className: classnames('dnb-forms-step', className)
22
21
  }, pickFlexContainerProps(props)), children);
23
22
  }
24
23
  Step._supportsSpacingProps = true;
@@ -1 +1 @@
1
- {"version":3,"file":"Step.js","names":["React","useContext","classnames","pickFlexContainerProps","StepsContext","Flex","Step","props","className","index","children","stepsContext","activeIndex","createElement","Container","_extends","direction","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/StepsLayout/Step/Step.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport classnames from 'classnames'\nimport { ComponentProps } from '../../types'\nimport {\n Props as FlexContainerProps,\n pickFlexContainerProps,\n} from '../../../../components/flex/Container'\nimport StepsContext from '../StepsContext'\nimport Flex from '../../../../components/flex/Flex'\n\nexport type Props = ComponentProps &\n FlexContainerProps & {\n index?: number\n title?: string\n }\n\nfunction Step(props: Props) {\n const { className, index, children } = props\n const stepsContext = useContext(StepsContext)\n\n if (stepsContext?.activeIndex !== index) {\n // Another step is active\n return null\n }\n\n return (\n <Flex.Container\n className={classnames('dnb-forms-step', className)}\n direction=\"vertical\"\n {...pickFlexContainerProps(props)}\n >\n {children}\n </Flex.Container>\n )\n}\n\nStep._supportsSpacingProps = true\nexport default Step\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,OAAOC,UAAU,MAAM,YAAY;AAEnC,SAEEC,sBAAsB,QACjB,uCAAuC;AAC9C,OAAOC,YAAY,MAAM,iBAAiB;AAC1C,OAAOC,IAAI,MAAM,kCAAkC;AAQnD,SAASC,IAAIA,CAACC,KAAY,EAAE;EAC1B,MAAM;IAAEC,SAAS;IAAEC,KAAK;IAAEC;EAAS,CAAC,GAAGH,KAAK;EAC5C,MAAMI,YAAY,GAAGV,UAAU,CAACG,YAAY,CAAC;EAE7C,IAAI,CAAAO,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEC,WAAW,MAAKH,KAAK,EAAE;IAEvC,OAAO,IAAI;EACb;EAEA,OACET,KAAA,CAAAa,aAAA,CAACR,IAAI,CAACS,SAAS,EAAAC,QAAA;IACbP,SAAS,EAAEN,UAAU,CAAC,gBAAgB,EAAEM,SAAS,CAAE;IACnDQ,SAAS,EAAC;EAAU,GAChBb,sBAAsB,CAACI,KAAK,CAAC,GAEhCG,QACa,CAAC;AAErB;AAEAJ,IAAI,CAACW,qBAAqB,GAAG,IAAI;AACjC,eAAeX,IAAI"}
1
+ {"version":3,"file":"Step.js","names":["React","useContext","classnames","pickFlexContainerProps","StepsContext","Flex","Step","props","className","index","children","stepsContext","activeIndex","createElement","Stack","_extends","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/StepsLayout/Step/Step.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport classnames from 'classnames'\nimport { ComponentProps } from '../../types'\nimport {\n Props as FlexContainerProps,\n pickFlexContainerProps,\n} from '../../../../components/flex/Container'\nimport StepsContext from '../StepsContext'\nimport Flex from '../../../../components/flex/Flex'\n\nexport type Props = ComponentProps &\n FlexContainerProps & {\n index?: number\n title?: string\n }\n\nfunction Step(props: Props) {\n const { className, index, children } = props\n const stepsContext = useContext(StepsContext)\n\n if (stepsContext?.activeIndex !== index) {\n // Another step is active\n return null\n }\n\n return (\n <Flex.Stack\n className={classnames('dnb-forms-step', className)}\n {...pickFlexContainerProps(props)}\n >\n {children}\n </Flex.Stack>\n )\n}\n\nStep._supportsSpacingProps = true\nexport default Step\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,OAAOC,UAAU,MAAM,YAAY;AAEnC,SAEEC,sBAAsB,QACjB,uCAAuC;AAC9C,OAAOC,YAAY,MAAM,iBAAiB;AAC1C,OAAOC,IAAI,MAAM,kCAAkC;AAQnD,SAASC,IAAIA,CAACC,KAAY,EAAE;EAC1B,MAAM;IAAEC,SAAS;IAAEC,KAAK;IAAEC;EAAS,CAAC,GAAGH,KAAK;EAC5C,MAAMI,YAAY,GAAGV,UAAU,CAACG,YAAY,CAAC;EAE7C,IAAI,CAAAO,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEC,WAAW,MAAKH,KAAK,EAAE;IAEvC,OAAO,IAAI;EACb;EAEA,OACET,KAAA,CAAAa,aAAA,CAACR,IAAI,CAACS,KAAK,EAAAC,QAAA;IACTP,SAAS,EAAEN,UAAU,CAAC,gBAAgB,EAAEM,SAAS;EAAE,GAC/CL,sBAAsB,CAACI,KAAK,CAAC,GAEhCG,QACS,CAAC;AAEjB;AAEAJ,IAAI,CAACU,qBAAqB,GAAG,IAAI;AACjC,eAAeV,IAAI"}
@@ -1,8 +1,10 @@
1
1
  import React from 'react';
2
- interface StepsContextState {
3
- activeIndex: number;
4
- handlePrevious: () => void;
5
- handleNext: () => void;
2
+ export type StepIndex = number;
3
+ export interface StepsContextState {
4
+ activeIndex?: StepIndex;
5
+ handlePrevious?: () => void;
6
+ handleNext?: () => void;
7
+ setActiveIndex?: (index: StepIndex) => void;
6
8
  }
7
9
  declare const StepsContext: React.Context<StepsContextState>;
8
10
  export default StepsContext;
@@ -1,4 +1,9 @@
1
1
  import React from 'react';
2
- const StepsContext = React.createContext(undefined);
2
+ const StepsContext = React.createContext({
3
+ activeIndex: 0,
4
+ setActiveIndex: () => null,
5
+ handlePrevious: () => null,
6
+ handleNext: () => null
7
+ });
3
8
  export default StepsContext;
4
9
  //# sourceMappingURL=StepsContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StepsContext.js","names":["React","StepsContext","createContext","undefined"],"sources":["../../../../../src/extensions/forms/StepsLayout/StepsContext.ts"],"sourcesContent":["import React from 'react'\n\ninterface StepsContextState {\n activeIndex: number\n handlePrevious: () => void\n handleNext: () => void\n}\n\nconst StepsContext = React.createContext<StepsContextState | undefined>(\n undefined\n)\n\nexport default StepsContext\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAQzB,MAAMC,YAAY,GAAGD,KAAK,CAACE,aAAa,CACtCC,SACF,CAAC;AAED,eAAeF,YAAY"}
1
+ {"version":3,"file":"StepsContext.js","names":["React","StepsContext","createContext","activeIndex","setActiveIndex","handlePrevious","handleNext"],"sources":["../../../../../src/extensions/forms/StepsLayout/StepsContext.ts"],"sourcesContent":["import React from 'react'\n\nexport type StepIndex = number\nexport interface StepsContextState {\n activeIndex?: StepIndex\n handlePrevious?: () => void\n handleNext?: () => void\n setActiveIndex?: (index: StepIndex) => void\n}\n\nconst StepsContext = React.createContext<StepsContextState | undefined>({\n activeIndex: 0,\n setActiveIndex: () => null,\n handlePrevious: () => null,\n handleNext: () => null,\n})\n\nexport default StepsContext\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAUzB,MAAMC,YAAY,GAAGD,KAAK,CAACE,aAAa,CAAgC;EACtEC,WAAW,EAAE,CAAC;EACdC,cAAc,EAAEA,CAAA,KAAM,IAAI;EAC1BC,cAAc,EAAEA,CAAA,KAAM,IAAI;EAC1BC,UAAU,EAAEA,CAAA,KAAM;AACpB,CAAC,CAAC;AAEF,eAAeL,YAAY"}
@@ -1,11 +1,12 @@
1
1
  import React from 'react';
2
+ import { StepIndex } from './StepsContext';
2
3
  import { ComponentProps, EventReturnWithStateObject } from '../types';
3
4
  export type Props = ComponentProps & {
4
5
  id?: string;
5
6
  mode?: 'static' | 'strict' | 'loose';
6
7
  scrollTopOnStepChange?: boolean;
7
- initialActiveIndex?: number;
8
- onStepChange?: (index: number, mode: 'previous' | 'next') => EventReturnWithStateObject | void | Promise<EventReturnWithStateObject | void>;
8
+ initialActiveIndex?: StepIndex;
9
+ onStepChange?: (index: StepIndex, mode: 'previous' | 'next') => EventReturnWithStateObject | void | Promise<EventReturnWithStateObject | void>;
9
10
  children: React.ReactNode;
10
11
  variant?: 'sidebar' | 'drawer';
11
12
  noAnimation?: boolean;
@@ -18,5 +19,6 @@ declare namespace StepsLayout {
18
19
  var NextButton: typeof import("./NextButton/NextButton").default;
19
20
  var PreviousButton: typeof import("./PreviousButton/PreviousButton").default;
20
21
  var Buttons: typeof import("./Buttons/Buttons").default;
22
+ var useStep: typeof import("./useStep").useStep;
21
23
  }
22
24
  export default StepsLayout;
@@ -1,9 +1,12 @@
1
1
  "use client";
2
2
 
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
5
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
6
  const _excluded = ["className", "id", "mode", "scrollTopOnStepChange", "initialActiveIndex", "onStepChange", "children", "noAnimation", "variant", "sidebarId"];
6
- import React, { useContext, useCallback, useRef, useReducer } from 'react';
7
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
9
+ import React, { useContext, useCallback, useRef, useReducer, useMemo, useEffect } from 'react';
7
10
  import classnames from 'classnames';
8
11
  import { Space, StepIndicator } from '../../../components';
9
12
  import { warn } from '../../../shared/component-helper';
@@ -16,6 +19,8 @@ import NextButton from './NextButton';
16
19
  import PreviousButton from './PreviousButton';
17
20
  import Buttons from './Buttons';
18
21
  import Provider from '../DataContext/Provider';
22
+ import { useSharedState } from '../../../shared/helpers/useSharedState';
23
+ import { useStep } from './useStep';
19
24
  function StepsLayout(props) {
20
25
  const {
21
26
  className,
@@ -30,7 +35,6 @@ function StepsLayout(props) {
30
35
  sidebarId
31
36
  } = props,
32
37
  rest = _objectWithoutProperties(props, _excluded);
33
- const dataContext = useContext(DataContext);
34
38
  const {
35
39
  hasContext,
36
40
  setFormState,
@@ -38,7 +42,7 @@ function StepsLayout(props) {
38
42
  setShowAllErrors,
39
43
  showAllErrors,
40
44
  scrollToTop
41
- } = dataContext;
45
+ } = useContext(DataContext);
42
46
  const id = useId(_id);
43
47
  const [, forceUpdate] = useReducer(() => ({}), {});
44
48
  const activeIndexRef = useRef(initialActiveIndex);
@@ -50,34 +54,24 @@ function StepsLayout(props) {
50
54
  }
51
55
  return onStepChange === null || onStepChange === void 0 ? void 0 : onStepChange(index, mode);
52
56
  }, [onStepChange]);
53
- const handlePrevious = useCallback(() => {
57
+ const handleStepChange = useCallback(_ref => {
58
+ let {
59
+ index,
60
+ skipErrorCheck,
61
+ mode
62
+ } = _ref;
54
63
  handleSubmitCall({
55
- skipFieldValidation: true,
56
- skipErrorCheck: true,
64
+ skipErrorCheck,
65
+ skipFieldValidation: skipErrorCheck,
57
66
  enableAsyncBehaviour: isAsync(onStepChange),
58
67
  onSubmit: async () => {
59
- const result = await callOnStepChange(activeIndexRef.current - 1, 'previous');
68
+ const result = await callOnStepChange(index, mode);
60
69
  setFormState('abort');
61
- if (!(result instanceof Error)) {
62
- activeIndexRef.current = activeIndexRef.current - 1;
63
- forceUpdate();
64
- }
65
- if (scrollTopOnStepChange) {
66
- scrollToTop();
70
+ if (!skipErrorCheck) {
71
+ setShowAllErrors(errorOnStepRef.current[index]);
67
72
  }
68
- return result;
69
- }
70
- });
71
- }, [callOnStepChange, handleSubmitCall, onStepChange, scrollToTop, scrollTopOnStepChange, setFormState]);
72
- const handleNext = useCallback(() => {
73
- handleSubmitCall({
74
- enableAsyncBehaviour: isAsync(onStepChange),
75
- onSubmit: async () => {
76
- const result = await callOnStepChange(activeIndexRef.current + 1, 'next');
77
- setFormState('abort');
78
- setShowAllErrors(errorOnStepRef.current[activeIndexRef.current + 1]);
79
73
  if (!(result instanceof Error)) {
80
- activeIndexRef.current = activeIndexRef.current + 1;
74
+ activeIndexRef.current = index;
81
75
  forceUpdate();
82
76
  }
83
77
  if (scrollTopOnStepChange) {
@@ -87,33 +81,76 @@ function StepsLayout(props) {
87
81
  }
88
82
  });
89
83
  }, [callOnStepChange, handleSubmitCall, onStepChange, scrollToTop, scrollTopOnStepChange, setFormState, setShowAllErrors]);
90
- const stepIndicatorData = React.Children.map(children, child => {
91
- var _child$props$title;
92
- if (!React.isValidElement(child) || child.type !== Step) {
93
- throw new Error('Only Step can be children of StepsLayout');
84
+ const setActiveIndex = useCallback((index, options) => {
85
+ if (index === activeIndexRef.current) {
86
+ return;
94
87
  }
95
- return (_child$props$title = child.props.title) !== null && _child$props$title !== void 0 ? _child$props$title : 'Title missing';
96
- });
97
- const handleChange = useCallback(_ref => {
88
+ const mode = index > activeIndexRef.current ? 'next' : 'previous';
89
+ handleStepChange(_objectSpread({
90
+ index,
91
+ skipErrorCheck: mode === 'previous',
92
+ mode
93
+ }, options));
94
+ }, [handleStepChange]);
95
+ const handlePrevious = useCallback(() => {
96
+ setActiveIndex(activeIndexRef.current - 1);
97
+ }, [setActiveIndex]);
98
+ const handleNext = useCallback(() => {
99
+ setActiveIndex(activeIndexRef.current + 1);
100
+ }, [setActiveIndex]);
101
+ const handleChange = useCallback(_ref2 => {
98
102
  let {
99
103
  current_step
100
- } = _ref;
101
- activeIndexRef.current = current_step;
102
- setShowAllErrors(errorOnStepRef.current[current_step]);
103
- forceUpdate();
104
- }, [setShowAllErrors]);
104
+ } = _ref2;
105
+ setActiveIndex(current_step, {
106
+ skipErrorCheck: true
107
+ });
108
+ }, [setActiveIndex]);
109
+ const providerValue = useMemo(() => ({
110
+ activeIndex: activeIndexRef.current,
111
+ setActiveIndex,
112
+ handlePrevious,
113
+ handleNext
114
+ }), [activeIndexRef.current, setActiveIndex, handlePrevious, handleNext]);
115
+ const sharedState = useSharedState(hasContext && id ? id + '-steps' : undefined);
116
+ const {
117
+ extend
118
+ } = sharedState;
119
+ useEffect(() => {
120
+ if (hasContext && id) {
121
+ extend(providerValue);
122
+ }
123
+ }, [id, extend, providerValue]);
105
124
  if (!hasContext) {
106
125
  warn('You may wrap StepsLayout in Form.Handler');
107
126
  return React.createElement(Provider, null, React.createElement(StepsLayout, _extends({}, props, {
108
127
  id: id
109
128
  })));
110
129
  }
111
- return React.createElement(StepsContext.Provider, {
112
- value: {
113
- activeIndex: activeIndexRef.current,
114
- handlePrevious,
115
- handleNext
130
+ const titles = [];
131
+ const contents = React.Children.map(children, (child, i) => {
132
+ if (React.isValidElement(child)) {
133
+ var _child, _child2;
134
+ let step = child;
135
+ if (((_child = child) === null || _child === void 0 ? void 0 : _child.type) !== Step && typeof child.type === 'function') {
136
+ var _step;
137
+ step = child.type.apply(child.type, [child.props]);
138
+ if (((_step = step) === null || _step === void 0 ? void 0 : _step.type) === Step) {
139
+ child = step;
140
+ }
141
+ }
142
+ if (((_child2 = child) === null || _child2 === void 0 ? void 0 : _child2.type) === Step) {
143
+ var _child$props$title;
144
+ titles.push((_child$props$title = child.props.title) !== null && _child$props$title !== void 0 ? _child$props$title : 'Title missing');
145
+ return React.cloneElement(child, {
146
+ index: i
147
+ });
148
+ }
116
149
  }
150
+ return child;
151
+ });
152
+ return React.createElement(StepsContext.Provider, {
153
+ value: providerValue
117
154
  }, React.createElement(Space, _extends({
118
155
  className: classnames('dnb-forms-steps-layout', className, variant === 'drawer' && 'dnb-forms-steps-layout--drawer')
119
156
  }, rest), React.createElement("aside", {
@@ -123,26 +160,20 @@ function StepsLayout(props) {
123
160
  }), React.createElement(StepIndicator, {
124
161
  bottom: true,
125
162
  current_step: activeIndexRef.current,
126
- data: stepIndicatorData,
163
+ data: titles,
127
164
  mode: mode,
128
165
  no_animation: noAnimation,
129
166
  on_change: handleChange,
130
167
  sidebar_id: variant === 'drawer' && !sidebarId ? '' : sidebarId ? sidebarId : id
131
168
  })), React.createElement("div", {
132
169
  className: "dnb-forms-steps-layout__contents"
133
- }, React.Children.map(children, (child, i) => {
134
- if (React.isValidElement(child) && child.type === Step) {
135
- return React.cloneElement(child, {
136
- index: i
137
- });
138
- }
139
- return child;
140
- }))));
170
+ }, contents)));
141
171
  }
142
172
  StepsLayout._supportsSpacingProps = true;
143
173
  StepsLayout.Step = Step;
144
174
  StepsLayout.NextButton = NextButton;
145
175
  StepsLayout.PreviousButton = PreviousButton;
146
176
  StepsLayout.Buttons = Buttons;
177
+ StepsLayout.useStep = useStep;
147
178
  export default StepsLayout;
148
179
  //# sourceMappingURL=StepsLayout.js.map