intelicoreact 1.6.25 → 1.6.27

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 (275) 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.d.ts +5 -0
  12. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +1 -735
  13. package/dist/Atomic/FormElements/Dropdown/Dropdown.js.map +1 -0
  14. package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +1 -20
  15. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +1 -529
  16. package/dist/Atomic/FormElements/FileLoader/FileLoader.js +1 -94
  17. package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.js +1 -105
  18. package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.js +1 -67
  19. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js +1 -247
  20. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +1 -160
  21. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +1 -193
  22. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +1 -135
  23. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.js +1 -116
  24. package/dist/Atomic/FormElements/Input/Input.js +1 -467
  25. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +1 -161
  26. package/dist/Atomic/FormElements/InputColor/InputColor.js +1 -64
  27. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.js +1 -200
  28. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +1 -354
  29. package/dist/Atomic/FormElements/InputDateRange/components/DateInput.js +1 -71
  30. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +1 -693
  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.js +1 -102
  111. package/dist/Atomic/UI/DoubleString/DoubleString.scss +8 -1
  112. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +1 -70
  113. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +1 -221
  114. package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +1 -106
  115. package/dist/Atomic/UI/Hint/Hint.js +1 -256
  116. package/dist/Atomic/UI/Hint/partials/_utils.js +1 -64
  117. package/dist/Atomic/UI/Modal/Modal.js +1 -179
  118. package/dist/Atomic/UI/Modal/ModalHOC.js +1 -97
  119. package/dist/Atomic/UI/Modal/partials/ModalFooter.js +1 -71
  120. package/dist/Atomic/UI/Modal/partials/ModalTitle.js +1 -110
  121. package/dist/Atomic/UI/Modal/partials/useMobileModal.js +1 -192
  122. package/dist/Atomic/UI/MonoAccordion/MonoAccordion._test.js +1 -75
  123. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +1 -80
  124. package/dist/Atomic/UI/NavLine/NavLine.js +1 -317
  125. package/dist/Atomic/UI/PageTitle/PageTitle.js +1 -77
  126. package/dist/Atomic/UI/PieChart/PieChart.js +1 -42
  127. package/dist/Atomic/UI/Price/Price.js +1 -31
  128. package/dist/Atomic/UI/PriceRange/PriceRange.js +1 -44
  129. package/dist/Atomic/UI/ProgressLine/ProgressLine.js +1 -98
  130. package/dist/Atomic/UI/Status/Status.js +1 -67
  131. package/dist/Atomic/UI/Table/Partials/TdCell.js +1 -87
  132. package/dist/Atomic/UI/Table/Partials/TdHeader.js +1 -38
  133. package/dist/Atomic/UI/Table/Partials/TdRow.js +1 -99
  134. package/dist/Atomic/UI/Table/Partials/TdTitle.js +1 -52
  135. package/dist/Atomic/UI/Table/Table.js +1 -63
  136. package/dist/Atomic/UI/Table/TdTypes/TdActions.js +1 -80
  137. package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +1 -28
  138. package/dist/Atomic/UI/Table/TdTypes/TdRange.js +1 -13
  139. package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +1 -53
  140. package/dist/Atomic/UI/Tag/Tag.js +1 -167
  141. package/dist/Atomic/UI/TagList/TagList.js +1 -251
  142. package/dist/Atomic/UI/UserBox/UserBox.js +1 -86
  143. package/dist/Atomic/UI/WizardStepper/constructor.js +1 -84
  144. package/dist/Atomic/UI/WizardStepper/index.js +1 -3
  145. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +1 -37
  146. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/index.js +1 -3
  147. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +1 -61
  148. package/dist/Atomic/UI/WizardStepper/ui/StepRow/index.js +1 -3
  149. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +1 -39
  150. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/index.js +1 -3
  151. package/dist/Atomic/UI/WizardStepper/ui/icons.js +1 -49
  152. package/dist/Atomic/UI/WizardStepper/ui/index.js +1 -3
  153. package/dist/Classes/AbortableFetch.js +1 -454
  154. package/dist/Classes/AnimatedHandler.js +1 -47
  155. package/dist/Classes/RESTAPI/index.js +1 -228
  156. package/dist/Classes/RESTAPI/partials/AbortableFetch.js +1 -457
  157. package/dist/Classes/RESTAPI/partials/ApiBase.js +1 -48
  158. package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +1 -112
  159. package/dist/Classes/RESTAPI/partials/ApiUtils.js +1 -189
  160. package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +1 -252
  161. package/dist/Classes/RESTAPI/partials/Utils.js +1 -92
  162. package/dist/Classes/RESTAPI/partials/_outerDependencies.js +1 -3
  163. package/dist/Classes/RESTAPI/partials/_utils.js +1 -197
  164. package/dist/Constants/index.constants.js +1 -78
  165. package/dist/Functions/Portal.js +1 -22
  166. package/dist/Functions/customEventListener.js +1 -96
  167. package/dist/Functions/dateTime.js +1 -149
  168. package/dist/Functions/fieldValueFormatters.js +1 -405
  169. package/dist/Functions/guards/assertions.js +1 -294
  170. package/dist/Functions/guards/safeValue.js +1 -75
  171. package/dist/Functions/guards/typeGuards.js +1 -373
  172. package/dist/Functions/hooks/useFormFieldsChangesManager.js +1 -95
  173. package/dist/Functions/locale/createTranslator.js +1 -32
  174. package/dist/Functions/operations.js +1 -130
  175. package/dist/Functions/presets/inputMaskPresets.js +1 -170
  176. package/dist/Functions/presets/inputPresets.js +1 -60
  177. package/dist/Functions/presets/mobileKeyboardTypesPresets.js +1 -45
  178. package/dist/Functions/schemas.js +1 -31
  179. package/dist/Functions/useBodyScrollLock.js +1 -17
  180. package/dist/Functions/useClickOutside.js +1 -15
  181. package/dist/Functions/useDebounce.js +1 -17
  182. package/dist/Functions/useFieldFocus.js +1 -84
  183. package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +1 -39
  184. package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +1 -159
  185. package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +1 -78
  186. package/dist/Functions/useFormTools/functions/General.js +1 -134
  187. package/dist/Functions/useFormTools/functions/RenderFields.js +1 -111
  188. package/dist/Functions/useFormTools/functions/usePrevious.js +1 -12
  189. package/dist/Functions/useFormTools/index.js +1 -778
  190. package/dist/Functions/useInputHighlightError.js +1 -67
  191. package/dist/Functions/useIsMobile/useIsMobile.js +1 -33
  192. package/dist/Functions/useKeyPress/useHandleKeyPress.js +1 -52
  193. package/dist/Functions/useKeyPress/useKeyPress.js +1 -52
  194. package/dist/Functions/useLocalStorage.js +1 -34
  195. package/dist/Functions/useLocationParams.js +1 -27
  196. package/dist/Functions/useMediaQuery.js +1 -17
  197. package/dist/Functions/useMetaInfo.js +1 -43
  198. package/dist/Functions/useMouseUpOutside.js +1 -16
  199. package/dist/Functions/useOnlineStatus.js +1 -29
  200. package/dist/Functions/usePasswordChecker.js +1 -110
  201. package/dist/Functions/usePrevious.js +1 -12
  202. package/dist/Functions/useResize.js +1 -31
  203. package/dist/Functions/useScrollTo.js +1 -17
  204. package/dist/Functions/useToggle.js +1 -17
  205. package/dist/Functions/utils.js +1 -522
  206. package/dist/Langs.js +1 -168
  207. package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +1 -21
  208. package/dist/Molecular/CustomIcons/components/AlertCircle.js +1 -23
  209. package/dist/Molecular/CustomIcons/components/AppStore.js +1 -29
  210. package/dist/Molecular/CustomIcons/components/Arrow.js +1 -32
  211. package/dist/Molecular/CustomIcons/components/ArrowDown.js +1 -17
  212. package/dist/Molecular/CustomIcons/components/ArrowLeft.js +1 -22
  213. package/dist/Molecular/CustomIcons/components/ArrowRight.js +1 -22
  214. package/dist/Molecular/CustomIcons/components/ArrowUp.js +1 -17
  215. package/dist/Molecular/CustomIcons/components/Bell.js +1 -15
  216. package/dist/Molecular/CustomIcons/components/Button.js +1 -12
  217. package/dist/Molecular/CustomIcons/components/Campaigns.js +1 -16
  218. package/dist/Molecular/CustomIcons/components/Check.js +1 -14
  219. package/dist/Molecular/CustomIcons/components/Check2.js +1 -12
  220. package/dist/Molecular/CustomIcons/components/ChevronDown.js +1 -12
  221. package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +1 -11
  222. package/dist/Molecular/CustomIcons/components/ChevronLeft.js +1 -11
  223. package/dist/Molecular/CustomIcons/components/ChevronRight.js +1 -11
  224. package/dist/Molecular/CustomIcons/components/ChevronUp.js +1 -11
  225. package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +1 -27
  226. package/dist/Molecular/CustomIcons/components/Close.js +1 -14
  227. package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +1 -17
  228. package/dist/Molecular/CustomIcons/components/Delete.js +1 -16
  229. package/dist/Molecular/CustomIcons/components/Edit.js +1 -15
  230. package/dist/Molecular/CustomIcons/components/Email.js +1 -31
  231. package/dist/Molecular/CustomIcons/components/FinturfLogo.js +1 -18
  232. package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +1 -35
  233. package/dist/Molecular/CustomIcons/components/Flows.js +1 -15
  234. package/dist/Molecular/CustomIcons/components/Gift.js +1 -25
  235. package/dist/Molecular/CustomIcons/components/GoogleAuth.js +1 -29
  236. package/dist/Molecular/CustomIcons/components/GooglePlay.js +1 -29
  237. package/dist/Molecular/CustomIcons/components/HelpCircle.js +1 -19
  238. package/dist/Molecular/CustomIcons/components/HelpCircle2.js +1 -20
  239. package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +1 -19
  240. package/dist/Molecular/CustomIcons/components/Home.js +1 -16
  241. package/dist/Molecular/CustomIcons/components/Home2.js +1 -22
  242. package/dist/Molecular/CustomIcons/components/Key.js +1 -23
  243. package/dist/Molecular/CustomIcons/components/Landers.js +1 -20
  244. package/dist/Molecular/CustomIcons/components/Lock.js +1 -15
  245. package/dist/Molecular/CustomIcons/components/Mail.js +1 -26
  246. package/dist/Molecular/CustomIcons/components/Mastercard.js +1 -73
  247. package/dist/Molecular/CustomIcons/components/Minus.js +1 -25
  248. package/dist/Molecular/CustomIcons/components/Offers.js +1 -16
  249. package/dist/Molecular/CustomIcons/components/Pause.js +1 -28
  250. package/dist/Molecular/CustomIcons/components/PayPal.js +1 -41
  251. package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +1 -28
  252. package/dist/Molecular/CustomIcons/components/Phone.js +1 -30
  253. package/dist/Molecular/CustomIcons/components/Play.js +1 -25
  254. package/dist/Molecular/CustomIcons/components/Plus.js +1 -25
  255. package/dist/Molecular/CustomIcons/components/Profile.js +1 -16
  256. package/dist/Molecular/CustomIcons/components/QRCode.js +1 -29
  257. package/dist/Molecular/CustomIcons/components/Rectangle.js +1 -12
  258. package/dist/Molecular/CustomIcons/components/Revert.js +1 -13
  259. package/dist/Molecular/CustomIcons/components/Star.js +1 -14
  260. package/dist/Molecular/CustomIcons/components/Star2.js +1 -16
  261. package/dist/Molecular/CustomIcons/components/TrafficSources.js +1 -14
  262. package/dist/Molecular/CustomIcons/components/Trash.js +1 -15
  263. package/dist/Molecular/CustomIcons/components/TrashRed.js +1 -15
  264. package/dist/Molecular/CustomIcons/components/Triggers.js +1 -15
  265. package/dist/Molecular/CustomIcons/components/User.js +1 -25
  266. package/dist/Molecular/CustomIcons/components/Visa.js +1 -31
  267. package/dist/Molecular/CustomIcons/components/X.js +1 -12
  268. package/dist/Molecular/CustomIcons/index.js +1 -61
  269. package/dist/Molecular/FormElement/FormElement.js +1 -54
  270. package/dist/Molecular/FormWithDependOn/FormWithDependOn.js +1 -184
  271. package/dist/Molecular/FormWithDependOn/partials/_utils.js +1 -53
  272. package/dist/Molecular/InputAddress/InputAddress.js +1 -626
  273. package/dist/Molecular/InputPassword/InputPassword.js +1 -48
  274. package/dist/index.js +1 -104
  275. 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"})]})}