@dnb/eufemia 10.73.2 → 10.74.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 (624) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/cjs/components/autocomplete/Autocomplete.js +7 -4
  3. package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
  4. package/cjs/components/autocomplete/AutocompleteDocs.d.ts +289 -3
  5. package/cjs/components/autocomplete/AutocompleteDocs.js +2 -2
  6. package/cjs/components/autocomplete/AutocompleteDocs.js.map +1 -1
  7. package/cjs/components/button/style/dnb-button.css +1 -0
  8. package/cjs/components/button/style/dnb-button.min.css +1 -1
  9. package/cjs/components/button/style/dnb-button.scss +1 -0
  10. package/cjs/components/checkbox/Checkbox.d.ts +9 -1
  11. package/cjs/components/checkbox/Checkbox.js +59 -34
  12. package/cjs/components/checkbox/Checkbox.js.map +1 -1
  13. package/cjs/components/checkbox/CheckboxDocs.js +6 -1
  14. package/cjs/components/checkbox/CheckboxDocs.js.map +1 -1
  15. package/cjs/components/date-picker/DatePicker.d.ts +4 -0
  16. package/cjs/components/date-picker/DatePicker.js +4 -3
  17. package/cjs/components/date-picker/DatePicker.js.map +1 -1
  18. package/cjs/components/date-picker/DatePickerCalendar.d.ts +2 -16
  19. package/cjs/components/date-picker/DatePickerCalendar.js +27 -86
  20. package/cjs/components/date-picker/DatePickerCalendar.js.map +1 -1
  21. package/cjs/components/date-picker/DatePickerCalendarNavigator.d.ts +37 -0
  22. package/cjs/components/date-picker/DatePickerCalendarNavigator.js +173 -0
  23. package/cjs/components/date-picker/DatePickerCalendarNavigator.js.map +1 -0
  24. package/cjs/components/date-picker/DatePickerContext.d.ts +3 -0
  25. package/cjs/components/date-picker/DatePickerContext.js.map +1 -1
  26. package/cjs/components/date-picker/DatePickerDocs.js +6 -1
  27. package/cjs/components/date-picker/DatePickerDocs.js.map +1 -1
  28. package/cjs/components/date-picker/DatePickerFooter.js +20 -17
  29. package/cjs/components/date-picker/DatePickerFooter.js.map +1 -1
  30. package/cjs/components/date-picker/DatePickerProvider.js +7 -0
  31. package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
  32. package/cjs/components/date-picker/DatePickerRange.js +2 -28
  33. package/cjs/components/date-picker/DatePickerRange.js.map +1 -1
  34. package/cjs/components/date-picker/hooks/useSubmittedDates.d.ts +7 -0
  35. package/cjs/components/date-picker/hooks/useSubmittedDates.js +19 -0
  36. package/cjs/components/date-picker/hooks/useSubmittedDates.js.map +1 -0
  37. package/cjs/components/date-picker/style/dnb-date-picker.css +1 -1
  38. package/cjs/components/date-picker/style/dnb-date-picker.min.css +1 -1
  39. package/cjs/components/date-picker/style/dnb-date-picker.scss +1 -1
  40. package/cjs/components/date-picker/style/themes/dnb-date-picker-theme-ui.css +17 -0
  41. package/cjs/components/date-picker/style/themes/dnb-date-picker-theme-ui.min.css +1 -1
  42. package/cjs/components/date-picker/style/themes/dnb-date-picker-theme-ui.scss +19 -0
  43. package/cjs/components/drawer/Drawer.js +1 -0
  44. package/cjs/components/drawer/Drawer.js.map +1 -1
  45. package/cjs/components/dropdown/Dropdown.js +6 -4
  46. package/cjs/components/dropdown/Dropdown.js.map +1 -1
  47. package/cjs/components/dropdown/DropdownDocs.d.ts +179 -3
  48. package/cjs/components/dropdown/DropdownDocs.js.map +1 -1
  49. package/cjs/components/heading/HeadingHelpers.js +9 -5
  50. package/cjs/components/heading/HeadingHelpers.js.map +1 -1
  51. package/cjs/components/icon/Icon.d.ts +2 -2
  52. package/cjs/components/input-masked/InputMaskedDocs.js +1 -1
  53. package/cjs/components/input-masked/InputMaskedDocs.js.map +1 -1
  54. package/cjs/components/input-masked/InputMaskedHooks.d.ts +1 -0
  55. package/cjs/components/input-masked/InputMaskedHooks.js +38 -6
  56. package/cjs/components/input-masked/InputMaskedHooks.js.map +1 -1
  57. package/cjs/components/input-masked/InputMaskedUtils.js +5 -4
  58. package/cjs/components/input-masked/InputMaskedUtils.js.map +1 -1
  59. package/cjs/components/number-format/NumberUtils.js +6 -4
  60. package/cjs/components/number-format/NumberUtils.js.map +1 -1
  61. package/cjs/components/switch/SwitchDocs.js +2 -2
  62. package/cjs/components/switch/SwitchDocs.js.map +1 -1
  63. package/cjs/extensions/forms/DataContext/Context.d.ts +1 -1
  64. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  65. package/cjs/extensions/forms/DataContext/Provider/Provider.js +9 -0
  66. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  67. package/cjs/extensions/forms/Field/Boolean/Boolean.d.ts +1 -0
  68. package/cjs/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
  69. package/cjs/extensions/forms/Field/Boolean/BooleanDocs.d.ts +1 -0
  70. package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js +8 -1
  71. package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
  72. package/cjs/extensions/forms/Field/Date/Date.d.ts +1 -1
  73. package/cjs/extensions/forms/Field/Date/Date.js +1 -1
  74. package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
  75. package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  76. package/cjs/extensions/forms/Field/Number/NumberDocs.js +1 -1
  77. package/cjs/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
  78. package/cjs/extensions/forms/Field/Provider/useFieldProvider.d.ts +3 -3
  79. package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +2 -2
  80. package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
  81. package/cjs/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js +2 -2
  82. package/cjs/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js.map +1 -1
  83. package/cjs/extensions/forms/Field/Selection/Selection.d.ts +2 -0
  84. package/cjs/extensions/forms/Field/Selection/Selection.js +10 -9
  85. package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
  86. package/cjs/extensions/forms/Field/Toggle/Toggle.d.ts +7 -0
  87. package/cjs/extensions/forms/Field/Toggle/Toggle.js +24 -8
  88. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  89. package/cjs/extensions/forms/Field/Toggle/ToggleDocs.d.ts +1 -0
  90. package/cjs/extensions/forms/Field/Toggle/ToggleDocs.js +8 -1
  91. package/cjs/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -1
  92. package/cjs/extensions/forms/Form/Isolation/IsolatedContainer.d.ts +4 -0
  93. package/cjs/extensions/forms/Form/Isolation/IsolatedContainer.js +64 -0
  94. package/cjs/extensions/forms/Form/Isolation/IsolatedContainer.js.map +1 -0
  95. package/cjs/extensions/forms/Form/Isolation/Isolation.d.ts +16 -0
  96. package/cjs/extensions/forms/Form/Isolation/Isolation.js +39 -14
  97. package/cjs/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  98. package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -1
  99. package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
  100. package/cjs/extensions/forms/Form/Isolation/IsolationContext.d.ts +12 -0
  101. package/cjs/extensions/forms/Form/Isolation/IsolationContext.js +11 -0
  102. package/cjs/extensions/forms/Form/Isolation/IsolationContext.js.map +1 -0
  103. package/cjs/extensions/forms/Form/Isolation/IsolationDataReference.d.ts +9 -0
  104. package/cjs/extensions/forms/Form/Isolation/IsolationDataReference.js +31 -0
  105. package/cjs/extensions/forms/Form/Isolation/IsolationDataReference.js.map +1 -0
  106. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js +15 -0
  107. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  108. package/cjs/extensions/forms/Form/Isolation/IsolationResetButton.d.ts +7 -0
  109. package/cjs/extensions/forms/Form/Isolation/IsolationResetButton.js +112 -0
  110. package/cjs/extensions/forms/Form/Isolation/IsolationResetButton.js.map +1 -0
  111. package/cjs/extensions/forms/Form/Isolation/useDataContextSnapshot.d.ts +7 -0
  112. package/cjs/extensions/forms/Form/Isolation/useDataContextSnapshot.js +58 -0
  113. package/cjs/extensions/forms/Form/Isolation/useDataContextSnapshot.js.map +1 -0
  114. package/cjs/extensions/forms/Form/Isolation/useHandleStatus.d.ts +9 -0
  115. package/cjs/extensions/forms/Form/Isolation/useHandleStatus.js +57 -0
  116. package/cjs/extensions/forms/Form/Isolation/useHandleStatus.js.map +1 -0
  117. package/cjs/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.js +11 -9
  118. package/cjs/extensions/forms/Form/Isolation/useHasContentChanged.js.map +1 -0
  119. package/cjs/extensions/forms/Form/Snapshot/Snapshot.d.ts +2 -1
  120. package/cjs/extensions/forms/Form/Snapshot/Snapshot.js.map +1 -1
  121. package/cjs/extensions/forms/Iterate/EditContainer/ResetButton.js +1 -1
  122. package/cjs/extensions/forms/Iterate/EditContainer/ResetButton.js.map +1 -1
  123. package/cjs/extensions/forms/Iterate/EditContainer/index.d.ts +1 -1
  124. package/cjs/extensions/forms/Iterate/EditContainer/index.js +1 -1
  125. package/cjs/extensions/forms/Iterate/EditContainer/index.js.map +1 -1
  126. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +7 -0
  127. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js +15 -56
  128. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
  129. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +2 -2
  130. package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  131. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +1 -1
  132. package/cjs/extensions/forms/constants/locales/en-GB.js +3 -3
  133. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  134. package/cjs/extensions/forms/constants/locales/en-US.d.ts +1 -1
  135. package/cjs/extensions/forms/constants/locales/index.d.ts +2 -2
  136. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +1 -1
  137. package/cjs/extensions/forms/constants/locales/nb-NO.js +3 -3
  138. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  139. package/cjs/extensions/forms/constants/locales/sv-SE.d.ts +1 -1
  140. package/cjs/extensions/forms/constants/locales/sv-SE.js +3 -3
  141. package/cjs/extensions/forms/constants/locales/sv-SE.js.map +1 -1
  142. package/cjs/extensions/forms/hooks/useDataContext.js +5 -3
  143. package/cjs/extensions/forms/hooks/useDataContext.js.map +1 -1
  144. package/cjs/extensions/forms/hooks/useSnapshot.js +17 -14
  145. package/cjs/extensions/forms/hooks/useSnapshot.js.map +1 -1
  146. package/cjs/fragments/drawer-list/DrawerList.d.ts +176 -224
  147. package/cjs/fragments/drawer-list/DrawerList.js +70 -175
  148. package/cjs/fragments/drawer-list/DrawerList.js.map +1 -1
  149. package/cjs/fragments/drawer-list/DrawerListContext.d.ts +27 -2
  150. package/cjs/fragments/drawer-list/DrawerListContext.js.map +1 -1
  151. package/cjs/fragments/drawer-list/DrawerListDocs.d.ts +211 -4
  152. package/cjs/fragments/drawer-list/DrawerListDocs.js +2 -2
  153. package/cjs/fragments/drawer-list/DrawerListDocs.js.map +1 -1
  154. package/cjs/fragments/drawer-list/DrawerListHelpers.d.ts +85 -89
  155. package/cjs/fragments/drawer-list/DrawerListHelpers.js +52 -58
  156. package/cjs/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
  157. package/cjs/fragments/drawer-list/DrawerListItem.d.ts +30 -0
  158. package/cjs/fragments/drawer-list/DrawerListItem.js +106 -0
  159. package/cjs/fragments/drawer-list/DrawerListItem.js.map +1 -0
  160. package/cjs/fragments/drawer-list/DrawerListPortal.d.ts +20 -30
  161. package/cjs/fragments/drawer-list/DrawerListPortal.js +93 -125
  162. package/cjs/fragments/drawer-list/DrawerListPortal.js.map +1 -1
  163. package/cjs/fragments/drawer-list/DrawerListProvider.d.ts +217 -11
  164. package/cjs/fragments/drawer-list/DrawerListProvider.js +11 -18
  165. package/cjs/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  166. package/cjs/shared/Eufemia.d.ts +1 -1
  167. package/cjs/shared/Eufemia.js +2 -2
  168. package/cjs/shared/Eufemia.js.map +1 -1
  169. package/cjs/shared/component-helper.d.ts +45 -48
  170. package/cjs/shared/component-helper.js +72 -201
  171. package/cjs/shared/component-helper.js.map +1 -1
  172. package/cjs/shared/helpers/withCamelCaseProps.d.ts +4 -5
  173. package/cjs/shared/helpers/withCamelCaseProps.js +7 -2
  174. package/cjs/shared/helpers/withCamelCaseProps.js.map +1 -1
  175. package/cjs/shared/legacy/component-helper-legacy.d.ts +19 -0
  176. package/cjs/shared/legacy/component-helper-legacy.js +202 -0
  177. package/cjs/shared/legacy/component-helper-legacy.js.map +1 -0
  178. package/cjs/shared/locales/en-GB.d.ts +1 -0
  179. package/cjs/shared/locales/en-GB.js +1 -0
  180. package/cjs/shared/locales/en-GB.js.map +1 -1
  181. package/cjs/shared/locales/en-US.js.map +1 -1
  182. package/cjs/shared/locales/index.d.ts +2 -0
  183. package/cjs/shared/locales/nb-NO.d.ts +1 -0
  184. package/cjs/shared/locales/nb-NO.js +2 -1
  185. package/cjs/shared/locales/nb-NO.js.map +1 -1
  186. package/cjs/shared/locales/sv-SE.d.ts +1 -0
  187. package/cjs/shared/locales/sv-SE.js +1 -0
  188. package/cjs/shared/locales/sv-SE.js.map +1 -1
  189. package/cjs/style/core/scopes.scss +1 -1
  190. package/cjs/style/dnb-ui-basis.css +1 -1
  191. package/cjs/style/dnb-ui-basis.min.css +1 -1
  192. package/cjs/style/dnb-ui-body.css +1 -1
  193. package/cjs/style/dnb-ui-body.min.css +1 -1
  194. package/cjs/style/dnb-ui-components.css +2 -1
  195. package/cjs/style/dnb-ui-components.min.css +1 -1
  196. package/cjs/style/dnb-ui-core.css +1 -1
  197. package/cjs/style/dnb-ui-core.min.css +1 -1
  198. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +19 -1
  199. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  200. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +19 -1
  201. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  202. package/cjs/style/themes/theme-ui/ui-theme-components.css +19 -1
  203. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  204. package/components/autocomplete/Autocomplete.js +6 -3
  205. package/components/autocomplete/Autocomplete.js.map +1 -1
  206. package/components/autocomplete/AutocompleteDocs.d.ts +289 -3
  207. package/components/autocomplete/AutocompleteDocs.js +1 -1
  208. package/components/autocomplete/AutocompleteDocs.js.map +1 -1
  209. package/components/button/style/dnb-button.css +1 -0
  210. package/components/button/style/dnb-button.min.css +1 -1
  211. package/components/button/style/dnb-button.scss +1 -0
  212. package/components/checkbox/Checkbox.d.ts +9 -1
  213. package/components/checkbox/Checkbox.js +60 -35
  214. package/components/checkbox/Checkbox.js.map +1 -1
  215. package/components/checkbox/CheckboxDocs.js +6 -1
  216. package/components/checkbox/CheckboxDocs.js.map +1 -1
  217. package/components/date-picker/DatePicker.d.ts +4 -0
  218. package/components/date-picker/DatePicker.js +4 -3
  219. package/components/date-picker/DatePicker.js.map +1 -1
  220. package/components/date-picker/DatePickerCalendar.d.ts +2 -16
  221. package/components/date-picker/DatePickerCalendar.js +27 -86
  222. package/components/date-picker/DatePickerCalendar.js.map +1 -1
  223. package/components/date-picker/DatePickerCalendarNavigator.d.ts +37 -0
  224. package/components/date-picker/DatePickerCalendarNavigator.js +162 -0
  225. package/components/date-picker/DatePickerCalendarNavigator.js.map +1 -0
  226. package/components/date-picker/DatePickerContext.d.ts +3 -0
  227. package/components/date-picker/DatePickerContext.js.map +1 -1
  228. package/components/date-picker/DatePickerDocs.js +6 -1
  229. package/components/date-picker/DatePickerDocs.js.map +1 -1
  230. package/components/date-picker/DatePickerFooter.js +20 -17
  231. package/components/date-picker/DatePickerFooter.js.map +1 -1
  232. package/components/date-picker/DatePickerProvider.js +7 -0
  233. package/components/date-picker/DatePickerProvider.js.map +1 -1
  234. package/components/date-picker/DatePickerRange.js +2 -28
  235. package/components/date-picker/DatePickerRange.js.map +1 -1
  236. package/components/date-picker/hooks/useSubmittedDates.d.ts +7 -0
  237. package/components/date-picker/hooks/useSubmittedDates.js +14 -0
  238. package/components/date-picker/hooks/useSubmittedDates.js.map +1 -0
  239. package/components/date-picker/style/dnb-date-picker.css +1 -1
  240. package/components/date-picker/style/dnb-date-picker.min.css +1 -1
  241. package/components/date-picker/style/dnb-date-picker.scss +1 -1
  242. package/components/date-picker/style/themes/dnb-date-picker-theme-ui.css +17 -0
  243. package/components/date-picker/style/themes/dnb-date-picker-theme-ui.min.css +1 -1
  244. package/components/date-picker/style/themes/dnb-date-picker-theme-ui.scss +19 -0
  245. package/components/drawer/Drawer.js +1 -0
  246. package/components/drawer/Drawer.js.map +1 -1
  247. package/components/dropdown/Dropdown.js +6 -4
  248. package/components/dropdown/Dropdown.js.map +1 -1
  249. package/components/dropdown/DropdownDocs.d.ts +179 -3
  250. package/components/dropdown/DropdownDocs.js.map +1 -1
  251. package/components/heading/HeadingHelpers.js +9 -5
  252. package/components/heading/HeadingHelpers.js.map +1 -1
  253. package/components/icon/Icon.d.ts +2 -2
  254. package/components/input-masked/InputMaskedDocs.js +1 -1
  255. package/components/input-masked/InputMaskedDocs.js.map +1 -1
  256. package/components/input-masked/InputMaskedHooks.d.ts +1 -0
  257. package/components/input-masked/InputMaskedHooks.js +39 -7
  258. package/components/input-masked/InputMaskedHooks.js.map +1 -1
  259. package/components/input-masked/InputMaskedUtils.js +6 -5
  260. package/components/input-masked/InputMaskedUtils.js.map +1 -1
  261. package/components/number-format/NumberUtils.js +5 -4
  262. package/components/number-format/NumberUtils.js.map +1 -1
  263. package/components/switch/SwitchDocs.js +2 -2
  264. package/components/switch/SwitchDocs.js.map +1 -1
  265. package/es/components/autocomplete/Autocomplete.js +6 -3
  266. package/es/components/autocomplete/Autocomplete.js.map +1 -1
  267. package/es/components/autocomplete/AutocompleteDocs.d.ts +289 -3
  268. package/es/components/autocomplete/AutocompleteDocs.js +1 -1
  269. package/es/components/autocomplete/AutocompleteDocs.js.map +1 -1
  270. package/es/components/button/style/dnb-button.css +1 -0
  271. package/es/components/button/style/dnb-button.min.css +1 -1
  272. package/es/components/button/style/dnb-button.scss +1 -0
  273. package/es/components/checkbox/Checkbox.d.ts +9 -1
  274. package/es/components/checkbox/Checkbox.js +60 -35
  275. package/es/components/checkbox/Checkbox.js.map +1 -1
  276. package/es/components/checkbox/CheckboxDocs.js +6 -1
  277. package/es/components/checkbox/CheckboxDocs.js.map +1 -1
  278. package/es/components/date-picker/DatePicker.d.ts +4 -0
  279. package/es/components/date-picker/DatePicker.js +4 -3
  280. package/es/components/date-picker/DatePicker.js.map +1 -1
  281. package/es/components/date-picker/DatePickerCalendar.d.ts +2 -16
  282. package/es/components/date-picker/DatePickerCalendar.js +23 -80
  283. package/es/components/date-picker/DatePickerCalendar.js.map +1 -1
  284. package/es/components/date-picker/DatePickerCalendarNavigator.d.ts +37 -0
  285. package/es/components/date-picker/DatePickerCalendarNavigator.js +158 -0
  286. package/es/components/date-picker/DatePickerCalendarNavigator.js.map +1 -0
  287. package/es/components/date-picker/DatePickerContext.d.ts +3 -0
  288. package/es/components/date-picker/DatePickerContext.js.map +1 -1
  289. package/es/components/date-picker/DatePickerDocs.js +6 -1
  290. package/es/components/date-picker/DatePickerDocs.js.map +1 -1
  291. package/es/components/date-picker/DatePickerFooter.js +20 -17
  292. package/es/components/date-picker/DatePickerFooter.js.map +1 -1
  293. package/es/components/date-picker/DatePickerProvider.js +7 -0
  294. package/es/components/date-picker/DatePickerProvider.js.map +1 -1
  295. package/es/components/date-picker/DatePickerRange.js +2 -27
  296. package/es/components/date-picker/DatePickerRange.js.map +1 -1
  297. package/es/components/date-picker/hooks/useSubmittedDates.d.ts +7 -0
  298. package/es/components/date-picker/hooks/useSubmittedDates.js +14 -0
  299. package/es/components/date-picker/hooks/useSubmittedDates.js.map +1 -0
  300. package/es/components/date-picker/style/dnb-date-picker.css +1 -1
  301. package/es/components/date-picker/style/dnb-date-picker.min.css +1 -1
  302. package/es/components/date-picker/style/dnb-date-picker.scss +1 -1
  303. package/es/components/date-picker/style/themes/dnb-date-picker-theme-ui.css +17 -0
  304. package/es/components/date-picker/style/themes/dnb-date-picker-theme-ui.min.css +1 -1
  305. package/es/components/date-picker/style/themes/dnb-date-picker-theme-ui.scss +19 -0
  306. package/es/components/drawer/Drawer.js +1 -0
  307. package/es/components/drawer/Drawer.js.map +1 -1
  308. package/es/components/dropdown/Dropdown.js +6 -4
  309. package/es/components/dropdown/Dropdown.js.map +1 -1
  310. package/es/components/dropdown/DropdownDocs.d.ts +179 -3
  311. package/es/components/dropdown/DropdownDocs.js.map +1 -1
  312. package/es/components/heading/HeadingHelpers.js +9 -5
  313. package/es/components/heading/HeadingHelpers.js.map +1 -1
  314. package/es/components/icon/Icon.d.ts +2 -2
  315. package/es/components/input-masked/InputMaskedDocs.js +1 -1
  316. package/es/components/input-masked/InputMaskedDocs.js.map +1 -1
  317. package/es/components/input-masked/InputMaskedHooks.d.ts +1 -0
  318. package/es/components/input-masked/InputMaskedHooks.js +39 -7
  319. package/es/components/input-masked/InputMaskedHooks.js.map +1 -1
  320. package/es/components/input-masked/InputMaskedUtils.js +6 -5
  321. package/es/components/input-masked/InputMaskedUtils.js.map +1 -1
  322. package/es/components/number-format/NumberUtils.js +5 -4
  323. package/es/components/number-format/NumberUtils.js.map +1 -1
  324. package/es/components/switch/SwitchDocs.js +2 -2
  325. package/es/components/switch/SwitchDocs.js.map +1 -1
  326. package/es/extensions/forms/DataContext/Context.d.ts +1 -1
  327. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  328. package/es/extensions/forms/DataContext/Provider/Provider.js +9 -0
  329. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  330. package/es/extensions/forms/Field/Boolean/Boolean.d.ts +1 -0
  331. package/es/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
  332. package/es/extensions/forms/Field/Boolean/BooleanDocs.d.ts +1 -0
  333. package/es/extensions/forms/Field/Boolean/BooleanDocs.js +7 -0
  334. package/es/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
  335. package/es/extensions/forms/Field/Date/Date.d.ts +1 -1
  336. package/es/extensions/forms/Field/Date/Date.js +1 -1
  337. package/es/extensions/forms/Field/Date/Date.js.map +1 -1
  338. package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  339. package/es/extensions/forms/Field/Number/NumberDocs.js +1 -1
  340. package/es/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
  341. package/es/extensions/forms/Field/Provider/useFieldProvider.d.ts +3 -3
  342. package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +3 -3
  343. package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
  344. package/es/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js +3 -3
  345. package/es/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js.map +1 -1
  346. package/es/extensions/forms/Field/Selection/Selection.d.ts +2 -0
  347. package/es/extensions/forms/Field/Selection/Selection.js +9 -8
  348. package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
  349. package/es/extensions/forms/Field/Toggle/Toggle.d.ts +7 -0
  350. package/es/extensions/forms/Field/Toggle/Toggle.js +24 -6
  351. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  352. package/es/extensions/forms/Field/Toggle/ToggleDocs.d.ts +1 -0
  353. package/es/extensions/forms/Field/Toggle/ToggleDocs.js +7 -0
  354. package/es/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -1
  355. package/es/extensions/forms/Form/Isolation/IsolatedContainer.d.ts +4 -0
  356. package/es/extensions/forms/Form/Isolation/IsolatedContainer.js +53 -0
  357. package/es/extensions/forms/Form/Isolation/IsolatedContainer.js.map +1 -0
  358. package/es/extensions/forms/Form/Isolation/Isolation.d.ts +16 -0
  359. package/es/extensions/forms/Form/Isolation/Isolation.js +40 -14
  360. package/es/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  361. package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -1
  362. package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
  363. package/es/extensions/forms/Form/Isolation/IsolationContext.d.ts +12 -0
  364. package/es/extensions/forms/Form/Isolation/IsolationContext.js +6 -0
  365. package/es/extensions/forms/Form/Isolation/IsolationContext.js.map +1 -0
  366. package/es/extensions/forms/Form/Isolation/IsolationDataReference.d.ts +9 -0
  367. package/es/extensions/forms/Form/Isolation/IsolationDataReference.js +25 -0
  368. package/es/extensions/forms/Form/Isolation/IsolationDataReference.js.map +1 -0
  369. package/es/extensions/forms/Form/Isolation/IsolationDocs.js +15 -0
  370. package/es/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  371. package/es/extensions/forms/Form/Isolation/IsolationResetButton.d.ts +7 -0
  372. package/es/extensions/forms/Form/Isolation/IsolationResetButton.js +99 -0
  373. package/es/extensions/forms/Form/Isolation/IsolationResetButton.js.map +1 -0
  374. package/es/extensions/forms/Form/Isolation/useDataContextSnapshot.d.ts +7 -0
  375. package/es/extensions/forms/Form/Isolation/useDataContextSnapshot.js +50 -0
  376. package/es/extensions/forms/Form/Isolation/useDataContextSnapshot.js.map +1 -0
  377. package/es/extensions/forms/Form/Isolation/useHandleStatus.d.ts +9 -0
  378. package/es/extensions/forms/Form/Isolation/useHandleStatus.js +48 -0
  379. package/es/extensions/forms/Form/Isolation/useHandleStatus.js.map +1 -0
  380. package/es/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.js +12 -10
  381. package/es/extensions/forms/Form/Isolation/useHasContentChanged.js.map +1 -0
  382. package/es/extensions/forms/Form/Snapshot/Snapshot.d.ts +2 -1
  383. package/es/extensions/forms/Form/Snapshot/Snapshot.js.map +1 -1
  384. package/es/extensions/forms/Iterate/EditContainer/ResetButton.js +1 -1
  385. package/es/extensions/forms/Iterate/EditContainer/ResetButton.js.map +1 -1
  386. package/es/extensions/forms/Iterate/EditContainer/index.d.ts +1 -1
  387. package/es/extensions/forms/Iterate/EditContainer/index.js +1 -1
  388. package/es/extensions/forms/Iterate/EditContainer/index.js.map +1 -1
  389. package/es/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +7 -0
  390. package/es/extensions/forms/Iterate/PushContainer/PushContainer.js +16 -55
  391. package/es/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
  392. package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +2 -2
  393. package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  394. package/es/extensions/forms/constants/locales/en-GB.d.ts +1 -1
  395. package/es/extensions/forms/constants/locales/en-GB.js +3 -3
  396. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  397. package/es/extensions/forms/constants/locales/en-US.d.ts +1 -1
  398. package/es/extensions/forms/constants/locales/index.d.ts +2 -2
  399. package/es/extensions/forms/constants/locales/nb-NO.d.ts +1 -1
  400. package/es/extensions/forms/constants/locales/nb-NO.js +3 -3
  401. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  402. package/es/extensions/forms/constants/locales/sv-SE.d.ts +1 -1
  403. package/es/extensions/forms/constants/locales/sv-SE.js +3 -3
  404. package/es/extensions/forms/constants/locales/sv-SE.js.map +1 -1
  405. package/es/extensions/forms/hooks/useDataContext.js +5 -3
  406. package/es/extensions/forms/hooks/useDataContext.js.map +1 -1
  407. package/es/extensions/forms/hooks/useSnapshot.js +18 -15
  408. package/es/extensions/forms/hooks/useSnapshot.js.map +1 -1
  409. package/es/fragments/drawer-list/DrawerList.d.ts +176 -224
  410. package/es/fragments/drawer-list/DrawerList.js +72 -173
  411. package/es/fragments/drawer-list/DrawerList.js.map +1 -1
  412. package/es/fragments/drawer-list/DrawerListContext.d.ts +27 -2
  413. package/es/fragments/drawer-list/DrawerListContext.js.map +1 -1
  414. package/es/fragments/drawer-list/DrawerListDocs.d.ts +211 -4
  415. package/es/fragments/drawer-list/DrawerListDocs.js +2 -2
  416. package/es/fragments/drawer-list/DrawerListDocs.js.map +1 -1
  417. package/es/fragments/drawer-list/DrawerListHelpers.d.ts +85 -89
  418. package/es/fragments/drawer-list/DrawerListHelpers.js +45 -54
  419. package/es/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
  420. package/es/fragments/drawer-list/DrawerListItem.d.ts +30 -0
  421. package/es/fragments/drawer-list/DrawerListItem.js +90 -0
  422. package/es/fragments/drawer-list/DrawerListItem.js.map +1 -0
  423. package/es/fragments/drawer-list/DrawerListPortal.d.ts +20 -30
  424. package/es/fragments/drawer-list/DrawerListPortal.js +88 -120
  425. package/es/fragments/drawer-list/DrawerListPortal.js.map +1 -1
  426. package/es/fragments/drawer-list/DrawerListProvider.d.ts +217 -11
  427. package/es/fragments/drawer-list/DrawerListProvider.js +33 -19
  428. package/es/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  429. package/es/shared/Eufemia.d.ts +1 -1
  430. package/es/shared/Eufemia.js +2 -2
  431. package/es/shared/Eufemia.js.map +1 -1
  432. package/es/shared/component-helper.d.ts +45 -48
  433. package/es/shared/component-helper.js +20 -183
  434. package/es/shared/component-helper.js.map +1 -1
  435. package/es/shared/helpers/withCamelCaseProps.d.ts +4 -5
  436. package/es/shared/helpers/withCamelCaseProps.js +7 -2
  437. package/es/shared/helpers/withCamelCaseProps.js.map +1 -1
  438. package/es/shared/legacy/component-helper-legacy.d.ts +19 -0
  439. package/es/shared/legacy/component-helper-legacy.js +180 -0
  440. package/es/shared/legacy/component-helper-legacy.js.map +1 -0
  441. package/es/shared/locales/en-GB.d.ts +1 -0
  442. package/es/shared/locales/en-GB.js +1 -0
  443. package/es/shared/locales/en-GB.js.map +1 -1
  444. package/es/shared/locales/en-US.js.map +1 -1
  445. package/es/shared/locales/index.d.ts +2 -0
  446. package/es/shared/locales/nb-NO.d.ts +1 -0
  447. package/es/shared/locales/nb-NO.js +2 -1
  448. package/es/shared/locales/nb-NO.js.map +1 -1
  449. package/es/shared/locales/sv-SE.d.ts +1 -0
  450. package/es/shared/locales/sv-SE.js +1 -0
  451. package/es/shared/locales/sv-SE.js.map +1 -1
  452. package/es/style/core/scopes.scss +1 -1
  453. package/es/style/dnb-ui-basis.css +1 -1
  454. package/es/style/dnb-ui-basis.min.css +1 -1
  455. package/es/style/dnb-ui-body.css +1 -1
  456. package/es/style/dnb-ui-body.min.css +1 -1
  457. package/es/style/dnb-ui-components.css +2 -1
  458. package/es/style/dnb-ui-components.min.css +1 -1
  459. package/es/style/dnb-ui-core.css +1 -1
  460. package/es/style/dnb-ui-core.min.css +1 -1
  461. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +19 -1
  462. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  463. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +19 -1
  464. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  465. package/es/style/themes/theme-ui/ui-theme-components.css +19 -1
  466. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  467. package/esm/dnb-ui-basis.min.mjs +1 -1
  468. package/esm/dnb-ui-components.min.mjs +1 -1
  469. package/esm/dnb-ui-elements.min.mjs +1 -1
  470. package/esm/dnb-ui-extensions.min.mjs +2 -2
  471. package/esm/dnb-ui-lib.min.mjs +1 -1
  472. package/extensions/forms/DataContext/Context.d.ts +1 -1
  473. package/extensions/forms/DataContext/Context.js.map +1 -1
  474. package/extensions/forms/DataContext/Provider/Provider.js +9 -0
  475. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  476. package/extensions/forms/Field/Boolean/Boolean.d.ts +1 -0
  477. package/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
  478. package/extensions/forms/Field/Boolean/BooleanDocs.d.ts +1 -0
  479. package/extensions/forms/Field/Boolean/BooleanDocs.js +7 -0
  480. package/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
  481. package/extensions/forms/Field/Date/Date.d.ts +1 -1
  482. package/extensions/forms/Field/Date/Date.js +1 -1
  483. package/extensions/forms/Field/Date/Date.js.map +1 -1
  484. package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
  485. package/extensions/forms/Field/Number/NumberDocs.js +1 -1
  486. package/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
  487. package/extensions/forms/Field/Provider/useFieldProvider.d.ts +3 -3
  488. package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +3 -3
  489. package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
  490. package/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js +3 -3
  491. package/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js.map +1 -1
  492. package/extensions/forms/Field/Selection/Selection.d.ts +2 -0
  493. package/extensions/forms/Field/Selection/Selection.js +10 -9
  494. package/extensions/forms/Field/Selection/Selection.js.map +1 -1
  495. package/extensions/forms/Field/Toggle/Toggle.d.ts +7 -0
  496. package/extensions/forms/Field/Toggle/Toggle.js +26 -9
  497. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  498. package/extensions/forms/Field/Toggle/ToggleDocs.d.ts +1 -0
  499. package/extensions/forms/Field/Toggle/ToggleDocs.js +7 -0
  500. package/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -1
  501. package/extensions/forms/Form/Isolation/IsolatedContainer.d.ts +4 -0
  502. package/extensions/forms/Form/Isolation/IsolatedContainer.js +54 -0
  503. package/extensions/forms/Form/Isolation/IsolatedContainer.js.map +1 -0
  504. package/extensions/forms/Form/Isolation/Isolation.d.ts +16 -0
  505. package/extensions/forms/Form/Isolation/Isolation.js +40 -15
  506. package/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
  507. package/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -1
  508. package/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
  509. package/extensions/forms/Form/Isolation/IsolationContext.d.ts +12 -0
  510. package/extensions/forms/Form/Isolation/IsolationContext.js +6 -0
  511. package/extensions/forms/Form/Isolation/IsolationContext.js.map +1 -0
  512. package/extensions/forms/Form/Isolation/IsolationDataReference.d.ts +9 -0
  513. package/extensions/forms/Form/Isolation/IsolationDataReference.js +25 -0
  514. package/extensions/forms/Form/Isolation/IsolationDataReference.js.map +1 -0
  515. package/extensions/forms/Form/Isolation/IsolationDocs.js +15 -0
  516. package/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  517. package/extensions/forms/Form/Isolation/IsolationResetButton.d.ts +7 -0
  518. package/extensions/forms/Form/Isolation/IsolationResetButton.js +100 -0
  519. package/extensions/forms/Form/Isolation/IsolationResetButton.js.map +1 -0
  520. package/extensions/forms/Form/Isolation/useDataContextSnapshot.d.ts +7 -0
  521. package/extensions/forms/Form/Isolation/useDataContextSnapshot.js +52 -0
  522. package/extensions/forms/Form/Isolation/useDataContextSnapshot.js.map +1 -0
  523. package/extensions/forms/Form/Isolation/useHandleStatus.d.ts +9 -0
  524. package/extensions/forms/Form/Isolation/useHandleStatus.js +51 -0
  525. package/extensions/forms/Form/Isolation/useHandleStatus.js.map +1 -0
  526. package/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.js +12 -10
  527. package/extensions/forms/Form/Isolation/useHasContentChanged.js.map +1 -0
  528. package/extensions/forms/Form/Snapshot/Snapshot.d.ts +2 -1
  529. package/extensions/forms/Form/Snapshot/Snapshot.js.map +1 -1
  530. package/extensions/forms/Iterate/EditContainer/ResetButton.js +1 -1
  531. package/extensions/forms/Iterate/EditContainer/ResetButton.js.map +1 -1
  532. package/extensions/forms/Iterate/EditContainer/index.d.ts +1 -1
  533. package/extensions/forms/Iterate/EditContainer/index.js +1 -1
  534. package/extensions/forms/Iterate/EditContainer/index.js.map +1 -1
  535. package/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +7 -0
  536. package/extensions/forms/Iterate/PushContainer/PushContainer.js +16 -57
  537. package/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
  538. package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +2 -2
  539. package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
  540. package/extensions/forms/constants/locales/en-GB.d.ts +1 -1
  541. package/extensions/forms/constants/locales/en-GB.js +3 -3
  542. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  543. package/extensions/forms/constants/locales/en-US.d.ts +1 -1
  544. package/extensions/forms/constants/locales/index.d.ts +2 -2
  545. package/extensions/forms/constants/locales/nb-NO.d.ts +1 -1
  546. package/extensions/forms/constants/locales/nb-NO.js +3 -3
  547. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  548. package/extensions/forms/constants/locales/sv-SE.d.ts +1 -1
  549. package/extensions/forms/constants/locales/sv-SE.js +3 -3
  550. package/extensions/forms/constants/locales/sv-SE.js.map +1 -1
  551. package/extensions/forms/hooks/useDataContext.js +5 -3
  552. package/extensions/forms/hooks/useDataContext.js.map +1 -1
  553. package/extensions/forms/hooks/useSnapshot.js +18 -15
  554. package/extensions/forms/hooks/useSnapshot.js.map +1 -1
  555. package/fragments/drawer-list/DrawerList.d.ts +176 -224
  556. package/fragments/drawer-list/DrawerList.js +71 -175
  557. package/fragments/drawer-list/DrawerList.js.map +1 -1
  558. package/fragments/drawer-list/DrawerListContext.d.ts +27 -2
  559. package/fragments/drawer-list/DrawerListContext.js.map +1 -1
  560. package/fragments/drawer-list/DrawerListDocs.d.ts +211 -4
  561. package/fragments/drawer-list/DrawerListDocs.js +2 -2
  562. package/fragments/drawer-list/DrawerListDocs.js.map +1 -1
  563. package/fragments/drawer-list/DrawerListHelpers.d.ts +85 -89
  564. package/fragments/drawer-list/DrawerListHelpers.js +45 -53
  565. package/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
  566. package/fragments/drawer-list/DrawerListItem.d.ts +30 -0
  567. package/fragments/drawer-list/DrawerListItem.js +91 -0
  568. package/fragments/drawer-list/DrawerListItem.js.map +1 -0
  569. package/fragments/drawer-list/DrawerListPortal.d.ts +20 -30
  570. package/fragments/drawer-list/DrawerListPortal.js +91 -121
  571. package/fragments/drawer-list/DrawerListPortal.js.map +1 -1
  572. package/fragments/drawer-list/DrawerListProvider.d.ts +217 -11
  573. package/fragments/drawer-list/DrawerListProvider.js +12 -19
  574. package/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  575. package/package.json +1 -1
  576. package/shared/Eufemia.d.ts +1 -1
  577. package/shared/Eufemia.js +2 -2
  578. package/shared/Eufemia.js.map +1 -1
  579. package/shared/component-helper.d.ts +45 -48
  580. package/shared/component-helper.js +23 -189
  581. package/shared/component-helper.js.map +1 -1
  582. package/shared/helpers/withCamelCaseProps.d.ts +4 -5
  583. package/shared/helpers/withCamelCaseProps.js +7 -2
  584. package/shared/helpers/withCamelCaseProps.js.map +1 -1
  585. package/shared/legacy/component-helper-legacy.d.ts +19 -0
  586. package/shared/legacy/component-helper-legacy.js +185 -0
  587. package/shared/legacy/component-helper-legacy.js.map +1 -0
  588. package/shared/locales/en-GB.d.ts +1 -0
  589. package/shared/locales/en-GB.js +1 -0
  590. package/shared/locales/en-GB.js.map +1 -1
  591. package/shared/locales/en-US.js.map +1 -1
  592. package/shared/locales/index.d.ts +2 -0
  593. package/shared/locales/nb-NO.d.ts +1 -0
  594. package/shared/locales/nb-NO.js +2 -1
  595. package/shared/locales/nb-NO.js.map +1 -1
  596. package/shared/locales/sv-SE.d.ts +1 -0
  597. package/shared/locales/sv-SE.js +1 -0
  598. package/shared/locales/sv-SE.js.map +1 -1
  599. package/style/core/scopes.scss +1 -1
  600. package/style/dnb-ui-basis.css +1 -1
  601. package/style/dnb-ui-basis.min.css +1 -1
  602. package/style/dnb-ui-body.css +1 -1
  603. package/style/dnb-ui-body.min.css +1 -1
  604. package/style/dnb-ui-components.css +2 -1
  605. package/style/dnb-ui-components.min.css +1 -1
  606. package/style/dnb-ui-core.css +1 -1
  607. package/style/dnb-ui-core.min.css +1 -1
  608. package/style/themes/theme-eiendom/eiendom-theme-components.css +19 -1
  609. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  610. package/style/themes/theme-sbanken/sbanken-theme-components.css +19 -1
  611. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  612. package/style/themes/theme-ui/ui-theme-components.css +19 -1
  613. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  614. package/umd/dnb-ui-basis.min.js +1 -1
  615. package/umd/dnb-ui-components.min.js +1 -1
  616. package/umd/dnb-ui-elements.min.js +1 -1
  617. package/umd/dnb-ui-extensions.min.js +1 -1
  618. package/umd/dnb-ui-lib.min.js +1 -1
  619. package/cjs/extensions/forms/Iterate/EditContainer/useHasContentChanged.js.map +0 -1
  620. package/es/extensions/forms/Iterate/EditContainer/useHasContentChanged.js.map +0 -1
  621. package/extensions/forms/Iterate/EditContainer/useHasContentChanged.js.map +0 -1
  622. /package/cjs/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.d.ts +0 -0
  623. /package/es/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.d.ts +0 -0
  624. /package/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"HeadingHelpers.js","names":["warn","convertJsxToString","globalSyncCounter","current","globalHeadingCounter","refs","correctInternalHeadingLevel","counter","level","ref","reset","inherit","increase","decrease","source","bypassChecks","isRerender","debug","foundRef","find","cur","enableBypassChecks","update","_globalHeadingCounter","makeMeReady","entry","contextCounter","report","setLevel","decrement","increment","hasEntryLevel","_globalHeadingCounter2","setEntryLevel","skipUpdateFromProp","canBeManipulatedNextTime","overwriteContext","isGlobal","globalResetNextTime","resetLevel","lastResetLevel","globalNextLevel","nextLevel","disableBypassChecks","parseFloat","String","hasReport","useLastReport","push","reports","props","identifiers","id","className","filter","Boolean","length","join","resetAllLevels","countHeadings","resetLevels","teardownHeadings","setNextLevel","windupHeadings","debugCounter","JSON","stringify","group","contextLevel","contextLEntry","getHeadingSize","theme","getHeadingElement"],"sources":["../../../../src/components/heading/HeadingHelpers.ts"],"sourcesContent":["/**\n * Web Heading Counter\n *\n */\n\nimport {\n HeadingAllProps,\n InternalHeadingLevel,\n HeadingLevelSizeResolutions,\n} from './Heading'\nimport { ThemeNames } from '../../shared'\nimport { warn, convertJsxToString } from '../../shared/component-helper'\nimport type { DynamicElement } from '../../shared/types'\nimport { HeadingCounter } from './HeadingCounter'\n\ntype GlobalSyncCounter = { current: HeadingCounter }\ntype GlobalHeadingCounter = { current: HeadingCounter }\nexport const globalSyncCounter: GlobalSyncCounter = {\n current: null,\n}\nexport const globalHeadingCounter: GlobalHeadingCounter = {\n current: null,\n}\n\nconst refs: {\n current: Array<{ ref: HeadingAllProps; counter: HeadingCounter }>\n} = {\n current: null,\n}\n\ntype CorrectInternalHeadingLevel = {\n counter: HeadingCounter\n level: InternalHeadingLevel\n ref?: HeadingAllProps\n reset?: HeadingAllProps['reset']\n inherit?: boolean\n increase?: boolean\n decrease?: boolean\n source?: HeadingAllProps['children']\n bypassChecks?: boolean\n isRerender?: boolean\n debug?: HeadingAllProps['debug']\n}\n\nexport const correctInternalHeadingLevel = ({\n counter,\n level,\n ref = null,\n reset = null,\n inherit = null,\n increase = false,\n decrease = false,\n source = null,\n bypassChecks = false,\n isRerender = false,\n debug = null,\n}: CorrectInternalHeadingLevel) => {\n // Do that only to make sure we run the correction only if props has changed\n if (ref && refs.current) {\n const foundRef = refs.current.find((cur) => cur.ref === ref)\n if (foundRef) {\n return foundRef.counter\n }\n }\n\n if (bypassChecks) {\n counter.enableBypassChecks()\n }\n\n const update = (level: InternalHeadingLevel) => {\n if (!isRerender) {\n counter.makeMeReady({ level })\n }\n\n if (inherit) {\n if (globalSyncCounter.current) {\n counter.entry = globalSyncCounter.current.contextCounter.entry\n counter.level = globalSyncCounter.current.level\n } else {\n report(\n debug,\n source,\n 'Heading got inherit, but there was noting to inherit.'\n )\n }\n }\n\n if (level >= 1) {\n counter.setLevel(level)\n } else if (decrease) {\n counter.decrement()\n } else if (increase) {\n counter.increment()\n }\n\n if (\n counter.level > 0 &&\n !globalHeadingCounter.current?.hasEntryLevel()\n ) {\n globalHeadingCounter.current?.setEntryLevel()\n }\n }\n\n let skipUpdateFromProp = false\n const canBeManipulatedNextTime = (overwriteContext: boolean) => {\n return (\n counter.contextCounter.isGlobal ||\n counter.contextCounter.entry === 1 ||\n overwriteContext\n )\n }\n\n if (globalResetNextTime.current) {\n const { level: resetLevel, overwriteContext } =\n globalResetNextTime.current\n globalResetNextTime.current = null\n\n if (\n canBeManipulatedNextTime(overwriteContext) ||\n counter.lastResetLevel === resetLevel\n ) {\n counter.makeMeReady()\n counter.reset(resetLevel)\n skipUpdateFromProp = true\n }\n } else if (globalNextLevel.current) {\n const { level: nextLevel, overwriteContext } = globalNextLevel.current\n globalNextLevel.current = null\n if (canBeManipulatedNextTime(overwriteContext)) {\n counter.enableBypassChecks()\n update(nextLevel)\n counter.disableBypassChecks()\n skipUpdateFromProp = true\n }\n }\n\n if (!skipUpdateFromProp) {\n if (reset === true || parseFloat(String(reset)) > -1) {\n counter.reset(reset)\n } else {\n update(level)\n }\n }\n\n const hasReport = counter.useLastReport()\n if (hasReport) {\n report(debug, source, ...hasReport)\n }\n\n if (bypassChecks) {\n counter.disableBypassChecks()\n }\n\n // Do that only to make sure we run the correction only if props has changed\n if (ref) {\n refs.current = refs.current || []\n refs.current.push({ ref, counter })\n }\n\n return counter\n}\n\nfunction report(debug, source, ...reports) {\n if (source) {\n const props = source.props || {}\n const identifiers = [props.id, props['class'], props.className].filter(\n Boolean\n )\n\n reports.push(\n '\\nNB: This warning was triggered by:',\n identifiers.length > 0 ? identifiers.join(', ') : '',\n convertJsxToString(source)\n )\n }\n\n if (typeof debug === 'function') {\n debug(...reports)\n } else {\n warn(...reports)\n }\n}\n\n// Interceptor to reset leveling -\nexport function resetAllLevels() {\n countHeadings = 0\n resetLevels(1, { overwriteContext: false })\n teardownHeadings()\n}\nexport const globalResetNextTime: { current: GlobalNextLevel } = {\n current: null,\n}\nexport function resetLevels(\n level: InternalHeadingLevel,\n { overwriteContext = false } = {}\n) {\n globalResetNextTime.current = { level, overwriteContext }\n}\ntype GlobalNextLevel = {\n level: InternalHeadingLevel\n overwriteContext: boolean\n}\nexport const globalNextLevel: { current: GlobalNextLevel } = {\n current: null,\n}\nexport function setNextLevel(\n level: InternalHeadingLevel,\n { overwriteContext = false } = {}\n) {\n globalNextLevel.current = {\n level,\n overwriteContext,\n }\n}\n\nlet countHeadings = 0\nexport function windupHeadings() {\n countHeadings++\n // reset the sync counter, as this will distract correct assembling\n globalSyncCounter.current = null\n}\nexport function teardownHeadings() {\n countHeadings--\n if (countHeadings === 0) {\n globalHeadingCounter.current = null\n globalSyncCounter.current = null\n globalResetNextTime.current = null\n globalNextLevel.current = null\n }\n}\n\nexport function debugCounter(counter) {\n return JSON.stringify(\n {\n group: counter.group || counter.contextCounter.group,\n level: counter.level,\n entry: counter.entry,\n contextLevel: counter.contextCounter.level,\n contextLEntry: counter.contextCounter.entry,\n },\n null,\n 2\n )\n}\n\nexport const getHeadingSize = (\n theme: ThemeNames\n): HeadingLevelSizeResolutions => {\n switch (theme) {\n case 'sbanken':\n return {\n 1: 'xx-large',\n 2: 'x-large',\n 3: 'large',\n 4: 'medium',\n 5: 'basis',\n 6: 'small',\n }\n case 'ui':\n default:\n return {\n 1: 'xx-large',\n 2: 'large',\n 3: 'medium',\n 4: 'basis',\n 5: 'small',\n 6: 'x-small',\n }\n }\n}\n\nexport const getHeadingElement = (\n level: InternalHeadingLevel\n): DynamicElement => {\n switch (level) {\n case 1:\n return 'h1'\n case 2:\n return 'h2'\n case 3:\n return 'h3'\n case 4:\n return 'h4'\n case 5:\n return 'h5'\n case 6:\n return 'h6'\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"HeadingHelpers.js","names":["warn","convertJsxToString","globalSyncCounter","current","globalHeadingCounter","refs","correctInternalHeadingLevel","counter","level","ref","reset","inherit","increase","decrease","source","bypassChecks","isRerender","debug","foundRef","find","cur","enableBypassChecks","hasCounterWasCorrectedToLevel2","_globalSyncCounter$cu","_globalHeadingCounter","hasCorrection","getLevel","update","_globalHeadingCounter2","makeMeReady","entry","contextCounter","report","setLevel","decrement","increment","hasEntryLevel","_globalHeadingCounter3","setEntryLevel","skipUpdateFromProp","canBeManipulatedNextTime","overwriteContext","isGlobal","globalResetNextTime","resetLevel","lastResetLevel","globalNextLevel","nextLevel","disableBypassChecks","parseFloat","String","hasReport","useLastReport","push","reports","props","identifiers","id","className","filter","Boolean","length","join","resetAllLevels","countHeadings","resetLevels","teardownHeadings","setNextLevel","windupHeadings","debugCounter","JSON","stringify","group","contextLevel","contextLEntry","getHeadingSize","theme","getHeadingElement"],"sources":["../../../../src/components/heading/HeadingHelpers.ts"],"sourcesContent":["/**\n * Web Heading Counter\n *\n */\n\nimport {\n HeadingAllProps,\n InternalHeadingLevel,\n HeadingLevelSizeResolutions,\n} from './Heading'\nimport { ThemeNames } from '../../shared'\nimport { warn, convertJsxToString } from '../../shared/component-helper'\nimport type { DynamicElement } from '../../shared/types'\nimport { HeadingCounter } from './HeadingCounter'\n\ntype GlobalSyncCounter = { current: HeadingCounter }\ntype GlobalHeadingCounter = { current: HeadingCounter }\nexport const globalSyncCounter: GlobalSyncCounter = {\n current: null,\n}\nexport const globalHeadingCounter: GlobalHeadingCounter = {\n current: null,\n}\n\nconst refs: {\n current: Array<{ ref: HeadingAllProps; counter: HeadingCounter }>\n} = {\n current: null,\n}\n\ntype CorrectInternalHeadingLevel = {\n counter: HeadingCounter\n level: InternalHeadingLevel\n ref?: HeadingAllProps\n reset?: HeadingAllProps['reset']\n inherit?: boolean\n increase?: boolean\n decrease?: boolean\n source?: HeadingAllProps['children']\n bypassChecks?: boolean\n isRerender?: boolean\n debug?: HeadingAllProps['debug']\n}\n\nexport const correctInternalHeadingLevel = ({\n counter,\n level,\n ref = null,\n reset = null,\n inherit = null,\n increase = false,\n decrease = false,\n source = null,\n bypassChecks = false,\n isRerender = false,\n debug = null,\n}: CorrectInternalHeadingLevel) => {\n // Do that only to make sure we run the correction only if props has changed\n if (ref && refs.current) {\n const foundRef = refs.current.find((cur) => cur.ref === ref)\n if (foundRef) {\n return foundRef.counter\n }\n }\n\n if (bypassChecks) {\n counter.enableBypassChecks()\n }\n\n const hasCounterWasCorrectedToLevel2 = () => {\n return (\n globalSyncCounter?.current?.level === 1 &&\n globalHeadingCounter?.current?.hasCorrection() &&\n counter?.getLevel() === 2\n )\n }\n\n const update = (level: InternalHeadingLevel) => {\n if (!isRerender) {\n counter.makeMeReady({ level })\n }\n\n if (inherit) {\n if (globalSyncCounter.current) {\n counter.entry = globalSyncCounter.current.contextCounter.entry\n counter.level = globalSyncCounter.current.level\n } else {\n report(\n debug,\n source,\n 'Heading got inherit, but there was noting to inherit.'\n )\n }\n }\n\n if (level >= 1) {\n counter.setLevel(level)\n } else if (decrease) {\n counter.decrement()\n } else if (increase && !hasCounterWasCorrectedToLevel2()) {\n counter.increment()\n }\n\n if (\n counter.level > 0 &&\n !globalHeadingCounter.current?.hasEntryLevel()\n ) {\n globalHeadingCounter.current?.setEntryLevel()\n }\n }\n\n let skipUpdateFromProp = false\n const canBeManipulatedNextTime = (overwriteContext: boolean) => {\n return (\n counter.contextCounter.isGlobal ||\n counter.contextCounter.entry === 1 ||\n overwriteContext\n )\n }\n\n if (globalResetNextTime.current) {\n const { level: resetLevel, overwriteContext } =\n globalResetNextTime.current\n globalResetNextTime.current = null\n\n if (\n canBeManipulatedNextTime(overwriteContext) ||\n counter.lastResetLevel === resetLevel\n ) {\n counter.makeMeReady()\n counter.reset(resetLevel)\n skipUpdateFromProp = true\n }\n } else if (globalNextLevel.current) {\n const { level: nextLevel, overwriteContext } = globalNextLevel.current\n globalNextLevel.current = null\n if (canBeManipulatedNextTime(overwriteContext)) {\n counter.enableBypassChecks()\n update(nextLevel)\n counter.disableBypassChecks()\n skipUpdateFromProp = true\n }\n }\n\n if (!skipUpdateFromProp) {\n if (reset === true || parseFloat(String(reset)) > -1) {\n counter.reset(reset)\n } else {\n update(level)\n }\n }\n\n const hasReport = counter.useLastReport()\n if (hasReport) {\n report(debug, source, ...hasReport)\n }\n\n if (bypassChecks) {\n counter.disableBypassChecks()\n }\n\n // Do that only to make sure we run the correction only if props has changed\n if (ref) {\n refs.current = refs.current || []\n refs.current.push({ ref, counter })\n }\n\n return counter\n}\n\nfunction report(debug, source, ...reports) {\n if (source) {\n const props = source.props || {}\n const identifiers = [props.id, props['class'], props.className].filter(\n Boolean\n )\n\n reports.push(\n '\\nNB: This warning was triggered by:',\n identifiers.length > 0 ? identifiers.join(', ') : '',\n convertJsxToString(source)\n )\n }\n\n if (typeof debug === 'function') {\n debug(...reports)\n } else {\n warn(...reports)\n }\n}\n\n// Interceptor to reset leveling -\nexport function resetAllLevels() {\n countHeadings = 0\n resetLevels(1, { overwriteContext: false })\n teardownHeadings()\n}\nexport const globalResetNextTime: { current: GlobalNextLevel } = {\n current: null,\n}\nexport function resetLevels(\n level: InternalHeadingLevel,\n { overwriteContext = false } = {}\n) {\n globalResetNextTime.current = { level, overwriteContext }\n}\ntype GlobalNextLevel = {\n level: InternalHeadingLevel\n overwriteContext: boolean\n}\nexport const globalNextLevel: { current: GlobalNextLevel } = {\n current: null,\n}\nexport function setNextLevel(\n level: InternalHeadingLevel,\n { overwriteContext = false } = {}\n) {\n globalNextLevel.current = {\n level,\n overwriteContext,\n }\n}\n\nlet countHeadings = 0\nexport function windupHeadings() {\n countHeadings++\n // reset the sync counter, as this will distract correct assembling\n globalSyncCounter.current = null\n}\nexport function teardownHeadings() {\n countHeadings--\n if (countHeadings === 0) {\n globalHeadingCounter.current = null\n globalSyncCounter.current = null\n globalResetNextTime.current = null\n globalNextLevel.current = null\n }\n}\n\nexport function debugCounter(counter) {\n return JSON.stringify(\n {\n group: counter.group || counter.contextCounter.group,\n level: counter.level,\n entry: counter.entry,\n contextLevel: counter.contextCounter.level,\n contextLEntry: counter.contextCounter.entry,\n },\n null,\n 2\n )\n}\n\nexport const getHeadingSize = (\n theme: ThemeNames\n): HeadingLevelSizeResolutions => {\n switch (theme) {\n case 'sbanken':\n return {\n 1: 'xx-large',\n 2: 'x-large',\n 3: 'large',\n 4: 'medium',\n 5: 'basis',\n 6: 'small',\n }\n case 'ui':\n default:\n return {\n 1: 'xx-large',\n 2: 'large',\n 3: 'medium',\n 4: 'basis',\n 5: 'small',\n 6: 'x-small',\n }\n }\n}\n\nexport const getHeadingElement = (\n level: InternalHeadingLevel\n): DynamicElement => {\n switch (level) {\n case 1:\n return 'h1'\n case 2:\n return 'h2'\n case 3:\n return 'h3'\n case 4:\n return 'h4'\n case 5:\n return 'h5'\n case 6:\n return 'h6'\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -138,16 +138,16 @@ export declare function prepareIcon(props: IconAllProps, context: ContextProps):
138
138
  pattern?: string;
139
139
  dir?: string;
140
140
  role?: React.AriaRole;
141
+ key?: React.Key;
142
+ ref?: React.LegacyRef<HTMLElement>;
141
143
  'aria-hidden'?: boolean | "true" | "false";
142
144
  accessKey?: string;
143
- key?: React.Key;
144
145
  value?: string | number | readonly string[];
145
146
  'aria-labelledby'?: string;
146
147
  'aria-describedby'?: string;
147
148
  'aria-details'?: string;
148
149
  'aria-disabled'?: boolean | "true" | "false";
149
150
  tabIndex?: number;
150
- ref?: React.LegacyRef<HTMLElement>;
151
151
  required?: boolean;
152
152
  defaultChecked?: boolean;
153
153
  defaultValue?: string | number | readonly string[];
@@ -139,7 +139,7 @@ export const inputMaskedMaskOptionsProperties = {
139
139
  status: 'optional'
140
140
  },
141
141
  disallowLeadingZeroes: {
142
- doc: 'Whether or not to allow leading zeroes. Defaults to `false`.',
142
+ doc: 'Whether or not to allow leading zeroes during typing. *A leading zero is any 0 digit that comes before the first nonzero digit in a number string in positional notation* - [wikipedia](https://en.wikipedia.org/wiki/Leading_zero). Defaults to `false`.',
143
143
  type: 'boolean',
144
144
  status: 'optional'
145
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"InputMaskedDocs.js","names":["inputMaskedProperties","as_number","doc","type","status","as_percent","as_currency","mask_options","number_mask","currency_mask","number_format","locale","mask","show_mask","show_guide","placeholder_char","keep_char_positions","inputMaskedEvents","on_change","inputMaskedMaskOptionsProperties","prefix","suffix","includeThousandsSeparator","thousandsSeparatorSymbol","allowDecimal","decimalSymbol","decimalLimit","integerLimit","requireDecimal","allowNegative","disallowLeadingZeroes"],"sources":["../../../../src/components/input-masked/InputMaskedDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../shared/types'\n\nexport const inputMaskedProperties: PropertiesTableProps = {\n as_number: {\n doc: 'Set to `true` to automatically set a number mask based on the given or inherited locale.',\n type: 'boolean',\n status: 'optional',\n },\n as_percent: {\n doc: 'Set to `true` to automatically set a number mask with a percentage sign based on the given or inherited locale.',\n type: 'boolean',\n status: 'optional',\n },\n as_currency: {\n doc: 'Set to `true` to use `NOK` or give it a currency code e.g. `USD` to automatically set a currency mask based on the given or inherited locale.',\n type: 'boolean',\n status: 'optional',\n },\n mask_options: {\n doc: 'Use it to manipulate internal masks. You can use it instead of e.g. `number_mask` or `currency_mask`. All options are listed below.',\n type: 'object',\n status: 'optional',\n },\n number_mask: {\n doc: 'Set to `true` to enable the default numbers formatting – or give an `object` containing the number mask properties. More details below. Can be a JSON string as well, containing the number mask properties. Is disabled by default.',\n type: ['boolean', 'object'],\n status: 'optional',\n },\n currency_mask: {\n doc: 'Set to `true` or set the _valuta_ (currency_mask=\"kr\") to enable a custom currency mask – or give an `object` containing the number mask properties. More details below. Can be a JSON string as well, containing the number mask properties. Is disabled by default. Defaults to `kr`.',\n type: ['boolean', 'object'],\n status: 'optional',\n },\n number_format: {\n doc: 'Use an object with [NumberFormat](/uilib/components/number-format/properties).',\n type: 'object',\n status: 'optional',\n },\n locale: {\n doc: 'Define the locale to be used in the `as_number` or `as_currency` masked. It will be inherited from the [Eufemia Provider](/uilib/usage/customisation/provider) if not given. Defaults to `nb-NO`.',\n type: 'string',\n status: 'optional',\n },\n mask: {\n doc: 'A mask can be defined both as a [RegExp style of characters](https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#readme) or a callback function. Example below. Defaults to number mask.',\n type: ['RegExp', 'function'],\n status: 'optional',\n },\n show_mask: {\n doc: 'Show mask when input is empty and has no focus. Defaults to `false`.',\n type: 'boolean',\n status: 'optional',\n },\n show_guide: {\n doc: \"When `false` is given, it doesn't print out placeholder characters and only adds mask characters when the user reaches them as they're typing. Defaults to `true`.\",\n type: 'boolean',\n status: 'optional',\n },\n placeholder_char: {\n doc: 'The placeholder character represents the fillable spot in the mask (e.g. `_`). Defaults to invisible space.',\n type: 'string',\n status: 'optional',\n },\n keep_char_positions: {\n doc: 'When `true`, adding or deleting characters will not affect the positions of existing characters. Defaults to `false`.',\n type: 'boolean',\n status: 'optional',\n },\n '[Space](/uilib/layout/space/properties)': {\n doc: 'Spacing properties like `top` or `bottom` are supported.',\n type: ['string', 'object'],\n status: 'optional',\n },\n '[Input](/uilib/components/input/properties)': {\n doc: 'All `Input` properties are supported.',\n type: 'Various',\n status: 'optional',\n },\n}\n\nexport const inputMaskedEvents: PropertiesTableProps = {\n on_change: {\n doc: 'will be called on value changes made by the user. Returns an object with the value as a string and the native event: `{ value, numberValue, cleanedValue, event }`.',\n type: 'function',\n status: 'optional',\n },\n '[Input](/uilib/components/input/events)': {\n doc: 'All `Input` events are supported.',\n type: 'Various',\n status: 'optional',\n },\n}\n\nexport const inputMaskedMaskOptionsProperties: PropertiesTableProps = {\n prefix: {\n doc: 'What to display before the amount. Defaults to an empty string.',\n type: 'string',\n status: 'optional',\n },\n suffix: {\n doc: 'What to display after the amount. Defaults to an empty string.',\n type: 'string',\n status: 'optional',\n },\n includeThousandsSeparator: {\n doc: 'Whether or not to separate thousands. Defaults to `true`.',\n type: 'boolean',\n status: 'optional',\n },\n thousandsSeparatorSymbol: {\n doc: \"Character with which to separate thousands. Defaults to `' '`.\",\n type: 'string',\n status: 'optional',\n },\n allowDecimal: {\n doc: 'Whether or not to allow the user to enter a fraction with the amount. Defaults to `false`.',\n type: 'boolean',\n status: 'optional',\n },\n decimalSymbol: {\n doc: \"Character that will act as a decimal point. Defaults to `','`.\",\n type: 'string',\n status: 'optional',\n },\n decimalLimit: {\n doc: 'How many digits to allow after the decimal. Defaults to `2`.',\n type: 'number',\n status: 'optional',\n },\n integerLimit: {\n doc: 'Limit the length of the integer number. Defaults to `null` for unlimited.',\n type: 'number',\n status: 'optional',\n },\n requireDecimal: {\n doc: 'Whether or not to always include a decimal point and placeholder for decimal digits after the integer. Defaults to `false`.',\n type: 'boolean',\n status: 'optional',\n },\n allowNegative: {\n doc: 'Whether or not to allow negative numbers. Defaults to `true`.',\n type: 'boolean',\n status: 'optional',\n },\n disallowLeadingZeroes: {\n doc: 'Whether or not to allow leading zeroes. Defaults to `false`.',\n type: 'boolean',\n status: 'optional',\n },\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"InputMaskedDocs.js","names":["inputMaskedProperties","as_number","doc","type","status","as_percent","as_currency","mask_options","number_mask","currency_mask","number_format","locale","mask","show_mask","show_guide","placeholder_char","keep_char_positions","inputMaskedEvents","on_change","inputMaskedMaskOptionsProperties","prefix","suffix","includeThousandsSeparator","thousandsSeparatorSymbol","allowDecimal","decimalSymbol","decimalLimit","integerLimit","requireDecimal","allowNegative","disallowLeadingZeroes"],"sources":["../../../../src/components/input-masked/InputMaskedDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../shared/types'\n\nexport const inputMaskedProperties: PropertiesTableProps = {\n as_number: {\n doc: 'Set to `true` to automatically set a number mask based on the given or inherited locale.',\n type: 'boolean',\n status: 'optional',\n },\n as_percent: {\n doc: 'Set to `true` to automatically set a number mask with a percentage sign based on the given or inherited locale.',\n type: 'boolean',\n status: 'optional',\n },\n as_currency: {\n doc: 'Set to `true` to use `NOK` or give it a currency code e.g. `USD` to automatically set a currency mask based on the given or inherited locale.',\n type: 'boolean',\n status: 'optional',\n },\n mask_options: {\n doc: 'Use it to manipulate internal masks. You can use it instead of e.g. `number_mask` or `currency_mask`. All options are listed below.',\n type: 'object',\n status: 'optional',\n },\n number_mask: {\n doc: 'Set to `true` to enable the default numbers formatting – or give an `object` containing the number mask properties. More details below. Can be a JSON string as well, containing the number mask properties. Is disabled by default.',\n type: ['boolean', 'object'],\n status: 'optional',\n },\n currency_mask: {\n doc: 'Set to `true` or set the _valuta_ (currency_mask=\"kr\") to enable a custom currency mask – or give an `object` containing the number mask properties. More details below. Can be a JSON string as well, containing the number mask properties. Is disabled by default. Defaults to `kr`.',\n type: ['boolean', 'object'],\n status: 'optional',\n },\n number_format: {\n doc: 'Use an object with [NumberFormat](/uilib/components/number-format/properties).',\n type: 'object',\n status: 'optional',\n },\n locale: {\n doc: 'Define the locale to be used in the `as_number` or `as_currency` masked. It will be inherited from the [Eufemia Provider](/uilib/usage/customisation/provider) if not given. Defaults to `nb-NO`.',\n type: 'string',\n status: 'optional',\n },\n mask: {\n doc: 'A mask can be defined both as a [RegExp style of characters](https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#readme) or a callback function. Example below. Defaults to number mask.',\n type: ['RegExp', 'function'],\n status: 'optional',\n },\n show_mask: {\n doc: 'Show mask when input is empty and has no focus. Defaults to `false`.',\n type: 'boolean',\n status: 'optional',\n },\n show_guide: {\n doc: \"When `false` is given, it doesn't print out placeholder characters and only adds mask characters when the user reaches them as they're typing. Defaults to `true`.\",\n type: 'boolean',\n status: 'optional',\n },\n placeholder_char: {\n doc: 'The placeholder character represents the fillable spot in the mask (e.g. `_`). Defaults to invisible space.',\n type: 'string',\n status: 'optional',\n },\n keep_char_positions: {\n doc: 'When `true`, adding or deleting characters will not affect the positions of existing characters. Defaults to `false`.',\n type: 'boolean',\n status: 'optional',\n },\n '[Space](/uilib/layout/space/properties)': {\n doc: 'Spacing properties like `top` or `bottom` are supported.',\n type: ['string', 'object'],\n status: 'optional',\n },\n '[Input](/uilib/components/input/properties)': {\n doc: 'All `Input` properties are supported.',\n type: 'Various',\n status: 'optional',\n },\n}\n\nexport const inputMaskedEvents: PropertiesTableProps = {\n on_change: {\n doc: 'will be called on value changes made by the user. Returns an object with the value as a string and the native event: `{ value, numberValue, cleanedValue, event }`.',\n type: 'function',\n status: 'optional',\n },\n '[Input](/uilib/components/input/events)': {\n doc: 'All `Input` events are supported.',\n type: 'Various',\n status: 'optional',\n },\n}\n\nexport const inputMaskedMaskOptionsProperties: PropertiesTableProps = {\n prefix: {\n doc: 'What to display before the amount. Defaults to an empty string.',\n type: 'string',\n status: 'optional',\n },\n suffix: {\n doc: 'What to display after the amount. Defaults to an empty string.',\n type: 'string',\n status: 'optional',\n },\n includeThousandsSeparator: {\n doc: 'Whether or not to separate thousands. Defaults to `true`.',\n type: 'boolean',\n status: 'optional',\n },\n thousandsSeparatorSymbol: {\n doc: \"Character with which to separate thousands. Defaults to `' '`.\",\n type: 'string',\n status: 'optional',\n },\n allowDecimal: {\n doc: 'Whether or not to allow the user to enter a fraction with the amount. Defaults to `false`.',\n type: 'boolean',\n status: 'optional',\n },\n decimalSymbol: {\n doc: \"Character that will act as a decimal point. Defaults to `','`.\",\n type: 'string',\n status: 'optional',\n },\n decimalLimit: {\n doc: 'How many digits to allow after the decimal. Defaults to `2`.',\n type: 'number',\n status: 'optional',\n },\n integerLimit: {\n doc: 'Limit the length of the integer number. Defaults to `null` for unlimited.',\n type: 'number',\n status: 'optional',\n },\n requireDecimal: {\n doc: 'Whether or not to always include a decimal point and placeholder for decimal digits after the integer. Defaults to `false`.',\n type: 'boolean',\n status: 'optional',\n },\n allowNegative: {\n doc: 'Whether or not to allow negative numbers. Defaults to `true`.',\n type: 'boolean',\n status: 'optional',\n },\n disallowLeadingZeroes: {\n doc: 'Whether or not to allow leading zeroes during typing. *A leading zero is any 0 digit that comes before the first nonzero digit in a number string in positional notation* - [wikipedia](https://en.wikipedia.org/wiki/Leading_zero). Defaults to `false`.',\n type: 'boolean',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,qBAA2C,GAAG;EACzDC,SAAS,EAAE;IACTC,GAAG,EAAE,0FAA0F;IAC/FC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDC,UAAU,EAAE;IACVH,GAAG,EAAE,iHAAiH;IACtHC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDE,WAAW,EAAE;IACXJ,GAAG,EAAE,+IAA+I;IACpJC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDG,YAAY,EAAE;IACZL,GAAG,EAAE,qIAAqI;IAC1IC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,WAAW,EAAE;IACXN,GAAG,EAAE,sOAAsO;IAC3OC,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC3BC,MAAM,EAAE;EACV,CAAC;EACDK,aAAa,EAAE;IACbP,GAAG,EAAE,yRAAyR;IAC9RC,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC3BC,MAAM,EAAE;EACV,CAAC;EACDM,aAAa,EAAE;IACbR,GAAG,EAAE,gFAAgF;IACrFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDO,MAAM,EAAE;IACNT,GAAG,EAAE,mMAAmM;IACxMC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDQ,IAAI,EAAE;IACJV,GAAG,EAAE,mNAAmN;IACxNC,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC5BC,MAAM,EAAE;EACV,CAAC;EACDS,SAAS,EAAE;IACTX,GAAG,EAAE,sEAAsE;IAC3EC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDU,UAAU,EAAE;IACVZ,GAAG,EAAE,oKAAoK;IACzKC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDW,gBAAgB,EAAE;IAChBb,GAAG,EAAE,6GAA6G;IAClHC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDY,mBAAmB,EAAE;IACnBd,GAAG,EAAE,uHAAuH;IAC5HC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACD,yCAAyC,EAAE;IACzCF,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1BC,MAAM,EAAE;EACV,CAAC;EACD,6CAA6C,EAAE;IAC7CF,GAAG,EAAE,uCAAuC;IAC5CC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMa,iBAAuC,GAAG;EACrDC,SAAS,EAAE;IACThB,GAAG,EAAE,qKAAqK;IAC1KC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACD,yCAAyC,EAAE;IACzCF,GAAG,EAAE,mCAAmC;IACxCC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMe,gCAAsD,GAAG;EACpEC,MAAM,EAAE;IACNlB,GAAG,EAAE,iEAAiE;IACtEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDiB,MAAM,EAAE;IACNnB,GAAG,EAAE,gEAAgE;IACrEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDkB,yBAAyB,EAAE;IACzBpB,GAAG,EAAE,2DAA2D;IAChEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDmB,wBAAwB,EAAE;IACxBrB,GAAG,EAAE,gEAAgE;IACrEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDoB,YAAY,EAAE;IACZtB,GAAG,EAAE,4FAA4F;IACjGC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDqB,aAAa,EAAE;IACbvB,GAAG,EAAE,gEAAgE;IACrEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDsB,YAAY,EAAE;IACZxB,GAAG,EAAE,8DAA8D;IACnEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDuB,YAAY,EAAE;IACZzB,GAAG,EAAE,2EAA2E;IAChFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDwB,cAAc,EAAE;IACd1B,GAAG,EAAE,6HAA6H;IAClIC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDyB,aAAa,EAAE;IACb3B,GAAG,EAAE,+DAA+D;IACpEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACD0B,qBAAqB,EAAE;IACrB5B,GAAG,EAAE,2PAA2P;IAChQC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
@@ -16,6 +16,7 @@ export function useMaskParams(): any;
16
16
  export function useInputElement(): (params: any, innerRef: any) => import("react/jsx-runtime").JSX.Element;
17
17
  export function useEventMapping({ setLocalValue }: object): {
18
18
  onBeforeInput: (event: any) => any;
19
+ onInput: (event: any) => any;
19
20
  onFocus: (params: any) => any;
20
21
  onBlur: (params: any) => any;
21
22
  onMouseUp: (event: any) => any;
@@ -6,9 +6,10 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
6
6
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
7
  import React, { useCallback } from 'react';
8
8
  import classnames from 'classnames';
9
- import { cleanNumber, getCurrencySymbol } from '../number-format/NumberUtils';
9
+ import { cleanNumber, getCurrencySymbol, NUMBER_MINUS } from '../number-format/NumberUtils';
10
10
  import { isTrue, dispatchCustomElementEvent, extendPropsWithContext, keycode } from '../../shared/component-helper';
11
11
  import { safeSetSelection } from './text-mask/createTextMaskInputElement';
12
+ import { isNumber } from './text-mask/utilities';
12
13
  import TextMask from './TextMask';
13
14
  import createNumberMask from './addons/createNumberMask';
14
15
  import InputMaskedContext from './InputMaskedContext';
@@ -182,7 +183,10 @@ export const useEventMapping = ({
182
183
  return {
183
184
  onBeforeInput: event => callEvent({
184
185
  event
185
- }, 'on_before_input'),
186
+ }, 'onBeforeInput'),
187
+ onInput: event => callEvent({
188
+ event
189
+ }, 'onInput'),
186
190
  onFocus: params => callEvent(params, 'on_focus'),
187
191
  onBlur: params => callEvent(params, 'on_blur'),
188
192
  onMouseUp: event => callEvent({
@@ -223,7 +227,7 @@ const useCallEvent = ({
223
227
  if (name === 'on_key_down' && (event.which === 229 || keyCode === undefined)) {
224
228
  isUnidentified = true;
225
229
  }
226
- if (isUnidentified && name === 'on_before_input' && typeof (event === null || event === void 0 ? void 0 : event.data) !== 'undefined') {
230
+ if (isUnidentified && name === 'onBeforeInput' && typeof (event === null || event === void 0 ? void 0 : event.data) !== 'undefined') {
227
231
  name = 'on_key_down';
228
232
  keyCode = event.data;
229
233
  isUnidentified = false;
@@ -232,10 +236,38 @@ const useCallEvent = ({
232
236
  keyCode = '0';
233
237
  isUnidentified = false;
234
238
  }
235
- if (name === 'on_key_down' && !isUnidentified && maskParams !== null && maskParams !== void 0 && maskParams.disallowLeadingZeroes && (keyCode === '0' || keyCode === 'numpad 0' || value.replace(/[^\d]/g, '') === '' && decimalSeparators.test(keyCode))) {
236
- const testValue = (value.slice(0, selStart) + '0' + value.slice(selStart + 1, value.length)).replace(/[^\d]/g, '');
237
- if (/^0/.test(testValue)) {
238
- event.preventDefault();
239
+ if (maskParams !== null && maskParams !== void 0 && maskParams.disallowLeadingZeroes && (name === 'onInput' || name === 'on_blur')) {
240
+ const isNegative = new RegExp(`^${NUMBER_MINUS}`, 'g').test(value);
241
+ if ((isNegative ? selStart > 1 : selStart > 0) || name === 'on_blur') {
242
+ const onlyNumber = value.replace(new RegExp(`[^\\d${maskParams.decimalSymbol}]`, 'g'), '');
243
+ let leadingZeroes = 0;
244
+ for (let i = 0; i < onlyNumber.length - 1; i++) {
245
+ if (onlyNumber.charAt(i) === '0' && onlyNumber.charAt(i + 1) !== maskParams.decimalSymbol) {
246
+ leadingZeroes++;
247
+ } else {
248
+ break;
249
+ }
250
+ }
251
+ let newSelStart = selStart;
252
+ let newValue = value;
253
+ let firstNumberIndex = 0;
254
+ if (leadingZeroes > 0) {
255
+ for (let i = 0; i < value.length; i++) {
256
+ firstNumberIndex = i;
257
+ const char = value.charAt(i);
258
+ if (char !== '0' && isNumber(parseInt(char)) || value.charAt(i + 1) === maskParams.decimalSymbol) {
259
+ break;
260
+ }
261
+ }
262
+ newValue = value.substring(0, isNegative ? 1 : 0) + value.substring(firstNumberIndex);
263
+ newSelStart = selStart > firstNumberIndex ? selStart - (value.length - newValue.length) : isNegative ? 1 : 0;
264
+ }
265
+ if (newValue !== value) {
266
+ setLocalValue(newValue);
267
+ event.target.value = newValue;
268
+ safeSetSelection(event.target, newSelStart);
269
+ value = newValue;
270
+ }
239
271
  }
240
272
  }
241
273
  if (name === 'on_key_down' && isNumberMask && !isUnidentified && maskParams !== null && maskParams !== void 0 && maskParams.decimalSymbol) {
@@ -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","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":[]}
1
+ {"version":3,"file":"InputMaskedHooks.js","names":["React","useCallback","classnames","cleanNumber","getCurrencySymbol","NUMBER_MINUS","isTrue","dispatchCustomElementEvent","extendPropsWithContext","keycode","safeSetSelection","isNumber","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","onInput","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","isNegative","RegExp","test","onlyNumber","replace","decimalSymbol","leadingZeroes","i","length","charAt","newSelStart","newValue","firstNumberIndex","char","parseInt","substring","hasDecimalSymbol","includes","allowedDecimals","decimalLimit","allowDecimal","preventDefault","charAtSelection","slice","index","indexOf","thousandsSeparatorSymbol","num","prefix","suffix","decimalSeparator","thousandsSeparator","numberValue","Number","cleanedValue","String","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 NUMBER_MINUS,\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'\nimport { isNumber } from './text-mask/utilities'\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 }, 'onBeforeInput'),\n onInput: (event) => callEvent({ event }, 'onInput'),\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 === 'onBeforeInput' &&\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 // Also remove leading zeroes when the input is blurred.\n if (\n maskParams?.disallowLeadingZeroes &&\n (name === 'onInput' || name === 'on_blur')\n ) {\n const isNegative = new RegExp(`^${NUMBER_MINUS}`, 'g').test(value)\n if (\n (isNegative ? selStart > 1 : selStart > 0) ||\n name === 'on_blur'\n ) {\n const onlyNumber = value.replace(\n new RegExp(`[^\\\\d${maskParams.decimalSymbol}]`, 'g'),\n ''\n )\n let leadingZeroes = 0\n for (let i = 0; i < onlyNumber.length - 1; i++) {\n if (\n onlyNumber.charAt(i) === '0' &&\n onlyNumber.charAt(i + 1) !== maskParams.decimalSymbol\n ) {\n leadingZeroes++\n } else {\n break\n }\n }\n let newSelStart = selStart\n let newValue = value\n let firstNumberIndex = 0\n if (leadingZeroes > 0) {\n for (let i = 0; i < value.length; i++) {\n firstNumberIndex = i\n const char = value.charAt(i)\n\n if (\n (char !== '0' && isNumber(parseInt(char))) ||\n value.charAt(i + 1) === maskParams.decimalSymbol\n ) {\n break\n }\n }\n newValue =\n value.substring(0, isNegative ? 1 : 0) +\n value.substring(firstNumberIndex)\n\n newSelStart =\n selStart > firstNumberIndex\n ? selStart - (value.length - newValue.length)\n : isNegative\n ? 1\n : 0\n }\n\n if (newValue !== value) {\n setLocalValue(newValue)\n event.target.value = newValue\n safeSetSelection(event.target, newSelStart)\n value = newValue\n }\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":[]}
@@ -1,7 +1,7 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
- import { format, getDecimalSeparator, getThousandsSeparator } from '../number-format/NumberUtils';
4
+ import { format, getDecimalSeparator, getThousandsSeparator, NUMBER_MINUS } from '../number-format/NumberUtils';
5
5
  import { warn } from '../../shared/component-helper';
6
6
  import { IS_IOS } from '../../shared/helpers';
7
7
  import { safeSetSelection } from './text-mask/createTextMaskInputElement';
@@ -53,8 +53,9 @@ export const correctNumberValue = ({
53
53
  const decimalSymbol = maskParams.decimalSymbol;
54
54
  value = value.replace('.', decimalSymbol);
55
55
  if (localValue !== null) {
56
- const localNumberValue = localValue.replace(/[^\d,.-]/g, '');
57
- const numberValue = value.replace(/[^\d,.-]/g, '');
56
+ const invalidCharactersRegex = new RegExp(`[^${NUMBER_MINUS}\\d${decimalSymbol}]`, 'g');
57
+ const localNumberValue = localValue.replace(invalidCharactersRegex, '');
58
+ const numberValue = value.replace(invalidCharactersRegex, '');
58
59
  const valueHasDecimal = numberValue.includes(decimalSymbol);
59
60
  if (!valueHasDecimal) {
60
61
  const endsWithDecimal = localNumberValue.endsWith(decimalSymbol);
@@ -65,10 +66,10 @@ export const correctNumberValue = ({
65
66
  value = `${value}${decimalSymbol}0`;
66
67
  }
67
68
  }
68
- if (localNumberValue !== '0' && localNumberValue.startsWith('0') && parseFloat(numberValue.replace(decimalSymbol, '.')) === parseFloat(localNumberValue.replace(decimalSymbol, '.'))) {
69
+ if (localNumberValue !== '0' && new RegExp(`^(0|(${NUMBER_MINUS})0)`).test(localNumberValue) && parseFloat(numberValue.replace(decimalSymbol, '.')) === parseFloat(localNumberValue.replace(decimalSymbol, '.'))) {
69
70
  value = localValue;
70
71
  }
71
- if (/^(-|-0)$/.test(localValue.replace(/[^\d-0]/g, ''))) {
72
+ if (new RegExp(`^((${NUMBER_MINUS})|(${NUMBER_MINUS})0)$`).test(localValue.replace(new RegExp(`[^\\d(${NUMBER_MINUS})0]`, 'g'), ''))) {
72
73
  value = localValue;
73
74
  } else if (localNumberValue === '' && numberValue === '0') {
74
75
  value = '';
@@ -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","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
+ {"version":3,"file":"InputMaskedUtils.js","names":["format","getDecimalSeparator","getThousandsSeparator","NUMBER_MINUS","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","invalidCharactersRegex","RegExp","localNumberValue","numberValue","valueHasDecimal","endsWithDecimal","endsWith","endsWithZeroAndDecimal","test","correctCaretPosition","element","maskParamsRef","correction","current","suffix","prefix","start","selectionStart","end","selectionEnd","suffixStart","suffixEnd","pos","placeholderChar","prefixStart","prefixEnd","char","mask","chars","l","i","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 NUMBER_MINUS,\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 invalidCharactersRegex = new RegExp(\n `[^${NUMBER_MINUS}\\\\d${decimalSymbol}]`,\n 'g'\n )\n const localNumberValue = localValue.replace(invalidCharactersRegex, '')\n const numberValue = value.replace(invalidCharactersRegex, '')\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\n if (\n localNumberValue !== '0' &&\n new RegExp(`^(0|(${NUMBER_MINUS})0)`).test(localNumberValue) &&\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 (\n new RegExp(`^((${NUMBER_MINUS})|(${NUMBER_MINUS})0)$`).test(\n localValue.replace(new RegExp(`[^\\\\d(${NUMBER_MINUS})0]`, 'g'), '')\n )\n ) {\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":[]}
@@ -9,7 +9,8 @@ import { LOCALE, CURRENCY, CURRENCY_DISPLAY } from '../../shared/defaults';
9
9
  import { warn, isTrue, slugify, escapeRegexChars } from '../../shared/component-helper';
10
10
  import { getOffsetTop, getOffsetLeft, getSelectedElement, copyToClipboard, IS_MAC, IS_WIN } from '../../shared/helpers';
11
11
  import locales from '../../shared/locales';
12
- const NUMBER_CHARS = '\\-0-9,.';
12
+ export const NUMBER_CHARS = '\\-0-9,.';
13
+ export const NUMBER_MINUS = '-|−|‐|‒|–|—|―';
13
14
  export const format = (value, {
14
15
  locale = null,
15
16
  clean = false,
@@ -292,7 +293,7 @@ const prepareMinus = (display, locale) => {
292
293
  if (first === '-' && second === '-') {
293
294
  return display;
294
295
  }
295
- const reg = '^(-|−|‐|‒|–|—|―)';
296
+ const reg = `^(${NUMBER_MINUS})`;
296
297
  if (new RegExp(reg).test(first)) {
297
298
  if (parseFloat(second) > 0) {
298
299
  display = display.replace(new RegExp(reg + '(.*)'), '-$2');
@@ -335,8 +336,8 @@ export const formatNumber = (number, locale, options = {}, formatter = null) =>
335
336
  } else if (typeof Number !== 'undefined' && typeof Number.toLocaleString === 'function') {
336
337
  number = parseFloat(number).toLocaleString(locale, options);
337
338
  }
338
- if (String(number).startsWith('−0')) {
339
- number = number.replace('−0', '0');
339
+ if (new RegExp(`^(${NUMBER_MINUS})(0|0[^\\d]|0\\s.*)$`).test(number)) {
340
+ number = number.replace(new RegExp(`(${NUMBER_MINUS})0`), '0');
340
341
  }
341
342
  } catch (e) {
342
343
  warn(`Number could not be formatted: ${JSON.stringify([number, locale, options])}`, e);