@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.
Files changed (150) hide show
  1. package/build/main/assets/icons/accepted-invite-status.svg +4 -0
  2. package/build/main/assets/icons/calendar-arrow-next.svg +3 -0
  3. package/build/main/assets/icons/calendar-arrow-prev.svg +3 -0
  4. package/build/main/assets/icons/declined-invite-status.svg +4 -0
  5. package/build/main/assets/icons/needs-action-invite-status.svg +4 -0
  6. package/build/main/assets/icons/notification-failure-filled.svg +3 -0
  7. package/build/main/assets/icons/notification-info-filled.svg +5 -0
  8. package/build/main/assets/icons/notification-success-filled.svg +4 -0
  9. package/build/main/assets/icons/select-arrow-down.svg +3 -0
  10. package/build/main/assets/icons/select-arrow-up.svg +3 -0
  11. package/build/main/assets/storybook/index.d.ts +1 -0
  12. package/build/main/assets/storybook/index.js +1 -0
  13. package/build/main/assets/storybook/index.js.map +1 -1
  14. package/build/main/constants/constants.d.ts +80 -44
  15. package/build/main/constants/constants.js +118 -48
  16. package/build/main/constants/constants.js.map +1 -1
  17. package/build/main/constants/types.d.ts +9 -1
  18. package/build/main/helpers/index.d.ts +2 -0
  19. package/build/main/helpers/index.js +5 -1
  20. package/build/main/helpers/index.js.map +1 -1
  21. package/build/main/hooks/useCharHintDisplay.d.ts +9 -0
  22. package/build/main/hooks/useCharHintDisplay.js +35 -0
  23. package/build/main/hooks/useCharHintDisplay.js.map +1 -0
  24. package/build/main/hooks/useMobileLongTap.d.ts +16 -0
  25. package/build/main/hooks/useMobileLongTap.js +55 -0
  26. package/build/main/hooks/useMobileLongTap.js.map +1 -0
  27. package/build/main/hooks/useModal.d.ts +15 -10
  28. package/build/main/hooks/useModal.js +101 -14
  29. package/build/main/hooks/useModal.js.map +1 -1
  30. package/build/main/index.d.ts +2 -0
  31. package/build/main/index.js +2 -0
  32. package/build/main/index.js.map +1 -1
  33. package/build/main/styles/styles.scss +2 -2
  34. package/build/main//321/201omponents/AttachedFile/AttachedFile.js +3 -0
  35. package/build/main//321/201omponents/AttachedFile/AttachedFile.js.map +1 -1
  36. package/build/main//321/201omponents/AttachedFile/types.d.ts +2 -2
  37. package/build/main//321/201omponents/Avatar/Avatar.d.ts +3 -2
  38. package/build/main//321/201omponents/Avatar/Avatar.js +34 -5
  39. package/build/main//321/201omponents/Avatar/Avatar.js.map +1 -1
  40. package/build/main//321/201omponents/Avatar/types.d.ts +4 -3
  41. package/build/main//321/201omponents/Avatar/types.js.map +1 -1
  42. package/build/main//321/201omponents/Button/Button.d.ts +1 -1
  43. package/build/main//321/201omponents/Button/Button.js +21 -9
  44. package/build/main//321/201omponents/Button/Button.js.map +1 -1
  45. package/build/main//321/201omponents/Button/types.d.ts +8 -2
  46. package/build/main//321/201omponents/Button/types.js +3 -0
  47. package/build/main//321/201omponents/Button/types.js.map +1 -1
  48. package/build/main//321/201omponents/Calendar/Calendar.d.ts +2 -2
  49. package/build/main//321/201omponents/Calendar/Calendar.js +87 -41
  50. package/build/main//321/201omponents/Calendar/Calendar.js.map +1 -1
  51. package/build/main//321/201omponents/Calendar/types.d.ts +16 -8
  52. package/build/main//321/201omponents/Charts/ChartBar/ChartBar.js +1 -1
  53. package/build/main//321/201omponents/Charts/ChartLine/ChartLine.js +1 -1
  54. package/build/main//321/201omponents/Charts/ChartPie/ChartPie.js +1 -1
  55. package/build/main//321/201omponents/Chip/Chip.d.ts +3 -2
  56. package/build/main//321/201omponents/Chip/Chip.js +157 -25
  57. package/build/main//321/201omponents/Chip/Chip.js.map +1 -1
  58. package/build/main//321/201omponents/Chip/types.d.ts +12 -4
  59. package/build/main//321/201omponents/ChipDndContext/ChipDndContext.d.ts +13 -0
  60. package/build/main//321/201omponents/ChipDndContext/ChipDndContext.js +76 -0
  61. package/build/main//321/201omponents/ChipDndContext/ChipDndContext.js.map +1 -0
  62. package/build/main//321/201omponents/ChipDndContext/index.d.ts +1 -0
  63. package/build/main//321/201omponents/ChipDndContext/index.js +2 -0
  64. package/build/main//321/201omponents/ChipDndContext/index.js.map +1 -0
  65. package/build/main//321/201omponents/ConfirmationModal/ConfirmationModal.d.ts +1 -1
  66. package/build/main//321/201omponents/ConfirmationModal/ConfirmationModal.js +3 -2
  67. package/build/main//321/201omponents/ConfirmationModal/ConfirmationModal.js.map +1 -1
  68. package/build/main//321/201omponents/ConfirmationModal/types.d.ts +5 -2
  69. package/build/main//321/201omponents/ContextMenu/ContextMenu.d.ts +1 -1
  70. package/build/main//321/201omponents/ContextMenu/ContextMenu.js +66 -26
  71. package/build/main//321/201omponents/ContextMenu/ContextMenu.js.map +1 -1
  72. package/build/main//321/201omponents/ContextMenu/types.d.ts +9 -7
  73. package/build/main//321/201omponents/ContextMenuItem/ContextMenuItem.d.ts +4 -0
  74. package/build/main//321/201omponents/ContextMenuItem/ContextMenuItem.js +47 -0
  75. package/build/main//321/201omponents/ContextMenuItem/ContextMenuItem.js.map +1 -0
  76. package/build/main//321/201omponents/ContextMenuItem/index.d.ts +1 -0
  77. package/build/main//321/201omponents/ContextMenuItem/index.js +2 -0
  78. package/build/main//321/201omponents/ContextMenuItem/index.js.map +1 -0
  79. package/build/main//321/201omponents/ContextMenuItem/types.d.ts +24 -0
  80. package/build/main//321/201omponents/ContextMenuItem/types.js +6 -0
  81. package/build/main//321/201omponents/ContextMenuItem/types.js.map +1 -0
  82. package/build/main//321/201omponents/CustomSelect/CustomSelect.js +7 -6
  83. package/build/main//321/201omponents/CustomSelect/CustomSelect.js.map +1 -1
  84. package/build/main//321/201omponents/CustomSelect/selectStyles.js +20 -21
  85. package/build/main//321/201omponents/CustomSelect/selectStyles.js.map +1 -1
  86. package/build/main//321/201omponents/CustomSelect/types.d.ts +7 -1
  87. package/build/main//321/201omponents/CustomSelectProfiles/CustomSelectProfiles.d.ts +1 -1
  88. package/build/main//321/201omponents/CustomSelectProfiles/CustomSelectProfiles.js +33 -24
  89. package/build/main//321/201omponents/CustomSelectProfiles/CustomSelectProfiles.js.map +1 -1
  90. package/build/main//321/201omponents/CustomSelectProfiles/selectStyles.d.ts +11 -0
  91. package/build/main//321/201omponents/CustomSelectProfiles/selectStyles.js +38 -0
  92. package/build/main//321/201omponents/CustomSelectProfiles/selectStyles.js.map +1 -0
  93. package/build/main//321/201omponents/CustomSelectProfiles/types.d.ts +4 -5
  94. package/build/main//321/201omponents/DraggablePopup/DraggablePopup.d.ts +1 -1
  95. package/build/main//321/201omponents/DraggablePopup/DraggablePopup.js +25 -20
  96. package/build/main//321/201omponents/DraggablePopup/DraggablePopup.js.map +1 -1
  97. package/build/main//321/201omponents/DraggablePopup/types.d.ts +7 -8
  98. package/build/main//321/201omponents/Flex/Flex.d.ts +1 -1
  99. package/build/main//321/201omponents/Flex/Flex.js +2 -2
  100. package/build/main//321/201omponents/Flex/Flex.js.map +1 -1
  101. package/build/main//321/201omponents/Flex/types.d.ts +2 -0
  102. package/build/main//321/201omponents/Input/Input.d.ts +1 -1
  103. package/build/main//321/201omponents/Input/Input.js +75 -33
  104. package/build/main//321/201omponents/Input/Input.js.map +1 -1
  105. package/build/main//321/201omponents/Input/types.d.ts +10 -3
  106. package/build/main//321/201omponents/ListItem/ListItem.js +21 -17
  107. package/build/main//321/201omponents/ListItem/ListItem.js.map +1 -1
  108. package/build/main//321/201omponents/ListItem/types.d.ts +7 -3
  109. package/build/main//321/201omponents/Modal/Modal.d.ts +3 -2
  110. package/build/main//321/201omponents/Modal/Modal.js +100 -41
  111. package/build/main//321/201omponents/Modal/Modal.js.map +1 -1
  112. package/build/main//321/201omponents/Modal/types.d.ts +32 -2
  113. package/build/main//321/201omponents/Notification/Notification.d.ts +4 -6
  114. package/build/main//321/201omponents/Notification/Notification.js +68 -25
  115. package/build/main//321/201omponents/Notification/Notification.js.map +1 -1
  116. package/build/main//321/201omponents/Notification/types.d.ts +17 -2
  117. package/build/main//321/201omponents/Stories/Stories.js +72 -4
  118. package/build/main//321/201omponents/Stories/Stories.js.map +1 -1
  119. package/build/main//321/201omponents/Textarea/Textarea.d.ts +1 -1
  120. package/build/main//321/201omponents/Textarea/Textarea.js +3 -2
  121. package/build/main//321/201omponents/Textarea/Textarea.js.map +1 -1
  122. package/build/main//321/201omponents/Textarea/types.d.ts +2 -1
  123. package/build/main//321/201omponents/UserDropdown/ContactInfo/ContactInfo.js +6 -0
  124. package/build/main//321/201omponents/UserDropdown/ContactInfo/ContactInfo.js.map +1 -1
  125. package/build/main//321/201omponents/UserDropdown/LoadingMessage/LoadingMessage.d.ts +2 -1
  126. package/build/main//321/201omponents/UserDropdown/LoadingMessage/LoadingMessage.js +4 -3
  127. package/build/main//321/201omponents/UserDropdown/LoadingMessage/LoadingMessage.js.map +1 -1
  128. package/build/main//321/201omponents/UserDropdown/MenuList/MenuList.js +21 -50
  129. package/build/main//321/201omponents/UserDropdown/MenuList/MenuList.js.map +1 -1
  130. package/build/main//321/201omponents/UserDropdown/MultiValueLabel/MultiValueLabel.d.ts +3 -2
  131. package/build/main//321/201omponents/UserDropdown/MultiValueLabel/MultiValueLabel.js +33 -36
  132. package/build/main//321/201omponents/UserDropdown/MultiValueLabel/MultiValueLabel.js.map +1 -1
  133. package/build/main//321/201omponents/UserDropdown/Option/Option.js +2 -2
  134. package/build/main//321/201omponents/UserDropdown/Option/Option.js.map +1 -1
  135. package/build/main//321/201omponents/UserDropdown/SearchInCatalogButton/SearchInCatalogButton.js +1 -0
  136. package/build/main//321/201omponents/UserDropdown/SearchInCatalogButton/SearchInCatalogButton.js.map +1 -1
  137. package/build/main//321/201omponents/UserDropdown/UserDropdown.d.ts +4 -3
  138. package/build/main//321/201omponents/UserDropdown/UserDropdown.js +201 -76
  139. package/build/main//321/201omponents/UserDropdown/UserDropdown.js.map +1 -1
  140. package/build/main//321/201omponents/UserDropdown/selectStyles.d.ts +1 -1
  141. package/build/main//321/201omponents/UserDropdown/selectStyles.js +26 -21
  142. package/build/main//321/201omponents/UserDropdown/selectStyles.js.map +1 -1
  143. package/build/main//321/201omponents/UserDropdown/types.d.ts +43 -8
  144. package/build/main//321/201omponents/UserDropdown/types.js.map +1 -1
  145. package/package.json +11 -7
  146. package/build/main/assets/icons/avatar-arrow-down.svg +0 -3
  147. package/build/main/assets/icons/avatar-arrow-up.svg +0 -3
  148. package/build/main/hooks/useLongTap.d.ts +0 -12
  149. package/build/main/hooks/useLongTap.js +0 -29
  150. 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
- export var EMAIL_FIELD = 'email';
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) { return _jsx(components.Input, __assign({}, props, { enterKeyHint: "done" })); };
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 = _s === void 0 ? LANGUAGES.ru : _s, _t = _a.layoutType, layoutType = _t === void 0 ? LAYOUT_TYPE.minimal : _t, externalInputValue = _a.externalInputValue, title = _a.title, mask = _a.mask, placeholder = _a.placeholder, hint = _a.hint, onShowCatalogSearchButtonClick = _a.onShowCatalogSearchButtonClick, noOptionsMessage = _a.noOptionsMessage, maxMembersCount = _a.maxMembersCount, _u = _a.menuPosition, menuPosition = _u === void 0 ? MENU_POSITIONS.top : _u, _v = _a.autoFocus, autoFocus = _v === void 0 ? false : _v, containerClassName = _a.containerClassName, containerPadding = _a.containerPadding, containerStyles = _a.containerStyles, _w = _a.selectedEntries, selectedEntries = _w === void 0 ? [] : _w, corporateEntries = _a.corporateEntries, myContactsEntries = _a.myContactsEntries, _x = _a.emailsToExclude, emailsToExclude = _x === void 0 ? [] : _x, onInputChange = _a.onInputChange, onChange = _a.onChange, onMenuOpen = _a.onMenuOpen, onMenuClose = _a.onMenuClose, onLoadNextPage = _a.onLoadNextPage;
86
- var _y = useState(''), userDropdownId = _y[0], setUserDropdownId = _y[1];
87
- var _z = useState([]), selectedUsers = _z[0], setSelectedUsers = _z[1];
88
- var _0 = useState(''), paddingLeft = _0[0], setPaddingLeft = _0[1];
89
- var _1 = useState(0), maskWidth = _1[0], setMaskWidth = _1[1];
90
- var _2 = useState(false), isError = _2[0], setIsError = _2[1];
91
- var _3 = useState(true), isSearchable = _3[0], setIsSearchable = _3[1];
92
- var _4 = useState(false), isUserTyping = _4[0], setIsUserTyping = _4[1];
93
- var _5 = useState(null), modalData = _5[0], setModalData = _5[1];
94
- var _6 = useState(''), chipLabelWithMaxWidth = _6[0], setChipLabelWithMaxWidth = _6[1];
95
- var _7 = useState(''), inputValue = _7[0], setInputValue = _7[1];
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
- var checkIsEmailToExclude = function (email) { return includes(emailsToExclude, email); };
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
- setIsUserTyping(false);
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
- handleResetError();
186
- onMenuClose && 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, prevInputValue = additionalInfo.prevInputValue;
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 : inputValue);
257
+ setInputValue(isUserAlreadySelected || checkIsEmailToExclude(trimPrevInputValue_1) ? trimPrevInputValue_1 : prevInputValue);
202
258
  }
203
259
  }
204
- setIsUserTyping(!isEmpty(inputValue));
205
- handleResetError();
206
- inputValue.length >= MIN_INPUT_SYMBOLS ? requestInputChangeDebounce(inputValue) : resetIsUserTypingDebounce();
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 (needToShowError) {
215
- if (needToShowError === void 0) { needToShowError = true; }
273
+ var handleAddUser = function () {
216
274
  var props = selectRef.current.props;
217
- var options = props.options, inputValue = props.inputValue, onChange = props.onChange;
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 && needToShowError && isSingleEmailEntered)
252
- setIsError(true);
309
+ if (isUserAlreadySelected && isSingleEmailEntered)
310
+ return;
253
311
  else
254
- handleInputChange('', { action: INPUT_ACTIONS.change, prevInputValue: trimInputValue });
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 === '' && !isEmpty(selectedUsers);
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, email) {
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 !== email;
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 = chips.length - collapsableChips;
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(false)) === null || _a === void 0 ? void 0 : _a.then(onBlurComplete);
512
+ (_a = handleAddUser()) === null || _a === void 0 ? void 0 : _a.then(onBlurComplete);
435
513
  skipAddUserToChipsOnNextBlurRef.current = false;
436
514
  };
437
- var handleFocus = function () {
438
- if (isIosPlatform(platform)) {
439
- new Promise(function (resolve) { return resolve(); }).then(function () { var _a; return (_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.focus(); });
440
- }
441
- else {
442
- setTimeout(function () { var _a; return (_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, 100);
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 isOrganizer = entity.isOrganizer, isWarning = entity.isWarning, isLoading = entity.isLoading, uid = entity.uid, userType = entity.userType, contextMenuItems = entity.contextMenuItems, isResetChipsToInputValue = entity.isResetChipsToInputValue;
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
- isOrganizer: isOrganizer,
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
- resetIsUserTypingDebounce.cancel();
632
+ clearUserTypingTimeout();
530
633
  };
531
- }, [requestInputChangeDebounce, resetIsUserTypingDebounce]);
532
- var OptionComponent = useCallback(function (props) { return _jsx(Option, __assign({}, props, { children: props.children })); }, []);
533
- var MenuListComponent = useCallback(function (props) { return (_jsx(MenuList, __assign({}, props, { children: props.children, selectRef: selectRef, scrollFromTop: menuScrollFromTop, language: language, hasNextPage: hasNextPage, isLoading: isLoading, isShowCatalogSearchButton: isShowCatalogSearchButton, onShowCatalogSearchButtonClick: onShowCatalogSearchButtonClick, isUserTyping: isUserTyping, isNextPageLoading: isNextPageLoading, onLoadNextPage: function (inputValue) { return onLoadNextPage && onLoadNextPage(inputValue); } }))); }, [language, hasNextPage, isLoading, isShowCatalogSearchButton, onShowCatalogSearchButtonClick, isUserTyping, isNextPageLoading, onLoadNextPage]);
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 MultiValueLabelComponent = function (props) { return (_jsx(MultiValueLabel, __assign({}, props, { isChipsOutline: isChipsOutline, transformCurrentChipToInputValue: transformCurrentChipToInputValue }))); };
536
- 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" }, { children: [renderMask(), _jsx(Select, { ref: selectRef, menuIsOpen: isInputHidden ? !!externalInputValue : undefined, isMulti: true, openMenuOnFocus: true, blurInputOnSelect: false, captureMenuScroll: false, isSearchable: isSearchable, menuPlacement: menuPosition, controlShouldRenderValue: isChipsVisible, backspaceRemovesValue: isChipsVisible, isDisabled: isDisabled, closeMenuOnSelect: isMenuCloseOnSelect, isLoading: isLoading || isUserTyping, isClearable: false, styles: generateStyles(), placeholder: placeholder || '', noOptionsMessage: generateNoOptionsMessage, loadingMessage: function () { return _jsx(LoadingMessage, {}); }, value: selectedUsers, inputValue: inputValue, options: !isNull(corporateEntries) || !isNull(myContactsEntries) ? generateOptions() : undefined, filterOption: handleFilterOption, onInputChange: handleInputChange, onChange: handleChange, onMenuClose: handleMenuClose, onMenuOpen: onMenuOpen, onKeyDown: handleKeyDown, onBlur: handleBlur, autoFocus: autoFocus, onFocus: handleFocus, components: {
537
- Input: Input,
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