@dnb/eufemia 10.16.0 → 10.18.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 (591) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/cjs/components/anchor/Anchor.js +9 -5
  3. package/cjs/components/anchor/Anchor.js.map +1 -1
  4. package/cjs/components/anchor/style/anchor-mixins.scss +0 -11
  5. package/cjs/components/anchor/style/dnb-anchor.css +0 -16
  6. package/cjs/components/anchor/style/dnb-anchor.min.css +1 -1
  7. package/cjs/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +16 -4
  8. package/cjs/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
  9. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.css +16 -4
  10. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  11. package/cjs/components/anchor/style/themes/dnb-anchor-theme-ui.scss +10 -2
  12. package/cjs/components/autocomplete/Autocomplete.js +2 -2
  13. package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
  14. package/cjs/components/button/style/dnb-button.css +13 -0
  15. package/cjs/components/button/style/dnb-button.min.css +1 -1
  16. package/cjs/components/button/style/dnb-button.scss +16 -0
  17. package/cjs/components/button/style/themes/dnb-button-theme-eiendom.css +12 -1
  18. package/cjs/components/button/style/themes/dnb-button-theme-eiendom.min.css +1 -1
  19. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.css +12 -0
  20. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.min.css +2 -2
  21. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.scss +10 -0
  22. package/cjs/components/button/style/themes/dnb-button-theme-ui.css +12 -1
  23. package/cjs/components/button/style/themes/dnb-button-theme-ui.min.css +1 -1
  24. package/cjs/components/button/style/themes/dnb-button-theme-ui.scss +12 -3
  25. package/cjs/components/date-picker/DatePicker.d.ts +14 -1
  26. package/cjs/components/date-picker/DatePicker.js +0 -1
  27. package/cjs/components/date-picker/DatePicker.js.map +1 -1
  28. package/cjs/components/date-picker/DatePickerCalc.js +2 -1
  29. package/cjs/components/date-picker/DatePickerCalc.js.map +1 -1
  30. package/cjs/components/date-picker/DatePickerInput.d.ts +3 -0
  31. package/cjs/components/date-picker/DatePickerInput.js +9 -2
  32. package/cjs/components/date-picker/DatePickerInput.js.map +1 -1
  33. package/cjs/components/dropdown/Dropdown.js +3 -2
  34. package/cjs/components/dropdown/Dropdown.js.map +1 -1
  35. package/cjs/components/flex/Container.js +15 -2
  36. package/cjs/components/flex/Container.js.map +1 -1
  37. package/cjs/components/flex/export.d.ts +1 -0
  38. package/cjs/components/flex/export.js +7 -0
  39. package/cjs/components/flex/export.js.map +1 -1
  40. package/cjs/components/flex/utils.d.ts +1 -1
  41. package/cjs/components/flex/utils.js +11 -1
  42. package/cjs/components/flex/utils.js.map +1 -1
  43. package/cjs/components/flex/withChildren.d.ts +6 -0
  44. package/cjs/components/flex/withChildren.js +13 -0
  45. package/cjs/components/flex/withChildren.js.map +1 -0
  46. package/cjs/components/input/Input.js +3 -3
  47. package/cjs/components/input/Input.js.map +1 -1
  48. package/cjs/components/input/style/themes/dnb-input-theme-ui.css +2 -0
  49. package/cjs/components/input/style/themes/dnb-input-theme-ui.min.css +1 -1
  50. package/cjs/components/input/style/themes/dnb-input-theme-ui.scss +2 -0
  51. package/cjs/components/input-masked/InputMaskedHooks.d.ts +1 -0
  52. package/cjs/components/input-masked/InputMaskedHooks.js +13 -8
  53. package/cjs/components/input-masked/InputMaskedHooks.js.map +1 -1
  54. package/cjs/components/input-masked/MultiInputMask.d.ts +10 -2
  55. package/cjs/components/input-masked/MultiInputMask.js +41 -14
  56. package/cjs/components/input-masked/MultiInputMask.js.map +1 -1
  57. package/cjs/components/input-masked/hooks/useHandleCursorPosition.js +7 -3
  58. package/cjs/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -1
  59. package/cjs/components/input-masked/hooks/useMultiInputValues.d.ts +2 -2
  60. package/cjs/components/input-masked/hooks/useMultiInputValues.js.map +1 -1
  61. package/cjs/components/number-format/NumberFormat.js +1 -1
  62. package/cjs/components/number-format/NumberFormat.js.map +1 -1
  63. package/cjs/components/textarea/style/dnb-textarea.css +5 -0
  64. package/cjs/components/textarea/style/dnb-textarea.min.css +1 -1
  65. package/cjs/components/textarea/style/dnb-textarea.scss +4 -0
  66. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.css +8 -1
  67. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.min.css +1 -1
  68. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.scss +6 -1
  69. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +4 -0
  70. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.min.css +1 -1
  71. package/cjs/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +5 -0
  72. package/cjs/components/visually-hidden/VisuallyHidden.js +1 -1
  73. package/cjs/components/visually-hidden/VisuallyHidden.js.map +1 -1
  74. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +8 -4
  75. package/cjs/extensions/forms/DataContext/Provider/Provider.js +22 -4
  76. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  77. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js +14 -14
  78. package/cjs/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  79. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +12 -2
  80. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  81. package/cjs/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +12 -2
  82. package/cjs/extensions/forms/Field/Currency/Currency.d.ts +1 -5
  83. package/cjs/extensions/forms/Field/Currency/Currency.js.map +1 -1
  84. package/cjs/extensions/forms/Field/Date/Date.d.ts +3 -1
  85. package/cjs/extensions/forms/Field/Date/Date.js +47 -10
  86. package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
  87. package/cjs/extensions/forms/Field/Expiry/Expiry.d.ts +1 -1
  88. package/cjs/extensions/forms/Field/Expiry/Expiry.js +20 -10
  89. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  90. package/cjs/extensions/forms/Field/Number/Number.d.ts +5 -1
  91. package/cjs/extensions/forms/Field/Number/Number.js +109 -30
  92. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  93. package/cjs/extensions/forms/Field/Number/style/dnb-number.css +192 -0
  94. package/cjs/extensions/forms/Field/Number/style/dnb-number.min.css +1 -0
  95. package/cjs/extensions/forms/Field/Number/style/dnb-number.scss +176 -0
  96. package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.css +74 -0
  97. package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.min.css +3 -0
  98. package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.scss +81 -0
  99. package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.css +15 -0
  100. package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.min.css +5 -0
  101. package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.scss +15 -0
  102. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +7 -10
  103. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  104. package/cjs/extensions/forms/Field/Selection/Selection.d.ts +7 -1
  105. package/cjs/extensions/forms/Field/Selection/Selection.js +4 -9
  106. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  107. package/cjs/extensions/forms/Field/String/String.d.ts +0 -1
  108. package/cjs/extensions/forms/Field/String/String.js +23 -9
  109. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  110. package/cjs/extensions/forms/Field/Toggle/Toggle.js +0 -4
  111. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  112. package/cjs/extensions/forms/FieldBlock/FieldBlock.d.ts +1 -1
  113. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +16 -26
  114. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  115. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +9 -9
  116. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  117. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.scss +2 -11
  118. package/cjs/extensions/forms/Form/Handler/Handler.js +1 -0
  119. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  120. package/cjs/extensions/forms/{Visibility → Form/Visibility}/Visibility.d.ts +5 -2
  121. package/cjs/extensions/forms/{Visibility → Form/Visibility}/Visibility.js +7 -2
  122. package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -0
  123. package/cjs/extensions/forms/Form/Visibility/index.js.map +1 -0
  124. package/cjs/extensions/forms/Form/hooks/useData.d.ts +10 -0
  125. package/cjs/extensions/forms/Form/hooks/useData.js +36 -0
  126. package/cjs/extensions/forms/Form/hooks/useData.js.map +1 -0
  127. package/cjs/extensions/forms/Form/index.d.ts +2 -0
  128. package/cjs/extensions/forms/Form/index.js +14 -0
  129. package/cjs/extensions/forms/Form/index.js.map +1 -1
  130. package/cjs/extensions/forms/Iterate/Array/Array.js +0 -4
  131. package/cjs/extensions/forms/Iterate/Array/Array.js.map +1 -1
  132. package/cjs/extensions/forms/hooks/useDataValue.js +26 -33
  133. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  134. package/cjs/extensions/forms/hooks/useId.d.ts +1 -0
  135. package/cjs/extensions/forms/hooks/useId.js +18 -0
  136. package/cjs/extensions/forms/hooks/useId.js.map +1 -0
  137. package/cjs/extensions/forms/index.d.ts +6 -1
  138. package/cjs/extensions/forms/index.js +5 -8
  139. package/cjs/extensions/forms/index.js.map +1 -1
  140. package/cjs/extensions/forms/style/dnb-forms.css +214 -11
  141. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  142. package/cjs/extensions/forms/types.d.ts +16 -18
  143. package/cjs/extensions/forms/types.js.map +1 -1
  144. package/cjs/extensions/forms/utils/TestElement/TestElement.d.ts +5 -1
  145. package/cjs/extensions/forms/utils/TestElement/TestElement.js +1 -0
  146. package/cjs/extensions/forms/utils/TestElement/TestElement.js.map +1 -1
  147. package/cjs/shared/Eufemia.d.ts +1 -1
  148. package/cjs/shared/Eufemia.js +2 -2
  149. package/cjs/shared/Eufemia.js.map +1 -1
  150. package/cjs/shared/helpers/EventEmitter.d.ts +5 -0
  151. package/cjs/shared/helpers/EventEmitter.js.map +1 -1
  152. package/cjs/shared/helpers/useEventEmitter.d.ts +2 -0
  153. package/cjs/shared/helpers/useEventEmitter.js.map +1 -1
  154. package/cjs/shared/helpers/useSharedState.d.ts +15 -0
  155. package/cjs/shared/helpers/useSharedState.js +71 -0
  156. package/cjs/shared/helpers/useSharedState.js.map +1 -0
  157. package/cjs/style/core/utilities.scss +1 -2
  158. package/cjs/style/dnb-ui-components.css +232 -27
  159. package/cjs/style/dnb-ui-components.min.css +3 -3
  160. package/cjs/style/dnb-ui-extensions.css +214 -11
  161. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  162. package/cjs/style/dnb-ui-forms.css +214 -11
  163. package/cjs/style/dnb-ui-forms.min.css +1 -1
  164. package/cjs/style/dnb-ui-forms.scss +1 -0
  165. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +498 -44
  166. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +9 -5
  167. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +230 -11
  168. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +5 -1
  169. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -0
  170. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +230 -12
  171. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +5 -1
  172. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.scss +2 -0
  173. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +541 -40
  174. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +8 -6
  175. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +289 -11
  176. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +3 -1
  177. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -0
  178. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +289 -12
  179. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +3 -1
  180. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.scss +2 -0
  181. package/cjs/style/themes/theme-ui/ui-theme-components.css +496 -44
  182. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +9 -5
  183. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +230 -11
  184. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +5 -1
  185. package/cjs/style/themes/theme-ui/ui-theme-extensions.scss +1 -0
  186. package/cjs/style/themes/theme-ui/ui-theme-forms.css +230 -12
  187. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +5 -1
  188. package/cjs/style/themes/theme-ui/ui-theme-forms.scss +2 -0
  189. package/cjs/style/themes/theme-ui/ui-theme-tags.css +8 -10
  190. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  191. package/components/anchor/Anchor.js +9 -5
  192. package/components/anchor/Anchor.js.map +1 -1
  193. package/components/anchor/style/anchor-mixins.scss +0 -11
  194. package/components/anchor/style/dnb-anchor.css +0 -16
  195. package/components/anchor/style/dnb-anchor.min.css +1 -1
  196. package/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +16 -4
  197. package/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
  198. package/components/anchor/style/themes/dnb-anchor-theme-ui.css +16 -4
  199. package/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  200. package/components/anchor/style/themes/dnb-anchor-theme-ui.scss +10 -2
  201. package/components/autocomplete/Autocomplete.js +2 -2
  202. package/components/autocomplete/Autocomplete.js.map +1 -1
  203. package/components/button/style/dnb-button.css +13 -0
  204. package/components/button/style/dnb-button.min.css +1 -1
  205. package/components/button/style/dnb-button.scss +16 -0
  206. package/components/button/style/themes/dnb-button-theme-eiendom.css +12 -1
  207. package/components/button/style/themes/dnb-button-theme-eiendom.min.css +1 -1
  208. package/components/button/style/themes/dnb-button-theme-sbanken.css +12 -0
  209. package/components/button/style/themes/dnb-button-theme-sbanken.min.css +2 -2
  210. package/components/button/style/themes/dnb-button-theme-sbanken.scss +10 -0
  211. package/components/button/style/themes/dnb-button-theme-ui.css +12 -1
  212. package/components/button/style/themes/dnb-button-theme-ui.min.css +1 -1
  213. package/components/button/style/themes/dnb-button-theme-ui.scss +12 -3
  214. package/components/date-picker/DatePicker.d.ts +14 -1
  215. package/components/date-picker/DatePicker.js +0 -1
  216. package/components/date-picker/DatePicker.js.map +1 -1
  217. package/components/date-picker/DatePickerCalc.js +2 -1
  218. package/components/date-picker/DatePickerCalc.js.map +1 -1
  219. package/components/date-picker/DatePickerInput.d.ts +3 -0
  220. package/components/date-picker/DatePickerInput.js +9 -2
  221. package/components/date-picker/DatePickerInput.js.map +1 -1
  222. package/components/dropdown/Dropdown.js +3 -2
  223. package/components/dropdown/Dropdown.js.map +1 -1
  224. package/components/flex/Container.js +15 -2
  225. package/components/flex/Container.js.map +1 -1
  226. package/components/flex/export.d.ts +1 -0
  227. package/components/flex/export.js +1 -0
  228. package/components/flex/export.js.map +1 -1
  229. package/components/flex/utils.d.ts +1 -1
  230. package/components/flex/utils.js +11 -1
  231. package/components/flex/utils.js.map +1 -1
  232. package/components/flex/withChildren.d.ts +6 -0
  233. package/components/flex/withChildren.js +6 -0
  234. package/components/flex/withChildren.js.map +1 -0
  235. package/components/input/Input.js +3 -3
  236. package/components/input/Input.js.map +1 -1
  237. package/components/input/style/themes/dnb-input-theme-ui.css +2 -0
  238. package/components/input/style/themes/dnb-input-theme-ui.min.css +1 -1
  239. package/components/input/style/themes/dnb-input-theme-ui.scss +2 -0
  240. package/components/input-masked/InputMaskedHooks.d.ts +1 -0
  241. package/components/input-masked/InputMaskedHooks.js +13 -8
  242. package/components/input-masked/InputMaskedHooks.js.map +1 -1
  243. package/components/input-masked/MultiInputMask.d.ts +10 -2
  244. package/components/input-masked/MultiInputMask.js +39 -14
  245. package/components/input-masked/MultiInputMask.js.map +1 -1
  246. package/components/input-masked/hooks/useHandleCursorPosition.js +7 -3
  247. package/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -1
  248. package/components/input-masked/hooks/useMultiInputValues.d.ts +2 -2
  249. package/components/input-masked/hooks/useMultiInputValues.js.map +1 -1
  250. package/components/number-format/NumberFormat.js +1 -1
  251. package/components/number-format/NumberFormat.js.map +1 -1
  252. package/components/textarea/style/dnb-textarea.css +5 -0
  253. package/components/textarea/style/dnb-textarea.min.css +1 -1
  254. package/components/textarea/style/dnb-textarea.scss +4 -0
  255. package/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.css +8 -1
  256. package/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.min.css +1 -1
  257. package/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.scss +6 -1
  258. package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +4 -0
  259. package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.min.css +1 -1
  260. package/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +5 -0
  261. package/components/visually-hidden/VisuallyHidden.js +1 -1
  262. package/components/visually-hidden/VisuallyHidden.js.map +1 -1
  263. package/es/components/anchor/Anchor.js +9 -5
  264. package/es/components/anchor/Anchor.js.map +1 -1
  265. package/es/components/anchor/style/anchor-mixins.scss +0 -11
  266. package/es/components/anchor/style/dnb-anchor.css +0 -16
  267. package/es/components/anchor/style/dnb-anchor.min.css +1 -1
  268. package/es/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +16 -4
  269. package/es/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
  270. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.css +16 -4
  271. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  272. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.scss +10 -2
  273. package/es/components/autocomplete/Autocomplete.js +2 -2
  274. package/es/components/autocomplete/Autocomplete.js.map +1 -1
  275. package/es/components/button/style/dnb-button.css +13 -0
  276. package/es/components/button/style/dnb-button.min.css +1 -1
  277. package/es/components/button/style/dnb-button.scss +16 -0
  278. package/es/components/button/style/themes/dnb-button-theme-eiendom.css +12 -1
  279. package/es/components/button/style/themes/dnb-button-theme-eiendom.min.css +1 -1
  280. package/es/components/button/style/themes/dnb-button-theme-sbanken.css +12 -0
  281. package/es/components/button/style/themes/dnb-button-theme-sbanken.min.css +2 -2
  282. package/es/components/button/style/themes/dnb-button-theme-sbanken.scss +10 -0
  283. package/es/components/button/style/themes/dnb-button-theme-ui.css +12 -1
  284. package/es/components/button/style/themes/dnb-button-theme-ui.min.css +1 -1
  285. package/es/components/button/style/themes/dnb-button-theme-ui.scss +12 -3
  286. package/es/components/date-picker/DatePicker.d.ts +14 -1
  287. package/es/components/date-picker/DatePicker.js +0 -1
  288. package/es/components/date-picker/DatePicker.js.map +1 -1
  289. package/es/components/date-picker/DatePickerCalc.js +2 -1
  290. package/es/components/date-picker/DatePickerCalc.js.map +1 -1
  291. package/es/components/date-picker/DatePickerInput.d.ts +3 -0
  292. package/es/components/date-picker/DatePickerInput.js +9 -2
  293. package/es/components/date-picker/DatePickerInput.js.map +1 -1
  294. package/es/components/dropdown/Dropdown.js +3 -2
  295. package/es/components/dropdown/Dropdown.js.map +1 -1
  296. package/es/components/flex/Container.js +15 -2
  297. package/es/components/flex/Container.js.map +1 -1
  298. package/es/components/flex/export.d.ts +1 -0
  299. package/es/components/flex/export.js +1 -0
  300. package/es/components/flex/export.js.map +1 -1
  301. package/es/components/flex/utils.d.ts +1 -1
  302. package/es/components/flex/utils.js +11 -1
  303. package/es/components/flex/utils.js.map +1 -1
  304. package/es/components/flex/withChildren.d.ts +6 -0
  305. package/es/components/flex/withChildren.js +6 -0
  306. package/es/components/flex/withChildren.js.map +1 -0
  307. package/es/components/input/Input.js +3 -3
  308. package/es/components/input/Input.js.map +1 -1
  309. package/es/components/input/style/themes/dnb-input-theme-ui.css +2 -0
  310. package/es/components/input/style/themes/dnb-input-theme-ui.min.css +1 -1
  311. package/es/components/input/style/themes/dnb-input-theme-ui.scss +2 -0
  312. package/es/components/input-masked/InputMaskedHooks.d.ts +1 -0
  313. package/es/components/input-masked/InputMaskedHooks.js +13 -8
  314. package/es/components/input-masked/InputMaskedHooks.js.map +1 -1
  315. package/es/components/input-masked/MultiInputMask.d.ts +10 -2
  316. package/es/components/input-masked/MultiInputMask.js +39 -13
  317. package/es/components/input-masked/MultiInputMask.js.map +1 -1
  318. package/es/components/input-masked/hooks/useHandleCursorPosition.js +7 -3
  319. package/es/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -1
  320. package/es/components/input-masked/hooks/useMultiInputValues.d.ts +2 -2
  321. package/es/components/input-masked/hooks/useMultiInputValues.js.map +1 -1
  322. package/es/components/number-format/NumberFormat.js +1 -1
  323. package/es/components/number-format/NumberFormat.js.map +1 -1
  324. package/es/components/textarea/style/dnb-textarea.css +5 -0
  325. package/es/components/textarea/style/dnb-textarea.min.css +1 -1
  326. package/es/components/textarea/style/dnb-textarea.scss +4 -0
  327. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.css +8 -1
  328. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.min.css +1 -1
  329. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-sbanken.scss +6 -1
  330. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.css +4 -0
  331. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.min.css +1 -1
  332. package/es/components/toggle-button/style/themes/dnb-toggle-button-theme-ui.scss +5 -0
  333. package/es/components/visually-hidden/VisuallyHidden.js +1 -1
  334. package/es/components/visually-hidden/VisuallyHidden.js.map +1 -1
  335. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +8 -4
  336. package/es/extensions/forms/DataContext/Provider/Provider.js +22 -4
  337. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  338. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js +15 -15
  339. package/es/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  340. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +12 -2
  341. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  342. package/es/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +12 -2
  343. package/es/extensions/forms/Field/Currency/Currency.d.ts +1 -5
  344. package/es/extensions/forms/Field/Currency/Currency.js.map +1 -1
  345. package/es/extensions/forms/Field/Date/Date.d.ts +3 -1
  346. package/es/extensions/forms/Field/Date/Date.js +45 -9
  347. package/es/extensions/forms/Field/Date/Date.js.map +1 -1
  348. package/es/extensions/forms/Field/Expiry/Expiry.d.ts +1 -1
  349. package/es/extensions/forms/Field/Expiry/Expiry.js +20 -11
  350. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  351. package/es/extensions/forms/Field/Number/Number.d.ts +5 -1
  352. package/es/extensions/forms/Field/Number/Number.js +109 -31
  353. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  354. package/es/extensions/forms/Field/Number/style/dnb-number.css +192 -0
  355. package/es/extensions/forms/Field/Number/style/dnb-number.min.css +1 -0
  356. package/es/extensions/forms/Field/Number/style/dnb-number.scss +176 -0
  357. package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.css +74 -0
  358. package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.min.css +3 -0
  359. package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.scss +81 -0
  360. package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.css +15 -0
  361. package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.min.css +5 -0
  362. package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.scss +15 -0
  363. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +7 -10
  364. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  365. package/es/extensions/forms/Field/Selection/Selection.d.ts +7 -1
  366. package/es/extensions/forms/Field/Selection/Selection.js +4 -9
  367. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  368. package/es/extensions/forms/Field/String/String.d.ts +0 -1
  369. package/es/extensions/forms/Field/String/String.js +23 -9
  370. package/es/extensions/forms/Field/String/String.js.map +1 -1
  371. package/es/extensions/forms/Field/Toggle/Toggle.js +0 -4
  372. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  373. package/es/extensions/forms/FieldBlock/FieldBlock.d.ts +1 -1
  374. package/es/extensions/forms/FieldBlock/FieldBlock.js +14 -23
  375. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  376. package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +9 -9
  377. package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  378. package/es/extensions/forms/FieldBlock/style/dnb-field-block.scss +2 -11
  379. package/es/extensions/forms/Form/Handler/Handler.js +1 -0
  380. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  381. package/{extensions/forms → es/extensions/forms/Form}/Visibility/Visibility.d.ts +5 -2
  382. package/es/extensions/forms/{Visibility → Form/Visibility}/Visibility.js +7 -2
  383. package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -0
  384. package/es/extensions/forms/Form/Visibility/index.js.map +1 -0
  385. package/es/extensions/forms/Form/hooks/useData.d.ts +10 -0
  386. package/es/extensions/forms/Form/hooks/useData.js +29 -0
  387. package/es/extensions/forms/Form/hooks/useData.js.map +1 -0
  388. package/es/extensions/forms/Form/index.d.ts +2 -0
  389. package/es/extensions/forms/Form/index.js +2 -0
  390. package/es/extensions/forms/Form/index.js.map +1 -1
  391. package/es/extensions/forms/Iterate/Array/Array.js +0 -4
  392. package/es/extensions/forms/Iterate/Array/Array.js.map +1 -1
  393. package/es/extensions/forms/hooks/useDataValue.js +26 -33
  394. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  395. package/es/extensions/forms/hooks/useId.d.ts +1 -0
  396. package/es/extensions/forms/hooks/useId.js +11 -0
  397. package/es/extensions/forms/hooks/useId.js.map +1 -0
  398. package/es/extensions/forms/index.d.ts +6 -1
  399. package/es/extensions/forms/index.js +3 -1
  400. package/es/extensions/forms/index.js.map +1 -1
  401. package/es/extensions/forms/style/dnb-forms.css +214 -11
  402. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  403. package/es/extensions/forms/types.d.ts +16 -18
  404. package/es/extensions/forms/types.js.map +1 -1
  405. package/es/extensions/forms/utils/TestElement/TestElement.d.ts +5 -1
  406. package/es/extensions/forms/utils/TestElement/TestElement.js +1 -0
  407. package/es/extensions/forms/utils/TestElement/TestElement.js.map +1 -1
  408. package/es/shared/Eufemia.d.ts +1 -1
  409. package/es/shared/Eufemia.js +2 -2
  410. package/es/shared/Eufemia.js.map +1 -1
  411. package/es/shared/helpers/EventEmitter.d.ts +5 -0
  412. package/es/shared/helpers/EventEmitter.js.map +1 -1
  413. package/es/shared/helpers/useEventEmitter.d.ts +2 -0
  414. package/es/shared/helpers/useEventEmitter.js.map +1 -1
  415. package/es/shared/helpers/useSharedState.d.ts +15 -0
  416. package/es/shared/helpers/useSharedState.js +63 -0
  417. package/es/shared/helpers/useSharedState.js.map +1 -0
  418. package/es/style/core/utilities.scss +1 -2
  419. package/es/style/dnb-ui-components.css +232 -27
  420. package/es/style/dnb-ui-components.min.css +3 -3
  421. package/es/style/dnb-ui-extensions.css +214 -11
  422. package/es/style/dnb-ui-extensions.min.css +1 -1
  423. package/es/style/dnb-ui-forms.css +214 -11
  424. package/es/style/dnb-ui-forms.min.css +1 -1
  425. package/es/style/dnb-ui-forms.scss +1 -0
  426. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +498 -44
  427. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +9 -5
  428. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +230 -11
  429. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +5 -1
  430. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -0
  431. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +230 -12
  432. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +5 -1
  433. package/es/style/themes/theme-eiendom/eiendom-theme-forms.scss +2 -0
  434. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +541 -40
  435. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +8 -6
  436. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +289 -11
  437. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +3 -1
  438. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -0
  439. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +289 -12
  440. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +3 -1
  441. package/es/style/themes/theme-sbanken/sbanken-theme-forms.scss +2 -0
  442. package/es/style/themes/theme-ui/ui-theme-components.css +496 -44
  443. package/es/style/themes/theme-ui/ui-theme-components.min.css +9 -5
  444. package/es/style/themes/theme-ui/ui-theme-extensions.css +230 -11
  445. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +5 -1
  446. package/es/style/themes/theme-ui/ui-theme-extensions.scss +1 -0
  447. package/es/style/themes/theme-ui/ui-theme-forms.css +230 -12
  448. package/es/style/themes/theme-ui/ui-theme-forms.min.css +5 -1
  449. package/es/style/themes/theme-ui/ui-theme-forms.scss +2 -0
  450. package/es/style/themes/theme-ui/ui-theme-tags.css +8 -10
  451. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  452. package/esm/dnb-ui-basis.min.mjs +1 -1
  453. package/esm/dnb-ui-components.min.mjs +1 -1
  454. package/esm/dnb-ui-elements.min.mjs +1 -1
  455. package/esm/dnb-ui-extensions.min.mjs +3 -3
  456. package/esm/dnb-ui-lib.min.mjs +1 -1
  457. package/extensions/forms/DataContext/Provider/Provider.d.ts +8 -4
  458. package/extensions/forms/DataContext/Provider/Provider.js +22 -4
  459. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  460. package/extensions/forms/Field/ArraySelection/ArraySelection.js +15 -15
  461. package/extensions/forms/Field/ArraySelection/ArraySelection.js.map +1 -1
  462. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.css +12 -2
  463. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.min.css +1 -1
  464. package/extensions/forms/Field/ArraySelection/style/dnb-array-selection.scss +12 -2
  465. package/extensions/forms/Field/Currency/Currency.d.ts +1 -5
  466. package/extensions/forms/Field/Currency/Currency.js.map +1 -1
  467. package/extensions/forms/Field/Date/Date.d.ts +3 -1
  468. package/extensions/forms/Field/Date/Date.js +48 -11
  469. package/extensions/forms/Field/Date/Date.js.map +1 -1
  470. package/extensions/forms/Field/Expiry/Expiry.d.ts +1 -1
  471. package/extensions/forms/Field/Expiry/Expiry.js +21 -11
  472. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  473. package/extensions/forms/Field/Number/Number.d.ts +5 -1
  474. package/extensions/forms/Field/Number/Number.js +110 -31
  475. package/extensions/forms/Field/Number/Number.js.map +1 -1
  476. package/extensions/forms/Field/Number/style/dnb-number.css +192 -0
  477. package/extensions/forms/Field/Number/style/dnb-number.min.css +1 -0
  478. package/extensions/forms/Field/Number/style/dnb-number.scss +176 -0
  479. package/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.css +74 -0
  480. package/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.min.css +3 -0
  481. package/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.scss +81 -0
  482. package/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.css +15 -0
  483. package/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.min.css +5 -0
  484. package/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.scss +15 -0
  485. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +7 -10
  486. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  487. package/extensions/forms/Field/Selection/Selection.d.ts +7 -1
  488. package/extensions/forms/Field/Selection/Selection.js +4 -9
  489. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  490. package/extensions/forms/Field/String/String.d.ts +0 -1
  491. package/extensions/forms/Field/String/String.js +23 -9
  492. package/extensions/forms/Field/String/String.js.map +1 -1
  493. package/extensions/forms/Field/Toggle/Toggle.js +0 -4
  494. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  495. package/extensions/forms/FieldBlock/FieldBlock.d.ts +1 -1
  496. package/extensions/forms/FieldBlock/FieldBlock.js +16 -26
  497. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  498. package/extensions/forms/FieldBlock/style/dnb-field-block.css +9 -9
  499. package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  500. package/extensions/forms/FieldBlock/style/dnb-field-block.scss +2 -11
  501. package/extensions/forms/Form/Handler/Handler.js +1 -0
  502. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  503. package/{es/extensions/forms → extensions/forms/Form}/Visibility/Visibility.d.ts +5 -2
  504. package/extensions/forms/{Visibility → Form/Visibility}/Visibility.js +7 -2
  505. package/extensions/forms/Form/Visibility/Visibility.js.map +1 -0
  506. package/extensions/forms/Form/Visibility/index.js.map +1 -0
  507. package/extensions/forms/Form/hooks/useData.d.ts +10 -0
  508. package/extensions/forms/Form/hooks/useData.js +30 -0
  509. package/extensions/forms/Form/hooks/useData.js.map +1 -0
  510. package/extensions/forms/Form/index.d.ts +2 -0
  511. package/extensions/forms/Form/index.js +2 -0
  512. package/extensions/forms/Form/index.js.map +1 -1
  513. package/extensions/forms/Iterate/Array/Array.js +0 -4
  514. package/extensions/forms/Iterate/Array/Array.js.map +1 -1
  515. package/extensions/forms/hooks/useDataValue.js +26 -33
  516. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  517. package/extensions/forms/hooks/useId.d.ts +1 -0
  518. package/extensions/forms/hooks/useId.js +11 -0
  519. package/extensions/forms/hooks/useId.js.map +1 -0
  520. package/extensions/forms/index.d.ts +6 -1
  521. package/extensions/forms/index.js +3 -1
  522. package/extensions/forms/index.js.map +1 -1
  523. package/extensions/forms/style/dnb-forms.css +214 -11
  524. package/extensions/forms/style/dnb-forms.min.css +1 -1
  525. package/extensions/forms/types.d.ts +16 -18
  526. package/extensions/forms/types.js.map +1 -1
  527. package/extensions/forms/utils/TestElement/TestElement.d.ts +5 -1
  528. package/extensions/forms/utils/TestElement/TestElement.js +1 -0
  529. package/extensions/forms/utils/TestElement/TestElement.js.map +1 -1
  530. package/package.json +1 -1
  531. package/shared/Eufemia.d.ts +1 -1
  532. package/shared/Eufemia.js +2 -2
  533. package/shared/Eufemia.js.map +1 -1
  534. package/shared/helpers/EventEmitter.d.ts +5 -0
  535. package/shared/helpers/EventEmitter.js.map +1 -1
  536. package/shared/helpers/useEventEmitter.d.ts +2 -0
  537. package/shared/helpers/useEventEmitter.js.map +1 -1
  538. package/shared/helpers/useSharedState.d.ts +15 -0
  539. package/shared/helpers/useSharedState.js +63 -0
  540. package/shared/helpers/useSharedState.js.map +1 -0
  541. package/style/core/utilities.scss +1 -2
  542. package/style/dnb-ui-components.css +232 -27
  543. package/style/dnb-ui-components.min.css +3 -3
  544. package/style/dnb-ui-extensions.css +214 -11
  545. package/style/dnb-ui-extensions.min.css +1 -1
  546. package/style/dnb-ui-forms.css +214 -11
  547. package/style/dnb-ui-forms.min.css +1 -1
  548. package/style/dnb-ui-forms.scss +1 -0
  549. package/style/themes/theme-eiendom/eiendom-theme-components.css +498 -44
  550. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +9 -5
  551. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +230 -11
  552. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +5 -1
  553. package/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -0
  554. package/style/themes/theme-eiendom/eiendom-theme-forms.css +230 -12
  555. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +5 -1
  556. package/style/themes/theme-eiendom/eiendom-theme-forms.scss +2 -0
  557. package/style/themes/theme-sbanken/sbanken-theme-components.css +541 -40
  558. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +8 -6
  559. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +289 -11
  560. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +3 -1
  561. package/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -0
  562. package/style/themes/theme-sbanken/sbanken-theme-forms.css +289 -12
  563. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +3 -1
  564. package/style/themes/theme-sbanken/sbanken-theme-forms.scss +2 -0
  565. package/style/themes/theme-ui/ui-theme-components.css +496 -44
  566. package/style/themes/theme-ui/ui-theme-components.min.css +9 -5
  567. package/style/themes/theme-ui/ui-theme-extensions.css +230 -11
  568. package/style/themes/theme-ui/ui-theme-extensions.min.css +5 -1
  569. package/style/themes/theme-ui/ui-theme-extensions.scss +1 -0
  570. package/style/themes/theme-ui/ui-theme-forms.css +230 -12
  571. package/style/themes/theme-ui/ui-theme-forms.min.css +5 -1
  572. package/style/themes/theme-ui/ui-theme-forms.scss +2 -0
  573. package/style/themes/theme-ui/ui-theme-tags.css +8 -10
  574. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  575. package/umd/dnb-ui-basis.min.js +1 -1
  576. package/umd/dnb-ui-components.min.js +1 -1
  577. package/umd/dnb-ui-elements.min.js +1 -1
  578. package/umd/dnb-ui-extensions.min.js +3 -3
  579. package/umd/dnb-ui-lib.min.js +1 -1
  580. package/cjs/extensions/forms/Visibility/Visibility.js.map +0 -1
  581. package/cjs/extensions/forms/Visibility/index.js.map +0 -1
  582. package/es/extensions/forms/Visibility/Visibility.js.map +0 -1
  583. package/es/extensions/forms/Visibility/index.js.map +0 -1
  584. package/extensions/forms/Visibility/Visibility.js.map +0 -1
  585. package/extensions/forms/Visibility/index.js.map +0 -1
  586. /package/cjs/extensions/forms/{Visibility → Form/Visibility}/index.d.ts +0 -0
  587. /package/cjs/extensions/forms/{Visibility → Form/Visibility}/index.js +0 -0
  588. /package/es/extensions/forms/{Visibility → Form/Visibility}/index.d.ts +0 -0
  589. /package/es/extensions/forms/{Visibility → Form/Visibility}/index.js +0 -0
  590. /package/extensions/forms/{Visibility → Form/Visibility}/index.d.ts +0 -0
  591. /package/extensions/forms/{Visibility → Form/Visibility}/index.js +0 -0
@@ -6,16 +6,26 @@
6
6
  /*
7
7
  * Utilities
8
8
  */
9
- .dnb-forms-field-array-selection--options-layout-vertical .dnb-forms-field-array-selection__options {
9
+ /*
10
+ * Utilities
11
+ */
12
+ .dnb-forms-field-array-selection--layout-vertical .dnb-forms-field-array-selection__options {
10
13
  display: flex;
11
14
  flex-flow: column;
12
15
  row-gap: var(--spacing-x-small);
13
16
  }
14
- .dnb-forms-field-array-selection--options-layout-horizontal .dnb-forms-field-array-selection__options {
17
+ .dnb-forms-field-array-selection--layout-horizontal .dnb-forms-field-array-selection__options {
15
18
  display: flex;
16
19
  flex-flow: row wrap;
17
20
  -moz-column-gap: var(--spacing-small);
18
21
  column-gap: var(--spacing-small);
22
+ row-gap: var(--spacing-x-small);
23
+ }
24
+ @media screen and (min-width: 40em) {
25
+ .dnb-forms-field-array-selection .dnb-forms-field-block--layout-horizontal .dnb-form-label {
26
+ line-height: 2.5rem;
27
+ margin-bottom: 0;
28
+ }
19
29
  }
20
30
 
21
31
  .dnb-forms-field-expiry .dnb-multi-input-mask {
@@ -25,6 +35,199 @@
25
35
  justify-content: center;
26
36
  }
27
37
 
38
+ /*
39
+ * Utilities
40
+ */
41
+ :root {
42
+ --forms-field-width--small: 5rem;
43
+ --forms-field-width--medium: 11rem;
44
+ --forms-field-width--large: 21rem;
45
+ }
46
+
47
+ .dnb-forms-field-number {
48
+ --number-control-button-border-color: black;
49
+ --number-control-button-border-color--hover: darkgrey;
50
+ --number-control-button-border-color--focus: darkgrey;
51
+ --number-control-button-border-width--focus: 0.125rem;
52
+ --number-control-button-background-color--hover: grey;
53
+ --number-control-button-color--hover: black;
54
+ --number-control-button-background-color--active: black;
55
+ --number-control-button-color--active: lightgrey;
56
+ --number-control-button--error: red;
57
+ --number-control-button--error-contrast: white;
58
+ --number-control-button-width--small: 2rem;
59
+ --number-control-button-width--medium: 2.5rem;
60
+ --number-control-button-width--large: 3rem;
61
+ --forms-field-block--number-control-buttons-width--small: calc(
62
+ var(--number-control-button-width--small) * 2
63
+ );
64
+ --forms-field-block--number-control-buttons-width--medium: calc(
65
+ var(--number-control-button-width--medium) * 2
66
+ );
67
+ --forms-field-block--number-control-buttons-width--large: calc(
68
+ var(--number-control-button-width--large) * 2
69
+ );
70
+ }
71
+ .dnb-forms-field-number__contents {
72
+ display: flex;
73
+ align-items: center;
74
+ }
75
+ .dnb-forms-field-number__contents--has-controls {
76
+ border-radius: 0.25rem;
77
+ --border-color: var(--number-control-button-border-color);
78
+ --border-width: 0.0625rem;
79
+ box-shadow: 0 0 0 var(--border-width) var(--border-color);
80
+ border-color: transparent;
81
+ }
82
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls:hover[disabled] {
83
+ cursor: not-allowed;
84
+ }
85
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls:hover:not([disabled]) {
86
+ --border-color: var(--number-control-button-border-color);
87
+ --border-width: 0.125rem;
88
+ box-shadow: 0 0 0 var(--border-width) var(--border-color);
89
+ border-color: transparent;
90
+ }
91
+ html[data-whatinput=keyboard] .dnb-forms-field-number__contents--has-controls:focus-within {
92
+ --border-color: var(--number-control-button-border-color--focus);
93
+ --border-width: var(--number-control-button-border-width--focus);
94
+ box-shadow: 0 0 0 var(--border-width) var(--border-color);
95
+ border-color: transparent;
96
+ }
97
+ .dnb-forms-field-number__contents--has-controls .dnb-input__shell {
98
+ border-radius: 0;
99
+ box-shadow: none;
100
+ }
101
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-input__shell:hover[disabled] {
102
+ cursor: not-allowed;
103
+ }
104
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-input__shell:hover:not([disabled]) {
105
+ box-shadow: none;
106
+ }
107
+ .dnb-forms-field-number__contents--has-controls .dnb-input:not([data-input-state=disabled]):not(:active)[data-input-state=focus] .dnb-input__shell {
108
+ outline: initial;
109
+ box-shadow: none;
110
+ }
111
+ html[data-whatinput=""] .dnb-forms-field-number__contents--has-controls .dnb-input:not([data-input-state=disabled]):not(:active)[data-input-state=focus] .dnb-input__shell {
112
+ box-shadow: none;
113
+ }
114
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:hover[disabled],
115
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:hover[disabled] {
116
+ cursor: not-allowed;
117
+ }
118
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:hover:not([disabled]),
119
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:hover:not([disabled]) {
120
+ background-color: var(--number-control-button-background-color--hover);
121
+ color: var(--number-control-button-color--hover);
122
+ }
123
+ .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active[disabled], html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active[disabled],
124
+ .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active[disabled],
125
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active[disabled] {
126
+ cursor: not-allowed;
127
+ }
128
+ .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active:not([disabled]), html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active:not([disabled]),
129
+ .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active:not([disabled]),
130
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active:not([disabled]) {
131
+ background-color: var(--number-control-button-background-color--active);
132
+ color: var(--number-control-button-color--active);
133
+ }
134
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error {
135
+ --border-color: var(--number-control-button--error);
136
+ --border-width: 0.125rem;
137
+ box-shadow: 0 0 0 var(--border-width) var(--border-color);
138
+ border-color: transparent;
139
+ }
140
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error:hover[disabled] {
141
+ cursor: not-allowed;
142
+ }
143
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error:hover:not([disabled]) {
144
+ --border-color: var(--number-control-button--error);
145
+ --border-width: 0.125rem;
146
+ box-shadow: 0 0 0 var(--border-width) var(--border-color);
147
+ border-color: transparent;
148
+ }
149
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-input__status--error:not([data-input-state=disabled]):not(:hover):not(:active) .dnb-input__shell {
150
+ box-shadow: none;
151
+ }
152
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before,
153
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after {
154
+ color: var(--number-control-button--error);
155
+ }
156
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:hover[disabled],
157
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:hover[disabled] {
158
+ cursor: not-allowed;
159
+ }
160
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:hover:not([disabled]),
161
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:hover:not([disabled]) {
162
+ background-color: var(--number-control-button--error-contrast);
163
+ color: var(--number-control-button--error);
164
+ }
165
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active[disabled], html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active[disabled],
166
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active[disabled],
167
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active[disabled] {
168
+ cursor: not-allowed;
169
+ }
170
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active:not([disabled]), html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active:not([disabled]),
171
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active:not([disabled]),
172
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active:not([disabled]) {
173
+ background-color: var(--number-control-button--error);
174
+ color: var(--number-control-button--error-contrast);
175
+ }
176
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before[disabled],
177
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after[disabled] {
178
+ color: var(--number-control-button--error-contrast);
179
+ }
180
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled {
181
+ --border-color: var(--color-black-55);
182
+ --border-width: 0.0625rem;
183
+ box-shadow: 0 0 0 var(--border-width) var(--border-color);
184
+ border-color: transparent;
185
+ }
186
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled:hover[disabled] {
187
+ cursor: not-allowed;
188
+ }
189
+ html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled:hover:not([disabled]) {
190
+ --border-color: var(--color-black-55);
191
+ --border-width: 0.0625rem;
192
+ box-shadow: 0 0 0 var(--border-width) var(--border-color);
193
+ border-color: transparent;
194
+ }
195
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-input[data-input-state=disabled] .dnb-input__shell {
196
+ box-shadow: none;
197
+ }
198
+ .dnb-input[data-input-state=disabled] .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled {
199
+ --border-color: var(--color-black-55);
200
+ --border-width: 0.0625rem;
201
+ box-shadow: 0 0 0 var(--border-width) var(--border-color);
202
+ border-color: transparent;
203
+ }
204
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-button--control-before[disabled],
205
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-button--control-after[disabled] {
206
+ background-color: var(--color-black-3);
207
+ color: var(--color-black-20);
208
+ }
209
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small {
210
+ width: calc(var(--forms-field-width--small) + var(--forms-field-block--number-control-buttons-width--small));
211
+ }
212
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small .dnb-button--control-before,
213
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small .dnb-button--control-after {
214
+ width: var(--number-control-button-width--small);
215
+ }
216
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium {
217
+ width: calc(var(--forms-field-width--medium) + var(--forms-field-block--number-control-buttons-width--medium));
218
+ }
219
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium .dnb-button--control-before,
220
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium .dnb-button--control-after {
221
+ width: var(--number-control-button-width--medium);
222
+ }
223
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large {
224
+ width: calc(var(--forms-field-width--large) + var(--forms-field-block--number-control-buttons-width--large));
225
+ }
226
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large .dnb-button--control-before,
227
+ .dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large .dnb-button--control-after {
228
+ width: var(--number-control-button-width--large);
229
+ }
230
+
28
231
  .dnb-forms-field-phone-number__country-code {
29
232
  width: calc(var(--forms-field-width--medium) - 2rem);
30
233
  }
@@ -90,6 +293,15 @@ fieldset.dnb-forms-field-block:not([class*=space__left]) {
90
293
  .dnb-forms-field-block__grid {
91
294
  display: grid;
92
295
  }
296
+ @media screen and (max-width: 40em) {
297
+ .dnb-forms-field-block__grid {
298
+ flex-wrap: wrap;
299
+ }
300
+ .dnb-forms-field-block__grid > .dnb-form-label {
301
+ margin-bottom: 0.5rem;
302
+ margin-top: 0.5rem;
303
+ }
304
+ }
93
305
  .dnb-forms-field-block--layout-vertical {
94
306
  grid-template-columns: auto;
95
307
  grid-template-areas: "label" "contents" "status";
@@ -119,15 +331,6 @@ fieldset.dnb-forms-field-block:not([class*=space__left]) {
119
331
  justify-content: space-between;
120
332
  align-items: center;
121
333
  }
122
- .dnb-forms-field-block__label-description {
123
- margin-left: 0.3em;
124
- color: var(--color-black-55);
125
- font-size: var(--font-size-small);
126
- }
127
- .dnb-forms-field-block__label-secondary {
128
- color: var(--color-black-55);
129
- font-size: var(--font-size-small);
130
- }
131
334
  .dnb-forms-field-block__status {
132
335
  grid-area: status;
133
336
  }
@@ -1 +1 @@
1
- .dnb-forms-field-array-selection--options-layout-vertical .dnb-forms-field-array-selection__options{display:flex;flex-flow:column;row-gap:var(--spacing-x-small)}.dnb-forms-field-array-selection--options-layout-horizontal .dnb-forms-field-array-selection__options{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row wrap}.dnb-forms-field-expiry .dnb-multi-input-mask{width:var(--forms-field-width--small)}.dnb-forms-field-expiry .dnb-multi-input-mask .dnb-input__shell{justify-content:center}.dnb-forms-field-phone-number__country-code,.dnb-forms-field-phone-number__country-code .dnb-autocomplete__shell{width:calc(var(--forms-field-width--medium) - 2rem)}.dnb-forms-field-phone-number__number{flex:1}.dnb-forms-field-phone-number .dnb-form-label{max-width:14ch}.dnb-forms-field-postal-code-and-city__fields{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}.dnb-forms-field-postal-code-and-city__postal-code{flex:0 5rem}.dnb-forms-field-postal-code-and-city__city{flex:1}.dnb-forms-field-selection__variant--dropdown .dnb-forms-field-block--layout-horizontal .dnb-form-label{align-self:center}.dnb-forms-field-selection__options-layout--horizontal .dnb-forms-field-block--layout-horizontal .dnb-form-label,.dnb-forms-field-selection__variant--dropdown .dnb-forms-field-block--layout-horizontal .dnb-form-label{margin-bottom:0}.dnb-forms-field-selection__variant--button .dnb-forms-field-block--layout-horizontal .dnb-form-label{line-height:2.5rem}:root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}fieldset.dnb-forms-field-block{border:none;padding:0}fieldset.dnb-forms-field-block:not([class*=space__top]){margin-top:0}fieldset.dnb-forms-field-block:not([class*=space__right]){margin-right:0}fieldset.dnb-forms-field-block:not([class*=space__bottom]){margin-bottom:0}fieldset.dnb-forms-field-block:not([class*=space__left]){margin-left:0}.dnb-forms-field-block__grid{display:grid}.dnb-forms-field-block--layout-vertical{grid-template-areas:"label" "contents" "status";grid-template-columns:auto}.dnb-forms-field-block--layout-horizontal{grid-template-areas:"label contents" "status status";grid-template-columns:fit-content(100%) auto}.dnb-forms-field-block--width-stretch{flex-grow:1}@media screen and (min-width:30em){.dnb-forms-field-block--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__label{align-items:center;display:flex;flex-flow:row;grid-area:label;justify-content:space-between}.dnb-forms-field-block__label-description{margin-left:.3em}.dnb-forms-field-block__label-description,.dnb-forms-field-block__label-secondary{color:var(--color-black-55);font-size:var(--font-size-small)}.dnb-forms-field-block__status{grid-area:status}.dnb-forms-field-block__contents{grid-area:contents}.dnb-forms-field-block__contents--width-stretch{width:100%}@media screen and (min-width:30em){.dnb-forms-field-block__contents--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block__contents--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block__contents--width-large{width:var(--forms-field-width--large)}}.dnb-forms-button-row{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}@media screen and (min-width:40em){.dnb-card+.dnb-forms-button-row:not([class*=space__left]){margin-left:var(--spacing-medium)}}.dnb-spacing .dnb-form-main-heading.dnb-h--large:not([class*=space__]){margin:0}@media screen and (min-width:40em){.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__left]){margin-left:var(--spacing-medium)}}.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-spacing .dnb-form-sub-heading.dnb-h--medium:not([class*=space__]){margin:0}.dnb-form-sub-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-forms-steps-layout{-moz-column-gap:var(--spacing-medium);column-gap:var(--spacing-medium);display:flex;flex-flow:row wrap}.dnb-forms-steps-layout__sidebar{flex:0}.dnb-forms-steps-layout__contents{flex:1 0 25rem}.dnb-forms-steps-layout__contents .dnb-card{--border-color:var(--color-pistachio)}@media screen and (max-width:60em){.dnb-forms-steps-layout{align-items:stretch;flex-direction:column;justify-content:stretch}.dnb-forms-steps-layout__contents{flex-basis:auto}}.dnb-forms-steps-layout .dnb-step-indicator__sidebar{margin-right:0}.dnb-forms-value-block{display:block;font-size:var(--font-size-basis)}.dnb-forms-value-block--inline{display:inline-block;font-size:inherit;margin-left:var(--spacing-xx-small);margin-right:var(--spacing-xx-small)}.dnb-forms-value-block__label{font-weight:var(--font-weight-medium)}.dnb-forms-value-block__placeholder{color:rgba(0,0,0,.5)}.dnb-forms-test-element{border:1px dashed grey;border-radius:.5rem;color:#909090;padding:.5rem 1rem}
1
+ .dnb-forms-field-array-selection--layout-vertical .dnb-forms-field-array-selection__options{display:flex;flex-flow:column;row-gap:var(--spacing-x-small)}.dnb-forms-field-array-selection--layout-horizontal .dnb-forms-field-array-selection__options{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row wrap;row-gap:var(--spacing-x-small)}@media screen and (min-width:40em){.dnb-forms-field-array-selection .dnb-forms-field-block--layout-horizontal .dnb-form-label{line-height:2.5rem;margin-bottom:0}}.dnb-forms-field-expiry .dnb-multi-input-mask{width:var(--forms-field-width--small)}.dnb-forms-field-expiry .dnb-multi-input-mask .dnb-input__shell{justify-content:center}.dnb-forms-field-number{--number-control-button-border-color:#000;--number-control-button-border-color--hover:#a9a9a9;--number-control-button-border-color--focus:#a9a9a9;--number-control-button-border-width--focus:0.125rem;--number-control-button-background-color--hover:grey;--number-control-button-color--hover:#000;--number-control-button-background-color--active:#000;--number-control-button-color--active:#d3d3d3;--number-control-button--error:red;--number-control-button--error-contrast:#fff;--number-control-button-width--small:2rem;--number-control-button-width--medium:2.5rem;--number-control-button-width--large:3rem;--forms-field-block--number-control-buttons-width--small:calc(var(--number-control-button-width--small)*2);--forms-field-block--number-control-buttons-width--medium:calc(var(--number-control-button-width--medium)*2);--forms-field-block--number-control-buttons-width--large:calc(var(--number-control-button-width--large)*2)}.dnb-forms-field-number__contents{align-items:center;display:flex}.dnb-forms-field-number__contents--has-controls{--border-color:var(--number-control-button-border-color);--border-width:0.0625rem;border-color:transparent;border-radius:.25rem;box-shadow:0 0 0 var(--border-width) var(--border-color)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls:hover:not([disabled]){--border-color:var(--number-control-button-border-color);--border-width:0.125rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html[data-whatinput=keyboard] .dnb-forms-field-number__contents--has-controls:focus-within{--border-color:var(--number-control-button-border-color--focus);--border-width:var(--number-control-button-border-width--focus);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls .dnb-input__shell{border-radius:0;box-shadow:none}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-input__shell:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-input__shell:hover:not([disabled]){box-shadow:none}.dnb-forms-field-number__contents--has-controls .dnb-input:not([data-input-state=disabled]):not(:active)[data-input-state=focus] .dnb-input__shell{box-shadow:none;outline:initial}html[data-whatinput=""] .dnb-forms-field-number__contents--has-controls .dnb-input:not([data-input-state=disabled]):not(:active)[data-input-state=focus] .dnb-input__shell{box-shadow:none}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:hover[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:hover:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:hover:not([disabled]){background-color:var(--number-control-button-background-color--hover);color:var(--number-control-button-color--hover)}.dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active[disabled],.dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active[disabled]{cursor:not-allowed}.dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active:not([disabled]),.dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-after:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls .dnb-button--control-before:active:not([disabled]){background-color:var(--number-control-button-background-color--active);color:var(--number-control-button-color--active)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error{--border-color:var(--number-control-button--error);--border-width:0.125rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error:hover:not([disabled]){--border-color:var(--number-control-button--error);--border-width:0.125rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-input__status--error:not([data-input-state=disabled]):not(:hover):not(:active) .dnb-input__shell{box-shadow:none}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before{color:var(--number-control-button--error)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:hover[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:hover:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:hover:not([disabled]){background-color:var(--number-control-button--error-contrast);color:var(--number-control-button--error)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active[disabled],.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active[disabled],html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active[disabled]{cursor:not-allowed}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active:not([disabled]),.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after:active:not([disabled]),html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before:active:not([disabled]){background-color:var(--number-control-button--error);color:var(--number-control-button--error-contrast)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-after[disabled],.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--has-error .dnb-button--control-before[disabled]{color:var(--number-control-button--error-contrast)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled{--border-color:var(--color-black-55);--border-width:0.0625rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled:hover[disabled]{cursor:not-allowed}html:not([data-whatintent=touch]) .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled:hover:not([disabled]){--border-color:var(--color-black-55);--border-width:0.0625rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-input[data-input-state=disabled] .dnb-input__shell{box-shadow:none}.dnb-input[data-input-state=disabled] .dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled{--border-color:var(--color-black-55);--border-width:0.0625rem;border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-button--control-after[disabled],.dnb-forms-field-number__contents--has-controls.dnb-forms-field-number__contents--is-disabled .dnb-button--control-before[disabled]{background-color:var(--color-black-3);color:var(--color-black-20)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small{width:calc(var(--forms-field-width--small) + var(--forms-field-block--number-control-buttons-width--small))}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-small .dnb-button--control-before{width:var(--number-control-button-width--small)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium{width:calc(var(--forms-field-width--medium) + var(--forms-field-block--number-control-buttons-width--medium))}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-medium .dnb-button--control-before{width:var(--number-control-button-width--medium)}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large{width:calc(var(--forms-field-width--large) + var(--forms-field-block--number-control-buttons-width--large))}.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large .dnb-button--control-after,.dnb-forms-field-number__contents--has-controls.dnb-forms-field-block__contents--width-large .dnb-button--control-before{width:var(--number-control-button-width--large)}.dnb-forms-field-phone-number__country-code,.dnb-forms-field-phone-number__country-code .dnb-autocomplete__shell{width:calc(var(--forms-field-width--medium) - 2rem)}.dnb-forms-field-phone-number__number{flex:1}.dnb-forms-field-phone-number .dnb-form-label{max-width:14ch}.dnb-forms-field-postal-code-and-city__fields{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}.dnb-forms-field-postal-code-and-city__postal-code{flex:0 5rem}.dnb-forms-field-postal-code-and-city__city{flex:1}.dnb-forms-field-selection__variant--dropdown .dnb-forms-field-block--layout-horizontal .dnb-form-label{align-self:center}.dnb-forms-field-selection__options-layout--horizontal .dnb-forms-field-block--layout-horizontal .dnb-form-label,.dnb-forms-field-selection__variant--dropdown .dnb-forms-field-block--layout-horizontal .dnb-form-label{margin-bottom:0}.dnb-forms-field-selection__variant--button .dnb-forms-field-block--layout-horizontal .dnb-form-label{line-height:2.5rem}:root{--forms-field-width--small:5rem;--forms-field-width--medium:11rem;--forms-field-width--large:21rem}fieldset.dnb-forms-field-block{border:none;padding:0}fieldset.dnb-forms-field-block:not([class*=space__top]){margin-top:0}fieldset.dnb-forms-field-block:not([class*=space__right]){margin-right:0}fieldset.dnb-forms-field-block:not([class*=space__bottom]){margin-bottom:0}fieldset.dnb-forms-field-block:not([class*=space__left]){margin-left:0}.dnb-forms-field-block__grid{display:grid}@media screen and (max-width:40em){.dnb-forms-field-block__grid{flex-wrap:wrap}.dnb-forms-field-block__grid>.dnb-form-label{margin-bottom:.5rem;margin-top:.5rem}}.dnb-forms-field-block--layout-vertical{grid-template-areas:"label" "contents" "status";grid-template-columns:auto}.dnb-forms-field-block--layout-horizontal{grid-template-areas:"label contents" "status status";grid-template-columns:fit-content(100%) auto}.dnb-forms-field-block--width-stretch{flex-grow:1}@media screen and (min-width:30em){.dnb-forms-field-block--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block--width-large{width:var(--forms-field-width--large)}}.dnb-forms-field-block__label{align-items:center;display:flex;flex-flow:row;grid-area:label;justify-content:space-between}.dnb-forms-field-block__status{grid-area:status}.dnb-forms-field-block__contents{grid-area:contents}.dnb-forms-field-block__contents--width-stretch{width:100%}@media screen and (min-width:30em){.dnb-forms-field-block__contents--width-small{width:var(--forms-field-width--small)}.dnb-forms-field-block__contents--width-medium{width:var(--forms-field-width--medium)}.dnb-forms-field-block__contents--width-large{width:var(--forms-field-width--large)}}.dnb-forms-button-row{-moz-column-gap:var(--spacing-small);column-gap:var(--spacing-small);display:flex;flex-flow:row}@media screen and (min-width:40em){.dnb-card+.dnb-forms-button-row:not([class*=space__left]){margin-left:var(--spacing-medium)}}.dnb-spacing .dnb-form-main-heading.dnb-h--large:not([class*=space__]){margin:0}@media screen and (min-width:40em){.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__left]){margin-left:var(--spacing-medium)}}.dnb-form-main-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-spacing .dnb-form-sub-heading.dnb-h--medium:not([class*=space__]){margin:0}.dnb-form-sub-heading:has(+.dnb-flex-stack>.dnb-card,+.dnb-card):not([class*=space__bottom]){margin-bottom:var(--spacing-small)}.dnb-forms-steps-layout{-moz-column-gap:var(--spacing-medium);column-gap:var(--spacing-medium);display:flex;flex-flow:row wrap}.dnb-forms-steps-layout__sidebar{flex:0}.dnb-forms-steps-layout__contents{flex:1 0 25rem}.dnb-forms-steps-layout__contents .dnb-card{--border-color:var(--color-pistachio)}@media screen and (max-width:60em){.dnb-forms-steps-layout{align-items:stretch;flex-direction:column;justify-content:stretch}.dnb-forms-steps-layout__contents{flex-basis:auto}}.dnb-forms-steps-layout .dnb-step-indicator__sidebar{margin-right:0}.dnb-forms-value-block{display:block;font-size:var(--font-size-basis)}.dnb-forms-value-block--inline{display:inline-block;font-size:inherit;margin-left:var(--spacing-xx-small);margin-right:var(--spacing-xx-small)}.dnb-forms-value-block__label{font-weight:var(--font-weight-medium)}.dnb-forms-value-block__placeholder{color:rgba(0,0,0,.5)}.dnb-forms-test-element{border:1px dashed grey;border-radius:.5rem;color:#909090;padding:.5rem 1rem}
@@ -1,6 +1,7 @@
1
1
  /// <reference types="react" />
2
- import { JSONSchema7 } from 'json-schema';
3
- import { SpacingProps } from '../../components/space/types';
2
+ import type { SpacingProps } from '../../components/space/types';
3
+ import type { JSONSchema7 as JSONSchema } from 'json-schema';
4
+ export type { JSONSchema };
4
5
  type ValidationRule = string | string[];
5
6
  type MessageValues = Record<string, string>;
6
7
  interface IFormErrorOptions {
@@ -34,7 +35,7 @@ export interface DataValueReadProps<Value = unknown> {
34
35
  }
35
36
  export declare function pickDataValueReadProps<Props extends DataValueReadProps>(props: Props): DataValueReadProps;
36
37
  export declare function omitDataValueReadProps<Props extends DataValueReadProps>(props: Props): Omit<DataValueReadProps, keyof DataValueReadProps>;
37
- export interface DataValueWriteProps<Value = unknown, EmptyValue = undefined | string | number> {
38
+ export interface DataValueWriteProps<Value = unknown, EmptyValue = undefined | string> {
38
39
  emptyValue?: EmptyValue;
39
40
  onFocus?: (value: Value | EmptyValue) => void;
40
41
  onBlur?: (value: Value | EmptyValue) => void;
@@ -42,7 +43,7 @@ export interface DataValueWriteProps<Value = unknown, EmptyValue = undefined | s
42
43
  }
43
44
  export declare function pickDataValueWriteProps<Props extends DataValueWriteProps>(props: Props): DataValueWriteProps;
44
45
  export declare function omitDataValueWriteProps<Props extends DataValueWriteProps>(props: Props): Omit<DataValueWriteProps, keyof DataValueWriteProps>;
45
- export type DataValueReadWriteProps<Value = unknown, EmptyValue = undefined | string | number> = DataValueReadProps<Value> & DataValueWriteProps<Value, EmptyValue>;
46
+ export type DataValueReadWriteProps<Value = unknown, EmptyValue = undefined | string> = DataValueReadProps<Value> & DataValueWriteProps<Value, EmptyValue>;
46
47
  export declare function pickDataValueReadWriteProps<Props extends DataValueReadWriteProps>(props: Props): DataValueReadWriteProps;
47
48
  export declare function omitDataValueReadWriteProps<Props extends DataValueReadWriteProps>(props: Props): Omit<DataValueReadWriteProps, keyof DataValueReadWriteProps>;
48
49
  export type ComponentProps = SpacingProps & {
@@ -50,8 +51,8 @@ export type ComponentProps = SpacingProps & {
50
51
  };
51
52
  export type AdditionalEventArgs = Record<string, unknown>;
52
53
  export type DataValueReadComponentProps<Value = unknown> = ComponentProps & DataValueReadProps<Value>;
53
- export type DataValueReadWriteComponentProps<Value = unknown, EmptyValue = undefined | string | number> = ComponentProps & DataValueReadProps<Value> & DataValueWriteProps<Value, EmptyValue>;
54
- export interface FieldProps<Value = unknown, EmptyValue = undefined | string | number, ErrorMessages extends {
54
+ export type DataValueReadWriteComponentProps<Value = unknown, EmptyValue = undefined | string> = ComponentProps & DataValueReadProps<Value> & DataValueWriteProps<Value, EmptyValue>;
55
+ export interface FieldProps<Value = unknown, EmptyValue = undefined | string, ErrorMessages extends {
55
56
  required?: string;
56
57
  } = DefaultErrorMessages> extends DataValueReadWriteComponentProps<Value, EmptyValue> {
57
58
  /** ID added to the actual field component, and linked to the label via for-attribute */
@@ -60,10 +61,6 @@ export interface FieldProps<Value = unknown, EmptyValue = undefined | string | n
60
61
  layout?: 'horizontal' | 'vertical';
61
62
  /** Main label text */
62
63
  label?: React.ReactNode;
63
- /** A more discreet text displayed beside the label (i.e for "(optional)") */
64
- labelDescription?: React.ReactNode;
65
- /** Secondary information displayed at the end of the label line (i.e character counter) */
66
- labelSecondary?: React.ReactNode;
67
64
  /** Text showing in place of the value if no value is given */
68
65
  placeholder?: string;
69
66
  autoComplete?: HTMLInputElement['autocomplete'] | HTMLTextAreaElement['autocomplete'];
@@ -75,7 +72,7 @@ export interface FieldProps<Value = unknown, EmptyValue = undefined | string | n
75
72
  capitalize?: boolean;
76
73
  trim?: boolean;
77
74
  required?: boolean;
78
- schema?: JSONSchema7;
75
+ schema?: JSONSchema;
79
76
  validator?: (value: Value | EmptyValue, errorMessages?: ErrorMessages) => Error | undefined | Promise<Error | undefined>;
80
77
  onBlurValidator?: (value: Value | EmptyValue) => Error | undefined | Promise<Error | undefined>;
81
78
  /**
@@ -92,14 +89,16 @@ export interface FieldProps<Value = unknown, EmptyValue = undefined | string | n
92
89
  /** Should validation be done while writing, not just when blurring the field? */
93
90
  continuousValidation?: boolean;
94
91
  errorMessages?: ErrorMessages;
95
- toInput?: (external: Value | undefined) => any;
96
- fromInput?: (...args: any[]) => Value | undefined;
97
- toEvent?: (internal: Value | undefined) => any;
98
- fromExternal?: (...args: any[]) => Value | undefined;
99
- validateRequired?: (internal: Value | undefined, { emptyValue, required, isChanged, }: {
100
- emptyValue: undefined | string | number;
92
+ toInput?: (external: Value | unknown) => Value | unknown;
93
+ fromInput?: (external: Value | unknown) => Value;
94
+ toEvent?: (internal: Value, type: 'onChange' | 'onFocus' | 'onBlur' | 'onBlurValidator') => Value;
95
+ fromExternal?: (external: Value) => Value;
96
+ transformValue?: (value: Value, currentValue?: Value) => Value;
97
+ validateRequired?: (internal: Value, { emptyValue, required, isChanged, error, }: {
98
+ emptyValue: EmptyValue;
101
99
  required: boolean;
102
100
  isChanged: boolean;
101
+ error: FormError | undefined;
103
102
  }) => FormError | undefined;
104
103
  }
105
104
  export interface FieldHelpProps {
@@ -121,4 +120,3 @@ export interface ValueProps<Value> extends DataValueReadComponentProps<Value> {
121
120
  /** Prepare value for display (regardless of source like props or data context) */
122
121
  prepare?: (external: Value | undefined) => string;
123
122
  }
124
- export {};
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["FormError","Error","constructor","message","options","_defineProperty","validationRule","messageValues","dataValueReadProps","pickDataValueReadProps","props","Object","fromEntries","entries","filter","_ref","key","includes","omitDataValueReadProps","_ref2","dataValueWriteProps","pickDataValueWriteProps","_ref3","omitDataValueWriteProps","_ref4","pickDataValueReadWriteProps","_ref5","omitDataValueReadWriteProps","_ref6"],"sources":["../../../../src/extensions/forms/types.ts"],"sourcesContent":["import { JSONSchema7 } from 'json-schema'\nimport { SpacingProps } from '../../components/space/types'\n\ntype ValidationRule = string | string[]\ntype MessageValues = Record<string, string>\n\ninterface IFormErrorOptions {\n validationRule?: ValidationRule\n messageValues?: MessageValues\n}\n\n/**\n * Standard error object for Eufemia Forms, extending the built-in error with additional information for data handling\n */\nexport class FormError extends Error {\n /**\n * What validation rule did the error occur based on? (i.e: minLength, required or maximum)\n */\n validationRule?: ValidationRule\n\n /**\n * Replacement values relevant for this error.\n * @example { minLength: 3 } to be able to replace values in a message like \"Minimum {minLength} characters\"\n */\n messageValues?: MessageValues\n\n constructor(message: string, options?: IFormErrorOptions) {\n super(message)\n\n if (options) {\n this.validationRule = options.validationRule\n this.messageValues = options.messageValues\n }\n }\n}\n\n// Data value\n\ninterface DefaultErrorMessages {\n required?: string\n}\n\nexport interface DataValueReadProps<Value = unknown> {\n /** JSON Pointer for where the data for this field is located in the source dataset */\n path?: string\n /** JSON Pointer for where the data for this field is located in the source iterate loop element */\n itemPath?: string\n value?: Value\n}\n\nconst dataValueReadProps = ['path', 'itemPath', 'value']\n\nexport function pickDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): DataValueReadProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueReadProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): Omit<DataValueReadProps, keyof DataValueReadProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueReadProps.includes(key)\n )\n )\n}\n\nexport interface DataValueWriteProps<\n Value = unknown,\n EmptyValue = undefined | string | number,\n> {\n emptyValue?: EmptyValue\n onFocus?: (value: Value | EmptyValue) => void\n onBlur?: (value: Value | EmptyValue) => void\n onChange?: (\n value: Value | EmptyValue,\n additionalArgs?: AdditionalEventArgs\n ) => void\n}\n\nconst dataValueWriteProps = ['emptyValue', 'onFocus', 'onBlur', 'onChange']\n\nexport function pickDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): DataValueWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): Omit<DataValueWriteProps, keyof DataValueWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type DataValueReadWriteProps<\n Value = unknown,\n EmptyValue = undefined | string | number,\n> = DataValueReadProps<Value> & DataValueWriteProps<Value, EmptyValue>\n\nexport function pickDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(props: Props): DataValueReadWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n dataValueReadProps.includes(key) ||\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(\n props: Props\n): Omit<DataValueReadWriteProps, keyof DataValueReadWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n !dataValueReadProps.includes(key) &&\n !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type ComponentProps = SpacingProps & {\n className?: string\n}\n\nexport type AdditionalEventArgs = Record<string, unknown>\n\nexport type DataValueReadComponentProps<Value = unknown> = ComponentProps &\n DataValueReadProps<Value>\n\nexport type DataValueReadWriteComponentProps<\n Value = unknown,\n EmptyValue = undefined | string | number,\n> = ComponentProps &\n DataValueReadProps<Value> &\n DataValueWriteProps<Value, EmptyValue>\n\nexport interface FieldProps<\n Value = unknown,\n EmptyValue = undefined | string | number,\n ErrorMessages extends { required?: string } = DefaultErrorMessages,\n> extends DataValueReadWriteComponentProps<Value, EmptyValue> {\n /** ID added to the actual field component, and linked to the label via for-attribute */\n id?: string\n name?: string\n layout?: 'horizontal' | 'vertical'\n /** Main label text */\n label?: React.ReactNode\n /** A more discreet text displayed beside the label (i.e for \"(optional)\") */\n labelDescription?: React.ReactNode\n /** Secondary information displayed at the end of the label line (i.e character counter) */\n labelSecondary?: React.ReactNode\n /** Text showing in place of the value if no value is given */\n placeholder?: string\n autoComplete?:\n | HTMLInputElement['autocomplete']\n | HTMLTextAreaElement['autocomplete']\n info?: Error | FormError | string\n warning?: Error | FormError | string\n error?: Error | FormError\n hasError?: boolean\n disabled?: boolean\n capitalize?: boolean\n trim?: boolean\n // Validation\n required?: boolean\n schema?: JSONSchema7\n validator?: (\n value: Value | EmptyValue,\n errorMessages?: ErrorMessages\n ) => Error | undefined | Promise<Error | undefined>\n onBlurValidator?: (\n value: Value | EmptyValue\n ) => Error | undefined | Promise<Error | undefined>\n /**\n * Should error messages based on validation be shown initially (from given value-prop or source data)\n * before the user interacts with the field?\n * @default false\n * */\n validateInitially?: boolean\n /**\n * Should error messages be shown when touching (like focusing a field and blurring) without having changed\n * the value? So the user did not introduce a new error, but it was invalid based on validation initially.\n */\n validateUnchanged?: boolean\n /** Should validation be done while writing, not just when blurring the field? */\n continuousValidation?: boolean\n errorMessages?: ErrorMessages\n // Derivatives\n toInput?: (external: Value | undefined) => any\n fromInput?: (...args: any[]) => Value | undefined\n toEvent?: (internal: Value | undefined) => any\n fromExternal?: (...args: any[]) => Value | undefined\n validateRequired?: (\n internal: Value | undefined,\n {\n emptyValue,\n required,\n isChanged,\n }: {\n emptyValue: undefined | string | number\n required: boolean\n isChanged: boolean\n }\n ) => FormError | undefined\n}\n\nexport interface FieldHelpProps {\n help?: {\n title?: string\n contents?: string\n }\n}\n\nexport interface ValueProps<Value>\n extends DataValueReadComponentProps<Value> {\n label?: string\n /** Field label to show above the data value. */\n showEmpty?: boolean\n /** Text showing in place of the value if no value is given. */\n placeholder?: string\n /** JSON Pointer for where the data for this field is located in the source iterate loop element */\n itemPath?: string\n /** For showing the value inline (not as a block element) */\n inline?: boolean\n // Derivatives\n /** Prepare value for display (regardless of source like props or data context) */\n prepare?: (external: Value | undefined) => string\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"types.js","names":["FormError","Error","constructor","message","options","_defineProperty","validationRule","messageValues","dataValueReadProps","pickDataValueReadProps","props","Object","fromEntries","entries","filter","_ref","key","includes","omitDataValueReadProps","_ref2","dataValueWriteProps","pickDataValueWriteProps","_ref3","omitDataValueWriteProps","_ref4","pickDataValueReadWriteProps","_ref5","omitDataValueReadWriteProps","_ref6"],"sources":["../../../../src/extensions/forms/types.ts"],"sourcesContent":["import type { SpacingProps } from '../../components/space/types'\nimport type { JSONSchema7 as JSONSchema } from 'json-schema'\n\nexport type { JSONSchema }\n\ntype ValidationRule = string | string[]\ntype MessageValues = Record<string, string>\n\ninterface IFormErrorOptions {\n validationRule?: ValidationRule\n messageValues?: MessageValues\n}\n\n/**\n * Standard error object for Eufemia Forms, extending the built-in error with additional information for data handling\n */\nexport class FormError extends Error {\n /**\n * What validation rule did the error occur based on? (i.e: minLength, required or maximum)\n */\n validationRule?: ValidationRule\n\n /**\n * Replacement values relevant for this error.\n * @example { minLength: 3 } to be able to replace values in a message like \"Minimum {minLength} characters\"\n */\n messageValues?: MessageValues\n\n constructor(message: string, options?: IFormErrorOptions) {\n super(message)\n\n if (options) {\n this.validationRule = options.validationRule\n this.messageValues = options.messageValues\n }\n }\n}\n\n// Data value\n\ninterface DefaultErrorMessages {\n required?: string\n}\n\nexport interface DataValueReadProps<Value = unknown> {\n /** JSON Pointer for where the data for this field is located in the source dataset */\n path?: string\n /** JSON Pointer for where the data for this field is located in the source iterate loop element */\n itemPath?: string\n value?: Value\n}\n\nconst dataValueReadProps = ['path', 'itemPath', 'value']\n\nexport function pickDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): DataValueReadProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueReadProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadProps<Props extends DataValueReadProps>(\n props: Props\n): Omit<DataValueReadProps, keyof DataValueReadProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueReadProps.includes(key)\n )\n )\n}\n\nexport interface DataValueWriteProps<\n Value = unknown,\n EmptyValue = undefined | string,\n> {\n emptyValue?: EmptyValue\n onFocus?: (value: Value | EmptyValue) => void\n onBlur?: (value: Value | EmptyValue) => void\n onChange?: (\n value: Value | EmptyValue,\n additionalArgs?: AdditionalEventArgs\n ) => void\n}\n\nconst dataValueWriteProps = ['emptyValue', 'onFocus', 'onBlur', 'onChange']\n\nexport function pickDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): DataValueWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(([key]) =>\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueWriteProps<Props extends DataValueWriteProps>(\n props: Props\n): Omit<DataValueWriteProps, keyof DataValueWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) => !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type DataValueReadWriteProps<\n Value = unknown,\n EmptyValue = undefined | string,\n> = DataValueReadProps<Value> & DataValueWriteProps<Value, EmptyValue>\n\nexport function pickDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(props: Props): DataValueReadWriteProps {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n dataValueReadProps.includes(key) ||\n dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport function omitDataValueReadWriteProps<\n Props extends DataValueReadWriteProps,\n>(\n props: Props\n): Omit<DataValueReadWriteProps, keyof DataValueReadWriteProps> {\n return Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n !dataValueReadProps.includes(key) &&\n !dataValueWriteProps.includes(key)\n )\n )\n}\n\nexport type ComponentProps = SpacingProps & {\n className?: string\n}\n\nexport type AdditionalEventArgs = Record<string, unknown>\n\nexport type DataValueReadComponentProps<Value = unknown> = ComponentProps &\n DataValueReadProps<Value>\n\nexport type DataValueReadWriteComponentProps<\n Value = unknown,\n EmptyValue = undefined | string,\n> = ComponentProps &\n DataValueReadProps<Value> &\n DataValueWriteProps<Value, EmptyValue>\n\nexport interface FieldProps<\n Value = unknown,\n EmptyValue = undefined | string,\n ErrorMessages extends { required?: string } = DefaultErrorMessages,\n> extends DataValueReadWriteComponentProps<Value, EmptyValue> {\n /** ID added to the actual field component, and linked to the label via for-attribute */\n id?: string\n name?: string\n layout?: 'horizontal' | 'vertical'\n /** Main label text */\n label?: React.ReactNode\n /** Text showing in place of the value if no value is given */\n placeholder?: string\n autoComplete?:\n | HTMLInputElement['autocomplete']\n | HTMLTextAreaElement['autocomplete']\n info?: Error | FormError | string\n warning?: Error | FormError | string\n error?: Error | FormError\n hasError?: boolean\n disabled?: boolean\n capitalize?: boolean\n trim?: boolean\n // Validation\n required?: boolean\n schema?: JSONSchema\n validator?: (\n value: Value | EmptyValue,\n errorMessages?: ErrorMessages\n ) => Error | undefined | Promise<Error | undefined>\n onBlurValidator?: (\n value: Value | EmptyValue\n ) => Error | undefined | Promise<Error | undefined>\n /**\n * Should error messages based on validation be shown initially (from given value-prop or source data)\n * before the user interacts with the field?\n * @default false\n * */\n validateInitially?: boolean\n /**\n * Should error messages be shown when touching (like focusing a field and blurring) without having changed\n * the value? So the user did not introduce a new error, but it was invalid based on validation initially.\n */\n validateUnchanged?: boolean\n /** Should validation be done while writing, not just when blurring the field? */\n continuousValidation?: boolean\n errorMessages?: ErrorMessages\n // Derivatives\n toInput?: (external: Value | unknown) => Value | unknown\n fromInput?: (external: Value | unknown) => Value\n toEvent?: (\n internal: Value,\n type: 'onChange' | 'onFocus' | 'onBlur' | 'onBlurValidator'\n ) => Value\n fromExternal?: (external: Value) => Value\n transformValue?: (value: Value, currentValue?: Value) => Value\n validateRequired?: (\n internal: Value,\n {\n emptyValue,\n required,\n isChanged,\n error,\n }: {\n emptyValue: EmptyValue\n required: boolean\n isChanged: boolean\n error: FormError | undefined\n }\n ) => FormError | undefined\n}\n\nexport interface FieldHelpProps {\n help?: {\n title?: string\n contents?: string\n }\n}\n\nexport interface ValueProps<Value>\n extends DataValueReadComponentProps<Value> {\n label?: string\n /** Field label to show above the data value. */\n showEmpty?: boolean\n /** Text showing in place of the value if no value is given. */\n placeholder?: string\n /** JSON Pointer for where the data for this field is located in the source iterate loop element */\n itemPath?: string\n /** For showing the value inline (not as a block element) */\n inline?: boolean\n // Derivatives\n /** Prepare value for display (regardless of source like props or data context) */\n prepare?: (external: Value | undefined) => string\n}\n"],"mappings":"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"}
@@ -1,4 +1,8 @@
1
- export default function TestElement({ className, ...props }: {
1
+ declare function TestElement({ className, ...props }: {
2
2
  [x: string]: any;
3
3
  className?: any;
4
4
  }): import("react/jsx-runtime").JSX.Element;
5
+ declare namespace TestElement {
6
+ var _supportsSpacingProps: boolean;
7
+ }
8
+ export default TestElement;
@@ -13,4 +13,5 @@ export default function TestElement(_ref) {
13
13
  className: classnames('dnb-forms-test-element', className)
14
14
  }, props));
15
15
  }
16
+ TestElement._supportsSpacingProps = true;
16
17
  //# sourceMappingURL=TestElement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TestElement.js","names":["React","classnames","Space","TestElement","_ref","className","props","_objectWithoutProperties","_excluded","createElement","_extends"],"sources":["../../../../../../src/extensions/forms/utils/TestElement/TestElement.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport { Space } from '../../../../components'\n\nexport default function TestElement({ className = null, ...props }) {\n return (\n <Space\n className={classnames('dnb-forms-test-element', className)}\n {...props}\n />\n )\n}\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,KAAK,QAAQ,wBAAwB;AAE9C,eAAe,SAASC,WAAWA,CAAAC,IAAA,EAAiC;EAAA,IAAhC;MAAEC,SAAS,GAAG;IAAe,CAAC,GAAAD,IAAA;IAAPE,KAAK,GAAAC,wBAAA,CAAAH,IAAA,EAAAI,SAAA;EAC9D,OACER,KAAA,CAAAS,aAAA,CAACP,KAAK,EAAAQ,QAAA;IACJL,SAAS,EAAEJ,UAAU,CAAC,wBAAwB,EAAEI,SAAS;EAAE,GACvDC,KAAK,CACV,CAAC;AAEN"}
1
+ {"version":3,"file":"TestElement.js","names":["React","classnames","Space","TestElement","_ref","className","props","_objectWithoutProperties","_excluded","createElement","_extends","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/utils/TestElement/TestElement.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport { Space } from '../../../../components'\n\nexport default function TestElement({ className = null, ...props }) {\n return (\n <Space\n className={classnames('dnb-forms-test-element', className)}\n {...props}\n />\n )\n}\n\nTestElement._supportsSpacingProps = true\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,KAAK,QAAQ,wBAAwB;AAE9C,eAAe,SAASC,WAAWA,CAAAC,IAAA,EAAiC;EAAA,IAAhC;MAAEC,SAAS,GAAG;IAAe,CAAC,GAAAD,IAAA;IAAPE,KAAK,GAAAC,wBAAA,CAAAH,IAAA,EAAAI,SAAA;EAC9D,OACER,KAAA,CAAAS,aAAA,CAACP,KAAK,EAAAQ,QAAA;IACJL,SAAS,EAAEJ,UAAU,CAAC,wBAAwB,EAAEI,SAAS;EAAE,GACvDC,KAAK,CACV,CAAC;AAEN;AAEAH,WAAW,CAACQ,qBAAqB,GAAG,IAAI"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dnb/eufemia",
3
- "version": "10.16.0",
3
+ "version": "10.18.0",
4
4
  "description": "DNB Eufemia Design System UI Library",
5
5
  "license": "SEE LICENSE IN LICENSE FILE",
6
6
  "author": "DNB Team & Tobias Høegh",
@@ -1,2 +1,2 @@
1
1
  export function init(): void;
2
- export const version: "10.16.0";
2
+ export const version: "10.18.0";
package/shared/Eufemia.js CHANGED
@@ -1,9 +1,9 @@
1
- export const version = '10.16.0';
1
+ export const version = '10.18.0';
2
2
  export function init() {
3
3
  if (typeof window !== 'undefined') {
4
4
  class Eufemia {
5
5
  get version() {
6
- return '10.16.0';
6
+ return '10.18.0';
7
7
  }
8
8
  }
9
9
  window.Eufemia = new Eufemia();
@@ -1 +1 @@
1
- {"version":3,"file":"Eufemia.js","names":["version","init","window","Eufemia"],"sources":["../../../src/shared/Eufemia.js"],"sourcesContent":["export const version = '10.16.0'\n\nexport function init() {\n if (typeof window !== 'undefined') {\n class Eufemia {\n get version() {\n return '10.16.0'\n }\n }\n\n window.Eufemia = new Eufemia()\n }\n}\n"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAG,SAAS;AAEhC,OAAO,SAASC,IAAIA,CAAA,EAAG;EACrB,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;IACjC,MAAMC,OAAO,CAAC;MACZ,IAAIH,OAAOA,CAAA,EAAG;QACZ,OAAO,SAAS;MAClB;IACF;IAEAE,MAAM,CAACC,OAAO,GAAG,IAAIA,OAAO,CAAC,CAAC;EAChC;AACF"}
1
+ {"version":3,"file":"Eufemia.js","names":["version","init","window","Eufemia"],"sources":["../../../src/shared/Eufemia.js"],"sourcesContent":["export const version = '10.18.0'\n\nexport function init() {\n if (typeof window !== 'undefined') {\n class Eufemia {\n get version() {\n return '10.18.0'\n }\n }\n\n window.Eufemia = new Eufemia()\n }\n}\n"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAG,SAAS;AAEhC,OAAO,SAASC,IAAIA,CAAA,EAAG;EACrB,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;IACjC,MAAMC,OAAO,CAAC;MACZ,IAAIH,OAAOA,CAAA,EAAG;QACZ,OAAO,SAAS;MAClB;IACF;IAEAE,MAAM,CAACC,OAAO,GAAG,IAAIA,OAAO,CAAC,CAAC;EAChC;AACF"}
@@ -30,6 +30,11 @@ export type EventEmitterScopeObject = {
30
30
  instances: EventEmitterScopeInstances;
31
31
  data: EventEmitterData;
32
32
  };
33
+ /**
34
+ * Deprecated
35
+ *
36
+ * @deprecated Please use useSharedState instead for new code
37
+ */
33
38
  declare class EventEmitter {
34
39
  static createInstance(id: EventEmitterId): EventEmitter;
35
40
  static __EEE__?: Record<EventEmitterId, EventEmitterScopeObject>;
@@ -1 +1 @@
1
- {"version":3,"file":"EventEmitter.js","names":["EventEmitter","createInstance","id","constructor","_defineProperty","data","set","scope","__EEE__","instances","forEach","instance","listeners","fn","get","_objectSpread","count","push","listen","includes","unlisten","i","l","length","remove","window"],"sources":["../../../../src/shared/helpers/EventEmitter.ts"],"sourcesContent":["/**\n * EventEmitter\n *\n * This is a tiny event emitter meant to be used at several components that relay on each other to sync data in parallel.\n *\n * - In your class: this._emitterInstance = EventEmitter.createInstance(id) // unique id\n * - Listen to changes: this._emitterInstance.listen(function)\n * - Set new data: this._emitterInstance.set({...})\n * - Update new data: this._emitterInstance.update({...})\n * - Get new data: this._emitterInstance.get()\n * - Remove it like this: this._emitterInstance.remove()\n *\n * __EEE__ stands for __EUFEMIA_EVENT_EMITTER__\n */\n\ndeclare global {\n interface Window {\n __EEE__?: EventEmitterEEE\n }\n}\n\nexport type EventEmitterId = string\nexport type EventEmitterData = Record<string, unknown>\nexport type EventEmitterListener = (data: EventEmitterData) => void\nexport type EventEmitterEEE = Record<\n EventEmitterId,\n EventEmitterScopeObject\n>\nexport type EventEmitterScope =\n | ({\n __EEE__?: EventEmitterEEE\n } & Window)\n | EventEmitter\nexport type EventEmitterScopeInstances = Array<EventEmitter>\nexport type EventEmitterScopeObject = {\n count: number\n instances: EventEmitterScopeInstances\n data: EventEmitterData\n}\n\nclass EventEmitter {\n static createInstance(id: EventEmitterId) {\n return new EventEmitter(id)\n }\n\n static __EEE__?: Record<EventEmitterId, EventEmitterScopeObject>\n id: EventEmitterId\n listeners: Array<EventEmitterListener>\n\n constructor(id: EventEmitterId) {\n scope.__EEE__ = scope.__EEE__ || {}\n if (!scope.__EEE__[id]) {\n scope.__EEE__[id] = {\n instances: [],\n count: 0,\n data: {},\n }\n }\n scope.__EEE__[id].count = scope.__EEE__[id].count + 1\n scope.__EEE__[id].instances.push(this)\n\n this.id = id\n this.listeners = []\n\n return this\n }\n update = (data: EventEmitterData) => {\n this.set(data)\n scope.__EEE__[this.id].instances.forEach((instance) => {\n instance.listeners.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(instance.get())\n }\n })\n })\n }\n set = (data: EventEmitterData) => {\n scope.__EEE__[this.id].data = {\n ...scope.__EEE__[this.id].data,\n ...data,\n }\n }\n get = () => {\n return scope.__EEE__[this.id].data\n }\n listen(fn: EventEmitterListener) {\n if (!this.listeners.includes(fn)) {\n this.listeners.push(fn)\n }\n return this\n }\n unlisten(fn?: EventEmitterListener | undefined) {\n for (let i = 0, l = this.listeners.length; i < l; i++) {\n if (!fn || (fn && fn === this.listeners[i])) {\n this.listeners[i] = null\n }\n }\n }\n remove() {\n this.unlisten()\n scope.__EEE__[this.id].count = scope.__EEE__[this.id].count - 1\n if (scope.__EEE__[this.id].count <= 0) {\n delete scope[this.id]\n }\n }\n}\n\nconst scope = typeof window !== 'undefined' ? window : EventEmitter\n\nexport default EventEmitter\n"],"mappings":"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"}
1
+ {"version":3,"file":"EventEmitter.js","names":["EventEmitter","createInstance","id","constructor","_defineProperty","data","set","scope","__EEE__","instances","forEach","instance","listeners","fn","get","_objectSpread","count","push","listen","includes","unlisten","i","l","length","remove","window"],"sources":["../../../../src/shared/helpers/EventEmitter.ts"],"sourcesContent":["/**\n * EventEmitter\n *\n * This is a tiny event emitter meant to be used at several components that relay on each other to sync data in parallel.\n *\n * - In your class: this._emitterInstance = EventEmitter.createInstance(id) // unique id\n * - Listen to changes: this._emitterInstance.listen(function)\n * - Set new data: this._emitterInstance.set({...})\n * - Update new data: this._emitterInstance.update({...})\n * - Get new data: this._emitterInstance.get()\n * - Remove it like this: this._emitterInstance.remove()\n *\n * __EEE__ stands for __EUFEMIA_EVENT_EMITTER__\n */\n\ndeclare global {\n interface Window {\n __EEE__?: EventEmitterEEE\n }\n}\n\nexport type EventEmitterId = string\nexport type EventEmitterData = Record<string, unknown>\nexport type EventEmitterListener = (data: EventEmitterData) => void\nexport type EventEmitterEEE = Record<\n EventEmitterId,\n EventEmitterScopeObject\n>\nexport type EventEmitterScope =\n | ({\n __EEE__?: EventEmitterEEE\n } & Window)\n | EventEmitter\nexport type EventEmitterScopeInstances = Array<EventEmitter>\nexport type EventEmitterScopeObject = {\n count: number\n instances: EventEmitterScopeInstances\n data: EventEmitterData\n}\n\n/**\n * Deprecated\n *\n * @deprecated Please use useSharedState instead for new code\n */\nclass EventEmitter {\n static createInstance(id: EventEmitterId) {\n return new EventEmitter(id)\n }\n\n static __EEE__?: Record<EventEmitterId, EventEmitterScopeObject>\n id: EventEmitterId\n listeners: Array<EventEmitterListener>\n\n constructor(id: EventEmitterId) {\n scope.__EEE__ = scope.__EEE__ || {}\n if (!scope.__EEE__[id]) {\n scope.__EEE__[id] = {\n instances: [],\n count: 0,\n data: {},\n }\n }\n scope.__EEE__[id].count = scope.__EEE__[id].count + 1\n scope.__EEE__[id].instances.push(this)\n\n this.id = id\n this.listeners = []\n\n return this\n }\n update = (data: EventEmitterData) => {\n this.set(data)\n scope.__EEE__[this.id].instances.forEach((instance) => {\n instance.listeners.forEach((fn) => {\n if (typeof fn === 'function') {\n fn(instance.get())\n }\n })\n })\n }\n set = (data: EventEmitterData) => {\n scope.__EEE__[this.id].data = {\n ...scope.__EEE__[this.id].data,\n ...data,\n }\n }\n get = () => {\n return scope.__EEE__[this.id].data\n }\n listen(fn: EventEmitterListener) {\n if (!this.listeners.includes(fn)) {\n this.listeners.push(fn)\n }\n return this\n }\n unlisten(fn?: EventEmitterListener | undefined) {\n for (let i = 0, l = this.listeners.length; i < l; i++) {\n if (!fn || (fn && fn === this.listeners[i])) {\n this.listeners[i] = null\n }\n }\n }\n remove() {\n this.unlisten()\n scope.__EEE__[this.id].count = scope.__EEE__[this.id].count - 1\n if (scope.__EEE__[this.id].count <= 0) {\n delete scope[this.id]\n }\n }\n}\n\nconst scope = typeof window !== 'undefined' ? window : EventEmitter\n\nexport default EventEmitter\n"],"mappings":"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"}
@@ -4,6 +4,8 @@ import { EventEmitterData, EventEmitterId } from './EventEmitter';
4
4
  *
5
5
  * @param {string} id unique id, same as used in the "lined place"
6
6
  * @returns React Hook { data, update }
7
+ *
8
+ * @deprecated Please use useSharedState instead for new code
7
9
  */
8
10
  export declare const useEventEmitter: (id?: EventEmitterId) => {
9
11
  data: any;
@@ -1 +1 @@
1
- {"version":3,"file":"useEventEmitter.js","names":["React","EventEmitter","useEventEmitter","id","arguments","length","undefined","updateState","useState","forceUpdate","useCallback","useEffect","emitter","unlisten","createInstance","listen","data","get","update"],"sources":["../../../../src/shared/helpers/useEventEmitter.tsx"],"sourcesContent":["import React from 'react'\nimport EventEmitter, {\n EventEmitterData,\n EventEmitterId,\n} from './EventEmitter'\n\n/**\n * Use this React Hook as an easy way to sync data between components without a Context/Provider\n *\n * @param {string} id unique id, same as used in the \"lined place\"\n * @returns React Hook { data, update }\n */\nexport const useEventEmitter = (id: EventEmitterId = null) => {\n const [, updateState] = React.useState(null)\n const forceUpdate = React.useCallback(() => updateState({}), [])\n\n React.useEffect(() => () => emitter?.unlisten(forceUpdate), []) // eslint-disable-line react-hooks/exhaustive-deps\n\n const [emitter] = React.useState(() => {\n if (id) {\n const emitter = EventEmitter.createInstance(id)\n emitter.listen(forceUpdate)\n return emitter\n }\n })\n\n if (!emitter) {\n return { data: null }\n }\n\n const { get, update } = emitter\n const data: EventEmitterData = get()\n\n return { data, update }\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,YAAY,MAGZ,gBAAgB;AAQvB,OAAO,MAAMC,eAAe,GAAG,SAAAA,CAAA,EAA+B;EAAA,IAA9BC,EAAkB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EACvD,MAAM,GAAGG,WAAW,CAAC,GAAGP,KAAK,CAACQ,QAAQ,CAAC,IAAI,CAAC;EAC5C,MAAMC,WAAW,GAAGT,KAAK,CAACU,WAAW,CAAC,MAAMH,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;EAEhEP,KAAK,CAACW,SAAS,CAAC,MAAM,MAAMC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,QAAQ,CAACJ,WAAW,CAAC,EAAE,EAAE,CAAC;EAE/D,MAAM,CAACG,OAAO,CAAC,GAAGZ,KAAK,CAACQ,QAAQ,CAAC,MAAM;IACrC,IAAIL,EAAE,EAAE;MACN,MAAMS,OAAO,GAAGX,YAAY,CAACa,cAAc,CAACX,EAAE,CAAC;MAC/CS,OAAO,CAACG,MAAM,CAACN,WAAW,CAAC;MAC3B,OAAOG,OAAO;IAChB;EACF,CAAC,CAAC;EAEF,IAAI,CAACA,OAAO,EAAE;IACZ,OAAO;MAAEI,IAAI,EAAE;IAAK,CAAC;EACvB;EAEA,MAAM;IAAEC,GAAG;IAAEC;EAAO,CAAC,GAAGN,OAAO;EAC/B,MAAMI,IAAsB,GAAGC,GAAG,CAAC,CAAC;EAEpC,OAAO;IAAED,IAAI;IAAEE;EAAO,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"useEventEmitter.js","names":["React","EventEmitter","useEventEmitter","id","arguments","length","undefined","updateState","useState","forceUpdate","useCallback","useEffect","emitter","unlisten","createInstance","listen","data","get","update"],"sources":["../../../../src/shared/helpers/useEventEmitter.tsx"],"sourcesContent":["import React from 'react'\nimport EventEmitter, {\n EventEmitterData,\n EventEmitterId,\n} from './EventEmitter'\n\n/**\n * Use this React Hook as an easy way to sync data between components without a Context/Provider\n *\n * @param {string} id unique id, same as used in the \"lined place\"\n * @returns React Hook { data, update }\n *\n * @deprecated Please use useSharedState instead for new code\n */\nexport const useEventEmitter = (id: EventEmitterId = null) => {\n const [, updateState] = React.useState(null)\n const forceUpdate = React.useCallback(() => updateState({}), [])\n\n React.useEffect(() => () => emitter?.unlisten(forceUpdate), []) // eslint-disable-line react-hooks/exhaustive-deps\n\n const [emitter] = React.useState(() => {\n if (id) {\n const emitter = EventEmitter.createInstance(id)\n emitter.listen(forceUpdate)\n return emitter\n }\n })\n\n if (!emitter) {\n return { data: null }\n }\n\n const { get, update } = emitter\n const data: EventEmitterData = get()\n\n return { data, update }\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,YAAY,MAGZ,gBAAgB;AAUvB,OAAO,MAAMC,eAAe,GAAG,SAAAA,CAAA,EAA+B;EAAA,IAA9BC,EAAkB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EACvD,MAAM,GAAGG,WAAW,CAAC,GAAGP,KAAK,CAACQ,QAAQ,CAAC,IAAI,CAAC;EAC5C,MAAMC,WAAW,GAAGT,KAAK,CAACU,WAAW,CAAC,MAAMH,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;EAEhEP,KAAK,CAACW,SAAS,CAAC,MAAM,MAAMC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,QAAQ,CAACJ,WAAW,CAAC,EAAE,EAAE,CAAC;EAE/D,MAAM,CAACG,OAAO,CAAC,GAAGZ,KAAK,CAACQ,QAAQ,CAAC,MAAM;IACrC,IAAIL,EAAE,EAAE;MACN,MAAMS,OAAO,GAAGX,YAAY,CAACa,cAAc,CAACX,EAAE,CAAC;MAC/CS,OAAO,CAACG,MAAM,CAACN,WAAW,CAAC;MAC3B,OAAOG,OAAO;IAChB;EACF,CAAC,CAAC;EAEF,IAAI,CAACA,OAAO,EAAE;IACZ,OAAO;MAAEI,IAAI,EAAE;IAAK,CAAC;EACvB;EAEA,MAAM;IAAEC,GAAG;IAAEC;EAAO,CAAC,GAAGN,OAAO;EAC/B,MAAMI,IAAsB,GAAGC,GAAG,CAAC,CAAC;EAEpC,OAAO;IAAED,IAAI;IAAEE;EAAO,CAAC;AACzB,CAAC"}
@@ -0,0 +1,15 @@
1
+ type SharedStateId = string;
2
+ type Subscriber = () => void;
3
+ interface SharedStateInstance<Data> {
4
+ data: Data;
5
+ getSharedState: () => Data;
6
+ updateSharedState: (newData: Partial<Data>) => void;
7
+ subscribeToSharedState: (subscriber: Subscriber) => void;
8
+ unsubscribeFromSharedState: (subscriber: Subscriber) => void;
9
+ }
10
+ export declare function getOrCreateSharedState<Data>(id: SharedStateId, initialData: Data): SharedStateInstance<Data>;
11
+ export declare function useSharedState<Data>(id: SharedStateId, initialData: Data): {
12
+ data: Data;
13
+ update: (newData: Data) => void;
14
+ };
15
+ export {};