intelicoreact 1.6.20 → 1.6.21

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 (272) hide show
  1. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.js +1 -102
  2. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +1 -89
  3. package/dist/Atomic/FormElements/Calendar/Calendar.js +1 -232
  4. package/dist/Atomic/FormElements/Calendar/Calendar.props.js +1 -3
  5. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +1 -101
  6. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +1 -70
  7. package/dist/Atomic/FormElements/Datepicker/Datepicker.js +1 -350
  8. package/dist/Atomic/FormElements/Datepicker/Datepicker.props.js +1 -3
  9. package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.js +1 -177
  10. package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.props.js +1 -3
  11. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +1 -561
  12. package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +1 -20
  13. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +1 -405
  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 -166
  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.js +1 -693
  29. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +1 -254
  30. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +1 -32
  31. package/dist/Atomic/FormElements/InputDateRange/dependencies.js +1 -200
  32. package/dist/Atomic/FormElements/InputLink/InputLink.js +1 -99
  33. package/dist/Atomic/FormElements/InputMask/InputCarretPosition.js +1 -37
  34. package/dist/Atomic/FormElements/InputMask/InputMask.js +1 -1214
  35. package/dist/Atomic/FormElements/InputMask/config.js +1 -15
  36. package/dist/Atomic/FormElements/InputMask/functions.js +1 -58
  37. package/dist/Atomic/FormElements/InputMask2/InputMask2.js +1 -674
  38. package/dist/Atomic/FormElements/InputMask2/config.js +1 -15
  39. package/dist/Atomic/FormElements/InputMask2/functions.js +1 -58
  40. package/dist/Atomic/FormElements/InputMask3/InputMask3.js +1 -766
  41. package/dist/Atomic/FormElements/InputMask3/config.js +1 -15
  42. package/dist/Atomic/FormElements/InputMask3/functions.js +1 -58
  43. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.js +1 -114
  44. package/dist/Atomic/FormElements/InputsRow/InputsRow.js +1 -140
  45. package/dist/Atomic/FormElements/Label/Label.js +1 -82
  46. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +1 -506
  47. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +1 -45
  48. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +1 -331
  49. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +1 -66
  50. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +1 -80
  51. package/dist/Atomic/FormElements/RadioInput/RadioInput.js +1 -64
  52. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +1 -54
  53. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +1 -183
  54. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +1 -209
  55. package/dist/Atomic/FormElements/RangeList/RangeList.js +1 -175
  56. package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +1 -43
  57. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +1 -443
  58. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +1 -858
  59. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +1 -39
  60. package/dist/Atomic/FormElements/Switcher/Switcher.js +1 -59
  61. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +1 -50
  62. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.js +1 -47
  63. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +1 -96
  64. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.js +1 -40
  65. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +1 -64
  66. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +1 -170
  67. package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.js +1 -202
  68. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +1 -67
  69. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +1 -115
  70. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +1 -826
  71. package/dist/Atomic/FormElements/Text/Text.js +1 -125
  72. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.js +1 -45
  73. package/dist/Atomic/FormElements/Textarea/Textarea.js +1 -80
  74. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +1 -176
  75. package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +1 -62
  76. package/dist/Atomic/FormElements/TimeRange/TimeRange.js +1 -127
  77. package/dist/Atomic/FormElements/UserContacts/UserContacts.js +1 -220
  78. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +1 -83
  79. package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +1 -82
  80. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +1 -101
  81. package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.js +1 -29
  82. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +1 -113
  83. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.js +1 -30
  84. package/dist/Atomic/Layout/Header/Header.js +1 -85
  85. package/dist/Atomic/Layout/Spinner/Spinner.js +1 -39
  86. package/dist/Atomic/UI/Accordion/Accordion.js +1 -118
  87. package/dist/Atomic/UI/Accordion/AccordionItem.js +1 -181
  88. package/dist/Atomic/UI/AccordionTable/AccordionTable.js +1 -238
  89. package/dist/Atomic/UI/AccordionText/AccordionText.js +1 -69
  90. package/dist/Atomic/UI/AdvancedTag/AdvTag.js +1 -207
  91. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +1 -56
  92. package/dist/Atomic/UI/Alert/Alert.js +1 -72
  93. package/dist/Atomic/UI/Arrow/Arrow.js +1 -132
  94. package/dist/Atomic/UI/Box/Box.js +1 -52
  95. package/dist/Atomic/UI/Button/Button.js +1 -89
  96. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.js +1 -72
  97. package/dist/Atomic/UI/Chart/Chart.js +1 -172
  98. package/dist/Atomic/UI/Chart/partial/Chart.constants.js +1 -95
  99. package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +1 -80
  100. package/dist/Atomic/UI/Chart/partial/datasetSetters.js +1 -188
  101. package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +1 -335
  102. package/dist/Atomic/UI/Chart/partial/optionsSetters.js +1 -43
  103. package/dist/Atomic/UI/Chart/partial/utils.js +1 -60
  104. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +1 -109
  105. package/dist/Atomic/UI/DateTime/DateTime.js +1 -57
  106. package/dist/Atomic/UI/DebugContainer/DebugContainer.js +1 -44
  107. package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +1 -15
  108. package/dist/Atomic/UI/DoubleString/DoubleString.js +1 -102
  109. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +1 -226
  110. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +1 -221
  111. package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +1 -106
  112. package/dist/Atomic/UI/Hint/Hint.js +1 -193
  113. package/dist/Atomic/UI/Hint/partials/_utils.js +1 -51
  114. package/dist/Atomic/UI/Modal/Modal.js +1 -188
  115. package/dist/Atomic/UI/Modal/ModalHOC.js +1 -72
  116. package/dist/Atomic/UI/Modal/partials/ModalFooter.js +1 -46
  117. package/dist/Atomic/UI/Modal/partials/ModalTitle.js +1 -83
  118. package/dist/Atomic/UI/Modal/partials/useMobileModal.js +1 -200
  119. package/dist/Atomic/UI/MonoAccordion/MonoAccordion._test.js +1 -75
  120. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +1 -80
  121. package/dist/Atomic/UI/NavLine/NavLine.js +1 -293
  122. package/dist/Atomic/UI/PageTitle/PageTitle.js +1 -75
  123. package/dist/Atomic/UI/PieChart/PieChart.js +1 -42
  124. package/dist/Atomic/UI/Price/Price.js +1 -22
  125. package/dist/Atomic/UI/PriceRange/PriceRange.js +1 -36
  126. package/dist/Atomic/UI/ProgressLine/ProgressLine.js +1 -71
  127. package/dist/Atomic/UI/Status/Status.js +1 -59
  128. package/dist/Atomic/UI/Table/Partials/TdCell.js +1 -87
  129. package/dist/Atomic/UI/Table/Partials/TdHeader.js +1 -38
  130. package/dist/Atomic/UI/Table/Partials/TdRow.js +1 -99
  131. package/dist/Atomic/UI/Table/Partials/TdTitle.js +1 -52
  132. package/dist/Atomic/UI/Table/Table.js +1 -63
  133. package/dist/Atomic/UI/Table/TdTypes/TdActions.js +1 -80
  134. package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +1 -28
  135. package/dist/Atomic/UI/Table/TdTypes/TdRange.js +1 -13
  136. package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +1 -53
  137. package/dist/Atomic/UI/Tag/Tag.js +1 -160
  138. package/dist/Atomic/UI/TagList/TagList.js +1 -251
  139. package/dist/Atomic/UI/UserBox/UserBox.js +1 -73
  140. package/dist/Atomic/UI/WizardStepper/constructor.js +1 -84
  141. package/dist/Atomic/UI/WizardStepper/index.js +1 -3
  142. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +1 -37
  143. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/index.js +1 -3
  144. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +1 -61
  145. package/dist/Atomic/UI/WizardStepper/ui/StepRow/index.js +1 -3
  146. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +1 -39
  147. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/index.js +1 -3
  148. package/dist/Atomic/UI/WizardStepper/ui/icons.js +1 -49
  149. package/dist/Atomic/UI/WizardStepper/ui/index.js +1 -3
  150. package/dist/Classes/AbortableFetch.js +1 -454
  151. package/dist/Classes/AnimatedHandler.js +1 -47
  152. package/dist/Classes/RESTAPI/index.js +1 -228
  153. package/dist/Classes/RESTAPI/partials/AbortableFetch.js +1 -457
  154. package/dist/Classes/RESTAPI/partials/ApiBase.js +1 -48
  155. package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +1 -112
  156. package/dist/Classes/RESTAPI/partials/ApiUtils.js +1 -189
  157. package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +1 -252
  158. package/dist/Classes/RESTAPI/partials/Utils.js +1 -92
  159. package/dist/Classes/RESTAPI/partials/_outerDependencies.js +1 -3
  160. package/dist/Classes/RESTAPI/partials/_utils.js +1 -197
  161. package/dist/Constants/index.constants.js +1 -78
  162. package/dist/Functions/Portal.js +1 -22
  163. package/dist/Functions/customEventListener.js +1 -96
  164. package/dist/Functions/dateTime.js +1 -149
  165. package/dist/Functions/fieldValueFormatters.js +1 -405
  166. package/dist/Functions/guards/assertions.js +1 -66
  167. package/dist/Functions/guards/safeValue.js +1 -30
  168. package/dist/Functions/guards/typeGuards.js +1 -116
  169. package/dist/Functions/hooks/useFormFieldsChangesManager.js +1 -95
  170. package/dist/Functions/locale/createTranslator.js +1 -32
  171. package/dist/Functions/operations.js +1 -130
  172. package/dist/Functions/presets/inputMaskPresets.js +1 -170
  173. package/dist/Functions/presets/inputPresets.js +1 -60
  174. package/dist/Functions/presets/mobileKeyboardTypesPresets.js +1 -45
  175. package/dist/Functions/schemas.js +1 -31
  176. package/dist/Functions/useBodyScrollLock.js +1 -17
  177. package/dist/Functions/useClickOutside.js +1 -15
  178. package/dist/Functions/useDebounce.js +1 -17
  179. package/dist/Functions/useFieldFocus.js +1 -84
  180. package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +1 -39
  181. package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +1 -159
  182. package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +1 -78
  183. package/dist/Functions/useFormTools/functions/General.js +1 -134
  184. package/dist/Functions/useFormTools/functions/RenderFields.js +1 -111
  185. package/dist/Functions/useFormTools/functions/usePrevious.js +1 -12
  186. package/dist/Functions/useFormTools/index.js +1 -778
  187. package/dist/Functions/useInputHighlightError.js +1 -67
  188. package/dist/Functions/useIsMobile/useIsMobile.js +1 -53
  189. package/dist/Functions/useKeyPress/useHandleKeyPress.js +1 -21
  190. package/dist/Functions/useKeyPress/useKeyPress.js +1 -75
  191. package/dist/Functions/useLocalStorage.js +1 -34
  192. package/dist/Functions/useLocationParams.js +1 -27
  193. package/dist/Functions/useMediaQuery.js +1 -17
  194. package/dist/Functions/useMetaInfo.js +1 -43
  195. package/dist/Functions/useMouseUpOutside.js +1 -16
  196. package/dist/Functions/useOnlineStatus.js +1 -29
  197. package/dist/Functions/usePasswordChecker.js +1 -110
  198. package/dist/Functions/usePrevious.js +1 -12
  199. package/dist/Functions/useResize.js +1 -31
  200. package/dist/Functions/useScrollTo.js +1 -17
  201. package/dist/Functions/useToggle.js +1 -17
  202. package/dist/Functions/utils.js +1 -522
  203. package/dist/Langs.js +1 -168
  204. package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +1 -21
  205. package/dist/Molecular/CustomIcons/components/AlertCircle.js +1 -23
  206. package/dist/Molecular/CustomIcons/components/AppStore.js +1 -29
  207. package/dist/Molecular/CustomIcons/components/Arrow.js +1 -32
  208. package/dist/Molecular/CustomIcons/components/ArrowDown.js +1 -17
  209. package/dist/Molecular/CustomIcons/components/ArrowLeft.js +1 -22
  210. package/dist/Molecular/CustomIcons/components/ArrowRight.js +1 -22
  211. package/dist/Molecular/CustomIcons/components/ArrowUp.js +1 -17
  212. package/dist/Molecular/CustomIcons/components/Bell.js +1 -15
  213. package/dist/Molecular/CustomIcons/components/Button.js +1 -12
  214. package/dist/Molecular/CustomIcons/components/Campaigns.js +1 -16
  215. package/dist/Molecular/CustomIcons/components/Check.js +1 -14
  216. package/dist/Molecular/CustomIcons/components/Check2.js +1 -12
  217. package/dist/Molecular/CustomIcons/components/ChevronDown.js +1 -12
  218. package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +1 -11
  219. package/dist/Molecular/CustomIcons/components/ChevronLeft.js +1 -11
  220. package/dist/Molecular/CustomIcons/components/ChevronRight.js +1 -11
  221. package/dist/Molecular/CustomIcons/components/ChevronUp.js +1 -11
  222. package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +1 -27
  223. package/dist/Molecular/CustomIcons/components/Close.js +1 -14
  224. package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +1 -17
  225. package/dist/Molecular/CustomIcons/components/Delete.js +1 -16
  226. package/dist/Molecular/CustomIcons/components/Edit.js +1 -15
  227. package/dist/Molecular/CustomIcons/components/Email.js +1 -31
  228. package/dist/Molecular/CustomIcons/components/FinturfLogo.js +1 -18
  229. package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +1 -35
  230. package/dist/Molecular/CustomIcons/components/Flows.js +1 -15
  231. package/dist/Molecular/CustomIcons/components/Gift.js +1 -25
  232. package/dist/Molecular/CustomIcons/components/GoogleAuth.js +1 -29
  233. package/dist/Molecular/CustomIcons/components/GooglePlay.js +1 -29
  234. package/dist/Molecular/CustomIcons/components/HelpCircle.js +1 -19
  235. package/dist/Molecular/CustomIcons/components/HelpCircle2.js +1 -20
  236. package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +1 -19
  237. package/dist/Molecular/CustomIcons/components/Home.js +1 -16
  238. package/dist/Molecular/CustomIcons/components/Home2.js +1 -22
  239. package/dist/Molecular/CustomIcons/components/Key.js +1 -23
  240. package/dist/Molecular/CustomIcons/components/Landers.js +1 -20
  241. package/dist/Molecular/CustomIcons/components/Lock.js +1 -15
  242. package/dist/Molecular/CustomIcons/components/Mail.js +1 -26
  243. package/dist/Molecular/CustomIcons/components/Mastercard.js +1 -73
  244. package/dist/Molecular/CustomIcons/components/Minus.js +1 -25
  245. package/dist/Molecular/CustomIcons/components/Offers.js +1 -16
  246. package/dist/Molecular/CustomIcons/components/Pause.js +1 -28
  247. package/dist/Molecular/CustomIcons/components/PayPal.js +1 -41
  248. package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +1 -28
  249. package/dist/Molecular/CustomIcons/components/Phone.js +1 -30
  250. package/dist/Molecular/CustomIcons/components/Play.js +1 -25
  251. package/dist/Molecular/CustomIcons/components/Plus.js +1 -25
  252. package/dist/Molecular/CustomIcons/components/Profile.js +1 -16
  253. package/dist/Molecular/CustomIcons/components/QRCode.js +1 -29
  254. package/dist/Molecular/CustomIcons/components/Rectangle.js +1 -12
  255. package/dist/Molecular/CustomIcons/components/Revert.js +1 -13
  256. package/dist/Molecular/CustomIcons/components/Star.js +1 -14
  257. package/dist/Molecular/CustomIcons/components/Star2.js +1 -16
  258. package/dist/Molecular/CustomIcons/components/TrafficSources.js +1 -14
  259. package/dist/Molecular/CustomIcons/components/Trash.js +1 -15
  260. package/dist/Molecular/CustomIcons/components/TrashRed.js +1 -15
  261. package/dist/Molecular/CustomIcons/components/Triggers.js +1 -15
  262. package/dist/Molecular/CustomIcons/components/User.js +1 -25
  263. package/dist/Molecular/CustomIcons/components/Visa.js +1 -31
  264. package/dist/Molecular/CustomIcons/components/X.js +1 -12
  265. package/dist/Molecular/CustomIcons/index.js +1 -61
  266. package/dist/Molecular/FormElement/FormElement.js +1 -54
  267. package/dist/Molecular/FormWithDependOn/FormWithDependOn.js +1 -184
  268. package/dist/Molecular/FormWithDependOn/partials/_utils.js +1 -53
  269. package/dist/Molecular/InputAddress/InputAddress.js +1 -620
  270. package/dist/Molecular/InputPassword/InputPassword.js +1 -48
  271. package/dist/index.js +1 -1
  272. 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"})]})}