@dnb/eufemia 10.70.0 → 10.71.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 (478) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/cjs/components/autocomplete/AutocompleteDocs.js +3 -3
  3. package/cjs/components/autocomplete/AutocompleteDocs.js.map +1 -1
  4. package/cjs/components/avatar/Avatar.js +3 -8
  5. package/cjs/components/avatar/Avatar.js.map +1 -1
  6. package/cjs/components/checkbox/CheckboxDocs.js +2 -2
  7. package/cjs/components/checkbox/CheckboxDocs.js.map +1 -1
  8. package/cjs/components/date-picker/DatePickerContext.d.ts +0 -1
  9. package/cjs/components/date-picker/DatePickerContext.js.map +1 -1
  10. package/cjs/components/date-picker/DatePickerDocs.js +1 -1
  11. package/cjs/components/date-picker/DatePickerDocs.js.map +1 -1
  12. package/cjs/components/date-picker/DatePickerInput.js +110 -136
  13. package/cjs/components/date-picker/DatePickerInput.js.map +1 -1
  14. package/cjs/components/date-picker/DatePickerProvider.js +0 -2
  15. package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
  16. package/cjs/components/date-picker/hooks/useDates.d.ts +0 -2
  17. package/cjs/components/date-picker/hooks/useDates.js +5 -5
  18. package/cjs/components/date-picker/hooks/useDates.js.map +1 -1
  19. package/cjs/components/date-picker/style/dnb-date-picker.css +4 -0
  20. package/cjs/components/date-picker/style/dnb-date-picker.min.css +1 -1
  21. package/cjs/components/date-picker/style/dnb-date-picker.scss +3 -0
  22. package/cjs/components/dialog/DialogDocs.js +7 -2
  23. package/cjs/components/dialog/DialogDocs.js.map +1 -1
  24. package/cjs/components/dropdown/Dropdown.d.ts +20 -20
  25. package/cjs/components/dropdown/DropdownDocs.d.ts +1 -0
  26. package/cjs/components/dropdown/DropdownDocs.js +158 -1
  27. package/cjs/components/dropdown/DropdownDocs.js.map +1 -1
  28. package/cjs/components/flex/ContainerDocs.js +1 -1
  29. package/cjs/components/flex/ContainerDocs.js.map +1 -1
  30. package/cjs/components/flex/ItemDocs.d.ts +2 -0
  31. package/cjs/components/flex/ItemDocs.js +39 -0
  32. package/cjs/components/flex/ItemDocs.js.map +1 -0
  33. package/cjs/components/grid/ItemDocs.d.ts +2 -0
  34. package/cjs/components/grid/ItemDocs.js +19 -0
  35. package/cjs/components/grid/ItemDocs.js.map +1 -0
  36. package/cjs/components/input/InputDocs.js +3 -3
  37. package/cjs/components/input/InputDocs.js.map +1 -1
  38. package/cjs/components/input-masked/InputMasked.d.ts +0 -3
  39. package/cjs/components/input-masked/InputMaskedDocs.d.ts +1 -0
  40. package/cjs/components/input-masked/InputMaskedDocs.js +58 -1
  41. package/cjs/components/input-masked/InputMaskedDocs.js.map +1 -1
  42. package/cjs/components/input-masked/InputMaskedHooks.js +11 -7
  43. package/cjs/components/input-masked/InputMaskedHooks.js.map +1 -1
  44. package/cjs/components/input-masked/InputMaskedUtils.d.ts +1 -1
  45. package/cjs/components/input-masked/InputMaskedUtils.js +2 -1
  46. package/cjs/components/input-masked/InputMaskedUtils.js.map +1 -1
  47. package/cjs/components/input-masked/MultiInputMaskedDocs.d.ts +2 -0
  48. package/cjs/components/input-masked/MultiInputMaskedDocs.js +70 -1
  49. package/cjs/components/input-masked/MultiInputMaskedDocs.js.map +1 -1
  50. package/cjs/components/input-masked/style/dnb-input-masked.css +9 -0
  51. package/cjs/components/input-masked/style/dnb-input-masked.min.css +1 -1
  52. package/cjs/components/input-masked/style/dnb-input-masked.scss +12 -0
  53. package/cjs/components/input-masked/text-mask/InputModeNumber.d.ts +8 -0
  54. package/cjs/components/input-masked/text-mask/InputModeNumber.js +32 -9
  55. package/cjs/components/input-masked/text-mask/InputModeNumber.js.map +1 -1
  56. package/cjs/components/input-masked/text-mask/adjustCaretPosition.d.ts +2 -1
  57. package/cjs/components/input-masked/text-mask/adjustCaretPosition.js +3 -2
  58. package/cjs/components/input-masked/text-mask/adjustCaretPosition.js.map +1 -1
  59. package/cjs/components/input-masked/text-mask/createTextMaskInputElement.js +9 -3
  60. package/cjs/components/input-masked/text-mask/createTextMaskInputElement.js.map +1 -1
  61. package/cjs/components/modal/ModalDocs.d.ts +5 -0
  62. package/cjs/components/modal/ModalDocs.js +201 -0
  63. package/cjs/components/modal/ModalDocs.js.map +1 -0
  64. package/cjs/components/radio/RadioDocs.js +2 -2
  65. package/cjs/components/radio/RadioDocs.js.map +1 -1
  66. package/cjs/components/section/Section.js +2 -7
  67. package/cjs/components/section/Section.js.map +1 -1
  68. package/cjs/components/section/SectionDocs.js +1 -1
  69. package/cjs/components/section/SectionDocs.js.map +1 -1
  70. package/cjs/components/slider/SliderDocs.js +2 -2
  71. package/cjs/components/slider/SliderDocs.js.map +1 -1
  72. package/cjs/components/space/SpaceDocs.d.ts +3 -0
  73. package/cjs/components/space/SpaceDocs.js +61 -0
  74. package/cjs/components/space/SpaceDocs.js.map +1 -0
  75. package/cjs/components/switch/SwitchDocs.js +2 -2
  76. package/cjs/components/switch/SwitchDocs.js.map +1 -1
  77. package/cjs/components/textarea/TextareaDocs.js +3 -3
  78. package/cjs/components/textarea/TextareaDocs.js.map +1 -1
  79. package/cjs/components/toggle-button/ToggleButtonGroupDocs.js +1 -1
  80. package/cjs/components/toggle-button/ToggleButtonGroupDocs.js.map +1 -1
  81. package/cjs/components/tooltip/TooltipDocs.js +1 -1
  82. package/cjs/components/tooltip/TooltipDocs.js.map +1 -1
  83. package/cjs/components/upload/Upload.js +6 -3
  84. package/cjs/components/upload/Upload.js.map +1 -1
  85. package/cjs/components/upload/UploadDocs.d.ts +1 -0
  86. package/cjs/components/upload/UploadDocs.js +43 -1
  87. package/cjs/components/upload/UploadDocs.js.map +1 -1
  88. package/cjs/components/upload/UploadFileListCell.js +32 -12
  89. package/cjs/components/upload/UploadFileListCell.js.map +1 -1
  90. package/cjs/components/upload/types.d.ts +7 -0
  91. package/cjs/components/upload/types.js.map +1 -1
  92. package/cjs/extensions/forms/DataContext/At/AtDocs.d.ts +2 -0
  93. package/cjs/extensions/forms/DataContext/At/AtDocs.js +24 -0
  94. package/cjs/extensions/forms/DataContext/At/AtDocs.js.map +1 -0
  95. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
  96. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  97. package/cjs/extensions/forms/Field/Number/Number.js +3 -6
  98. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  99. package/cjs/extensions/forms/Field/Password/PasswordDocs.d.ts +1 -0
  100. package/cjs/extensions/forms/Field/Password/PasswordDocs.js +14 -2
  101. package/cjs/extensions/forms/Field/Password/PasswordDocs.js.map +1 -1
  102. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +6 -4
  103. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +33 -25
  104. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  105. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.d.ts +2 -2
  106. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js +8 -3
  107. package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js.map +1 -1
  108. package/cjs/extensions/forms/Field/Provider/useFieldProvider.d.ts +3 -3
  109. package/cjs/extensions/forms/Field/String/StringDocs.js +1 -1
  110. package/cjs/extensions/forms/Field/String/StringDocs.js.map +1 -1
  111. package/cjs/extensions/forms/Field/Upload/Upload.d.ts +1 -1
  112. package/cjs/extensions/forms/Field/Upload/Upload.js +3 -1
  113. package/cjs/extensions/forms/Field/Upload/Upload.js.map +1 -1
  114. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +11 -4
  115. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  116. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.d.ts +1 -1
  117. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  118. package/cjs/extensions/forms/Form/ButtonRow/ButtonRowDocs.d.ts +2 -0
  119. package/cjs/extensions/forms/Form/ButtonRow/ButtonRowDocs.js +19 -0
  120. package/cjs/extensions/forms/Form/ButtonRow/ButtonRowDocs.js.map +1 -0
  121. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js +1 -1
  122. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  123. package/cjs/extensions/forms/Wizard/Buttons/ButtonsDocs.d.ts +2 -0
  124. package/cjs/extensions/forms/Wizard/Buttons/ButtonsDocs.js +14 -0
  125. package/cjs/extensions/forms/Wizard/Buttons/ButtonsDocs.js.map +1 -0
  126. package/cjs/extensions/forms/hooks/DataValueWritePropsDocs.js +1 -1
  127. package/cjs/extensions/forms/hooks/DataValueWritePropsDocs.js.map +1 -1
  128. package/cjs/extensions/forms/hooks/useFieldProps.js +55 -18
  129. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  130. package/cjs/extensions/forms/types.d.ts +8 -5
  131. package/cjs/extensions/forms/types.js.map +1 -1
  132. package/cjs/extensions/forms/utils/FormError.d.ts +20 -16
  133. package/cjs/extensions/forms/utils/FormError.js.map +1 -1
  134. package/cjs/shared/Eufemia.d.ts +1 -1
  135. package/cjs/shared/Eufemia.js +2 -2
  136. package/cjs/shared/Eufemia.js.map +1 -1
  137. package/cjs/shared/helpers.d.ts +1 -0
  138. package/cjs/shared/helpers.js +7 -0
  139. package/cjs/shared/helpers.js.map +1 -1
  140. package/cjs/shared/locales/sv-SE.js +2 -2
  141. package/cjs/shared/locales/sv-SE.js.map +1 -1
  142. package/cjs/style/core/scopes.scss +1 -1
  143. package/cjs/style/dnb-ui-basis.css +1 -1
  144. package/cjs/style/dnb-ui-basis.min.css +1 -1
  145. package/cjs/style/dnb-ui-body.css +1 -1
  146. package/cjs/style/dnb-ui-body.min.css +1 -1
  147. package/cjs/style/dnb-ui-components.css +13 -0
  148. package/cjs/style/dnb-ui-components.min.css +1 -1
  149. package/cjs/style/dnb-ui-core.css +1 -1
  150. package/cjs/style/dnb-ui-core.min.css +1 -1
  151. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +13 -0
  152. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  153. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +13 -0
  154. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  155. package/cjs/style/themes/theme-ui/ui-theme-components.css +13 -0
  156. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  157. package/components/autocomplete/AutocompleteDocs.js +3 -3
  158. package/components/autocomplete/AutocompleteDocs.js.map +1 -1
  159. package/components/avatar/Avatar.js +1 -6
  160. package/components/avatar/Avatar.js.map +1 -1
  161. package/components/checkbox/CheckboxDocs.js +2 -2
  162. package/components/checkbox/CheckboxDocs.js.map +1 -1
  163. package/components/date-picker/DatePickerContext.d.ts +0 -1
  164. package/components/date-picker/DatePickerContext.js.map +1 -1
  165. package/components/date-picker/DatePickerDocs.js +1 -1
  166. package/components/date-picker/DatePickerDocs.js.map +1 -1
  167. package/components/date-picker/DatePickerInput.js +111 -137
  168. package/components/date-picker/DatePickerInput.js.map +1 -1
  169. package/components/date-picker/DatePickerProvider.js +0 -2
  170. package/components/date-picker/DatePickerProvider.js.map +1 -1
  171. package/components/date-picker/hooks/useDates.d.ts +0 -2
  172. package/components/date-picker/hooks/useDates.js +3 -5
  173. package/components/date-picker/hooks/useDates.js.map +1 -1
  174. package/components/date-picker/style/dnb-date-picker.css +4 -0
  175. package/components/date-picker/style/dnb-date-picker.min.css +1 -1
  176. package/components/date-picker/style/dnb-date-picker.scss +3 -0
  177. package/components/dialog/DialogDocs.js +7 -2
  178. package/components/dialog/DialogDocs.js.map +1 -1
  179. package/components/dropdown/Dropdown.d.ts +20 -20
  180. package/components/dropdown/DropdownDocs.d.ts +1 -0
  181. package/components/dropdown/DropdownDocs.js +157 -0
  182. package/components/dropdown/DropdownDocs.js.map +1 -1
  183. package/components/flex/ContainerDocs.js +1 -1
  184. package/components/flex/ContainerDocs.js.map +1 -1
  185. package/components/flex/ItemDocs.d.ts +2 -0
  186. package/components/flex/ItemDocs.js +33 -0
  187. package/components/flex/ItemDocs.js.map +1 -0
  188. package/components/grid/ItemDocs.d.ts +2 -0
  189. package/components/grid/ItemDocs.js +13 -0
  190. package/components/grid/ItemDocs.js.map +1 -0
  191. package/components/input/InputDocs.js +3 -3
  192. package/components/input/InputDocs.js.map +1 -1
  193. package/components/input-masked/InputMasked.d.ts +0 -3
  194. package/components/input-masked/InputMaskedDocs.d.ts +1 -0
  195. package/components/input-masked/InputMaskedDocs.js +57 -0
  196. package/components/input-masked/InputMaskedDocs.js.map +1 -1
  197. package/components/input-masked/InputMaskedHooks.js +11 -7
  198. package/components/input-masked/InputMaskedHooks.js.map +1 -1
  199. package/components/input-masked/InputMaskedUtils.d.ts +1 -1
  200. package/components/input-masked/InputMaskedUtils.js +2 -1
  201. package/components/input-masked/InputMaskedUtils.js.map +1 -1
  202. package/components/input-masked/MultiInputMaskedDocs.d.ts +2 -0
  203. package/components/input-masked/MultiInputMaskedDocs.js +69 -0
  204. package/components/input-masked/MultiInputMaskedDocs.js.map +1 -1
  205. package/components/input-masked/style/dnb-input-masked.css +9 -0
  206. package/components/input-masked/style/dnb-input-masked.min.css +1 -1
  207. package/components/input-masked/style/dnb-input-masked.scss +12 -0
  208. package/components/input-masked/text-mask/InputModeNumber.d.ts +8 -0
  209. package/components/input-masked/text-mask/InputModeNumber.js +32 -9
  210. package/components/input-masked/text-mask/InputModeNumber.js.map +1 -1
  211. package/components/input-masked/text-mask/adjustCaretPosition.d.ts +2 -1
  212. package/components/input-masked/text-mask/adjustCaretPosition.js +3 -2
  213. package/components/input-masked/text-mask/adjustCaretPosition.js.map +1 -1
  214. package/components/input-masked/text-mask/createTextMaskInputElement.js +9 -3
  215. package/components/input-masked/text-mask/createTextMaskInputElement.js.map +1 -1
  216. package/components/modal/ModalDocs.d.ts +5 -0
  217. package/components/modal/ModalDocs.js +195 -0
  218. package/components/modal/ModalDocs.js.map +1 -0
  219. package/components/radio/RadioDocs.js +2 -2
  220. package/components/radio/RadioDocs.js.map +1 -1
  221. package/components/section/Section.js +1 -6
  222. package/components/section/Section.js.map +1 -1
  223. package/components/section/SectionDocs.js +1 -1
  224. package/components/section/SectionDocs.js.map +1 -1
  225. package/components/slider/SliderDocs.js +2 -2
  226. package/components/slider/SliderDocs.js.map +1 -1
  227. package/components/space/SpaceDocs.d.ts +3 -0
  228. package/components/space/SpaceDocs.js +55 -0
  229. package/components/space/SpaceDocs.js.map +1 -0
  230. package/components/switch/SwitchDocs.js +2 -2
  231. package/components/switch/SwitchDocs.js.map +1 -1
  232. package/components/textarea/TextareaDocs.js +3 -3
  233. package/components/textarea/TextareaDocs.js.map +1 -1
  234. package/components/toggle-button/ToggleButtonGroupDocs.js +1 -1
  235. package/components/toggle-button/ToggleButtonGroupDocs.js.map +1 -1
  236. package/components/tooltip/TooltipDocs.js +1 -1
  237. package/components/tooltip/TooltipDocs.js.map +1 -1
  238. package/components/upload/Upload.js +6 -3
  239. package/components/upload/Upload.js.map +1 -1
  240. package/components/upload/UploadDocs.d.ts +1 -0
  241. package/components/upload/UploadDocs.js +42 -0
  242. package/components/upload/UploadDocs.js.map +1 -1
  243. package/components/upload/UploadFileListCell.js +32 -12
  244. package/components/upload/UploadFileListCell.js.map +1 -1
  245. package/components/upload/types.d.ts +7 -0
  246. package/components/upload/types.js.map +1 -1
  247. package/es/components/autocomplete/AutocompleteDocs.js +3 -3
  248. package/es/components/autocomplete/AutocompleteDocs.js.map +1 -1
  249. package/es/components/avatar/Avatar.js +1 -6
  250. package/es/components/avatar/Avatar.js.map +1 -1
  251. package/es/components/checkbox/CheckboxDocs.js +2 -2
  252. package/es/components/checkbox/CheckboxDocs.js.map +1 -1
  253. package/es/components/date-picker/DatePickerContext.d.ts +0 -1
  254. package/es/components/date-picker/DatePickerContext.js.map +1 -1
  255. package/es/components/date-picker/DatePickerDocs.js +1 -1
  256. package/es/components/date-picker/DatePickerDocs.js.map +1 -1
  257. package/es/components/date-picker/DatePickerInput.js +103 -130
  258. package/es/components/date-picker/DatePickerInput.js.map +1 -1
  259. package/es/components/date-picker/DatePickerProvider.js +0 -2
  260. package/es/components/date-picker/DatePickerProvider.js.map +1 -1
  261. package/es/components/date-picker/hooks/useDates.d.ts +0 -2
  262. package/es/components/date-picker/hooks/useDates.js +3 -5
  263. package/es/components/date-picker/hooks/useDates.js.map +1 -1
  264. package/es/components/date-picker/style/dnb-date-picker.css +4 -0
  265. package/es/components/date-picker/style/dnb-date-picker.min.css +1 -1
  266. package/es/components/date-picker/style/dnb-date-picker.scss +3 -0
  267. package/es/components/dialog/DialogDocs.js +7 -2
  268. package/es/components/dialog/DialogDocs.js.map +1 -1
  269. package/es/components/dropdown/Dropdown.d.ts +20 -20
  270. package/es/components/dropdown/DropdownDocs.d.ts +1 -0
  271. package/es/components/dropdown/DropdownDocs.js +157 -0
  272. package/es/components/dropdown/DropdownDocs.js.map +1 -1
  273. package/es/components/flex/ContainerDocs.js +1 -1
  274. package/es/components/flex/ContainerDocs.js.map +1 -1
  275. package/es/components/flex/ItemDocs.d.ts +2 -0
  276. package/es/components/flex/ItemDocs.js +33 -0
  277. package/es/components/flex/ItemDocs.js.map +1 -0
  278. package/es/components/grid/ItemDocs.d.ts +2 -0
  279. package/es/components/grid/ItemDocs.js +13 -0
  280. package/es/components/grid/ItemDocs.js.map +1 -0
  281. package/es/components/input/InputDocs.js +3 -3
  282. package/es/components/input/InputDocs.js.map +1 -1
  283. package/es/components/input-masked/InputMasked.d.ts +0 -3
  284. package/es/components/input-masked/InputMaskedDocs.d.ts +1 -0
  285. package/es/components/input-masked/InputMaskedDocs.js +57 -0
  286. package/es/components/input-masked/InputMaskedDocs.js.map +1 -1
  287. package/es/components/input-masked/InputMaskedHooks.js +11 -7
  288. package/es/components/input-masked/InputMaskedHooks.js.map +1 -1
  289. package/es/components/input-masked/InputMaskedUtils.d.ts +1 -1
  290. package/es/components/input-masked/InputMaskedUtils.js +2 -1
  291. package/es/components/input-masked/InputMaskedUtils.js.map +1 -1
  292. package/es/components/input-masked/MultiInputMaskedDocs.d.ts +2 -0
  293. package/es/components/input-masked/MultiInputMaskedDocs.js +69 -0
  294. package/es/components/input-masked/MultiInputMaskedDocs.js.map +1 -1
  295. package/es/components/input-masked/style/dnb-input-masked.css +9 -0
  296. package/es/components/input-masked/style/dnb-input-masked.min.css +1 -1
  297. package/es/components/input-masked/style/dnb-input-masked.scss +12 -0
  298. package/es/components/input-masked/text-mask/InputModeNumber.d.ts +8 -0
  299. package/es/components/input-masked/text-mask/InputModeNumber.js +39 -9
  300. package/es/components/input-masked/text-mask/InputModeNumber.js.map +1 -1
  301. package/es/components/input-masked/text-mask/adjustCaretPosition.d.ts +2 -1
  302. package/es/components/input-masked/text-mask/adjustCaretPosition.js +3 -2
  303. package/es/components/input-masked/text-mask/adjustCaretPosition.js.map +1 -1
  304. package/es/components/input-masked/text-mask/createTextMaskInputElement.js +9 -3
  305. package/es/components/input-masked/text-mask/createTextMaskInputElement.js.map +1 -1
  306. package/es/components/modal/ModalDocs.d.ts +5 -0
  307. package/es/components/modal/ModalDocs.js +191 -0
  308. package/es/components/modal/ModalDocs.js.map +1 -0
  309. package/es/components/radio/RadioDocs.js +2 -2
  310. package/es/components/radio/RadioDocs.js.map +1 -1
  311. package/es/components/section/Section.js +1 -6
  312. package/es/components/section/Section.js.map +1 -1
  313. package/es/components/section/SectionDocs.js +1 -1
  314. package/es/components/section/SectionDocs.js.map +1 -1
  315. package/es/components/slider/SliderDocs.js +2 -2
  316. package/es/components/slider/SliderDocs.js.map +1 -1
  317. package/es/components/space/SpaceDocs.d.ts +3 -0
  318. package/es/components/space/SpaceDocs.js +55 -0
  319. package/es/components/space/SpaceDocs.js.map +1 -0
  320. package/es/components/switch/SwitchDocs.js +2 -2
  321. package/es/components/switch/SwitchDocs.js.map +1 -1
  322. package/es/components/textarea/TextareaDocs.js +3 -3
  323. package/es/components/textarea/TextareaDocs.js.map +1 -1
  324. package/es/components/toggle-button/ToggleButtonGroupDocs.js +1 -1
  325. package/es/components/toggle-button/ToggleButtonGroupDocs.js.map +1 -1
  326. package/es/components/tooltip/TooltipDocs.js +1 -1
  327. package/es/components/tooltip/TooltipDocs.js.map +1 -1
  328. package/es/components/upload/Upload.js +6 -3
  329. package/es/components/upload/Upload.js.map +1 -1
  330. package/es/components/upload/UploadDocs.d.ts +1 -0
  331. package/es/components/upload/UploadDocs.js +42 -0
  332. package/es/components/upload/UploadDocs.js.map +1 -1
  333. package/es/components/upload/UploadFileListCell.js +32 -12
  334. package/es/components/upload/UploadFileListCell.js.map +1 -1
  335. package/es/components/upload/types.d.ts +7 -0
  336. package/es/components/upload/types.js.map +1 -1
  337. package/es/extensions/forms/DataContext/At/AtDocs.d.ts +2 -0
  338. package/es/extensions/forms/DataContext/At/AtDocs.js +18 -0
  339. package/es/extensions/forms/DataContext/At/AtDocs.js.map +1 -0
  340. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
  341. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  342. package/es/extensions/forms/Field/Number/Number.js +3 -6
  343. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  344. package/es/extensions/forms/Field/Password/PasswordDocs.d.ts +1 -0
  345. package/es/extensions/forms/Field/Password/PasswordDocs.js +13 -1
  346. package/es/extensions/forms/Field/Password/PasswordDocs.js.map +1 -1
  347. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +6 -4
  348. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +24 -16
  349. package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  350. package/es/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.d.ts +2 -2
  351. package/es/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js +7 -2
  352. package/es/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js.map +1 -1
  353. package/es/extensions/forms/Field/Provider/useFieldProvider.d.ts +3 -3
  354. package/es/extensions/forms/Field/String/StringDocs.js +1 -1
  355. package/es/extensions/forms/Field/String/StringDocs.js.map +1 -1
  356. package/es/extensions/forms/Field/Upload/Upload.d.ts +1 -1
  357. package/es/extensions/forms/Field/Upload/Upload.js +3 -1
  358. package/es/extensions/forms/Field/Upload/Upload.js.map +1 -1
  359. package/es/extensions/forms/FieldBlock/FieldBlock.js +11 -4
  360. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  361. package/es/extensions/forms/FieldBlock/FieldBlockContext.d.ts +1 -1
  362. package/es/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  363. package/es/extensions/forms/Form/ButtonRow/ButtonRowDocs.d.ts +2 -0
  364. package/es/extensions/forms/Form/ButtonRow/ButtonRowDocs.js +13 -0
  365. package/es/extensions/forms/Form/ButtonRow/ButtonRowDocs.js.map +1 -0
  366. package/es/extensions/forms/Form/Isolation/IsolationDocs.js +1 -1
  367. package/es/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  368. package/es/extensions/forms/Wizard/Buttons/ButtonsDocs.d.ts +2 -0
  369. package/es/extensions/forms/Wizard/Buttons/ButtonsDocs.js +8 -0
  370. package/es/extensions/forms/Wizard/Buttons/ButtonsDocs.js.map +1 -0
  371. package/es/extensions/forms/hooks/DataValueWritePropsDocs.js +1 -1
  372. package/es/extensions/forms/hooks/DataValueWritePropsDocs.js.map +1 -1
  373. package/es/extensions/forms/hooks/useFieldProps.js +56 -19
  374. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  375. package/es/extensions/forms/types.d.ts +8 -5
  376. package/es/extensions/forms/types.js.map +1 -1
  377. package/es/extensions/forms/utils/FormError.d.ts +20 -16
  378. package/es/extensions/forms/utils/FormError.js +1 -0
  379. package/es/extensions/forms/utils/FormError.js.map +1 -1
  380. package/es/shared/Eufemia.d.ts +1 -1
  381. package/es/shared/Eufemia.js +2 -2
  382. package/es/shared/Eufemia.js.map +1 -1
  383. package/es/shared/helpers.d.ts +1 -0
  384. package/es/shared/helpers.js +6 -0
  385. package/es/shared/helpers.js.map +1 -1
  386. package/es/shared/locales/sv-SE.js +2 -2
  387. package/es/shared/locales/sv-SE.js.map +1 -1
  388. package/es/style/core/scopes.scss +1 -1
  389. package/es/style/dnb-ui-basis.css +1 -1
  390. package/es/style/dnb-ui-basis.min.css +1 -1
  391. package/es/style/dnb-ui-body.css +1 -1
  392. package/es/style/dnb-ui-body.min.css +1 -1
  393. package/es/style/dnb-ui-components.css +13 -0
  394. package/es/style/dnb-ui-components.min.css +1 -1
  395. package/es/style/dnb-ui-core.css +1 -1
  396. package/es/style/dnb-ui-core.min.css +1 -1
  397. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +13 -0
  398. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  399. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +13 -0
  400. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  401. package/es/style/themes/theme-ui/ui-theme-components.css +13 -0
  402. package/es/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  403. package/esm/dnb-ui-basis.min.mjs +1 -1
  404. package/esm/dnb-ui-components.min.mjs +1 -1
  405. package/esm/dnb-ui-elements.min.mjs +1 -1
  406. package/esm/dnb-ui-extensions.min.mjs +1 -1
  407. package/esm/dnb-ui-lib.min.mjs +1 -1
  408. package/extensions/forms/DataContext/At/AtDocs.d.ts +2 -0
  409. package/extensions/forms/DataContext/At/AtDocs.js +18 -0
  410. package/extensions/forms/DataContext/At/AtDocs.js.map +1 -0
  411. package/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
  412. package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  413. package/extensions/forms/Field/Number/Number.js +3 -6
  414. package/extensions/forms/Field/Number/Number.js.map +1 -1
  415. package/extensions/forms/Field/Password/PasswordDocs.d.ts +1 -0
  416. package/extensions/forms/Field/Password/PasswordDocs.js +13 -1
  417. package/extensions/forms/Field/Password/PasswordDocs.js.map +1 -1
  418. package/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +6 -4
  419. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +33 -25
  420. package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
  421. package/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.d.ts +2 -2
  422. package/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js +7 -2
  423. package/extensions/forms/Field/PhoneNumber/PhoneNumberDocs.js.map +1 -1
  424. package/extensions/forms/Field/Provider/useFieldProvider.d.ts +3 -3
  425. package/extensions/forms/Field/String/StringDocs.js +1 -1
  426. package/extensions/forms/Field/String/StringDocs.js.map +1 -1
  427. package/extensions/forms/Field/Upload/Upload.d.ts +1 -1
  428. package/extensions/forms/Field/Upload/Upload.js +3 -1
  429. package/extensions/forms/Field/Upload/Upload.js.map +1 -1
  430. package/extensions/forms/FieldBlock/FieldBlock.js +11 -4
  431. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  432. package/extensions/forms/FieldBlock/FieldBlockContext.d.ts +1 -1
  433. package/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  434. package/extensions/forms/Form/ButtonRow/ButtonRowDocs.d.ts +2 -0
  435. package/extensions/forms/Form/ButtonRow/ButtonRowDocs.js +13 -0
  436. package/extensions/forms/Form/ButtonRow/ButtonRowDocs.js.map +1 -0
  437. package/extensions/forms/Form/Isolation/IsolationDocs.js +1 -1
  438. package/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  439. package/extensions/forms/Wizard/Buttons/ButtonsDocs.d.ts +2 -0
  440. package/extensions/forms/Wizard/Buttons/ButtonsDocs.js +8 -0
  441. package/extensions/forms/Wizard/Buttons/ButtonsDocs.js.map +1 -0
  442. package/extensions/forms/hooks/DataValueWritePropsDocs.js +1 -1
  443. package/extensions/forms/hooks/DataValueWritePropsDocs.js.map +1 -1
  444. package/extensions/forms/hooks/useFieldProps.js +56 -19
  445. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  446. package/extensions/forms/types.d.ts +8 -5
  447. package/extensions/forms/types.js.map +1 -1
  448. package/extensions/forms/utils/FormError.d.ts +20 -16
  449. package/extensions/forms/utils/FormError.js.map +1 -1
  450. package/package.json +1 -1
  451. package/shared/Eufemia.d.ts +1 -1
  452. package/shared/Eufemia.js +2 -2
  453. package/shared/Eufemia.js.map +1 -1
  454. package/shared/helpers.d.ts +1 -0
  455. package/shared/helpers.js +6 -0
  456. package/shared/helpers.js.map +1 -1
  457. package/shared/locales/sv-SE.js +2 -2
  458. package/shared/locales/sv-SE.js.map +1 -1
  459. package/style/core/scopes.scss +1 -1
  460. package/style/dnb-ui-basis.css +1 -1
  461. package/style/dnb-ui-basis.min.css +1 -1
  462. package/style/dnb-ui-body.css +1 -1
  463. package/style/dnb-ui-body.min.css +1 -1
  464. package/style/dnb-ui-components.css +13 -0
  465. package/style/dnb-ui-components.min.css +1 -1
  466. package/style/dnb-ui-core.css +1 -1
  467. package/style/dnb-ui-core.min.css +1 -1
  468. package/style/themes/theme-eiendom/eiendom-theme-components.css +13 -0
  469. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +1 -1
  470. package/style/themes/theme-sbanken/sbanken-theme-components.css +13 -0
  471. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +1 -1
  472. package/style/themes/theme-ui/ui-theme-components.css +13 -0
  473. package/style/themes/theme-ui/ui-theme-components.min.css +1 -1
  474. package/umd/dnb-ui-basis.min.js +1 -1
  475. package/umd/dnb-ui-components.min.js +1 -1
  476. package/umd/dnb-ui-elements.min.js +1 -1
  477. package/umd/dnb-ui-extensions.min.js +1 -1
  478. package/umd/dnb-ui-lib.min.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"InputMaskedHooks.js","names":["React","useCallback","classnames","cleanNumber","getCurrencySymbol","isTrue","dispatchCustomElementEvent","extendPropsWithContext","keycode","safeSetSelection","TextMask","createNumberMask","InputMaskedContext","isRequestingLocaleSupport","isRequestingNumberMask","correctNumberValue","handlePercentMask","handleCurrencyMask","handleNumberMask","correctCaretPosition","getSoftKeyboardAttributes","handleThousandsSeparator","handleDecimalSeparator","fromJSON","invisibleSpace","useLayoutEffect","window","useEffect","useFilteredProps","props","useContext","mask","number_mask","currency_mask","number_format","mask_options","as_currency","as_number","as_percent","locale","show_mask","show_guide","pipe","keep_char_positions","placeholder_char","attributes","_objectWithoutProperties","_excluded","htmlAttributes","Object","freeze","useTranslation","context","useLocalValue","maskParams","useNumberMaskParams","localValue","setLocalValue","useState","value","useNumberMask","useMask","numberMask","useMaskParams","placeholder","showMask","placeholderChar","showGuide","keepCharPositions","useInputElement","inner_ref","isFn","refHook","useRef","ref","current","inputElementRef","createElement","params","innerRef","_extends","inputRef","inputElement","guide","className","useEventMapping","callEvent","useCallEvent","onBeforeInput","event","onFocus","onBlur","onMouseUp","onMouseDown","onKeyDown","onSubmit","onChange","on_focus","undefined","on_blur","on_key_down","on_submit","on_change","isNumberMask","decimalSeparators","isUnidentified","name","target","selStart","selectionStart","keyCode","which","data","key","disallowLeadingZeroes","replace","test","testValue","slice","length","preventDefault","decimalSymbol","hasDecimalSymbol","includes","allowedDecimals","decimalLimit","allowDecimal","charAtSelection","index","indexOf","thousandsSeparatorSymbol","num","prefix","suffix","decimalSeparator","thousandsSeparator","numberValue","Number","cleanedValue","String","charAt","runCorrectCaretPosition","__getCorrectCaretPosition","result","_currency_mask","_objectSpread","currency","_currency_mask2","currencyDisplay"],"sources":["../../../../src/components/input-masked/InputMaskedHooks.js"],"sourcesContent":["/**\n * Web InputMasked Component\n *\n */\n\nimport React, { useCallback } from 'react'\nimport classnames from 'classnames'\nimport {\n cleanNumber,\n getCurrencySymbol,\n} from '../number-format/NumberUtils'\nimport {\n isTrue,\n dispatchCustomElementEvent,\n extendPropsWithContext,\n keycode,\n} from '../../shared/component-helper'\nimport { safeSetSelection } from './text-mask/createTextMaskInputElement'\n\nimport TextMask from './TextMask'\nimport createNumberMask from './addons/createNumberMask'\nimport InputMaskedContext from './InputMaskedContext'\n\nimport {\n isRequestingLocaleSupport,\n isRequestingNumberMask,\n correctNumberValue,\n handlePercentMask,\n handleCurrencyMask,\n handleNumberMask,\n correctCaretPosition,\n getSoftKeyboardAttributes,\n handleThousandsSeparator,\n handleDecimalSeparator,\n fromJSON,\n invisibleSpace,\n} from './InputMaskedUtils'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\n/**\n * Takes all component properties and filters out all internal used properties\n *\n * @returns object {props, htmlAttributes}\n */\nexport const useFilteredProps = () => {\n const { props } = React.useContext(InputMaskedContext)\n\n const {\n mask, // eslint-disable-line\n number_mask, // eslint-disable-line\n currency_mask, // eslint-disable-line\n number_format, // eslint-disable-line\n mask_options, // eslint-disable-line\n as_currency, // eslint-disable-line\n as_number, // eslint-disable-line\n as_percent, // eslint-disable-line\n locale, // eslint-disable-line\n show_mask, // eslint-disable-line\n show_guide, // eslint-disable-line\n pipe, // eslint-disable-line\n keep_char_positions, // eslint-disable-line\n placeholder_char, // eslint-disable-line\n\n // Get get rest of possible attributes\n ...attributes\n } = props\n\n return { props, htmlAttributes: Object.freeze(attributes) }\n}\n\n/**\n * Returns locale from either component or context\n *\n * @returns string\n */\nexport const useTranslation = () => {\n const { props, context } = React.useContext(InputMaskedContext)\n\n let { locale } = props\n if (!locale && context?.locale) {\n locale = context.locale\n }\n\n return locale\n}\n\n/**\n * Handle internal value state\n *\n * It handles both the value state given as a prop form outside,\n * along with the current written and internal value.\n *\n * @returns object with internal value state and state setter\n */\nexport const useLocalValue = () => {\n const { props, context } = React.useContext(InputMaskedContext)\n const maskParams = useNumberMaskParams() || {}\n const locale = useTranslation()\n\n const [localValue, setLocalValue] = React.useState(() =>\n correctNumberValue({\n locale,\n props,\n maskParams,\n })\n )\n\n /**\n * Use an effect here, just;\n * because when a property gets changed from outside\n */\n React.useEffect(() => {\n const value = correctNumberValue({\n localValue,\n locale,\n props,\n maskParams,\n })\n\n setLocalValue(value)\n\n // Do not set \"localValue\" and \"maskParams\" here\n }, [props, context, locale]) // eslint-disable-line\n\n return { localValue, setLocalValue }\n}\n\n/**\n * Create createNumberMask if number mask parameters exists\n *\n * @returns mask function\n */\nexport const useNumberMask = () => {\n const maskParams = useNumberMaskParams()\n const { props } = React.useContext(InputMaskedContext)\n\n if (!maskParams || !isRequestingNumberMask(props)) {\n return null\n }\n\n const mask = createNumberMask(maskParams)\n\n mask.maskParams = maskParams\n\n return mask\n}\n\n/**\n * Returns either internal mask or given property mask\n *\n * @returns mask function\n */\nexport const useMask = () => {\n const { props } = React.useContext(InputMaskedContext)\n\n const numberMask = useNumberMask()\n if (numberMask) {\n return numberMask\n }\n\n return props.mask\n}\n\n/**\n * Returns the final mask params\n *\n * @returns mask params\n */\nexport const useMaskParams = () => {\n const { props } = React.useContext(InputMaskedContext)\n\n const {\n keep_char_positions,\n show_guide,\n show_mask,\n placeholder_char,\n placeholder,\n } = props\n\n const mask = useMask()\n const maskParams = useNumberMaskParams() || {}\n\n maskParams.showMask = !placeholder && isTrue(show_mask)\n\n // Revalidated placeholder char to a zero width space\n maskParams.placeholderChar = placeholder_char\n if (typeof mask?.placeholderChar !== 'undefined') {\n maskParams.placeholderChar = mask.placeholderChar\n }\n if (maskParams.placeholderChar === null) {\n maskParams.placeholderChar = invisibleSpace\n }\n\n if (typeof mask?.showMask !== 'undefined') {\n maskParams.showMask = mask.showMask\n }\n\n maskParams.showGuide = isTrue(show_guide)\n maskParams.keepCharPositions = isTrue(keep_char_positions)\n\n return maskParams\n}\n\n/**\n * Handle the TextMask dependency\n *\n * @returns React Element\n */\nexport const useInputElement = () => {\n const { props } = React.useContext(InputMaskedContext)\n const { pipe, inner_ref } = props\n\n const mask = useMask()\n const { showMask, showGuide, placeholderChar, keepCharPositions } =\n useMaskParams()\n\n const isFn = typeof inner_ref === 'function'\n const refHook = React.useRef()\n const ref = (!isFn && inner_ref) || refHook\n\n useLayoutEffect(() => {\n if (isFn) {\n inner_ref?.(ref.current)\n }\n }, [inner_ref, isFn, ref])\n\n // Create the actual input element\n const inputElementRef = React.useRef(<input ref={ref} />)\n\n return useCallback(\n (params, innerRef) => {\n // Set ref for Eufemia input\n innerRef.current = ref.current\n\n return (\n <TextMask\n inputRef={ref}\n inputElement={inputElementRef.current}\n pipe={pipe}\n mask={mask || createNumberMask()}\n showMask={showMask}\n guide={showGuide}\n keepCharPositions={keepCharPositions}\n placeholderChar={placeholderChar}\n {...getSoftKeyboardAttributes(mask)}\n {...params}\n className={classnames(\n params.className,\n showMask &&\n showGuide &&\n placeholderChar &&\n placeholderChar !== invisibleSpace &&\n 'dnb-input-masked--guide' // will use --font-family-monospace\n )}\n />\n )\n },\n [\n keepCharPositions,\n mask,\n pipe,\n placeholderChar,\n ref,\n showGuide,\n showMask,\n ]\n )\n}\n\n/**\n * Will map some events we need to map during typing\n *\n * @param {object} param0\n * @property {function} setLocalValue setState handler\n * @returns object of events to handle\n */\nexport const useEventMapping = ({ setLocalValue }) => {\n const callEvent = useCallEvent({ setLocalValue })\n\n return {\n onBeforeInput: (event) => callEvent({ event }, 'on_before_input'),\n onFocus: (params) => callEvent(params, 'on_focus'),\n onBlur: (params) => callEvent(params, 'on_blur'),\n onMouseUp: (event) => callEvent({ event }, 'on_mouse_up'),\n onMouseDown: (event) => callEvent({ event }, 'on_mouse_down'),\n onKeyDown: (params) => callEvent(params, 'on_key_down'),\n onSubmit: (params) => callEvent(params, 'on_submit'),\n onChange: (params) => callEvent(params, 'on_change'),\n\n on_focus: undefined,\n on_blur: undefined,\n on_key_down: undefined,\n on_submit: undefined,\n on_change: undefined,\n }\n}\n\n/**\n * Will map some events we need to map during typing\n *\n * @param {object} param0\n * @property {function} setLocalValue setState handler\n * @returns event handler function\n */\nconst useCallEvent = ({ setLocalValue }) => {\n const { props } = React.useContext(InputMaskedContext)\n const maskParams = useMaskParams()\n const isNumberMask = useNumberMask()\n\n // Source: https://en.wikipedia.org/wiki/Decimal_separator\n const decimalSeparators = /[,.'·]/\n let isUnidentified = false\n\n const callEvent = ({ event, value }, name) => {\n value = value || event.target.value\n const selStart = event.target.selectionStart\n let keyCode = keycode(event)\n\n // Android issue: https://bugs.chromium.org/p/chromium/issues/detail?id=118639\n if (\n name === 'on_key_down' &&\n (event.which === 229 || keyCode === undefined)\n ) {\n isUnidentified = true\n }\n\n // Android issue: https://bugs.chromium.org/p/chromium/issues/detail?id=118639\n // so we use this solution instead\n if (\n isUnidentified &&\n name === 'on_before_input' &&\n typeof event?.data !== 'undefined'\n ) {\n name = 'on_key_down'\n keyCode = event.data\n isUnidentified = false\n }\n\n // Add support for \"await userEvent.type(input, '0...')\"\n if (isUnidentified && event.key === '0') {\n keyCode = '0'\n isUnidentified = false\n }\n\n // Prevent entering a leading zero\n if (\n name === 'on_key_down' &&\n !isUnidentified &&\n maskParams?.disallowLeadingZeroes &&\n (keyCode === '0' ||\n keyCode === 'numpad 0' ||\n (value.replace(/[^\\d]/g, '') === '' &&\n decimalSeparators.test(keyCode)))\n ) {\n const testValue = (\n value.slice(0, selStart) +\n '0' +\n value.slice(selStart + 1, value.length)\n ).replace(/[^\\d]/g, '')\n\n if (/^0/.test(testValue)) {\n event.preventDefault()\n }\n }\n\n if (\n name === 'on_key_down' &&\n isNumberMask &&\n !isUnidentified &&\n maskParams?.decimalSymbol\n ) {\n const hasDecimalSymbol = value.includes(maskParams.decimalSymbol)\n const allowedDecimals =\n maskParams.decimalLimit > 0 || maskParams.allowDecimal !== false\n\n if (!allowedDecimals && decimalSeparators.test(keyCode)) {\n event.preventDefault()\n }\n\n const charAtSelection = value.slice(selStart, selStart + 1)\n\n if (allowedDecimals) {\n // if we have already a decimal ...\n if (hasDecimalSymbol && decimalSeparators.test(keyCode)) {\n // ... we set the cursor on after the decimalSeparators\n if (decimalSeparators.test(charAtSelection)) {\n const index = value.indexOf(maskParams.decimalSymbol)\n if (index > -1) {\n safeSetSelection(event.target, index + 1)\n }\n }\n\n // ... we do not allow to type another\n event.preventDefault()\n }\n\n // replace other decimal\n else if (\n !hasDecimalSymbol &&\n keyCode !== maskParams.decimalSymbol &&\n decimalSeparators.test(keyCode)\n ) {\n value = value.slice(0, selStart)\n setLocalValue(value + maskParams.decimalSymbol)\n event.target.value = value + maskParams.decimalSymbol\n event.preventDefault()\n }\n }\n\n // move cursor to right if key is delete and char at selection is thousand separator\n if (\n keyCode === 'delete' &&\n charAtSelection === (maskParams.thousandsSeparatorSymbol || ' ')\n ) {\n safeSetSelection(event.target, selStart + 1)\n event.preventDefault()\n }\n }\n\n let num = cleanNumber(value, {\n prefix: maskParams.prefix,\n suffix: maskParams.suffix,\n decimalSeparator: maskParams.decimalSymbol || ',',\n thousandsSeparator: maskParams.thousandsSeparatorSymbol || ' ',\n })\n\n // We don't want to return NaN, so we set it to 0\n if (num === '-') {\n num = -0\n }\n\n const numberValue = Number(num)\n\n // Return '' (empty string) when the user has entered something invalid\n const cleanedValue =\n numberValue === 0 && String(num).charAt(0) !== '0' ? '' : num\n\n switch (name) {\n case 'on_focus':\n case 'on_key_down':\n case 'on_mouse_down':\n case 'on_mouse_up':\n event.target.runCorrectCaretPosition = () =>\n correctCaretPosition(event.target, maskParams, props)\n if (!event.target.__getCorrectCaretPosition) {\n event.target.runCorrectCaretPosition()\n }\n break\n }\n\n const result = dispatchCustomElementEvent(props, name, {\n event,\n value,\n numberValue,\n cleanedValue,\n })\n\n if (name === 'on_change') {\n setLocalValue(value)\n }\n\n return result\n }\n\n return callEvent\n}\n\n/**\n * Returns number mask parameters if requested by the component properties\n *\n * @returns object of number mask parameter\n */\nconst useNumberMaskParams = () => {\n const { props } = React.useContext(InputMaskedContext)\n const locale = useTranslation()\n\n if (!isRequestingNumberMask(props)) {\n return { ...fromJSON(props.mask_options) }\n }\n\n let { number_mask, currency_mask, mask_options } = props\n const { as_number, as_percent, as_currency, value } = props\n\n mask_options = fromJSON(mask_options)\n number_mask = isTrue(number_mask) ? {} : fromJSON(number_mask)\n currency_mask = isTrue(currency_mask)\n ? {}\n : fromJSON(currency_mask, {\n currency: currency_mask,\n })\n if (!currency_mask?.currency) {\n delete currency_mask.currency\n }\n\n if (isRequestingLocaleSupport(props)) {\n const thousandsSeparatorSymbol = handleThousandsSeparator(locale)\n const decimalSymbol = handleDecimalSeparator(locale)\n\n if (isTrue(as_number) || isTrue(as_percent)) {\n number_mask = extendPropsWithContext(number_mask, null, {\n decimalSymbol,\n thousandsSeparatorSymbol,\n })\n } else if (as_currency) {\n currency_mask = extendPropsWithContext(currency_mask, null, {\n decimalSymbol,\n thousandsSeparatorSymbol,\n currency: getCurrencySymbol(\n locale,\n typeof as_currency === 'string' ? as_currency : null,\n currency_mask?.currencyDisplay,\n value\n ),\n })\n }\n }\n\n let maskParams = null\n\n if (number_mask) {\n maskParams = handleNumberMask({\n mask_options,\n number_mask,\n })\n\n if (isTrue(as_percent)) {\n maskParams = handlePercentMask({ props, locale, maskParams })\n }\n } else if (currency_mask) {\n maskParams = handleCurrencyMask({\n mask_options,\n currency_mask,\n })\n }\n\n return maskParams\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"InputMaskedHooks.js","names":["React","useCallback","classnames","cleanNumber","getCurrencySymbol","isTrue","dispatchCustomElementEvent","extendPropsWithContext","keycode","safeSetSelection","TextMask","createNumberMask","InputMaskedContext","isRequestingLocaleSupport","isRequestingNumberMask","correctNumberValue","handlePercentMask","handleCurrencyMask","handleNumberMask","correctCaretPosition","getSoftKeyboardAttributes","handleThousandsSeparator","handleDecimalSeparator","fromJSON","invisibleSpace","useLayoutEffect","window","useEffect","useFilteredProps","props","useContext","mask","number_mask","currency_mask","number_format","mask_options","as_currency","as_number","as_percent","locale","show_mask","show_guide","pipe","keep_char_positions","placeholder_char","attributes","_objectWithoutProperties","_excluded","htmlAttributes","Object","freeze","useTranslation","context","useLocalValue","maskParams","useNumberMaskParams","localValue","setLocalValue","useState","value","useNumberMask","useMask","numberMask","useMaskParams","placeholder","showMask","placeholderChar","showGuide","keepCharPositions","useInputElement","inner_ref","isFn","refHook","useRef","ref","current","inputElementRef","createElement","params","innerRef","_extends","inputRef","inputElement","guide","className","useEventMapping","callEvent","useCallEvent","onBeforeInput","event","onFocus","onBlur","onMouseUp","onMouseDown","onKeyDown","onSubmit","onChange","on_focus","undefined","on_blur","on_key_down","on_submit","on_change","maskParamsRef","isNumberMask","decimalSeparators","isUnidentified","name","target","selStart","selectionStart","keyCode","which","data","key","disallowLeadingZeroes","replace","test","testValue","slice","length","preventDefault","decimalSymbol","hasDecimalSymbol","includes","allowedDecimals","decimalLimit","allowDecimal","charAtSelection","index","indexOf","thousandsSeparatorSymbol","num","prefix","suffix","decimalSeparator","thousandsSeparator","numberValue","Number","cleanedValue","String","charAt","runCorrectCaretPosition","__getCorrectCaretPosition","result","_currency_mask","_objectSpread","currency","_currency_mask2","currencyDisplay"],"sources":["../../../../src/components/input-masked/InputMaskedHooks.js"],"sourcesContent":["/**\n * Web InputMasked Component\n *\n */\n\nimport React, { useCallback } from 'react'\nimport classnames from 'classnames'\nimport {\n cleanNumber,\n getCurrencySymbol,\n} from '../number-format/NumberUtils'\nimport {\n isTrue,\n dispatchCustomElementEvent,\n extendPropsWithContext,\n keycode,\n} from '../../shared/component-helper'\nimport { safeSetSelection } from './text-mask/createTextMaskInputElement'\n\nimport TextMask from './TextMask'\nimport createNumberMask from './addons/createNumberMask'\nimport InputMaskedContext from './InputMaskedContext'\n\nimport {\n isRequestingLocaleSupport,\n isRequestingNumberMask,\n correctNumberValue,\n handlePercentMask,\n handleCurrencyMask,\n handleNumberMask,\n correctCaretPosition,\n getSoftKeyboardAttributes,\n handleThousandsSeparator,\n handleDecimalSeparator,\n fromJSON,\n invisibleSpace,\n} from './InputMaskedUtils'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\n/**\n * Takes all component properties and filters out all internal used properties\n *\n * @returns object {props, htmlAttributes}\n */\nexport const useFilteredProps = () => {\n const { props } = React.useContext(InputMaskedContext)\n\n const {\n mask, // eslint-disable-line\n number_mask, // eslint-disable-line\n currency_mask, // eslint-disable-line\n number_format, // eslint-disable-line\n mask_options, // eslint-disable-line\n as_currency, // eslint-disable-line\n as_number, // eslint-disable-line\n as_percent, // eslint-disable-line\n locale, // eslint-disable-line\n show_mask, // eslint-disable-line\n show_guide, // eslint-disable-line\n pipe, // eslint-disable-line\n keep_char_positions, // eslint-disable-line\n placeholder_char, // eslint-disable-line\n\n // Get get rest of possible attributes\n ...attributes\n } = props\n\n return { props, htmlAttributes: Object.freeze(attributes) }\n}\n\n/**\n * Returns locale from either component or context\n *\n * @returns string\n */\nexport const useTranslation = () => {\n const { props, context } = React.useContext(InputMaskedContext)\n\n let { locale } = props\n if (!locale && context?.locale) {\n locale = context.locale\n }\n\n return locale\n}\n\n/**\n * Handle internal value state\n *\n * It handles both the value state given as a prop form outside,\n * along with the current written and internal value.\n *\n * @returns object with internal value state and state setter\n */\nexport const useLocalValue = () => {\n const { props, context } = React.useContext(InputMaskedContext)\n const maskParams = useNumberMaskParams() || {}\n const locale = useTranslation()\n\n const [localValue, setLocalValue] = React.useState(() => {\n return correctNumberValue({\n locale,\n props,\n maskParams,\n })\n })\n\n /**\n * Use an effect here, just;\n * because when a property gets changed from outside\n */\n React.useEffect(() => {\n const value = correctNumberValue({\n localValue,\n locale,\n props,\n maskParams,\n })\n\n setLocalValue(value)\n\n // Do not set \"localValue\" and \"maskParams\" here\n }, [props, context, locale]) // eslint-disable-line\n\n return { localValue, setLocalValue }\n}\n\n/**\n * Create createNumberMask if number mask parameters exists\n *\n * @returns mask function\n */\nexport const useNumberMask = () => {\n const maskParams = useNumberMaskParams()\n const { props } = React.useContext(InputMaskedContext)\n\n if (!maskParams || !isRequestingNumberMask(props)) {\n return null\n }\n\n const mask = createNumberMask(maskParams)\n\n mask.maskParams = maskParams\n\n return mask\n}\n\n/**\n * Returns either internal mask or given property mask\n *\n * @returns mask function\n */\nexport const useMask = () => {\n const { props } = React.useContext(InputMaskedContext)\n\n const numberMask = useNumberMask()\n if (numberMask) {\n return numberMask\n }\n\n return props.mask\n}\n\n/**\n * Returns the final mask params\n *\n * @returns mask params\n */\nexport const useMaskParams = () => {\n const { props } = React.useContext(InputMaskedContext)\n\n const {\n keep_char_positions,\n show_guide,\n show_mask,\n placeholder_char,\n placeholder,\n } = props\n\n const mask = useMask()\n const maskParams = useNumberMaskParams() || {}\n\n maskParams.showMask = !placeholder && isTrue(show_mask)\n\n // Revalidated placeholder char to a zero width space\n maskParams.placeholderChar = placeholder_char\n if (typeof mask?.placeholderChar !== 'undefined') {\n maskParams.placeholderChar = mask.placeholderChar\n }\n if (maskParams.placeholderChar === null) {\n maskParams.placeholderChar = invisibleSpace\n }\n\n if (typeof mask?.showMask !== 'undefined') {\n maskParams.showMask = mask.showMask\n }\n\n maskParams.showGuide = isTrue(show_guide)\n maskParams.keepCharPositions = isTrue(keep_char_positions)\n\n return maskParams\n}\n\n/**\n * Handle the TextMask dependency\n *\n * @returns React Element\n */\nexport const useInputElement = () => {\n const { props } = React.useContext(InputMaskedContext)\n const { pipe, inner_ref } = props\n\n const mask = useMask()\n const { showMask, showGuide, placeholderChar, keepCharPositions } =\n useMaskParams()\n\n const isFn = typeof inner_ref === 'function'\n const refHook = React.useRef()\n const ref = (!isFn && inner_ref) || refHook\n\n useLayoutEffect(() => {\n if (isFn) {\n inner_ref?.(ref.current)\n }\n }, [inner_ref, isFn, ref])\n\n // Create the actual input element\n const inputElementRef = React.useRef(<input ref={ref} />)\n\n return useCallback(\n (params, innerRef) => {\n // Set ref for Eufemia input\n innerRef.current = ref.current\n\n return (\n <TextMask\n inputRef={ref}\n inputElement={inputElementRef.current}\n pipe={pipe}\n mask={mask || createNumberMask()}\n showMask={showMask}\n guide={showGuide}\n keepCharPositions={keepCharPositions}\n placeholderChar={placeholderChar}\n {...getSoftKeyboardAttributes(mask)}\n {...params}\n className={classnames(\n params.className,\n showMask &&\n showGuide &&\n placeholderChar &&\n placeholderChar !== invisibleSpace &&\n 'dnb-input-masked--guide' // will use --font-family-monospace\n )}\n />\n )\n },\n [\n keepCharPositions,\n mask,\n pipe,\n placeholderChar,\n ref,\n showGuide,\n showMask,\n ]\n )\n}\n\n/**\n * Will map some events we need to map during typing\n *\n * @param {object} param0\n * @property {function} setLocalValue setState handler\n * @returns object of events to handle\n */\nexport const useEventMapping = ({ setLocalValue }) => {\n const callEvent = useCallEvent({ setLocalValue })\n\n return {\n onBeforeInput: (event) => callEvent({ event }, 'on_before_input'),\n onFocus: (params) => callEvent(params, 'on_focus'),\n onBlur: (params) => callEvent(params, 'on_blur'),\n onMouseUp: (event) => callEvent({ event }, 'on_mouse_up'),\n onMouseDown: (event) => callEvent({ event }, 'on_mouse_down'),\n onKeyDown: (params) => callEvent(params, 'on_key_down'),\n onSubmit: (params) => callEvent(params, 'on_submit'),\n onChange: (params) => callEvent(params, 'on_change'),\n\n on_focus: undefined,\n on_blur: undefined,\n on_key_down: undefined,\n on_submit: undefined,\n on_change: undefined,\n }\n}\n\n/**\n * Will map some events we need to map during typing\n *\n * @param {object} param0\n * @property {function} setLocalValue setState handler\n * @returns event handler function\n */\nconst useCallEvent = ({ setLocalValue }) => {\n const maskParamsRef = React.useRef()\n maskParamsRef.current = useMaskParams()\n\n const { props } = React.useContext(InputMaskedContext)\n const isNumberMask = useNumberMask()\n\n // Source: https://en.wikipedia.org/wiki/Decimal_separator\n const decimalSeparators = /[,.'·]/\n let isUnidentified = false\n\n const callEvent = ({ event, value }, name) => {\n const maskParams = maskParamsRef.current\n value = value || event.target.value\n const selStart = event.target.selectionStart\n let keyCode = keycode(event)\n\n // Android issue: https://bugs.chromium.org/p/chromium/issues/detail?id=118639\n if (\n name === 'on_key_down' &&\n (event.which === 229 || keyCode === undefined)\n ) {\n isUnidentified = true\n }\n\n // Android issue: https://bugs.chromium.org/p/chromium/issues/detail?id=118639\n // so we use this solution instead\n if (\n isUnidentified &&\n name === 'on_before_input' &&\n typeof event?.data !== 'undefined'\n ) {\n name = 'on_key_down'\n keyCode = event.data\n isUnidentified = false\n }\n\n // Add support for \"await userEvent.type(input, '0...')\"\n if (isUnidentified && event.key === '0') {\n keyCode = '0'\n isUnidentified = false\n }\n\n // Prevent entering a leading zero\n if (\n name === 'on_key_down' &&\n !isUnidentified &&\n maskParams?.disallowLeadingZeroes &&\n (keyCode === '0' ||\n keyCode === 'numpad 0' ||\n (value.replace(/[^\\d]/g, '') === '' &&\n decimalSeparators.test(keyCode)))\n ) {\n const testValue = (\n value.slice(0, selStart) +\n '0' +\n value.slice(selStart + 1, value.length)\n ).replace(/[^\\d]/g, '')\n\n if (/^0/.test(testValue)) {\n event.preventDefault()\n }\n }\n\n if (\n name === 'on_key_down' &&\n isNumberMask &&\n !isUnidentified &&\n maskParams?.decimalSymbol\n ) {\n const hasDecimalSymbol = value.includes(maskParams.decimalSymbol)\n const allowedDecimals =\n maskParams.decimalLimit > 0 || maskParams.allowDecimal !== false\n\n if (!allowedDecimals && decimalSeparators.test(keyCode)) {\n event.preventDefault()\n }\n\n const charAtSelection = value.slice(selStart, selStart + 1)\n\n if (allowedDecimals) {\n // if we have already a decimal ...\n if (hasDecimalSymbol && decimalSeparators.test(keyCode)) {\n // ... we set the cursor on after the decimalSeparators\n if (decimalSeparators.test(charAtSelection)) {\n const index = value.indexOf(maskParams.decimalSymbol)\n if (index > -1) {\n safeSetSelection(event.target, index + 1)\n }\n }\n\n // ... we do not allow to type another\n event.preventDefault()\n }\n\n // replace other decimal\n else if (\n !hasDecimalSymbol &&\n keyCode !== maskParams.decimalSymbol &&\n decimalSeparators.test(keyCode)\n ) {\n value = value.slice(0, selStart)\n setLocalValue(value + maskParams.decimalSymbol)\n event.target.value = value + maskParams.decimalSymbol\n event.preventDefault()\n }\n }\n\n // move cursor to right if key is delete and char at selection is thousand separator\n if (\n keyCode === 'delete' &&\n charAtSelection === (maskParams.thousandsSeparatorSymbol || ' ')\n ) {\n safeSetSelection(event.target, selStart + 1)\n event.preventDefault()\n }\n }\n\n let num = cleanNumber(value, {\n prefix: maskParams.prefix,\n suffix: maskParams.suffix,\n decimalSeparator: maskParams.decimalSymbol || ',',\n thousandsSeparator: maskParams.thousandsSeparatorSymbol || ' ',\n })\n\n // We don't want to return NaN, so we set it to 0\n if (num === '-') {\n num = -0\n }\n\n const numberValue = Number(num)\n\n // Return '' (empty string) when the user has entered something invalid\n const cleanedValue =\n numberValue === 0 && String(num).charAt(0) !== '0' ? '' : num\n\n switch (name) {\n case 'on_focus':\n case 'on_key_down':\n case 'on_mouse_down':\n case 'on_mouse_up':\n event.target.runCorrectCaretPosition = () =>\n correctCaretPosition(event.target, maskParamsRef, props)\n if (!event.target.__getCorrectCaretPosition) {\n event.target.runCorrectCaretPosition()\n }\n break\n }\n\n const result = dispatchCustomElementEvent(props, name, {\n event,\n value,\n numberValue,\n cleanedValue,\n })\n\n if (name === 'on_change') {\n setLocalValue(value)\n }\n\n return result\n }\n\n return callEvent\n}\n\n/**\n * Returns number mask parameters if requested by the component properties\n *\n * @returns object of number mask parameter\n */\nconst useNumberMaskParams = () => {\n const { props } = React.useContext(InputMaskedContext)\n const locale = useTranslation()\n\n if (!isRequestingNumberMask(props)) {\n return { ...fromJSON(props.mask_options) }\n }\n\n let { number_mask, currency_mask, mask_options } = props\n const { as_number, as_percent, as_currency, value } = props\n\n mask_options = fromJSON(mask_options)\n number_mask = isTrue(number_mask) ? {} : fromJSON(number_mask)\n currency_mask = isTrue(currency_mask)\n ? {}\n : fromJSON(currency_mask, {\n currency: currency_mask,\n })\n if (!currency_mask?.currency) {\n delete currency_mask.currency\n }\n\n if (isRequestingLocaleSupport(props)) {\n const thousandsSeparatorSymbol = handleThousandsSeparator(locale)\n const decimalSymbol = handleDecimalSeparator(locale)\n\n if (isTrue(as_number) || isTrue(as_percent)) {\n number_mask = extendPropsWithContext(number_mask, null, {\n decimalSymbol,\n thousandsSeparatorSymbol,\n })\n } else if (as_currency) {\n currency_mask = extendPropsWithContext(currency_mask, null, {\n decimalSymbol,\n thousandsSeparatorSymbol,\n currency: getCurrencySymbol(\n locale,\n typeof as_currency === 'string' ? as_currency : null,\n currency_mask?.currencyDisplay,\n value\n ),\n })\n }\n }\n\n let maskParams = null\n\n if (number_mask) {\n maskParams = handleNumberMask({\n mask_options,\n number_mask,\n })\n\n if (isTrue(as_percent)) {\n maskParams = handlePercentMask({ props, locale, maskParams })\n }\n } else if (currency_mask) {\n maskParams = handleCurrencyMask({\n mask_options,\n currency_mask,\n })\n }\n\n return maskParams\n}\n"],"mappings":"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","ignoreList":[]}
@@ -33,7 +33,7 @@ export const invisibleSpace: "​";
33
33
  export function isRequestingLocaleSupport(props: object): boolean;
34
34
  export function isRequestingNumberMask(props: object): boolean;
35
35
  export function correctNumberValue({ localValue, props, locale, maskParams, }: object): string;
36
- export function correctCaretPosition(element: Element, maskParams: any, props: any): void;
36
+ export function correctCaretPosition(element: Element, maskParamsRef: any, props: any): void;
37
37
  export function handlePercentMask({ props, locale, maskParams }: object): any;
38
38
  export function handleCurrencyMask({ mask_options, currency_mask }: object): any;
39
39
  export function handleNumberMask({ mask_options, number_mask }: object): any;
@@ -76,9 +76,10 @@ export const correctNumberValue = ({
76
76
  }
77
77
  return value;
78
78
  };
79
- export const correctCaretPosition = (element, maskParams, props) => {
79
+ export const correctCaretPosition = (element, maskParamsRef, props) => {
80
80
  const correction = () => {
81
81
  try {
82
+ const maskParams = maskParamsRef === null || maskParamsRef === void 0 ? void 0 : maskParamsRef.current;
82
83
  const suffix = maskParams === null || maskParams === void 0 ? void 0 : maskParams.suffix;
83
84
  const prefix = maskParams === null || maskParams === void 0 ? void 0 : maskParams.prefix;
84
85
  const start = element.selectionStart;
@@ -1 +1 @@
1
- {"version":3,"file":"InputMaskedUtils.js","names":["format","getDecimalSeparator","getThousandsSeparator","warn","IS_IOS","safeSetSelection","enableLocaleSupportWhen","enableNumberMaskWhen","invisibleSpace","isRequestingLocaleSupport","props","Object","entries","some","k","v","includes","isRequestingNumberMask","correctNumberValue","localValue","locale","maskParams","value","undefined","String","isNaN","parseFloat","decimalPos","indexOf","integerLimit","limit","integers","split","isNegative","length","decimals","slice","shouldHaveDecimals","allowDecimal","decimalLimit","number_format","options","_objectSpread","decimalSymbol","replace","localNumberValue","numberValue","valueHasDecimal","endsWithDecimal","endsWith","endsWithZeroAndDecimal","startsWith","test","correctCaretPosition","element","correction","suffix","prefix","start","selectionStart","end","selectionEnd","suffixStart","suffixEnd","pos","placeholderChar","prefixStart","prefixEnd","char","mask","chars","l","i","RegExp","n","_mask$test","call","e","window","requestAnimationFrame","handlePercentMask","_String","_String$match","percent","match","handleCurrencyMask","mask_options","currency_mask","givenParams","paramsWithDefaults","showMask","currency","handleNumberMask","number_mask","getSoftKeyboardAttributes","instanceOf","allowNegative","inputMode","handleThousandsSeparator","handleDecimalSeparator","fromJSON","str","fallback","JSON","parse"],"sources":["../../../../src/components/input-masked/InputMaskedUtils.js"],"sourcesContent":["/**\n * Web InputMasked Component\n *\n */\n\nimport {\n format,\n getDecimalSeparator,\n getThousandsSeparator,\n} from '../number-format/NumberUtils'\nimport { warn } from '../../shared/component-helper'\nimport { IS_IOS } from '../../shared/helpers'\nimport { safeSetSelection } from './text-mask/createTextMaskInputElement'\n\nconst enableLocaleSupportWhen = ['as_number', 'as_percent', 'as_currency']\nconst enableNumberMaskWhen = [\n 'as_number',\n 'as_percent',\n 'as_currency',\n 'number_mask',\n 'currency_mask',\n]\n\nexport const invisibleSpace = '\\u200B'\n\n/**\n * Will return true if a prop needs Locale support\n *\n * @param {object} props object with given component props\n * @returns boolean\n */\nexport const isRequestingLocaleSupport = (props) => {\n return Object.entries(props).some(\n ([k, v]) => v && enableLocaleSupportWhen.includes(k)\n )\n}\n\n/**\n * Will return true if a prop will enable the internal NumberMask\n *\n * @param {object} props object with given component props\n * @returns boolean\n */\nexport const isRequestingNumberMask = (props) => {\n return Object.entries(props).some(\n ([k, v]) => v && enableNumberMaskWhen.includes(k)\n )\n}\n\n/**\n * Probably the most complex part of this component\n * It will modify a given value based on certain criteria's\n *\n * @param {object} param0 object with properties\n * @property {string} localValue optional – if given, it will uses its ending to determine of what to return\n * @property {number|string} value component property value\n * @property {object} context Eufemia Context\n * @property {string} locale Eufemia locale (either from component or context)\n * @property {object} maskParams predefined mask parameters\n * @returns string Value\n */\nexport const correctNumberValue = ({\n localValue = null,\n props,\n locale,\n maskParams,\n}) => {\n let value =\n props.value === null\n ? null\n : props.value === undefined\n ? undefined\n : String(props.value)\n\n if (isNaN(parseFloat(value))) {\n return value\n }\n\n const decimalPos = value.indexOf('.')\n\n if (\n maskParams.integerLimit &&\n typeof maskParams.integerLimit === 'number'\n ) {\n const limit = maskParams.integerLimit\n const integers = value.split('.')[0]\n const isNegative = parseFloat(integers) < 0\n if (integers.length - (isNegative ? 1 : 0) > limit) {\n const decimals = decimalPos > 0 ? value.slice(decimalPos) : ''\n value = integers.slice(0, limit + (isNegative ? 1 : 0)) + decimals\n }\n }\n\n const shouldHaveDecimals =\n maskParams.allowDecimal ||\n (maskParams.decimalLimit > 0 && maskParams.allowDecimal !== false)\n\n if (!shouldHaveDecimals) {\n if (decimalPos > -1) {\n value = value.slice(0, decimalPos)\n }\n }\n\n /**\n * This only runs IF \"number_format\" is set – we do not use it else\n */\n if (props.number_format) {\n const options = {\n locale,\n decimals: 0,\n ...props.number_format,\n }\n if (shouldHaveDecimals) {\n options.decimals = maskParams.decimalLimit\n }\n value = format(value, options)\n }\n\n const decimalSymbol = maskParams.decimalSymbol\n value = value.replace('.', decimalSymbol)\n\n if (localValue !== null) {\n const localNumberValue = localValue.replace(/[^\\d,.-]/g, '')\n const numberValue = value.replace(/[^\\d,.-]/g, '')\n const valueHasDecimal = numberValue.includes(decimalSymbol)\n\n if (!valueHasDecimal) {\n const endsWithDecimal = localNumberValue.endsWith(decimalSymbol)\n const endsWithZeroAndDecimal = localNumberValue.endsWith(\n `${decimalSymbol}0`\n )\n\n if (endsWithDecimal) {\n value = `${value}${decimalSymbol}`\n } else if (\n endsWithZeroAndDecimal &&\n !numberValue.endsWith(`${decimalSymbol}0`)\n ) {\n /**\n * When the users has 20,02, then hits \"backspace\",\n * the returned {numberValue} in the onChange event would then be \"20\",\n * but we want it to be 20,0\n */\n value = `${value}${decimalSymbol}0`\n }\n }\n\n /**\n * If the user removes a leading digit and we have left a leading zero.\n *\n * The users enters these steps:\n * Step 1. 1012\n * Step 2. 012 -> user removes 1, now use \"localValue\"\n * Step 3. 2012\n *\n * If a dev listens on_change and sends the number value back in,\n * for this, we also ensure that \"numberValue\" and \"localNumberValue\" is the same.\n */\n if (\n localNumberValue !== '0' &&\n localNumberValue.startsWith('0') &&\n parseFloat(numberValue.replace(decimalSymbol, '.')) ===\n parseFloat(localNumberValue.replace(decimalSymbol, '.'))\n ) {\n value = localValue\n }\n\n /**\n * While typing;\n * If the local value is - or -0 we use it.\n * Also, because of invisible whitespace we remove everything else\n */\n if (/^(-|-0)$/.test(localValue.replace(/[^\\d-0]/g, ''))) {\n value = localValue\n } else if (localNumberValue === '' && numberValue === '0') {\n value = ''\n }\n }\n\n return value\n}\n\n/**\n * This is a helper for setting the cursor position,\n * when it is on a not allowed position\n *\n * @param {Element} element Input Element\n * @param {Object} maskParams Mask parameters, containing eventually suffix or prefix\n */\nexport const correctCaretPosition = (element, maskParams, props) => {\n const correction = () => {\n try {\n const suffix = maskParams?.suffix\n const prefix = maskParams?.prefix\n\n const start = element.selectionStart\n const end = element.selectionEnd\n\n if (start !== end) {\n return // stop here\n }\n\n if (suffix || prefix) {\n const suffixStart = element.value.indexOf(suffix)\n const suffixEnd = suffixStart + suffix?.length\n let pos = undefined\n\n if (start >= suffixStart && start <= suffixEnd) {\n pos = suffixStart\n\n // If there is a placeholder,\n // and the user clicks after the suffix\n // we want the position to be \"before\" the placeholderChar\n if (\n maskParams.placeholderChar !== invisibleSpace &&\n element.value.length - 1 === String(suffix + prefix).length\n ) {\n pos = pos - 1\n }\n } else {\n const prefixStart = element.value.indexOf(prefix)\n const prefixEnd = prefixStart + prefix?.length || 0\n\n if (start >= prefixStart && start <= prefixEnd) {\n pos = prefixEnd\n }\n }\n\n const char = element.value.slice(pos - 1, pos)\n if (char === invisibleSpace) {\n pos = suffixStart - 1\n }\n\n if (!isNaN(parseFloat(pos))) {\n safeSetSelection(element, pos)\n }\n } else if (props?.mask && element.value.length === end) {\n const chars = element.value.split('')\n\n for (let l = chars.length, i = l - 1; i >= 0; i--) {\n const char = chars[i]\n const mask = props.mask[i]\n if (\n char &&\n char !== invisibleSpace &&\n mask instanceof RegExp &&\n mask.test(char)\n ) {\n for (let n = i + 1; n < l; n++) {\n const mask = props.mask[n]\n if (mask?.test?.(char)) {\n safeSetSelection(element, n)\n break\n }\n }\n\n break\n }\n }\n }\n } catch (e) {\n warn(e)\n }\n }\n\n if (typeof window !== 'undefined') {\n window.requestAnimationFrame(correction)\n }\n}\n\n/**\n * Manipulate needed mask for handle: percent\n *\n * @param {object} param0 object with properties\n * @property {object} props Component property\n * @property {string} locale Eufemia locale (either from component or context)\n * @property {object} maskParams predefined mask parameters\n * @returns object maskParams\n */\nexport const handlePercentMask = ({ props, locale, maskParams }) => {\n const value = format(props.value, { locale, percent: true })\n maskParams.suffix = String(value)?.match(/((\\s|)%)$/g, '$1')?.[0] || ' %'\n\n return maskParams\n}\n\n/**\n * Return needed mask for handle: currency\n *\n * @param {object} param0 object with properties\n * @property {object} context Eufemia context\n * @property {object} mask_options Component property for change the mask parameters\n * @property {object} currency_mask Component property for change the currency parameters\n * @returns object maskParams\n */\nexport const handleCurrencyMask = ({ mask_options, currency_mask }) => {\n const givenParams = {\n ...mask_options,\n ...currency_mask,\n }\n const paramsWithDefaults = {\n showMask: true,\n placeholderChar: null,\n allowDecimal: true,\n decimalLimit: 2,\n decimalSymbol: ',',\n ...givenParams,\n }\n\n const suffix =\n typeof currency_mask === 'string'\n ? currency_mask\n : typeof givenParams.currency === 'string'\n ? givenParams.currency\n : 'kr'\n paramsWithDefaults.suffix = ` ${suffix}`\n\n if (\n typeof givenParams?.allowDecimal === 'undefined' &&\n typeof givenParams?.decimalLimit === 'number'\n ) {\n paramsWithDefaults.allowDecimal = givenParams.decimalLimit > 0\n }\n\n return paramsWithDefaults\n}\n\n/**\n * Return needed mask for handle: number\n *\n * @param {object} param0 object with properties\n * @property {object} context Eufemia context\n * @property {object} mask_options Component property for change the mask parameters\n * @property {object} number_mask Component property for change the number parameters\n * @returns object maskParams\n */\nexport const handleNumberMask = ({ mask_options, number_mask }) => {\n const maskParams = {\n decimalSymbol: ',',\n ...mask_options,\n ...number_mask,\n }\n\n if (typeof maskParams.allowDecimal === 'undefined') {\n maskParams.allowDecimal = maskParams.decimalLimit > 0\n }\n\n return maskParams\n}\n\n/**\n * Returns the type of what inputMode or type attribute should be used\n *\n * @param {function} mask mask function\n * @returns undefined|decimal|numeric\n */\nexport function getSoftKeyboardAttributes(mask) {\n if (mask?.instanceOf !== 'createNumberMask') {\n return undefined\n }\n\n const maskParams = mask?.maskParams\n\n // because of the missing minus key, we still have to use text on iOS\n if (IS_IOS && maskParams?.allowNegative !== false) {\n return undefined\n }\n\n return {\n inputMode:\n maskParams.allowDecimal && maskParams.decimalLimit !== 0\n ? 'decimal'\n : 'numeric',\n }\n}\n\n/**\n * Returns the thousands separator character\n *\n * @param {string} locale Component or context locale\n * @returns string\n */\nexport function handleThousandsSeparator(locale) {\n return getThousandsSeparator(locale).replace(' ', ' ') // replace non-breaking space with a regular space\n}\n\n/**\n * Returns the decimal separator character\n *\n * @param {string} locale Component or context locale\n * @returns string\n */\nexport function handleDecimalSeparator(locale) {\n let decimalSymbol = getDecimalSeparator(locale)\n\n return decimalSymbol\n}\n\n/**\n * Will take a JSON and return it parsed\n *\n * @param {string} str\n * @param {*} fallback optional fallback\n * @returns parsed json\n */\nexport function fromJSON(str, fallback = null) {\n if (typeof str === 'string' && str[0] === '{') {\n return JSON.parse(str)\n }\n\n return str || fallback\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"InputMaskedUtils.js","names":["format","getDecimalSeparator","getThousandsSeparator","warn","IS_IOS","safeSetSelection","enableLocaleSupportWhen","enableNumberMaskWhen","invisibleSpace","isRequestingLocaleSupport","props","Object","entries","some","k","v","includes","isRequestingNumberMask","correctNumberValue","localValue","locale","maskParams","value","undefined","String","isNaN","parseFloat","decimalPos","indexOf","integerLimit","limit","integers","split","isNegative","length","decimals","slice","shouldHaveDecimals","allowDecimal","decimalLimit","number_format","options","_objectSpread","decimalSymbol","replace","localNumberValue","numberValue","valueHasDecimal","endsWithDecimal","endsWith","endsWithZeroAndDecimal","startsWith","test","correctCaretPosition","element","maskParamsRef","correction","current","suffix","prefix","start","selectionStart","end","selectionEnd","suffixStart","suffixEnd","pos","placeholderChar","prefixStart","prefixEnd","char","mask","chars","l","i","RegExp","n","_mask$test","call","e","window","requestAnimationFrame","handlePercentMask","_String","_String$match","percent","match","handleCurrencyMask","mask_options","currency_mask","givenParams","paramsWithDefaults","showMask","currency","handleNumberMask","number_mask","getSoftKeyboardAttributes","instanceOf","allowNegative","inputMode","handleThousandsSeparator","handleDecimalSeparator","fromJSON","str","fallback","JSON","parse"],"sources":["../../../../src/components/input-masked/InputMaskedUtils.js"],"sourcesContent":["/**\n * Web InputMasked Component\n *\n */\n\nimport {\n format,\n getDecimalSeparator,\n getThousandsSeparator,\n} from '../number-format/NumberUtils'\nimport { warn } from '../../shared/component-helper'\nimport { IS_IOS } from '../../shared/helpers'\nimport { safeSetSelection } from './text-mask/createTextMaskInputElement'\n\nconst enableLocaleSupportWhen = ['as_number', 'as_percent', 'as_currency']\nconst enableNumberMaskWhen = [\n 'as_number',\n 'as_percent',\n 'as_currency',\n 'number_mask',\n 'currency_mask',\n]\n\nexport const invisibleSpace = '\\u200B'\n\n/**\n * Will return true if a prop needs Locale support\n *\n * @param {object} props object with given component props\n * @returns boolean\n */\nexport const isRequestingLocaleSupport = (props) => {\n return Object.entries(props).some(\n ([k, v]) => v && enableLocaleSupportWhen.includes(k)\n )\n}\n\n/**\n * Will return true if a prop will enable the internal NumberMask\n *\n * @param {object} props object with given component props\n * @returns boolean\n */\nexport const isRequestingNumberMask = (props) => {\n return Object.entries(props).some(\n ([k, v]) => v && enableNumberMaskWhen.includes(k)\n )\n}\n\n/**\n * Probably the most complex part of this component\n * It will modify a given value based on certain criteria's\n *\n * @param {object} param0 object with properties\n * @property {string} localValue optional – if given, it will uses its ending to determine of what to return\n * @property {number|string} value component property value\n * @property {object} context Eufemia Context\n * @property {string} locale Eufemia locale (either from component or context)\n * @property {object} maskParams predefined mask parameters\n * @returns string Value\n */\nexport const correctNumberValue = ({\n localValue = null,\n props,\n locale,\n maskParams,\n}) => {\n let value =\n props.value === null\n ? null\n : props.value === undefined\n ? undefined\n : String(props.value)\n\n if (isNaN(parseFloat(value))) {\n return value\n }\n\n const decimalPos = value.indexOf('.')\n\n if (\n maskParams.integerLimit &&\n typeof maskParams.integerLimit === 'number'\n ) {\n const limit = maskParams.integerLimit\n const integers = value.split('.')[0]\n const isNegative = parseFloat(integers) < 0\n if (integers.length - (isNegative ? 1 : 0) > limit) {\n const decimals = decimalPos > 0 ? value.slice(decimalPos) : ''\n value = integers.slice(0, limit + (isNegative ? 1 : 0)) + decimals\n }\n }\n\n const shouldHaveDecimals =\n maskParams.allowDecimal ||\n (maskParams.decimalLimit > 0 && maskParams.allowDecimal !== false)\n\n if (!shouldHaveDecimals) {\n if (decimalPos > -1) {\n value = value.slice(0, decimalPos)\n }\n }\n\n /**\n * This only runs IF \"number_format\" is set – we do not use it else\n */\n if (props.number_format) {\n const options = {\n locale,\n decimals: 0,\n ...props.number_format,\n }\n if (shouldHaveDecimals) {\n options.decimals = maskParams.decimalLimit\n }\n value = format(value, options)\n }\n\n const decimalSymbol = maskParams.decimalSymbol\n value = value.replace('.', decimalSymbol)\n\n if (localValue !== null) {\n const localNumberValue = localValue.replace(/[^\\d,.-]/g, '')\n const numberValue = value.replace(/[^\\d,.-]/g, '')\n const valueHasDecimal = numberValue.includes(decimalSymbol)\n\n if (!valueHasDecimal) {\n const endsWithDecimal = localNumberValue.endsWith(decimalSymbol)\n const endsWithZeroAndDecimal = localNumberValue.endsWith(\n `${decimalSymbol}0`\n )\n\n if (endsWithDecimal) {\n value = `${value}${decimalSymbol}`\n } else if (\n endsWithZeroAndDecimal &&\n !numberValue.endsWith(`${decimalSymbol}0`)\n ) {\n /**\n * When the users has 20,02, then hits \"backspace\",\n * the returned {numberValue} in the onChange event would then be \"20\",\n * but we want it to be 20,0\n */\n value = `${value}${decimalSymbol}0`\n }\n }\n\n /**\n * If the user removes a leading digit and we have left a leading zero.\n *\n * The users enters these steps:\n * Step 1. 1012\n * Step 2. 012 -> user removes 1, now use \"localValue\"\n * Step 3. 2012\n *\n * If a dev listens on_change and sends the number value back in,\n * for this, we also ensure that \"numberValue\" and \"localNumberValue\" is the same.\n */\n if (\n localNumberValue !== '0' &&\n localNumberValue.startsWith('0') &&\n parseFloat(numberValue.replace(decimalSymbol, '.')) ===\n parseFloat(localNumberValue.replace(decimalSymbol, '.'))\n ) {\n value = localValue\n }\n\n /**\n * While typing;\n * If the local value is - or -0 we use it.\n * Also, because of invisible whitespace we remove everything else\n */\n if (/^(-|-0)$/.test(localValue.replace(/[^\\d-0]/g, ''))) {\n value = localValue\n } else if (localNumberValue === '' && numberValue === '0') {\n value = ''\n }\n }\n\n return value\n}\n\n/**\n * This is a helper for setting the cursor position,\n * when it is on a not allowed position\n *\n * @param {Element} element Input Element\n * @param {Object} maskParams Mask parameters, containing eventually suffix or prefix\n */\nexport const correctCaretPosition = (element, maskParamsRef, props) => {\n const correction = () => {\n try {\n const maskParams = maskParamsRef?.current\n\n const suffix = maskParams?.suffix\n const prefix = maskParams?.prefix\n\n const start = element.selectionStart\n const end = element.selectionEnd\n\n if (start !== end) {\n return // stop here\n }\n\n if (suffix || prefix) {\n const suffixStart = element.value.indexOf(suffix)\n const suffixEnd = suffixStart + suffix?.length\n let pos = undefined\n\n if (start >= suffixStart && start <= suffixEnd) {\n pos = suffixStart\n\n // If there is a placeholder,\n // and the user clicks after the suffix\n // we want the position to be \"before\" the placeholderChar\n if (\n maskParams.placeholderChar !== invisibleSpace &&\n element.value.length - 1 === String(suffix + prefix).length\n ) {\n pos = pos - 1\n }\n } else {\n const prefixStart = element.value.indexOf(prefix)\n const prefixEnd = prefixStart + prefix?.length || 0\n\n if (start >= prefixStart && start <= prefixEnd) {\n pos = prefixEnd\n }\n }\n\n const char = element.value.slice(pos - 1, pos)\n if (char === invisibleSpace) {\n pos = suffixStart - 1\n }\n\n if (!isNaN(parseFloat(pos))) {\n safeSetSelection(element, pos)\n }\n } else if (props?.mask && element.value.length === end) {\n const chars = element.value.split('')\n\n for (let l = chars.length, i = l - 1; i >= 0; i--) {\n const char = chars[i]\n const mask = props.mask[i]\n if (\n char &&\n char !== invisibleSpace &&\n mask instanceof RegExp &&\n mask.test(char)\n ) {\n for (let n = i + 1; n < l; n++) {\n const mask = props.mask[n]\n if (mask?.test?.(char)) {\n safeSetSelection(element, n)\n break\n }\n }\n\n break\n }\n }\n }\n } catch (e) {\n warn(e)\n }\n }\n\n if (typeof window !== 'undefined') {\n window.requestAnimationFrame(correction)\n }\n}\n\n/**\n * Manipulate needed mask for handle: percent\n *\n * @param {object} param0 object with properties\n * @property {object} props Component property\n * @property {string} locale Eufemia locale (either from component or context)\n * @property {object} maskParams predefined mask parameters\n * @returns object maskParams\n */\nexport const handlePercentMask = ({ props, locale, maskParams }) => {\n const value = format(props.value, { locale, percent: true })\n maskParams.suffix = String(value)?.match(/((\\s|)%)$/g, '$1')?.[0] || ' %'\n\n return maskParams\n}\n\n/**\n * Return needed mask for handle: currency\n *\n * @param {object} param0 object with properties\n * @property {object} context Eufemia context\n * @property {object} mask_options Component property for change the mask parameters\n * @property {object} currency_mask Component property for change the currency parameters\n * @returns object maskParams\n */\nexport const handleCurrencyMask = ({ mask_options, currency_mask }) => {\n const givenParams = {\n ...mask_options,\n ...currency_mask,\n }\n const paramsWithDefaults = {\n showMask: true,\n placeholderChar: null,\n allowDecimal: true,\n decimalLimit: 2,\n decimalSymbol: ',',\n ...givenParams,\n }\n\n const suffix =\n typeof currency_mask === 'string'\n ? currency_mask\n : typeof givenParams.currency === 'string'\n ? givenParams.currency\n : 'kr'\n paramsWithDefaults.suffix = ` ${suffix}`\n\n if (\n typeof givenParams?.allowDecimal === 'undefined' &&\n typeof givenParams?.decimalLimit === 'number'\n ) {\n paramsWithDefaults.allowDecimal = givenParams.decimalLimit > 0\n }\n\n return paramsWithDefaults\n}\n\n/**\n * Return needed mask for handle: number\n *\n * @param {object} param0 object with properties\n * @property {object} context Eufemia context\n * @property {object} mask_options Component property for change the mask parameters\n * @property {object} number_mask Component property for change the number parameters\n * @returns object maskParams\n */\nexport const handleNumberMask = ({ mask_options, number_mask }) => {\n const maskParams = {\n decimalSymbol: ',',\n ...mask_options,\n ...number_mask,\n }\n\n if (typeof maskParams.allowDecimal === 'undefined') {\n maskParams.allowDecimal = maskParams.decimalLimit > 0\n }\n\n return maskParams\n}\n\n/**\n * Returns the type of what inputMode or type attribute should be used\n *\n * @param {function} mask mask function\n * @returns undefined|decimal|numeric\n */\nexport function getSoftKeyboardAttributes(mask) {\n if (mask?.instanceOf !== 'createNumberMask') {\n return undefined\n }\n\n const maskParams = mask?.maskParams\n\n // because of the missing minus key, we still have to use text on iOS\n if (IS_IOS && maskParams?.allowNegative !== false) {\n return undefined\n }\n\n return {\n inputMode:\n maskParams.allowDecimal && maskParams.decimalLimit !== 0\n ? 'decimal'\n : 'numeric',\n }\n}\n\n/**\n * Returns the thousands separator character\n *\n * @param {string} locale Component or context locale\n * @returns string\n */\nexport function handleThousandsSeparator(locale) {\n return getThousandsSeparator(locale).replace(' ', ' ') // replace non-breaking space with a regular space\n}\n\n/**\n * Returns the decimal separator character\n *\n * @param {string} locale Component or context locale\n * @returns string\n */\nexport function handleDecimalSeparator(locale) {\n let decimalSymbol = getDecimalSeparator(locale)\n\n return decimalSymbol\n}\n\n/**\n * Will take a JSON and return it parsed\n *\n * @param {string} str\n * @param {*} fallback optional fallback\n * @returns parsed json\n */\nexport function fromJSON(str, fallback = null) {\n if (typeof str === 'string' && str[0] === '{') {\n return JSON.parse(str)\n }\n\n return str || fallback\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,4 @@
1
1
  import { PropertiesTableProps } from '../../shared/types';
2
2
  export declare const multiInputMaskedEvents: PropertiesTableProps;
3
+ export declare const multiInputMaskedProperties: PropertiesTableProps;
4
+ export declare const multiInputMaskedInputsProperties: PropertiesTableProps;
@@ -15,4 +15,73 @@ export const multiInputMaskedEvents = {
15
15
  status: 'optional'
16
16
  }
17
17
  };
18
+ export const multiInputMaskedProperties = {
19
+ label: {
20
+ doc: '`legend` element describing the group of inputs inside the components.',
21
+ type: 'React.ReactNode',
22
+ status: 'optional'
23
+ },
24
+ labelDirection: {
25
+ doc: 'Use to change the label layout direction. Defaults to `horizontal`.',
26
+ type: ['horizontal', 'vertical'],
27
+ status: 'optional'
28
+ },
29
+ inputs: {
30
+ doc: "array of [MultiInputMaskInput](/uilib/components/input-masked/properties/#multiinputmask-inputs-properties) that defines the inputs in the component. The id's defined here is used to map input value to correct property in `values` parameters used in `onChange`.",
31
+ type: 'array',
32
+ status: 'optional'
33
+ },
34
+ values: {
35
+ doc: "values used for the inputs in the component. Expects an object with keys matching the id's defined in `inputs`.",
36
+ type: 'object',
37
+ status: 'optional'
38
+ },
39
+ delimiter: {
40
+ doc: 'character that separates the input inputs.',
41
+ type: 'string',
42
+ status: 'optional'
43
+ },
44
+ stretch: {
45
+ doc: 'use `true` in order to stretch the input to the available space. Defaults to `false`.',
46
+ type: 'boolean',
47
+ status: 'optional'
48
+ },
49
+ status: {
50
+ doc: 'text with a status message. The style defaults to an error message. You can use true to only get the status color, without a message.`.',
51
+ type: ['React.ReactNode'],
52
+ status: 'optional'
53
+ },
54
+ statusState: {
55
+ doc: "defines the state of the status. It's two statuses [error, info]. Defaults to error.",
56
+ type: ['error', 'info'],
57
+ status: 'optional'
58
+ },
59
+ suffix: {
60
+ doc: 'Text describing the content of the input more than the label. you can also send in a React component, so it gets wrapped inside the Input component.',
61
+ type: 'React.ReactNode',
62
+ status: 'optional'
63
+ }
64
+ };
65
+ export const multiInputMaskedInputsProperties = {
66
+ id: {
67
+ doc: '(string) Defines input id. This id is also used to map the input value to the correct property on the objects used for `values` and `onChange` parameters.',
68
+ type: 'string',
69
+ status: 'optional'
70
+ },
71
+ label: {
72
+ doc: 'Label used by the input. The label itself is hidden, but required to uphold accessibility standards for screen readers.',
73
+ type: 'string',
74
+ status: 'optional'
75
+ },
76
+ mask: {
77
+ doc: 'Each RegExp item in the array defines what the mask should be for each subsequent character in the input. The array length sets the inputs size/character limit.',
78
+ type: 'array',
79
+ status: 'optional'
80
+ },
81
+ placeholderCharacter: {
82
+ doc: 'Sets the placeholder character used for the input.',
83
+ type: 'string',
84
+ status: 'optional'
85
+ }
86
+ };
18
87
  //# sourceMappingURL=MultiInputMaskedDocs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiInputMaskedDocs.js","names":["multiInputMaskedEvents","onChange","doc","type","status","onFocus","onBlur"],"sources":["../../../../src/components/input-masked/MultiInputMaskedDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../shared/types'\n\nexport const multiInputMaskedEvents: PropertiesTableProps = {\n onChange: {\n doc: \"runs when an input value changes. Has an object parameter with keys matching the id's defined in `inputs`, and values of string. E.g: `{month: string, year: string}`.\",\n type: 'function',\n status: 'optional',\n },\n onFocus: {\n doc: \"runs when an input gains focus. Has an object parameter with keys matching the id's defined in `inputs`, and values of string. E.g: `{month: string, year: string}`.\",\n type: 'function',\n status: 'optional',\n },\n onBlur: {\n doc: \"runs when an input lose focus. Has an object parameter with keys matching the id's defined in `inputs`, and values of string. E.g: `{month: string, year: string}`.\",\n type: 'function',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,sBAA4C,GAAG;EAC1DC,QAAQ,EAAE;IACRC,GAAG,EAAE,wKAAwK;IAC7KC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDC,OAAO,EAAE;IACPH,GAAG,EAAE,sKAAsK;IAC3KC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDE,MAAM,EAAE;IACNJ,GAAG,EAAE,qKAAqK;IAC1KC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"MultiInputMaskedDocs.js","names":["multiInputMaskedEvents","onChange","doc","type","status","onFocus","onBlur","multiInputMaskedProperties","label","labelDirection","inputs","values","delimiter","stretch","statusState","suffix","multiInputMaskedInputsProperties","id","mask","placeholderCharacter"],"sources":["../../../../src/components/input-masked/MultiInputMaskedDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../shared/types'\n\nexport const multiInputMaskedEvents: PropertiesTableProps = {\n onChange: {\n doc: \"runs when an input value changes. Has an object parameter with keys matching the id's defined in `inputs`, and values of string. E.g: `{month: string, year: string}`.\",\n type: 'function',\n status: 'optional',\n },\n onFocus: {\n doc: \"runs when an input gains focus. Has an object parameter with keys matching the id's defined in `inputs`, and values of string. E.g: `{month: string, year: string}`.\",\n type: 'function',\n status: 'optional',\n },\n onBlur: {\n doc: \"runs when an input lose focus. Has an object parameter with keys matching the id's defined in `inputs`, and values of string. E.g: `{month: string, year: string}`.\",\n type: 'function',\n status: 'optional',\n },\n}\n\nexport const multiInputMaskedProperties: PropertiesTableProps = {\n label: {\n doc: '`legend` element describing the group of inputs inside the components.',\n type: 'React.ReactNode',\n status: 'optional',\n },\n labelDirection: {\n doc: 'Use to change the label layout direction. Defaults to `horizontal`.',\n type: ['horizontal', 'vertical'],\n status: 'optional',\n },\n inputs: {\n doc: \"array of [MultiInputMaskInput](/uilib/components/input-masked/properties/#multiinputmask-inputs-properties) that defines the inputs in the component. The id's defined here is used to map input value to correct property in `values` parameters used in `onChange`.\",\n type: 'array',\n status: 'optional',\n },\n values: {\n doc: \"values used for the inputs in the component. Expects an object with keys matching the id's defined in `inputs`.\",\n type: 'object',\n status: 'optional',\n },\n delimiter: {\n doc: 'character that separates the input inputs.',\n type: 'string',\n status: 'optional',\n },\n stretch: {\n doc: 'use `true` in order to stretch the input to the available space. Defaults to `false`.',\n type: 'boolean',\n status: 'optional',\n },\n status: {\n doc: 'text with a status message. The style defaults to an error message. You can use true to only get the status color, without a message.`.',\n type: ['React.ReactNode'],\n status: 'optional',\n },\n statusState: {\n doc: \"defines the state of the status. It's two statuses [error, info]. Defaults to error.\",\n type: ['error', 'info'],\n status: 'optional',\n },\n suffix: {\n doc: 'Text describing the content of the input more than the label. you can also send in a React component, so it gets wrapped inside the Input component.',\n type: 'React.ReactNode',\n status: 'optional',\n },\n}\n\nexport const multiInputMaskedInputsProperties: PropertiesTableProps = {\n id: {\n doc: '(string) Defines input id. This id is also used to map the input value to the correct property on the objects used for `values` and `onChange` parameters.',\n type: 'string',\n status: 'optional',\n },\n label: {\n doc: 'Label used by the input. The label itself is hidden, but required to uphold accessibility standards for screen readers.',\n type: 'string',\n status: 'optional',\n },\n mask: {\n doc: 'Each RegExp item in the array defines what the mask should be for each subsequent character in the input. The array length sets the inputs size/character limit.',\n type: 'array',\n status: 'optional',\n },\n placeholderCharacter: {\n doc: 'Sets the placeholder character used for the input.',\n type: 'string',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,sBAA4C,GAAG;EAC1DC,QAAQ,EAAE;IACRC,GAAG,EAAE,wKAAwK;IAC7KC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDC,OAAO,EAAE;IACPH,GAAG,EAAE,sKAAsK;IAC3KC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDE,MAAM,EAAE;IACNJ,GAAG,EAAE,qKAAqK;IAC1KC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMG,0BAAgD,GAAG;EAC9DC,KAAK,EAAE;IACLN,GAAG,EAAE,wEAAwE;IAC7EC,IAAI,EAAE,iBAAiB;IACvBC,MAAM,EAAE;EACV,CAAC;EACDK,cAAc,EAAE;IACdP,GAAG,EAAE,qEAAqE;IAC1EC,IAAI,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC;IAChCC,MAAM,EAAE;EACV,CAAC;EACDM,MAAM,EAAE;IACNR,GAAG,EAAE,uQAAuQ;IAC5QC,IAAI,EAAE,OAAO;IACbC,MAAM,EAAE;EACV,CAAC;EACDO,MAAM,EAAE;IACNT,GAAG,EAAE,iHAAiH;IACtHC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDQ,SAAS,EAAE;IACTV,GAAG,EAAE,4CAA4C;IACjDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDS,OAAO,EAAE;IACPX,GAAG,EAAE,uFAAuF;IAC5FC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDA,MAAM,EAAE;IACNF,GAAG,EAAE,yIAAyI;IAC9IC,IAAI,EAAE,CAAC,iBAAiB,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDU,WAAW,EAAE;IACXZ,GAAG,EAAE,sFAAsF;IAC3FC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IACvBC,MAAM,EAAE;EACV,CAAC;EACDW,MAAM,EAAE;IACNb,GAAG,EAAE,sJAAsJ;IAC3JC,IAAI,EAAE,iBAAiB;IACvBC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMY,gCAAsD,GAAG;EACpEC,EAAE,EAAE;IACFf,GAAG,EAAE,4JAA4J;IACjKC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,KAAK,EAAE;IACLN,GAAG,EAAE,yHAAyH;IAC9HC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDc,IAAI,EAAE;IACJhB,GAAG,EAAE,kKAAkK;IACvKC,IAAI,EAAE,OAAO;IACbC,MAAM,EAAE;EACV,CAAC;EACDe,oBAAoB,EAAE;IACpBjB,GAAG,EAAE,oDAAoD;IACzDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
@@ -11,6 +11,15 @@
11
11
  .dnb-input-masked input::placeholder {
12
12
  color: inherit;
13
13
  }
14
+ .dnb-input-masked--hide-controls[type=number]::-webkit-outer-spin-button, .dnb-input-masked--hide-controls[type=number]::-webkit-inner-spin-button {
15
+ -webkit-appearance: none;
16
+ appearance: none;
17
+ margin: 0;
18
+ }
19
+ .dnb-input-masked--hide-controls[type=number] {
20
+ -webkit-appearance: textfield;
21
+ appearance: textfield;
22
+ }
14
23
 
15
24
  .dnb-multi-input-mask__fieldset {
16
25
  padding: 0;
@@ -1 +1 @@
1
- .dnb-input-masked--guide{font-family:var(--font-family-monospace)}.dnb-input-masked input::placeholder{color:inherit}.dnb-multi-input-mask__fieldset{border:none;padding:0}.dnb-multi-input-mask__fieldset:not([class*=space__top]){margin-top:0}.dnb-multi-input-mask__fieldset:not([class*=space__bottom]){margin-bottom:0}.dnb-multi-input-mask__fieldset:not([class*=space__left]){margin-left:0}.dnb-multi-input-mask__fieldset:not([class*=space__right]){margin-right:0}.dnb-multi-input-mask__fieldset--horizontal{align-items:baseline;display:inline-flex;flex-flow:row wrap;gap:1rem}.dnb-multi-input-mask__input.dnb-input__input{background:transparent;border:none;display:inline-block;font-family:var(--font-family-monospace);margin:0;outline:none;overflow:visible;padding:0 .125rem;text-align:center;transform:translateY(0);white-space:nowrap;width:auto}.dnb-multi-input-mask__input.dnb-input__input:first-of-type{padding-left:.5rem}.dnb-multi-input-mask__input.dnb-input__input:last-of-type{padding-right:.5rem}.dnb-input--large .dnb-multi-input-mask__input.dnb-input__input,.dnb-input--medium .dnb-multi-input-mask__input.dnb-input__input{padding:0 .25rem}.dnb-multi-input-mask{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.dnb-multi-input-mask:not(.dnb-input__status--error) .dnb-multi-input-mask__delimiter,.dnb-multi-input-mask:not(.dnb-input__status--error) .dnb-multi-input-mask__input{color:var(--color-black-55)}.dnb-multi-input-mask:not(.dnb-input__status--error) .dnb-multi-input-mask__delimiter--highlight,.dnb-multi-input-mask:not(.dnb-input__status--error) .dnb-multi-input-mask__input--highlight{color:var(--color-black)}
1
+ .dnb-input-masked--guide{font-family:var(--font-family-monospace)}.dnb-input-masked input::placeholder{color:inherit}.dnb-input-masked--hide-controls[type=number]::-webkit-inner-spin-button,.dnb-input-masked--hide-controls[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.dnb-input-masked--hide-controls[type=number]{-webkit-appearance:textfield;appearance:textfield}.dnb-multi-input-mask__fieldset{border:none;padding:0}.dnb-multi-input-mask__fieldset:not([class*=space__top]){margin-top:0}.dnb-multi-input-mask__fieldset:not([class*=space__bottom]){margin-bottom:0}.dnb-multi-input-mask__fieldset:not([class*=space__left]){margin-left:0}.dnb-multi-input-mask__fieldset:not([class*=space__right]){margin-right:0}.dnb-multi-input-mask__fieldset--horizontal{align-items:baseline;display:inline-flex;flex-flow:row wrap;gap:1rem}.dnb-multi-input-mask__input.dnb-input__input{background:transparent;border:none;display:inline-block;font-family:var(--font-family-monospace);margin:0;outline:none;overflow:visible;padding:0 .125rem;text-align:center;transform:translateY(0);white-space:nowrap;width:auto}.dnb-multi-input-mask__input.dnb-input__input:first-of-type{padding-left:.5rem}.dnb-multi-input-mask__input.dnb-input__input:last-of-type{padding-right:.5rem}.dnb-input--large .dnb-multi-input-mask__input.dnb-input__input,.dnb-input--medium .dnb-multi-input-mask__input.dnb-input__input{padding:0 .25rem}.dnb-multi-input-mask{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.dnb-multi-input-mask:not(.dnb-input__status--error) .dnb-multi-input-mask__delimiter,.dnb-multi-input-mask:not(.dnb-input__status--error) .dnb-multi-input-mask__input{color:var(--color-black-55)}.dnb-multi-input-mask:not(.dnb-input__status--error) .dnb-multi-input-mask__delimiter--highlight,.dnb-multi-input-mask:not(.dnb-input__status--error) .dnb-multi-input-mask__input--highlight{color:var(--color-black)}
@@ -14,6 +14,18 @@
14
14
  input::placeholder {
15
15
  color: inherit;
16
16
  }
17
+
18
+ &--hide-controls {
19
+ &[type='number']::-webkit-outer-spin-button,
20
+ &[type='number']::-webkit-inner-spin-button {
21
+ appearance: none;
22
+ margin: 0;
23
+ }
24
+
25
+ &[type='number'] {
26
+ appearance: textfield;
27
+ }
28
+ }
17
29
  }
18
30
 
19
31
  // MultiInputMask
@@ -10,6 +10,13 @@ export default class InputModeNumber {
10
10
  hasFocus: boolean;
11
11
  focusEventName: string;
12
12
  blurEventName: string;
13
+ _type: string;
14
+ _value: string;
15
+ _width: number;
16
+ _cssText: string;
17
+ _placeholder: string;
18
+ _selectionStart: number;
19
+ _selectionEnd: number;
13
20
  setElement(element: HTMLInputElement): void;
14
21
  handleLabel(): void;
15
22
  add(): void;
@@ -17,4 +24,5 @@ export default class InputModeNumber {
17
24
  remove(): void;
18
25
  onBlur: () => void;
19
26
  onFocus: () => void;
27
+ reset: () => void;
20
28
  }
@@ -8,6 +8,13 @@ export default class InputModeNumber {
8
8
  _defineProperty(this, "hasFocus", void 0);
9
9
  _defineProperty(this, "focusEventName", void 0);
10
10
  _defineProperty(this, "blurEventName", void 0);
11
+ _defineProperty(this, "_type", void 0);
12
+ _defineProperty(this, "_value", void 0);
13
+ _defineProperty(this, "_width", void 0);
14
+ _defineProperty(this, "_cssText", void 0);
15
+ _defineProperty(this, "_placeholder", void 0);
16
+ _defineProperty(this, "_selectionStart", void 0);
17
+ _defineProperty(this, "_selectionEnd", void 0);
11
18
  _defineProperty(this, "onBlur", () => {
12
19
  this.hasFocus = false;
13
20
  });
@@ -16,22 +23,44 @@ export default class InputModeNumber {
16
23
  return;
17
24
  }
18
25
  this.hasFocus = true;
19
- const type = this.inputElement.type;
20
- if (type === 'number') {
26
+ this._type = this.inputElement.type;
27
+ if (this._type === 'number') {
21
28
  return;
22
29
  }
23
- const value = this.inputElement.value;
24
- const placeholder = this.inputElement.placeholder;
25
- this.inputElement.placeholder = value;
30
+ this._value = this.inputElement.value;
31
+ this._width = this.inputElement.offsetWidth;
32
+ this._cssText = this.inputElement.style.cssText;
33
+ this._placeholder = this.inputElement.placeholder;
34
+ this._selectionStart = this.inputElement.selectionStart;
35
+ this._selectionEnd = this.inputElement.selectionEnd;
36
+ this.inputElement.placeholder = this._value;
26
37
  this.inputElement.type = 'number';
38
+ this.inputElement.classList.add('dnb-input-masked--hide-controls');
39
+ this.inputElement.style.width = `${this._width}px`;
27
40
  clearTimeout(this.timeout);
28
41
  this.timeout = setTimeout(() => {
42
+ this.reset();
43
+ }, 10);
44
+ });
45
+ _defineProperty(this, "reset", () => {
46
+ if (!this.inputElement) {
47
+ return;
48
+ }
49
+ try {
29
50
  var _this$inputElement$ru, _this$inputElement;
30
- this.inputElement.type = type;
31
- this.inputElement.value = value;
32
- this.inputElement.placeholder = placeholder;
51
+ this.inputElement.type = this._type;
52
+ this.inputElement.style.cssText = this._cssText;
53
+ this.inputElement.classList.remove('dnb-input-masked--hide-controls');
54
+ this.inputElement.value = this._value;
55
+ this.inputElement.placeholder = this._placeholder;
56
+ if (this._selectionStart > 0) {
57
+ this.inputElement.selectionStart = this._selectionStart;
58
+ this.inputElement.selectionEnd = this._selectionEnd;
59
+ }
33
60
  (_this$inputElement$ru = (_this$inputElement = this.inputElement)['runCorrectCaretPosition']) === null || _this$inputElement$ru === void 0 ? void 0 : _this$inputElement$ru.call(_this$inputElement);
34
- }, 5);
61
+ } catch (error) {
62
+ console.error(error);
63
+ }
35
64
  });
36
65
  }
37
66
  setElement(element) {
@@ -74,6 +103,7 @@ export default class InputModeNumber {
74
103
  }
75
104
  }
76
105
  remove() {
106
+ this.reset();
77
107
  clearTimeout(this.timeout);
78
108
  this.removeEvent(this.inputElement);
79
109
  this.removeEvent(this.labelElement);
@@ -1 +1 @@
1
- {"version":3,"file":"InputModeNumber.js","names":["IS_IOS","InputModeNumber","constructor","_defineProperty","hasFocus","inputElement","type","value","placeholder","clearTimeout","timeout","setTimeout","_this$inputElement$ru","_this$inputElement","call","setElement","element","focusEventName","blurEventName","add","handleLabel","_this$inputElement2","id","labelElement","document","querySelector","addEventListener","onFocus","_this$inputElement3","fnId","onBlur","removeEvent","removeEventListener","remove"],"sources":["../../../../../src/components/input-masked/text-mask/InputModeNumber.ts"],"sourcesContent":["import { IS_IOS } from '../../../shared/helpers'\n\n/**\n * This is a helper function (hack),\n * that will evoke a good numeric keyboard (on iOS) that supports decimals and minus keys.\n */\nexport default class InputModeNumber {\n inputElement: HTMLInputElement\n labelElement: HTMLLabelElement\n timeout: NodeJS.Timer\n hasFocus: boolean\n focusEventName: string\n blurEventName: string\n\n setElement(element: HTMLInputElement) {\n if (!IS_IOS) {\n return // stop here\n }\n\n /**\n * Why use \"mouseenter\" and not \"focus\", \"mousedown\" or \"touchstart\"?\n * - Because \"touchstart\" has unexpected behavior when holding the finger down before releasing.\n * - And because \"focus\" and \"mousedown\" is too late, we then can't change the type anymore.\n */\n this.focusEventName = 'mouseenter'\n this.blurEventName = 'blur'\n\n if (!this.inputElement) {\n this.inputElement = element\n this.add()\n this.handleLabel()\n }\n }\n handleLabel() {\n const id = this.inputElement?.id\n if (!id) {\n return\n }\n\n this.labelElement = document.querySelector(\n `[for=\"${id}\"]`\n ) as HTMLLabelElement\n\n if (this.labelElement) {\n this.labelElement.addEventListener('mousedown', this.onFocus)\n }\n }\n add() {\n const fnId = '__getCorrectCaretPosition'\n if (this.inputElement && !this.inputElement?.[fnId]) {\n this.inputElement[fnId] = true\n\n this.inputElement.addEventListener(this.focusEventName, this.onFocus)\n this.inputElement.addEventListener(this.blurEventName, this.onBlur)\n }\n }\n removeEvent(element: HTMLInputElement | HTMLLabelElement) {\n if (element) {\n element.removeEventListener(this.focusEventName, this.onFocus)\n element.removeEventListener(this.blurEventName, this.onBlur)\n element.removeEventListener('mousedown', this.onFocus)\n }\n }\n remove() {\n clearTimeout(this.timeout)\n\n this.removeEvent(this.inputElement)\n this.removeEvent(this.labelElement)\n\n delete this.inputElement\n delete this.labelElement\n }\n onBlur = () => {\n this.hasFocus = false\n }\n onFocus = () => {\n if (this.hasFocus || !this.inputElement) {\n return\n }\n\n this.hasFocus = true\n\n const type = this.inputElement.type\n\n if (type === 'number') {\n return // stop here\n }\n\n const value = this.inputElement.value\n const placeholder = this.inputElement.placeholder\n\n // To prevent flickering, show the placeholder, while the input value is \"empty\".\n this.inputElement.placeholder = value\n\n // Changing the type, will remove the current input value to show as \"empty\".\n this.inputElement.type = 'number'\n\n // Reset the input again\n clearTimeout(this.timeout)\n this.timeout = setTimeout(() => {\n this.inputElement.type = type\n this.inputElement.value = value // set the input value\n this.inputElement.placeholder = placeholder\n this.inputElement['runCorrectCaretPosition']?.()\n }, 5)\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"InputModeNumber.js","names":["IS_IOS","InputModeNumber","constructor","_defineProperty","hasFocus","inputElement","_type","type","_value","value","_width","offsetWidth","_cssText","style","cssText","_placeholder","placeholder","_selectionStart","selectionStart","_selectionEnd","selectionEnd","classList","add","width","clearTimeout","timeout","setTimeout","reset","_this$inputElement$ru","_this$inputElement","remove","call","error","console","setElement","element","focusEventName","blurEventName","handleLabel","_this$inputElement2","id","labelElement","document","querySelector","addEventListener","onFocus","_this$inputElement3","fnId","onBlur","removeEvent","removeEventListener"],"sources":["../../../../../src/components/input-masked/text-mask/InputModeNumber.ts"],"sourcesContent":["import { IS_IOS } from '../../../shared/helpers'\n\n/**\n * This is a helper function (hack),\n * that will evoke a good numeric keyboard (on iOS) that supports decimals and minus keys.\n */\nexport default class InputModeNumber {\n inputElement: HTMLInputElement\n labelElement: HTMLLabelElement\n timeout: NodeJS.Timer\n hasFocus: boolean\n focusEventName: string\n blurEventName: string\n _type: string\n _value: string\n _width: number\n _cssText: string\n _placeholder: string\n _selectionStart: number\n _selectionEnd: number\n\n setElement(element: HTMLInputElement) {\n if (!IS_IOS) {\n return // stop here\n }\n\n /**\n * Why use \"mouseenter\" and not \"focus\", \"mousedown\" or \"touchstart\"?\n * - Because \"touchstart\" has unexpected behavior when holding the finger down before releasing.\n * - And because \"focus\" and \"mousedown\" is too late, we then can't change the type anymore.\n */\n this.focusEventName = 'mouseenter'\n this.blurEventName = 'blur'\n\n if (!this.inputElement) {\n this.inputElement = element\n this.add()\n this.handleLabel()\n }\n }\n handleLabel() {\n const id = this.inputElement?.id\n if (!id) {\n return\n }\n\n this.labelElement = document.querySelector(\n `[for=\"${id}\"]`\n ) as HTMLLabelElement\n\n if (this.labelElement) {\n this.labelElement.addEventListener('mousedown', this.onFocus)\n }\n }\n add() {\n const fnId = '__getCorrectCaretPosition'\n if (this.inputElement && !this.inputElement?.[fnId]) {\n this.inputElement[fnId] = true\n\n this.inputElement.addEventListener(this.focusEventName, this.onFocus)\n this.inputElement.addEventListener(this.blurEventName, this.onBlur)\n }\n }\n removeEvent(element: HTMLInputElement | HTMLLabelElement) {\n if (element) {\n element.removeEventListener(this.focusEventName, this.onFocus)\n element.removeEventListener(this.blurEventName, this.onBlur)\n element.removeEventListener('mousedown', this.onFocus)\n }\n }\n remove() {\n this.reset()\n\n clearTimeout(this.timeout)\n\n this.removeEvent(this.inputElement)\n this.removeEvent(this.labelElement)\n\n delete this.inputElement\n delete this.labelElement\n }\n onBlur = () => {\n this.hasFocus = false\n }\n onFocus = () => {\n if (this.hasFocus || !this.inputElement) {\n return // stop here\n }\n\n this.hasFocus = true\n\n this._type = this.inputElement.type\n\n if (this._type === 'number') {\n return // stop here\n }\n\n this._value = this.inputElement.value\n this._width = this.inputElement.offsetWidth\n this._cssText = this.inputElement.style.cssText\n this._placeholder = this.inputElement.placeholder\n this._selectionStart = this.inputElement.selectionStart\n this._selectionEnd = this.inputElement.selectionEnd\n\n // To prevent flickering, show the placeholder, while the input value is \"empty\".\n this.inputElement.placeholder = this._value\n\n // Changing the type, will remove the current input value to show as \"empty\".\n this.inputElement.type = 'number'\n\n // Hide steppers with pseudo-elements using CSS injection\n this.inputElement.classList.add('dnb-input-masked--hide-controls')\n\n // Keep the width the same as the input element\n this.inputElement.style.width = `${this._width}px`\n\n // Reset the input again\n clearTimeout(this.timeout)\n this.timeout = setTimeout(() => {\n this.reset()\n }, 10) // Delay before changing the type back again.\n }\n reset = () => {\n if (!this.inputElement) {\n return // stop here\n }\n try {\n this.inputElement.type = this._type\n this.inputElement.style.cssText = this._cssText // Because we did set a width, we need to reset the cssText\n this.inputElement.classList.remove('dnb-input-masked--hide-controls')\n this.inputElement.value = this._value // set the input value, else it will be empty\n this.inputElement.placeholder = this._placeholder\n if (this._selectionStart > 0) {\n this.inputElement.selectionStart = this._selectionStart\n this.inputElement.selectionEnd = this._selectionEnd\n }\n this.inputElement['runCorrectCaretPosition']?.()\n } catch (error) {\n console.error(error)\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- export default function adjustCaretPosition({ previousConformedValue, previousPlaceholder, currentCaretPosition, conformedValue, rawValue, placeholderChar, placeholder, indexesOfPipedChars, caretTrapIndexes, }: {
1
+ export default function adjustCaretPosition({ previousConformedValue, previousPlaceholder, currentCaretPosition, conformedValue, rawValue, placeholderChar, placeholder, indexesOfPipedChars, caretTrapIndexes, keepCharPositions, }: {
2
2
  previousConformedValue?: string;
3
3
  previousPlaceholder?: string;
4
4
  currentCaretPosition?: number;
@@ -8,4 +8,5 @@ export default function adjustCaretPosition({ previousConformedValue, previousPl
8
8
  placeholder: any;
9
9
  indexesOfPipedChars?: any[];
10
10
  caretTrapIndexes?: any[];
11
+ keepCharPositions?: boolean;
11
12
  }): number;
@@ -9,7 +9,8 @@ export default function adjustCaretPosition({
9
9
  placeholderChar,
10
10
  placeholder,
11
11
  indexesOfPipedChars = defaultArray,
12
- caretTrapIndexes = defaultArray
12
+ caretTrapIndexes = defaultArray,
13
+ keepCharPositions = false
13
14
  }) {
14
15
  if (currentCaretPosition === 0 || !rawValue.length) {
15
16
  return 0;
@@ -25,7 +26,7 @@ export default function adjustCaretPosition({
25
26
  if (isPartialMultiCharEdit) {
26
27
  return currentCaretPosition;
27
28
  }
28
- const possiblyHasRejectedChar = isAddition && (previousConformedValue === conformedValue || conformedValue === placeholder);
29
+ const possiblyHasRejectedChar = isAddition && (keepCharPositions !== false && previousConformedValue === conformedValue || conformedValue === placeholder);
29
30
  let startingSearchIndex = 0;
30
31
  let trackRightCharacter;
31
32
  let targetChar;