intelicoreact 1.6.25 → 1.6.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.js +1 -98
  2. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +1 -48
  3. package/dist/Atomic/FormElements/Calendar/Calendar.js +1 -249
  4. package/dist/Atomic/FormElements/Calendar/Calendar.props.js +1 -4
  5. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +1 -65
  6. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +1 -52
  7. package/dist/Atomic/FormElements/Datepicker/Datepicker.js +1 -424
  8. package/dist/Atomic/FormElements/Datepicker/Datepicker.props.js +1 -4
  9. package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.js +1 -173
  10. package/dist/Atomic/FormElements/Datepicker/components/DatepickerCalendar.props.js +1 -4
  11. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +1 -735
  12. package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +1 -20
  13. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +1 -529
  14. package/dist/Atomic/FormElements/FileLoader/FileLoader.js +1 -94
  15. package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.js +1 -105
  16. package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.js +1 -67
  17. package/dist/Atomic/FormElements/FileLoaderDescription/FileLoaderDescription.js +1 -247
  18. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +1 -160
  19. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +1 -193
  20. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +1 -135
  21. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.js +1 -116
  22. package/dist/Atomic/FormElements/Input/Input.js +1 -467
  23. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +1 -161
  24. package/dist/Atomic/FormElements/InputColor/InputColor.js +1 -64
  25. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.js +1 -200
  26. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +1 -354
  27. package/dist/Atomic/FormElements/InputDateRange/components/DateInput.js +1 -71
  28. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.d.ts +2 -0
  29. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +1 -693
  30. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js.map +1 -0
  31. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +1 -254
  32. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +1 -32
  33. package/dist/Atomic/FormElements/InputDateRange/dependencies.js +1 -200
  34. package/dist/Atomic/FormElements/InputLink/InputLink.js +1 -99
  35. package/dist/Atomic/FormElements/InputMask/InputCarretPosition.js +1 -37
  36. package/dist/Atomic/FormElements/InputMask/InputMask.js +1 -1214
  37. package/dist/Atomic/FormElements/InputMask/config.js +1 -15
  38. package/dist/Atomic/FormElements/InputMask/functions.js +1 -58
  39. package/dist/Atomic/FormElements/InputMask2/InputMask2.js +1 -674
  40. package/dist/Atomic/FormElements/InputMask2/config.js +1 -15
  41. package/dist/Atomic/FormElements/InputMask2/functions.js +1 -58
  42. package/dist/Atomic/FormElements/InputMask3/InputMask3.js +1 -766
  43. package/dist/Atomic/FormElements/InputMask3/config.js +1 -15
  44. package/dist/Atomic/FormElements/InputMask3/functions.js +1 -58
  45. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.js +1 -114
  46. package/dist/Atomic/FormElements/InputsRow/InputsRow.js +1 -140
  47. package/dist/Atomic/FormElements/Label/Label.js +1 -87
  48. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +1 -506
  49. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +1 -45
  50. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +1 -331
  51. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +1 -66
  52. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +1 -80
  53. package/dist/Atomic/FormElements/RadioInput/RadioInput.js +1 -57
  54. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +1 -54
  55. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +1 -183
  56. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +1 -222
  57. package/dist/Atomic/FormElements/RangeList/RangeList.js +1 -175
  58. package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +1 -43
  59. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +1 -443
  60. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +1 -858
  61. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +1 -39
  62. package/dist/Atomic/FormElements/Switcher/Switcher.js +1 -59
  63. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +1 -50
  64. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.js +1 -44
  65. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +1 -100
  66. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.js +1 -52
  67. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +1 -64
  68. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +1 -170
  69. package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.js +1 -202
  70. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +1 -67
  71. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +1 -115
  72. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +1 -1110
  73. package/dist/Atomic/FormElements/Text/Text.js +1 -125
  74. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.js +1 -49
  75. package/dist/Atomic/FormElements/Textarea/Textarea.js +1 -80
  76. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +1 -176
  77. package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +1 -62
  78. package/dist/Atomic/FormElements/TimeRange/TimeRange.js +1 -119
  79. package/dist/Atomic/FormElements/UserContacts/UserContacts.js +1 -188
  80. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +1 -83
  81. package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +1 -82
  82. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +1 -101
  83. package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.js +1 -29
  84. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +1 -113
  85. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.js +1 -30
  86. package/dist/Atomic/Layout/Header/Header.js +1 -85
  87. package/dist/Atomic/Layout/Spinner/Spinner.js +1 -44
  88. package/dist/Atomic/UI/Accordion/Accordion.js +1 -108
  89. package/dist/Atomic/UI/Accordion/AccordionItem.js +1 -176
  90. package/dist/Atomic/UI/AccordionTable/AccordionTable.js +1 -238
  91. package/dist/Atomic/UI/AccordionText/AccordionText.js +1 -69
  92. package/dist/Atomic/UI/AdvancedTag/AdvTag.js +1 -207
  93. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +1 -56
  94. package/dist/Atomic/UI/Alert/Alert.js +1 -72
  95. package/dist/Atomic/UI/Arrow/Arrow.js +1 -132
  96. package/dist/Atomic/UI/Box/Box.js +1 -52
  97. package/dist/Atomic/UI/Button/Button.js +1 -47
  98. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.js +1 -72
  99. package/dist/Atomic/UI/Chart/Chart.js +1 -172
  100. package/dist/Atomic/UI/Chart/partial/Chart.constants.js +1 -95
  101. package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +1 -80
  102. package/dist/Atomic/UI/Chart/partial/datasetSetters.js +1 -188
  103. package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +1 -335
  104. package/dist/Atomic/UI/Chart/partial/optionsSetters.js +1 -43
  105. package/dist/Atomic/UI/Chart/partial/utils.js +1 -60
  106. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +1 -109
  107. package/dist/Atomic/UI/DateTime/DateTime.js +1 -57
  108. package/dist/Atomic/UI/DebugContainer/DebugContainer.js +1 -44
  109. package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +1 -15
  110. package/dist/Atomic/UI/DoubleString/DoubleString.d.ts +19 -0
  111. package/dist/Atomic/UI/DoubleString/DoubleString.js +1 -102
  112. package/dist/Atomic/UI/DoubleString/DoubleString.js.map +1 -0
  113. package/dist/Atomic/UI/DoubleString/DoubleString.scss +8 -1
  114. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +1 -70
  115. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +1 -221
  116. package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +1 -106
  117. package/dist/Atomic/UI/Hint/Hint.js +1 -256
  118. package/dist/Atomic/UI/Hint/partials/_utils.js +1 -64
  119. package/dist/Atomic/UI/Modal/Modal.js +1 -179
  120. package/dist/Atomic/UI/Modal/ModalHOC.js +1 -97
  121. package/dist/Atomic/UI/Modal/partials/ModalFooter.js +1 -71
  122. package/dist/Atomic/UI/Modal/partials/ModalTitle.js +1 -110
  123. package/dist/Atomic/UI/Modal/partials/useMobileModal.js +1 -192
  124. package/dist/Atomic/UI/MonoAccordion/MonoAccordion._test.js +1 -75
  125. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +1 -80
  126. package/dist/Atomic/UI/NavLine/NavLine.js +1 -317
  127. package/dist/Atomic/UI/PageTitle/PageTitle.js +1 -77
  128. package/dist/Atomic/UI/PieChart/PieChart.js +1 -42
  129. package/dist/Atomic/UI/Price/Price.js +1 -31
  130. package/dist/Atomic/UI/PriceRange/PriceRange.js +1 -44
  131. package/dist/Atomic/UI/ProgressLine/ProgressLine.js +1 -98
  132. package/dist/Atomic/UI/Status/Status.js +1 -67
  133. package/dist/Atomic/UI/Table/Partials/TdCell.js +1 -87
  134. package/dist/Atomic/UI/Table/Partials/TdHeader.js +1 -38
  135. package/dist/Atomic/UI/Table/Partials/TdRow.js +1 -99
  136. package/dist/Atomic/UI/Table/Partials/TdTitle.js +1 -52
  137. package/dist/Atomic/UI/Table/Table.js +1 -63
  138. package/dist/Atomic/UI/Table/TdTypes/TdActions.js +1 -80
  139. package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +1 -28
  140. package/dist/Atomic/UI/Table/TdTypes/TdRange.js +1 -13
  141. package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +1 -53
  142. package/dist/Atomic/UI/Tag/Tag.js +1 -167
  143. package/dist/Atomic/UI/TagList/TagList.js +1 -251
  144. package/dist/Atomic/UI/UserBox/UserBox.js +1 -86
  145. package/dist/Atomic/UI/WizardStepper/constructor.js +1 -84
  146. package/dist/Atomic/UI/WizardStepper/index.js +1 -3
  147. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/StateIcon.js +1 -37
  148. package/dist/Atomic/UI/WizardStepper/ui/StateIcon/index.js +1 -3
  149. package/dist/Atomic/UI/WizardStepper/ui/StepRow/StepRow.js +1 -61
  150. package/dist/Atomic/UI/WizardStepper/ui/StepRow/index.js +1 -3
  151. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/StepWrapper.js +1 -39
  152. package/dist/Atomic/UI/WizardStepper/ui/StepWrapper/index.js +1 -3
  153. package/dist/Atomic/UI/WizardStepper/ui/icons.js +1 -49
  154. package/dist/Atomic/UI/WizardStepper/ui/index.js +1 -3
  155. package/dist/Classes/AbortableFetch.js +1 -454
  156. package/dist/Classes/AnimatedHandler.js +1 -47
  157. package/dist/Classes/RESTAPI/index.js +1 -228
  158. package/dist/Classes/RESTAPI/partials/AbortableFetch.js +1 -457
  159. package/dist/Classes/RESTAPI/partials/ApiBase.js +1 -48
  160. package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +1 -112
  161. package/dist/Classes/RESTAPI/partials/ApiUtils.js +1 -189
  162. package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +1 -252
  163. package/dist/Classes/RESTAPI/partials/Utils.js +1 -92
  164. package/dist/Classes/RESTAPI/partials/_outerDependencies.js +1 -3
  165. package/dist/Classes/RESTAPI/partials/_utils.js +1 -197
  166. package/dist/Constants/index.constants.js +1 -78
  167. package/dist/Functions/Portal.js +1 -22
  168. package/dist/Functions/customEventListener.js +1 -96
  169. package/dist/Functions/dateTime.js +1 -149
  170. package/dist/Functions/fieldValueFormatters.js +1 -405
  171. package/dist/Functions/guards/assertions.js +1 -294
  172. package/dist/Functions/guards/safeValue.js +1 -75
  173. package/dist/Functions/guards/typeGuards.js +1 -373
  174. package/dist/Functions/hooks/useFormFieldsChangesManager.js +1 -95
  175. package/dist/Functions/locale/createTranslator.js +1 -32
  176. package/dist/Functions/operations.js +1 -130
  177. package/dist/Functions/presets/inputMaskPresets.js +1 -170
  178. package/dist/Functions/presets/inputPresets.js +1 -60
  179. package/dist/Functions/presets/mobileKeyboardTypesPresets.js +1 -45
  180. package/dist/Functions/schemas.js +1 -31
  181. package/dist/Functions/useBodyScrollLock.js +1 -17
  182. package/dist/Functions/useClickOutside.js +1 -15
  183. package/dist/Functions/useDebounce.js +1 -17
  184. package/dist/Functions/useFieldFocus.js +1 -84
  185. package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +1 -39
  186. package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +1 -159
  187. package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +1 -78
  188. package/dist/Functions/useFormTools/functions/General.js +1 -134
  189. package/dist/Functions/useFormTools/functions/RenderFields.js +1 -111
  190. package/dist/Functions/useFormTools/functions/usePrevious.js +1 -12
  191. package/dist/Functions/useFormTools/index.js +1 -778
  192. package/dist/Functions/useInputHighlightError.js +1 -67
  193. package/dist/Functions/useIsMobile/useIsMobile.js +1 -33
  194. package/dist/Functions/useKeyPress/useHandleKeyPress.js +1 -52
  195. package/dist/Functions/useKeyPress/useKeyPress.js +1 -52
  196. package/dist/Functions/useLocalStorage.js +1 -34
  197. package/dist/Functions/useLocationParams.js +1 -27
  198. package/dist/Functions/useMediaQuery.js +1 -17
  199. package/dist/Functions/useMetaInfo.js +1 -43
  200. package/dist/Functions/useMouseUpOutside.js +1 -16
  201. package/dist/Functions/useOnlineStatus.js +1 -29
  202. package/dist/Functions/usePasswordChecker.js +1 -110
  203. package/dist/Functions/usePrevious.js +1 -12
  204. package/dist/Functions/useResize.js +1 -31
  205. package/dist/Functions/useScrollTo.js +1 -17
  206. package/dist/Functions/useToggle.js +1 -17
  207. package/dist/Functions/utils.js +1 -522
  208. package/dist/Langs.js +1 -168
  209. package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +1 -21
  210. package/dist/Molecular/CustomIcons/components/AlertCircle.js +1 -23
  211. package/dist/Molecular/CustomIcons/components/AppStore.js +1 -29
  212. package/dist/Molecular/CustomIcons/components/Arrow.js +1 -32
  213. package/dist/Molecular/CustomIcons/components/ArrowDown.js +1 -17
  214. package/dist/Molecular/CustomIcons/components/ArrowLeft.js +1 -22
  215. package/dist/Molecular/CustomIcons/components/ArrowRight.js +1 -22
  216. package/dist/Molecular/CustomIcons/components/ArrowUp.js +1 -17
  217. package/dist/Molecular/CustomIcons/components/Bell.js +1 -15
  218. package/dist/Molecular/CustomIcons/components/Button.js +1 -12
  219. package/dist/Molecular/CustomIcons/components/Campaigns.js +1 -16
  220. package/dist/Molecular/CustomIcons/components/Check.js +1 -14
  221. package/dist/Molecular/CustomIcons/components/Check2.js +1 -12
  222. package/dist/Molecular/CustomIcons/components/ChevronDown.js +1 -12
  223. package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +1 -11
  224. package/dist/Molecular/CustomIcons/components/ChevronLeft.js +1 -11
  225. package/dist/Molecular/CustomIcons/components/ChevronRight.js +1 -11
  226. package/dist/Molecular/CustomIcons/components/ChevronUp.js +1 -11
  227. package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +1 -27
  228. package/dist/Molecular/CustomIcons/components/Close.js +1 -14
  229. package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +1 -17
  230. package/dist/Molecular/CustomIcons/components/Delete.js +1 -16
  231. package/dist/Molecular/CustomIcons/components/Edit.js +1 -15
  232. package/dist/Molecular/CustomIcons/components/Email.js +1 -31
  233. package/dist/Molecular/CustomIcons/components/FinturfLogo.js +1 -18
  234. package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +1 -35
  235. package/dist/Molecular/CustomIcons/components/Flows.js +1 -15
  236. package/dist/Molecular/CustomIcons/components/Gift.js +1 -25
  237. package/dist/Molecular/CustomIcons/components/GoogleAuth.js +1 -29
  238. package/dist/Molecular/CustomIcons/components/GooglePlay.js +1 -29
  239. package/dist/Molecular/CustomIcons/components/HelpCircle.js +1 -19
  240. package/dist/Molecular/CustomIcons/components/HelpCircle2.js +1 -20
  241. package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +1 -19
  242. package/dist/Molecular/CustomIcons/components/Home.js +1 -16
  243. package/dist/Molecular/CustomIcons/components/Home2.js +1 -22
  244. package/dist/Molecular/CustomIcons/components/Key.js +1 -23
  245. package/dist/Molecular/CustomIcons/components/Landers.js +1 -20
  246. package/dist/Molecular/CustomIcons/components/Lock.js +1 -15
  247. package/dist/Molecular/CustomIcons/components/Mail.js +1 -26
  248. package/dist/Molecular/CustomIcons/components/Mastercard.js +1 -73
  249. package/dist/Molecular/CustomIcons/components/Minus.js +1 -25
  250. package/dist/Molecular/CustomIcons/components/Offers.js +1 -16
  251. package/dist/Molecular/CustomIcons/components/Pause.js +1 -28
  252. package/dist/Molecular/CustomIcons/components/PayPal.js +1 -41
  253. package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +1 -28
  254. package/dist/Molecular/CustomIcons/components/Phone.js +1 -30
  255. package/dist/Molecular/CustomIcons/components/Play.js +1 -25
  256. package/dist/Molecular/CustomIcons/components/Plus.js +1 -25
  257. package/dist/Molecular/CustomIcons/components/Profile.js +1 -16
  258. package/dist/Molecular/CustomIcons/components/QRCode.js +1 -29
  259. package/dist/Molecular/CustomIcons/components/Rectangle.js +1 -12
  260. package/dist/Molecular/CustomIcons/components/Revert.js +1 -13
  261. package/dist/Molecular/CustomIcons/components/Star.js +1 -14
  262. package/dist/Molecular/CustomIcons/components/Star2.js +1 -16
  263. package/dist/Molecular/CustomIcons/components/TrafficSources.js +1 -14
  264. package/dist/Molecular/CustomIcons/components/Trash.js +1 -15
  265. package/dist/Molecular/CustomIcons/components/TrashRed.js +1 -15
  266. package/dist/Molecular/CustomIcons/components/Triggers.js +1 -15
  267. package/dist/Molecular/CustomIcons/components/User.js +1 -25
  268. package/dist/Molecular/CustomIcons/components/Visa.js +1 -31
  269. package/dist/Molecular/CustomIcons/components/X.js +1 -12
  270. package/dist/Molecular/CustomIcons/index.js +1 -61
  271. package/dist/Molecular/FormElement/FormElement.js +1 -54
  272. package/dist/Molecular/FormWithDependOn/FormWithDependOn.js +1 -184
  273. package/dist/Molecular/FormWithDependOn/partials/_utils.js +1 -53
  274. package/dist/Molecular/InputAddress/InputAddress.js +1 -626
  275. package/dist/Molecular/InputPassword/InputPassword.js +1 -48
  276. package/dist/index.js +1 -104
  277. package/package.json +1 -1
@@ -1,160 +1 @@
1
- import React from "react";
2
-
3
- import cn from "classnames";
4
- import { Download, Paperclip, Trash2 } from "react-feather";
5
-
6
- import {
7
- getUniqueFileExtensions,
8
- renderFileSize,
9
- } from "../../../Functions/utils";
10
-
11
- import "./FileLoaderLocal.scss";
12
-
13
- const MAX_FILE_SIZE = 10 * 1024 * 1024;
14
-
15
- const FileLoaderLocal = ({
16
- groupId,
17
- id,
18
- fieldId,
19
- fieldKey,
20
- label,
21
- error,
22
- outerError,
23
- isRequired,
24
- accept,
25
- onChange,
26
- className,
27
- value,
28
- isNoTrashIcon = false,
29
- maxItemSizeBytes,
30
- testId = "file-loader-local",
31
- attributesOfNativeInput = {},
32
- }) => {
33
- const getFileName = (value) => {
34
- const result = value.match(/[^\\]+$/);
35
- return result?.[0];
36
- };
37
-
38
- const renderRequiredLabel = () => {
39
- if (!value) {
40
- if (isRequired)
41
- return <div className="file-loader-local--required">Required</div>;
42
- else return <div className="file-loader-local--optional">Optional</div>;
43
- }
44
- };
45
-
46
- const isFileSizeOutOfLimit = (file) => {
47
- return file.size > maxItemSizeBytes ?? MAX_FILE_SIZE;
48
- };
49
-
50
- const checkExtension = (valueExtension) => {
51
- return accept.includes(valueExtension);
52
- };
53
-
54
- const handle = {
55
- change: (e) => {
56
- const name = getFileName(e.target.value);
57
- const valueExtension = name?.match(/[^\.]+$/)?.[0];
58
- const fileName = name.split(".")?.[0];
59
- const latinRegex = /^[A-Za-z\u00C0-\u00FF0-9!@#\$%\^\&*\)\(+=._-\s]+$/;
60
- const file = e.target?.files?.[0];
61
-
62
- if (isFileSizeOutOfLimit(e.target?.files?.[0])) {
63
- onChange({
64
- id,
65
- name,
66
- valueExtension,
67
- e,
68
- file,
69
- groupId,
70
- error: `Max file size is ${renderFileSize(maxItemSizeBytes)}`,
71
- });
72
- } else if (!checkExtension(valueExtension)) {
73
- const allowedExtensions =
74
- accept?.replace(/\./g, "")?.toUpperCase() || "JPG, PNG, PDF";
75
- const uniqExts = getUniqueFileExtensions(allowedExtensions);
76
-
77
- onChange({
78
- id,
79
- groupId,
80
- name,
81
- valueExtension,
82
- e,
83
- file,
84
- error: `Only ${uniqExts} are allowed`,
85
- });
86
- } else if (!latinRegex.test(fileName)) {
87
- onChange({
88
- id,
89
- groupId,
90
- name,
91
- valueExtension,
92
- e,
93
- file,
94
- error: `File name must be Latin characters only.`,
95
- });
96
- } else onChange({ id, groupId, name, valueExtension, e, file });
97
- },
98
- };
99
-
100
- return (
101
- <div
102
- data-testid={testId}
103
- className={cn("file-loader-local", className, {
104
- ["file-loader-local_outer-error"]: Boolean(outerError),
105
- })}
106
- >
107
- {(fieldId === "uploadTrigger" || !value) && (
108
- <input
109
- key={id}
110
- onChange={handle.change}
111
- className="file-loader-local__file-input"
112
- id={fieldKey || `file-input-${id}${groupId ? `-${groupId}` : ""}`}
113
- type="file"
114
- name={fieldKey || id}
115
- required={isRequired}
116
- accept={accept}
117
- {...attributesOfNativeInput}
118
- />
119
- )}
120
- <label
121
- className={cn("file-loader-local__label-box", {
122
- "file-loader-local__label-box--upload-trigger":
123
- fieldId === "uploadTrigger" || !value,
124
- })}
125
- htmlFor={fieldKey || `file-input-${id}${groupId ? `-${groupId}` : ""}`}
126
- >
127
- {!value && <Download className="file-loader-local__upload-icon" />}
128
- {value && <Paperclip className="file-loader-local__upload-icon" />}
129
- <div
130
- title={value || label}
131
- className="file-loader-local__label-wrapper"
132
- >
133
- <div
134
- className={cn("file-loader-local__label", {
135
- "file-loader-local__label-filled": value,
136
- })}
137
- >
138
- <span className="file-loader-local__label-text">
139
- {value || label}
140
- </span>
141
- {error && <span className="file-loader-local__error">{error}</span>}
142
- {typeof outerError === "string" && (
143
- <span className="file-loader-local__error">{outerError}</span>
144
- )}
145
- </div>
146
- </div>
147
-
148
- {value && !isNoTrashIcon && (
149
- <Trash2
150
- className="file-loader-local__trash-icon"
151
- onClick={() => onChange({ id: fieldId, groupId })}
152
- />
153
- )}
154
- {renderRequiredLabel()}
155
- </label>
156
- </div>
157
- );
158
- };
159
-
160
- export default FileLoaderLocal;
1
+ function e(e,l,a){return l in e?Object.defineProperty(e,l,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[l]=a,e}import{jsx as l,jsxs as a}from"react/jsx-runtime";import"react";import r from"classnames";import{Download as o,Paperclip as i,Trash2 as t}from"react-feather";import{getUniqueFileExtensions as n,renderFileSize as c}from"../../../Functions/utils";import"./FileLoaderLocal.scss";export default function(s){var d=s.groupId,u=s.id,f=s.fieldId,p=s.fieldKey,m=s.label,v=s.error,_=s.outerError,g=s.isRequired,b=s.accept,h=s.onChange,N=s.className,y=s.value,x=s.isNoTrashIcon,I=s.maxItemSizeBytes,O=s.testId,j=s.attributesOfNativeInput,F=function(e){var l=e.match(/[^\\]+$/);return null==l?void 0:l[0]},P=function(e){var l;return l=e.size>I,l};return a("div",{"data-testid":void 0===O?"file-loader-local":O,className:r("file-loader-local",N,e({},"file-loader-local_outer-error",!!_)),children:[("uploadTrigger"===f||!y)&&l("input",function(l){for(var a=1;a<arguments.length;a++){var r=null!=arguments[a]?arguments[a]:{},o=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),o.forEach(function(a){e(l,a,r[a])})}return l}({onChange:function(e){var l=F(e.target.value),a=null==l||null==(i=l.match(/[^\.]+$/))?void 0:i[0],r=null==(t=l.split("."))?void 0:t[0],o=null==(f=e.target)||null==(s=f.files)?void 0:s[0];if(P(null==(m=e.target)||null==(p=m.files)?void 0:p[0]))h({id:u,name:l,valueExtension:a,e:e,file:o,groupId:d,error:"Max file size is ".concat(c(I))});else if(b.includes(a))/^[A-Za-z\u00C0-\u00FF0-9!@#\$%\^\&*\)\(+=._-\s]+$/.test(r)?h({id:u,groupId:d,name:l,valueExtension:a,e:e,file:o}):h({id:u,groupId:d,name:l,valueExtension:a,e:e,file:o,error:"File name must be Latin characters only."});else{var i,t,s,f,p,m,v,_=n((null==b||null==(v=b.replace(/\./g,""))?void 0:v.toUpperCase())||"JPG, PNG, PDF");h({id:u,groupId:d,name:l,valueExtension:a,e:e,file:o,error:"Only ".concat(_," are allowed")})}},className:"file-loader-local__file-input",id:p||"file-input-".concat(u).concat(d?"-".concat(d):""),type:"file",name:p||u,required:g,accept:b},void 0===j?{}:j),u),a("label",{className:r("file-loader-local__label-box",{"file-loader-local__label-box--upload-trigger":"uploadTrigger"===f||!y}),htmlFor:p||"file-input-".concat(u).concat(d?"-".concat(d):""),children:[!y&&l(o,{className:"file-loader-local__upload-icon"}),y&&l(i,{className:"file-loader-local__upload-icon"}),l("div",{title:y||m,className:"file-loader-local__label-wrapper",children:a("div",{className:r("file-loader-local__label",{"file-loader-local__label-filled":y}),children:[l("span",{className:"file-loader-local__label-text",children:y||m}),v&&l("span",{className:"file-loader-local__error",children:v}),"string"==typeof _&&l("span",{className:"file-loader-local__error",children:_})]})}),y&&!(void 0!==x&&x)&&l(t,{className:"file-loader-local__trash-icon",onClick:function(){return h({id:f,groupId:d})}}),function(){if(!y)if(g)return l("div",{className:"file-loader-local--required",children:"Required"});else return l("div",{className:"file-loader-local--optional",children:"Optional"})}()]})]})}
@@ -1,193 +1 @@
1
- import React, { useEffect, useState } from "react";
2
-
3
- import cn from "classnames";
4
- import { Info } from "react-feather";
5
-
6
- import {
7
- clone,
8
- getBase64,
9
- getUniqueFileExtensions,
10
- } from "../../../Functions/utils";
11
- import Alert from "../../UI/Alert/Alert";
12
- import FileLoaderLocal from "../FileLoaderLocal/FileLoaderLocal";
13
-
14
- import "./FileLoaderLocalGroup.scss";
15
-
16
- const DEFAULT_LABEL_PREFIX = "Please attach";
17
- const MAX_FILE_SIZE = 10 * 1024 * 1024;
18
-
19
- const FileLoaderLocalGroup = ({
20
- className,
21
- groupsArray = [],
22
- isSingleGroup,
23
- onChange,
24
- labelPrefix = DEFAULT_LABEL_PREFIX,
25
- testId = "file-loader-local-group",
26
- alertText,
27
- }) => {
28
- const [groups, setGroups] = useState(clone(groupsArray));
29
-
30
- const getNewFile = (group) => {
31
- return {
32
- id: isNaN(group.files?.at(-1).id + 1) ? 1 : group.files?.at(-1).id + 1,
33
- value: "",
34
- base64: "",
35
- error: "",
36
- accept: group.accept || ".jpg, .jpeg, .png, .pdf",
37
- maxItemSizeBytes: group.maxItemSizeBytes ?? MAX_FILE_SIZE,
38
- isRequired: group?.isRequired || false,
39
- fieldKey: isNaN(group.files?.at(-1).id + 1) ? 1 : group.files?.at(-1).id + 1,
40
- };
41
- };
42
-
43
- const generateUniqueFileName = (files, name) => {
44
- let fileName = name;
45
- const [nameWithoutExtension, extension] = name.split(/(?=\.[^.]+$)/);
46
- let count = 1;
47
-
48
- while (files.some(file => file.value === fileName)) {
49
- fileName = `${nameWithoutExtension}(${count})${extension}`;
50
- count += 1;
51
- }
52
-
53
- return fileName;
54
- };
55
-
56
- useEffect(() => {
57
- const mergedGroups = groupsArray?.map((group) => {
58
- return {
59
- ...group,
60
- files: [getNewFile(group)],
61
- };
62
- });
63
-
64
- setGroups(mergedGroups);
65
- }, []);
66
-
67
- const handle = {
68
- change: ({ e, groupId, name, id, error, valueExtension, file }) => {
69
- const currentGroup = groups?.find(
70
- (group) => group.groupId === groupId.toString(),
71
- );
72
- const files = currentGroup?.files;
73
- const changedField = files.find((item) => Number(item.id) === Number(id));
74
-
75
- if (error) {
76
- changedField.value = name;
77
- changedField.error = error;
78
- setGroups([...groups]);
79
- onChange(groups);
80
- } else if (name && !error) {
81
- const uniqueFileName = generateUniqueFileName(files, name);
82
- getBase64(file)
83
- .then((result) => {
84
- changedField.value = uniqueFileName;
85
- changedField.base64 = result;
86
- changedField.error = "";
87
-
88
- const oldDataWithNewFile = groups?.map((group) => {
89
- if (group?.groupId === groupId.toString() && isSingleGroup) {
90
- return {
91
- ...group,
92
- files: [...group.files],
93
- };
94
- } else if (
95
- group?.groupId === groupId.toString() &&
96
- group.files.length < 10 &&
97
- !isSingleGroup
98
- ) {
99
- return {
100
- ...group,
101
- files: [
102
- ...group.files,
103
- {
104
- ...getNewFile(group),
105
- isRequired: group.files.length > 1,
106
- },
107
- ],
108
- };
109
- }
110
- return group;
111
- });
112
- setGroups([...oldDataWithNewFile]);
113
- onChange(oldDataWithNewFile);
114
- })
115
- .catch((e) => console.error(e));
116
- } else {
117
- const oldDataWithRemovedFile = groups?.map((group) => {
118
- if (isSingleGroup && group?.groupId === groupId.toString()) {
119
- return {
120
- ...group,
121
- files: [{ ...getNewFile(group), value: "", base64: "" }],
122
- };
123
- } else if (group?.groupId === groupId.toString() && !isSingleGroup) {
124
- return {
125
- ...group,
126
- files: group.files.filter((item) => item.id !== id),
127
- };
128
- }
129
- return group;
130
- });
131
- setGroups([...oldDataWithRemovedFile]);
132
- onChange(oldDataWithRemovedFile);
133
- }
134
- },
135
- };
136
-
137
- const getUniqueExts = (acceptExts) =>
138
- getUniqueFileExtensions(acceptExts?.replace(/\./g, ""));
139
-
140
- return groups?.map((group) => {
141
- return (
142
- <div
143
- data-testid={testId}
144
- key={group.groupId}
145
- className={cn("file-loader-local-groups", className)}
146
- >
147
- <span className="file-loader-local-groups__label">
148
- <div className="file-loader-local-groups__label-text">
149
- {labelPrefix} {group?.groupTitleDescription}{" "}
150
- <span className="file-loader-local-groups__label-extension">
151
- ({getUniqueExts(group?.accept)}):
152
- </span>
153
- </div>
154
- </span>
155
-
156
- {group?.alertText && (
157
- <Alert
158
- className="file-loader-local-groups__alert"
159
- noDismiss
160
- icon={<Info />}
161
- message={group?.alertText}
162
- />
163
- )}
164
- <div className="file-loader-local-groups__item">
165
- {group?.files?.map((file, index) => {
166
- return (
167
- <FileLoaderLocal
168
- groupId={group?.groupId}
169
- fieldKey={
170
- file?.fieldKey
171
- ? `${file.fieldKey}:${group?.groupId}:${Math.random().toString().slice(-4)}`
172
- : file?.id
173
- }
174
- key={file?.id || index}
175
- id={file?.id || index}
176
- error={file?.error}
177
- label="Upload document"
178
- accept={file?.accept}
179
- value={file?.value}
180
- maxItemSizeBytes={file?.maxItemSizeBytes}
181
- onChange={(value) => handle.change(value, file?.id)}
182
- isRequired={group.files?.length <= 1 || false}
183
- isNoTrashIcon={group.files?.length <= 1 && !isSingleGroup}
184
- />
185
- );
186
- })}
187
- </div>
188
- </div>
189
- );
190
- });
191
- };
192
-
193
- export default FileLoaderLocalGroup;
1
+ function e(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function r(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.forEach(function(r){var n;n=t[r],r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n})}return e}function t(e,r){return r=null!=r?r:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):(function(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}),e}function n(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t,n,l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var o=[],i=!0,a=!1;try{for(l=l.call(e);!(i=(t=l.next()).done)&&(o.push(t.value),!r||o.length!==r);i=!0);}catch(e){a=!0,n=e}finally{try{i||null==l.return||l.return()}finally{if(a)throw n}}return o}}(e,r)||o(e,r)||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 l(r){return function(r){if(Array.isArray(r))return e(r)}(r)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||o(r)||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 o(r,t){if(r){if("string"==typeof r)return e(r,t);var n=Object.prototype.toString.call(r).slice(8,-1);if("Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return e(r,t)}}import{jsx as i,jsxs as a}from"react/jsx-runtime";import{useEffect as u,useState as c}from"react";import s from"classnames";import{Info as d}from"react-feather";import{clone as f,getBase64 as p,getUniqueFileExtensions as v}from"../../../Functions/utils";import m from"../../UI/Alert/Alert";import g from"../FileLoaderLocal/FileLoaderLocal";import"./FileLoaderLocalGroup.scss";export default function(e){var o=e.className,y=e.groupsArray,b=void 0===y?[]:y,h=e.isSingleGroup,O=e.onChange,j=e.labelPrefix,S=void 0===j?"Please attach":j,I=e.testId,x=void 0===I?"file-loader-local-group":I;e.alertText;var N=n(c(f(b)),2),P=N[0],w=N[1],A=function(e){var r,t,n,l,o;return{id:isNaN((null==(r=e.files)?void 0:r.at(-1).id)+1)?1:(null==(t=e.files)?void 0:t.at(-1).id)+1,value:"",base64:"",error:"",accept:e.accept||".jpg, .jpeg, .png, .pdf",maxItemSizeBytes:null!=(o=e.maxItemSizeBytes)?o:0xa00000,isRequired:(null==e?void 0:e.isRequired)||!1,fieldKey:isNaN((null==(n=e.files)?void 0:n.at(-1).id)+1)?1:(null==(l=e.files)?void 0:l.at(-1).id)+1}},_=function(e,r){for(var t=r,l=n(r.split(/(?=\.[^.]+$)/),2),o=l[0],i=l[1],a=1;e.some(function(e){return e.value===t});)t="".concat(o,"(").concat(a,")").concat(i),a+=1;return t};u(function(){w(null==b?void 0:b.map(function(e){return t(r({},e),{files:[A(e)]})}))},[]);var T={change:function(e){e.e;var n=e.groupId,o=e.name,i=e.id,a=e.error,u=(e.valueExtension,e.file),c=null==P?void 0:P.find(function(e){return e.groupId===n.toString()}),s=null==c?void 0:c.files,d=s.find(function(e){return Number(e.id)===Number(i)});if(a)d.value=o,d.error=a,w(l(P)),O(P);else if(o&&!a){var f=_(s,o);p(u).then(function(e){d.value=f,d.base64=e,d.error="";var o=null==P?void 0:P.map(function(e){return(null==e?void 0:e.groupId)===n.toString()&&h?t(r({},e),{files:l(e.files)}):(null==e?void 0:e.groupId)===n.toString()&&e.files.length<10&&!h?t(r({},e),{files:l(e.files).concat([t(r({},A(e)),{isRequired:e.files.length>1})])}):e});w(l(o)),O(o)}).catch(function(e){})}else{var v=null==P?void 0:P.map(function(e){return h&&(null==e?void 0:e.groupId)===n.toString()?t(r({},e),{files:[t(r({},A(e)),{value:"",base64:""})]}):(null==e?void 0:e.groupId)!==n.toString()||h?e:t(r({},e),{files:e.files.filter(function(e){return e.id!==i})})});w(l(v)),O(v)}}};return null==P?void 0:P.map(function(e){var r,t;return a("div",{"data-testid":x,className:s("file-loader-local-groups",o),children:[i("span",{className:"file-loader-local-groups__label",children:a("div",{className:"file-loader-local-groups__label-text",children:[S," ",null==e?void 0:e.groupTitleDescription," ",a("span",{className:"file-loader-local-groups__label-extension",children:["(",v(null==(t=null==e?void 0:e.accept)?void 0:t.replace(/\./g,"")),"):"]})]})}),(null==e?void 0:e.alertText)&&i(m,{className:"file-loader-local-groups__alert",noDismiss:!0,icon:i(d,{}),message:null==e?void 0:e.alertText}),i("div",{className:"file-loader-local-groups__item",children:null==e||null==(r=e.files)?void 0:r.map(function(r,t){var n,l;return i(g,{groupId:null==e?void 0:e.groupId,fieldKey:(null==r?void 0:r.fieldKey)?"".concat(r.fieldKey,":").concat(null==e?void 0:e.groupId,":").concat(Math.random().toString().slice(-4)):null==r?void 0:r.id,id:(null==r?void 0:r.id)||t,error:null==r?void 0:r.error,label:"Upload document",accept:null==r?void 0:r.accept,value:null==r?void 0:r.value,maxItemSizeBytes:null==r?void 0:r.maxItemSizeBytes,onChange:function(e){return T.change(e,null==r?void 0:r.id)},isRequired:(null==(n=e.files)?void 0:n.length)<=1,isNoTrashIcon:(null==(l=e.files)?void 0:l.length)<=1&&!h},(null==r?void 0:r.id)||t)})})]},e.groupId)})}
@@ -1,135 +1 @@
1
- import React, { useRef, useState } from "react";
2
-
3
- import { Eye, EyeOff } from "react-feather";
4
-
5
- import { getLimitedMask, setCarretToEnd } from "../../../Functions/utils";
6
- import InputMask3 from "../InputMask3/InputMask3";
7
-
8
- import "./FormattedRawSSN.scss";
9
-
10
- const DEFAULT_SSN_MASK = "DDD-DD-DDDD";
11
- const SIGNIFICANT_CHARACTERS = ["D"];
12
-
13
- const FormattedRawSSN = ({
14
- value = "",
15
- onChange: onChangeProp = () => {},
16
- testId = "formatted-raw-ssn",
17
-
18
- // ! ВСЕ "пляшет" от fullSnnMask и significantChars
19
- // Маска для полного snn (технически ограничений нет, НО нужно передавать то, что понимает InputMask3)
20
- fullSnnMask = DEFAULT_SSN_MASK,
21
- // Значащие символы в fullSnnMask
22
- // Технически ограничений нет, НО нужно передавать
23
- // - массив ОДИНОЧНЫХ символов
24
- // - массив тех символов, которые правильно трактуются в InputMask3 (смотри InputMask3/config)
25
- significantChars = SIGNIFICANT_CHARACTERS,
26
- // Символ для маскировки
27
- maskChar = "*",
28
- // Инициализационное значение (сразу скрывать или нет)
29
- isHiddenDefault = true,
30
- // Максимальное значение ВВОДИМЫХ цифр
31
- maxLen = 9, // ? Речь о значащих символах
32
- // Сколько из ПЕРВЫХ вводимых нужно прятать при включении мода маскировки
33
- countOfFirstDigitsToHide = 5, // ? Речь о значащих символах
34
- // Статическая часть
35
- postfix = "",
36
-
37
- ...args
38
- }) => {
39
- // ? Будем пользоваться своим (верхним относительно InputMask3) стейтом
40
- // ? Это потребует отрисовки триггера "поверх" InputMask3.
41
- const [isHidden, setIsHidden] = useState(isHiddenDefault);
42
- const wrapperRef = useRef(null);
43
-
44
- const onChange = (value) => {
45
- const newValue = !value && value !== "" ? "" : value?.toString();
46
- onChangeProp(newValue);
47
- };
48
-
49
- // ? Пересчитываем маску с учетом переданного maxLen.
50
- // ? Если maxLen меньше количества значащих символов в fullSnnMask, то маска корректно обрежется.
51
- // ? Передаем опцию isOnlyMask: false, чтобы получить НЕ только новую маску, а еще и статистику.
52
- // ? В этом случае приходит объект формата: { mask, countOfSignificantChars, countOfNotSignificantChars }
53
- const infoAboutMask = getLimitedMask({
54
- mask: fullSnnMask,
55
- significantChars: significantChars,
56
- limit: maxLen,
57
- isOnlyMask: false,
58
- });
59
-
60
- // ? Расчитываем ИНДЕКС крайнего символа части маски, которая подлежит скрытию,
61
- // ? исходя из countOfFirstDigitsToHide
62
- const maxHiddenIndex = (() => {
63
- // если не приводится к числу или ноль (передавать ноль лишено смысла)
64
- if (
65
- isNaN(Number(countOfFirstDigitsToHide)) ||
66
- !Number(countOfFirstDigitsToHide)
67
- )
68
- return -1;
69
- // если больше чем значимых символов
70
- if (countOfFirstDigitsToHide > infoAboutMask.countOfSignificantChars)
71
- return infoAboutMask.mask.length;
72
-
73
- // ? Для расчетов получаем дополнительно корректно "обрезанную" маску (до уровня скрываемой части)
74
- // ? на основе ранее полученной "обрезанной" по maxLen. Нам нужна НЕ сама маска, а статистика по ней.
75
- // ? В частности - количество "незначащих" символов содержащихся в скрываемой части
76
- const infoAboutMaskOfHidden = getLimitedMask({
77
- mask: infoAboutMask.mask,
78
- significantChars: significantChars,
79
- limit: countOfFirstDigitsToHide,
80
- isOnlyMask: false,
81
- });
82
-
83
- // ? Для InputMask3 maxHiddenIndex должен быть передан относительно длины ВСЕЙ применяемой маски (наша "обрезанная" по maxLen).
84
- // ? Поэтому к количеству "скрываемых" символов добавляем количество "незначащих", входящих в скрываемую часть маски.
85
- // ? Т.к. расчитываем НЕ длинну, а индекс - отнимаем 1
86
- return (
87
- countOfFirstDigitsToHide +
88
- infoAboutMaskOfHidden.countOfNotSignificantChars -
89
- 1
90
- );
91
- })();
92
-
93
- return (
94
- <div data-testid={testId} className="formatted-raw-ssn" ref={wrapperRef}>
95
- <InputMask3
96
- {...args}
97
- value={value}
98
- onChange={onChange}
99
- testId={`formattedRawSNN--input--key-${testId}`}
100
- maskPattern={infoAboutMask.mask}
101
- maskPlaceholder="X"
102
- focusSelector="input"
103
- isNumericMobileKeyboard={true}
104
- blinkErrors={true}
105
- showErrors={false}
106
- withHiddenMode={true}
107
- isValueHiddenDefault={isHiddenDefault}
108
- hiddenChar={maskChar}
109
- maxHiddenIndex={maxHiddenIndex}
110
- isHide={isHidden}
111
- />
112
- {postfix && (
113
- <span
114
- className="formatted-raw-ssn-postfix"
115
- onClick={() => wrapperRef?.current?.querySelector("input")?.focus()}
116
- >
117
- {postfix}
118
- </span>
119
- )}
120
- <span
121
- className="formatted-raw-ssn-eye-holder"
122
- onClick={() => setIsHidden(!isHidden)}
123
- >
124
- {" "}
125
- {isHidden ? (
126
- <Eye strokeWidth={1} className="password-icon" />
127
- ) : (
128
- <EyeOff strokeWidth={1} className="password-icon" />
129
- )}
130
- </span>
131
- </div>
132
- );
133
- };
134
-
135
- export default FormattedRawSSN;
1
+ function t(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);e<r;e++)n[e]=t[e];return n}import{jsx as r,jsxs as e}from"react/jsx-runtime";import{useRef as n,useState as i}from"react";import{Eye as o,EyeOff as a}from"react-feather";import{getLimitedMask as s}from"../../../Functions/utils";import l from"../InputMask3/InputMask3";import"./FormattedRawSSN.scss";var c=["D"];export default function(u){var f,d,m,p=u.value,y=u.onChange,b=void 0===y?function(){}:y,h=u.testId,O=void 0===h?"formatted-raw-ssn":h,v=u.fullSnnMask,g=u.significantChars,j=void 0===g?c:g,k=u.maskChar,w=u.isHiddenDefault,S=void 0===w||w,D=u.maxLen,C=u.countOfFirstDigitsToHide,P=void 0===C?5:C,x=u.postfix,N=void 0===x?"":x,I=function(t,r){if(null==t)return{};var e,n,i=function(t,r){if(null==t)return{};var e,n,i={},o=Object.keys(t);for(n=0;n<o.length;n++)e=o[n],r.indexOf(e)>=0||(i[e]=t[e]);return i}(t,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n<o.length;n++)e=o[n],!(r.indexOf(e)>=0)&&Object.prototype.propertyIsEnumerable.call(t,e)&&(i[e]=t[e])}return i}(u,["value","onChange","testId","fullSnnMask","significantChars","maskChar","isHiddenDefault","maxLen","countOfFirstDigitsToHide","postfix"]),M=(f=i(S),function(t){if(Array.isArray(t))return t}(f)||function(t,r){var e,n,i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var o=[],a=!0,s=!1;try{for(i=i.call(t);!(a=(e=i.next()).done)&&(o.push(e.value),o.length!==r);a=!0);}catch(t){s=!0,n=t}finally{try{a||null==i.return||i.return()}finally{if(s)throw n}}return o}}(f,2)||function(r,e){if(r){if("string"==typeof r)return t(r,2);var n=Object.prototype.toString.call(r).slice(8,-1);if("Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return t(r,e)}}(f,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),H=M[0],A=M[1],E=n(null),F=s({mask:void 0===v?"DDD-DD-DDDD":v,significantChars:j,limit:void 0===D?9:D,isOnlyMask:!1}),T=function(){if(isNaN(Number(P))||!Number(P))return -1;if(P>F.countOfSignificantChars)return F.mask.length;var t=s({mask:F.mask,significantChars:j,limit:P,isOnlyMask:!1});return P+t.countOfNotSignificantChars-1}();return e("div",{"data-testid":O,className:"formatted-raw-ssn",ref:E,children:[r(l,(d=function(t){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{},n=Object.keys(e);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(e).filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.forEach(function(r){var n;n=e[r],r in t?Object.defineProperty(t,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[r]=n})}return t}({},I),m=m={value:void 0===p?"":p,onChange:function(t){b(t||""===t?null==t?void 0:t.toString():"")},testId:"formattedRawSNN--input--key-".concat(O),maskPattern:F.mask,maskPlaceholder:"X",focusSelector:"input",isNumericMobileKeyboard:!0,blinkErrors:!0,showErrors:!1,withHiddenMode:!0,isValueHiddenDefault:S,hiddenChar:void 0===k?"*":k,maxHiddenIndex:T,isHide:H},Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(m)):(function(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e.push.apply(e,n)}return e})(Object(m)).forEach(function(t){Object.defineProperty(d,t,Object.getOwnPropertyDescriptor(m,t))}),d)),N&&r("span",{className:"formatted-raw-ssn-postfix",onClick:function(){var t,r;return null==E||null==(r=E.current)||null==(t=r.querySelector("input"))?void 0:t.focus()},children:N}),e("span",{className:"formatted-raw-ssn-eye-holder",onClick:function(){return A(!H)},children:[" ",H?r(o,{strokeWidth:1,className:"password-icon"}):r(a,{strokeWidth:1,className:"password-icon"})]})]})}
@@ -1,116 +1 @@
1
- import React, { useEffect, useRef, useState } from "react";
2
-
3
- import { Eye, EyeOff } from "react-feather";
4
-
5
- import { setCarretToEnd } from "../../../Functions/utils";
6
- import Input from "../Input/Input";
7
-
8
- import "./FormattedRawSSN.scss";
9
-
10
- const FormattedRawSSN = ({
11
- value = "",
12
- postfix = "",
13
- onChange: onChangeProp = () => {},
14
- maskChar = "*",
15
- testId = "formatted-raw-ssn",
16
- isHiddenDefault = true,
17
- maxLen = 9,
18
- ...args
19
- }) => {
20
- const [SSN, setSSN] = useState(value?.substring(0, maxLen) ?? "");
21
- const [isHidden, setIsHidden] = useState(isHiddenDefault);
22
- const wrapperRef = useRef(null);
23
-
24
- useEffect(() => {
25
- setSSN(value?.toString()?.substring(0, maxLen) ?? "");
26
- }, [value]);
27
-
28
- const onChange = (value) => {
29
- if (!value && value !== "") return "";
30
-
31
- if (value.replace(/-/g, "").length < SSN.length) {
32
- const last = SSN.length - 1;
33
- setSSN(SSN.slice(0, last));
34
- return;
35
- }
36
-
37
- const numValue = value.replace(/\D/g, "");
38
- let newSSN = "";
39
-
40
- if (isHidden) {
41
- if (SSN.length > 5) {
42
- newSSN = SSN.slice(0, 5) + numValue;
43
- } else {
44
- newSSN = SSN + numValue;
45
- }
46
- } else {
47
- newSSN = numValue;
48
- }
49
-
50
- if (newSSN.length > maxLen) {
51
- return;
52
- }
53
- setSSN(newSSN);
54
- };
55
- const switchView = () => {
56
- const input = wrapperRef?.current?.querySelector("input");
57
- input?.focus();
58
- setCarretToEnd(input);
59
- setIsHidden(!isHidden);
60
- };
61
-
62
- const getFormatedValue = (v) => {
63
- if (!v) return "";
64
-
65
- v = v.slice(0, 11).replace(/-/g, "");
66
- if (v.length <= 3) {
67
- return v;
68
- }
69
- if (v.length > 3 && v.length <= 5) {
70
- return `${v.slice(0, 3)}-${v.slice(3)}`;
71
- }
72
- if (v.length > 5) {
73
- return `${v.slice(0, 3)}-${v.slice(3, 5)}-${v.slice(5)}`;
74
- }
75
- };
76
- const getMaskedValue = (v) => {
77
- return isHidden
78
- ? v.slice(0, 7).replace(/[0-9]/g, maskChar).concat(v.slice(7))
79
- : v;
80
- };
81
-
82
- useEffect(() => {
83
- if (SSN)
84
- onChangeProp?.(
85
- SSN.concat(SSN.length === maxLen ? postfix : "").replace(/-/g, ""),
86
- );
87
- }, [SSN]);
88
-
89
- return (
90
- <div data-testid={testId} className="formatted-raw-ssn" ref={wrapperRef}>
91
- <Input
92
- {...args}
93
- value={getMaskedValue(getFormatedValue(SSN))}
94
- onChange={onChange}
95
- />
96
- {postfix && (
97
- <span
98
- className="formatted-raw-ssn-postfix"
99
- onClick={() => wrapperRef?.current?.querySelector("input")?.focus()}
100
- >
101
- {postfix}
102
- </span>
103
- )}
104
- <span className="formatted-raw-ssn-eye-holder" onClick={switchView}>
105
- {" "}
106
- {isHidden ? (
107
- <Eye strokeWidth={1} className="password-icon" />
108
- ) : (
109
- <EyeOff strokeWidth={1} className="password-icon" />
110
- )}
111
- </span>
112
- </div>
113
- );
114
- };
115
-
116
- export default FormattedRawSSN;
1
+ function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function e(e,r){return function(t){if(Array.isArray(t))return t}(e)||function(t,e){var r,n,o=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=o){var l=[],i=!0,c=!1;try{for(o=o.call(t);!(i=(r=o.next()).done)&&(l.push(r.value),!e||l.length!==e);i=!0);}catch(t){c=!0,n=t}finally{try{i||null==o.return||o.return()}finally{if(c)throw n}}return l}}(e,r)||function(e,r){if(e){if("string"==typeof e)return t(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return t(e,r)}}(e,r)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}import{jsx as r,jsxs as n}from"react/jsx-runtime";import{useEffect as o,useRef as l,useState as i}from"react";import{Eye as c,EyeOff as a}from"react-feather";import{setCarretToEnd as u}from"../../../Functions/utils";import s from"../Input/Input";import"./FormattedRawSSN.scss";export default function(t){var f,p,d,m,y,g=t.value,b=void 0===g?"":g,v=t.postfix,h=void 0===v?"":v,O=t.onChange,j=void 0===O?function(){}:O,w=t.maskChar,S=t.testId,P=t.isHiddenDefault,x=t.maxLen,k=void 0===x?9:x,C=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r,n,o={},l=Object.keys(t);for(n=0;n<l.length;n++)r=l[n],e.indexOf(r)>=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)r=l[n],!(e.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,["value","postfix","onChange","maskChar","testId","isHiddenDefault","maxLen"]),I=e(i(null!=(y=null==b?void 0:b.substring(0,k))?y:""),2),D=I[0],A=I[1],N=e(i(void 0===P||P),2),E=N[0],q=N[1],F=l(null);return o(function(){var t,e;A(null!=(e=null==b||null==(t=b.toString())?void 0:t.substring(0,k))?e:"")},[b]),o(function(){D&&(null==j||j(D.concat(D.length===k?h:"").replace(/-/g,"")))},[D]),n("div",{"data-testid":void 0===S?"formatted-raw-ssn":S,className:"formatted-raw-ssn",ref:F,children:[r(s,(d=function(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),n.forEach(function(e){var n;n=r[e],e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n})}return t}({},C),m=m={value:(p=(f=D)?(f=f.slice(0,11).replace(/-/g,"")).length<=3?f:f.length>3&&f.length<=5?"".concat(f.slice(0,3),"-").concat(f.slice(3)):f.length>5?"".concat(f.slice(0,3),"-").concat(f.slice(3,5),"-").concat(f.slice(5)):void 0:"",E?p.slice(0,7).replace(/[0-9]/g,void 0===w?"*":w).concat(p.slice(7)):p),onChange:function(t){if(!t&&""!==t)return"";if(t.replace(/-/g,"").length<D.length){var e=D.length-1;A(D.slice(0,e));return}var r=t.replace(/\D/g,""),n="";(n=E?D.length>5?D.slice(0,5)+r:D+r:r).length>k||A(n)}},Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(m)):(function(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r.push.apply(r,n)}return r})(Object(m)).forEach(function(t){Object.defineProperty(d,t,Object.getOwnPropertyDescriptor(m,t))}),d)),h&&r("span",{className:"formatted-raw-ssn-postfix",onClick:function(){var t,e;return null==F||null==(e=F.current)||null==(t=e.querySelector("input"))?void 0:t.focus()},children:h}),n("span",{className:"formatted-raw-ssn-eye-holder",onClick:function(){var t,e=null==F||null==(t=F.current)?void 0:t.querySelector("input");null==e||e.focus(),u(e),q(!E)},children:[" ",E?r(c,{strokeWidth:1,className:"password-icon"}):r(a,{strokeWidth:1,className:"password-icon"})]})]})}