@expressms/smartapp-ui 3.0.0-alpha.8 → 3.0.0-alpha.81
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/build/main/assets/icons/accepted-invite-status.svg +4 -0
- package/build/main/assets/icons/calendar-arrow-next.svg +3 -0
- package/build/main/assets/icons/calendar-arrow-prev.svg +3 -0
- package/build/main/assets/icons/declined-invite-status.svg +4 -0
- package/build/main/assets/icons/needs-action-invite-status.svg +4 -0
- package/build/main/assets/icons/notification-failure-filled.svg +3 -0
- package/build/main/assets/icons/notification-info-filled.svg +5 -0
- package/build/main/assets/icons/notification-success-filled.svg +4 -0
- package/build/main/assets/icons/select-arrow-down.svg +3 -0
- package/build/main/assets/icons/select-arrow-up.svg +3 -0
- package/build/main/assets/storybook/index.d.ts +1 -0
- package/build/main/assets/storybook/index.js +1 -0
- package/build/main/assets/storybook/index.js.map +1 -1
- package/build/main/constants/constants.d.ts +80 -44
- package/build/main/constants/constants.js +118 -48
- package/build/main/constants/constants.js.map +1 -1
- package/build/main/constants/types.d.ts +9 -1
- package/build/main/helpers/index.d.ts +2 -0
- package/build/main/helpers/index.js +5 -1
- package/build/main/helpers/index.js.map +1 -1
- package/build/main/hooks/useCharHintDisplay.d.ts +9 -0
- package/build/main/hooks/useCharHintDisplay.js +35 -0
- package/build/main/hooks/useCharHintDisplay.js.map +1 -0
- package/build/main/hooks/useMobileLongTap.d.ts +16 -0
- package/build/main/hooks/useMobileLongTap.js +55 -0
- package/build/main/hooks/useMobileLongTap.js.map +1 -0
- package/build/main/hooks/useModal.d.ts +15 -10
- package/build/main/hooks/useModal.js +101 -14
- package/build/main/hooks/useModal.js.map +1 -1
- package/build/main/index.d.ts +2 -0
- package/build/main/index.js +2 -0
- package/build/main/index.js.map +1 -1
- package/build/main/styles/styles.scss +2 -2
- package/build/main//321/201omponents/AttachedFile/AttachedFile.js +3 -0
- package/build/main//321/201omponents/AttachedFile/AttachedFile.js.map +1 -1
- package/build/main//321/201omponents/AttachedFile/types.d.ts +2 -2
- package/build/main//321/201omponents/Avatar/Avatar.d.ts +3 -2
- package/build/main//321/201omponents/Avatar/Avatar.js +34 -5
- package/build/main//321/201omponents/Avatar/Avatar.js.map +1 -1
- package/build/main//321/201omponents/Avatar/types.d.ts +4 -3
- package/build/main//321/201omponents/Avatar/types.js.map +1 -1
- package/build/main//321/201omponents/Button/Button.d.ts +1 -1
- package/build/main//321/201omponents/Button/Button.js +21 -9
- package/build/main//321/201omponents/Button/Button.js.map +1 -1
- package/build/main//321/201omponents/Button/types.d.ts +8 -2
- package/build/main//321/201omponents/Button/types.js +3 -0
- package/build/main//321/201omponents/Button/types.js.map +1 -1
- package/build/main//321/201omponents/Calendar/Calendar.d.ts +2 -2
- package/build/main//321/201omponents/Calendar/Calendar.js +87 -41
- package/build/main//321/201omponents/Calendar/Calendar.js.map +1 -1
- package/build/main//321/201omponents/Calendar/types.d.ts +16 -8
- package/build/main//321/201omponents/Charts/ChartBar/ChartBar.js +1 -1
- package/build/main//321/201omponents/Charts/ChartLine/ChartLine.js +1 -1
- package/build/main//321/201omponents/Charts/ChartPie/ChartPie.js +1 -1
- package/build/main//321/201omponents/Chip/Chip.d.ts +3 -2
- package/build/main//321/201omponents/Chip/Chip.js +157 -25
- package/build/main//321/201omponents/Chip/Chip.js.map +1 -1
- package/build/main//321/201omponents/Chip/types.d.ts +12 -4
- package/build/main//321/201omponents/ChipDndContext/ChipDndContext.d.ts +13 -0
- package/build/main//321/201omponents/ChipDndContext/ChipDndContext.js +76 -0
- package/build/main//321/201omponents/ChipDndContext/ChipDndContext.js.map +1 -0
- package/build/main//321/201omponents/ChipDndContext/index.d.ts +1 -0
- package/build/main//321/201omponents/ChipDndContext/index.js +2 -0
- package/build/main//321/201omponents/ChipDndContext/index.js.map +1 -0
- package/build/main//321/201omponents/ConfirmationModal/ConfirmationModal.d.ts +1 -1
- package/build/main//321/201omponents/ConfirmationModal/ConfirmationModal.js +3 -2
- package/build/main//321/201omponents/ConfirmationModal/ConfirmationModal.js.map +1 -1
- package/build/main//321/201omponents/ConfirmationModal/types.d.ts +5 -2
- package/build/main//321/201omponents/ContextMenu/ContextMenu.d.ts +1 -1
- package/build/main//321/201omponents/ContextMenu/ContextMenu.js +66 -26
- package/build/main//321/201omponents/ContextMenu/ContextMenu.js.map +1 -1
- package/build/main//321/201omponents/ContextMenu/types.d.ts +9 -7
- package/build/main//321/201omponents/ContextMenuItem/ContextMenuItem.d.ts +4 -0
- package/build/main//321/201omponents/ContextMenuItem/ContextMenuItem.js +47 -0
- package/build/main//321/201omponents/ContextMenuItem/ContextMenuItem.js.map +1 -0
- package/build/main//321/201omponents/ContextMenuItem/index.d.ts +1 -0
- package/build/main//321/201omponents/ContextMenuItem/index.js +2 -0
- package/build/main//321/201omponents/ContextMenuItem/index.js.map +1 -0
- package/build/main//321/201omponents/ContextMenuItem/types.d.ts +24 -0
- package/build/main//321/201omponents/ContextMenuItem/types.js +6 -0
- package/build/main//321/201omponents/ContextMenuItem/types.js.map +1 -0
- package/build/main//321/201omponents/CustomSelect/CustomSelect.js +7 -6
- package/build/main//321/201omponents/CustomSelect/CustomSelect.js.map +1 -1
- package/build/main//321/201omponents/CustomSelect/selectStyles.js +20 -21
- package/build/main//321/201omponents/CustomSelect/selectStyles.js.map +1 -1
- package/build/main//321/201omponents/CustomSelect/types.d.ts +7 -1
- package/build/main//321/201omponents/CustomSelectProfiles/CustomSelectProfiles.d.ts +1 -1
- package/build/main//321/201omponents/CustomSelectProfiles/CustomSelectProfiles.js +33 -24
- package/build/main//321/201omponents/CustomSelectProfiles/CustomSelectProfiles.js.map +1 -1
- package/build/main//321/201omponents/CustomSelectProfiles/selectStyles.d.ts +11 -0
- package/build/main//321/201omponents/CustomSelectProfiles/selectStyles.js +38 -0
- package/build/main//321/201omponents/CustomSelectProfiles/selectStyles.js.map +1 -0
- package/build/main//321/201omponents/CustomSelectProfiles/types.d.ts +4 -5
- package/build/main//321/201omponents/DraggablePopup/DraggablePopup.d.ts +1 -1
- package/build/main//321/201omponents/DraggablePopup/DraggablePopup.js +25 -20
- package/build/main//321/201omponents/DraggablePopup/DraggablePopup.js.map +1 -1
- package/build/main//321/201omponents/DraggablePopup/types.d.ts +7 -8
- package/build/main//321/201omponents/Flex/Flex.d.ts +1 -1
- package/build/main//321/201omponents/Flex/Flex.js +2 -2
- package/build/main//321/201omponents/Flex/Flex.js.map +1 -1
- package/build/main//321/201omponents/Flex/types.d.ts +2 -0
- package/build/main//321/201omponents/Input/Input.d.ts +1 -1
- package/build/main//321/201omponents/Input/Input.js +75 -33
- package/build/main//321/201omponents/Input/Input.js.map +1 -1
- package/build/main//321/201omponents/Input/types.d.ts +10 -3
- package/build/main//321/201omponents/ListItem/ListItem.js +21 -17
- package/build/main//321/201omponents/ListItem/ListItem.js.map +1 -1
- package/build/main//321/201omponents/ListItem/types.d.ts +7 -3
- package/build/main//321/201omponents/Modal/Modal.d.ts +3 -2
- package/build/main//321/201omponents/Modal/Modal.js +100 -41
- package/build/main//321/201omponents/Modal/Modal.js.map +1 -1
- package/build/main//321/201omponents/Modal/types.d.ts +32 -2
- package/build/main//321/201omponents/Notification/Notification.d.ts +4 -6
- package/build/main//321/201omponents/Notification/Notification.js +68 -25
- package/build/main//321/201omponents/Notification/Notification.js.map +1 -1
- package/build/main//321/201omponents/Notification/types.d.ts +17 -2
- package/build/main//321/201omponents/Stories/Stories.js +72 -4
- package/build/main//321/201omponents/Stories/Stories.js.map +1 -1
- package/build/main//321/201omponents/Textarea/Textarea.d.ts +1 -1
- package/build/main//321/201omponents/Textarea/Textarea.js +3 -2
- package/build/main//321/201omponents/Textarea/Textarea.js.map +1 -1
- package/build/main//321/201omponents/Textarea/types.d.ts +2 -1
- package/build/main//321/201omponents/UserDropdown/ContactInfo/ContactInfo.js +6 -0
- package/build/main//321/201omponents/UserDropdown/ContactInfo/ContactInfo.js.map +1 -1
- package/build/main//321/201omponents/UserDropdown/LoadingMessage/LoadingMessage.d.ts +2 -1
- package/build/main//321/201omponents/UserDropdown/LoadingMessage/LoadingMessage.js +4 -3
- package/build/main//321/201omponents/UserDropdown/LoadingMessage/LoadingMessage.js.map +1 -1
- package/build/main//321/201omponents/UserDropdown/MenuList/MenuList.js +21 -50
- package/build/main//321/201omponents/UserDropdown/MenuList/MenuList.js.map +1 -1
- package/build/main//321/201omponents/UserDropdown/MultiValueLabel/MultiValueLabel.d.ts +3 -2
- package/build/main//321/201omponents/UserDropdown/MultiValueLabel/MultiValueLabel.js +33 -36
- package/build/main//321/201omponents/UserDropdown/MultiValueLabel/MultiValueLabel.js.map +1 -1
- package/build/main//321/201omponents/UserDropdown/Option/Option.js +2 -2
- package/build/main//321/201omponents/UserDropdown/Option/Option.js.map +1 -1
- package/build/main//321/201omponents/UserDropdown/SearchInCatalogButton/SearchInCatalogButton.js +1 -0
- package/build/main//321/201omponents/UserDropdown/SearchInCatalogButton/SearchInCatalogButton.js.map +1 -1
- package/build/main//321/201omponents/UserDropdown/UserDropdown.d.ts +4 -3
- package/build/main//321/201omponents/UserDropdown/UserDropdown.js +201 -76
- package/build/main//321/201omponents/UserDropdown/UserDropdown.js.map +1 -1
- package/build/main//321/201omponents/UserDropdown/selectStyles.d.ts +1 -1
- package/build/main//321/201omponents/UserDropdown/selectStyles.js +26 -21
- package/build/main//321/201omponents/UserDropdown/selectStyles.js.map +1 -1
- package/build/main//321/201omponents/UserDropdown/types.d.ts +43 -8
- package/build/main//321/201omponents/UserDropdown/types.js.map +1 -1
- package/package.json +11 -7
- package/build/main/assets/icons/avatar-arrow-down.svg +0 -3
- package/build/main/assets/icons/avatar-arrow-up.svg +0 -3
- package/build/main/hooks/useLongTap.d.ts +0 -12
- package/build/main/hooks/useLongTap.js +0 -29
- package/build/main/hooks/useLongTap.js.map +0 -1
|
@@ -20,12 +20,14 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
20
20
|
};
|
|
21
21
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
22
|
/* eslint-disable max-lines */
|
|
23
|
-
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
|
|
23
|
+
import { memo, useCallback, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from 'react';
|
|
24
24
|
import Select, { components } from 'react-select';
|
|
25
25
|
import classNames from 'classnames';
|
|
26
26
|
import { ru } from 'convert-layout';
|
|
27
27
|
import { debounce, includes, isEmpty, isNil, isNull, isString, omit, uniq, uniqBy } from 'lodash';
|
|
28
28
|
import { transliterate as tr } from 'transliteration';
|
|
29
|
+
import { useDroppable } from '@dnd-kit/core';
|
|
30
|
+
import { useCharHintDisplay } from '../../hooks/useCharHintDisplay';
|
|
29
31
|
import Modal from '../Modal';
|
|
30
32
|
import ContactBottomSheet from './ContactBottomSheet/ContactBottomSheet';
|
|
31
33
|
import LoadingMessage from './LoadingMessage/LoadingMessage';
|
|
@@ -34,18 +36,34 @@ import MultiValueLabel from './MultiValueLabel/MultiValueLabel';
|
|
|
34
36
|
import Option from './Option/Option';
|
|
35
37
|
import SearchInCatalogButton from './SearchInCatalogButton/SearchInCatalogButton';
|
|
36
38
|
import selectStyles from './selectStyles';
|
|
37
|
-
import { generateFontFamilyStyle, generateId, isIosPlatform, isMobilePlatform } from '../../helpers';
|
|
39
|
+
import { checkIfContactTypeIsGroup, generateFontFamilyStyle, generateId, isIosPlatform, isMobilePlatform } from '../../helpers';
|
|
38
40
|
import { DropdownIndicator, IndicatorSeparator, LoadingIndicator, MultiValueRemove, generateContactsOption, generateContactsOptionsToSelect, generateCorporateOption, generateCorporateOptionsToSelect, generateEnteredByUserOption, sortContacts, } from './helpers';
|
|
39
|
-
import { BACKSPACE_KEY, DEFAULT_INPUT_PADDING, ENTER_KEY, EVENT_LISTENER_TYPES, LANGUAGES, LAYOUT_TYPE, MASK_INPUT_PL, MENU_POSITIONS, PLATFORM, SPACE, SPACE_KEY, } from '../../constants';
|
|
41
|
+
import { BACKSPACE_KEY, DEFAULT_INPUT_PADDING, EMAIL_FIELD, ENTER_KEY, EVENT_LISTENER_TYPES, LANGUAGES, LAYOUT_TYPE, MASK_INPUT_PL, MENU_POSITIONS, MIN_INPUT_SYMBOLS, PLATFORM, RENDER_DELAY, SEARCH_PLACEHOLDER, SPACE, SPACE_KEY, SUFFIX_INPUT_PR, } from '../../constants';
|
|
42
|
+
import { ReactComponent as ClearIcon } from '../../assets/icons/clear.svg';
|
|
40
43
|
import '../../styles/styles.scss';
|
|
41
|
-
var MIN_INPUT_SYMBOLS = 3;
|
|
42
44
|
var THREE_DIGIT_NUMBER_WIDTH = 48;
|
|
43
45
|
var TWO_DIGIT_NUMBER_WIDTH = 40;
|
|
44
46
|
var SINGLE_DIGIT_NUMBER_WIDTH = 32;
|
|
45
47
|
var INPUT_SPACE_WIDTH = 46;
|
|
46
48
|
var GAP = 8;
|
|
47
49
|
var USER_TYPING_TIMEOUT = 1000;
|
|
48
|
-
|
|
50
|
+
var CLEAR_USER_TYPING_TIMEOUT = 500;
|
|
51
|
+
var INPUT = 'input';
|
|
52
|
+
var EMPTY_STRING = '';
|
|
53
|
+
var BUBBLES = { bubbles: true };
|
|
54
|
+
var PADDING_WITH_CLEAR_ICON = '40px';
|
|
55
|
+
export var DEFAULT_MENU_LIST_MAX_HEIGHT = 220;
|
|
56
|
+
var dispatchInputEvent = function (input) { return input.dispatchEvent(new Event(INPUT, BUBBLES)); };
|
|
57
|
+
var setCaretPosition = function (input, position) { return input.setSelectionRange(position, position); };
|
|
58
|
+
var setCaretInEmptyInput = function (input) {
|
|
59
|
+
input.value = SPACE;
|
|
60
|
+
dispatchInputEvent(input);
|
|
61
|
+
setTimeout(function () {
|
|
62
|
+
input.value = EMPTY_STRING;
|
|
63
|
+
dispatchInputEvent(input);
|
|
64
|
+
setCaretPosition(input, 0);
|
|
65
|
+
}, 0);
|
|
66
|
+
};
|
|
49
67
|
var MENU_ACTIONS;
|
|
50
68
|
(function (MENU_ACTIONS) {
|
|
51
69
|
MENU_ACTIONS["close"] = "menu-close";
|
|
@@ -80,54 +98,86 @@ var EXCLUDED_FIELDS;
|
|
|
80
98
|
EXCLUDED_FIELDS["fontFamily"] = "fontFamily";
|
|
81
99
|
})(EXCLUDED_FIELDS || (EXCLUDED_FIELDS = {}));
|
|
82
100
|
var COMMON_FIELDS_TO_OMIT = Object.keys(omit(EXCLUDED_FIELDS, [EXCLUDED_FIELDS.language, EXCLUDED_FIELDS.isMyContacts, EXCLUDED_FIELDS.isEnteredByUser]));
|
|
83
|
-
var Input = function (props) {
|
|
101
|
+
var Input = function (props) {
|
|
102
|
+
var isClearable = props["data-is-clearable"], value = props.value, suffix = props.suffix, suffixRef = props.suffixref, onInputChange = props.selectProps.onInputChange;
|
|
103
|
+
var handleClearInput = function () { return onInputChange(EMPTY_STRING, { action: INPUT_ACTIONS.change, prevInputValue: value }); };
|
|
104
|
+
return (_jsxs(_Fragment, { children: [_jsx(components.Input, __assign({}, props, { enterKeyHint: "done" })), suffix && (_jsx("div", __assign({ ref: suffixRef, className: "smartapp-user-dropdown__suffix" }, { children: suffix }))), isClearable && !isEmpty(value) && (_jsx("div", __assign({ className: "smartapp-user-dropdown__clear-icon", onMouseDown: handleClearInput, onTouchEnd: handleClearInput }, { children: _jsx(ClearIcon, {}) })))] }));
|
|
105
|
+
};
|
|
84
106
|
var UserDropdown = function (_a) {
|
|
85
|
-
var _b = _a.platform, platform = _b === void 0 ? PLATFORM.web : _b, fontFamily = _a.fontFamily, _c = _a.isDisabled, isDisabled = _c === void 0 ? false : _c, _d = _a.isLoading, isLoading = _d === void 0 ? false : _d, _e = _a.isChipsOutline, isChipsOutline = _e === void 0 ? false : _e, _f = _a.isChipsVisible, isChipsVisible = _f === void 0 ? true : _f, _g = _a.isChipsCollapsable, isChipsCollapsable = _g === void 0 ? false : _g, _h = _a.isSelectedChipHasTooltip, isSelectedChipHasTooltip = _h === void 0 ? false : _h, _j = _a.isMenuCloseOnSelect, isMenuCloseOnSelect = _j === void 0 ? true : _j, _k = _a.isFilteringDisabled, isFilteringDisabled = _k === void 0 ? false : _k, _l = _a.hasNextPage, hasNextPage = _l === void 0 ? false : _l, _m = _a.isNextPageLoading, isNextPageLoading = _m === void 0 ? false : _m, _o = _a.isInputHidden, isInputHidden = _o === void 0 ? false : _o, _p = _a.isBackspaceChipToInput, isBackspaceChipToInput = _p === void 0 ? false : _p, _q = _a.isShowCatalogSearchButton, isShowCatalogSearchButton = _q === void 0 ? false : _q, _r = _a.isDisabledMenuOffsetAtFullscreen, isDisabledMenuOffsetAtFullscreen = _r === void 0 ? false : _r, _s = _a.language, language =
|
|
86
|
-
var
|
|
87
|
-
var
|
|
88
|
-
var
|
|
89
|
-
var
|
|
90
|
-
var
|
|
91
|
-
var
|
|
92
|
-
var
|
|
93
|
-
var
|
|
94
|
-
var
|
|
95
|
-
var
|
|
107
|
+
var _b = _a.platform, platform = _b === void 0 ? PLATFORM.web : _b, fontFamily = _a.fontFamily, _c = _a.isDisabled, isDisabled = _c === void 0 ? false : _c, _d = _a.isLoading, isLoading = _d === void 0 ? false : _d, _e = _a.isChipsOutline, isChipsOutline = _e === void 0 ? false : _e, _f = _a.isChipsVisible, isChipsVisible = _f === void 0 ? true : _f, _g = _a.isChipsCollapsable, isChipsCollapsable = _g === void 0 ? false : _g, _h = _a.isSelectedChipHasTooltip, isSelectedChipHasTooltip = _h === void 0 ? false : _h, _j = _a.isMenuCloseOnSelect, isMenuCloseOnSelect = _j === void 0 ? true : _j, _k = _a.isFilteringDisabled, isFilteringDisabled = _k === void 0 ? false : _k, _l = _a.hasNextPage, hasNextPage = _l === void 0 ? false : _l, _m = _a.isNextPageLoading, isNextPageLoading = _m === void 0 ? false : _m, _o = _a.isInputHidden, isInputHidden = _o === void 0 ? false : _o, _p = _a.isBackspaceChipToInput, isBackspaceChipToInput = _p === void 0 ? false : _p, _q = _a.isShowCatalogSearchButton, isShowCatalogSearchButton = _q === void 0 ? false : _q, _r = _a.isDisabledMenuOffsetAtFullscreen, isDisabledMenuOffsetAtFullscreen = _r === void 0 ? false : _r, _s = _a.isDisabledCheckUniqueEmails, isDisabledCheckUniqueEmails = _s === void 0 ? false : _s, _t = _a.isMenuShadowless, isMenuShadowless = _t === void 0 ? false : _t, _u = _a.language, language = _u === void 0 ? LANGUAGES.ru : _u, _v = _a.layoutType, layoutType = _v === void 0 ? LAYOUT_TYPE.minimal : _v, externalInputValue = _a.externalInputValue, title = _a.title, mask = _a.mask, suffix = _a.suffix, _w = _a.placeholder, placeholder = _w === void 0 ? EMPTY_STRING : _w, hint = _a.hint, onShowCatalogSearchButtonClick = _a.onShowCatalogSearchButtonClick, noOptionsMessage = _a.noOptionsMessage, maxMembersCount = _a.maxMembersCount, skeletonRowsCount = _a.skeletonRowsCount, _x = _a.menuListMaxHeight, menuListMaxHeight = _x === void 0 ? DEFAULT_MENU_LIST_MAX_HEIGHT : _x, _y = _a.menuPosition, menuPosition = _y === void 0 ? MENU_POSITIONS.top : _y, menuLocation = _a.menuLocation, menuPortalTarget = _a.menuPortalTarget, _z = _a.autoFocus, autoFocus = _z === void 0 ? false : _z, containerClassName = _a.containerClassName, containerPadding = _a.containerPadding, containerStyles = _a.containerStyles, _0 = _a.selectedEntries, selectedEntries = _0 === void 0 ? [] : _0, corporateEntries = _a.corporateEntries, myContactsEntries = _a.myContactsEntries, _1 = _a.emailsToExclude, emailsToExclude = _1 === void 0 ? [] : _1, _2 = _a.userDropdownId, initialUserDropdownId = _2 === void 0 ? EMPTY_STRING : _2, focusRef = _a.focusRef, onInputChange = _a.onInputChange, onImmediateInputChange = _a.onImmediateInputChange, onChange = _a.onChange, onMenuOpen = _a.onMenuOpen, onMenuClose = _a.onMenuClose, onLoadNextPage = _a.onLoadNextPage, onFocus = _a.onFocus;
|
|
108
|
+
var _3 = useState(initialUserDropdownId), userDropdownId = _3[0], setUserDropdownId = _3[1];
|
|
109
|
+
var _4 = useState([]), selectedUsers = _4[0], setSelectedUsers = _4[1];
|
|
110
|
+
var _5 = useState(EMPTY_STRING), paddingLeft = _5[0], setPaddingLeft = _5[1];
|
|
111
|
+
var _6 = useState(EMPTY_STRING), paddingRight = _6[0], setPaddingRight = _6[1];
|
|
112
|
+
var _7 = useState(0), maskWidth = _7[0], setMaskWidth = _7[1];
|
|
113
|
+
var _8 = useState(0), suffixWidth = _8[0], setSuffixWidth = _8[1];
|
|
114
|
+
var _9 = useState(true), isSearchable = _9[0], setIsSearchable = _9[1];
|
|
115
|
+
var _10 = useState(false), isUserTyping = _10[0], setIsUserTyping = _10[1];
|
|
116
|
+
var _11 = useState(null), modalData = _11[0], setModalData = _11[1];
|
|
117
|
+
var _12 = useState(EMPTY_STRING), chipLabelWithMaxWidth = _12[0], setChipLabelWithMaxWidth = _12[1];
|
|
118
|
+
var _13 = useState(EMPTY_STRING), inputValue = _13[0], setInputValue = _13[1];
|
|
119
|
+
var _14 = useState(placeholder), placeholderValue = _14[0], setPlaceholderValue = _14[1];
|
|
120
|
+
var _15 = useState(false), isDelimiterVisible = _15[0], setIsDelimiterVisible = _15[1];
|
|
121
|
+
var _16 = useState(0), delimiterOffset = _16[0], setDelimiterOffset = _16[1];
|
|
96
122
|
var isInputFocused = useRef(false);
|
|
97
123
|
var selectRef = useRef(null);
|
|
98
124
|
var maskRef = useRef(null);
|
|
125
|
+
var suffixRef = useRef(null);
|
|
99
126
|
var menuScrollFromTop = useRef(0);
|
|
100
127
|
var collapsableChipsCount = useRef(0);
|
|
128
|
+
var visibleChipsCount = useRef(0);
|
|
129
|
+
var isNeedCheckChipCollapsableCount = useRef(false);
|
|
101
130
|
var lastVisibleChipIndex = useRef(-1);
|
|
102
131
|
var skipAddUserToChipsOnNextBlurRef = useRef(false);
|
|
132
|
+
var userTypingTimeoutRef = useRef(null);
|
|
103
133
|
var selectedUsersLength = selectedUsers.length;
|
|
134
|
+
var _17 = useDroppable({ id: userDropdownId }), setNodeRef = _17.setNodeRef, over = _17.over;
|
|
135
|
+
var overId = (over || {}).id;
|
|
136
|
+
var isDraggable = overId === userDropdownId;
|
|
137
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
138
|
+
useImperativeHandle(focusRef, function () { return ({ focus: handleFocus, blur: function () { return handleDragBlur(true); } }); }, []);
|
|
104
139
|
var fontFamilyStyle = generateFontFamilyStyle(fontFamily);
|
|
140
|
+
var isCharHintVisible = useCharHintDisplay({ inputValue: inputValue }).isCharHintVisible;
|
|
105
141
|
var checkIsValueIsEmail = function (inputValue) {
|
|
106
142
|
var regex = new RegExp(/^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/);
|
|
107
143
|
return regex.test(inputValue);
|
|
108
144
|
};
|
|
109
|
-
|
|
145
|
+
// TODO: emailsToExclude в массиве зависимостей вызывает бесконечный ререндер при драге
|
|
146
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
147
|
+
var checkIsEmailToExclude = useCallback(function (email) { return includes(emailsToExclude, email); }, []);
|
|
110
148
|
var calculatePaddingLeft = function () {
|
|
111
149
|
var _a, _b;
|
|
112
150
|
var maskWidth = ((_b = (_a = maskRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) === null || _b === void 0 ? void 0 : _b.width) || null;
|
|
113
151
|
maskWidth && setMaskWidth(maskWidth + GAP);
|
|
114
152
|
return "".concat(maskWidth ? maskWidth + MASK_INPUT_PL : DEFAULT_INPUT_PADDING, "px");
|
|
115
153
|
};
|
|
154
|
+
var calculatePaddingRight = function () {
|
|
155
|
+
var _a, _b;
|
|
156
|
+
var suffixWidth = ((_b = (_a = suffixRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) === null || _b === void 0 ? void 0 : _b.width) || null;
|
|
157
|
+
suffixWidth && setSuffixWidth(suffixWidth + GAP);
|
|
158
|
+
return "".concat(suffixWidth ? suffixWidth + SUFFIX_INPUT_PR : DEFAULT_INPUT_PADDING, "px");
|
|
159
|
+
};
|
|
116
160
|
var generateStyles = function () {
|
|
117
161
|
return selectStyles({
|
|
118
162
|
isChipsVisible: isChipsVisible,
|
|
119
163
|
isMaxMembersAdded: maxMembersCount && isChipsVisible ? selectedUsersLength === maxMembersCount : false,
|
|
120
164
|
isDisabled: isDisabled,
|
|
121
|
-
isError: isError,
|
|
122
165
|
lastRowNumber: isChipsVisible ? Math.ceil(selectedUsersLength / 2) + 1 : 1,
|
|
123
166
|
paddingLeft: paddingLeft,
|
|
167
|
+
paddingRight: !isChipsVisible && !isEmpty(inputValue) ? PADDING_WITH_CLEAR_ICON : paddingRight,
|
|
124
168
|
platform: platform,
|
|
125
169
|
layoutType: layoutType,
|
|
126
170
|
isInputHidden: isInputHidden,
|
|
127
171
|
isDisabledMenuOffsetAtFullscreen: isDisabledMenuOffsetAtFullscreen,
|
|
172
|
+
isInputFocused: isInputFocused.current,
|
|
128
173
|
isMaskRepresented: !isEmpty(mask),
|
|
174
|
+
isSuffixRepresented: !isNil(suffix),
|
|
175
|
+
isMenuShadowless: isMenuShadowless,
|
|
129
176
|
fontFamilyStyle: fontFamilyStyle,
|
|
130
177
|
containerPadding: containerPadding,
|
|
178
|
+
isDraggable: isDraggable,
|
|
179
|
+
isChipsCollapsed: isChipsCollapsable && !isInputFocused.current,
|
|
180
|
+
menuListMaxHeight: menuListMaxHeight,
|
|
131
181
|
});
|
|
132
182
|
};
|
|
133
183
|
var generateNoOptionsMessage = function (_a) {
|
|
@@ -159,7 +209,7 @@ var UserDropdown = function (_a) {
|
|
|
159
209
|
return contactType === EMAIL_FIELD;
|
|
160
210
|
})[0].contact;
|
|
161
211
|
});
|
|
162
|
-
var query = ((_b = (_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.inputValue) ||
|
|
212
|
+
var query = ((_b = (_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.inputValue) || EMPTY_STRING;
|
|
163
213
|
var sortedCorporateContacts = sortContacts(corporateContacts, query);
|
|
164
214
|
var sortedMyContacts = sortContacts(myContactsEntries || [], query);
|
|
165
215
|
var filteredCorporateContacts = sortedCorporateContacts.filter(function (_a) {
|
|
@@ -172,22 +222,28 @@ var UserDropdown = function (_a) {
|
|
|
172
222
|
});
|
|
173
223
|
return __spreadArray(__spreadArray([], generateCorporateOptionsToSelect(__assign({ options: filteredCorporateContacts }, commonFields)), true), generateContactsOptionsToSelect(__assign({ options: filteredMyContacts }, commonFields)), true);
|
|
174
224
|
};
|
|
225
|
+
var clearUserTypingTimeout = useCallback(function () {
|
|
226
|
+
var userTypingTimeoutRefCurrent = userTypingTimeoutRef.current;
|
|
227
|
+
if (userTypingTimeoutRefCurrent) {
|
|
228
|
+
clearTimeout(userTypingTimeoutRefCurrent);
|
|
229
|
+
userTypingTimeoutRef.current = null;
|
|
230
|
+
}
|
|
231
|
+
}, []);
|
|
175
232
|
var requestInputChangeDebounce = useMemo(function () {
|
|
176
233
|
return debounce(function (inputValue) {
|
|
177
234
|
onInputChange(inputValue);
|
|
178
|
-
|
|
235
|
+
clearUserTypingTimeout();
|
|
236
|
+
userTypingTimeoutRef.current = setTimeout(function () { return setIsUserTyping(false); }, CLEAR_USER_TYPING_TIMEOUT);
|
|
179
237
|
}, USER_TYPING_TIMEOUT);
|
|
180
|
-
}, [onInputChange]);
|
|
181
|
-
var resetIsUserTypingDebounce = useMemo(function () { return debounce(function () { return setIsUserTyping(false); }, USER_TYPING_TIMEOUT); }, []);
|
|
182
|
-
var handleResetError = function () { return isError && setIsError(false); };
|
|
238
|
+
}, [clearUserTypingTimeout, onInputChange]);
|
|
183
239
|
var handleMenuClose = function () {
|
|
184
240
|
menuScrollFromTop.current = 0;
|
|
185
|
-
|
|
186
|
-
onMenuClose
|
|
241
|
+
setIsDelimiterVisible(false);
|
|
242
|
+
onMenuClose === null || onMenuClose === void 0 ? void 0 : onMenuClose();
|
|
187
243
|
};
|
|
188
|
-
var handleInputChange = function (inputValue, additionalInfo) {
|
|
244
|
+
var handleInputChange = useCallback(function (inputValue, additionalInfo) {
|
|
189
245
|
if (additionalInfo) {
|
|
190
|
-
var action = additionalInfo.action,
|
|
246
|
+
var action = additionalInfo.action, _a = additionalInfo.prevInputValue, prevInputValue = _a === void 0 ? EMPTY_STRING : _a;
|
|
191
247
|
var trimPrevInputValue_1 = prevInputValue.trim();
|
|
192
248
|
var isInputBlurAction = action === INPUT_ACTIONS.blur;
|
|
193
249
|
var isMenuCloseAction = action === MENU_ACTIONS.close;
|
|
@@ -198,25 +254,27 @@ var UserDropdown = function (_a) {
|
|
|
198
254
|
var email = _a.email;
|
|
199
255
|
return email === trimPrevInputValue_1;
|
|
200
256
|
});
|
|
201
|
-
setInputValue(isUserAlreadySelected || checkIsEmailToExclude(trimPrevInputValue_1) ? trimPrevInputValue_1 :
|
|
257
|
+
setInputValue(isUserAlreadySelected || checkIsEmailToExclude(trimPrevInputValue_1) ? trimPrevInputValue_1 : prevInputValue);
|
|
202
258
|
}
|
|
203
259
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
260
|
+
if (!isEmpty(inputValue)) {
|
|
261
|
+
clearUserTypingTimeout();
|
|
262
|
+
setIsUserTyping(true);
|
|
263
|
+
}
|
|
264
|
+
onImmediateInputChange === null || onImmediateInputChange === void 0 ? void 0 : onImmediateInputChange(inputValue);
|
|
265
|
+
inputValue.length >= MIN_INPUT_SYMBOLS && requestInputChangeDebounce(inputValue);
|
|
266
|
+
}, [onImmediateInputChange, requestInputChangeDebounce, selectedUsers, checkIsEmailToExclude, clearUserTypingTimeout]);
|
|
208
267
|
var extractInputEmails = function (inputValue) {
|
|
209
268
|
return inputValue
|
|
210
269
|
.split(/[,;]+/)
|
|
211
270
|
.map(function (inputStr) { return inputStr.trim(); })
|
|
212
271
|
.filter(function (inputStr) { return !!inputStr.length; });
|
|
213
272
|
};
|
|
214
|
-
var handleAddUser = function (
|
|
215
|
-
if (needToShowError === void 0) { needToShowError = true; }
|
|
273
|
+
var handleAddUser = function () {
|
|
216
274
|
var props = selectRef.current.props;
|
|
217
|
-
var options = props.options,
|
|
275
|
+
var options = props.options, onChange = props.onChange;
|
|
218
276
|
if (isEmpty(inputValue))
|
|
219
|
-
return;
|
|
277
|
+
return Promise.resolve();
|
|
220
278
|
var trimInputValue = inputValue.trim();
|
|
221
279
|
var optionProps = {
|
|
222
280
|
platform: platform,
|
|
@@ -248,10 +306,10 @@ var UserDropdown = function (_a) {
|
|
|
248
306
|
return email === inputEmail;
|
|
249
307
|
});
|
|
250
308
|
enteredUsers.push(existingUser || generateEnteredByUserOption(__assign(__assign({}, optionProps), { email: inputEmail })));
|
|
251
|
-
if (isUserAlreadySelected &&
|
|
252
|
-
|
|
309
|
+
if (isUserAlreadySelected && isSingleEmailEntered)
|
|
310
|
+
return;
|
|
253
311
|
else
|
|
254
|
-
handleInputChange(
|
|
312
|
+
handleInputChange(EMPTY_STRING, { action: INPUT_ACTIONS.change, prevInputValue: trimInputValue });
|
|
255
313
|
}
|
|
256
314
|
!isValueIsEmail && incorrectEmails.push(inputEmail);
|
|
257
315
|
});
|
|
@@ -265,7 +323,7 @@ var UserDropdown = function (_a) {
|
|
|
265
323
|
var isEnterPressed = code === ENTER_KEY || key === ENTER_KEY;
|
|
266
324
|
var isBackspacePressed = code === BACKSPACE_KEY || key === BACKSPACE_KEY;
|
|
267
325
|
var isSpacePressed = code === SPACE_KEY;
|
|
268
|
-
var isTransformChipToInputValue = isBackspacePressed && isBackspaceChipToInput && inputValue ===
|
|
326
|
+
var isTransformChipToInputValue = isBackspacePressed && isBackspaceChipToInput && inputValue === EMPTY_STRING && !isEmpty(selectedUsers);
|
|
269
327
|
if (isEnterPressed) {
|
|
270
328
|
event.preventDefault();
|
|
271
329
|
(_a = handleAddUser()) === null || _a === void 0 ? void 0 : _a.then(function () { });
|
|
@@ -291,25 +349,29 @@ var UserDropdown = function (_a) {
|
|
|
291
349
|
(_c = (_b = selectRef.current) === null || _b === void 0 ? void 0 : _b.onMenuOpen) === null || _c === void 0 ? void 0 : _c.call(_b);
|
|
292
350
|
}
|
|
293
351
|
};
|
|
294
|
-
var transformCurrentChipToInputValue = function (label,
|
|
352
|
+
var transformCurrentChipToInputValue = useCallback(function (label, value) {
|
|
295
353
|
var _a, _b;
|
|
296
354
|
skipAddUserToChipsOnNextBlurRef.current = true;
|
|
297
355
|
setSelectedUsers(function (prevSelectedUsers) {
|
|
298
356
|
var nextSelectedUsers = prevSelectedUsers.filter(function (_a) {
|
|
299
|
-
var userEmail = _a.email;
|
|
300
|
-
return userEmail !==
|
|
357
|
+
var userEmail = _a.email, userType = _a.userType, userUid = _a.uid;
|
|
358
|
+
return checkIfContactTypeIsGroup(userType) ? userUid !== value : userEmail !== value;
|
|
301
359
|
});
|
|
302
360
|
onChange === null || onChange === void 0 ? void 0 : onChange(nextSelectedUsers.map(function (userData) { return omit(userData, COMMON_FIELDS_TO_OMIT); }));
|
|
303
361
|
return nextSelectedUsers;
|
|
304
362
|
});
|
|
363
|
+
handleFocus();
|
|
305
364
|
setInputValue(label);
|
|
306
365
|
onInputChange(label);
|
|
307
366
|
handleInputChange(label);
|
|
308
367
|
onMenuOpen === null || onMenuOpen === void 0 ? void 0 : onMenuOpen();
|
|
309
368
|
(_b = (_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.onMenuOpen) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
310
|
-
|
|
369
|
+
setIsUserTyping(false);
|
|
370
|
+
},
|
|
371
|
+
// eslint-disable-next-line
|
|
372
|
+
[onInputChange, handleInputChange, onMenuOpen, onChange]);
|
|
311
373
|
var handleChange = function (newSelectedUsers) {
|
|
312
|
-
var uniqNewSelectedUsers = uniqBy(newSelectedUsers, EMAIL_FIELD);
|
|
374
|
+
var uniqNewSelectedUsers = isDisabledCheckUniqueEmails ? newSelectedUsers : uniqBy(newSelectedUsers, EMAIL_FIELD);
|
|
313
375
|
var users = [];
|
|
314
376
|
var deletedUser = selectedUsers.find(function (_a) {
|
|
315
377
|
var value = _a.value;
|
|
@@ -365,7 +427,7 @@ var UserDropdown = function (_a) {
|
|
|
365
427
|
var handleCollapseChips = function () {
|
|
366
428
|
var _a, _b;
|
|
367
429
|
var collapsableChips = 0;
|
|
368
|
-
var chipLabelWithMaxWidth =
|
|
430
|
+
var chipLabelWithMaxWidth = EMPTY_STRING;
|
|
369
431
|
var chipsNodes = ((_a = document.querySelector("#".concat(userDropdownId))) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.smartapp-chip')) || [];
|
|
370
432
|
var chips = Array.from(chipsNodes);
|
|
371
433
|
if (isEmpty(chips))
|
|
@@ -385,7 +447,7 @@ var UserDropdown = function (_a) {
|
|
|
385
447
|
});
|
|
386
448
|
var counterWidth = calculateCounterWidth(collapsableChips);
|
|
387
449
|
var rowWidth = counterWidth + INPUT_SPACE_WIDTH;
|
|
388
|
-
var dropdownWidth = ((_b = document.querySelector("#".concat(userDropdownId))) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().width) - maskWidth;
|
|
450
|
+
var dropdownWidth = ((_b = document.querySelector("#".concat(userDropdownId))) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().width) - maskWidth - suffixWidth;
|
|
389
451
|
secondRow.forEach(function (chip) {
|
|
390
452
|
var _a;
|
|
391
453
|
rowWidth += chip.getBoundingClientRect().width + GAP;
|
|
@@ -396,15 +458,18 @@ var UserDropdown = function (_a) {
|
|
|
396
458
|
else {
|
|
397
459
|
var emptySpaceWidth = collapsableChips > 0 ? counterWidth + INPUT_SPACE_WIDTH + GAP : INPUT_SPACE_WIDTH;
|
|
398
460
|
chip.style.maxWidth = "".concat(dropdownWidth - emptySpaceWidth, "px");
|
|
399
|
-
chipLabelWithMaxWidth = ((_a = chip.querySelector('.smartapp-chip__info--name')) === null || _a === void 0 ? void 0 : _a.innerHTML) ||
|
|
461
|
+
chipLabelWithMaxWidth = ((_a = chip.querySelector('.smartapp-chip__info--name')) === null || _a === void 0 ? void 0 : _a.innerHTML) || EMPTY_STRING;
|
|
400
462
|
}
|
|
401
463
|
}
|
|
402
464
|
});
|
|
465
|
+
var visibleChipsCurrentCount = chips.length - collapsableChips;
|
|
466
|
+
isNeedCheckChipCollapsableCount.current = true;
|
|
467
|
+
visibleChipsCount.current = visibleChipsCurrentCount;
|
|
403
468
|
collapsableChipsCount.current = collapsableChips;
|
|
404
|
-
lastVisibleChipIndex.current =
|
|
469
|
+
lastVisibleChipIndex.current = visibleChipsCurrentCount;
|
|
405
470
|
setChipLabelWithMaxWidth(chipLabelWithMaxWidth || generateId());
|
|
406
471
|
};
|
|
407
|
-
var handleUnCollapseChips = function () {
|
|
472
|
+
var handleUnCollapseChips = useCallback(function () {
|
|
408
473
|
var _a;
|
|
409
474
|
if (!userDropdownId)
|
|
410
475
|
return;
|
|
@@ -412,16 +477,29 @@ var UserDropdown = function (_a) {
|
|
|
412
477
|
var chips = Array.from(chipsNodes);
|
|
413
478
|
chips.forEach(function (chip) {
|
|
414
479
|
var _a;
|
|
415
|
-
var chipLabel = ((_a = chip.querySelector('.smartapp-chip__info--name')) === null || _a === void 0 ? void 0 : _a.innerHTML) ||
|
|
480
|
+
var chipLabel = ((_a = chip.querySelector('.smartapp-chip__info--name')) === null || _a === void 0 ? void 0 : _a.innerHTML) || EMPTY_STRING;
|
|
416
481
|
chipLabel === chipLabelWithMaxWidth && (chip.style.maxWidth = '100%');
|
|
417
482
|
});
|
|
483
|
+
isNeedCheckChipCollapsableCount.current = false;
|
|
484
|
+
visibleChipsCount.current = chips.length;
|
|
418
485
|
collapsableChipsCount.current = 0;
|
|
419
486
|
lastVisibleChipIndex.current = -1;
|
|
420
|
-
setChipLabelWithMaxWidth(
|
|
487
|
+
setChipLabelWithMaxWidth(EMPTY_STRING);
|
|
488
|
+
}, [chipLabelWithMaxWidth, userDropdownId]);
|
|
489
|
+
var handleDragBlur = function (isDisableCheckFocused) {
|
|
490
|
+
var _a;
|
|
491
|
+
if (!isInputFocused.current && !isDisableCheckFocused)
|
|
492
|
+
return;
|
|
493
|
+
if (selectRef.current)
|
|
494
|
+
selectRef.current._preventBlur = false;
|
|
495
|
+
(_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.blur();
|
|
421
496
|
};
|
|
422
497
|
var handleBlur = function () {
|
|
423
498
|
var _a;
|
|
424
499
|
var shouldSkipAddUserToChipsOnNextBlur = skipAddUserToChipsOnNextBlurRef.current;
|
|
500
|
+
var _b = selectRef.current || {}, _preventBlur = _b._preventBlur, _contextMenuOpen = _b._contextMenuOpen, _isDragging = _b._isDragging;
|
|
501
|
+
if (_preventBlur || _contextMenuOpen || _isDragging || skipAddUserToChipsOnNextBlurRef.current)
|
|
502
|
+
return;
|
|
425
503
|
var onBlurComplete = function () {
|
|
426
504
|
isChipsCollapsable && handleCollapseChips();
|
|
427
505
|
isInputFocused.current = false;
|
|
@@ -431,19 +509,34 @@ var UserDropdown = function (_a) {
|
|
|
431
509
|
return;
|
|
432
510
|
}
|
|
433
511
|
else
|
|
434
|
-
(_a = handleAddUser(
|
|
512
|
+
(_a = handleAddUser()) === null || _a === void 0 ? void 0 : _a.then(onBlurComplete);
|
|
435
513
|
skipAddUserToChipsOnNextBlurRef.current = false;
|
|
436
514
|
};
|
|
437
|
-
var
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
515
|
+
var handleSelectBlur = function () {
|
|
516
|
+
setPlaceholderValue(placeholder);
|
|
517
|
+
setTimeout(handleBlur, RENDER_DELAY);
|
|
518
|
+
};
|
|
519
|
+
var focusInputIOS = useCallback(function (input) {
|
|
520
|
+
var length = input.value.length;
|
|
521
|
+
requestAnimationFrame(function () {
|
|
522
|
+
input.focus();
|
|
523
|
+
input.value === EMPTY_STRING ? setCaretInEmptyInput(input) : setCaretPosition(input, length);
|
|
524
|
+
});
|
|
525
|
+
}, []);
|
|
526
|
+
var handleFocus = useCallback(function (isDisableCheckFocused) {
|
|
527
|
+
setPlaceholderValue(SEARCH_PLACEHOLDER[language]);
|
|
528
|
+
if (isInputFocused.current && !isDisableCheckFocused)
|
|
529
|
+
return;
|
|
444
530
|
isInputFocused.current = true;
|
|
531
|
+
var selectRefCurrent = selectRef.current;
|
|
532
|
+
var _a = selectRefCurrent || {}, _preventBlur = _a._preventBlur, inputRef = _a.inputRef;
|
|
533
|
+
setTimeout(function () {
|
|
534
|
+
if (selectRefCurrent && !_preventBlur)
|
|
535
|
+
isIosPlatform(platform) && inputRef ? focusInputIOS(inputRef) : selectRefCurrent.focus();
|
|
536
|
+
}, RENDER_DELAY);
|
|
445
537
|
isChipsCollapsable && handleUnCollapseChips();
|
|
446
|
-
};
|
|
538
|
+
}, [language, isChipsCollapsable, handleUnCollapseChips, platform, focusInputIOS]);
|
|
539
|
+
var handleForceFocus = useCallback(function () { return setTimeout(function () { return handleFocus(true); }, RENDER_DELAY); }, [handleFocus]);
|
|
447
540
|
var handleCloseModal = function () {
|
|
448
541
|
setModalData(null);
|
|
449
542
|
setIsSearchable(true);
|
|
@@ -472,14 +565,16 @@ var UserDropdown = function (_a) {
|
|
|
472
565
|
!userDropdownId && setUserDropdownId("user_dropdown_".concat(generateId().replace(/-/g, '_')));
|
|
473
566
|
}, [userDropdownId]);
|
|
474
567
|
useLayoutEffect(function () {
|
|
475
|
-
if (userDropdownId)
|
|
476
|
-
isChipsCollapsable ? handleCollapseChips() : handleUnCollapseChips();
|
|
477
|
-
}
|
|
568
|
+
if (userDropdownId)
|
|
569
|
+
setTimeout(function () { return (isChipsCollapsable ? handleCollapseChips() : handleUnCollapseChips()); }, RENDER_DELAY);
|
|
478
570
|
// eslint-disable-next-line
|
|
479
571
|
}, [isChipsCollapsable, userDropdownId]);
|
|
480
572
|
useEffect(function () {
|
|
481
573
|
setPaddingLeft(calculatePaddingLeft());
|
|
482
574
|
}, [mask]);
|
|
575
|
+
useEffect(function () {
|
|
576
|
+
setPaddingRight(calculatePaddingRight());
|
|
577
|
+
}, [suffix]);
|
|
483
578
|
useEffect(function () {
|
|
484
579
|
setSelectedUsers(function (prevSelectedUsers) {
|
|
485
580
|
return prevSelectedUsers.map(function (selectedUser) { return (__assign(__assign({}, selectedUser), { layoutType: layoutType, fontFamily: fontFamily, language: language, isChipsCollapsable: isChipsCollapsable })); });
|
|
@@ -488,7 +583,12 @@ var UserDropdown = function (_a) {
|
|
|
488
583
|
useEffect(function () {
|
|
489
584
|
if (!isEmpty(selectedEntries)) {
|
|
490
585
|
setSelectedUsers(selectedEntries.map(function (entity) {
|
|
491
|
-
var
|
|
586
|
+
var isWarning = entity.isWarning, isLoading = entity.isLoading, isOrganizerShort = entity.isOrganizerShort, isResetChipsToInputValue = entity.isResetChipsToInputValue, userType = entity.userType, currentContextItems = entity.contextMenuItems, uid = entity.uid, organizerName = entity.organizerName;
|
|
587
|
+
var contextMenuItems = currentContextItems === null || currentContextItems === void 0 ? void 0 : currentContextItems.map(function (item) { return (__assign(__assign({}, item), { action: function (data) {
|
|
588
|
+
var _a;
|
|
589
|
+
(_a = item.action) === null || _a === void 0 ? void 0 : _a.call(item, data);
|
|
590
|
+
isMobilePlatform(platform) && handleFocus(true);
|
|
591
|
+
} })); });
|
|
492
592
|
var commonFields = {
|
|
493
593
|
platform: platform,
|
|
494
594
|
layoutType: layoutType,
|
|
@@ -500,9 +600,10 @@ var UserDropdown = function (_a) {
|
|
|
500
600
|
isSelectedChipHasTooltip: isSelectedChipHasTooltip,
|
|
501
601
|
isLoading: isLoading,
|
|
502
602
|
isWarning: isWarning,
|
|
503
|
-
|
|
603
|
+
isOrganizerShort: isOrganizerShort,
|
|
504
604
|
userType: userType,
|
|
505
605
|
uid: uid,
|
|
606
|
+
organizerName: organizerName,
|
|
506
607
|
isInputFocused: isInputFocused,
|
|
507
608
|
selectRef: selectRef,
|
|
508
609
|
collapsableChipsCount: collapsableChipsCount,
|
|
@@ -514,6 +615,8 @@ var UserDropdown = function (_a) {
|
|
|
514
615
|
return 'contacts' in entity ? generateCorporateOption(__assign({ option: entity }, commonFields)) : generatedNotCorporateEntity;
|
|
515
616
|
}));
|
|
516
617
|
}
|
|
618
|
+
else
|
|
619
|
+
setSelectedUsers([]);
|
|
517
620
|
// eslint-disable-next-line
|
|
518
621
|
}, [selectedEntries]);
|
|
519
622
|
useEffect(function () {
|
|
@@ -526,15 +629,37 @@ var UserDropdown = function (_a) {
|
|
|
526
629
|
useEffect(function () {
|
|
527
630
|
return function () {
|
|
528
631
|
requestInputChangeDebounce.cancel();
|
|
529
|
-
|
|
632
|
+
clearUserTypingTimeout();
|
|
530
633
|
};
|
|
531
|
-
}, [
|
|
532
|
-
|
|
533
|
-
|
|
634
|
+
}, [clearUserTypingTimeout, requestInputChangeDebounce]);
|
|
635
|
+
useEffect(function () {
|
|
636
|
+
if (isChipsCollapsable && !isInputFocused.current && isNeedCheckChipCollapsableCount.current)
|
|
637
|
+
collapsableChipsCount.current = selectedEntries.length - visibleChipsCount.current;
|
|
638
|
+
}, [isChipsCollapsable, selectedEntries]);
|
|
639
|
+
var OptionComponent = useCallback(function (props) { return _jsx(Option, __assign({}, props, { isMenuShadowless: isMenuShadowless, children: props.children })); }, [isMenuShadowless]);
|
|
640
|
+
var MenuListComponent = useCallback(function (props) { return (_jsx(MenuList, __assign({}, props, { children: props.children, selectRef: selectRef, scrollFromTop: menuScrollFromTop, language: language, menuListMaxHeight: menuListMaxHeight, hasNextPage: hasNextPage, isLoading: isLoading, isShowCatalogSearchButton: isShowCatalogSearchButton, onShowCatalogSearchButtonClick: onShowCatalogSearchButtonClick, isUserTyping: isUserTyping, isCharHintVisible: isCharHintVisible, isMenuShadowless: isMenuShadowless, isNextPageLoading: isNextPageLoading, onLoadNextPage: function (inputValue) { return onLoadNextPage === null || onLoadNextPage === void 0 ? void 0 : onLoadNextPage(inputValue); }, setIsDelimiterVisible: setIsDelimiterVisible }))); }, [
|
|
641
|
+
hasNextPage,
|
|
642
|
+
isCharHintVisible,
|
|
643
|
+
isLoading,
|
|
644
|
+
isMenuShadowless,
|
|
645
|
+
isNextPageLoading,
|
|
646
|
+
isShowCatalogSearchButton,
|
|
647
|
+
isUserTyping,
|
|
648
|
+
language,
|
|
649
|
+
menuListMaxHeight,
|
|
650
|
+
onLoadNextPage,
|
|
651
|
+
onShowCatalogSearchButtonClick,
|
|
652
|
+
]);
|
|
534
653
|
var NoOptionsButton = function (props) { return (_jsx(components.NoOptionsMessage, __assign({}, props, { children: _jsx(SearchInCatalogButton, { language: language, isOnlyButtonInList: true, onShowCatalogSearchButtonClick: onShowCatalogSearchButtonClick, noOptionText: isShowCatalogSearchButton ? undefined : generateNoOptionsMessage({ inputValue: inputValue }) }) }))); };
|
|
535
|
-
var
|
|
536
|
-
|
|
537
|
-
|
|
654
|
+
var InputComponent = useCallback(function (props) { return _jsx(Input, __assign({}, props, { "data-is-clearable": !isChipsVisible, suffixref: suffixRef, suffix: suffix })); }, [isChipsVisible, suffix]);
|
|
655
|
+
var MultiValueLabelComponent = useCallback(function (props) { return (_jsx(MultiValueLabel, __assign({}, props, { platform: platform, isChipsOutline: isChipsOutline, transformCurrentChipToInputValue: transformCurrentChipToInputValue, handleBlurDropdown: function () { return handleDragBlur(true); }, handleRequestFocus: handleForceFocus }))); }, [platform, isChipsOutline, transformCurrentChipToInputValue, handleForceFocus]);
|
|
656
|
+
var setContainerNodeRef = function (ref) {
|
|
657
|
+
var _a = ((ref === null || ref === void 0 ? void 0 : ref.getBoundingClientRect()) || {}).left, left = _a === void 0 ? 0 : _a;
|
|
658
|
+
setNodeRef(ref);
|
|
659
|
+
setDelimiterOffset(left);
|
|
660
|
+
};
|
|
661
|
+
return (_jsxs("div", __assign({ id: userDropdownId, className: classNames('smartapp-user-dropdown', containerClassName), style: __assign(__assign({}, fontFamilyStyle), containerStyles) }, { children: [renderTitle(), _jsxs("div", __assign({ className: "smartapp-user-dropdown__container", ref: setContainerNodeRef }, { children: [renderMask(), _jsx(Select, { ref: selectRef, menuIsOpen: isInputHidden ? !!externalInputValue : undefined, menuPortalTarget: menuPortalTarget === null || menuPortalTarget === void 0 ? void 0 : menuPortalTarget.current, isMulti: true, openMenuOnFocus: true, blurInputOnSelect: false, captureMenuScroll: false, isSearchable: isSearchable, menuPlacement: menuPosition, menuPosition: menuLocation, controlShouldRenderValue: isChipsVisible, backspaceRemovesValue: isChipsVisible, isDisabled: isDisabled, closeMenuOnSelect: isMenuCloseOnSelect, isLoading: isLoading || isUserTyping, isClearable: false, styles: generateStyles(), placeholder: placeholderValue, noOptionsMessage: generateNoOptionsMessage, loadingMessage: function () { return _jsx(LoadingMessage, { isMenuShadowless: isMenuShadowless, skeletonRowsCount: skeletonRowsCount }); }, value: selectedUsers, inputValue: inputValue, options: !isNull(corporateEntries) || !isNull(myContactsEntries) ? generateOptions() : undefined, filterOption: handleFilterOption, onInputChange: handleInputChange, onChange: handleChange, onMenuClose: handleMenuClose, onMenuOpen: onMenuOpen, onKeyDown: handleKeyDown, onBlur: handleSelectBlur, autoFocus: autoFocus, onFocus: function () { return (onFocus ? onFocus() : handleFocus()); }, instanceId: userDropdownId, components: {
|
|
662
|
+
Input: InputComponent,
|
|
538
663
|
MultiValueLabel: MultiValueLabelComponent,
|
|
539
664
|
MultiValueRemove: MultiValueRemove,
|
|
540
665
|
Option: OptionComponent,
|
|
@@ -543,7 +668,7 @@ var UserDropdown = function (_a) {
|
|
|
543
668
|
LoadingIndicator: LoadingIndicator,
|
|
544
669
|
MenuList: MenuListComponent,
|
|
545
670
|
NoOptionsMessage: NoOptionsButton,
|
|
546
|
-
} })] })), renderHint(), _jsx(Modal, { isModalOpen: !isNull(modalData), platform: platform, fontFamily: fontFamily, content: modalContent, isBottomSheet: isMobilePlatform(platform), backgroundColor: "var(--color-bg-blackout-transparent)", handleCloseModal: handleCloseModal })] })));
|
|
671
|
+
} }), isMenuShadowless && isDelimiterVisible && (_jsx("div", { className: "smartapp-user-dropdown__container--delimiter", style: { '--delimiter-offset': "-".concat(delimiterOffset, "px") } }))] })), renderHint(), _jsx(Modal, { isModalOpen: !isNull(modalData), platform: platform, fontFamily: fontFamily, content: modalContent, isBottomSheet: isMobilePlatform(platform), backgroundColor: "var(--color-bg-blackout-transparent)", handleCloseModal: handleCloseModal })] })));
|
|
547
672
|
};
|
|
548
|
-
export default UserDropdown;
|
|
673
|
+
export default memo(UserDropdown);
|
|
549
674
|
//# sourceMappingURL=UserDropdown.js.map
|