@dnb/eufemia 10.16.0 → 10.17.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 (441) hide show
  1. package/CHANGELOG.md +36 -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 +11 -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/withChildren.d.ts +6 -0
  41. package/cjs/components/flex/withChildren.js +13 -0
  42. package/cjs/components/flex/withChildren.js.map +1 -0
  43. package/cjs/components/input/Input.js +3 -3
  44. package/cjs/components/input/Input.js.map +1 -1
  45. package/cjs/components/input/style/themes/dnb-input-theme-ui.css +2 -0
  46. package/cjs/components/input/style/themes/dnb-input-theme-ui.min.css +1 -1
  47. package/cjs/components/input/style/themes/dnb-input-theme-ui.scss +2 -0
  48. package/cjs/components/input-masked/InputMaskedHooks.d.ts +1 -0
  49. package/cjs/components/input-masked/InputMaskedHooks.js +13 -8
  50. package/cjs/components/input-masked/InputMaskedHooks.js.map +1 -1
  51. package/cjs/components/input-masked/hooks/useHandleCursorPosition.js +7 -3
  52. package/cjs/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -1
  53. package/cjs/components/textarea/style/dnb-textarea.css +5 -0
  54. package/cjs/components/textarea/style/dnb-textarea.min.css +1 -1
  55. package/cjs/components/textarea/style/dnb-textarea.scss +4 -0
  56. package/cjs/extensions/forms/Field/Currency/Currency.d.ts +1 -5
  57. package/cjs/extensions/forms/Field/Currency/Currency.js.map +1 -1
  58. package/cjs/extensions/forms/Field/Date/Date.d.ts +3 -1
  59. package/cjs/extensions/forms/Field/Date/Date.js +51 -10
  60. package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
  61. package/cjs/extensions/forms/Field/Number/Number.d.ts +5 -1
  62. package/cjs/extensions/forms/Field/Number/Number.js +112 -28
  63. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  64. package/cjs/extensions/forms/Field/Number/style/dnb-number.css +192 -0
  65. package/cjs/extensions/forms/Field/Number/style/dnb-number.min.css +1 -0
  66. package/cjs/extensions/forms/Field/Number/style/dnb-number.scss +176 -0
  67. package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.css +74 -0
  68. package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.min.css +3 -0
  69. package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.scss +81 -0
  70. package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.css +15 -0
  71. package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.min.css +5 -0
  72. package/cjs/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.scss +15 -0
  73. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +3 -5
  74. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  75. package/cjs/extensions/forms/Field/String/String.js +21 -1
  76. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  77. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +16 -18
  78. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  79. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +9 -0
  80. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  81. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.scss +2 -0
  82. package/cjs/extensions/forms/{Visibility → Form/Visibility}/Visibility.d.ts +5 -2
  83. package/cjs/extensions/forms/{Visibility → Form/Visibility}/Visibility.js +8 -2
  84. package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -0
  85. package/cjs/extensions/forms/Form/Visibility/index.js.map +1 -0
  86. package/cjs/extensions/forms/Form/index.d.ts +1 -0
  87. package/cjs/extensions/forms/Form/index.js +7 -0
  88. package/cjs/extensions/forms/Form/index.js.map +1 -1
  89. package/cjs/extensions/forms/hooks/useDataValue.js +24 -31
  90. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  91. package/cjs/extensions/forms/hooks/useId.d.ts +1 -0
  92. package/cjs/extensions/forms/hooks/useId.js +18 -0
  93. package/cjs/extensions/forms/hooks/useId.js.map +1 -0
  94. package/cjs/extensions/forms/index.d.ts +6 -1
  95. package/cjs/extensions/forms/index.js +5 -8
  96. package/cjs/extensions/forms/index.js.map +1 -1
  97. package/cjs/extensions/forms/style/dnb-forms.css +202 -0
  98. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  99. package/cjs/extensions/forms/types.d.ts +12 -10
  100. package/cjs/extensions/forms/types.js.map +1 -1
  101. package/cjs/extensions/forms/utils/TestElement/TestElement.d.ts +5 -1
  102. package/cjs/extensions/forms/utils/TestElement/TestElement.js +1 -0
  103. package/cjs/extensions/forms/utils/TestElement/TestElement.js.map +1 -1
  104. package/cjs/shared/Eufemia.d.ts +1 -1
  105. package/cjs/shared/Eufemia.js +2 -2
  106. package/cjs/shared/Eufemia.js.map +1 -1
  107. package/cjs/style/core/utilities.scss +1 -2
  108. package/cjs/style/dnb-ui-components.css +220 -16
  109. package/cjs/style/dnb-ui-components.min.css +3 -3
  110. package/cjs/style/dnb-ui-extensions.css +202 -0
  111. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  112. package/cjs/style/dnb-ui-forms.css +202 -0
  113. package/cjs/style/dnb-ui-forms.min.css +1 -1
  114. package/cjs/style/dnb-ui-forms.scss +1 -0
  115. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +470 -22
  116. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +9 -5
  117. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +218 -0
  118. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +5 -1
  119. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -0
  120. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +218 -1
  121. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +5 -1
  122. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.scss +2 -0
  123. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +509 -17
  124. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +7 -5
  125. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +277 -0
  126. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +3 -1
  127. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -0
  128. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +277 -1
  129. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +3 -1
  130. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.scss +2 -0
  131. package/cjs/style/themes/theme-ui/ui-theme-components.css +468 -22
  132. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +9 -5
  133. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +218 -0
  134. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +5 -1
  135. package/cjs/style/themes/theme-ui/ui-theme-extensions.scss +1 -0
  136. package/cjs/style/themes/theme-ui/ui-theme-forms.css +218 -1
  137. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +5 -1
  138. package/cjs/style/themes/theme-ui/ui-theme-forms.scss +2 -0
  139. package/cjs/style/themes/theme-ui/ui-theme-tags.css +8 -10
  140. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  141. package/components/anchor/Anchor.js +9 -5
  142. package/components/anchor/Anchor.js.map +1 -1
  143. package/components/anchor/style/anchor-mixins.scss +0 -11
  144. package/components/anchor/style/dnb-anchor.css +0 -16
  145. package/components/anchor/style/dnb-anchor.min.css +1 -1
  146. package/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +16 -4
  147. package/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
  148. package/components/anchor/style/themes/dnb-anchor-theme-ui.css +16 -4
  149. package/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  150. package/components/anchor/style/themes/dnb-anchor-theme-ui.scss +10 -2
  151. package/components/autocomplete/Autocomplete.js +2 -2
  152. package/components/autocomplete/Autocomplete.js.map +1 -1
  153. package/components/button/style/dnb-button.css +13 -0
  154. package/components/button/style/dnb-button.min.css +1 -1
  155. package/components/button/style/dnb-button.scss +16 -0
  156. package/components/button/style/themes/dnb-button-theme-eiendom.css +12 -1
  157. package/components/button/style/themes/dnb-button-theme-eiendom.min.css +1 -1
  158. package/components/button/style/themes/dnb-button-theme-sbanken.css +12 -0
  159. package/components/button/style/themes/dnb-button-theme-sbanken.min.css +2 -2
  160. package/components/button/style/themes/dnb-button-theme-sbanken.scss +10 -0
  161. package/components/button/style/themes/dnb-button-theme-ui.css +12 -1
  162. package/components/button/style/themes/dnb-button-theme-ui.min.css +1 -1
  163. package/components/button/style/themes/dnb-button-theme-ui.scss +12 -3
  164. package/components/date-picker/DatePicker.d.ts +14 -1
  165. package/components/date-picker/DatePicker.js +0 -1
  166. package/components/date-picker/DatePicker.js.map +1 -1
  167. package/components/date-picker/DatePickerCalc.js +2 -1
  168. package/components/date-picker/DatePickerCalc.js.map +1 -1
  169. package/components/date-picker/DatePickerInput.d.ts +3 -0
  170. package/components/date-picker/DatePickerInput.js +9 -2
  171. package/components/date-picker/DatePickerInput.js.map +1 -1
  172. package/components/dropdown/Dropdown.js +3 -2
  173. package/components/dropdown/Dropdown.js.map +1 -1
  174. package/components/flex/Container.js +11 -2
  175. package/components/flex/Container.js.map +1 -1
  176. package/components/flex/export.d.ts +1 -0
  177. package/components/flex/export.js +1 -0
  178. package/components/flex/export.js.map +1 -1
  179. package/components/flex/withChildren.d.ts +6 -0
  180. package/components/flex/withChildren.js +6 -0
  181. package/components/flex/withChildren.js.map +1 -0
  182. package/components/input/Input.js +3 -3
  183. package/components/input/Input.js.map +1 -1
  184. package/components/input/style/themes/dnb-input-theme-ui.css +2 -0
  185. package/components/input/style/themes/dnb-input-theme-ui.min.css +1 -1
  186. package/components/input/style/themes/dnb-input-theme-ui.scss +2 -0
  187. package/components/input-masked/InputMaskedHooks.d.ts +1 -0
  188. package/components/input-masked/InputMaskedHooks.js +13 -8
  189. package/components/input-masked/InputMaskedHooks.js.map +1 -1
  190. package/components/input-masked/hooks/useHandleCursorPosition.js +7 -3
  191. package/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -1
  192. package/components/textarea/style/dnb-textarea.css +5 -0
  193. package/components/textarea/style/dnb-textarea.min.css +1 -1
  194. package/components/textarea/style/dnb-textarea.scss +4 -0
  195. package/es/components/anchor/Anchor.js +9 -5
  196. package/es/components/anchor/Anchor.js.map +1 -1
  197. package/es/components/anchor/style/anchor-mixins.scss +0 -11
  198. package/es/components/anchor/style/dnb-anchor.css +0 -16
  199. package/es/components/anchor/style/dnb-anchor.min.css +1 -1
  200. package/es/components/anchor/style/themes/dnb-anchor-theme-eiendom.css +16 -4
  201. package/es/components/anchor/style/themes/dnb-anchor-theme-eiendom.min.css +1 -1
  202. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.css +16 -4
  203. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.min.css +1 -1
  204. package/es/components/anchor/style/themes/dnb-anchor-theme-ui.scss +10 -2
  205. package/es/components/autocomplete/Autocomplete.js +2 -2
  206. package/es/components/autocomplete/Autocomplete.js.map +1 -1
  207. package/es/components/button/style/dnb-button.css +13 -0
  208. package/es/components/button/style/dnb-button.min.css +1 -1
  209. package/es/components/button/style/dnb-button.scss +16 -0
  210. package/es/components/button/style/themes/dnb-button-theme-eiendom.css +12 -1
  211. package/es/components/button/style/themes/dnb-button-theme-eiendom.min.css +1 -1
  212. package/es/components/button/style/themes/dnb-button-theme-sbanken.css +12 -0
  213. package/es/components/button/style/themes/dnb-button-theme-sbanken.min.css +2 -2
  214. package/es/components/button/style/themes/dnb-button-theme-sbanken.scss +10 -0
  215. package/es/components/button/style/themes/dnb-button-theme-ui.css +12 -1
  216. package/es/components/button/style/themes/dnb-button-theme-ui.min.css +1 -1
  217. package/es/components/button/style/themes/dnb-button-theme-ui.scss +12 -3
  218. package/es/components/date-picker/DatePicker.d.ts +14 -1
  219. package/es/components/date-picker/DatePicker.js +0 -1
  220. package/es/components/date-picker/DatePicker.js.map +1 -1
  221. package/es/components/date-picker/DatePickerCalc.js +2 -1
  222. package/es/components/date-picker/DatePickerCalc.js.map +1 -1
  223. package/es/components/date-picker/DatePickerInput.d.ts +3 -0
  224. package/es/components/date-picker/DatePickerInput.js +9 -2
  225. package/es/components/date-picker/DatePickerInput.js.map +1 -1
  226. package/es/components/dropdown/Dropdown.js +3 -2
  227. package/es/components/dropdown/Dropdown.js.map +1 -1
  228. package/es/components/flex/Container.js +11 -2
  229. package/es/components/flex/Container.js.map +1 -1
  230. package/es/components/flex/export.d.ts +1 -0
  231. package/es/components/flex/export.js +1 -0
  232. package/es/components/flex/export.js.map +1 -1
  233. package/es/components/flex/withChildren.d.ts +6 -0
  234. package/es/components/flex/withChildren.js +6 -0
  235. package/es/components/flex/withChildren.js.map +1 -0
  236. package/es/components/input/Input.js +3 -3
  237. package/es/components/input/Input.js.map +1 -1
  238. package/es/components/input/style/themes/dnb-input-theme-ui.css +2 -0
  239. package/es/components/input/style/themes/dnb-input-theme-ui.min.css +1 -1
  240. package/es/components/input/style/themes/dnb-input-theme-ui.scss +2 -0
  241. package/es/components/input-masked/InputMaskedHooks.d.ts +1 -0
  242. package/es/components/input-masked/InputMaskedHooks.js +13 -8
  243. package/es/components/input-masked/InputMaskedHooks.js.map +1 -1
  244. package/es/components/input-masked/hooks/useHandleCursorPosition.js +7 -3
  245. package/es/components/input-masked/hooks/useHandleCursorPosition.js.map +1 -1
  246. package/es/components/textarea/style/dnb-textarea.css +5 -0
  247. package/es/components/textarea/style/dnb-textarea.min.css +1 -1
  248. package/es/components/textarea/style/dnb-textarea.scss +4 -0
  249. package/es/extensions/forms/Field/Currency/Currency.d.ts +1 -5
  250. package/es/extensions/forms/Field/Currency/Currency.js.map +1 -1
  251. package/es/extensions/forms/Field/Date/Date.d.ts +3 -1
  252. package/es/extensions/forms/Field/Date/Date.js +49 -9
  253. package/es/extensions/forms/Field/Date/Date.js.map +1 -1
  254. package/es/extensions/forms/Field/Number/Number.d.ts +5 -1
  255. package/es/extensions/forms/Field/Number/Number.js +112 -29
  256. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  257. package/es/extensions/forms/Field/Number/style/dnb-number.css +192 -0
  258. package/es/extensions/forms/Field/Number/style/dnb-number.min.css +1 -0
  259. package/es/extensions/forms/Field/Number/style/dnb-number.scss +176 -0
  260. package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.css +74 -0
  261. package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.min.css +3 -0
  262. package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.scss +81 -0
  263. package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.css +15 -0
  264. package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.min.css +5 -0
  265. package/es/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.scss +15 -0
  266. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +3 -5
  267. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  268. package/es/extensions/forms/Field/String/String.js +21 -1
  269. package/es/extensions/forms/Field/String/String.js.map +1 -1
  270. package/es/extensions/forms/FieldBlock/FieldBlock.js +14 -15
  271. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  272. package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +9 -0
  273. package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  274. package/es/extensions/forms/FieldBlock/style/dnb-field-block.scss +2 -0
  275. package/{extensions/forms → es/extensions/forms/Form}/Visibility/Visibility.d.ts +5 -2
  276. package/es/extensions/forms/{Visibility → Form/Visibility}/Visibility.js +8 -2
  277. package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -0
  278. package/es/extensions/forms/Form/Visibility/index.js.map +1 -0
  279. package/es/extensions/forms/Form/index.d.ts +1 -0
  280. package/es/extensions/forms/Form/index.js +1 -0
  281. package/es/extensions/forms/Form/index.js.map +1 -1
  282. package/es/extensions/forms/hooks/useDataValue.js +24 -31
  283. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  284. package/es/extensions/forms/hooks/useId.d.ts +1 -0
  285. package/es/extensions/forms/hooks/useId.js +11 -0
  286. package/es/extensions/forms/hooks/useId.js.map +1 -0
  287. package/es/extensions/forms/index.d.ts +6 -1
  288. package/es/extensions/forms/index.js +3 -1
  289. package/es/extensions/forms/index.js.map +1 -1
  290. package/es/extensions/forms/style/dnb-forms.css +202 -0
  291. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  292. package/es/extensions/forms/types.d.ts +12 -10
  293. package/es/extensions/forms/types.js.map +1 -1
  294. package/es/extensions/forms/utils/TestElement/TestElement.d.ts +5 -1
  295. package/es/extensions/forms/utils/TestElement/TestElement.js +1 -0
  296. package/es/extensions/forms/utils/TestElement/TestElement.js.map +1 -1
  297. package/es/shared/Eufemia.d.ts +1 -1
  298. package/es/shared/Eufemia.js +2 -2
  299. package/es/shared/Eufemia.js.map +1 -1
  300. package/es/style/core/utilities.scss +1 -2
  301. package/es/style/dnb-ui-components.css +220 -16
  302. package/es/style/dnb-ui-components.min.css +3 -3
  303. package/es/style/dnb-ui-extensions.css +202 -0
  304. package/es/style/dnb-ui-extensions.min.css +1 -1
  305. package/es/style/dnb-ui-forms.css +202 -0
  306. package/es/style/dnb-ui-forms.min.css +1 -1
  307. package/es/style/dnb-ui-forms.scss +1 -0
  308. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +470 -22
  309. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +9 -5
  310. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +218 -0
  311. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +5 -1
  312. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -0
  313. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +218 -1
  314. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +5 -1
  315. package/es/style/themes/theme-eiendom/eiendom-theme-forms.scss +2 -0
  316. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +509 -17
  317. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +7 -5
  318. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +277 -0
  319. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +3 -1
  320. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -0
  321. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +277 -1
  322. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +3 -1
  323. package/es/style/themes/theme-sbanken/sbanken-theme-forms.scss +2 -0
  324. package/es/style/themes/theme-ui/ui-theme-components.css +468 -22
  325. package/es/style/themes/theme-ui/ui-theme-components.min.css +9 -5
  326. package/es/style/themes/theme-ui/ui-theme-extensions.css +218 -0
  327. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +5 -1
  328. package/es/style/themes/theme-ui/ui-theme-extensions.scss +1 -0
  329. package/es/style/themes/theme-ui/ui-theme-forms.css +218 -1
  330. package/es/style/themes/theme-ui/ui-theme-forms.min.css +5 -1
  331. package/es/style/themes/theme-ui/ui-theme-forms.scss +2 -0
  332. package/es/style/themes/theme-ui/ui-theme-tags.css +8 -10
  333. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  334. package/esm/dnb-ui-basis.min.mjs +1 -1
  335. package/esm/dnb-ui-components.min.mjs +1 -1
  336. package/esm/dnb-ui-elements.min.mjs +1 -1
  337. package/esm/dnb-ui-extensions.min.mjs +3 -3
  338. package/esm/dnb-ui-lib.min.mjs +1 -1
  339. package/extensions/forms/Field/Currency/Currency.d.ts +1 -5
  340. package/extensions/forms/Field/Currency/Currency.js.map +1 -1
  341. package/extensions/forms/Field/Date/Date.d.ts +3 -1
  342. package/extensions/forms/Field/Date/Date.js +52 -11
  343. package/extensions/forms/Field/Date/Date.js.map +1 -1
  344. package/extensions/forms/Field/Number/Number.d.ts +5 -1
  345. package/extensions/forms/Field/Number/Number.js +113 -29
  346. package/extensions/forms/Field/Number/Number.js.map +1 -1
  347. package/extensions/forms/Field/Number/style/dnb-number.css +192 -0
  348. package/extensions/forms/Field/Number/style/dnb-number.min.css +1 -0
  349. package/extensions/forms/Field/Number/style/dnb-number.scss +176 -0
  350. package/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.css +74 -0
  351. package/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.min.css +3 -0
  352. package/extensions/forms/Field/Number/style/themes/dnb-number-theme-sbanken.scss +81 -0
  353. package/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.css +15 -0
  354. package/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.min.css +5 -0
  355. package/extensions/forms/Field/Number/style/themes/dnb-number-theme-ui.scss +15 -0
  356. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +3 -5
  357. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  358. package/extensions/forms/Field/String/String.js +21 -1
  359. package/extensions/forms/Field/String/String.js.map +1 -1
  360. package/extensions/forms/FieldBlock/FieldBlock.js +16 -18
  361. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  362. package/extensions/forms/FieldBlock/style/dnb-field-block.css +9 -0
  363. package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  364. package/extensions/forms/FieldBlock/style/dnb-field-block.scss +2 -0
  365. package/{es/extensions/forms → extensions/forms/Form}/Visibility/Visibility.d.ts +5 -2
  366. package/extensions/forms/{Visibility → Form/Visibility}/Visibility.js +8 -2
  367. package/extensions/forms/Form/Visibility/Visibility.js.map +1 -0
  368. package/extensions/forms/Form/Visibility/index.js.map +1 -0
  369. package/extensions/forms/Form/index.d.ts +1 -0
  370. package/extensions/forms/Form/index.js +1 -0
  371. package/extensions/forms/Form/index.js.map +1 -1
  372. package/extensions/forms/hooks/useDataValue.js +24 -31
  373. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  374. package/extensions/forms/hooks/useId.d.ts +1 -0
  375. package/extensions/forms/hooks/useId.js +11 -0
  376. package/extensions/forms/hooks/useId.js.map +1 -0
  377. package/extensions/forms/index.d.ts +6 -1
  378. package/extensions/forms/index.js +3 -1
  379. package/extensions/forms/index.js.map +1 -1
  380. package/extensions/forms/style/dnb-forms.css +202 -0
  381. package/extensions/forms/style/dnb-forms.min.css +1 -1
  382. package/extensions/forms/types.d.ts +12 -10
  383. package/extensions/forms/types.js.map +1 -1
  384. package/extensions/forms/utils/TestElement/TestElement.d.ts +5 -1
  385. package/extensions/forms/utils/TestElement/TestElement.js +1 -0
  386. package/extensions/forms/utils/TestElement/TestElement.js.map +1 -1
  387. package/package.json +1 -1
  388. package/shared/Eufemia.d.ts +1 -1
  389. package/shared/Eufemia.js +2 -2
  390. package/shared/Eufemia.js.map +1 -1
  391. package/style/core/utilities.scss +1 -2
  392. package/style/dnb-ui-components.css +220 -16
  393. package/style/dnb-ui-components.min.css +3 -3
  394. package/style/dnb-ui-extensions.css +202 -0
  395. package/style/dnb-ui-extensions.min.css +1 -1
  396. package/style/dnb-ui-forms.css +202 -0
  397. package/style/dnb-ui-forms.min.css +1 -1
  398. package/style/dnb-ui-forms.scss +1 -0
  399. package/style/themes/theme-eiendom/eiendom-theme-components.css +470 -22
  400. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +9 -5
  401. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +218 -0
  402. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +5 -1
  403. package/style/themes/theme-eiendom/eiendom-theme-extensions.scss +1 -0
  404. package/style/themes/theme-eiendom/eiendom-theme-forms.css +218 -1
  405. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +5 -1
  406. package/style/themes/theme-eiendom/eiendom-theme-forms.scss +2 -0
  407. package/style/themes/theme-sbanken/sbanken-theme-components.css +509 -17
  408. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +7 -5
  409. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +277 -0
  410. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +3 -1
  411. package/style/themes/theme-sbanken/sbanken-theme-extensions.scss +1 -0
  412. package/style/themes/theme-sbanken/sbanken-theme-forms.css +277 -1
  413. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +3 -1
  414. package/style/themes/theme-sbanken/sbanken-theme-forms.scss +2 -0
  415. package/style/themes/theme-ui/ui-theme-components.css +468 -22
  416. package/style/themes/theme-ui/ui-theme-components.min.css +9 -5
  417. package/style/themes/theme-ui/ui-theme-extensions.css +218 -0
  418. package/style/themes/theme-ui/ui-theme-extensions.min.css +5 -1
  419. package/style/themes/theme-ui/ui-theme-extensions.scss +1 -0
  420. package/style/themes/theme-ui/ui-theme-forms.css +218 -1
  421. package/style/themes/theme-ui/ui-theme-forms.min.css +5 -1
  422. package/style/themes/theme-ui/ui-theme-forms.scss +2 -0
  423. package/style/themes/theme-ui/ui-theme-tags.css +8 -10
  424. package/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  425. package/umd/dnb-ui-basis.min.js +1 -1
  426. package/umd/dnb-ui-components.min.js +1 -1
  427. package/umd/dnb-ui-elements.min.js +1 -1
  428. package/umd/dnb-ui-extensions.min.js +3 -3
  429. package/umd/dnb-ui-lib.min.js +1 -1
  430. package/cjs/extensions/forms/Visibility/Visibility.js.map +0 -1
  431. package/cjs/extensions/forms/Visibility/index.js.map +0 -1
  432. package/es/extensions/forms/Visibility/Visibility.js.map +0 -1
  433. package/es/extensions/forms/Visibility/index.js.map +0 -1
  434. package/extensions/forms/Visibility/Visibility.js.map +0 -1
  435. package/extensions/forms/Visibility/index.js.map +0 -1
  436. /package/cjs/extensions/forms/{Visibility → Form/Visibility}/index.d.ts +0 -0
  437. /package/cjs/extensions/forms/{Visibility → Form/Visibility}/index.js +0 -0
  438. /package/es/extensions/forms/{Visibility → Form/Visibility}/index.d.ts +0 -0
  439. /package/es/extensions/forms/{Visibility → Form/Visibility}/index.js +0 -0
  440. /package/extensions/forms/{Visibility → Form/Visibility}/index.d.ts +0 -0
  441. /package/extensions/forms/{Visibility → Form/Visibility}/index.js +0 -0
@@ -1 +1 @@
1
- .dnb-textarea{--textarea-padding-width:0.5rem;--textarea-rows:2;--textarea-background-color:var(--color-white);display:inline-flex;font-size:var(--font-size-small);line-height:var(--line-height-basis)}.dnb-textarea__inner{display:inline-flex;flex-direction:column;margin:var(--textarea-padding-width)}.dnb-textarea__shell{display:inline-flex;font-size:var(--font-size-basis);position:relative}.dnb-textarea__state{background-color:var(--color-white);border-radius:.25rem;bottom:-.5rem;box-shadow:0 0 0 .0625rem var(--color-sea-green);left:-.5rem;position:absolute;right:-.5rem;top:-.5rem;z-index:1}.dnb-textarea__row{display:inline-flex}.dnb-textarea__suffix.dnb-suffix{padding-left:1rem}.dnb-textarea__textarea{-webkit-overflow-scrolling:touch;-ms-overflow-style:auto;border:none;cursor:auto;font-size:var(--font-size-basis);line-height:var(--line-height-basis);margin:0;outline:none;overflow-y:auto;overscroll-behavior:contain;padding:0 var(--textarea-padding-width);position:relative;scrollbar-color:var(--scrollbar-thumb-color,#888) transparent;z-index:2}html:not([data-visual-test]) .dnb-textarea__textarea{scroll-behavior:smooth}@supports not (scrollbar-color:auto){.dnb-textarea__textarea::-webkit-scrollbar{background-color:var(--scrollbar-track-color,#eee);border-radius:var(--scrollbar-thumb-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar:vertical{width:var(--scrollbar-track-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar:horizontal{height:var(--scrollbar-track-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-color,#888);border-radius:var(--scrollbar-thumb-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover-color,#666)}}.dnb-textarea__input:-webkit-autofill{box-shadow:0 0 0 var(--border-width) var(--border-color),0 0 0 10em var(--textarea-background-color) inset}.dnb-textarea__input:autofill{box-shadow:0 0 0 var(--border-width) var(--border-color),0 0 0 10em var(--textarea-background-color) inset}.dnb-textarea__placeholder{-webkit-box-orient:vertical;-webkit-line-clamp:var(--textarea-rows,2);border:none;cursor:auto;display:-webkit-box;font-size:var(--font-size-basis);height:100%;left:0;line-height:var(--line-height-basis);margin:0;outline:none;overflow:hidden;padding:0 var(--textarea-padding-width);pointer-events:none;position:absolute;top:0;width:100%;z-index:3}.dnb-textarea__placeholder,.dnb-textarea__textarea{text-align:left}.dnb-textarea__align--right .dnb-textarea__placeholder,.dnb-textarea__align--right .dnb-textarea__textarea{text-align:right}.dnb-textarea__autoresize .dnb-textarea__textarea{resize:none}.dnb-textarea--disabled .dnb-textarea__textarea,.dnb-textarea__textarea[disabled]{-webkit-user-select:none;user-select:none}.dnb-textarea--disabled .dnb-textarea__textarea::-webkit-scrollbar,.dnb-textarea__textarea[disabled]::-webkit-scrollbar{width:0}.dnb-textarea--focus .dnb-textarea__textarea:not([disabled]):not([readonly])~.dnb-textarea__placeholder,.dnb-textarea--has-content .dnb-textarea__textarea~.dnb-textarea__placeholder{display:none}.dnb-textarea__inner>.dnb-form-status{margin:1rem 0 0 calc(0px - var(--textarea-padding-width));order:2}.dnb-textarea:not(.dnb-textarea--vertical) .dnb-form-label{margin-top:.5rem}.dnb-textarea--vertical{align-items:flex-start;display:flex;flex-direction:column}.dnb-textarea:not(.dnb-textarea--vertical)[class*=__status]{align-items:flex-start}.dnb-textarea:not(.dnb-textarea--vertical)[class*=__status]>.dnb-form-label{margin-top:.25rem}@media screen and (max-width:40em){.dnb-textarea{flex-wrap:wrap}.dnb-textarea>.dnb-form-label{margin-bottom:.5rem;margin-top:.5rem}}.dnb-textarea--stretch{display:flex;flex-grow:1}.dnb-textarea--stretch .dnb-textarea__inner{flex-grow:1}.dnb-textarea--stretch .dnb-textarea__inner,.dnb-textarea--stretch .dnb-textarea__shell,.dnb-textarea--stretch .dnb-textarea__textarea{width:100%}.dnb-textarea--stretch .dnb-form-label+.dnb-textarea__inner{width:auto}.dnb-form-row--horizontal .dnb-textarea--stretch,.dnb-textarea--vertical.dnb-textarea--stretch .dnb-textarea__inner{width:100%}@media screen and (max-width:40em){.dnb-responsive-component .dnb-textarea{align-items:flex-start;display:flex;flex-direction:column;margin-bottom:.5rem}.dnb-responsive-component .dnb-textarea>.dnb-form-label{margin-bottom:.5rem}}html[data-visual-test] .dnb-textarea__textarea{caret-color:var(--color-white)}.dnb-textarea.dnb-skeleton .dnb-textarea__inner{border-radius:.25rem;margin:0}.dnb-textarea.dnb-skeleton .dnb-textarea__inner .dnb-textarea__shell{margin:var(--textarea-padding-width)}.dnb-textarea.dnb-skeleton .dnb-textarea__state,.dnb-textarea.dnb-skeleton .dnb-textarea__textarea{visibility:hidden}
1
+ .dnb-textarea{--textarea-padding-width:0.5rem;--textarea-rows:2;--textarea-background-color:var(--color-white);display:inline-flex;font-size:var(--font-size-small);line-height:var(--line-height-basis)}.dnb-textarea__inner{display:inline-flex;flex-direction:column;margin:var(--textarea-padding-width)}.dnb-textarea__shell{display:inline-flex;font-size:var(--font-size-basis);position:relative}.dnb-textarea__state{background-color:var(--color-white);border-radius:.25rem;bottom:-.5rem;box-shadow:0 0 0 .0625rem var(--color-sea-green);left:-.5rem;position:absolute;right:-.5rem;top:-.5rem;z-index:1}.dnb-textarea__row{display:inline-flex}.dnb-textarea__suffix.dnb-suffix{padding-left:1rem}.dnb-textarea__textarea{-webkit-overflow-scrolling:touch;-ms-overflow-style:auto;border:none;cursor:auto;font-size:var(--font-size-basis);line-height:var(--line-height-basis);margin:0;outline:none;overflow-y:auto;overscroll-behavior:contain;padding:0 var(--textarea-padding-width);position:relative;scrollbar-color:var(--scrollbar-thumb-color,#888) transparent;z-index:2}html:not([data-visual-test]) .dnb-textarea__textarea{scroll-behavior:smooth}@supports not (scrollbar-color:auto){.dnb-textarea__textarea::-webkit-scrollbar{background-color:var(--scrollbar-track-color,#eee);border-radius:var(--scrollbar-thumb-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar:vertical{width:var(--scrollbar-track-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar:horizontal{height:var(--scrollbar-track-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-color,#888);border-radius:var(--scrollbar-thumb-width,.5rem)}.dnb-textarea__textarea::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover-color,#666)}}@-moz-document url-prefix(){.dnb-textarea__textarea{overflow-x:clip}}.dnb-textarea__input:-webkit-autofill{box-shadow:0 0 0 var(--border-width) var(--border-color),0 0 0 10em var(--textarea-background-color) inset}.dnb-textarea__input:autofill{box-shadow:0 0 0 var(--border-width) var(--border-color),0 0 0 10em var(--textarea-background-color) inset}.dnb-textarea__placeholder{-webkit-box-orient:vertical;-webkit-line-clamp:var(--textarea-rows,2);border:none;cursor:auto;display:-webkit-box;font-size:var(--font-size-basis);height:100%;left:0;line-height:var(--line-height-basis);margin:0;outline:none;overflow:hidden;padding:0 var(--textarea-padding-width);pointer-events:none;position:absolute;top:0;width:100%;z-index:3}.dnb-textarea__placeholder,.dnb-textarea__textarea{text-align:left}.dnb-textarea__align--right .dnb-textarea__placeholder,.dnb-textarea__align--right .dnb-textarea__textarea{text-align:right}.dnb-textarea__autoresize .dnb-textarea__textarea{resize:none}.dnb-textarea--disabled .dnb-textarea__textarea,.dnb-textarea__textarea[disabled]{-webkit-user-select:none;user-select:none}.dnb-textarea--disabled .dnb-textarea__textarea::-webkit-scrollbar,.dnb-textarea__textarea[disabled]::-webkit-scrollbar{width:0}.dnb-textarea--focus .dnb-textarea__textarea:not([disabled]):not([readonly])~.dnb-textarea__placeholder,.dnb-textarea--has-content .dnb-textarea__textarea~.dnb-textarea__placeholder{display:none}.dnb-textarea__inner>.dnb-form-status{margin:1rem 0 0 calc(0px - var(--textarea-padding-width));order:2}.dnb-textarea:not(.dnb-textarea--vertical) .dnb-form-label{margin-top:.5rem}.dnb-textarea--vertical{align-items:flex-start;display:flex;flex-direction:column}.dnb-textarea:not(.dnb-textarea--vertical)[class*=__status]{align-items:flex-start}.dnb-textarea:not(.dnb-textarea--vertical)[class*=__status]>.dnb-form-label{margin-top:.25rem}@media screen and (max-width:40em){.dnb-textarea{flex-wrap:wrap}.dnb-textarea>.dnb-form-label{margin-bottom:.5rem;margin-top:.5rem}}.dnb-textarea--stretch{display:flex;flex-grow:1}.dnb-textarea--stretch .dnb-textarea__inner{flex-grow:1}.dnb-textarea--stretch .dnb-textarea__inner,.dnb-textarea--stretch .dnb-textarea__shell,.dnb-textarea--stretch .dnb-textarea__textarea{width:100%}.dnb-textarea--stretch .dnb-form-label+.dnb-textarea__inner{width:auto}.dnb-form-row--horizontal .dnb-textarea--stretch,.dnb-textarea--vertical.dnb-textarea--stretch .dnb-textarea__inner{width:100%}@media screen and (max-width:40em){.dnb-responsive-component .dnb-textarea{align-items:flex-start;display:flex;flex-direction:column;margin-bottom:.5rem}.dnb-responsive-component .dnb-textarea>.dnb-form-label{margin-bottom:.5rem}}html[data-visual-test] .dnb-textarea__textarea{caret-color:var(--color-white)}.dnb-textarea.dnb-skeleton .dnb-textarea__inner{border-radius:.25rem;margin:0}.dnb-textarea.dnb-skeleton .dnb-textarea__inner .dnb-textarea__shell{margin:var(--textarea-padding-width)}.dnb-textarea.dnb-skeleton .dnb-textarea__state,.dnb-textarea.dnb-skeleton .dnb-textarea__textarea{visibility:hidden}
@@ -71,6 +71,10 @@
71
71
  @include textareaStyleCommon();
72
72
 
73
73
  @include scrollY(auto);
74
+
75
+ @include IS_FF() {
76
+ overflow-x: clip;
77
+ }
74
78
  }
75
79
 
76
80
  // change the autocomplete appearance once filled out
@@ -1,9 +1,5 @@
1
1
  import { Props as NumberProps } from '../Number';
2
- import type { FieldProps, FieldHelpProps } from '../../types';
3
- export type Props = FieldHelpProps & FieldProps<number, undefined> & {
4
- currency?: NumberProps['currency'];
5
- rightAligned?: NumberProps['rightAligned'];
6
- };
2
+ export type Props = NumberProps;
7
3
  declare function Currency(props: Props): import("react/jsx-runtime").JSX.Element;
8
4
  declare namespace Currency {
9
5
  var _supportsSpacingProps: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Currency.js","names":["React","classnames","Context","getCurrencySymbol","CURRENCY","NumberComponent","Currency","props","_props$currency","_props$placeholder","context","useContext","preparedProps","_objectSpread","currency","placeholder","locale","createElement","_extends","className","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Currency/Currency.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport { Context } from '../../../../shared'\nimport { getCurrencySymbol } from '../../../../components/number-format/NumberUtils'\nimport { CURRENCY } from '../../../../shared/defaults'\nimport NumberComponent, { Props as NumberProps } from '../Number'\nimport type { FieldProps, FieldHelpProps } from '../../types'\n\nexport type Props = FieldHelpProps &\n FieldProps<number, undefined> & {\n currency?: NumberProps['currency']\n rightAligned?: NumberProps['rightAligned']\n }\n\nfunction Currency(props: Props) {\n const context = React.useContext(Context)\n const preparedProps = {\n ...props,\n currency: props.currency ?? CURRENCY,\n placeholder:\n props.placeholder ??\n getCurrencySymbol(context?.locale, props.currency),\n }\n\n return (\n <NumberComponent\n {...preparedProps}\n className={classnames('dnb-forms-field-currency', props.className)}\n />\n )\n}\n\nCurrency._supportsSpacingProps = true\nexport default Currency\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,iBAAiB,QAAQ,kDAAkD;AACpF,SAASC,QAAQ,QAAQ,6BAA6B;AACtD,OAAOC,eAAe,MAAgC,WAAW;AASjE,SAASC,QAAQA,CAACC,KAAY,EAAE;EAAA,IAAAC,eAAA,EAAAC,kBAAA;EAC9B,MAAMC,OAAO,GAAGV,KAAK,CAACW,UAAU,CAACT,OAAO,CAAC;EACzC,MAAMU,aAAa,GAAAC,aAAA,CAAAA,aAAA,KACdN,KAAK;IACRO,QAAQ,GAAAN,eAAA,GAAED,KAAK,CAACO,QAAQ,cAAAN,eAAA,cAAAA,eAAA,GAAIJ,QAAQ;IACpCW,WAAW,GAAAN,kBAAA,GACTF,KAAK,CAACQ,WAAW,cAAAN,kBAAA,cAAAA,kBAAA,GACjBN,iBAAiB,CAACO,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEM,MAAM,EAAET,KAAK,CAACO,QAAQ;EAAC,EACrD;EAED,OACEd,KAAA,CAAAiB,aAAA,CAACZ,eAAe,EAAAa,QAAA,KACVN,aAAa;IACjBO,SAAS,EAAElB,UAAU,CAAC,0BAA0B,EAAEM,KAAK,CAACY,SAAS;EAAE,EACpE,CAAC;AAEN;AAEAb,QAAQ,CAACc,qBAAqB,GAAG,IAAI;AACrC,eAAed,QAAQ"}
1
+ {"version":3,"file":"Currency.js","names":["React","classnames","Context","getCurrencySymbol","CURRENCY","NumberComponent","Currency","props","_props$currency","_props$placeholder","context","useContext","preparedProps","_objectSpread","currency","placeholder","locale","createElement","_extends","className","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Currency/Currency.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport { Context } from '../../../../shared'\nimport { getCurrencySymbol } from '../../../../components/number-format/NumberUtils'\nimport { CURRENCY } from '../../../../shared/defaults'\nimport NumberComponent, { Props as NumberProps } from '../Number'\n\nexport type Props = NumberProps\n\nfunction Currency(props: Props) {\n const context = React.useContext(Context)\n const preparedProps = {\n ...props,\n currency: props.currency ?? CURRENCY,\n placeholder:\n props.placeholder ??\n getCurrencySymbol(context?.locale, props.currency),\n }\n\n return (\n <NumberComponent\n {...preparedProps}\n className={classnames('dnb-forms-field-currency', props.className)}\n />\n )\n}\n\nCurrency._supportsSpacingProps = true\nexport default Currency\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,iBAAiB,QAAQ,kDAAkD;AACpF,SAASC,QAAQ,QAAQ,6BAA6B;AACtD,OAAOC,eAAe,MAAgC,WAAW;AAIjE,SAASC,QAAQA,CAACC,KAAY,EAAE;EAAA,IAAAC,eAAA,EAAAC,kBAAA;EAC9B,MAAMC,OAAO,GAAGV,KAAK,CAACW,UAAU,CAACT,OAAO,CAAC;EACzC,MAAMU,aAAa,GAAAC,aAAA,CAAAA,aAAA,KACdN,KAAK;IACRO,QAAQ,GAAAN,eAAA,GAAED,KAAK,CAACO,QAAQ,cAAAN,eAAA,cAAAA,eAAA,GAAIJ,QAAQ;IACpCW,WAAW,GAAAN,kBAAA,GACTF,KAAK,CAACQ,WAAW,cAAAN,kBAAA,cAAAA,kBAAA,GACjBN,iBAAiB,CAACO,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEM,MAAM,EAAET,KAAK,CAACO,QAAQ;EAAC,EACrD;EAED,OACEd,KAAA,CAAAiB,aAAA,CAACZ,eAAe,EAAAa,QAAA,KACVN,aAAa;IACjBO,SAAS,EAAElB,UAAU,CAAC,0BAA0B,EAAEM,KAAK,CAACY,SAAS;EAAE,EACpE,CAAC;AAEN;AAEAb,QAAQ,CAACc,qBAAqB,GAAG,IAAI;AACrC,eAAed,QAAQ"}
@@ -1,5 +1,7 @@
1
1
  import { FieldProps, FieldHelpProps } from '../../types';
2
- export type Props = FieldHelpProps & FieldProps<string>;
2
+ export type Props = FieldHelpProps & FieldProps<string> & {
3
+ pattern?: string;
4
+ };
3
5
  declare function DateComponent(props: Props): import("react/jsx-runtime").JSX.Element;
4
6
  declare namespace DateComponent {
5
7
  var _supportsSpacingProps: boolean;
@@ -4,50 +4,90 @@ import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
5
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
6
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
- import React, { useContext } from 'react';
7
+ import React, { useCallback, useContext, useMemo } from 'react';
8
8
  import { DatePicker, HelpButton } from '../../../../components';
9
9
  import { useDataValue } from '../../hooks';
10
10
  import { pickSpacingProps } from '../../../../components/flex/utils';
11
11
  import SharedContext from '../../../../shared/Context';
12
+ import classnames from 'classnames';
13
+ import FieldBlock from '../../FieldBlock';
14
+ import { parseISO, isValid } from 'date-fns';
12
15
  function DateComponent(props) {
13
16
  const sharedContext = useContext(SharedContext);
17
+ const tr = sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms;
18
+ const errorMessages = useMemo(() => _objectSpread({
19
+ required: tr.dateErrorRequired,
20
+ pattern: tr.inputErrorPattern
21
+ }, props.errorMessages), [tr, props.errorMessages]);
22
+ const schema = useMemo(() => {
23
+ var _props$schema;
24
+ return (_props$schema = props.schema) !== null && _props$schema !== void 0 ? _props$schema : {
25
+ type: 'string',
26
+ pattern: props.pattern
27
+ };
28
+ }, [props.schema, props.pattern]);
29
+ const validateRequired = useCallback((value, {
30
+ required,
31
+ error
32
+ }) => {
33
+ if (required && (!value || !isValid(parseISO(value)))) {
34
+ return error;
35
+ }
36
+ return undefined;
37
+ }, []);
14
38
  const preparedProps = _objectSpread(_objectSpread({}, props), {}, {
39
+ errorMessages,
40
+ schema,
15
41
  fromInput: ({
16
42
  date
17
43
  }) => {
18
44
  return date;
19
45
  },
20
- emptyValue: null
46
+ validateRequired
21
47
  });
22
48
  const {
49
+ id,
23
50
  className,
24
51
  label,
52
+ labelDescription,
53
+ labelSecondary,
25
54
  value,
26
55
  help,
56
+ info,
57
+ warning,
27
58
  error,
59
+ hasError,
28
60
  disabled,
29
61
  handleFocus,
30
62
  handleBlur,
31
63
  handleChange
32
64
  } = useDataValue(preparedProps);
33
- return React.createElement(DatePicker, _extends({
34
- className: className,
65
+ return React.createElement(FieldBlock, _extends({
66
+ className: classnames('dnb-forms-field-string', className),
67
+ forId: id,
35
68
  label: label !== null && label !== void 0 ? label : sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms.dateLabel,
36
- label_direction: "vertical",
69
+ labelDescription: labelDescription,
70
+ labelSecondary: labelSecondary,
71
+ info: info,
72
+ warning: warning,
73
+ disabled: disabled,
74
+ error: error
75
+ }, pickSpacingProps(props)), React.createElement(DatePicker, _extends({
76
+ id: id,
37
77
  date: value,
38
- status: error === null || error === void 0 ? void 0 : error.message,
39
78
  disabled: disabled,
40
79
  show_input: true,
41
80
  show_cancel_button: true,
42
81
  show_reset_button: true,
82
+ status: error || hasError ? 'error' : undefined,
43
83
  suffix: help ? React.createElement(HelpButton, {
44
84
  title: help.title
45
85
  }, help.contents) : undefined,
46
86
  on_change: handleChange,
47
87
  on_reset: handleChange,
48
- on_show: handleFocus,
49
- on_hide: handleBlur
50
- }, pickSpacingProps(props)));
88
+ onFocus: handleFocus,
89
+ onBlur: handleBlur
90
+ }, pickSpacingProps(props))));
51
91
  }
52
92
  DateComponent._supportsSpacingProps = true;
53
93
  export default DateComponent;
@@ -1 +1 @@
1
- {"version":3,"file":"Date.js","names":["React","useContext","DatePicker","HelpButton","useDataValue","pickSpacingProps","SharedContext","DateComponent","props","sharedContext","preparedProps","_objectSpread","fromInput","date","emptyValue","className","label","value","help","error","disabled","handleFocus","handleBlur","handleChange","createElement","_extends","translation","Forms","dateLabel","label_direction","status","message","show_input","show_cancel_button","show_reset_button","suffix","title","contents","undefined","on_change","on_reset","on_show","on_hide","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Date/Date.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport { DatePicker, HelpButton } from '../../../../components'\nimport { useDataValue } from '../../hooks'\nimport { FieldProps, FieldHelpProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport SharedContext from '../../../../shared/Context'\n\nexport type Props = FieldHelpProps & FieldProps<string>\n\nfunction DateComponent(props: Props) {\n const sharedContext = useContext(SharedContext)\n const preparedProps: Props = {\n ...props,\n fromInput: ({ date }: { date: string }) => {\n return date\n },\n emptyValue: null,\n }\n\n const {\n className,\n label,\n value,\n help,\n error,\n disabled,\n handleFocus,\n handleBlur,\n handleChange,\n } = useDataValue(preparedProps)\n\n return (\n <DatePicker\n className={className}\n label={label ?? sharedContext?.translation.Forms.dateLabel}\n label_direction=\"vertical\"\n date={value}\n status={error?.message}\n disabled={disabled}\n show_input={true}\n show_cancel_button={true}\n show_reset_button={true}\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.contents}</HelpButton>\n ) : undefined\n }\n on_change={handleChange}\n on_reset={handleChange}\n on_show={handleFocus}\n on_hide={handleBlur}\n {...pickSpacingProps(props)}\n />\n )\n}\n\nDateComponent._supportsSpacingProps = true\nexport default DateComponent\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,SAASC,UAAU,EAAEC,UAAU,QAAQ,wBAAwB;AAC/D,SAASC,YAAY,QAAQ,aAAa;AAE1C,SAASC,gBAAgB,QAAQ,mCAAmC;AACpE,OAAOC,aAAa,MAAM,4BAA4B;AAItD,SAASC,aAAaA,CAACC,KAAY,EAAE;EACnC,MAAMC,aAAa,GAAGR,UAAU,CAACK,aAAa,CAAC;EAC/C,MAAMI,aAAoB,GAAAC,aAAA,CAAAA,aAAA,KACrBH,KAAK;IACRI,SAAS,EAAEA,CAAC;MAAEC;IAAuB,CAAC,KAAK;MACzC,OAAOA,IAAI;IACb,CAAC;IACDC,UAAU,EAAE;EAAI,EACjB;EAED,MAAM;IACJC,SAAS;IACTC,KAAK;IACLC,KAAK;IACLC,IAAI;IACJC,KAAK;IACLC,QAAQ;IACRC,WAAW;IACXC,UAAU;IACVC;EACF,CAAC,GAAGnB,YAAY,CAACM,aAAa,CAAC;EAE/B,OACEV,KAAA,CAAAwB,aAAA,CAACtB,UAAU,EAAAuB,QAAA;IACTV,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAK,aAALA,KAAK,cAALA,KAAK,GAAIP,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEiB,WAAW,CAACC,KAAK,CAACC,SAAU;IAC3DC,eAAe,EAAC,UAAU;IAC1BhB,IAAI,EAAEI,KAAM;IACZa,MAAM,EAAEX,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEY,OAAQ;IACvBX,QAAQ,EAAEA,QAAS;IACnBY,UAAU,EAAE,IAAK;IACjBC,kBAAkB,EAAE,IAAK;IACzBC,iBAAiB,EAAE,IAAK;IACxBC,MAAM,EACJjB,IAAI,GACFlB,KAAA,CAAAwB,aAAA,CAACrB,UAAU;MAACiC,KAAK,EAAElB,IAAI,CAACkB;IAAM,GAAElB,IAAI,CAACmB,QAAqB,CAAC,GACzDC,SACL;IACDC,SAAS,EAAEhB,YAAa;IACxBiB,QAAQ,EAAEjB,YAAa;IACvBkB,OAAO,EAAEpB,WAAY;IACrBqB,OAAO,EAAEpB;EAAW,GAChBjB,gBAAgB,CAACG,KAAK,CAAC,CAC5B,CAAC;AAEN;AAEAD,aAAa,CAACoC,qBAAqB,GAAG,IAAI;AAC1C,eAAepC,aAAa"}
1
+ {"version":3,"file":"Date.js","names":["React","useCallback","useContext","useMemo","DatePicker","HelpButton","useDataValue","pickSpacingProps","SharedContext","classnames","FieldBlock","parseISO","isValid","DateComponent","props","sharedContext","tr","translation","Forms","errorMessages","_objectSpread","required","dateErrorRequired","pattern","inputErrorPattern","schema","_props$schema","type","validateRequired","value","error","undefined","preparedProps","fromInput","date","id","className","label","labelDescription","labelSecondary","help","info","warning","hasError","disabled","handleFocus","handleBlur","handleChange","createElement","_extends","forId","dateLabel","show_input","show_cancel_button","show_reset_button","status","suffix","title","contents","on_change","on_reset","onFocus","onBlur","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Date/Date.tsx"],"sourcesContent":["import React, { useCallback, useContext, useMemo } from 'react'\nimport { DatePicker, HelpButton } from '../../../../components'\nimport { useDataValue } from '../../hooks'\nimport { FieldProps, FieldHelpProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport SharedContext from '../../../../shared/Context'\nimport { JSONSchema7 } from 'json-schema'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { parseISO, isValid } from 'date-fns'\n\nexport type Props = FieldHelpProps &\n FieldProps<string> & {\n // Validation\n pattern?: string\n }\n\nfunction DateComponent(props: Props) {\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\n const errorMessages = useMemo(\n () => ({\n required: tr.dateErrorRequired,\n pattern: tr.inputErrorPattern,\n ...props.errorMessages,\n }),\n [tr, props.errorMessages]\n )\n\n const schema = useMemo<JSONSchema7>(\n () =>\n props.schema ?? {\n type: 'string',\n pattern: props.pattern,\n },\n [props.schema, props.pattern]\n )\n\n const validateRequired = useCallback(\n (value: string, { required, error }) => {\n if (required && (!value || !isValid(parseISO(value)))) {\n return error\n }\n\n return undefined\n },\n []\n )\n\n const preparedProps: Props = {\n ...props,\n errorMessages,\n schema,\n fromInput: ({ date }: { date: string }) => {\n return date\n },\n validateRequired,\n }\n\n const {\n id,\n className,\n label,\n labelDescription,\n labelSecondary,\n value,\n help,\n info,\n warning,\n error,\n hasError,\n disabled,\n handleFocus,\n handleBlur,\n handleChange,\n } = useDataValue(preparedProps)\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-string', className)}\n forId={id}\n label={label ?? sharedContext?.translation.Forms.dateLabel}\n labelDescription={labelDescription}\n labelSecondary={labelSecondary}\n info={info}\n warning={warning}\n disabled={disabled}\n error={error}\n {...pickSpacingProps(props)}\n >\n <DatePicker\n id={id}\n date={value}\n disabled={disabled}\n show_input={true}\n show_cancel_button={true}\n show_reset_button={true}\n status={error || hasError ? 'error' : undefined}\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.contents}</HelpButton>\n ) : undefined\n }\n on_change={handleChange}\n on_reset={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...pickSpacingProps(props)}\n />\n </FieldBlock>\n )\n}\n\nDateComponent._supportsSpacingProps = true\nexport default DateComponent\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { InputMaskedProps } from '../../../../components/InputMasked';
2
+ import type { InputAlign, InputSize } from '../../../../components/Input';
2
3
  import { FieldProps, FieldHelpProps } from '../../types';
3
4
  interface ErrorMessages {
4
5
  required?: string;
@@ -14,6 +15,7 @@ export type Props = FieldHelpProps & FieldProps<number, undefined, ErrorMessages
14
15
  currency?: InputMaskedProps['as_currency'];
15
16
  percent?: InputMaskedProps['as_percent'];
16
17
  mask?: InputMaskedProps['mask'];
18
+ step?: number;
17
19
  thousandSeparator?: string | true;
18
20
  decimalSymbol?: string;
19
21
  decimalLimit?: number;
@@ -24,8 +26,10 @@ export type Props = FieldHelpProps & FieldProps<number, undefined, ErrorMessages
24
26
  exclusiveMinimum?: number;
25
27
  exclusiveMaximum?: number;
26
28
  multipleOf?: number;
29
+ size?: InputSize;
27
30
  width?: false | 'small' | 'medium' | 'large' | 'stretch';
28
- rightAligned?: boolean;
31
+ align?: InputAlign;
32
+ showStepControls?: boolean;
29
33
  };
30
34
  declare function NumberComponent(props: Props): import("react/jsx-runtime").JSX.Element;
31
35
  declare namespace NumberComponent {
@@ -5,26 +5,28 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
5
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
6
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
7
  import React, { useContext, useMemo, useCallback } from 'react';
8
- import { InputMasked, HelpButton } from '../../../../components';
8
+ import { InputMasked, HelpButton, Button } from '../../../../components';
9
9
  import SharedContext from '../../../../shared/Context';
10
10
  import classnames from 'classnames';
11
11
  import FieldBlock from '../../FieldBlock';
12
12
  import { useDataValue } from '../../hooks';
13
13
  import { pickSpacingProps } from '../../../../components/flex/utils';
14
+ import { clamp } from '../../../../components/slider/SliderHelpers';
14
15
  function NumberComponent(props) {
15
- var _props$width;
16
+ var _props$width, _sharedContext$transl, _sharedContext$transl2;
16
17
  const sharedContext = useContext(SharedContext);
17
18
  const tr = sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms;
18
19
  const {
19
20
  currency,
20
21
  percent,
21
22
  mask,
23
+ step = 1,
22
24
  thousandSeparator,
23
25
  decimalSymbol,
24
26
  decimalLimit = 12,
25
27
  prefix,
26
28
  suffix,
27
- rightAligned
29
+ showStepControls
28
30
  } = props;
29
31
  const errorMessages = useMemo(() => _objectSpread({
30
32
  required: tr.inputErrorRequired,
@@ -56,9 +58,15 @@ function NumberComponent(props) {
56
58
  numberValue
57
59
  }) => {
58
60
  if (value === '') {
59
- return emptyValue;
61
+ return props.emptyValue;
60
62
  }
61
63
  return numberValue;
64
+ }, [props.emptyValue]);
65
+ const transformValue = useCallback((value, currentValue) => {
66
+ if (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER) {
67
+ return currentValue;
68
+ }
69
+ return value;
62
70
  }, []);
63
71
  const maskProps = useMemo(() => {
64
72
  if (currency) {
@@ -89,6 +97,8 @@ function NumberComponent(props) {
89
97
  schema,
90
98
  toInput,
91
99
  fromInput,
100
+ transformValue,
101
+ size: props.size !== 'small' && props.size !== 'large' ? 'medium' : props.size,
92
102
  width: (_props$width = props.width) !== null && _props$width !== void 0 ? _props$width : 'medium'
93
103
  });
94
104
  const {
@@ -103,50 +113,123 @@ function NumberComponent(props) {
103
113
  labelDescription,
104
114
  labelSecondary,
105
115
  value,
116
+ minimum = Number.MIN_SAFE_INTEGER,
117
+ maximum = Number.MAX_SAFE_INTEGER,
106
118
  disabled,
107
119
  info,
108
120
  warning,
109
121
  error,
110
122
  help,
111
- emptyValue,
123
+ size,
112
124
  width,
125
+ align,
113
126
  handleFocus,
114
127
  handleBlur,
115
128
  handleChange
116
129
  } = useDataValue(preparedProps);
117
- return React.createElement(FieldBlock, _extends({
130
+ const onKeyDownHandler = useCallback(({
131
+ key,
132
+ event
133
+ }) => {
134
+ if (!showStepControls) {
135
+ return;
136
+ }
137
+ let numberValue = null;
138
+ switch (key) {
139
+ case 'ArrowUp':
140
+ numberValue = clamp(value + step, minimum, maximum);
141
+ break;
142
+ case 'ArrowDown':
143
+ numberValue = clamp(value - step, minimum, maximum);
144
+ break;
145
+ }
146
+ if (numberValue !== null) {
147
+ event.persist();
148
+ event.preventDefault();
149
+ handleChange({
150
+ numberValue
151
+ });
152
+ }
153
+ }, [handleChange, maximum, minimum, showStepControls, step, value]);
154
+ const fieldBlockProps = _objectSpread({
118
155
  className: classnames('dnb-forms-field-number', className),
156
+ contentClassName: classnames('dnb-forms-field-number__contents', showStepControls && 'dnb-forms-field-number__contents--has-controls', disabled && 'dnb-forms-field-number__contents--is-disabled', error && 'dnb-forms-field-number__contents--has-error'),
119
157
  forId: id,
120
- layout: layout,
121
- label: label,
122
- labelDescription: labelDescription,
123
- labelSecondary: labelSecondary,
124
- info: info,
125
- warning: warning,
126
- error: error,
127
- disabled: disabled,
158
+ layout,
159
+ label,
160
+ labelDescription,
161
+ labelSecondary,
162
+ info,
163
+ warning,
164
+ error,
165
+ disabled,
128
166
  width: width === 'stretch' ? width : undefined,
129
167
  contentsWidth: width !== false ? width : undefined
130
- }, pickSpacingProps(props)), React.createElement(InputMasked, _extends({
131
- id: id,
132
- name: name,
133
- autoComplete: autoComplete,
134
- className: classnames('dnb-forms-field-number__input', inputClassName),
135
- placeholder: placeholder,
136
- value: value
137
- }, maskProps, {
138
- align: rightAligned && 'right',
139
- on_focus: handleFocus,
140
- on_blur: handleBlur,
141
- on_change: handleChange,
142
- disabled: disabled,
168
+ }, pickSpacingProps(props));
169
+ const increaseProps = showStepControls && {
170
+ 'aria-hidden': true,
171
+ className: 'dnb-button--control-after',
172
+ variant: 'secondary',
173
+ icon: 'add',
174
+ size: convertInputSizeToButtonSize(size),
175
+ tabIndex: -1,
176
+ disabled: disabled || value >= maximum,
177
+ onClick: () => {
178
+ handleChange({
179
+ numberValue: clamp(value + step, minimum, maximum)
180
+ });
181
+ },
182
+ title: sharedContext === null || sharedContext === void 0 ? void 0 : (_sharedContext$transl = sharedContext.translation.Slider.addTitle) === null || _sharedContext$transl === void 0 ? void 0 : _sharedContext$transl.replace('%s', String(value + step))
183
+ };
184
+ const decreaseProps = showStepControls && _objectSpread(_objectSpread({}, increaseProps), {}, {
185
+ className: 'dnb-button--control-before',
186
+ icon: 'subtract',
187
+ disabled: disabled || value <= minimum,
188
+ onClick: () => {
189
+ handleChange({
190
+ numberValue: clamp(value - step, minimum, maximum)
191
+ });
192
+ },
193
+ title: sharedContext === null || sharedContext === void 0 ? void 0 : (_sharedContext$transl2 = sharedContext.translation.Slider.subtractTitle) === null || _sharedContext$transl2 === void 0 ? void 0 : _sharedContext$transl2.replace('%s', String(value - step))
194
+ });
195
+ const ariaParams = showStepControls && {
196
+ role: 'spinbutton',
197
+ 'aria-valuemin': String(minimum),
198
+ 'aria-valuemax': String(maximum),
199
+ 'aria-valuenow': String(value),
200
+ 'aria-valuetext': String(value)
201
+ };
202
+ const inputProps = _objectSpread(_objectSpread({
203
+ id,
204
+ name,
205
+ autoComplete,
206
+ className: classnames(`dnb-forms-field-number__input dnb-input--${size}`, inputClassName),
207
+ step,
208
+ placeholder,
209
+ value,
210
+ align: showStepControls ? 'center' : align
211
+ }, maskProps), {}, {
212
+ onKeyDown: onKeyDownHandler,
213
+ onFocus: handleFocus,
214
+ onBlur: handleBlur,
215
+ onChange: handleChange,
216
+ disabled,
143
217
  status: error ? 'error' : undefined,
144
218
  stretch: width !== undefined,
145
- suffix: help ? React.createElement(HelpButton, {
219
+ suffix: help && !showStepControls ? React.createElement(HelpButton, {
146
220
  title: help.title
147
221
  }, help.contents) : undefined
148
- })));
222
+ }, ariaParams);
223
+ return React.createElement(FieldBlock, _extends({}, fieldBlockProps, {
224
+ asFieldset: false
225
+ }), showStepControls && React.createElement(Button, decreaseProps), React.createElement(InputMasked, inputProps), showStepControls && React.createElement(Button, increaseProps), help && showStepControls && React.createElement(HelpButton, {
226
+ title: help.title
227
+ }, help.contents));
149
228
  }
229
+ const convertInputSizeToButtonSize = inputSize => {
230
+ const buttonSize = ['small', 'medium', 'large'].indexOf(inputSize) > -1 ? inputSize : 'medium';
231
+ return buttonSize;
232
+ };
150
233
  NumberComponent._supportsSpacingProps = true;
151
234
  export default NumberComponent;
152
235
  //# sourceMappingURL=Number.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Number.js","names":["React","useContext","useMemo","useCallback","InputMasked","HelpButton","SharedContext","classnames","FieldBlock","useDataValue","pickSpacingProps","NumberComponent","props","_props$width","sharedContext","tr","translation","Forms","currency","percent","mask","thousandSeparator","decimalSymbol","decimalLimit","prefix","suffix","rightAligned","errorMessages","_objectSpread","required","inputErrorRequired","minimum","numberFieldErrorMinimum","maximum","numberFieldErrorMaximum","exclusiveMinimum","numberFieldErrorExclusiveMinimum","exclusiveMaximum","numberFieldErrorExclusiveMaximum","multipleOf","numberFieldErrorMultipleOf","schema","_props$schema","type","toInput","external","undefined","fromInput","value","numberValue","emptyValue","maskProps","as_currency","as_percent","as_number","number_mask","includeThousandsSeparator","thousandsSeparatorSymbol","preparedProps","width","id","name","className","autoComplete","inputClassName","layout","placeholder","label","labelDescription","labelSecondary","disabled","info","warning","error","help","handleFocus","handleBlur","handleChange","createElement","_extends","forId","contentsWidth","align","on_focus","on_blur","on_change","status","stretch","title","contents","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Number/Number.tsx"],"sourcesContent":["import React, { useContext, useMemo, useCallback } from 'react'\nimport { JSONSchema7 } from 'json-schema'\nimport { InputMasked, HelpButton } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport SharedContext from '../../../../shared/Context'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { useDataValue } from '../../hooks'\nimport { FieldProps, FieldHelpProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\n\ninterface ErrorMessages {\n required?: string\n schema?: string\n minimum?: string\n maximum?: string\n exclusiveMinimum?: string\n exclusiveMaximum?: string\n multipleOf?: string\n}\n\nexport type Props = FieldHelpProps &\n FieldProps<number, undefined, ErrorMessages> & {\n inputClassName?: string\n currency?: InputMaskedProps['as_currency']\n percent?: InputMaskedProps['as_percent']\n mask?: InputMaskedProps['mask']\n // Formatting\n thousandSeparator?: string | true\n decimalSymbol?: string\n decimalLimit?: number\n prefix?: string\n suffix?: string\n // Validation\n minimum?: number // aka greater than or equal to\n maximum?: number // aka less than or equal to\n exclusiveMinimum?: number // aka greater than\n exclusiveMaximum?: number // aka less than\n multipleOf?: number\n // Styling\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n rightAligned?: boolean\n }\n\nfunction NumberComponent(props: Props) {\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\n const {\n currency,\n percent,\n mask,\n thousandSeparator,\n decimalSymbol,\n decimalLimit = 12,\n prefix,\n suffix,\n rightAligned,\n } = props\n\n const errorMessages = useMemo(\n () => ({\n required: tr.inputErrorRequired,\n minimum: tr.numberFieldErrorMinimum,\n maximum: tr.numberFieldErrorMaximum,\n exclusiveMinimum: tr.numberFieldErrorExclusiveMinimum,\n exclusiveMaximum: tr.numberFieldErrorExclusiveMaximum,\n multipleOf: tr.numberFieldErrorMultipleOf,\n ...props.errorMessages,\n }),\n [tr, props.errorMessages]\n )\n const schema = useMemo<JSONSchema7>(\n () =>\n props.schema ?? {\n type: 'number',\n minimum: props.minimum,\n maximum: props.maximum,\n exclusiveMinimum: props.exclusiveMinimum,\n exclusiveMaximum: props.exclusiveMaximum,\n multipleOf: props.multipleOf,\n },\n [\n props.schema,\n props.minimum,\n props.maximum,\n props.exclusiveMinimum,\n props.exclusiveMaximum,\n props.multipleOf,\n ]\n )\n\n const toInput = useCallback((external: number | undefined) => {\n if (external === undefined) {\n return ''\n }\n return external\n }, [])\n const fromInput = useCallback(\n ({ value, numberValue }: { value: string; numberValue: number }) => {\n if (value === '') {\n return emptyValue\n }\n return numberValue\n },\n []\n )\n\n const maskProps: Partial<InputMaskedProps> = useMemo(() => {\n if (currency) {\n return {\n as_currency: currency,\n }\n }\n if (percent) {\n return {\n as_percent: percent,\n }\n }\n // Custom mask based on props\n return {\n as_number: true,\n mask,\n number_mask: {\n decimalLimit,\n decimalSymbol,\n includeThousandsSeparator: thousandSeparator !== undefined,\n thousandsSeparatorSymbol:\n thousandSeparator === true ? ' ' : thousandSeparator,\n prefix,\n suffix,\n },\n }\n }, [\n currency,\n percent,\n mask,\n decimalLimit,\n decimalSymbol,\n thousandSeparator,\n prefix,\n suffix,\n ])\n\n const preparedProps: Props = {\n ...props,\n errorMessages,\n schema,\n toInput,\n fromInput,\n width: props.width ?? 'medium',\n }\n\n const {\n id,\n name,\n className,\n autoComplete,\n inputClassName,\n layout,\n placeholder,\n label,\n labelDescription,\n labelSecondary,\n value,\n disabled,\n info,\n warning,\n error,\n help,\n emptyValue,\n width,\n handleFocus,\n handleBlur,\n handleChange,\n } = useDataValue(preparedProps)\n\n return (\n <FieldBlock\n className={classnames('dnb-forms-field-number', className)}\n forId={id}\n layout={layout}\n label={label}\n labelDescription={labelDescription}\n labelSecondary={labelSecondary}\n info={info}\n warning={warning}\n error={error}\n disabled={disabled}\n width={width === 'stretch' ? width : undefined}\n contentsWidth={width !== false ? width : undefined}\n {...pickSpacingProps(props)}\n >\n <InputMasked\n id={id}\n name={name}\n autoComplete={autoComplete}\n className={classnames(\n 'dnb-forms-field-number__input',\n inputClassName\n )}\n placeholder={placeholder}\n value={value}\n {...maskProps}\n align={rightAligned && 'right'}\n on_focus={handleFocus}\n on_blur={handleBlur}\n on_change={handleChange}\n disabled={disabled}\n status={error ? 'error' : undefined}\n stretch={width !== undefined}\n suffix={\n help ? (\n <HelpButton title={help.title}>{help.contents}</HelpButton>\n ) : undefined\n }\n />\n </FieldBlock>\n )\n}\n\nNumberComponent._supportsSpacingProps = true\nexport default NumberComponent\n"],"mappings":"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"}
1
+ {"version":3,"file":"Number.js","names":["React","useContext","useMemo","useCallback","InputMasked","HelpButton","Button","SharedContext","classnames","FieldBlock","useDataValue","pickSpacingProps","clamp","NumberComponent","props","_props$width","_sharedContext$transl","_sharedContext$transl2","sharedContext","tr","translation","Forms","currency","percent","mask","step","thousandSeparator","decimalSymbol","decimalLimit","prefix","suffix","showStepControls","errorMessages","_objectSpread","required","inputErrorRequired","minimum","numberFieldErrorMinimum","maximum","numberFieldErrorMaximum","exclusiveMinimum","numberFieldErrorExclusiveMinimum","exclusiveMaximum","numberFieldErrorExclusiveMaximum","multipleOf","numberFieldErrorMultipleOf","schema","_props$schema","type","toInput","external","undefined","fromInput","value","numberValue","emptyValue","transformValue","currentValue","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","maskProps","as_currency","as_percent","as_number","number_mask","includeThousandsSeparator","thousandsSeparatorSymbol","preparedProps","size","width","id","name","className","autoComplete","inputClassName","layout","placeholder","label","labelDescription","labelSecondary","disabled","info","warning","error","help","align","handleFocus","handleBlur","handleChange","onKeyDownHandler","key","event","persist","preventDefault","fieldBlockProps","contentClassName","forId","contentsWidth","increaseProps","variant","icon","convertInputSizeToButtonSize","tabIndex","onClick","title","Slider","addTitle","replace","String","decreaseProps","subtractTitle","ariaParams","role","inputProps","onKeyDown","onFocus","onBlur","onChange","status","stretch","createElement","contents","_extends","asFieldset","inputSize","buttonSize","indexOf","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/Number/Number.tsx"],"sourcesContent":["import React, { useContext, useMemo, useCallback } from 'react'\nimport { JSONSchema7 } from 'json-schema'\nimport { InputMasked, HelpButton, Button } from '../../../../components'\nimport { InputMaskedProps } from '../../../../components/InputMasked'\nimport type { InputAlign, InputSize } from '../../../../components/Input'\nimport SharedContext from '../../../../shared/Context'\nimport classnames from 'classnames'\nimport FieldBlock from '../../FieldBlock'\nimport { useDataValue } from '../../hooks'\nimport { FieldProps, FieldHelpProps } from '../../types'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { ButtonProps, ButtonSize } from '../../../../components/Button'\nimport { clamp } from '../../../../components/slider/SliderHelpers'\n\ninterface ErrorMessages {\n required?: string\n schema?: string\n minimum?: string\n maximum?: string\n exclusiveMinimum?: string\n exclusiveMaximum?: string\n multipleOf?: string\n}\n\nexport type Props = FieldHelpProps &\n FieldProps<number, undefined, ErrorMessages> & {\n inputClassName?: string\n currency?: InputMaskedProps['as_currency']\n percent?: InputMaskedProps['as_percent']\n mask?: InputMaskedProps['mask']\n step?: number\n // Formatting\n thousandSeparator?: string | true\n decimalSymbol?: string\n decimalLimit?: number\n prefix?: string\n suffix?: string\n // Validation\n minimum?: number // aka greater than or equal to\n maximum?: number // aka less than or equal to\n exclusiveMinimum?: number // aka greater than\n exclusiveMaximum?: number // aka less than\n multipleOf?: number\n // Styling\n size?: InputSize\n width?: false | 'small' | 'medium' | 'large' | 'stretch'\n align?: InputAlign\n showStepControls?: boolean\n }\n\nfunction NumberComponent(props: Props) {\n const sharedContext = useContext(SharedContext)\n const tr = sharedContext?.translation.Forms\n\n const {\n currency,\n percent,\n mask,\n step = 1,\n thousandSeparator,\n decimalSymbol,\n decimalLimit = 12,\n prefix,\n suffix,\n showStepControls,\n } = props\n\n const errorMessages = useMemo(\n () => ({\n required: tr.inputErrorRequired,\n minimum: tr.numberFieldErrorMinimum,\n maximum: tr.numberFieldErrorMaximum,\n exclusiveMinimum: tr.numberFieldErrorExclusiveMinimum,\n exclusiveMaximum: tr.numberFieldErrorExclusiveMaximum,\n multipleOf: tr.numberFieldErrorMultipleOf,\n ...props.errorMessages,\n }),\n [tr, props.errorMessages]\n )\n const schema = useMemo<JSONSchema7>(\n () =>\n props.schema ?? {\n type: 'number',\n minimum: props.minimum,\n maximum: props.maximum,\n exclusiveMinimum: props.exclusiveMinimum,\n exclusiveMaximum: props.exclusiveMaximum,\n multipleOf: props.multipleOf,\n },\n [\n props.schema,\n props.minimum,\n props.maximum,\n props.exclusiveMinimum,\n props.exclusiveMaximum,\n props.multipleOf,\n ]\n )\n\n const toInput = useCallback((external: number | undefined) => {\n if (external === undefined) {\n return ''\n }\n return external\n }, [])\n const fromInput = useCallback(\n ({ value, numberValue }: { value: string; numberValue: number }) => {\n if (value === '') {\n return props.emptyValue\n }\n return numberValue\n },\n [props.emptyValue]\n )\n const transformValue = useCallback(\n (value: number, currentValue: number) => {\n if (\n value > Number.MAX_SAFE_INTEGER ||\n value < Number.MIN_SAFE_INTEGER\n ) {\n return currentValue\n }\n\n return value\n },\n []\n )\n\n const maskProps: Partial<InputMaskedProps> = useMemo(() => {\n if (currency) {\n return {\n as_currency: currency,\n }\n }\n if (percent) {\n return {\n as_percent: percent,\n }\n }\n // Custom mask based on props\n return {\n as_number: true,\n mask,\n number_mask: {\n decimalLimit,\n decimalSymbol,\n includeThousandsSeparator: thousandSeparator !== undefined,\n thousandsSeparatorSymbol:\n thousandSeparator === true ? ' ' : thousandSeparator,\n prefix,\n suffix,\n },\n }\n }, [\n currency,\n percent,\n mask,\n decimalLimit,\n decimalSymbol,\n thousandSeparator,\n prefix,\n suffix,\n ])\n\n const preparedProps: Props = {\n ...props,\n errorMessages,\n schema,\n toInput,\n fromInput,\n transformValue,\n size:\n props.size !== 'small' && props.size !== 'large'\n ? 'medium'\n : props.size,\n width: props.width ?? 'medium',\n }\n\n const {\n id,\n name,\n className,\n autoComplete,\n inputClassName,\n layout,\n placeholder,\n label,\n labelDescription,\n labelSecondary,\n value,\n minimum = Number.MIN_SAFE_INTEGER,\n maximum = Number.MAX_SAFE_INTEGER,\n disabled,\n info,\n warning,\n error,\n help,\n size,\n width,\n align,\n handleFocus,\n handleBlur,\n handleChange,\n } = useDataValue(preparedProps)\n\n const onKeyDownHandler = useCallback(\n ({ key, event }) => {\n if (!showStepControls) {\n return\n }\n\n let numberValue = null\n\n switch (key) {\n case 'ArrowUp':\n numberValue = clamp((value as number) + step, minimum, maximum)\n break\n case 'ArrowDown':\n numberValue = clamp((value as number) - step, minimum, maximum)\n break\n }\n\n if (numberValue !== null) {\n event.persist()\n event.preventDefault()\n handleChange({ numberValue })\n }\n },\n [handleChange, maximum, minimum, showStepControls, step, value]\n )\n\n const fieldBlockProps = {\n className: classnames('dnb-forms-field-number', className),\n contentClassName: classnames(\n 'dnb-forms-field-number__contents',\n showStepControls && 'dnb-forms-field-number__contents--has-controls',\n disabled && 'dnb-forms-field-number__contents--is-disabled',\n error && 'dnb-forms-field-number__contents--has-error'\n ),\n forId: id,\n layout,\n label,\n labelDescription,\n labelSecondary,\n info,\n warning,\n error,\n disabled,\n width: width === 'stretch' ? width : undefined,\n contentsWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\n\n const increaseProps: ButtonProps = showStepControls && {\n 'aria-hidden': true,\n className: 'dnb-button--control-after',\n variant: 'secondary',\n icon: 'add',\n size: convertInputSizeToButtonSize(size),\n tabIndex: -1,\n disabled: disabled || value >= maximum,\n onClick: () => {\n handleChange({\n numberValue: clamp((value as number) + step, minimum, maximum),\n })\n },\n title: sharedContext?.translation.Slider.addTitle?.replace(\n '%s',\n String(value + step)\n ),\n }\n\n const decreaseProps: ButtonProps = showStepControls && {\n ...increaseProps,\n className: 'dnb-button--control-before',\n icon: 'subtract',\n disabled: disabled || value <= minimum,\n onClick: () => {\n handleChange({\n numberValue: clamp((value as number) - step, minimum, maximum),\n })\n },\n title: sharedContext?.translation.Slider.subtractTitle?.replace(\n '%s',\n String(value - step)\n ),\n }\n\n const ariaParams = showStepControls && {\n role: 'spinbutton',\n 'aria-valuemin': String(minimum),\n 'aria-valuemax': String(maximum),\n 'aria-valuenow': String(value), // without it, VO will read an invlaid value\n 'aria-valuetext': String(value), // without it, VO will read %\n }\n\n const inputProps = {\n id,\n name,\n autoComplete,\n className: classnames(\n 'dnb-forms-field-number__input',\n `dnb-input--${size}`,\n inputClassName\n ),\n step,\n placeholder,\n value,\n align: showStepControls ? 'center' : align,\n ...maskProps,\n onKeyDown: onKeyDownHandler,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onChange: handleChange,\n disabled,\n status: error ? 'error' : undefined,\n stretch: width !== undefined,\n suffix:\n help && !showStepControls ? (\n <HelpButton title={help.title}>{help.contents}</HelpButton>\n ) : undefined,\n ...ariaParams,\n }\n\n return (\n <FieldBlock {...fieldBlockProps} asFieldset={false}>\n {showStepControls && <Button {...decreaseProps} />}\n <InputMasked {...inputProps} />\n {showStepControls && <Button {...increaseProps} />}\n {help && showStepControls && (\n <HelpButton title={help.title}>{help.contents}</HelpButton>\n )}\n </FieldBlock>\n )\n}\n\nconst convertInputSizeToButtonSize = (\n inputSize: InputSize\n): ButtonSize => {\n const buttonSize =\n ['small', 'medium', 'large'].indexOf(inputSize as string) > -1\n ? inputSize\n : 'medium'\n return buttonSize as ButtonSize\n}\n\nNumberComponent._supportsSpacingProps = true\nexport default NumberComponent\n"],"mappings":"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"}