@expressms/smartapp-ui 3.0.0-alpha.12 → 3.0.0-alpha.120
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/chevron.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-close.svg +1 -1
- package/build/main/assets/icons/notification-error.svg +5 -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 +2 -0
- package/build/main/assets/storybook/index.js +2 -0
- package/build/main/assets/storybook/index.js.map +1 -1
- package/build/main/constants/constants.d.ts +81 -43
- package/build/main/constants/constants.js +119 -47
- package/build/main/constants/constants.js.map +1 -1
- package/build/main/constants/types.d.ts +10 -1
- package/build/main/helpers/index.d.ts +3 -1
- package/build/main/helpers/index.js +8 -2
- 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 +17 -10
- package/build/main/hooks/useModal.js +173 -12
- 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/Avatar/Avatar.d.ts +3 -2
- package/build/main//321/201omponents/Avatar/Avatar.js +52 -23
- package/build/main//321/201omponents/Avatar/Avatar.js.map +1 -1
- package/build/main//321/201omponents/Avatar/types.d.ts +9 -5
- package/build/main//321/201omponents/Avatar/types.js +5 -2
- 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 +88 -41
- package/build/main//321/201omponents/Calendar/Calendar.js.map +1 -1
- package/build/main//321/201omponents/Calendar/types.d.ts +18 -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 +158 -26
- package/build/main//321/201omponents/Chip/Chip.js.map +1 -1
- package/build/main//321/201omponents/Chip/types.d.ts +13 -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 +12 -7
- package/build/main//321/201omponents/ContextMenuItem/ContextMenuItem.d.ts +4 -0
- package/build/main//321/201omponents/ContextMenuItem/ContextMenuItem.js +49 -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 +28 -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 +24 -18
- package/build/main//321/201omponents/DraggablePopup/DraggablePopup.js.map +1 -1
- package/build/main//321/201omponents/DraggablePopup/types.d.ts +8 -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 +116 -48
- package/build/main//321/201omponents/Modal/Modal.js.map +1 -1
- package/build/main//321/201omponents/Modal/types.d.ts +36 -2
- package/build/main//321/201omponents/Notification/Notification.d.ts +4 -6
- package/build/main//321/201omponents/Notification/Notification.js +72 -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/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 +34 -37
- 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 +221 -79
- package/build/main//321/201omponents/UserDropdown/UserDropdown.js.map +1 -1
- package/build/main//321/201omponents/UserDropdown/helpers.d.ts +7 -3
- package/build/main//321/201omponents/UserDropdown/helpers.js +4 -2
- package/build/main//321/201omponents/UserDropdown/helpers.js.map +1 -1
- package/build/main//321/201omponents/UserDropdown/selectStyles.d.ts +1 -1
- package/build/main//321/201omponents/UserDropdown/selectStyles.js +35 -21
- package/build/main//321/201omponents/UserDropdown/selectStyles.js.map +1 -1
- package/build/main//321/201omponents/UserDropdown/types.d.ts +91 -58
- package/build/main//321/201omponents/UserDropdown/types.js.map +1 -1
- package/package.json +10 -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,35 @@ 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
|
+
var CTS_USER = 'cts_user';
|
|
56
|
+
export var DEFAULT_MENU_LIST_MAX_HEIGHT = 220;
|
|
57
|
+
var dispatchInputEvent = function (input) { return input.dispatchEvent(new Event(INPUT, BUBBLES)); };
|
|
58
|
+
var setCaretPosition = function (input, position) { return input.setSelectionRange(position, position); };
|
|
59
|
+
var setCaretInEmptyInput = function (input) {
|
|
60
|
+
input.value = SPACE;
|
|
61
|
+
dispatchInputEvent(input);
|
|
62
|
+
setTimeout(function () {
|
|
63
|
+
input.value = EMPTY_STRING;
|
|
64
|
+
dispatchInputEvent(input);
|
|
65
|
+
setCaretPosition(input, 0);
|
|
66
|
+
}, 0);
|
|
67
|
+
};
|
|
49
68
|
var MENU_ACTIONS;
|
|
50
69
|
(function (MENU_ACTIONS) {
|
|
51
70
|
MENU_ACTIONS["close"] = "menu-close";
|
|
@@ -80,54 +99,89 @@ var EXCLUDED_FIELDS;
|
|
|
80
99
|
EXCLUDED_FIELDS["fontFamily"] = "fontFamily";
|
|
81
100
|
})(EXCLUDED_FIELDS || (EXCLUDED_FIELDS = {}));
|
|
82
101
|
var COMMON_FIELDS_TO_OMIT = Object.keys(omit(EXCLUDED_FIELDS, [EXCLUDED_FIELDS.language, EXCLUDED_FIELDS.isMyContacts, EXCLUDED_FIELDS.isEnteredByUser]));
|
|
83
|
-
var Input = function (props) {
|
|
102
|
+
var Input = function (props) {
|
|
103
|
+
var isClearable = props["data-is-clearable"], placeholder = props["data-placeholder"], value = props.value, suffix = props.suffix, suffixRef = props.suffixref, onInputChange = props.selectProps.onInputChange;
|
|
104
|
+
var handleClearInput = function () { return onInputChange(EMPTY_STRING, { action: INPUT_ACTIONS.change, prevInputValue: value }); };
|
|
105
|
+
return (_jsxs(_Fragment, { children: [_jsx(components.Input, __assign({}, props, { enterKeyHint: "done", placeholder: placeholder })), 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, {}) })))] }));
|
|
106
|
+
};
|
|
84
107
|
var UserDropdown = function (_a) {
|
|
85
|
-
var _b
|
|
86
|
-
var _y =
|
|
87
|
-
var
|
|
88
|
-
var
|
|
89
|
-
var
|
|
90
|
-
var
|
|
91
|
-
var
|
|
92
|
-
var
|
|
93
|
-
var
|
|
94
|
-
var
|
|
95
|
-
var
|
|
108
|
+
var _b;
|
|
109
|
+
var _c = _a.platform, platform = _c === void 0 ? PLATFORM.web : _c, fontFamily = _a.fontFamily, _d = _a.isDisabled, isDisabled = _d === void 0 ? false : _d, _e = _a.isLoading, isLoading = _e === void 0 ? false : _e, _f = _a.isChipsOutline, isChipsOutline = _f === void 0 ? false : _f, _g = _a.isChipsVisible, isChipsVisible = _g === void 0 ? true : _g, _h = _a.isChipsCollapsable, isChipsCollapsable = _h === void 0 ? false : _h, _j = _a.isSelectedChipHasTooltip, isSelectedChipHasTooltip = _j === void 0 ? false : _j, _k = _a.isMenuCloseOnSelect, isMenuCloseOnSelect = _k === void 0 ? true : _k, _l = _a.isFilteringDisabled, isFilteringDisabled = _l === void 0 ? false : _l, _m = _a.hasNextPage, hasNextPage = _m === void 0 ? false : _m, _o = _a.isNextPageLoading, isNextPageLoading = _o === void 0 ? false : _o, _p = _a.isInputHidden, isInputHidden = _p === void 0 ? false : _p, _q = _a.isBackspaceChipToInput, isBackspaceChipToInput = _q === void 0 ? false : _q, _r = _a.isShowCatalogSearchButton, isShowCatalogSearchButton = _r === void 0 ? false : _r, _s = _a.isDisabledMenuOffsetAtFullscreen, isDisabledMenuOffsetAtFullscreen = _s === void 0 ? false : _s, _t = _a.isDisabledCheckUniqueEmails, isDisabledCheckUniqueEmails = _t === void 0 ? false : _t, _u = _a.isMenuShadowless, isMenuShadowless = _u === void 0 ? false : _u, _v = _a.language, language = _v === void 0 ? LANGUAGES.ru : _v, _w = _a.layoutType, layoutType = _w === void 0 ? LAYOUT_TYPE.minimal : _w, externalInputValue = _a.externalInputValue, title = _a.title, mask = _a.mask, suffix = _a.suffix, _x = _a.placeholder, placeholder = _x === void 0 ? EMPTY_STRING : _x, hint = _a.hint, onShowCatalogSearchButtonClick = _a.onShowCatalogSearchButtonClick, noOptionsMessage = _a.noOptionsMessage, maxMembersCount = _a.maxMembersCount, skeletonRowsCount = _a.skeletonRowsCount, _y = _a.menuListMaxHeight, menuListMaxHeight = _y === void 0 ? DEFAULT_MENU_LIST_MAX_HEIGHT : _y, _z = _a.menuPosition, menuPosition = _z === void 0 ? MENU_POSITIONS.top : _z, menuLocation = _a.menuLocation, menuPortalTarget = _a.menuPortalTarget, _0 = _a.autoFocus, autoFocus = _0 === void 0 ? false : _0, containerClassName = _a.containerClassName, containerPadding = _a.containerPadding, containerStyles = _a.containerStyles, _1 = _a.selectedEntries, selectedEntries = _1 === void 0 ? [] : _1, corporateEntries = _a.corporateEntries, myContactsEntries = _a.myContactsEntries, _2 = _a.emailsToExclude, emailsToExclude = _2 === void 0 ? [] : _2, _3 = _a.userDropdownId, initialUserDropdownId = _3 === void 0 ? EMPTY_STRING : _3, focusRef = _a.focusRef, onInputChange = _a.onInputChange, onImmediateInputChange = _a.onImmediateInputChange, onChange = _a.onChange, onMenuOpen = _a.onMenuOpen, onMenuClose = _a.onMenuClose, onLoadNextPage = _a.onLoadNextPage, onFocus = _a.onFocus;
|
|
110
|
+
var _4 = useState(initialUserDropdownId), userDropdownId = _4[0], setUserDropdownId = _4[1];
|
|
111
|
+
var _5 = useState([]), selectedUsers = _5[0], setSelectedUsers = _5[1];
|
|
112
|
+
var _6 = useState(EMPTY_STRING), paddingLeft = _6[0], setPaddingLeft = _6[1];
|
|
113
|
+
var _7 = useState(EMPTY_STRING), paddingRight = _7[0], setPaddingRight = _7[1];
|
|
114
|
+
var _8 = useState(0), maskWidth = _8[0], setMaskWidth = _8[1];
|
|
115
|
+
var _9 = useState(0), suffixWidth = _9[0], setSuffixWidth = _9[1];
|
|
116
|
+
var _10 = useState(true), isSearchable = _10[0], setIsSearchable = _10[1];
|
|
117
|
+
var _11 = useState(false), isUserTyping = _11[0], setIsUserTyping = _11[1];
|
|
118
|
+
var _12 = useState(null), modalData = _12[0], setModalData = _12[1];
|
|
119
|
+
var _13 = useState(EMPTY_STRING), chipLabelWithMaxWidth = _13[0], setChipLabelWithMaxWidth = _13[1];
|
|
120
|
+
var _14 = useState(EMPTY_STRING), inputValue = _14[0], setInputValue = _14[1];
|
|
121
|
+
var _15 = useState(placeholder), placeholderValue = _15[0], setPlaceholderValue = _15[1];
|
|
122
|
+
var _16 = useState(false), isDelimiterVisible = _16[0], setIsDelimiterVisible = _16[1];
|
|
123
|
+
var _17 = useState(0), delimiterOffset = _17[0], setDelimiterOffset = _17[1];
|
|
96
124
|
var isInputFocused = useRef(false);
|
|
97
125
|
var selectRef = useRef(null);
|
|
98
126
|
var maskRef = useRef(null);
|
|
127
|
+
var suffixRef = useRef(null);
|
|
99
128
|
var menuScrollFromTop = useRef(0);
|
|
100
129
|
var collapsableChipsCount = useRef(0);
|
|
130
|
+
var visibleChipsCount = useRef(0);
|
|
131
|
+
var isNeedCheckChipCollapsableCount = useRef(false);
|
|
101
132
|
var lastVisibleChipIndex = useRef(-1);
|
|
102
133
|
var skipAddUserToChipsOnNextBlurRef = useRef(false);
|
|
134
|
+
var userTypingTimeoutRef = useRef(null);
|
|
103
135
|
var selectedUsersLength = selectedUsers.length;
|
|
136
|
+
var _18 = useDroppable({ id: userDropdownId }), setNodeRef = _18.setNodeRef, over = _18.over;
|
|
137
|
+
var overId = (over || {}).id;
|
|
138
|
+
var isDraggable = overId === userDropdownId;
|
|
139
|
+
var isInputPlaceholderVisible = selectedUsersLength === 1 ? ((_b = selectedUsers[0].isNotRemovable) !== null && _b !== void 0 ? _b : false) : false;
|
|
140
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
141
|
+
useImperativeHandle(focusRef, function () { return ({ focus: handleFocus, blur: function () { return handleDragBlur(true); } }); }, []);
|
|
104
142
|
var fontFamilyStyle = generateFontFamilyStyle(fontFamily);
|
|
143
|
+
var isCharHintVisible = useCharHintDisplay({ inputValue: inputValue }).isCharHintVisible;
|
|
105
144
|
var checkIsValueIsEmail = function (inputValue) {
|
|
106
145
|
var regex = new RegExp(/^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/);
|
|
107
146
|
return regex.test(inputValue);
|
|
108
147
|
};
|
|
109
|
-
|
|
148
|
+
// TODO: emailsToExclude в массиве зависимостей вызывает бесконечный ререндер при драге
|
|
149
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
150
|
+
var checkIsEmailToExclude = useCallback(function (email) { return includes(emailsToExclude, email); }, []);
|
|
110
151
|
var calculatePaddingLeft = function () {
|
|
111
152
|
var _a, _b;
|
|
112
153
|
var maskWidth = ((_b = (_a = maskRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) === null || _b === void 0 ? void 0 : _b.width) || null;
|
|
113
154
|
maskWidth && setMaskWidth(maskWidth + GAP);
|
|
114
155
|
return "".concat(maskWidth ? maskWidth + MASK_INPUT_PL : DEFAULT_INPUT_PADDING, "px");
|
|
115
156
|
};
|
|
157
|
+
var calculatePaddingRight = function () {
|
|
158
|
+
var _a, _b;
|
|
159
|
+
var suffixWidth = ((_b = (_a = suffixRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) === null || _b === void 0 ? void 0 : _b.width) || null;
|
|
160
|
+
suffixWidth && setSuffixWidth(suffixWidth + GAP);
|
|
161
|
+
return "".concat(suffixWidth ? suffixWidth + SUFFIX_INPUT_PR : DEFAULT_INPUT_PADDING, "px");
|
|
162
|
+
};
|
|
116
163
|
var generateStyles = function () {
|
|
117
164
|
return selectStyles({
|
|
118
165
|
isChipsVisible: isChipsVisible,
|
|
119
166
|
isMaxMembersAdded: maxMembersCount && isChipsVisible ? selectedUsersLength === maxMembersCount : false,
|
|
120
167
|
isDisabled: isDisabled,
|
|
121
|
-
|
|
168
|
+
isInputPlaceholderVisible: isInputPlaceholderVisible,
|
|
122
169
|
lastRowNumber: isChipsVisible ? Math.ceil(selectedUsersLength / 2) + 1 : 1,
|
|
123
170
|
paddingLeft: paddingLeft,
|
|
171
|
+
paddingRight: !isChipsVisible && !isEmpty(inputValue) ? PADDING_WITH_CLEAR_ICON : paddingRight,
|
|
124
172
|
platform: platform,
|
|
125
173
|
layoutType: layoutType,
|
|
126
174
|
isInputHidden: isInputHidden,
|
|
127
175
|
isDisabledMenuOffsetAtFullscreen: isDisabledMenuOffsetAtFullscreen,
|
|
176
|
+
isInputFocused: isInputFocused.current,
|
|
128
177
|
isMaskRepresented: !isEmpty(mask),
|
|
178
|
+
isSuffixRepresented: !isNil(suffix),
|
|
179
|
+
isMenuShadowless: isMenuShadowless,
|
|
129
180
|
fontFamilyStyle: fontFamilyStyle,
|
|
130
181
|
containerPadding: containerPadding,
|
|
182
|
+
isDraggable: isDraggable,
|
|
183
|
+
isChipsCollapsed: isChipsCollapsable && !isInputFocused.current,
|
|
184
|
+
menuListMaxHeight: menuListMaxHeight,
|
|
131
185
|
});
|
|
132
186
|
};
|
|
133
187
|
var generateNoOptionsMessage = function (_a) {
|
|
@@ -159,35 +213,48 @@ var UserDropdown = function (_a) {
|
|
|
159
213
|
return contactType === EMAIL_FIELD;
|
|
160
214
|
})[0].contact;
|
|
161
215
|
});
|
|
162
|
-
var query = ((_b = (_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.inputValue) ||
|
|
216
|
+
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
217
|
var sortedCorporateContacts = sortContacts(corporateContacts, query);
|
|
218
|
+
var sortedLocalContacts = sortContacts((corporateEntries === null || corporateEntries === void 0 ? void 0 : corporateEntries.localPhonebookEntries) || [], query);
|
|
164
219
|
var sortedMyContacts = sortContacts(myContactsEntries || [], query);
|
|
165
220
|
var filteredCorporateContacts = sortedCorporateContacts.filter(function (_a) {
|
|
166
221
|
var email = _a.email, contacts = _a.contacts;
|
|
167
222
|
return [email, contacts[0].contact].every(function (email) { return !checkIsEmailToExclude(email); });
|
|
168
223
|
});
|
|
224
|
+
var filteredLocalContacts = sortedLocalContacts.filter(function (_a) {
|
|
225
|
+
var _b;
|
|
226
|
+
var email = _a.email, contacts = _a.contacts;
|
|
227
|
+
var contact = (_b = contacts[0]) === null || _b === void 0 ? void 0 : _b.contact;
|
|
228
|
+
return !checkIsEmailToExclude(email) && !checkIsEmailToExclude(contact);
|
|
229
|
+
});
|
|
169
230
|
var filteredMyContacts = sortedMyContacts.filter(function (_a) {
|
|
170
231
|
var email = _a.email;
|
|
171
232
|
return !checkIsEmailToExclude(email);
|
|
172
233
|
});
|
|
173
|
-
return __spreadArray(__spreadArray([], generateCorporateOptionsToSelect(__assign({ options: filteredCorporateContacts }, commonFields)), true), generateContactsOptionsToSelect(__assign({ options: filteredMyContacts }, commonFields)), true);
|
|
234
|
+
return __spreadArray(__spreadArray(__spreadArray([], generateCorporateOptionsToSelect(__assign({ options: filteredCorporateContacts }, commonFields)), true), generateContactsOptionsToSelect(__assign({ options: filteredLocalContacts, isLocalContact: true }, commonFields)), true), generateContactsOptionsToSelect(__assign({ options: filteredMyContacts, isMyContacts: true }, commonFields)), true);
|
|
174
235
|
};
|
|
236
|
+
var clearUserTypingTimeout = useCallback(function () {
|
|
237
|
+
var userTypingTimeoutRefCurrent = userTypingTimeoutRef.current;
|
|
238
|
+
if (userTypingTimeoutRefCurrent) {
|
|
239
|
+
clearTimeout(userTypingTimeoutRefCurrent);
|
|
240
|
+
userTypingTimeoutRef.current = null;
|
|
241
|
+
}
|
|
242
|
+
}, []);
|
|
175
243
|
var requestInputChangeDebounce = useMemo(function () {
|
|
176
244
|
return debounce(function (inputValue) {
|
|
177
245
|
onInputChange(inputValue);
|
|
178
|
-
|
|
246
|
+
clearUserTypingTimeout();
|
|
247
|
+
userTypingTimeoutRef.current = setTimeout(function () { return setIsUserTyping(false); }, CLEAR_USER_TYPING_TIMEOUT);
|
|
179
248
|
}, 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); };
|
|
249
|
+
}, [clearUserTypingTimeout, onInputChange]);
|
|
183
250
|
var handleMenuClose = function () {
|
|
184
251
|
menuScrollFromTop.current = 0;
|
|
185
|
-
|
|
186
|
-
onMenuClose
|
|
252
|
+
setIsDelimiterVisible(false);
|
|
253
|
+
onMenuClose === null || onMenuClose === void 0 ? void 0 : onMenuClose();
|
|
187
254
|
};
|
|
188
|
-
var handleInputChange = function (inputValue, additionalInfo) {
|
|
255
|
+
var handleInputChange = useCallback(function (inputValue, additionalInfo) {
|
|
189
256
|
if (additionalInfo) {
|
|
190
|
-
var action = additionalInfo.action,
|
|
257
|
+
var action = additionalInfo.action, _a = additionalInfo.prevInputValue, prevInputValue = _a === void 0 ? EMPTY_STRING : _a;
|
|
191
258
|
var trimPrevInputValue_1 = prevInputValue.trim();
|
|
192
259
|
var isInputBlurAction = action === INPUT_ACTIONS.blur;
|
|
193
260
|
var isMenuCloseAction = action === MENU_ACTIONS.close;
|
|
@@ -201,22 +268,24 @@ var UserDropdown = function (_a) {
|
|
|
201
268
|
setInputValue(isUserAlreadySelected || checkIsEmailToExclude(trimPrevInputValue_1) ? trimPrevInputValue_1 : inputValue);
|
|
202
269
|
}
|
|
203
270
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
271
|
+
if (!isEmpty(inputValue)) {
|
|
272
|
+
clearUserTypingTimeout();
|
|
273
|
+
setIsUserTyping(true);
|
|
274
|
+
}
|
|
275
|
+
onImmediateInputChange === null || onImmediateInputChange === void 0 ? void 0 : onImmediateInputChange(inputValue);
|
|
276
|
+
inputValue.length >= MIN_INPUT_SYMBOLS && requestInputChangeDebounce(inputValue);
|
|
277
|
+
}, [onImmediateInputChange, requestInputChangeDebounce, selectedUsers, checkIsEmailToExclude, clearUserTypingTimeout]);
|
|
208
278
|
var extractInputEmails = function (inputValue) {
|
|
209
279
|
return inputValue
|
|
210
280
|
.split(/[,;]+/)
|
|
211
281
|
.map(function (inputStr) { return inputStr.trim(); })
|
|
212
282
|
.filter(function (inputStr) { return !!inputStr.length; });
|
|
213
283
|
};
|
|
214
|
-
var handleAddUser = function (
|
|
215
|
-
if (needToShowError === void 0) { needToShowError = true; }
|
|
284
|
+
var handleAddUser = function () {
|
|
216
285
|
var props = selectRef.current.props;
|
|
217
|
-
var options = props.options,
|
|
286
|
+
var options = props.options, onChange = props.onChange;
|
|
218
287
|
if (isEmpty(inputValue))
|
|
219
|
-
return;
|
|
288
|
+
return Promise.resolve();
|
|
220
289
|
var trimInputValue = inputValue.trim();
|
|
221
290
|
var optionProps = {
|
|
222
291
|
platform: platform,
|
|
@@ -248,10 +317,10 @@ var UserDropdown = function (_a) {
|
|
|
248
317
|
return email === inputEmail;
|
|
249
318
|
});
|
|
250
319
|
enteredUsers.push(existingUser || generateEnteredByUserOption(__assign(__assign({}, optionProps), { email: inputEmail })));
|
|
251
|
-
if (isUserAlreadySelected &&
|
|
252
|
-
|
|
320
|
+
if (isUserAlreadySelected && isSingleEmailEntered)
|
|
321
|
+
return;
|
|
253
322
|
else
|
|
254
|
-
handleInputChange(
|
|
323
|
+
handleInputChange(EMPTY_STRING, { action: INPUT_ACTIONS.change, prevInputValue: trimInputValue });
|
|
255
324
|
}
|
|
256
325
|
!isValueIsEmail && incorrectEmails.push(inputEmail);
|
|
257
326
|
});
|
|
@@ -265,7 +334,7 @@ var UserDropdown = function (_a) {
|
|
|
265
334
|
var isEnterPressed = code === ENTER_KEY || key === ENTER_KEY;
|
|
266
335
|
var isBackspacePressed = code === BACKSPACE_KEY || key === BACKSPACE_KEY;
|
|
267
336
|
var isSpacePressed = code === SPACE_KEY;
|
|
268
|
-
var isTransformChipToInputValue = isBackspacePressed && isBackspaceChipToInput && inputValue ===
|
|
337
|
+
var isTransformChipToInputValue = isBackspacePressed && isBackspaceChipToInput && inputValue === EMPTY_STRING && !isEmpty(selectedUsers);
|
|
269
338
|
if (isEnterPressed) {
|
|
270
339
|
event.preventDefault();
|
|
271
340
|
(_a = handleAddUser()) === null || _a === void 0 ? void 0 : _a.then(function () { });
|
|
@@ -291,25 +360,29 @@ var UserDropdown = function (_a) {
|
|
|
291
360
|
(_c = (_b = selectRef.current) === null || _b === void 0 ? void 0 : _b.onMenuOpen) === null || _c === void 0 ? void 0 : _c.call(_b);
|
|
292
361
|
}
|
|
293
362
|
};
|
|
294
|
-
var transformCurrentChipToInputValue = function (label,
|
|
363
|
+
var transformCurrentChipToInputValue = useCallback(function (label, value) {
|
|
295
364
|
var _a, _b;
|
|
296
365
|
skipAddUserToChipsOnNextBlurRef.current = true;
|
|
297
366
|
setSelectedUsers(function (prevSelectedUsers) {
|
|
298
367
|
var nextSelectedUsers = prevSelectedUsers.filter(function (_a) {
|
|
299
|
-
var userEmail = _a.email;
|
|
300
|
-
return userEmail !==
|
|
368
|
+
var userEmail = _a.email, userType = _a.userType, userUid = _a.uid;
|
|
369
|
+
return checkIfContactTypeIsGroup(userType) ? userUid !== value : userEmail !== value;
|
|
301
370
|
});
|
|
302
371
|
onChange === null || onChange === void 0 ? void 0 : onChange(nextSelectedUsers.map(function (userData) { return omit(userData, COMMON_FIELDS_TO_OMIT); }));
|
|
303
372
|
return nextSelectedUsers;
|
|
304
373
|
});
|
|
374
|
+
handleFocus();
|
|
305
375
|
setInputValue(label);
|
|
306
376
|
onInputChange(label);
|
|
307
377
|
handleInputChange(label);
|
|
308
378
|
onMenuOpen === null || onMenuOpen === void 0 ? void 0 : onMenuOpen();
|
|
309
379
|
(_b = (_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.onMenuOpen) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
310
|
-
|
|
380
|
+
setIsUserTyping(false);
|
|
381
|
+
},
|
|
382
|
+
// eslint-disable-next-line
|
|
383
|
+
[onInputChange, handleInputChange, onMenuOpen, onChange]);
|
|
311
384
|
var handleChange = function (newSelectedUsers) {
|
|
312
|
-
var uniqNewSelectedUsers = uniqBy(newSelectedUsers, EMAIL_FIELD);
|
|
385
|
+
var uniqNewSelectedUsers = isDisabledCheckUniqueEmails ? newSelectedUsers : uniqBy(newSelectedUsers, EMAIL_FIELD);
|
|
313
386
|
var users = [];
|
|
314
387
|
var deletedUser = selectedUsers.find(function (_a) {
|
|
315
388
|
var value = _a.value;
|
|
@@ -365,7 +438,7 @@ var UserDropdown = function (_a) {
|
|
|
365
438
|
var handleCollapseChips = function () {
|
|
366
439
|
var _a, _b;
|
|
367
440
|
var collapsableChips = 0;
|
|
368
|
-
var chipLabelWithMaxWidth =
|
|
441
|
+
var chipLabelWithMaxWidth = EMPTY_STRING;
|
|
369
442
|
var chipsNodes = ((_a = document.querySelector("#".concat(userDropdownId))) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.smartapp-chip')) || [];
|
|
370
443
|
var chips = Array.from(chipsNodes);
|
|
371
444
|
if (isEmpty(chips))
|
|
@@ -385,7 +458,7 @@ var UserDropdown = function (_a) {
|
|
|
385
458
|
});
|
|
386
459
|
var counterWidth = calculateCounterWidth(collapsableChips);
|
|
387
460
|
var rowWidth = counterWidth + INPUT_SPACE_WIDTH;
|
|
388
|
-
var dropdownWidth = ((_b = document.querySelector("#".concat(userDropdownId))) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().width) - maskWidth;
|
|
461
|
+
var dropdownWidth = ((_b = document.querySelector("#".concat(userDropdownId))) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().width) - maskWidth - suffixWidth;
|
|
389
462
|
secondRow.forEach(function (chip) {
|
|
390
463
|
var _a;
|
|
391
464
|
rowWidth += chip.getBoundingClientRect().width + GAP;
|
|
@@ -396,15 +469,18 @@ var UserDropdown = function (_a) {
|
|
|
396
469
|
else {
|
|
397
470
|
var emptySpaceWidth = collapsableChips > 0 ? counterWidth + INPUT_SPACE_WIDTH + GAP : INPUT_SPACE_WIDTH;
|
|
398
471
|
chip.style.maxWidth = "".concat(dropdownWidth - emptySpaceWidth, "px");
|
|
399
|
-
chipLabelWithMaxWidth = ((_a = chip.querySelector('.smartapp-chip__info--name')) === null || _a === void 0 ? void 0 : _a.innerHTML) ||
|
|
472
|
+
chipLabelWithMaxWidth = ((_a = chip.querySelector('.smartapp-chip__info--name')) === null || _a === void 0 ? void 0 : _a.innerHTML) || EMPTY_STRING;
|
|
400
473
|
}
|
|
401
474
|
}
|
|
402
475
|
});
|
|
476
|
+
var visibleChipsCurrentCount = chips.length - collapsableChips;
|
|
477
|
+
isNeedCheckChipCollapsableCount.current = true;
|
|
478
|
+
visibleChipsCount.current = visibleChipsCurrentCount;
|
|
403
479
|
collapsableChipsCount.current = collapsableChips;
|
|
404
|
-
lastVisibleChipIndex.current =
|
|
480
|
+
lastVisibleChipIndex.current = visibleChipsCurrentCount;
|
|
405
481
|
setChipLabelWithMaxWidth(chipLabelWithMaxWidth || generateId());
|
|
406
482
|
};
|
|
407
|
-
var handleUnCollapseChips = function () {
|
|
483
|
+
var handleUnCollapseChips = useCallback(function () {
|
|
408
484
|
var _a;
|
|
409
485
|
if (!userDropdownId)
|
|
410
486
|
return;
|
|
@@ -412,16 +488,29 @@ var UserDropdown = function (_a) {
|
|
|
412
488
|
var chips = Array.from(chipsNodes);
|
|
413
489
|
chips.forEach(function (chip) {
|
|
414
490
|
var _a;
|
|
415
|
-
var chipLabel = ((_a = chip.querySelector('.smartapp-chip__info--name')) === null || _a === void 0 ? void 0 : _a.innerHTML) ||
|
|
491
|
+
var chipLabel = ((_a = chip.querySelector('.smartapp-chip__info--name')) === null || _a === void 0 ? void 0 : _a.innerHTML) || EMPTY_STRING;
|
|
416
492
|
chipLabel === chipLabelWithMaxWidth && (chip.style.maxWidth = '100%');
|
|
417
493
|
});
|
|
494
|
+
isNeedCheckChipCollapsableCount.current = false;
|
|
495
|
+
visibleChipsCount.current = chips.length;
|
|
418
496
|
collapsableChipsCount.current = 0;
|
|
419
497
|
lastVisibleChipIndex.current = -1;
|
|
420
|
-
setChipLabelWithMaxWidth(
|
|
498
|
+
setChipLabelWithMaxWidth(EMPTY_STRING);
|
|
499
|
+
}, [chipLabelWithMaxWidth, userDropdownId]);
|
|
500
|
+
var handleDragBlur = function (isDisableCheckFocused) {
|
|
501
|
+
var _a;
|
|
502
|
+
if (!isInputFocused.current && !isDisableCheckFocused)
|
|
503
|
+
return;
|
|
504
|
+
if (selectRef.current)
|
|
505
|
+
selectRef.current._preventBlur = false;
|
|
506
|
+
(_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.blur();
|
|
421
507
|
};
|
|
422
508
|
var handleBlur = function () {
|
|
423
509
|
var _a;
|
|
424
510
|
var shouldSkipAddUserToChipsOnNextBlur = skipAddUserToChipsOnNextBlurRef.current;
|
|
511
|
+
var _b = selectRef.current || {}, _preventBlur = _b._preventBlur, _contextMenuOpen = _b._contextMenuOpen, _isDragging = _b._isDragging;
|
|
512
|
+
if (_preventBlur || _contextMenuOpen || _isDragging || skipAddUserToChipsOnNextBlurRef.current)
|
|
513
|
+
return;
|
|
425
514
|
var onBlurComplete = function () {
|
|
426
515
|
isChipsCollapsable && handleCollapseChips();
|
|
427
516
|
isInputFocused.current = false;
|
|
@@ -431,19 +520,34 @@ var UserDropdown = function (_a) {
|
|
|
431
520
|
return;
|
|
432
521
|
}
|
|
433
522
|
else
|
|
434
|
-
(_a = handleAddUser(
|
|
523
|
+
(_a = handleAddUser()) === null || _a === void 0 ? void 0 : _a.then(onBlurComplete);
|
|
435
524
|
skipAddUserToChipsOnNextBlurRef.current = false;
|
|
436
525
|
};
|
|
437
|
-
var
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
526
|
+
var handleSelectBlur = function () {
|
|
527
|
+
setPlaceholderValue(placeholder);
|
|
528
|
+
setTimeout(handleBlur, RENDER_DELAY);
|
|
529
|
+
};
|
|
530
|
+
var focusInputIOS = useCallback(function (input) {
|
|
531
|
+
var length = input.value.length;
|
|
532
|
+
requestAnimationFrame(function () {
|
|
533
|
+
input.focus();
|
|
534
|
+
input.value === EMPTY_STRING ? setCaretInEmptyInput(input) : setCaretPosition(input, length);
|
|
535
|
+
});
|
|
536
|
+
}, []);
|
|
537
|
+
var handleFocus = useCallback(function (isDisableCheckFocused) {
|
|
538
|
+
setPlaceholderValue(SEARCH_PLACEHOLDER[language]);
|
|
539
|
+
if (isInputFocused.current && !isDisableCheckFocused)
|
|
540
|
+
return;
|
|
444
541
|
isInputFocused.current = true;
|
|
542
|
+
var selectRefCurrent = selectRef.current;
|
|
543
|
+
var _a = selectRefCurrent || {}, _preventBlur = _a._preventBlur, inputRef = _a.inputRef;
|
|
544
|
+
setTimeout(function () {
|
|
545
|
+
if (selectRefCurrent && !_preventBlur)
|
|
546
|
+
isIosPlatform(platform) && inputRef ? focusInputIOS(inputRef) : selectRefCurrent.focus();
|
|
547
|
+
}, RENDER_DELAY);
|
|
445
548
|
isChipsCollapsable && handleUnCollapseChips();
|
|
446
|
-
};
|
|
549
|
+
}, [language, isChipsCollapsable, handleUnCollapseChips, platform, focusInputIOS]);
|
|
550
|
+
var handleForceFocus = useCallback(function () { return setTimeout(function () { return handleFocus(true); }, RENDER_DELAY); }, [handleFocus]);
|
|
447
551
|
var handleCloseModal = function () {
|
|
448
552
|
setModalData(null);
|
|
449
553
|
setIsSearchable(true);
|
|
@@ -472,14 +576,16 @@ var UserDropdown = function (_a) {
|
|
|
472
576
|
!userDropdownId && setUserDropdownId("user_dropdown_".concat(generateId().replace(/-/g, '_')));
|
|
473
577
|
}, [userDropdownId]);
|
|
474
578
|
useLayoutEffect(function () {
|
|
475
|
-
if (userDropdownId)
|
|
476
|
-
isChipsCollapsable ? handleCollapseChips() : handleUnCollapseChips();
|
|
477
|
-
}
|
|
579
|
+
if (userDropdownId)
|
|
580
|
+
setTimeout(function () { return (isChipsCollapsable ? handleCollapseChips() : handleUnCollapseChips()); }, RENDER_DELAY);
|
|
478
581
|
// eslint-disable-next-line
|
|
479
582
|
}, [isChipsCollapsable, userDropdownId]);
|
|
480
583
|
useEffect(function () {
|
|
481
584
|
setPaddingLeft(calculatePaddingLeft());
|
|
482
585
|
}, [mask]);
|
|
586
|
+
useEffect(function () {
|
|
587
|
+
setPaddingRight(calculatePaddingRight());
|
|
588
|
+
}, [suffix]);
|
|
483
589
|
useEffect(function () {
|
|
484
590
|
setSelectedUsers(function (prevSelectedUsers) {
|
|
485
591
|
return prevSelectedUsers.map(function (selectedUser) { return (__assign(__assign({}, selectedUser), { layoutType: layoutType, fontFamily: fontFamily, language: language, isChipsCollapsable: isChipsCollapsable })); });
|
|
@@ -488,7 +594,13 @@ var UserDropdown = function (_a) {
|
|
|
488
594
|
useEffect(function () {
|
|
489
595
|
if (!isEmpty(selectedEntries)) {
|
|
490
596
|
setSelectedUsers(selectedEntries.map(function (entity) {
|
|
491
|
-
var
|
|
597
|
+
var _a;
|
|
598
|
+
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, email = entity.email;
|
|
599
|
+
var contextMenuItems = currentContextItems === null || currentContextItems === void 0 ? void 0 : currentContextItems.map(function (item) { return (__assign(__assign({}, item), { action: function (data) {
|
|
600
|
+
var _a;
|
|
601
|
+
(_a = item.action) === null || _a === void 0 ? void 0 : _a.call(item, data);
|
|
602
|
+
isMobilePlatform(platform) && handleFocus(true);
|
|
603
|
+
} })); });
|
|
492
604
|
var commonFields = {
|
|
493
605
|
platform: platform,
|
|
494
606
|
layoutType: layoutType,
|
|
@@ -500,20 +612,28 @@ var UserDropdown = function (_a) {
|
|
|
500
612
|
isSelectedChipHasTooltip: isSelectedChipHasTooltip,
|
|
501
613
|
isLoading: isLoading,
|
|
502
614
|
isWarning: isWarning,
|
|
503
|
-
|
|
615
|
+
isOrganizerShort: isOrganizerShort,
|
|
504
616
|
userType: userType,
|
|
505
617
|
uid: uid,
|
|
618
|
+
organizerName: organizerName,
|
|
506
619
|
isInputFocused: isInputFocused,
|
|
507
620
|
selectRef: selectRef,
|
|
508
621
|
collapsableChipsCount: collapsableChipsCount,
|
|
509
622
|
lastVisibleChipIndex: lastVisibleChipIndex,
|
|
510
623
|
};
|
|
624
|
+
var isEntityContainsContacts = 'contacts' in entity;
|
|
511
625
|
var generatedNotCorporateEntity = Object.keys(entity).length === 1
|
|
512
|
-
? generateEnteredByUserOption(__assign({ email:
|
|
513
|
-
: generateContactsOption(__assign({ option: entity }, commonFields));
|
|
514
|
-
|
|
626
|
+
? generateEnteredByUserOption(__assign({ email: email }, commonFields))
|
|
627
|
+
: generateContactsOption(__assign({ option: entity, isMyContacts: true }, commonFields));
|
|
628
|
+
if (isEntityContainsContacts && ((_a = entity.contacts[0]) === null || _a === void 0 ? void 0 : _a.userKind) === CTS_USER)
|
|
629
|
+
return generateCorporateOption(__assign({ option: entity }, commonFields));
|
|
630
|
+
return isEntityContainsContacts
|
|
631
|
+
? generateContactsOption(__assign({ option: entity, isLocalContact: true }, commonFields))
|
|
632
|
+
: generatedNotCorporateEntity;
|
|
515
633
|
}));
|
|
516
634
|
}
|
|
635
|
+
else
|
|
636
|
+
setSelectedUsers([]);
|
|
517
637
|
// eslint-disable-next-line
|
|
518
638
|
}, [selectedEntries]);
|
|
519
639
|
useEffect(function () {
|
|
@@ -526,15 +646,37 @@ var UserDropdown = function (_a) {
|
|
|
526
646
|
useEffect(function () {
|
|
527
647
|
return function () {
|
|
528
648
|
requestInputChangeDebounce.cancel();
|
|
529
|
-
|
|
649
|
+
clearUserTypingTimeout();
|
|
530
650
|
};
|
|
531
|
-
}, [
|
|
532
|
-
|
|
533
|
-
|
|
651
|
+
}, [clearUserTypingTimeout, requestInputChangeDebounce]);
|
|
652
|
+
useEffect(function () {
|
|
653
|
+
if (isChipsCollapsable && !isInputFocused.current && isNeedCheckChipCollapsableCount.current)
|
|
654
|
+
collapsableChipsCount.current = selectedEntries.length - visibleChipsCount.current;
|
|
655
|
+
}, [isChipsCollapsable, selectedEntries]);
|
|
656
|
+
var OptionComponent = useCallback(function (props) { return _jsx(Option, __assign({}, props, { isMenuShadowless: isMenuShadowless, children: props.children })); }, [isMenuShadowless]);
|
|
657
|
+
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 }))); }, [
|
|
658
|
+
hasNextPage,
|
|
659
|
+
isCharHintVisible,
|
|
660
|
+
isLoading,
|
|
661
|
+
isMenuShadowless,
|
|
662
|
+
isNextPageLoading,
|
|
663
|
+
isShowCatalogSearchButton,
|
|
664
|
+
isUserTyping,
|
|
665
|
+
language,
|
|
666
|
+
menuListMaxHeight,
|
|
667
|
+
onLoadNextPage,
|
|
668
|
+
onShowCatalogSearchButtonClick,
|
|
669
|
+
]);
|
|
534
670
|
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
|
-
|
|
671
|
+
var InputComponent = useCallback(function (props) { return (_jsx(Input, __assign({}, props, { "data-is-clearable": !isChipsVisible, "data-placeholder": placeholderValue, suffixref: suffixRef, suffix: suffix }))); }, [isChipsVisible, placeholderValue, suffix]);
|
|
672
|
+
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]);
|
|
673
|
+
var setContainerNodeRef = function (ref) {
|
|
674
|
+
var _a = ((ref === null || ref === void 0 ? void 0 : ref.getBoundingClientRect()) || {}).left, left = _a === void 0 ? 0 : _a;
|
|
675
|
+
setNodeRef(ref);
|
|
676
|
+
setDelimiterOffset(left);
|
|
677
|
+
};
|
|
678
|
+
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: {
|
|
679
|
+
Input: InputComponent,
|
|
538
680
|
MultiValueLabel: MultiValueLabelComponent,
|
|
539
681
|
MultiValueRemove: MultiValueRemove,
|
|
540
682
|
Option: OptionComponent,
|
|
@@ -543,7 +685,7 @@ var UserDropdown = function (_a) {
|
|
|
543
685
|
LoadingIndicator: LoadingIndicator,
|
|
544
686
|
MenuList: MenuListComponent,
|
|
545
687
|
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 })] })));
|
|
688
|
+
} }), 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
689
|
};
|
|
548
|
-
export default UserDropdown;
|
|
690
|
+
export default memo(UserDropdown);
|
|
549
691
|
//# sourceMappingURL=UserDropdown.js.map
|