intelicoreact 1.3.4 → 1.3.6

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 (250) hide show
  1. package/dist/Atomic/FormElements/ActionAlert/ActionAlert.js +15 -23
  2. package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +15 -23
  3. package/dist/Atomic/FormElements/Calendar/Calendar.js +69 -124
  4. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +27 -36
  5. package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +23 -39
  6. package/dist/Atomic/FormElements/Datepicker/Datepicker.js +110 -246
  7. package/dist/Atomic/FormElements/Datepicker/components/Calendar.js +44 -85
  8. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +249 -412
  9. package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +5 -9
  10. package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +93 -165
  11. package/dist/Atomic/FormElements/FileLoader/FileLoader.js +39 -64
  12. package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.js +51 -132
  13. package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.js +34 -73
  14. package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +54 -75
  15. package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +67 -110
  16. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +27 -71
  17. package/dist/Atomic/FormElements/Input/Input.js +161 -253
  18. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +48 -102
  19. package/dist/Atomic/FormElements/InputColor/InputColor.js +27 -40
  20. package/dist/Atomic/FormElements/InputCurrency/InputCurrency.js +21 -44
  21. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +95 -151
  22. package/dist/Atomic/FormElements/InputDateRange/components/DateInput.js +32 -57
  23. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +184 -302
  24. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +81 -150
  25. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +11 -16
  26. package/dist/Atomic/FormElements/InputDateRange/dependencies.js +76 -193
  27. package/dist/Atomic/FormElements/InputLink/InputLink.js +34 -58
  28. package/dist/Atomic/FormElements/InputMask/InputCarretPosition.js +8 -12
  29. package/dist/Atomic/FormElements/InputMask/InputMask.js +554 -964
  30. package/dist/Atomic/FormElements/InputMask/config.js +1 -1
  31. package/dist/Atomic/FormElements/InputMask/functions.js +17 -43
  32. package/dist/Atomic/FormElements/InputMask2/InputMask2.js +268 -404
  33. package/dist/Atomic/FormElements/InputMask2/config.js +1 -1
  34. package/dist/Atomic/FormElements/InputMask2/functions.js +17 -43
  35. package/dist/Atomic/FormElements/InputMask3/InputMask3.js +299 -459
  36. package/dist/Atomic/FormElements/InputMask3/config.js +1 -1
  37. package/dist/Atomic/FormElements/InputMask3/functions.js +17 -43
  38. package/dist/Atomic/FormElements/InputWithAction/InputWithAction.js +53 -113
  39. package/dist/Atomic/FormElements/InputsRow/InputsRow.js +64 -118
  40. package/dist/Atomic/FormElements/Label/Label.js +13 -23
  41. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +217 -349
  42. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +25 -47
  43. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +133 -207
  44. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +29 -61
  45. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +20 -42
  46. package/dist/Atomic/FormElements/RadioInput/RadioInput.js +22 -33
  47. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +20 -43
  48. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +54 -101
  49. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +59 -102
  50. package/dist/Atomic/FormElements/RangeList/RangeList.js +89 -150
  51. package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +23 -29
  52. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +135 -300
  53. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +381 -571
  54. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +14 -24
  55. package/dist/Atomic/FormElements/Switcher/Switcher.js +24 -29
  56. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +25 -47
  57. package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.js +20 -32
  58. package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +32 -55
  59. package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.js +22 -42
  60. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +23 -33
  61. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +51 -120
  62. package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.js +2 -3
  63. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +23 -46
  64. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +254 -407
  65. package/dist/Atomic/FormElements/Text/Text.js +47 -53
  66. package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.js +21 -31
  67. package/dist/Atomic/FormElements/Textarea/Textarea.js +16 -27
  68. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +68 -128
  69. package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +25 -36
  70. package/dist/Atomic/FormElements/TimeRange/TimeRange.js +33 -70
  71. package/dist/Atomic/FormElements/UserContacts/UserContacts.js +58 -124
  72. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +48 -80
  73. package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +32 -42
  74. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +40 -60
  75. package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.js +2 -3
  76. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +50 -69
  77. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.js +3 -3
  78. package/dist/Atomic/Layout/Header/Header.js +21 -48
  79. package/dist/Atomic/Layout/MainMenu/MainMenu.js +36 -79
  80. package/dist/Atomic/Layout/Spinner/Spinner.js +8 -14
  81. package/dist/Atomic/UI/Accordion/Accordion.js +18 -48
  82. package/dist/Atomic/UI/Accordion/AccordionItem.js +35 -60
  83. package/dist/Atomic/UI/AccordionTable/AccordionTable.js +49 -106
  84. package/dist/Atomic/UI/AccordionText/AccordionText.js +13 -37
  85. package/dist/Atomic/UI/AdvancedTag/AdvTag.js +48 -94
  86. package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +22 -50
  87. package/dist/Atomic/UI/Alert/Alert.js +20 -44
  88. package/dist/Atomic/UI/Arrow/Arrow.js +15 -35
  89. package/dist/Atomic/UI/Box/Box.js +14 -21
  90. package/dist/Atomic/UI/Button/Button.js +25 -33
  91. package/dist/Atomic/UI/ButtonsBar/ButtonsBar.js +22 -31
  92. package/dist/Atomic/UI/Chart/Chart.js +45 -86
  93. package/dist/Atomic/UI/Chart/partial/Chart.constants.js +14 -24
  94. package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +13 -22
  95. package/dist/Atomic/UI/Chart/partial/datasetSetters.js +68 -113
  96. package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +158 -140
  97. package/dist/Atomic/UI/Chart/partial/optionsSetters.js +26 -42
  98. package/dist/Atomic/UI/Chart/partial/utils.js +20 -48
  99. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +22 -42
  100. package/dist/Atomic/UI/DateTime/DateTime.js +23 -38
  101. package/dist/Atomic/UI/DebugContainer/DebugContainer.js +12 -36
  102. package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +5 -21
  103. package/dist/Atomic/UI/DoubleString/DoubleString.js +27 -50
  104. package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +15 -63
  105. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +62 -157
  106. package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +47 -110
  107. package/dist/Atomic/UI/Hint/Hint.js +49 -94
  108. package/dist/Atomic/UI/Modal/Modal.js +149 -179
  109. package/dist/Atomic/UI/Modal/ModalHOC.js +12 -21
  110. package/dist/Atomic/UI/Modal/partials/ModalFooter.js +7 -12
  111. package/dist/Atomic/UI/Modal/partials/ModalTitle.js +17 -21
  112. package/dist/Atomic/UI/Modal/partials/useMobileModal.js +93 -151
  113. package/dist/Atomic/UI/ModalBackup/Modal.js +65 -90
  114. package/dist/Atomic/UI/ModalBackup/ModalHOC.js +12 -21
  115. package/dist/Atomic/UI/ModalBackup/partials/ModalFooter.js +6 -11
  116. package/dist/Atomic/UI/ModalBackup/partials/ModalTitle.js +15 -19
  117. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +32 -62
  118. package/dist/Atomic/UI/NavLine/NavLine.js +120 -211
  119. package/dist/Atomic/UI/NavLine/Tabs.js +2 -3
  120. package/dist/Atomic/UI/PageTitle/PageTitle.js +13 -17
  121. package/dist/Atomic/UI/PieChart/PieChart.js +11 -21
  122. package/dist/Atomic/UI/Price/Price.js +10 -13
  123. package/dist/Atomic/UI/PriceRange/PriceRange.js +7 -11
  124. package/dist/Atomic/UI/ProgressLine/ProgressLine.js +27 -56
  125. package/dist/Atomic/UI/Status/Status.js +19 -30
  126. package/dist/Atomic/UI/Table/Partials/TdCell.js +28 -71
  127. package/dist/Atomic/UI/Table/Partials/TdHeader.js +7 -16
  128. package/dist/Atomic/UI/Table/Partials/TdRow.js +29 -65
  129. package/dist/Atomic/UI/Table/Partials/TdTitle.js +16 -40
  130. package/dist/Atomic/UI/Table/Table.js +27 -47
  131. package/dist/Atomic/UI/Table/TdTypes/TdActions.js +18 -48
  132. package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +9 -19
  133. package/dist/Atomic/UI/Table/TdTypes/TdRange.js +5 -8
  134. package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +25 -47
  135. package/dist/Atomic/UI/Tag/Tag.js +20 -48
  136. package/dist/Atomic/UI/TagList/TagList.js +80 -150
  137. package/dist/Atomic/UI/UserBox/UserBox.js +14 -26
  138. package/dist/Classes/AbortableFetch.js +283 -422
  139. package/dist/Classes/AnimatedHandler.js +44 -56
  140. package/dist/Classes/RESTAPI/index.js +154 -433
  141. package/dist/Classes/RESTAPI/partials/AbortableFetch.js +290 -428
  142. package/dist/Classes/RESTAPI/partials/ApiBase.js +24 -67
  143. package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +57 -275
  144. package/dist/Classes/RESTAPI/partials/ApiUtils.js +146 -377
  145. package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +155 -403
  146. package/dist/Classes/RESTAPI/partials/Utils.js +81 -135
  147. package/dist/Classes/RESTAPI/partials/_outerDependencies.js +2 -6
  148. package/dist/Classes/RESTAPI/partials/_utils.js +101 -395
  149. package/dist/Constants/index.constants.js +8 -15
  150. package/dist/Functions/Portal.js +14 -33
  151. package/dist/Functions/customEventListener.js +5 -20
  152. package/dist/Functions/fieldValueFormatters.js +148 -211
  153. package/dist/Functions/hooks/useFormFieldsChangesManager.js +75 -137
  154. package/dist/Functions/locale/createTranslator.js +13 -27
  155. package/dist/Functions/operations.js +35 -49
  156. package/dist/Functions/presets/inputMaskPresets.js +25 -27
  157. package/dist/Functions/presets/inputPresets.js +19 -22
  158. package/dist/Functions/presets/mobileKeyboardTypesPresets.js +7 -9
  159. package/dist/Functions/schemas.js +6 -15
  160. package/dist/Functions/useClickOutside.js +3 -7
  161. package/dist/Functions/useDebounce.js +11 -25
  162. package/dist/Functions/useFieldFocus.js +42 -67
  163. package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +35 -54
  164. package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +74 -95
  165. package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +55 -91
  166. package/dist/Functions/useFormTools/functions/General.js +80 -99
  167. package/dist/Functions/useFormTools/functions/RenderFields.js +45 -72
  168. package/dist/Functions/useFormTools/functions/usePrevious.js +3 -7
  169. package/dist/Functions/useFormTools/index.js +382 -598
  170. package/dist/Functions/useInputHighlightError.js +27 -52
  171. package/dist/Functions/useIsMobile.js +13 -36
  172. package/dist/Functions/useLocalStorage.js +7 -22
  173. package/dist/Functions/useLocationParams.js +16 -27
  174. package/dist/Functions/useMetaInfo.js +19 -50
  175. package/dist/Functions/useMouseUpOutside.js +2 -5
  176. package/dist/Functions/useOnlineStatus.js +7 -26
  177. package/dist/Functions/usePasswordChecker.js +42 -77
  178. package/dist/Functions/usePrevious.js +3 -7
  179. package/dist/Functions/useResize.js +12 -32
  180. package/dist/Functions/useScrollTo.js +6 -20
  181. package/dist/Functions/useToggle.js +10 -30
  182. package/dist/Functions/utils.js +186 -366
  183. package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +21 -32
  184. package/dist/Molecular/CustomIcons/components/AlertCircle.js +21 -32
  185. package/dist/Molecular/CustomIcons/components/AppStore.js +25 -36
  186. package/dist/Molecular/CustomIcons/components/Arrow.js +31 -42
  187. package/dist/Molecular/CustomIcons/components/ArrowDown.js +13 -24
  188. package/dist/Molecular/CustomIcons/components/ArrowLeft.js +16 -27
  189. package/dist/Molecular/CustomIcons/components/ArrowRight.js +16 -27
  190. package/dist/Molecular/CustomIcons/components/ArrowUp.js +13 -24
  191. package/dist/Molecular/CustomIcons/components/Bell.js +11 -22
  192. package/dist/Molecular/CustomIcons/components/Button.js +11 -22
  193. package/dist/Molecular/CustomIcons/components/Campaigns.js +12 -23
  194. package/dist/Molecular/CustomIcons/components/Check.js +12 -23
  195. package/dist/Molecular/CustomIcons/components/Check2.js +11 -22
  196. package/dist/Molecular/CustomIcons/components/ChevronDown.js +11 -22
  197. package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +11 -22
  198. package/dist/Molecular/CustomIcons/components/ChevronLeft.js +11 -22
  199. package/dist/Molecular/CustomIcons/components/ChevronRight.js +11 -22
  200. package/dist/Molecular/CustomIcons/components/ChevronUp.js +11 -22
  201. package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +26 -37
  202. package/dist/Molecular/CustomIcons/components/Close.js +13 -24
  203. package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +38 -49
  204. package/dist/Molecular/CustomIcons/components/Delete.js +12 -23
  205. package/dist/Molecular/CustomIcons/components/Edit.js +11 -22
  206. package/dist/Molecular/CustomIcons/components/Email.js +29 -40
  207. package/dist/Molecular/CustomIcons/components/FinturfLogo.js +19 -30
  208. package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +27 -38
  209. package/dist/Molecular/CustomIcons/components/Flows.js +11 -22
  210. package/dist/Molecular/CustomIcons/components/Gift.js +16 -27
  211. package/dist/Molecular/CustomIcons/components/GoogleAuth.js +25 -36
  212. package/dist/Molecular/CustomIcons/components/GooglePlay.js +25 -36
  213. package/dist/Molecular/CustomIcons/components/HelpCircle.js +14 -25
  214. package/dist/Molecular/CustomIcons/components/HelpCircle2.js +15 -26
  215. package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +14 -25
  216. package/dist/Molecular/CustomIcons/components/Home.js +14 -25
  217. package/dist/Molecular/CustomIcons/components/Home2.js +17 -28
  218. package/dist/Molecular/CustomIcons/components/Key.js +19 -30
  219. package/dist/Molecular/CustomIcons/components/Landers.js +15 -26
  220. package/dist/Molecular/CustomIcons/components/Lock.js +11 -22
  221. package/dist/Molecular/CustomIcons/components/Mail.js +19 -30
  222. package/dist/Molecular/CustomIcons/components/Mastercard.js +61 -72
  223. package/dist/Molecular/CustomIcons/components/Minus.js +24 -35
  224. package/dist/Molecular/CustomIcons/components/Offers.js +12 -23
  225. package/dist/Molecular/CustomIcons/components/Pause.js +24 -35
  226. package/dist/Molecular/CustomIcons/components/PayPal.js +38 -49
  227. package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +25 -36
  228. package/dist/Molecular/CustomIcons/components/Phone.js +26 -37
  229. package/dist/Molecular/CustomIcons/components/Play.js +24 -35
  230. package/dist/Molecular/CustomIcons/components/Plus.js +24 -35
  231. package/dist/Molecular/CustomIcons/components/Profile.js +16 -27
  232. package/dist/Molecular/CustomIcons/components/QRCode.js +26 -37
  233. package/dist/Molecular/CustomIcons/components/Rectangle.js +11 -22
  234. package/dist/Molecular/CustomIcons/components/Revert.js +14 -25
  235. package/dist/Molecular/CustomIcons/components/Star.js +10 -21
  236. package/dist/Molecular/CustomIcons/components/Star2.js +12 -23
  237. package/dist/Molecular/CustomIcons/components/TrafficSources.js +14 -25
  238. package/dist/Molecular/CustomIcons/components/Trash.js +11 -22
  239. package/dist/Molecular/CustomIcons/components/TrashRed.js +11 -22
  240. package/dist/Molecular/CustomIcons/components/Triggers.js +11 -22
  241. package/dist/Molecular/CustomIcons/components/User.js +16 -27
  242. package/dist/Molecular/CustomIcons/components/Visa.js +27 -38
  243. package/dist/Molecular/CustomIcons/components/X.js +11 -22
  244. package/dist/Molecular/CustomIcons/index.js +61 -183
  245. package/dist/Molecular/FormElement/FormElement.js +18 -27
  246. package/dist/Molecular/InputAddress/InputAddress.js +257 -300
  247. package/dist/Molecular/InputPassword/InputPassword.js +15 -39
  248. package/dist/index.js +1 -3
  249. package/package.json +1 -1
  250. package/dist/Atomic/FormElements/UserContacts/partial/defaultIcons.js +0 -91
@@ -1,225 +1,179 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
4
  Object.defineProperty(exports, "__esModule", {
8
5
  value: true
9
6
  });
10
7
  exports.default = void 0;
11
-
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
-
16
8
  var _react = _interopRequireWildcard(require("react"));
17
-
18
9
  var _reactFeather = require("react-feather");
19
-
20
10
  var _classnames = _interopRequireDefault(require("classnames"));
21
-
22
- var _useIsMobile2 = _interopRequireDefault(require("../../Functions/useIsMobile"));
23
-
11
+ var _utils = require("../../Functions/utils");
12
+ var _useIsMobile = _interopRequireDefault(require("../../Functions/useIsMobile"));
24
13
  var _Input = _interopRequireDefault(require("../../Atomic/FormElements/Input/Input"));
25
-
26
14
  var _Hint = _interopRequireDefault(require("../../Atomic/UI/Hint/Hint"));
27
-
15
+ var _Spinner = _interopRequireDefault(require("../../Atomic/Layout/Spinner/Spinner"));
28
16
  require("./InputAddress.scss");
17
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
18
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
19
+ const DEFAULT_HINT_MESSAGE = 'Select the correct address from the list of suggestions (must contains house number and street name)';
20
+ const RC = "input-address";
21
+
22
+ // ? Если равны - true
23
+ const compareValues = (val1, val2) => {
24
+ return typeof val1 === typeof val2 && ((0, _utils.getIsOnlyAnObject)(val1) ? (0, _utils.compare)(val1, val2) : val1 === val2);
25
+ };
26
+ const throttle = (fn, ms) => {
27
+ let id = null;
28
+ return function () {
29
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
30
+ args[_key] = arguments[_key];
31
+ }
32
+ if (id) clearTimeout(id);
33
+ id = setTimeout(() => {
34
+ fn(...args);
35
+ }, ms);
36
+ };
37
+ };
29
38
 
30
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
-
32
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
-
34
- var throttleTimeout = null;
35
- var DEFAULT_HINT_MESSAGE = 'Select the correct address from the list of suggestions (must contains house number and street name)';
36
- var RC = "input-address";
37
-
38
- var InputAddress = function InputAddress(_ref) {
39
- var label = _ref.label,
40
- _ref$className = _ref.className,
41
- className = _ref$className === void 0 ? '' : _ref$className,
42
- _ref$isClearable = _ref.isClearable,
43
- isClearable = _ref$isClearable === void 0 ? true : _ref$isClearable,
44
- _ref$isKeyboardContro = _ref.isKeyboardControlled,
45
- isKeyboardControlled = _ref$isKeyboardContro === void 0 ? true : _ref$isKeyboardContro,
46
- _ref$fieldKey = _ref.fieldKey,
47
- fieldKey = _ref$fieldKey === void 0 ? '' : _ref$fieldKey,
48
- _ref$testId = _ref.testId,
49
- testId = _ref$testId === void 0 ? '' : _ref$testId,
50
- _ref$throttle = _ref.throttle,
51
- throttle = _ref$throttle === void 0 ? 300 : _ref$throttle,
52
- _ref$loader = _ref.loader,
53
- loader = _ref$loader === void 0 ? '' : _ref$loader,
54
- _ref$noItemsMessage = _ref.noItemsMessage,
55
- noItemsMessage = _ref$noItemsMessage === void 0 ? '' : _ref$noItemsMessage,
56
- error = _ref.error,
57
- _ref$value = _ref.value,
58
- value = _ref$value === void 0 ? '' : _ref$value,
59
- _ref$onChange = _ref.onChange,
60
- onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,
61
- onChangeValueTransformer = _ref.onChangeValueTransformer,
62
- _ref$getListItems = _ref.getListItems,
63
- getListItems = _ref$getListItems === void 0 ? function () {} : _ref$getListItems,
64
- _ref$noValidate = _ref.noValidate,
65
- noValidate = _ref$noValidate === void 0 ? false : _ref$noValidate,
66
- renderSelectedItem = _ref.renderSelectedItem,
67
- renderListItem = _ref.renderListItem,
68
- renderHintMessage = _ref.renderHintMessage,
69
- attributesOfNativeInput = _ref.attributesOfNativeInput;
70
-
71
- var _useIsMobile = (0, _useIsMobile2.default)(),
72
- isMobile = _useIsMobile.isMobile;
73
-
74
- var inputRef = (0, _react.useRef)(null);
75
- var listRef = (0, _react.useRef)(null);
76
- var listOverlayRef = (0, _react.useRef)(null);
77
- var listWrapperRef = (0, _react.useRef)(null);
78
- var listHeaderRef = (0, _react.useRef)(null);
79
-
80
- var _useState = (0, _react.useState)(false),
81
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
82
- isValueInited = _useState2[0],
83
- setIsValueInited = _useState2[1];
84
-
85
- var _useState3 = (0, _react.useState)(null),
86
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
87
- isScrollableList = _useState4[0],
88
- setIsScrollableList = _useState4[1];
89
-
90
- var _useState5 = (0, _react.useState)(0),
91
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
92
- scrollTop = _useState6[0],
93
- setScrollTop = _useState6[1];
94
-
95
- var _useState7 = (0, _react.useState)(1),
96
- _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
97
- scrollHeight = _useState8[0],
98
- setScrollHeight = _useState8[1];
99
-
100
- var _useState9 = (0, _react.useState)(null),
101
- _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
102
- query = _useState10[0],
103
- setQuery = _useState10[1];
104
-
105
- var _useState11 = (0, _react.useState)(null),
106
- _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
107
- tempQuery = _useState12[0],
108
- setTempQuery = _useState12[1];
109
-
110
- var _useState13 = (0, _react.useState)(null),
111
- _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
112
- tempValue = _useState14[0],
113
- setTempValue = _useState14[1];
114
-
115
- var _useState15 = (0, _react.useState)([]),
116
- _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
117
- listItems = _useState16[0],
118
- setListItems = _useState16[1];
119
-
120
- var _useState17 = (0, _react.useState)(false),
121
- _useState18 = (0, _slicedToArray2.default)(_useState17, 2),
122
- isLoading = _useState18[0],
123
- setIsLoading = _useState18[1];
124
-
125
- var _useState19 = (0, _react.useState)(null),
126
- _useState20 = (0, _slicedToArray2.default)(_useState19, 2),
127
- hightlightedIndex = _useState20[0],
128
- setHightlightedIndex = _useState20[1];
129
-
130
- var _useState21 = (0, _react.useState)(false),
131
- _useState22 = (0, _slicedToArray2.default)(_useState21, 2),
132
- isFocused = _useState22[0],
133
- setIsFocused = _useState22[1];
134
-
135
- var _useState23 = (0, _react.useState)(false),
136
- _useState24 = (0, _slicedToArray2.default)(_useState23, 2),
137
- isListVisible = _useState24[0],
138
- setIsListVisible = _useState24[1];
139
-
140
- var isWrongAddress = (0, _react.useMemo)(function () {
141
- var _query$street;
142
-
39
+ // Отдает true если value валидное НЕ нулевое число
40
+ const getIsValidNumber = value => !!value && typeof value === 'number' && !Number.isNaN(value);
41
+ const InputAddress = _ref => {
42
+ let {
43
+ label,
44
+ className = '',
45
+ isClearable = true,
46
+ isKeyboardControlled = true,
47
+ fieldKey = '',
48
+ testId = '',
49
+ throttle: throttleTime = 500,
50
+ // ms
51
+ additionalThrottleTimeForListingRequest = 0,
52
+ // ms
53
+ loader = '',
54
+ noItemsMessage = '',
55
+ error,
56
+ value = '',
57
+ onChange = () => {},
58
+ onChangeValueTransformer,
59
+ disabled,
60
+ getListItems = () => {},
61
+ clarifyAddressInfo,
62
+ // ! Не делать дефолтного значения! Это и метод и флаг
63
+
64
+ noValidate = false,
65
+ renderSelectedItem,
66
+ renderListItem,
67
+ renderHintMessage,
68
+ attributesOfNativeInput
69
+ } = _ref;
70
+ const {
71
+ isMobile
72
+ } = (0, _useIsMobile.default)();
73
+ const inputRef = (0, _react.useRef)(null);
74
+ const listRef = (0, _react.useRef)(null);
75
+ const listOverlayRef = (0, _react.useRef)(null);
76
+ const listWrapperRef = (0, _react.useRef)(null);
77
+ const listHeaderRef = (0, _react.useRef)(null);
78
+ const previousValueRef = (0, _react.useRef)(value);
79
+ const [isValueInited, setIsValueInited] = (0, _react.useState)(false);
80
+ const [isScrollableList, setIsScrollableList] = (0, _react.useState)(null);
81
+ const [scrollTop, setScrollTop] = (0, _react.useState)(0);
82
+ const [scrollHeight, setScrollHeight] = (0, _react.useState)(1);
83
+ const [innerValue, setInnerValue] = (0, _react.useState)(value);
84
+ const [tempInnerValue, setTempInnerValue] = (0, _react.useState)(null);
85
+ const [tempValue, setTempValue] = (0, _react.useState)(null);
86
+ const [listItems, setListItems] = (0, _react.useState)([]);
87
+ const [isLoading, setIsLoading] = (0, _react.useState)(false);
88
+ const [isListLoading, setIsListLoading] = (0, _react.useState)(false);
89
+ const [hightlightedIndex, setHightlightedIndex] = (0, _react.useState)(null);
90
+ const [isFocused, setIsFocused] = (0, _react.useState)(false);
91
+ const [isListVisible, setIsListVisible] = (0, _react.useState)(false);
92
+ const isWrongAddress = (0, _react.useMemo)(() => {
93
+ var _innerValue$street;
143
94
  if (noValidate) return false;
144
- if (query === '') return false; // eslint-disable-next-line no-prototype-builtins
95
+ if (innerValue === '') return false;
96
+ // eslint-disable-next-line no-prototype-builtins
97
+ if (!(innerValue !== null && innerValue !== void 0 && innerValue.hasOwnProperty('streetNumber')) || !(innerValue !== null && innerValue !== void 0 && innerValue.streetNumber)) return true;
145
98
 
146
- if (!(query !== null && query !== void 0 && query.hasOwnProperty('streetNumber')) || !(query !== null && query !== void 0 && query.streetNumber)) return true; // eslint-disable-next-line no-prototype-builtins
147
-
148
- if (!(query !== null && query !== void 0 && query.hasOwnProperty('street')) || !(query !== null && query !== void 0 && (_query$street = query.street) !== null && _query$street !== void 0 && _query$street.fullName)) return true;
99
+ // eslint-disable-next-line no-prototype-builtins
100
+ if (!(innerValue !== null && innerValue !== void 0 && innerValue.hasOwnProperty('street')) || !(innerValue !== null && innerValue !== void 0 && (_innerValue$street = innerValue.street) !== null && _innerValue$street !== void 0 && _innerValue$street.fullName)) return true;
149
101
  return false;
150
- }, [query]);
151
-
152
- var setQueryAsItem = function setQueryAsItem(e, item) {
153
- if (e) e === null || e === void 0 ? void 0 : e.stopPropagation();
154
- setTimeout(function () {
155
- setQuery(item);
156
-
102
+ }, [innerValue]);
103
+ const setItemAsInnerValue = (e, item) => {
104
+ if (e instanceof Event) {
105
+ e.preventDefault();
106
+ e.stopPropagation();
107
+ }
108
+ setTimeout(() => {
109
+ setInnerValue(item);
157
110
  if (isMobile) {
158
111
  setIsListVisible(false);
159
112
  }
160
- }, 1);
113
+ }, 0);
161
114
  };
162
115
 
163
- var getData = function getData() {
164
- if (!(query !== null && query !== void 0 && query.length)) return null;
165
- clearTimeout(throttleTimeout);
166
- throttleTimeout = setTimeout(function () {
167
- var _getListItems;
168
-
169
- setIsLoading(true);
170
- (_getListItems = getListItems(query)) === null || _getListItems === void 0 ? void 0 : _getListItems.then(setListItems).finally(function () {
171
- return setIsLoading(false);
172
- });
173
- }, throttle);
116
+ // ? Базовый метод получения списка вариантов адреса
117
+ const getAddressVariants = (0, _react.useMemo)(() => innerValue => {
118
+ var _getListItems;
119
+ return (_getListItems = getListItems(innerValue)) === null || _getListItems === void 0 ? void 0 : _getListItems.then(setListItems).finally(() => setIsListLoading(false));
120
+ }, [getListItems]);
121
+
122
+ // ? Метод получения списка вариантов адреса с тротлингом (основным и, если нужно, дополнительным)
123
+ // ? Без useMemo работать НЕ будет (т.к. на каждом перерендере будет создаваться новая ф-я и будет теряться замкнутая переменная id из throttle)
124
+ const getAddressVariantsWithThrottling = (0, _react.useMemo)(() => {
125
+ const execute = getIsValidNumber(additionalThrottleTimeForListingRequest) ? throttle(getAddressVariants, additionalThrottleTimeForListingRequest) : getAddressVariants;
126
+ return getIsValidNumber(throttleTime) ? throttle(execute, throttleTime) : execute;
127
+ }, [getAddressVariants, additionalThrottleTimeForListingRequest, throttleTime]);
128
+
129
+ // ? Итоговый "получатель" списка вариантов адресов
130
+ const getAddressVariantsList = () => {
131
+ if (!(innerValue !== null && innerValue !== void 0 && innerValue.length)) return null;
132
+
133
+ // ? Вообще с учетом надпись "Loading" в списке вариантов включается в этом месте (т.е. сразу при начале набора),
134
+ // ? то, наверное, можно было НЕ мутить с дополнительным тротлингом )).
135
+ // ? Наверное, можно было увеличить время первичного тротлинга и, наверное, работало бы так же ))
136
+ // ? НО, раз уже сделал )) оставлю, может будет в будущем полезно )
137
+ setIsListLoading(true);
138
+ getAddressVariantsWithThrottling(innerValue);
174
139
  };
175
-
176
- var onClearClick = function onClearClick(e) {
140
+ const onClearClick = e => {
177
141
  var _inputRef$current;
178
-
179
142
  e.preventDefault();
180
143
  e.stopPropagation();
181
-
182
144
  if (!isMobile) {
183
145
  setIsListVisible(false);
184
146
  }
185
-
186
- setQuery('');
187
- inputRef === null || inputRef === void 0 ? void 0 : (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
188
- setTimeout(function () {
189
- return setIsFocused(true);
190
- }, 50);
147
+ setInnerValue('');
148
+ inputRef === null || inputRef === void 0 || (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus();
149
+ setTimeout(() => setIsFocused(true), 0);
191
150
  };
192
-
193
- var onOverlayClick = function onOverlayClick(e) {
151
+ const onOverlayClick = e => {
194
152
  if (e.target === (listOverlayRef === null || listOverlayRef === void 0 ? void 0 : listOverlayRef.current)) {
195
153
  e.stopPropagation();
196
154
  e.preventDefault();
197
155
  setIsListVisible(false);
198
- setQuery(tempQuery);
199
- onChange(typeof query === 'string' || !onChangeValueTransformer || typeof onChangeValueTransformer !== 'function' ? query : onChangeValueTransformer(query));
156
+ setInnerValue(tempInnerValue);
157
+ onChange(typeof innerValue === 'string' || !onChangeValueTransformer || typeof onChangeValueTransformer !== 'function' ? innerValue : onChangeValueTransformer(innerValue));
200
158
  }
201
159
  };
202
-
203
- var onKeyDown = function onKeyDown(keyCode) {
160
+ const onKeyDown = keyCode => {
204
161
  if (!isListVisible || !isKeyboardControlled) return false;
205
-
206
162
  if (keyCode === 13) {
207
163
  var _inputRef$current2;
208
-
209
164
  // Enter Controller
210
- setQueryAsItem(null, listItems[hightlightedIndex]);
165
+ setItemAsInnerValue(null, listItems[hightlightedIndex]);
211
166
  setHightlightedIndex(null);
212
- inputRef === null || inputRef === void 0 ? void 0 : (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.blur();
167
+ inputRef === null || inputRef === void 0 || (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.blur();
213
168
  } else {
214
- var _listRef$current, _listRef$current$getB, _listRef$current2, _newHightlightedEleme;
169
+ var _listRef$current, _listRef$current2, _newHightlightedEleme;
170
+ let newHightlightedIndex = null;
171
+ const listItemsElements = document.getElementsByClassName('input-address__list--item');
172
+ const listHeight = listRef === null || listRef === void 0 || (_listRef$current = listRef.current) === null || _listRef$current === void 0 || (_listRef$current = _listRef$current.getBoundingClientRect()) === null || _listRef$current === void 0 ? void 0 : _listRef$current.height;
173
+ const listScrollTop = (listRef === null || listRef === void 0 || (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 ? void 0 : _listRef$current2.scrollTop) || 0;
174
+ const lastItemIndex = parseInt(listItems === null || listItems === void 0 ? void 0 : listItems.length) - 1;
215
175
 
216
- var newHightlightedIndex = null;
217
- var listItemsElements = document.getElementsByClassName('input-address__list--item');
218
- var listHeight = listRef === null || listRef === void 0 ? void 0 : (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : (_listRef$current$getB = _listRef$current.getBoundingClientRect()) === null || _listRef$current$getB === void 0 ? void 0 : _listRef$current$getB.height;
219
- var listScrollTop = (listRef === null || listRef === void 0 ? void 0 : (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 ? void 0 : _listRef$current2.scrollTop) || 0;
220
- var lastItemIndex = parseInt(listItems === null || listItems === void 0 ? void 0 : listItems.length) - 1;
221
176
  /** Arrows Controllers **/
222
-
223
177
  if (keyCode === 40) {
224
178
  // Down Key Controller
225
179
  if (hightlightedIndex === null || hightlightedIndex === lastItemIndex) {
@@ -234,139 +188,160 @@ var InputAddress = function InputAddress(_ref) {
234
188
  } else if (hightlightedIndex - 1 >= 0) {
235
189
  newHightlightedIndex = hightlightedIndex - 1;
236
190
  }
237
- } // Scroll to Element
238
-
239
-
240
- var newHightlightedElement = listItemsElements[newHightlightedIndex];
241
- var newHightlightedElementHeight = newHightlightedElement === null || newHightlightedElement === void 0 ? void 0 : (_newHightlightedEleme = newHightlightedElement.getBoundingClientRect()) === null || _newHightlightedEleme === void 0 ? void 0 : _newHightlightedEleme.height;
242
- var newHightlightedElementTopInList = newHightlightedElement === null || newHightlightedElement === void 0 ? void 0 : newHightlightedElement.offsetTop;
191
+ }
243
192
 
193
+ // Scroll to Element
194
+ const newHightlightedElement = listItemsElements[newHightlightedIndex];
195
+ const newHightlightedElementHeight = newHightlightedElement === null || newHightlightedElement === void 0 || (_newHightlightedEleme = newHightlightedElement.getBoundingClientRect()) === null || _newHightlightedEleme === void 0 ? void 0 : _newHightlightedEleme.height;
196
+ const newHightlightedElementTopInList = newHightlightedElement === null || newHightlightedElement === void 0 ? void 0 : newHightlightedElement.offsetTop;
244
197
  if (newHightlightedElementTopInList + newHightlightedElementHeight > listScrollTop + listHeight) {
245
198
  if (Math.abs(newHightlightedElementTopInList + newHightlightedElementHeight - (listScrollTop + listHeight)) <= newHightlightedElementHeight) {
246
199
  var _listRef$current3;
247
-
248
- listRef === null || listRef === void 0 ? void 0 : (_listRef$current3 = listRef.current) === null || _listRef$current3 === void 0 ? void 0 : _listRef$current3.scrollTo(0, listScrollTop + newHightlightedElementHeight);
200
+ listRef === null || listRef === void 0 || (_listRef$current3 = listRef.current) === null || _listRef$current3 === void 0 || _listRef$current3.scrollTo(0, listScrollTop + newHightlightedElementHeight);
249
201
  } else {
250
202
  var _listRef$current4;
251
-
252
- listRef === null || listRef === void 0 ? void 0 : (_listRef$current4 = listRef.current) === null || _listRef$current4 === void 0 ? void 0 : _listRef$current4.scrollTo(0, newHightlightedElementTopInList);
203
+ listRef === null || listRef === void 0 || (_listRef$current4 = listRef.current) === null || _listRef$current4 === void 0 || _listRef$current4.scrollTo(0, newHightlightedElementTopInList);
253
204
  }
254
205
  } else if (newHightlightedElementTopInList < listScrollTop) {
255
206
  if (Math.abs(newHightlightedElementTopInList - listScrollTop) < newHightlightedElementHeight) {
256
207
  var _listRef$current5;
257
-
258
- listRef === null || listRef === void 0 ? void 0 : (_listRef$current5 = listRef.current) === null || _listRef$current5 === void 0 ? void 0 : _listRef$current5.scrollTo(0, listScrollTop - newHightlightedElementHeight);
208
+ listRef === null || listRef === void 0 || (_listRef$current5 = listRef.current) === null || _listRef$current5 === void 0 || _listRef$current5.scrollTo(0, listScrollTop - newHightlightedElementHeight);
259
209
  } else {
260
210
  var _listRef$current6;
261
-
262
- listRef === null || listRef === void 0 ? void 0 : (_listRef$current6 = listRef.current) === null || _listRef$current6 === void 0 ? void 0 : _listRef$current6.scrollTo(0, newHightlightedElementTopInList);
211
+ listRef === null || listRef === void 0 || (_listRef$current6 = listRef.current) === null || _listRef$current6 === void 0 || _listRef$current6.scrollTo(0, newHightlightedElementTopInList);
263
212
  }
264
213
  }
265
-
266
214
  if (!isMobile) setHightlightedIndex(newHightlightedIndex);
267
215
  }
268
216
  };
269
-
270
- var onChangeInternal = function onChangeInternal(value) {
271
- setQuery(value);
272
- };
273
-
274
- var getHintMessage = function getHintMessage() {
217
+ const getHintMessage = () => {
275
218
  if (!renderHintMessage || typeof renderHintMessage !== 'function') return DEFAULT_HINT_MESSAGE;
276
- return renderHintMessage(query);
219
+ return renderHintMessage(innerValue);
277
220
  };
278
-
279
- var getSelectedItemLabel = function getSelectedItemLabel() {
221
+ const getSelectedItemLabel = function () {
280
222
  var _value$street;
281
-
282
- var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : query;
283
- if (value === null) return '';
223
+ let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : innerValue;
224
+ if (!value) return '';
284
225
  if (typeof value === 'string') return value;
285
- if (!renderSelectedItem || typeof renderSelectedItem !== 'function') return "".concat((value === null || value === void 0 ? void 0 : value.streetNumber) || '', " ").concat((value === null || value === void 0 ? void 0 : (_value$street = value.street) === null || _value$street === void 0 ? void 0 : _value$street.fullName) || '');
286
- return renderSelectedItem(value);
226
+ if (typeof renderSelectedItem === 'function') renderSelectedItem(value);
227
+ const label = "".concat((value === null || value === void 0 ? void 0 : value.streetNumber) || '', " ").concat((value === null || value === void 0 || (_value$street = value.street) === null || _value$street === void 0 ? void 0 : _value$street.fullName) || '').trim();
228
+ return !label && isLoading ? previousValueRef.current : label;
287
229
  };
288
-
289
- var getListItemLabel = function getListItemLabel(item) {
230
+ const getListItemLabel = item => {
290
231
  if (typeof item === 'string') return item;
291
232
  if (!renderListItem || typeof renderListItem !== 'function') return item === null || item === void 0 ? void 0 : item.fullPrediction;
292
233
  return renderListItem(item);
293
234
  };
294
-
295
- var setListHeight = function setListHeight() {
235
+ const setListHeight = () => {
296
236
  if (listWrapperRef !== null && listWrapperRef !== void 0 && listWrapperRef.current && listHeaderRef !== null && listHeaderRef !== void 0 && listHeaderRef.current && listRef.current) {
297
- var _listWrapperRef$curre, _listWrapperRef$curre2, _listHeaderRef$curren, _listHeaderRef$curren2;
298
-
299
- var listWrapperHeight = listWrapperRef === null || listWrapperRef === void 0 ? void 0 : (_listWrapperRef$curre = listWrapperRef.current) === null || _listWrapperRef$curre === void 0 ? void 0 : (_listWrapperRef$curre2 = _listWrapperRef$curre.getBoundingClientRect()) === null || _listWrapperRef$curre2 === void 0 ? void 0 : _listWrapperRef$curre2.height;
300
- var listWrapperStyles = getComputedStyle(listWrapperRef === null || listWrapperRef === void 0 ? void 0 : listWrapperRef.current);
301
- var listHeaderHeight = listHeaderRef === null || listHeaderRef === void 0 ? void 0 : (_listHeaderRef$curren = listHeaderRef.current) === null || _listHeaderRef$curren === void 0 ? void 0 : (_listHeaderRef$curren2 = _listHeaderRef$curren.getBoundingClientRect()) === null || _listHeaderRef$curren2 === void 0 ? void 0 : _listHeaderRef$curren2.height;
302
- var listHeight = listWrapperHeight - listHeaderHeight - parseInt(listWrapperStyles.paddingBottom);
237
+ var _listWrapperRef$curre, _listHeaderRef$curren;
238
+ const listWrapperHeight = listWrapperRef === null || listWrapperRef === void 0 || (_listWrapperRef$curre = listWrapperRef.current) === null || _listWrapperRef$curre === void 0 || (_listWrapperRef$curre = _listWrapperRef$curre.getBoundingClientRect()) === null || _listWrapperRef$curre === void 0 ? void 0 : _listWrapperRef$curre.height;
239
+ const listWrapperStyles = getComputedStyle(listWrapperRef === null || listWrapperRef === void 0 ? void 0 : listWrapperRef.current);
240
+ const listHeaderHeight = listHeaderRef === null || listHeaderRef === void 0 || (_listHeaderRef$curren = listHeaderRef.current) === null || _listHeaderRef$curren === void 0 || (_listHeaderRef$curren = _listHeaderRef$curren.getBoundingClientRect()) === null || _listHeaderRef$curren === void 0 ? void 0 : _listHeaderRef$curren.height;
241
+ const listHeight = listWrapperHeight - listHeaderHeight - parseInt(listWrapperStyles.paddingBottom);
303
242
  listRef.current.style.maxHeight = "".concat(listHeight, "px");
304
243
  }
305
244
  };
306
-
307
- var resetListHeight = function resetListHeight() {
245
+ const resetListHeight = () => {
308
246
  if (listRef.current) {
309
247
  listRef.current.style.maxHeight = "initial";
310
248
  }
311
249
  };
312
250
 
313
- var preparedValue = (0, _react.useMemo)(function () {
314
- if (!value) return '';
315
- if (typeof value === 'string') return value === null || value === void 0 ? void 0 : value.trim();
316
- return value;
317
- }, [value]);
318
- (0, _react.useEffect)(function () {
319
- if (isFocused && query !== '') {
320
- setIsListVisible(true);
321
- getData();
322
- }
251
+ // ? Основной блок работы со значениями адреса
252
+ // ? Не меняйте вызовы setInnerValue и onChange не разобравшись в логике вызовов
253
+ (0, _react.useEffect)(() => {
254
+ // ? Исключение инициализации - равны только при первом рендере компонента,
255
+ // ? т.к. рефка и стейт инициализируются верхним value
256
+ if (!compareValues(innerValue, previousValueRef.current)) {
257
+ const isObject = (0, _utils.getIsOnlyAnObject)(innerValue);
258
+
259
+ // ? innerValue меняется либо от ручного ввода, либо от выбора из списка
260
+ // ? Полная информация или нет - напрямую зависит от ответа getListItems
261
+ const isFullInfo = isObject && 'streetNumber' in innerValue && 'street' in innerValue && 'city' in innerValue && 'state' in innerValue && 'country' in innerValue && 'zipCode' in innerValue;
262
+
263
+ // ? Для старого эндпоинта возвращается список с полной информацией, поэтому на проектах ничего не поменяется,
264
+ // ? если не менять запросник (getListItems), все будет проходить по этой if-ке или по 3-й (для строчных значений)
265
+ if (isFullInfo) {
266
+ onChange(innerValue);
267
+ setIsLoading(false);
268
+ }
269
+
270
+ // ? Неполная информация может быть только в том случае, когда метод getListItems использует уже новый эндпоинт гугл-апи.
271
+ // ? Предполагается, что при этом в компонент будет прокинута ф-я "уточнятель" (clarifyAddressInfo)
272
+ if (isObject && !isFullInfo) {
273
+ if (typeof clarifyAddressInfo === 'function') {
274
+ var _clarifyAddressInfo, _clarifyAddressInfo$t;
275
+ setIsLoading(true);
276
+ // ? Предполагается, что clarifyAddressInfo - асинхронная ф-я, запросник уточнения опции
277
+ // ? Никаких await-ов НЕ нужно (тем более что в useEffect и нельзя для нового React),
278
+ // ? промис "выплюнется в пустоту", но НЕ будет отчищен до резолва, а useEffect (и итерация рендера в целом) при этом будет закончен(а)
279
+ (_clarifyAddressInfo = clarifyAddressInfo(innerValue)) === null || _clarifyAddressInfo === void 0 || (_clarifyAddressInfo$t = _clarifyAddressInfo.then) === null || _clarifyAddressInfo$t === void 0 || _clarifyAddressInfo$t.call(_clarifyAddressInfo, res => {
280
+ if (res) setInnerValue(res);else {
281
+ setInnerValue(previousValueRef.current);
282
+ setTimeout(() => {
283
+ inputRef.current.focus();
284
+ inputRef.current.setSelectionRange(previousValueRef.current.length, previousValueRef.current.length);
285
+ }, 0);
286
+ }
287
+ setIsLoading(false);
288
+ return res;
289
+ });
290
+ }
291
+ // ! Если сверху поменяли эндпоинт и он выдает "облегченный листинг" (айтемы с неполной инфой),
292
+ // ! и НЕ пробросили clarifyAddressInfo, то на этом кейсе велью инпута будет просто зануляться
293
+ // ! (getSelectedItemLabel вернет пустую строку если вкинуть innerValue без всей инфы)
294
+ else setInnerValue(getSelectedItemLabel(innerValue));
295
+ }
323
296
 
324
- if (JSON.stringify(preparedValue) !== JSON.stringify(query) && query !== null) {
325
- onChange(typeof query === 'string' || !onChangeValueTransformer || typeof onChangeValueTransformer !== 'function' ? query : onChangeValueTransformer(query));
297
+ // ? Кейс для строчных значений
298
+ if (!isObject) {
299
+ // ? Вызываем верхний onChange если innerValue есть или если нету, но это не после логики уточнения
300
+ if (innerValue || !isLoading) onChange(innerValue);
301
+ // ? Если innerValue есть и еще не открыт листинг - открываем
302
+ if (innerValue && !isListVisible) setIsListVisible(true);
303
+ // ? Если инпут сфокусирован и значение есть - запрашиваем список вариантов
304
+ if (isFocused && !!innerValue) getAddressVariantsList();
305
+ }
326
306
  }
327
- }, [query]);
328
- (0, _react.useEffect)(function () {
307
+ }, [innerValue]);
308
+ (0, _react.useEffect)(() => {
329
309
  if (!isFocused && !isMobile) {
330
310
  setIsListVisible(false);
331
311
  setHightlightedIndex(null);
332
312
  }
333
313
  }, [isFocused]);
334
- (0, _react.useEffect)(function () {
314
+ (0, _react.useEffect)(() => {
335
315
  if (!isListVisible) {
336
316
  setListItems([]);
337
317
  resetListHeight();
338
318
  }
339
-
340
319
  if (isMobile && isListVisible) {
341
- setTempQuery(query);
320
+ setTempInnerValue(innerValue);
342
321
  setListHeight();
343
322
  }
344
323
  }, [isListVisible]);
345
- (0, _react.useEffect)(function () {
346
- if (JSON.stringify(preparedValue) !== JSON.stringify(query) || !isValueInited) {
347
- setTimeout(function () {
348
- setQuery(preparedValue);
349
- setIsValueInited(true);
350
- }, 1);
351
- }
352
- }, [preparedValue]);
324
+ (0, _react.useEffect)(() => {
325
+ // ? учет изменения value сверху (верхние переназначения велью)
326
+ if (!compareValues(value, innerValue)) setInnerValue(value);
353
327
 
354
- var renderSearchableInput = function renderSearchableInput() {
355
- var value = getSelectedItemLabel();
328
+ // ? useEffect должен быть последним, т.к. рефка меняется в рамках текущей итерации
329
+ previousValueRef.current = value;
330
+ }, [value]);
331
+ const renderSearchableInput = () => {
332
+ const inputValue = getSelectedItemLabel();
356
333
  return /*#__PURE__*/_react.default.createElement("div", {
357
334
  className: (0, _classnames.default)('input-address__input-wrapper')
358
335
  }, /*#__PURE__*/_react.default.createElement(_Input.default, {
359
336
  ref: inputRef,
360
337
  testId: "inputAddress--input--key-".concat(testId || fieldKey),
361
338
  className: (0, _classnames.default)('input-address__input', className),
362
- value: value,
363
- onChange: onChangeInternal,
364
- onFocus: function onFocus(e) {
339
+ value: inputValue,
340
+ onChange: setInnerValue,
341
+ onFocus: e => {
365
342
  setIsFocused(true);
366
343
  },
367
- onBlur: function onBlur() {
368
- return setIsFocused(false);
369
- },
344
+ onBlur: () => setIsFocused(false),
370
345
  onKeyDown: onKeyDown,
371
346
  attributesOfNativeInput: attributesOfNativeInput
372
347
  }), isWrongAddress && /*#__PURE__*/_react.default.createElement("div", {
@@ -386,78 +361,63 @@ var InputAddress = function InputAddress(_ref) {
386
361
  onClick: onClearClick
387
362
  })));
388
363
  };
389
-
390
- var renderInput = function renderInput() {
391
- var value = getSelectedItemLabel(isListVisible ? tempQuery : query);
364
+ const renderInput = () => {
365
+ const inputValue = getSelectedItemLabel(isListVisible ? tempInnerValue : innerValue);
392
366
  return /*#__PURE__*/_react.default.createElement("div", {
393
367
  className: (0, _classnames.default)('input-address__input-wrapper')
394
368
  }, /*#__PURE__*/_react.default.createElement(_Input.default, {
395
369
  testId: "inputAddress--input--key-".concat(testId || fieldKey),
396
370
  className: (0, _classnames.default)('input-address__input', className),
397
- value: value,
398
- onChange: onChangeInternal,
399
- onFocus: function onFocus(e) {
371
+ value: inputValue,
372
+ onChange: setInnerValue,
373
+ onFocus: e => {
400
374
  var _e$target;
401
-
402
375
  setIsListVisible(true);
403
- e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.blur();
404
- setTimeout(function () {
376
+ e === null || e === void 0 || (_e$target = e.target) === null || _e$target === void 0 || _e$target.blur();
377
+ setTimeout(() => {
405
378
  var _inputRef$current3;
406
-
407
- return inputRef === null || inputRef === void 0 ? void 0 : (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 ? void 0 : _inputRef$current3.focus();
379
+ return inputRef === null || inputRef === void 0 || (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 ? void 0 : _inputRef$current3.focus();
408
380
  }, 200);
409
381
  }
410
382
  }));
411
383
  };
412
-
413
- var renderLoader = function renderLoader() {
384
+ const renderLoader = () => {
414
385
  return /*#__PURE__*/_react.default.createElement("div", {
415
386
  className: "input-address__list--loader"
416
387
  }, loader || 'Loading...');
417
388
  };
418
-
419
- var renderList = function renderList() {
420
- var renderListItem = function renderListItem(item, i) {
389
+ const renderList = () => {
390
+ const renderListItem = (item, i) => {
421
391
  return /*#__PURE__*/_react.default.createElement("div", {
422
392
  key: "input-address__list-item".concat(i),
423
393
  className: (0, _classnames.default)('input-address__list--item', {
424
394
  'input-address__list--item-hightlighted': i === hightlightedIndex
425
395
  }),
426
- onMouseDown: function onMouseDown(e) {
427
- return setQueryAsItem(e, item);
428
- }
396
+ onMouseDown: e => setItemAsInnerValue(e, item)
429
397
  }, getListItemLabel(item));
430
398
  };
431
-
432
- var renderListItemCustom = function renderListItemCustom() {
399
+ const renderListItemCustom = () => {
433
400
  return /*#__PURE__*/_react.default.createElement("div", {
434
401
  key: "input-address__list-item--custom",
435
402
  className: (0, _classnames.default)('input-address__list--item', 'input-address__list--item-custom'),
436
- onMouseDown: function onMouseDown(e) {
437
- return setQueryAsItem(e, getSelectedItemLabel());
438
- }
403
+ onMouseDown: e => setItemAsInnerValue(e, getSelectedItemLabel())
439
404
  }, getSelectedItemLabel(), /*#__PURE__*/_react.default.createElement(_reactFeather.AlertTriangle, null), /*#__PURE__*/_react.default.createElement("span", null, "Choose this only if your address is not listed below"));
440
405
  };
441
-
442
- var renderNoItems = function renderNoItems() {
406
+ const renderNoItems = () => {
443
407
  return /*#__PURE__*/_react.default.createElement("div", {
444
408
  className: "input-address__list--no-items"
445
- }, isMobile && !(query !== null && query !== void 0 && query.length) ? 'Please begin entering your address' : noItemsMessage || 'No Items');
409
+ }, isMobile && !(innerValue !== null && innerValue !== void 0 && innerValue.length) ? 'Please begin entering your address' : noItemsMessage || 'No Items');
446
410
  };
447
-
448
- var renderListDesktop = function renderListDesktop() {
411
+ const renderListDesktop = () => {
449
412
  return /*#__PURE__*/_react.default.createElement("div", {
450
413
  className: "input-address__list-wrapper",
451
414
  ref: listWrapperRef
452
415
  }, /*#__PURE__*/_react.default.createElement("div", {
453
416
  className: "input-address__list",
454
417
  ref: listRef
455
- }, isLoading ? renderLoader() : listItems !== null && listItems !== void 0 && listItems.length ? listItems === null || listItems === void 0 ? void 0 : listItems.map(renderListItem) : renderNoItems()));
418
+ }, isListLoading ? renderLoader() : listItems !== null && listItems !== void 0 && listItems.length ? listItems === null || listItems === void 0 ? void 0 : listItems.map(renderListItem) : renderNoItems()));
456
419
  };
457
-
458
- var renderListMobile = function renderListMobile() {
459
- var _cn;
460
-
420
+ const renderListMobile = () => {
461
421
  return /*#__PURE__*/_react.default.createElement("div", {
462
422
  className: "input-address__list-overlay",
463
423
  ref: listOverlayRef,
@@ -467,37 +427,34 @@ var InputAddress = function InputAddress(_ref) {
467
427
  ref: listWrapperRef
468
428
  }, isMobile && /*#__PURE__*/_react.default.createElement("div", {
469
429
  ref: listHeaderRef,
470
- className: (0, _classnames.default)("".concat(RC, "__list-header"), (_cn = {}, (0, _defineProperty2.default)(_cn, "".concat(RC, "__list-header-with-shadow"), isScrollableList && isMobile), (0, _defineProperty2.default)(_cn, "".concat(RC, "__list-header-with-shadow-hidden"), scrollTop === 0), _cn))
430
+ className: (0, _classnames.default)("".concat(RC, "__list-header"), {
431
+ ["".concat(RC, "__list-header-with-shadow")]: isScrollableList && isMobile,
432
+ ["".concat(RC, "__list-header-with-shadow-hidden")]: scrollTop === 0
433
+ })
471
434
  }, /*#__PURE__*/_react.default.createElement("div", {
472
435
  className: (0, _classnames.default)("".concat(RC, "__list-header-row"))
473
436
  }, /*#__PURE__*/_react.default.createElement("div", {
474
437
  className: (0, _classnames.default)("".concat(RC, "__list-label"))
475
438
  }, label || 'Address'), /*#__PURE__*/_react.default.createElement("div", {
476
439
  className: (0, _classnames.default)("".concat(RC, "__list-close-icon")),
477
- onClick: function onClick() {
478
- return setIsListVisible(false);
479
- }
440
+ onClick: () => setIsListVisible(false)
480
441
  }, /*#__PURE__*/_react.default.createElement(_reactFeather.X, {
481
- onClick: function onClick() {
482
- return setIsListVisible(false);
483
- }
442
+ onClick: () => setIsListVisible(false)
484
443
  }))), /*#__PURE__*/_react.default.createElement("div", {
485
444
  className: (0, _classnames.default)("".concat(RC, "__list-header-row"))
486
445
  }, renderSearchableInput())), /*#__PURE__*/_react.default.createElement("div", {
487
446
  className: "input-address__list",
488
447
  ref: listRef
489
- }, isLoading ? renderLoader() : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, getSelectedItemLabel() && renderListItemCustom(), listItems === null || listItems === void 0 ? void 0 : listItems.map(renderListItem), !(listItems !== null && listItems !== void 0 && listItems.length) && !getSelectedItemLabel() && renderNoItems()))));
448
+ }, isListLoading ? renderLoader() : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, getSelectedItemLabel() && renderListItemCustom(), listItems === null || listItems === void 0 ? void 0 : listItems.map(renderListItem), !(listItems !== null && listItems !== void 0 && listItems.length) && !getSelectedItemLabel() && renderNoItems()))));
490
449
  };
491
-
492
450
  return isMobile ? renderListMobile() : renderListDesktop();
493
451
  };
494
-
495
452
  return /*#__PURE__*/_react.default.createElement("div", {
496
453
  className: (0, _classnames.default)('input-address', {
497
454
  'input-address--error': error || isWrongAddress && !isFocused
498
455
  })
499
- }, isMobile ? renderInput() : renderSearchableInput(), isListVisible && renderList());
456
+ }, isLoading && /*#__PURE__*/_react.default.createElement(_Spinner.default, {
457
+ size: "small"
458
+ }), isMobile ? renderInput() : renderSearchableInput(), isListVisible && renderList());
500
459
  };
501
-
502
- var _default = InputAddress;
503
- exports.default = _default;
460
+ var _default = exports.default = InputAddress;