intelicoreact 1.6.25 → 1.6.26

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 (277) hide show
  1. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.js +1 -98
  2. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +1 -48
  3. package/dist/Atomic/FormElements/Calendar/Calendar.js +1 -249
  4. package/dist/Atomic/FormElements/Calendar/Calendar.props.js +1 -4
  5. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +1 -65
  6. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +1 -52
  7. package/dist/Atomic/FormElements/Datepicker/Datepicker.js +1 -424
  8. package/dist/Atomic/FormElements/Datepicker/Datepicker.props.js +1 -4
  9. package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.js +1 -173
  10. package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.props.js +1 -4
  11. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +1 -735
  12. package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +1 -20
  13. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +1 -529
  14. package/dist/Atomic/FormElements/FileLoader/FileLoader.js +1 -94
  15. package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.js +1 -105
  16. package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.js +1 -67
  17. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js +1 -247
  18. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +1 -160
  19. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +1 -193
  20. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +1 -135
  21. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.js +1 -116
  22. package/dist/Atomic/FormElements/Input/Input.js +1 -467
  23. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +1 -161
  24. package/dist/Atomic/FormElements/InputColor/InputColor.js +1 -64
  25. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.js +1 -200
  26. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +1 -354
  27. package/dist/Atomic/FormElements/InputDateRange/components/DateInput.js +1 -71
  28. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.d.ts +2 -0
  29. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +1 -693
  30. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js.map +1 -0
  31. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +1 -254
  32. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +1 -32
  33. package/dist/Atomic/FormElements/InputDateRange/dependencies.js +1 -200
  34. package/dist/Atomic/FormElements/InputLink/InputLink.js +1 -99
  35. package/dist/Atomic/FormElements/InputMask/InputCarretPosition.js +1 -37
  36. package/dist/Atomic/FormElements/InputMask/InputMask.js +1 -1214
  37. package/dist/Atomic/FormElements/InputMask/config.js +1 -15
  38. package/dist/Atomic/FormElements/InputMask/functions.js +1 -58
  39. package/dist/Atomic/FormElements/InputMask2/InputMask2.js +1 -674
  40. package/dist/Atomic/FormElements/InputMask2/config.js +1 -15
  41. package/dist/Atomic/FormElements/InputMask2/functions.js +1 -58
  42. package/dist/Atomic/FormElements/InputMask3/InputMask3.js +1 -766
  43. package/dist/Atomic/FormElements/InputMask3/config.js +1 -15
  44. package/dist/Atomic/FormElements/InputMask3/functions.js +1 -58
  45. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.js +1 -114
  46. package/dist/Atomic/FormElements/InputsRow/InputsRow.js +1 -140
  47. package/dist/Atomic/FormElements/Label/Label.js +1 -87
  48. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +1 -506
  49. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +1 -45
  50. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +1 -331
  51. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +1 -66
  52. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +1 -80
  53. package/dist/Atomic/FormElements/RadioInput/RadioInput.js +1 -57
  54. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +1 -54
  55. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +1 -183
  56. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +1 -222
  57. package/dist/Atomic/FormElements/RangeList/RangeList.js +1 -175
  58. package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +1 -43
  59. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +1 -443
  60. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +1 -858
  61. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +1 -39
  62. package/dist/Atomic/FormElements/Switcher/Switcher.js +1 -59
  63. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +1 -50
  64. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.js +1 -44
  65. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +1 -100
  66. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.js +1 -52
  67. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +1 -64
  68. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +1 -170
  69. package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.js +1 -202
  70. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +1 -67
  71. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +1 -115
  72. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +1 -1110
  73. package/dist/Atomic/FormElements/Text/Text.js +1 -125
  74. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.js +1 -49
  75. package/dist/Atomic/FormElements/Textarea/Textarea.js +1 -80
  76. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +1 -176
  77. package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +1 -62
  78. package/dist/Atomic/FormElements/TimeRange/TimeRange.js +1 -119
  79. package/dist/Atomic/FormElements/UserContacts/UserContacts.js +1 -188
  80. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +1 -83
  81. package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +1 -82
  82. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +1 -101
  83. package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.js +1 -29
  84. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +1 -113
  85. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.js +1 -30
  86. package/dist/Atomic/Layout/Header/Header.js +1 -85
  87. package/dist/Atomic/Layout/Spinner/Spinner.js +1 -44
  88. package/dist/Atomic/UI/Accordion/Accordion.js +1 -108
  89. package/dist/Atomic/UI/Accordion/AccordionItem.js +1 -176
  90. package/dist/Atomic/UI/AccordionTable/AccordionTable.js +1 -238
  91. package/dist/Atomic/UI/AccordionText/AccordionText.js +1 -69
  92. package/dist/Atomic/UI/AdvancedTag/AdvTag.js +1 -207
  93. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +1 -56
  94. package/dist/Atomic/UI/Alert/Alert.js +1 -72
  95. package/dist/Atomic/UI/Arrow/Arrow.js +1 -132
  96. package/dist/Atomic/UI/Box/Box.js +1 -52
  97. package/dist/Atomic/UI/Button/Button.js +1 -47
  98. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.js +1 -72
  99. package/dist/Atomic/UI/Chart/Chart.js +1 -172
  100. package/dist/Atomic/UI/Chart/partial/Chart.constants.js +1 -95
  101. package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +1 -80
  102. package/dist/Atomic/UI/Chart/partial/datasetSetters.js +1 -188
  103. package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +1 -335
  104. package/dist/Atomic/UI/Chart/partial/optionsSetters.js +1 -43
  105. package/dist/Atomic/UI/Chart/partial/utils.js +1 -60
  106. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +1 -109
  107. package/dist/Atomic/UI/DateTime/DateTime.js +1 -57
  108. package/dist/Atomic/UI/DebugContainer/DebugContainer.js +1 -44
  109. package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +1 -15
  110. package/dist/Atomic/UI/DoubleString/DoubleString.d.ts +19 -0
  111. package/dist/Atomic/UI/DoubleString/DoubleString.js +1 -102
  112. package/dist/Atomic/UI/DoubleString/DoubleString.js.map +1 -0
  113. package/dist/Atomic/UI/DoubleString/DoubleString.scss +8 -1
  114. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +1 -70
  115. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +1 -221
  116. package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +1 -106
  117. package/dist/Atomic/UI/Hint/Hint.js +1 -256
  118. package/dist/Atomic/UI/Hint/partials/_utils.js +1 -64
  119. package/dist/Atomic/UI/Modal/Modal.js +1 -179
  120. package/dist/Atomic/UI/Modal/ModalHOC.js +1 -97
  121. package/dist/Atomic/UI/Modal/partials/ModalFooter.js +1 -71
  122. package/dist/Atomic/UI/Modal/partials/ModalTitle.js +1 -110
  123. package/dist/Atomic/UI/Modal/partials/useMobileModal.js +1 -192
  124. package/dist/Atomic/UI/MonoAccordion/MonoAccordion._test.js +1 -75
  125. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +1 -80
  126. package/dist/Atomic/UI/NavLine/NavLine.js +1 -317
  127. package/dist/Atomic/UI/PageTitle/PageTitle.js +1 -77
  128. package/dist/Atomic/UI/PieChart/PieChart.js +1 -42
  129. package/dist/Atomic/UI/Price/Price.js +1 -31
  130. package/dist/Atomic/UI/PriceRange/PriceRange.js +1 -44
  131. package/dist/Atomic/UI/ProgressLine/ProgressLine.js +1 -98
  132. package/dist/Atomic/UI/Status/Status.js +1 -67
  133. package/dist/Atomic/UI/Table/Partials/TdCell.js +1 -87
  134. package/dist/Atomic/UI/Table/Partials/TdHeader.js +1 -38
  135. package/dist/Atomic/UI/Table/Partials/TdRow.js +1 -99
  136. package/dist/Atomic/UI/Table/Partials/TdTitle.js +1 -52
  137. package/dist/Atomic/UI/Table/Table.js +1 -63
  138. package/dist/Atomic/UI/Table/TdTypes/TdActions.js +1 -80
  139. package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +1 -28
  140. package/dist/Atomic/UI/Table/TdTypes/TdRange.js +1 -13
  141. package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +1 -53
  142. package/dist/Atomic/UI/Tag/Tag.js +1 -167
  143. package/dist/Atomic/UI/TagList/TagList.js +1 -251
  144. package/dist/Atomic/UI/UserBox/UserBox.js +1 -86
  145. package/dist/Atomic/UI/WizardStepper/constructor.js +1 -84
  146. package/dist/Atomic/UI/WizardStepper/index.js +1 -3
  147. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +1 -37
  148. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/index.js +1 -3
  149. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +1 -61
  150. package/dist/Atomic/UI/WizardStepper/ui/StepRow/index.js +1 -3
  151. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +1 -39
  152. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/index.js +1 -3
  153. package/dist/Atomic/UI/WizardStepper/ui/icons.js +1 -49
  154. package/dist/Atomic/UI/WizardStepper/ui/index.js +1 -3
  155. package/dist/Classes/AbortableFetch.js +1 -454
  156. package/dist/Classes/AnimatedHandler.js +1 -47
  157. package/dist/Classes/RESTAPI/index.js +1 -228
  158. package/dist/Classes/RESTAPI/partials/AbortableFetch.js +1 -457
  159. package/dist/Classes/RESTAPI/partials/ApiBase.js +1 -48
  160. package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +1 -112
  161. package/dist/Classes/RESTAPI/partials/ApiUtils.js +1 -189
  162. package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +1 -252
  163. package/dist/Classes/RESTAPI/partials/Utils.js +1 -92
  164. package/dist/Classes/RESTAPI/partials/_outerDependencies.js +1 -3
  165. package/dist/Classes/RESTAPI/partials/_utils.js +1 -197
  166. package/dist/Constants/index.constants.js +1 -78
  167. package/dist/Functions/Portal.js +1 -22
  168. package/dist/Functions/customEventListener.js +1 -96
  169. package/dist/Functions/dateTime.js +1 -149
  170. package/dist/Functions/fieldValueFormatters.js +1 -405
  171. package/dist/Functions/guards/assertions.js +1 -294
  172. package/dist/Functions/guards/safeValue.js +1 -75
  173. package/dist/Functions/guards/typeGuards.js +1 -373
  174. package/dist/Functions/hooks/useFormFieldsChangesManager.js +1 -95
  175. package/dist/Functions/locale/createTranslator.js +1 -32
  176. package/dist/Functions/operations.js +1 -130
  177. package/dist/Functions/presets/inputMaskPresets.js +1 -170
  178. package/dist/Functions/presets/inputPresets.js +1 -60
  179. package/dist/Functions/presets/mobileKeyboardTypesPresets.js +1 -45
  180. package/dist/Functions/schemas.js +1 -31
  181. package/dist/Functions/useBodyScrollLock.js +1 -17
  182. package/dist/Functions/useClickOutside.js +1 -15
  183. package/dist/Functions/useDebounce.js +1 -17
  184. package/dist/Functions/useFieldFocus.js +1 -84
  185. package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +1 -39
  186. package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +1 -159
  187. package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +1 -78
  188. package/dist/Functions/useFormTools/functions/General.js +1 -134
  189. package/dist/Functions/useFormTools/functions/RenderFields.js +1 -111
  190. package/dist/Functions/useFormTools/functions/usePrevious.js +1 -12
  191. package/dist/Functions/useFormTools/index.js +1 -778
  192. package/dist/Functions/useInputHighlightError.js +1 -67
  193. package/dist/Functions/useIsMobile/useIsMobile.js +1 -33
  194. package/dist/Functions/useKeyPress/useHandleKeyPress.js +1 -52
  195. package/dist/Functions/useKeyPress/useKeyPress.js +1 -52
  196. package/dist/Functions/useLocalStorage.js +1 -34
  197. package/dist/Functions/useLocationParams.js +1 -27
  198. package/dist/Functions/useMediaQuery.js +1 -17
  199. package/dist/Functions/useMetaInfo.js +1 -43
  200. package/dist/Functions/useMouseUpOutside.js +1 -16
  201. package/dist/Functions/useOnlineStatus.js +1 -29
  202. package/dist/Functions/usePasswordChecker.js +1 -110
  203. package/dist/Functions/usePrevious.js +1 -12
  204. package/dist/Functions/useResize.js +1 -31
  205. package/dist/Functions/useScrollTo.js +1 -17
  206. package/dist/Functions/useToggle.js +1 -17
  207. package/dist/Functions/utils.js +1 -522
  208. package/dist/Langs.js +1 -168
  209. package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +1 -21
  210. package/dist/Molecular/CustomIcons/components/AlertCircle.js +1 -23
  211. package/dist/Molecular/CustomIcons/components/AppStore.js +1 -29
  212. package/dist/Molecular/CustomIcons/components/Arrow.js +1 -32
  213. package/dist/Molecular/CustomIcons/components/ArrowDown.js +1 -17
  214. package/dist/Molecular/CustomIcons/components/ArrowLeft.js +1 -22
  215. package/dist/Molecular/CustomIcons/components/ArrowRight.js +1 -22
  216. package/dist/Molecular/CustomIcons/components/ArrowUp.js +1 -17
  217. package/dist/Molecular/CustomIcons/components/Bell.js +1 -15
  218. package/dist/Molecular/CustomIcons/components/Button.js +1 -12
  219. package/dist/Molecular/CustomIcons/components/Campaigns.js +1 -16
  220. package/dist/Molecular/CustomIcons/components/Check.js +1 -14
  221. package/dist/Molecular/CustomIcons/components/Check2.js +1 -12
  222. package/dist/Molecular/CustomIcons/components/ChevronDown.js +1 -12
  223. package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +1 -11
  224. package/dist/Molecular/CustomIcons/components/ChevronLeft.js +1 -11
  225. package/dist/Molecular/CustomIcons/components/ChevronRight.js +1 -11
  226. package/dist/Molecular/CustomIcons/components/ChevronUp.js +1 -11
  227. package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +1 -27
  228. package/dist/Molecular/CustomIcons/components/Close.js +1 -14
  229. package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +1 -17
  230. package/dist/Molecular/CustomIcons/components/Delete.js +1 -16
  231. package/dist/Molecular/CustomIcons/components/Edit.js +1 -15
  232. package/dist/Molecular/CustomIcons/components/Email.js +1 -31
  233. package/dist/Molecular/CustomIcons/components/FinturfLogo.js +1 -18
  234. package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +1 -35
  235. package/dist/Molecular/CustomIcons/components/Flows.js +1 -15
  236. package/dist/Molecular/CustomIcons/components/Gift.js +1 -25
  237. package/dist/Molecular/CustomIcons/components/GoogleAuth.js +1 -29
  238. package/dist/Molecular/CustomIcons/components/GooglePlay.js +1 -29
  239. package/dist/Molecular/CustomIcons/components/HelpCircle.js +1 -19
  240. package/dist/Molecular/CustomIcons/components/HelpCircle2.js +1 -20
  241. package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +1 -19
  242. package/dist/Molecular/CustomIcons/components/Home.js +1 -16
  243. package/dist/Molecular/CustomIcons/components/Home2.js +1 -22
  244. package/dist/Molecular/CustomIcons/components/Key.js +1 -23
  245. package/dist/Molecular/CustomIcons/components/Landers.js +1 -20
  246. package/dist/Molecular/CustomIcons/components/Lock.js +1 -15
  247. package/dist/Molecular/CustomIcons/components/Mail.js +1 -26
  248. package/dist/Molecular/CustomIcons/components/Mastercard.js +1 -73
  249. package/dist/Molecular/CustomIcons/components/Minus.js +1 -25
  250. package/dist/Molecular/CustomIcons/components/Offers.js +1 -16
  251. package/dist/Molecular/CustomIcons/components/Pause.js +1 -28
  252. package/dist/Molecular/CustomIcons/components/PayPal.js +1 -41
  253. package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +1 -28
  254. package/dist/Molecular/CustomIcons/components/Phone.js +1 -30
  255. package/dist/Molecular/CustomIcons/components/Play.js +1 -25
  256. package/dist/Molecular/CustomIcons/components/Plus.js +1 -25
  257. package/dist/Molecular/CustomIcons/components/Profile.js +1 -16
  258. package/dist/Molecular/CustomIcons/components/QRCode.js +1 -29
  259. package/dist/Molecular/CustomIcons/components/Rectangle.js +1 -12
  260. package/dist/Molecular/CustomIcons/components/Revert.js +1 -13
  261. package/dist/Molecular/CustomIcons/components/Star.js +1 -14
  262. package/dist/Molecular/CustomIcons/components/Star2.js +1 -16
  263. package/dist/Molecular/CustomIcons/components/TrafficSources.js +1 -14
  264. package/dist/Molecular/CustomIcons/components/Trash.js +1 -15
  265. package/dist/Molecular/CustomIcons/components/TrashRed.js +1 -15
  266. package/dist/Molecular/CustomIcons/components/Triggers.js +1 -15
  267. package/dist/Molecular/CustomIcons/components/User.js +1 -25
  268. package/dist/Molecular/CustomIcons/components/Visa.js +1 -31
  269. package/dist/Molecular/CustomIcons/components/X.js +1 -12
  270. package/dist/Molecular/CustomIcons/index.js +1 -61
  271. package/dist/Molecular/FormElement/FormElement.js +1 -54
  272. package/dist/Molecular/FormWithDependOn/FormWithDependOn.js +1 -184
  273. package/dist/Molecular/FormWithDependOn/partials/_utils.js +1 -53
  274. package/dist/Molecular/InputAddress/InputAddress.js +1 -626
  275. package/dist/Molecular/InputPassword/InputPassword.js +1 -48
  276. package/dist/index.js +1 -104
  277. package/package.json +1 -1
@@ -1,766 +1 @@
1
- import React, { createRef, useEffect, useMemo, useRef, useState } from "react";
2
-
3
- import cn from "classnames";
4
- import { Eye, EyeOff, X } from "react-feather";
5
-
6
- import { KEYBOARD_KEY_CODES as KEY_CODES } from "../../../Constants/index.constants";
7
- import { disableDefaultBehavior } from "../../../Functions/utils";
8
- import Spinner from "../../Layout/Spinner/Spinner";
9
- import DynamicIcon from "../../UI/DynamicIcon/DynamicIcon";
10
- import Hint from "../../UI/Hint/Hint";
11
-
12
- import {
13
- DEFAULT_ERRORS,
14
- DIGIT_MASK_CHAR,
15
- LOWERCASE_LETTER_MASK_CHAR,
16
- SPACE_CHAR,
17
- UPPERCASE_LETTER_MASK_CHAR,
18
- } from "./config";
19
- import {
20
- isDigit,
21
- isDigitMaskChar,
22
- isLetter,
23
- isLetterMaskChar,
24
- isLowerCaseLetter,
25
- isUpperCaseLetter,
26
- } from "./functions";
27
-
28
- import "./InputMask3.scss";
29
-
30
- export default function InputMask3({
31
- autocomplete = "off",
32
- maskPattern,
33
- maskPatternPlaceholder,
34
- maskPlaceholder,
35
- maskDigitPlaceholder,
36
- maskLetterPlaceholder,
37
- usePatternPlaceholder,
38
-
39
- maxEditableIndex = -1,
40
-
41
- isFocusedDefault = false,
42
- isClearable,
43
- isCaseSensitive,
44
- adaptTextCase,
45
- isUseAutoSelect = true,
46
- isLoading = false,
47
-
48
- // Включает/отключает режим скрытия в принциепе.
49
- withHiddenMode = false,
50
- // Символ которым скрывааеются символы
51
- hiddenChar = "*",
52
- // Индекс последнего скрываемогосимвола
53
- // Индекс нужно передавать с УЧЕТОМ не значащих символов маски,
54
- // при этом не значащие символы скрываться НЕ будут
55
- maxHiddenIndex = -1,
56
- // Инициализационнное значение положения "скрыть" (если НЕ управляется сверху)
57
- isValueHiddenDefault = false,
58
-
59
- // ? Если передана как булева, то режим скрытия управляется ей, здешний триггер (глазик) НЕ рендерится
60
- // ? Если НЕ передана ка булева, то режим скрытия обеспечиватся своим внутренним стором, здешний триггер (глазик) рендерится
61
- isHide, // булева пропа для управления сверху
62
-
63
- icon,
64
- showIcon,
65
- isIconLeft,
66
- isIconRight,
67
- iconDynamicKey,
68
- iconDynamicProps = {},
69
- value,
70
- blinkErrors = true,
71
- blinkDuration = 100,
72
- showErrors = false,
73
-
74
- className = "",
75
- errors: customErrors = DEFAULT_ERRORS,
76
- error: customError = "",
77
-
78
- onChange: onChangeProp = () => {},
79
- onFocus: onFocusProp = () => {},
80
- onBlur: onBlurProp = () => {},
81
- onKeyDown: onKeyDownProp = () => {},
82
- onFilled: onFilledProp = () => {},
83
-
84
- showHint = false,
85
- hintText = "",
86
- hintClassName = "",
87
- isHintRight = true,
88
- isHintLeft = false,
89
- hintPosition = "right",
90
-
91
- hideMaskOnBlur = true,
92
- returnMaskedValue = false,
93
-
94
- name,
95
- fieldKey,
96
- id,
97
- disabled,
98
- testId = "input-mask",
99
-
100
- attributesOfNativeInput = {},
101
- } = {}) {
102
- const errors = {
103
- ...DEFAULT_ERRORS,
104
- ...customErrors,
105
- };
106
-
107
- if (maxEditableIndex === -1) maxEditableIndex = maskPattern.length;
108
-
109
- const [isMaskRendered, setMaskRendered] = useState(false);
110
- const [isFocused, setFocused] = useState(false);
111
- const [isInitValue, setIsInitValue] = useState(false);
112
- const [selectedLength, setSelectedLength] = useState(0);
113
- //? Если управляется сверху, то инициируемся текущим внешним значением
114
- const [isValueHidden, setIsValueHidden] = useState(
115
- typeof isHide === "boolean" ? isHide : isValueHiddenDefault,
116
- );
117
- const [isHiddenLogicInit, setIsHiddenLogicInit] = useState(false);
118
-
119
- const inputRef = useRef(null);
120
- const keyDownRef = useRef(null);
121
- const setKeyDown = (keyCode) => (keyDownRef.current = keyCode);
122
- const getKeyDown = () => keyDownRef.current;
123
-
124
- const DynamicIconComponent =
125
- iconDynamicKey && !icon ? (
126
- <DynamicIcon iconKey={iconDynamicKey} {...iconDynamicProps} />
127
- ) : null;
128
-
129
- const setCaret = (caret) => {
130
- if (caret < 0) caret = 0;
131
- const input = inputRef.current;
132
- if (input) setTimeout(() => input.setSelectionRange(caret, caret), 0);
133
- };
134
-
135
- // ERRORS MANAGEMENT FUNCTIONS | START //
136
- const [isError, setError] = useState(false);
137
- const [blinkError, setBlinkError] = useState(false);
138
-
139
- const [errorMessage, setErrorMessage] = useState(errors.default);
140
- const clearErrorMessage = () => setErrorMessage(errors.default);
141
- // ERRORS MANAGEMENT FUNCTIONS | END //
142
-
143
- // INNER VALUE MANAGEMENT FUNCTIONS | START //
144
- const [innerValue, setInnerValue] = useState([]);
145
-
146
- const prevValueRef = useRef([]);
147
-
148
- const addInnerValueChar = ({ char, data = {} }) => {
149
- setInnerValue((state) => {
150
- const stateCopy = [...state];
151
- const charObj = getCharObj(char, data);
152
-
153
- stateCopy.push(charObj);
154
-
155
- return stateCopy;
156
- });
157
- };
158
- const updateInnerValueChar = ({ char = null } = {}, i) => {
159
- setInnerValue((state) => {
160
- if (!state[i]) return state;
161
-
162
- const stateCopy = [...state];
163
-
164
- if (!stateCopy[i].isSpecialSymbol && char !== null)
165
- stateCopy[i].char = char;
166
-
167
- return stateCopy;
168
- });
169
- };
170
- const resetInnerValue = () => {
171
- setInnerValue((innerValue) =>
172
- innerValue.map((item) => {
173
- if (!item.isSpecialSymbol && item.char !== null) item.char = "";
174
- return item;
175
- }),
176
- );
177
- };
178
- const setValue = (value, disableErrors = true) => {
179
- value = value === null || value === undefined ? "" : value.toString();
180
-
181
- resetInnerValue();
182
- const staticLength = maskPattern.length - maxEditableIndex;
183
-
184
- if (value.length > maxEditableIndex)
185
- value = value.slice(0, value.length - staticLength);
186
- else if (maxEditableIndex !== maskPattern?.length - 1)
187
- value = value.slice(0, maxEditableIndex);
188
- let valueCharIndex = 0;
189
- setInnerValue((innerValue) => {
190
- const newValue = innerValue.map((item, i) => {
191
- const { isSpecialSymbol } = item;
192
- if (isSpecialSymbol) return item;
193
- let char = value[valueCharIndex];
194
- let whileLimit = maskPattern?.length || 0;
195
-
196
- while (
197
- whileLimit &&
198
- (isSpecialSymbolChar({ char: value[valueCharIndex] }) ||
199
- !isValidChar({ char, i, disableErrors: true }))
200
- ) {
201
- whileLimit--;
202
- char = value[++valueCharIndex];
203
- }
204
-
205
- // If Valid
206
- if (isValidChar({ char, i, disableErrors })) {
207
- item.char = char;
208
- }
209
-
210
- ++valueCharIndex;
211
-
212
- return item;
213
- });
214
-
215
- return newValue;
216
- });
217
- };
218
- // INNER VALUE MANAGEMENT FUNCTIONS | END //
219
-
220
- // GETTERS | START //
221
- const getCharObj = (char, data = {}) => {
222
- const isSpecialSymbol = isSpecialSymbolChar({ char });
223
- const isSpecialSymbolMask = isSpecialSymbolMaskChar({ char });
224
-
225
- if (char === " ") char = SPACE_CHAR;
226
-
227
- return {
228
- char: isSpecialSymbolMask ? char : "",
229
- maskChar: char,
230
- isSpecialSymbol: isSpecialSymbolMask,
231
- isCharSymbol: !isSpecialSymbol && char !== "" && isSpecialSymbolMask,
232
- ref: createRef(),
233
- ...data,
234
- };
235
- };
236
- const getCharByIndex = (i) => {
237
- return innerValue[i] ? { ...innerValue[i] } : undefined;
238
- };
239
- const getMaskCharByIndex = (i) => {
240
- return innerValue[i]?.maskChar || undefined;
241
- };
242
- const getPlaceholderCharByIndex = (i) => {
243
- const { maskChar } = getCharByIndex(i);
244
-
245
- if (usePatternPlaceholder) {
246
- return maskPatternPlaceholder[i] || maskPlaceholder;
247
- }
248
- if (isDigitMaskChar(maskChar) && maskDigitPlaceholder)
249
- return maskDigitPlaceholder;
250
- if (isLetterMaskChar(maskChar) && maskLetterPlaceholder)
251
- return maskLetterPlaceholder;
252
- return maskPlaceholder;
253
- };
254
- const getInputValue = ({
255
- noLastTyppedCharIndexCheck,
256
- noHide = false,
257
- } = {}) => {
258
- let isValid = true;
259
-
260
- const lastTyppedCharIndex = innerValue.reduce(
261
- (result, { char, isSpecialSymbol }, i) =>
262
- char !== "" && !isSpecialSymbol ? i : result,
263
- 0,
264
- );
265
-
266
- const value = innerValue.reduce((result, { char, isSpecialSymbol }, i) => {
267
- if (
268
- char !== "" &&
269
- isValid &&
270
- (!noLastTyppedCharIndexCheck ? i <= lastTyppedCharIndex : true)
271
- ) {
272
- if (
273
- isValueHidden &&
274
- !isSpecialSymbol &&
275
- !noHide &&
276
- (maxHiddenIndex === -1 || i <= maxHiddenIndex)
277
- ) {
278
- result += hiddenChar;
279
- } else {
280
- result += char;
281
- }
282
- } else {
283
- isValid = false;
284
- }
285
-
286
- return result;
287
- }, "");
288
-
289
- if (getClearInnerValueAsString(value)?.length === 0) return "";
290
-
291
- return value;
292
- };
293
- const getClearInnerValueAsString = (valueProp) => {
294
- const symbolsInfo = innerValue?.map(
295
- ({ isSpecialSymbol, isCharSymbol }) => ({
296
- isSpecialSymbol,
297
- isCharSymbol,
298
- }),
299
- );
300
- const clearValue = (
301
- valueProp ??
302
- getInputValue({ noLastTyppedCharIndexCheck: true, noHide: true })
303
- )
304
- ?.split("")
305
- ?.reduce((resultStr, symbol, i) => {
306
- if (!symbolsInfo[i].isSpecialSymbol || symbolsInfo[i].isCharSymbol)
307
- resultStr += symbol;
308
- return resultStr;
309
- }, "");
310
-
311
- return clearValue;
312
- };
313
- const inputValue = useMemo(getInputValue, [innerValue, isValueHidden]);
314
- // GETTERS | END //
315
-
316
- // CHECKERS | START //
317
- const isValidChar = ({ char: key, i, disableErrors = false }) => {
318
- const maskChar = getMaskCharByIndex(i);
319
-
320
- switch (maskChar) {
321
- case DIGIT_MASK_CHAR:
322
- if (!isDigit(key)) {
323
- if (!disableErrors) {
324
- setErrorMessage(errors.onlyDigit);
325
- }
326
- return false;
327
- }
328
- break;
329
-
330
- case UPPERCASE_LETTER_MASK_CHAR:
331
- if (adaptTextCase) key = key.toUpperCase();
332
-
333
- if (!isLetter(key) && !isCaseSensitive) {
334
- if (!disableErrors) setErrorMessage(errors.onlyLetter);
335
- return false;
336
- }
337
-
338
- if (isCaseSensitive && !isUpperCaseLetter(key)) {
339
- if (!disableErrors) setErrorMessage(errors.onlyUpperCase);
340
- return false;
341
- }
342
- break;
343
- case LOWERCASE_LETTER_MASK_CHAR:
344
- if (adaptTextCase) key = key.toLowerCase();
345
-
346
- if (!isLetter(key) && !isCaseSensitive) {
347
- if (!disableErrors) setErrorMessage(errors.onlyLetter);
348
- return false;
349
- }
350
-
351
- if (isCaseSensitive && !isLowerCaseLetter(key)) {
352
- if (!disableErrors) setErrorMessage(errors.onlyLowerCase);
353
- return false;
354
- }
355
- break;
356
-
357
- default:
358
- return false;
359
- }
360
-
361
- return true;
362
- };
363
- const isSpecialSymbolMaskChar = ({ char }) => {
364
- return !isDigitMaskChar(char) && !isLetterMaskChar(char);
365
- };
366
- const isSpecialSymbolChar = ({ char }) => {
367
- return !isDigit(char) && !isLetter(char);
368
- };
369
- const isSpecialSymbol = (i) => getCharByIndex(i)?.isSpecialSymbol;
370
- // CHECKERS | END //
371
-
372
- /// --- Event Handlers ---///
373
-
374
- // GENERAL EVENT HANDLERS | START //
375
- const onVisibleChange = (e) => {
376
- clearErrorMessage();
377
-
378
- const {
379
- target: { value, selectionStart: caretPos },
380
- nativeEvent: { data: char },
381
- } = e;
382
-
383
- if (caretPos > maxEditableIndex) {
384
- disableDefaultBehavior();
385
- setCaret(maxEditableIndex);
386
- setBlinkError(true);
387
- return;
388
- }
389
-
390
- setValue(value);
391
-
392
- const caretOffset = value.length - caretPos;
393
-
394
- // Correct Caret Position
395
- if (!value.lastIndexEqualsTo(caretPos - 1)) {
396
- if (value.longerThan(inputValue)) {
397
- if (!isValidChar({ char, i: caretPos - 1 })) {
398
- disableDefaultBehavior(e);
399
- setCaret(caretPos - 1);
400
- } else {
401
- const newCaretPos = value.length - caretOffset;
402
- setCaret(
403
- isSpecialSymbol(newCaretPos) ? newCaretPos + 1 : newCaretPos,
404
- );
405
- }
406
- } else if (inputValue.longerThan(value)) {
407
- switch (getKeyDown()) {
408
- case KEY_CODES.Backspace:
409
- if (isSpecialSymbol(caretPos)) {
410
- disableDefaultBehavior(e);
411
- }
412
- setCaret(caretPos);
413
- break;
414
- case KEY_CODES.Delete:
415
- if (isSpecialSymbol(caretPos)) {
416
- disableDefaultBehavior(e);
417
- setCaret(caretPos + 1);
418
- } else {
419
- setCaret(caretPos);
420
- }
421
- break;
422
- default:
423
- if (selectedLength > 0) {
424
- setCaret(caretPos);
425
- }
426
- }
427
- }
428
- }
429
-
430
- /* Checking if the character is a special symbol and if it is not, it is checking if the character
431
- is valid or not. If it is not valid, it will blink the error. */
432
- if (blinkErrors) {
433
- setTimeout(() => {
434
- if (
435
- ((value.longerThan(inputValue) && !isSpecialSymbol(caretPos - 1)) ||
436
- (inputValue.longerThan(value) && !isSpecialSymbol(caretPos))) &&
437
- ((char && !isValidChar({ char, i: caretPos - 1 })) ||
438
- (inputValue === getInputValue() &&
439
- getInputValue()[caretPos - 1] !== char))
440
- ) {
441
- disableDefaultBehavior(e);
442
- setBlinkError(true);
443
- }
444
- }, 0);
445
- }
446
- };
447
- const onHiddenChange = (e) => {
448
- const SSN = getInputValue({ noHide: true });
449
-
450
- const {
451
- target: { value },
452
- } = e;
453
-
454
- if (value.replace(/-/g, "").length < SSN.replace(/-/g, "").length) {
455
- const last = SSN.length - 1;
456
- setValue(SSN.slice(0, last));
457
- return;
458
- }
459
-
460
- const numValue = value.replace(/\D/g, "");
461
- let newSSN = "";
462
-
463
- //! maxHiddenIndex - это индекс, НЕ length. Поэтому нужно добавить 1
464
- const staticLength =
465
- maxHiddenIndex !== -1 ? maxHiddenIndex + 1 : maskPattern?.length;
466
-
467
- if (SSN.length > staticLength) {
468
- newSSN = SSN.slice(0, staticLength) + numValue;
469
- } else {
470
- newSSN = SSN + numValue;
471
- }
472
-
473
- if (newSSN.length > maskPattern?.length) {
474
- return;
475
- }
476
- setValue(newSSN);
477
- };
478
- const onChange = isValueHidden ? onHiddenChange : onVisibleChange;
479
- const onKeyDown = (e) => {
480
- onKeyDownProp?.(e);
481
-
482
- const { keyCode } = e;
483
- setKeyDown(keyCode);
484
- };
485
- const onKeyUp = (e) => {
486
- setKeyDown(null);
487
- // On Filled Callback
488
- if (
489
- getInputValue({ noLastTyppedCharIndexCheck: true }).length ===
490
- maskPattern.length &&
491
- e.target.selectionStart >= maxEditableIndex
492
- ) {
493
- onFilledProp();
494
- }
495
- };
496
- const onClearClick = (e) => {
497
- e.stopPropagation();
498
- e.preventDefault();
499
-
500
- resetInnerValue();
501
-
502
- inputRef?.current?.focus();
503
- setCaret(0);
504
- clearErrorMessage();
505
- };
506
- const onHiddenToggle = (value) => {
507
- // ? Добавлена возможность принудительной установки велью (опционально)
508
- const newValue = typeof value === "boolean" ? value : !isValueHidden;
509
- setIsValueHidden(newValue);
510
- if (isHiddenLogicInit) inputRef?.current?.focus();
511
- };
512
- const onFocus = () => {
513
- setFocused(true);
514
- onFocusProp();
515
- };
516
- const onBlur = () => {
517
- setFocused(false);
518
- onBlurProp();
519
- };
520
- const onClick = (e) => {
521
- const cursor = e.target.selectionStart;
522
- if (cursor >= maxEditableIndex) setCaret(maxEditableIndex);
523
- };
524
- const onSelect = (e) => {
525
- const { selectionStart, selectionEnd } = e.target ?? {};
526
- setSelectedLength(selectionEnd - selectionStart ?? 0);
527
- if (selectionStart >= maxEditableIndex) setCaret(maxEditableIndex);
528
- };
529
- // GENERAL EVENT HANDLERS | END //
530
-
531
- /// --- OBSERVERS ---///
532
- // Render Mask
533
- useEffect(() => {
534
- setIsInitValue(false);
535
- setInnerValue([]);
536
- setMaskRendered(false);
537
-
538
- if (!maskPattern) maskPattern = "";
539
-
540
- maskPattern.split("").map((char, id) => {
541
- addInnerValueChar({
542
- char,
543
- data: { id, isReadOnly: id === maskPattern.length },
544
- });
545
- if (value?.[id]) updateInnerValueChar({ char: value[id] }, id);
546
- });
547
- setMaskRendered(true);
548
- }, [maskPattern]);
549
-
550
- useEffect(() => {
551
- if (
552
- (isMaskRendered && !isInitValue) ||
553
- (isInitValue &&
554
- ![getInputValue(), getClearInnerValueAsString()].includes(value))
555
- ) {
556
- setValue(value);
557
- setIsInitValue(true);
558
- }
559
- }, [isMaskRendered, value, isInitValue]);
560
-
561
- // OnChange Observer
562
- useEffect(() => {
563
- if (isMaskRendered && isInitValue) {
564
- setError(false);
565
- const values = [
566
- getClearInnerValueAsString(),
567
- getInputValue({ noLastTyppedCharIndexCheck: true, noHide: true }),
568
- ];
569
- if (returnMaskedValue) values.reverse();
570
-
571
- if (
572
- prevValueRef?.current?.[0] !== values[0] &&
573
- prevValueRef?.current?.[1] !== values[1] &&
574
- value !== getClearInnerValueAsString()
575
- ) {
576
- prevValueRef.current = values;
577
- onChangeProp(...values);
578
- }
579
- }
580
- }, [innerValue, isMaskRendered, isInitValue]);
581
-
582
- // Blink Error
583
- useEffect(() => {
584
- if (blinkError) {
585
- setTimeout(() => {
586
- setBlinkError(false);
587
- }, blinkDuration);
588
- }
589
- }, [blinkError]);
590
-
591
- useEffect(() => {
592
- setError(customError !== "");
593
- setErrorMessage(customError === "" ? errors.default : customError);
594
- }, [customError, isError]);
595
-
596
- useEffect(() => {
597
- if (typeof isHide === "boolean") {
598
- onHiddenToggle(isHide);
599
- if (!isHiddenLogicInit) setIsHiddenLogicInit(true);
600
- }
601
- }, [isHide]);
602
-
603
- /// --- RENDER ---///
604
-
605
- const renderChar = (obj, i, className = "") => {
606
- const { char, ref, maskChar, isSpecialSymbol } = obj;
607
-
608
- return (
609
- <span
610
- tabIndex={-1}
611
- key={i}
612
- attr-char-id={i}
613
- className={cn("input-mask_value_item", className, {
614
- "input-mask_value_item--digit": isDigitMaskChar(obj.maskChar),
615
- "input-mask_value_item--letter": isLetterMaskChar(obj.maskChar),
616
- "input-mask_value_item--spec": obj.isSpecialSymbol,
617
- "input-mask_value_item--hidden": i < inputValue.length,
618
- })}
619
- ref={ref}
620
- >
621
- {!isFocused &&
622
- hideMaskOnBlur &&
623
- getClearInnerValueAsString().length === 0
624
- ? SPACE_CHAR
625
- : isSpecialSymbol
626
- ? maskChar
627
- : char === ""
628
- ? getPlaceholderCharByIndex(i)
629
- : char}
630
- </span>
631
- );
632
- };
633
- const renderMaskChar = (obj, i) =>
634
- renderChar(obj, i, "input-mask_value_item_mask-char");
635
- const renderValueChar = (obj, i) =>
636
- isValueHidden && (maxHiddenIndex === -1 || i <= maxHiddenIndex)
637
- ? renderChar(
638
- { ...obj, char: hiddenChar },
639
- i,
640
- "input-mask_value_item_value-hidden-char",
641
- )
642
- : renderChar(obj, i, "input-mask_value_item_value-char");
643
- const renderSpecialChar = (obj, i) =>
644
- renderChar(obj, i, "input-mask_value_item_spec-char");
645
- const renderInputValue = () => {
646
- return innerValue.map((obj, i) => {
647
- const { char, isSpecialSymbol } = obj;
648
-
649
- if (isSpecialSymbol) {
650
- return renderSpecialChar(obj, i);
651
- }
652
-
653
- const isMaskItem = (() => char === "")();
654
- return isMaskItem ? renderMaskChar(obj, i) : renderValueChar(obj, i);
655
- });
656
- };
657
- const renderMask = () => {
658
- return <div className="input-mask_value">{renderInputValue()}</div>;
659
- };
660
- const renderInput = () => {
661
- return (
662
- <input
663
- tabIndex={disabled || isLoading ? -1 : 0}
664
- readOnly={disabled || isLoading}
665
- name={name || fieldKey || id || testId || ""}
666
- className={`input-mask_input ${className}`}
667
- ref={inputRef}
668
- value={inputValue}
669
- onChange={onChange}
670
- onKeyDown={onKeyDown}
671
- onKeyUp={onKeyUp}
672
- onBlur={onBlur}
673
- onClick={onClick}
674
- autoComplete={autocomplete}
675
- onFocus={(...params) => {
676
- if (isUseAutoSelect) inputRef.current.select();
677
- if (onFocus) onFocus(...params);
678
- }}
679
- onDragStart={(e) => {
680
- e.stopPropagation();
681
- e.preventDefault();
682
- }}
683
- onDragEnd={(e) => {
684
- e.stopPropagation();
685
- e.preventDefault();
686
- }}
687
- onSelect={onSelect}
688
- {...attributesOfNativeInput}
689
- />
690
- );
691
- };
692
- const renderHideToggler = () => {
693
- return (
694
- <span className="formatted-raw-ssn-eye-holder" onClick={onHiddenToggle}>
695
- {" "}
696
- {isValueHidden ? (
697
- <Eye strokeWidth={1} className="password-icon" />
698
- ) : (
699
- <EyeOff strokeWidth={1} className="password-icon" />
700
- )}
701
- </span>
702
- );
703
- };
704
- const renderClearButton = () => {
705
- return (
706
- <div className="input-mask_clear">
707
- <X onClick={onClearClick} />
708
- </div>
709
- );
710
- };
711
- const renderHint = () => {
712
- return (
713
- <div className={`input-mask_hint input-mask_hint--${hintPosition}`}>
714
- <Hint hint={hintText} className={hintClassName} side={hintPosition} />
715
- </div>
716
- );
717
- };
718
- const renderIcon = (position = "left") => {
719
- return (
720
- <div className={`input-mask_icon input-mask_icon--${position}`}>
721
- {DynamicIconComponent ?? icon}
722
- </div>
723
- );
724
- };
725
- const render = () => {
726
- return (
727
- <div
728
- data-testid={testId}
729
- className={cn(
730
- "input-mask3_wrapper",
731
- className,
732
- { "input-mask_error": isError },
733
- { "input-mask_focus": isFocused },
734
- { "input-mask_blink-error": blinkError },
735
- { disabled: disabled || isLoading },
736
- )}
737
- tabIndex={-1}
738
- >
739
- <div
740
- className={`
741
- input-mask
742
- ${isError ? "input-mask_error" : ""}
743
- ${isFocused ? "input-mask_focus" : ""}
744
- ${blinkError ? "input-mask_blink-error" : ""}
745
- `}
746
- >
747
- {showHint && isHintLeft && renderHint()}
748
- {isIconLeft && showIcon && renderIcon("left")}
749
- {renderMask()}
750
- {renderInput()}
751
- {/* Если isHide булева, значит будем управлять сверху, значит там свой триггер*/}
752
- {withHiddenMode && typeof isHide !== "boolean" && renderHideToggler()}
753
- {isClearable && renderClearButton()}
754
- {isIconRight && showIcon && renderIcon("right")}
755
- {showHint && isHintRight && renderHint()}
756
- </div>
757
- {showErrors && errorMessage && (
758
- <div className="input-mask_error-text">{errorMessage}</div>
759
- )}
760
- {isLoading && <Spinner size="small" />}
761
- </div>
762
- );
763
- };
764
-
765
- return render();
766
- }
1
+ function n(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t<e;t++)r[t]=n[t];return r}function e(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),r.forEach(function(e){var r;r=t[e],e in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r})}return n}function t(n,e){return function(n){if(Array.isArray(n))return n}(n)||function(n,e){var t,r,i=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=i){var a=[],o=!0,l=!1;try{for(i=i.call(n);!(o=(t=i.next()).done)&&(a.push(t.value),!e||a.length!==e);o=!0);}catch(n){l=!0,r=n}finally{try{o||null==i.return||i.return()}finally{if(l)throw r}}return a}}(n,e)||i(n,e)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e){return function(e){if(Array.isArray(e))return n(e)}(e)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(e)||i(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){if(e){if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return n(e,t)}}import{jsx as a,jsxs as o}from"react/jsx-runtime";import{createRef as l,useEffect as u,useMemo as c,useRef as s,useState as d}from"react";import f from"classnames";import{Eye as m,EyeOff as p,X as v}from"react-feather";import{KEYBOARD_KEY_CODES as h}from"../../../Constants/index.constants";import{disableDefaultBehavior as y}from"../../../Functions/utils";import b from"../../Layout/Spinner/Spinner";import g from"../../UI/DynamicIcon/DynamicIcon";import k from"../../UI/Hint/Hint";import{DEFAULT_ERRORS as S,DIGIT_MASK_CHAR as _,LOWERCASE_LETTER_MASK_CHAR as C,SPACE_CHAR as O,UPPERCASE_LETTER_MASK_CHAR as w}from"./config";import{isDigit as I,isDigitMaskChar as D,isLetter as P,isLetterMaskChar as j,isLowerCaseLetter as x,isUpperCaseLetter as E}from"./functions";import"./InputMask3.scss";export default function N(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=n.autocomplete,N=n.maskPattern,T=n.maskPatternPlaceholder,H=n.maskPlaceholder,L=n.maskDigitPlaceholder,A=n.maskLetterPlaceholder,K=n.usePatternPlaceholder,U=n.maxEditableIndex,B=void 0===U?-1:U,F=(n.isFocusedDefault,n.isClearable),M=n.isCaseSensitive,R=n.adaptTextCase,V=n.isUseAutoSelect,W=void 0===V||V,Y=n.isLoading,q=void 0!==Y&&Y,z=n.withHiddenMode,$=n.hiddenChar,G=void 0===$?"*":$,J=n.maxHiddenIndex,Q=void 0===J?-1:J,X=n.isValueHiddenDefault,Z=n.isHide,nn=n.icon,ne=n.showIcon,nt=n.isIconLeft,nr=n.isIconRight,ni=n.iconDynamicKey,na=n.iconDynamicProps,no=n.value,nl=n.blinkErrors,nu=void 0===nl||nl,nc=n.blinkDuration,ns=void 0===nc?100:nc,nd=n.showErrors,nf=n.className,nm=void 0===nf?"":nf,np=n.errors,nv=n.error,nh=void 0===nv?"":nv,ny=n.onChange,nb=void 0===ny?function(){}:ny,ng=n.onFocus,nk=void 0===ng?function(){}:ng,nS=n.onBlur,n_=void 0===nS?function(){}:nS,nC=n.onKeyDown,nO=void 0===nC?function(){}:nC,nw=n.onFilled,nI=void 0===nw?function(){}:nw,nD=n.showHint,nP=void 0!==nD&&nD,nj=n.hintText,nx=void 0===nj?"":nj,nE=n.hintClassName,nN=void 0===nE?"":nE,nT=n.isHintRight,nH=n.isHintLeft,nL=n.hintPosition,nA=void 0===nL?"right":nL,nK=n.hideMaskOnBlur,nU=void 0===nK||nK,nB=n.returnMaskedValue,nF=void 0!==nB&&nB,nM=n.name,nR=n.fieldKey,nV=n.id,nW=n.disabled,nY=n.testId,nq=void 0===nY?"input-mask":nY,nz=n.attributesOfNativeInput,n$=e({},S,void 0===np?S:np);-1===B&&(B=N.length);var nG=t(d(!1),2),nJ=nG[0],nQ=nG[1],nX=t(d(!1),2),nZ=nX[0],n0=nX[1],n1=t(d(!1),2),n2=n1[0],n3=n1[1],n8=t(d(0),2),n6=n8[0],n4=n8[1],n5=t(d("boolean"==typeof Z?Z:void 0!==X&&X),2),n7=n5[0],n9=n5[1],en=t(d(!1),2),ee=en[0],et=en[1],er=s(null),ei=s(null),ea=function(n){return ei.current=n},eo=ni&&!nn?a(g,e({iconKey:ni},void 0===na?{}:na)):null,el=function(n){n<0&&(n=0);var e=er.current;e&&setTimeout(function(){return e.setSelectionRange(n,n)},0)},eu=t(d(!1),2),ec=eu[0],es=eu[1],ed=t(d(!1),2),ef=ed[0],em=ed[1],ep=t(d(n$.default),2),ev=ep[0],eh=ep[1],ey=function(){return eh(n$.default)},eb=t(d([]),2),eg=eb[0],ek=eb[1],eS=s([]),e_=function(n){var e=n.char,t=n.data,i=void 0===t?{}:t;ek(function(n){var t=r(n),a=eI(e,i);return t.push(a),t})},eC=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.char,t=void 0===e?null:e,i=arguments.length>1?arguments[1]:void 0;ek(function(n){if(!n[i])return n;var e=r(n);return e[i].isSpecialSymbol||null===t||(e[i].char=t),e})},eO=function(){ek(function(n){return n.map(function(n){return n.isSpecialSymbol||null===n.char||(n.char=""),n})})},ew=function(n){var e=!(arguments.length>1)||void 0===arguments[1]||arguments[1];n=null==n?"":n.toString(),eO();var t=N.length-B;n.length>B?n=n.slice(0,n.length-t):B!==(null==N?void 0:N.length)-1&&(n=n.slice(0,B));var r=0;ek(function(t){return t.map(function(t,i){if(t.isSpecialSymbol)return t;for(var a=n[r],o=(null==N?void 0:N.length)||0;o&&(eL({char:n[r]})||!eT({char:a,i:i,disableErrors:!0}));)o--,a=n[++r];return eT({char:a,i:i,disableErrors:e})&&(t.char=a),++r,t})})},eI=function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=eL({char:n}),i=eH({char:n});return" "===n&&(n=O),e({char:i?n:"",maskChar:n,isSpecialSymbol:i,isCharSymbol:!r&&""!==n&&i,ref:l()},t)},eD=function(n){return eg[n]?e({},eg[n]):void 0},eP=function(n){var e;return(null==(e=eg[n])?void 0:e.maskChar)||void 0},ej=function(n){var e=eD(n).maskChar;return K?T[n]||H:D(e)&&L?L:j(e)&&A?A:H},ex=function(){var n,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.noLastTyppedCharIndexCheck,r=e.noHide,i=void 0!==r&&r,a=!0,o=eg.reduce(function(n,e,t){var r=e.char,i=e.isSpecialSymbol;return""===r||i?n:t},0),l=eg.reduce(function(n,e,r){var l=e.char,u=e.isSpecialSymbol;return""!==l&&a&&(t||r<=o)?n7&&!u&&!i&&(-1===Q||r<=Q)?n+=G:n+=l:a=!1,n},"");return(null==(n=eE(l))?void 0:n.length)===0?"":l},eE=function(n){var e,t,r=null==eg?void 0:eg.map(function(n){return{isSpecialSymbol:n.isSpecialSymbol,isCharSymbol:n.isCharSymbol}});return null==(t=null!=n?n:ex({noLastTyppedCharIndexCheck:!0,noHide:!0}))||null==(e=t.split(""))?void 0:e.reduce(function(n,e,t){return(!r[t].isSpecialSymbol||r[t].isCharSymbol)&&(n+=e),n},"")},eN=c(ex,[eg,n7]),eT=function(n){var e=n.char,t=n.i,r=n.disableErrors,i=void 0!==r&&r;switch(eP(t)){case _:if(!I(e))return i||eh(n$.onlyDigit),!1;break;case w:if(R&&(e=e.toUpperCase()),!P(e)&&!M)return i||eh(n$.onlyLetter),!1;if(M&&!E(e))return i||eh(n$.onlyUpperCase),!1;break;case C:if(R&&(e=e.toLowerCase()),!P(e)&&!M)return i||eh(n$.onlyLetter),!1;if(M&&!x(e))return i||eh(n$.onlyLowerCase),!1;break;default:return!1}return!0},eH=function(n){var e=n.char;return!D(e)&&!j(e)},eL=function(n){var e=n.char;return!I(e)&&!P(e)},eA=function(n){var e;return null==(e=eD(n))?void 0:e.isSpecialSymbol},eK=n7?function(n){var e=ex({noHide:!0}),t=n.target.value;if(t.replace(/-/g,"").length<e.replace(/-/g,"").length){var r=e.length-1;ew(e.slice(0,r));return}var i=t.replace(/\D/g,""),a="",o=-1!==Q?Q+1:null==N?void 0:N.length;(a=e.length>o?e.slice(0,o)+i:e+i).length>(null==N?void 0:N.length)||ew(a)}:function(n){ey();var e=n.target,t=e.value,r=e.selectionStart,i=n.nativeEvent.data;if(r>B){y(),el(B),em(!0);return}ew(t);var a=t.length-r;if(!t.lastIndexEqualsTo(r-1)){if(t.longerThan(eN))if(eT({char:i,i:r-1})){var o=t.length-a;el(eA(o)?o+1:o)}else y(n),el(r-1);else if(eN.longerThan(t))switch(ei.current){case h.Backspace:eA(r)&&y(n),el(r);break;case h.Delete:eA(r)?(y(n),el(r+1)):el(r);break;default:n6>0&&el(r)}}nu&&setTimeout(function(){(t.longerThan(eN)&&!eA(r-1)||eN.longerThan(t)&&!eA(r))&&(i&&!eT({char:i,i:r-1})||eN===ex()&&ex()[r-1]!==i)&&(y(n),em(!0))},0)},eU=function(n){var e;n9("boolean"==typeof n?n:!n7),ee&&(null==er||null==(e=er.current)||e.focus())},eB=function(){n0(!0),nk()};u(function(){n3(!1),ek([]),nQ(!1),N||(N=""),N.split("").map(function(n,e){e_({char:n,data:{id:e,isReadOnly:e===N.length}}),(null==no?void 0:no[e])&&eC({char:no[e]},e)}),nQ(!0)},[N]),u(function(){(nJ&&!n2||n2&&![ex(),eE()].includes(no))&&(ew(no),n3(!0))},[nJ,no,n2]),u(function(){if(nJ&&n2){es(!1);var n,e,t=[eE(),ex({noLastTyppedCharIndexCheck:!0,noHide:!0})];nF&&t.reverse(),(null==eS||null==(n=eS.current)?void 0:n[0])!==t[0]&&(null==eS||null==(e=eS.current)?void 0:e[1])!==t[1]&&no!==eE()&&(eS.current=t,nb.apply(void 0,r(t)))}},[eg,nJ,n2]),u(function(){ef&&setTimeout(function(){em(!1)},ns)},[ef]),u(function(){es(""!==nh),eh(""===nh?n$.default:nh)},[nh,ec]),u(function(){"boolean"==typeof Z&&(eU(Z),ee||et(!0))},[Z]);var eF=function(n,e){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=n.char,i=n.ref,o=n.maskChar,l=n.isSpecialSymbol;return a("span",{tabIndex:-1,"attr-char-id":e,className:f("input-mask_value_item",t,{"input-mask_value_item--digit":D(n.maskChar),"input-mask_value_item--letter":j(n.maskChar),"input-mask_value_item--spec":n.isSpecialSymbol,"input-mask_value_item--hidden":e<eN.length}),ref:i,children:!nZ&&nU&&0===eE().length?O:l?o:""===r?ej(e):r},e)},eM=function(n,t){var r,i;return n7&&(-1===Q||t<=Q)?eF((r=e({},n),i=i={char:G},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(i)):(function(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);t.push.apply(t,r)}return t})(Object(i)).forEach(function(n){Object.defineProperty(r,n,Object.getOwnPropertyDescriptor(i,n))}),r),t,"input-mask_value_item_value-hidden-char"):eF(n,t,"input-mask_value_item_value-char")},eR=function(){return a("div",{className:"input-mask_hint input-mask_hint--".concat(nA),children:a(k,{hint:nx,className:nN,side:nA})})},eV=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"left";return a("div",{className:"input-mask_icon input-mask_icon--".concat(n),children:null!=eo?eo:nn})};return o("div",{"data-testid":nq,className:f("input-mask3_wrapper",nm,{"input-mask_error":ec},{"input-mask_focus":nZ},{"input-mask_blink-error":ef},{disabled:nW||q}),tabIndex:-1,children:[o("div",{className:"\n input-mask\n ".concat(ec?"input-mask_error":"","\n ").concat(nZ?"input-mask_focus":"","\n ").concat(ef?"input-mask_blink-error":"","\n "),children:[nP&&void 0!==nH&&nH&&eR(),nt&&ne&&eV("left"),a("div",{className:"input-mask_value",children:eg.map(function(n,e){var t=n.char;return n.isSpecialSymbol?eF(n,e,"input-mask_value_item_spec-char"):""===t?eF(n,e,"input-mask_value_item_mask-char"):eM(n,e)})}),a("input",e({tabIndex:nW||q?-1:0,readOnly:nW||q,name:nM||nR||nV||nq||"",className:"input-mask_input ".concat(nm),ref:er,value:eN,onChange:eK,onKeyDown:function(n){null==nO||nO(n),ea(n.keyCode)},onKeyUp:function(n){ea(null),ex({noLastTyppedCharIndexCheck:!0}).length===N.length&&n.target.selectionStart>=B&&nI()},onBlur:function(){n0(!1),n_()},onClick:function(n){n.target.selectionStart>=B&&el(B)},autoComplete:void 0===i?"off":i,onFocus:function(){for(var n=arguments.length,e=Array(n),t=0;t<n;t++)e[t]=arguments[t];W&&er.current.select(),eB&&eB.apply(void 0,r(e))},onDragStart:function(n){n.stopPropagation(),n.preventDefault()},onDragEnd:function(n){n.stopPropagation(),n.preventDefault()},onSelect:function(n){var e,t=null!=(e=n.target)?e:{},r=t.selectionStart;n4(t.selectionEnd-r),r>=B&&el(B)}},void 0===nz?{}:nz)),void 0!==z&&z&&"boolean"!=typeof Z&&o("span",{className:"formatted-raw-ssn-eye-holder",onClick:eU,children:[" ",n7?a(m,{strokeWidth:1,className:"password-icon"}):a(p,{strokeWidth:1,className:"password-icon"})]}),F&&a("div",{className:"input-mask_clear",children:a(v,{onClick:function(n){var e;n.stopPropagation(),n.preventDefault(),eO(),null==er||null==(e=er.current)||e.focus(),el(0),ey()}})}),nr&&ne&&eV("right"),nP&&(void 0===nT||nT)&&eR()]}),void 0!==nd&&nd&&ev&&a("div",{className:"input-mask_error-text",children:ev}),q&&a(b,{size:"small"})]})}