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.
- package/dist/Atomic/FormElements/ActionAlert/ActionAlert.js +15 -23
- package/dist/Atomic/FormElements/AdvancedStatus/AdvancedStatus.js +15 -23
- package/dist/Atomic/FormElements/Calendar/Calendar.js +69 -124
- package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +27 -36
- package/dist/Atomic/FormElements/CheckboxesLine/CheckboxesLine.js +23 -39
- package/dist/Atomic/FormElements/Datepicker/Datepicker.js +110 -246
- package/dist/Atomic/FormElements/Datepicker/components/Calendar.js +44 -85
- package/dist/Atomic/FormElements/Dropdown/Dropdown.js +249 -412
- package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +5 -9
- package/dist/Atomic/FormElements/DropdownLiveSearch/DropdownLiveSearch.js +93 -165
- package/dist/Atomic/FormElements/FileLoader/FileLoader.js +39 -64
- package/dist/Atomic/FormElements/FileLoader/partial/LoadZone.js +51 -132
- package/dist/Atomic/FormElements/FileLoader/partial/LoadedContent.js +34 -73
- package/dist/Atomic/FormElements/FileLoaderLocal/FileLoaderLocal.js +54 -75
- package/dist/Atomic/FormElements/FileLoaderLocalGroup/FileLoaderLocalGroup.js +67 -110
- package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN.js +27 -71
- package/dist/Atomic/FormElements/Input/Input.js +161 -253
- package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +48 -102
- package/dist/Atomic/FormElements/InputColor/InputColor.js +27 -40
- package/dist/Atomic/FormElements/InputCurrency/InputCurrency.js +21 -44
- package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +95 -151
- package/dist/Atomic/FormElements/InputDateRange/components/DateInput.js +32 -57
- package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +184 -302
- package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +81 -150
- package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +11 -16
- package/dist/Atomic/FormElements/InputDateRange/dependencies.js +76 -193
- package/dist/Atomic/FormElements/InputLink/InputLink.js +34 -58
- package/dist/Atomic/FormElements/InputMask/InputCarretPosition.js +8 -12
- package/dist/Atomic/FormElements/InputMask/InputMask.js +554 -964
- package/dist/Atomic/FormElements/InputMask/config.js +1 -1
- package/dist/Atomic/FormElements/InputMask/functions.js +17 -43
- package/dist/Atomic/FormElements/InputMask2/InputMask2.js +268 -404
- package/dist/Atomic/FormElements/InputMask2/config.js +1 -1
- package/dist/Atomic/FormElements/InputMask2/functions.js +17 -43
- package/dist/Atomic/FormElements/InputMask3/InputMask3.js +299 -459
- package/dist/Atomic/FormElements/InputMask3/config.js +1 -1
- package/dist/Atomic/FormElements/InputMask3/functions.js +17 -43
- package/dist/Atomic/FormElements/InputWithAction/InputWithAction.js +53 -113
- package/dist/Atomic/FormElements/InputsRow/InputsRow.js +64 -118
- package/dist/Atomic/FormElements/Label/Label.js +13 -23
- package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +217 -349
- package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +25 -47
- package/dist/Atomic/FormElements/NumericInput/NumericInput.js +133 -207
- package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +29 -61
- package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +20 -42
- package/dist/Atomic/FormElements/RadioInput/RadioInput.js +22 -33
- package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +20 -43
- package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +54 -101
- package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +59 -102
- package/dist/Atomic/FormElements/RangeList/RangeList.js +89 -150
- package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +23 -29
- package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +135 -300
- package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +381 -571
- package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +14 -24
- package/dist/Atomic/FormElements/Switcher/Switcher.js +24 -29
- package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +25 -47
- package/dist/Atomic/FormElements/SwitcherHide/SwitcherHide.js +20 -32
- package/dist/Atomic/FormElements/SwitcherRadio/SwitcherRadio.js +32 -55
- package/dist/Atomic/FormElements/SwitcherRange/SwitcherRange.js +22 -42
- package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +23 -33
- package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +51 -120
- package/dist/Atomic/FormElements/SwitcherTagsDropdown/partial/States.js +2 -3
- package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +23 -46
- package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +254 -407
- package/dist/Atomic/FormElements/Text/Text.js +47 -53
- package/dist/Atomic/FormElements/TextSwitcher/TextSwitcher.js +21 -31
- package/dist/Atomic/FormElements/Textarea/Textarea.js +16 -27
- package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +68 -128
- package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +25 -36
- package/dist/Atomic/FormElements/TimeRange/TimeRange.js +33 -70
- package/dist/Atomic/FormElements/UserContacts/UserContacts.js +58 -124
- package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +48 -80
- package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +32 -42
- package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +40 -60
- package/dist/Atomic/FormElements/WidgetPseudoTable/partial/constructor.js +2 -3
- package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +50 -69
- package/dist/Atomic/FormElements/WidgetWithSwitchableRows/partial/constructor.js +3 -3
- package/dist/Atomic/Layout/Header/Header.js +21 -48
- package/dist/Atomic/Layout/MainMenu/MainMenu.js +36 -79
- package/dist/Atomic/Layout/Spinner/Spinner.js +8 -14
- package/dist/Atomic/UI/Accordion/Accordion.js +18 -48
- package/dist/Atomic/UI/Accordion/AccordionItem.js +35 -60
- package/dist/Atomic/UI/AccordionTable/AccordionTable.js +49 -106
- package/dist/Atomic/UI/AccordionText/AccordionText.js +13 -37
- package/dist/Atomic/UI/AdvancedTag/AdvTag.js +48 -94
- package/dist/Atomic/UI/AdvancedTag/AdvancedTags.js +22 -50
- package/dist/Atomic/UI/Alert/Alert.js +20 -44
- package/dist/Atomic/UI/Arrow/Arrow.js +15 -35
- package/dist/Atomic/UI/Box/Box.js +14 -21
- package/dist/Atomic/UI/Button/Button.js +25 -33
- package/dist/Atomic/UI/ButtonsBar/ButtonsBar.js +22 -31
- package/dist/Atomic/UI/Chart/Chart.js +45 -86
- package/dist/Atomic/UI/Chart/partial/Chart.constants.js +14 -24
- package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +13 -22
- package/dist/Atomic/UI/Chart/partial/datasetSetters.js +68 -113
- package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +158 -140
- package/dist/Atomic/UI/Chart/partial/optionsSetters.js +26 -42
- package/dist/Atomic/UI/Chart/partial/utils.js +20 -48
- package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +22 -42
- package/dist/Atomic/UI/DateTime/DateTime.js +23 -38
- package/dist/Atomic/UI/DebugContainer/DebugContainer.js +12 -36
- package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +5 -21
- package/dist/Atomic/UI/DoubleString/DoubleString.js +27 -50
- package/dist/Atomic/UI/DynamicIcon/DynamicIcon.js +15 -63
- package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +62 -157
- package/dist/Atomic/UI/ExampleChartIntegration/partial/utils.js +47 -110
- package/dist/Atomic/UI/Hint/Hint.js +49 -94
- package/dist/Atomic/UI/Modal/Modal.js +149 -179
- package/dist/Atomic/UI/Modal/ModalHOC.js +12 -21
- package/dist/Atomic/UI/Modal/partials/ModalFooter.js +7 -12
- package/dist/Atomic/UI/Modal/partials/ModalTitle.js +17 -21
- package/dist/Atomic/UI/Modal/partials/useMobileModal.js +93 -151
- package/dist/Atomic/UI/ModalBackup/Modal.js +65 -90
- package/dist/Atomic/UI/ModalBackup/ModalHOC.js +12 -21
- package/dist/Atomic/UI/ModalBackup/partials/ModalFooter.js +6 -11
- package/dist/Atomic/UI/ModalBackup/partials/ModalTitle.js +15 -19
- package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +32 -62
- package/dist/Atomic/UI/NavLine/NavLine.js +120 -211
- package/dist/Atomic/UI/NavLine/Tabs.js +2 -3
- package/dist/Atomic/UI/PageTitle/PageTitle.js +13 -17
- package/dist/Atomic/UI/PieChart/PieChart.js +11 -21
- package/dist/Atomic/UI/Price/Price.js +10 -13
- package/dist/Atomic/UI/PriceRange/PriceRange.js +7 -11
- package/dist/Atomic/UI/ProgressLine/ProgressLine.js +27 -56
- package/dist/Atomic/UI/Status/Status.js +19 -30
- package/dist/Atomic/UI/Table/Partials/TdCell.js +28 -71
- package/dist/Atomic/UI/Table/Partials/TdHeader.js +7 -16
- package/dist/Atomic/UI/Table/Partials/TdRow.js +29 -65
- package/dist/Atomic/UI/Table/Partials/TdTitle.js +16 -40
- package/dist/Atomic/UI/Table/Table.js +27 -47
- package/dist/Atomic/UI/Table/TdTypes/TdActions.js +18 -48
- package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +9 -19
- package/dist/Atomic/UI/Table/TdTypes/TdRange.js +5 -8
- package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +25 -47
- package/dist/Atomic/UI/Tag/Tag.js +20 -48
- package/dist/Atomic/UI/TagList/TagList.js +80 -150
- package/dist/Atomic/UI/UserBox/UserBox.js +14 -26
- package/dist/Classes/AbortableFetch.js +283 -422
- package/dist/Classes/AnimatedHandler.js +44 -56
- package/dist/Classes/RESTAPI/index.js +154 -433
- package/dist/Classes/RESTAPI/partials/AbortableFetch.js +290 -428
- package/dist/Classes/RESTAPI/partials/ApiBase.js +24 -67
- package/dist/Classes/RESTAPI/partials/ApiRequestCreators.js +57 -275
- package/dist/Classes/RESTAPI/partials/ApiUtils.js +146 -377
- package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +155 -403
- package/dist/Classes/RESTAPI/partials/Utils.js +81 -135
- package/dist/Classes/RESTAPI/partials/_outerDependencies.js +2 -6
- package/dist/Classes/RESTAPI/partials/_utils.js +101 -395
- package/dist/Constants/index.constants.js +8 -15
- package/dist/Functions/Portal.js +14 -33
- package/dist/Functions/customEventListener.js +5 -20
- package/dist/Functions/fieldValueFormatters.js +148 -211
- package/dist/Functions/hooks/useFormFieldsChangesManager.js +75 -137
- package/dist/Functions/locale/createTranslator.js +13 -27
- package/dist/Functions/operations.js +35 -49
- package/dist/Functions/presets/inputMaskPresets.js +25 -27
- package/dist/Functions/presets/inputPresets.js +19 -22
- package/dist/Functions/presets/mobileKeyboardTypesPresets.js +7 -9
- package/dist/Functions/schemas.js +6 -15
- package/dist/Functions/useClickOutside.js +3 -7
- package/dist/Functions/useDebounce.js +11 -25
- package/dist/Functions/useFieldFocus.js +42 -67
- package/dist/Functions/useFormTools/form-drivers/ArrayWithObjects.js +35 -54
- package/dist/Functions/useFormTools/form-drivers/ObjectWithIterableObjects.js +74 -95
- package/dist/Functions/useFormTools/form-drivers/ObjectWithNamedKeyObjects.js +55 -91
- package/dist/Functions/useFormTools/functions/General.js +80 -99
- package/dist/Functions/useFormTools/functions/RenderFields.js +45 -72
- package/dist/Functions/useFormTools/functions/usePrevious.js +3 -7
- package/dist/Functions/useFormTools/index.js +382 -598
- package/dist/Functions/useInputHighlightError.js +27 -52
- package/dist/Functions/useIsMobile.js +13 -36
- package/dist/Functions/useLocalStorage.js +7 -22
- package/dist/Functions/useLocationParams.js +16 -27
- package/dist/Functions/useMetaInfo.js +19 -50
- package/dist/Functions/useMouseUpOutside.js +2 -5
- package/dist/Functions/useOnlineStatus.js +7 -26
- package/dist/Functions/usePasswordChecker.js +42 -77
- package/dist/Functions/usePrevious.js +3 -7
- package/dist/Functions/useResize.js +12 -32
- package/dist/Functions/useScrollTo.js +6 -20
- package/dist/Functions/useToggle.js +10 -30
- package/dist/Functions/utils.js +186 -366
- package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +21 -32
- package/dist/Molecular/CustomIcons/components/AlertCircle.js +21 -32
- package/dist/Molecular/CustomIcons/components/AppStore.js +25 -36
- package/dist/Molecular/CustomIcons/components/Arrow.js +31 -42
- package/dist/Molecular/CustomIcons/components/ArrowDown.js +13 -24
- package/dist/Molecular/CustomIcons/components/ArrowLeft.js +16 -27
- package/dist/Molecular/CustomIcons/components/ArrowRight.js +16 -27
- package/dist/Molecular/CustomIcons/components/ArrowUp.js +13 -24
- package/dist/Molecular/CustomIcons/components/Bell.js +11 -22
- package/dist/Molecular/CustomIcons/components/Button.js +11 -22
- package/dist/Molecular/CustomIcons/components/Campaigns.js +12 -23
- package/dist/Molecular/CustomIcons/components/Check.js +12 -23
- package/dist/Molecular/CustomIcons/components/Check2.js +11 -22
- package/dist/Molecular/CustomIcons/components/ChevronDown.js +11 -22
- package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +11 -22
- package/dist/Molecular/CustomIcons/components/ChevronLeft.js +11 -22
- package/dist/Molecular/CustomIcons/components/ChevronRight.js +11 -22
- package/dist/Molecular/CustomIcons/components/ChevronUp.js +11 -22
- package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +26 -37
- package/dist/Molecular/CustomIcons/components/Close.js +13 -24
- package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +38 -49
- package/dist/Molecular/CustomIcons/components/Delete.js +12 -23
- package/dist/Molecular/CustomIcons/components/Edit.js +11 -22
- package/dist/Molecular/CustomIcons/components/Email.js +29 -40
- package/dist/Molecular/CustomIcons/components/FinturfLogo.js +19 -30
- package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +27 -38
- package/dist/Molecular/CustomIcons/components/Flows.js +11 -22
- package/dist/Molecular/CustomIcons/components/Gift.js +16 -27
- package/dist/Molecular/CustomIcons/components/GoogleAuth.js +25 -36
- package/dist/Molecular/CustomIcons/components/GooglePlay.js +25 -36
- package/dist/Molecular/CustomIcons/components/HelpCircle.js +14 -25
- package/dist/Molecular/CustomIcons/components/HelpCircle2.js +15 -26
- package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +14 -25
- package/dist/Molecular/CustomIcons/components/Home.js +14 -25
- package/dist/Molecular/CustomIcons/components/Home2.js +17 -28
- package/dist/Molecular/CustomIcons/components/Key.js +19 -30
- package/dist/Molecular/CustomIcons/components/Landers.js +15 -26
- package/dist/Molecular/CustomIcons/components/Lock.js +11 -22
- package/dist/Molecular/CustomIcons/components/Mail.js +19 -30
- package/dist/Molecular/CustomIcons/components/Mastercard.js +61 -72
- package/dist/Molecular/CustomIcons/components/Minus.js +24 -35
- package/dist/Molecular/CustomIcons/components/Offers.js +12 -23
- package/dist/Molecular/CustomIcons/components/Pause.js +24 -35
- package/dist/Molecular/CustomIcons/components/PayPal.js +38 -49
- package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +25 -36
- package/dist/Molecular/CustomIcons/components/Phone.js +26 -37
- package/dist/Molecular/CustomIcons/components/Play.js +24 -35
- package/dist/Molecular/CustomIcons/components/Plus.js +24 -35
- package/dist/Molecular/CustomIcons/components/Profile.js +16 -27
- package/dist/Molecular/CustomIcons/components/QRCode.js +26 -37
- package/dist/Molecular/CustomIcons/components/Rectangle.js +11 -22
- package/dist/Molecular/CustomIcons/components/Revert.js +14 -25
- package/dist/Molecular/CustomIcons/components/Star.js +10 -21
- package/dist/Molecular/CustomIcons/components/Star2.js +12 -23
- package/dist/Molecular/CustomIcons/components/TrafficSources.js +14 -25
- package/dist/Molecular/CustomIcons/components/Trash.js +11 -22
- package/dist/Molecular/CustomIcons/components/TrashRed.js +11 -22
- package/dist/Molecular/CustomIcons/components/Triggers.js +11 -22
- package/dist/Molecular/CustomIcons/components/User.js +16 -27
- package/dist/Molecular/CustomIcons/components/Visa.js +27 -38
- package/dist/Molecular/CustomIcons/components/X.js +11 -22
- package/dist/Molecular/CustomIcons/index.js +61 -183
- package/dist/Molecular/FormElement/FormElement.js +18 -27
- package/dist/Molecular/InputAddress/InputAddress.js +257 -300
- package/dist/Molecular/InputPassword/InputPassword.js +15 -39
- package/dist/index.js +1 -3
- package/package.json +1 -1
- 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
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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 (
|
|
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
|
-
|
|
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
|
-
}, [
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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
|
-
},
|
|
113
|
+
}, 0);
|
|
161
114
|
};
|
|
162
115
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
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
|
-
|
|
187
|
-
|
|
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
|
-
|
|
199
|
-
onChange(typeof
|
|
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
|
-
|
|
165
|
+
setItemAsInnerValue(null, listItems[hightlightedIndex]);
|
|
211
166
|
setHightlightedIndex(null);
|
|
212
|
-
inputRef === null || inputRef === void 0
|
|
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$
|
|
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
|
-
}
|
|
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(
|
|
219
|
+
return renderHintMessage(innerValue);
|
|
277
220
|
};
|
|
278
|
-
|
|
279
|
-
var getSelectedItemLabel = function getSelectedItemLabel() {
|
|
221
|
+
const getSelectedItemLabel = function () {
|
|
280
222
|
var _value$street;
|
|
281
|
-
|
|
282
|
-
|
|
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 (
|
|
286
|
-
|
|
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,
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
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
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
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
|
-
|
|
325
|
-
|
|
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
|
-
}, [
|
|
328
|
-
(0, _react.useEffect)(
|
|
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)(
|
|
314
|
+
(0, _react.useEffect)(() => {
|
|
335
315
|
if (!isListVisible) {
|
|
336
316
|
setListItems([]);
|
|
337
317
|
resetListHeight();
|
|
338
318
|
}
|
|
339
|
-
|
|
340
319
|
if (isMobile && isListVisible) {
|
|
341
|
-
|
|
320
|
+
setTempInnerValue(innerValue);
|
|
342
321
|
setListHeight();
|
|
343
322
|
}
|
|
344
323
|
}, [isListVisible]);
|
|
345
|
-
(0, _react.useEffect)(
|
|
346
|
-
|
|
347
|
-
|
|
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
|
-
|
|
355
|
-
|
|
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:
|
|
363
|
-
onChange:
|
|
364
|
-
onFocus:
|
|
339
|
+
value: inputValue,
|
|
340
|
+
onChange: setInnerValue,
|
|
341
|
+
onFocus: e => {
|
|
365
342
|
setIsFocused(true);
|
|
366
343
|
},
|
|
367
|
-
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
|
-
|
|
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:
|
|
398
|
-
onChange:
|
|
399
|
-
onFocus:
|
|
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
|
|
404
|
-
setTimeout(
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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 && !(
|
|
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
|
-
},
|
|
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"),
|
|
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:
|
|
478
|
-
return setIsListVisible(false);
|
|
479
|
-
}
|
|
440
|
+
onClick: () => setIsListVisible(false)
|
|
480
441
|
}, /*#__PURE__*/_react.default.createElement(_reactFeather.X, {
|
|
481
|
-
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
|
-
},
|
|
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
|
-
},
|
|
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;
|