@expressms/smartapp-ui 3.0.0-alpha.99 → 3.0.1

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 (247) hide show
  1. package/README.md +1 -0
  2. package/build/main/assets/icons/chevron.svg +3 -0
  3. package/build/main/assets/icons/close-modal.svg +1 -1
  4. package/build/main/assets/icons/copy.svg +3 -0
  5. package/build/main/assets/icons/department.svg +3 -0
  6. package/build/main/assets/icons/doc-small.svg +5 -5
  7. package/build/main/assets/icons/download.svg +3 -0
  8. package/build/main/assets/icons/file-small.svg +5 -5
  9. package/build/main/assets/icons/file.svg +1 -1
  10. package/build/main/assets/icons/image-no-preview-small.svg +11 -0
  11. package/build/main/assets/icons/image-no-preview.svg +11 -0
  12. package/build/main/assets/icons/job-position.svg +3 -0
  13. package/build/main/assets/icons/mail.svg +2 -2
  14. package/build/main/assets/icons/notification-close.svg +1 -1
  15. package/build/main/assets/icons/notification-error.svg +5 -0
  16. package/build/main/assets/icons/notification-info-filled.svg +1 -1
  17. package/build/main/assets/icons/office.svg +3 -0
  18. package/build/main/assets/icons/pdf-small.svg +5 -5
  19. package/build/main/assets/icons/ppt-small.svg +5 -5
  20. package/build/main/assets/icons/private.svg +4 -11
  21. package/build/main/assets/icons/remove.svg +3 -0
  22. package/build/main/assets/icons/search.svg +1 -1
  23. package/build/main/assets/icons/server.svg +3 -0
  24. package/build/main/assets/icons/txt-small.svg +5 -5
  25. package/build/main/assets/icons/video-no-preview-small.svg +11 -0
  26. package/build/main/assets/icons/video-no-preview.svg +11 -0
  27. package/build/main/assets/icons/xls-small.svg +5 -5
  28. package/build/main/assets/storybook/index.d.ts +2 -0
  29. package/build/main/assets/storybook/index.js +2 -0
  30. package/build/main/assets/storybook/index.js.map +1 -1
  31. package/build/main/constants/constants.d.ts +20 -7
  32. package/build/main/constants/constants.js +21 -4
  33. package/build/main/constants/constants.js.map +1 -1
  34. package/build/main/constants/types.d.ts +5 -2
  35. package/build/main/helpers/fontScale.d.ts +3 -0
  36. package/build/main/helpers/fontScale.js +15 -0
  37. package/build/main/helpers/fontScale.js.map +1 -0
  38. package/build/main/helpers/index.d.ts +11 -10
  39. package/build/main/helpers/index.js +24 -6
  40. package/build/main/helpers/index.js.map +1 -1
  41. package/build/main/hooks/useCharHintDisplay.d.ts +2 -1
  42. package/build/main/hooks/useCharHintDisplay.js +28 -6
  43. package/build/main/hooks/useCharHintDisplay.js.map +1 -1
  44. package/build/main/hooks/useFontScale.d.ts +1 -0
  45. package/build/main/hooks/useFontScale.js +29 -0
  46. package/build/main/hooks/useFontScale.js.map +1 -0
  47. package/build/main/hooks/useMobileLongTap.d.ts +1 -1
  48. package/build/main/hooks/useMobileLongTap.js +12 -2
  49. package/build/main/hooks/useMobileLongTap.js.map +1 -1
  50. package/build/main/hooks/useModal.d.ts +6 -5
  51. package/build/main/hooks/useModal.js +79 -25
  52. package/build/main/hooks/useModal.js.map +1 -1
  53. package/build/main/index.d.ts +2 -2
  54. package/build/main/index.js +2 -2
  55. package/build/main/index.js.map +1 -1
  56. package/build/main/styles/styles.scss +2 -2
  57. package/build/main//321/201omponents/ActionModal/ActionModal.d.ts +2 -1
  58. package/build/main//321/201omponents/ActionModal/ActionModal.js +4 -1
  59. package/build/main//321/201omponents/ActionModal/ActionModal.js.map +1 -1
  60. package/build/main//321/201omponents/AttachedFile/AttachedFile.d.ts +2 -1
  61. package/build/main//321/201omponents/AttachedFile/AttachedFile.js +81 -26
  62. package/build/main//321/201omponents/AttachedFile/AttachedFile.js.map +1 -1
  63. package/build/main//321/201omponents/AttachedFile/types.d.ts +1 -0
  64. package/build/main//321/201omponents/Avatar/Avatar.d.ts +1 -1
  65. package/build/main//321/201omponents/Avatar/Avatar.js +16 -13
  66. package/build/main//321/201omponents/Avatar/Avatar.js.map +1 -1
  67. package/build/main//321/201omponents/Avatar/types.d.ts +5 -2
  68. package/build/main//321/201omponents/Avatar/types.js +5 -2
  69. package/build/main//321/201omponents/Avatar/types.js.map +1 -1
  70. package/build/main//321/201omponents/Button/Button.d.ts +2 -1
  71. package/build/main//321/201omponents/Button/Button.js +9 -9
  72. package/build/main//321/201omponents/Button/Button.js.map +1 -1
  73. package/build/main//321/201omponents/Button/types.d.ts +1 -0
  74. package/build/main//321/201omponents/CachedImage/CachedImage.d.ts +2 -1
  75. package/build/main//321/201omponents/Calendar/Calendar.d.ts +14 -1
  76. package/build/main//321/201omponents/Calendar/Calendar.js +179 -33
  77. package/build/main//321/201omponents/Calendar/Calendar.js.map +1 -1
  78. package/build/main//321/201omponents/Calendar/types.d.ts +5 -1
  79. package/build/main//321/201omponents/Charts/ChartBar/ChartBar.d.ts +2 -1
  80. package/build/main//321/201omponents/Charts/ChartBar/ChartBar.js +7 -5
  81. package/build/main//321/201omponents/Charts/ChartBar/ChartBar.js.map +1 -1
  82. package/build/main//321/201omponents/Charts/ChartLegend/ChartLegend.d.ts +2 -1
  83. package/build/main//321/201omponents/Charts/ChartLine/ChartLine.d.ts +2 -1
  84. package/build/main//321/201omponents/Charts/ChartLine/ChartLine.js +10 -7
  85. package/build/main//321/201omponents/Charts/ChartLine/ChartLine.js.map +1 -1
  86. package/build/main//321/201omponents/Charts/ChartPie/ChartPie.d.ts +2 -1
  87. package/build/main//321/201omponents/Charts/ChartPie/ChartPie.js +7 -5
  88. package/build/main//321/201omponents/Charts/ChartPie/ChartPie.js.map +1 -1
  89. package/build/main//321/201omponents/Charts/constants.d.ts +1 -1
  90. package/build/main//321/201omponents/Charts/constants.js +4 -3
  91. package/build/main//321/201omponents/Charts/constants.js.map +1 -1
  92. package/build/main//321/201omponents/Charts/helpers.d.ts +1 -1
  93. package/build/main//321/201omponents/Charts/helpers.js +3 -2
  94. package/build/main//321/201omponents/Charts/helpers.js.map +1 -1
  95. package/build/main//321/201omponents/Checkbox/Checkbox.d.ts +2 -1
  96. package/build/main//321/201omponents/Chip/Chip.d.ts +1 -1
  97. package/build/main//321/201omponents/Chip/Chip.js +67 -28
  98. package/build/main//321/201omponents/Chip/Chip.js.map +1 -1
  99. package/build/main//321/201omponents/Chip/types.d.ts +4 -0
  100. package/build/main//321/201omponents/ChipDndContext/ChipDndContext.d.ts +2 -2
  101. package/build/main//321/201omponents/ConfirmationModal/ConfirmationModal.d.ts +2 -1
  102. package/build/main//321/201omponents/ConfirmationModal/ConfirmationModal.js +3 -0
  103. package/build/main//321/201omponents/ConfirmationModal/ConfirmationModal.js.map +1 -1
  104. package/build/main//321/201omponents/ContextMenu/ContextMenu.d.ts +2 -1
  105. package/build/main//321/201omponents/ContextMenu/ContextMenu.js +13 -12
  106. package/build/main//321/201omponents/ContextMenu/ContextMenu.js.map +1 -1
  107. package/build/main//321/201omponents/ContextMenu/types.d.ts +6 -1
  108. package/build/main//321/201omponents/ContextMenuItem/ContextMenuItem.d.ts +2 -1
  109. package/build/main//321/201omponents/ContextMenuItem/ContextMenuItem.js +9 -7
  110. package/build/main//321/201omponents/ContextMenuItem/ContextMenuItem.js.map +1 -1
  111. package/build/main//321/201omponents/ContextMenuItem/types.d.ts +5 -1
  112. package/build/main//321/201omponents/CustomSelect/CustomSelect.d.ts +1 -1
  113. package/build/main//321/201omponents/CustomSelect/CustomSelect.js +51 -19
  114. package/build/main//321/201omponents/CustomSelect/CustomSelect.js.map +1 -1
  115. package/build/main//321/201omponents/CustomSelect/selectStyles.d.ts +1 -1
  116. package/build/main//321/201omponents/CustomSelect/selectStyles.js +24 -15
  117. package/build/main//321/201omponents/CustomSelect/selectStyles.js.map +1 -1
  118. package/build/main//321/201omponents/CustomSelect/types.d.ts +15 -4
  119. package/build/main//321/201omponents/CustomSelectProfiles/CustomSelectProfiles.d.ts +2 -1
  120. package/build/main//321/201omponents/CustomSelectProfiles/CustomSelectProfiles.js +7 -7
  121. package/build/main//321/201omponents/CustomSelectProfiles/CustomSelectProfiles.js.map +1 -1
  122. package/build/main//321/201omponents/CustomSelectProfiles/selectStyles.d.ts +2 -1
  123. package/build/main//321/201omponents/CustomSelectProfiles/selectStyles.js +9 -5
  124. package/build/main//321/201omponents/CustomSelectProfiles/selectStyles.js.map +1 -1
  125. package/build/main//321/201omponents/CustomSelectProfiles/types.d.ts +2 -0
  126. package/build/main//321/201omponents/DragAndDrop/DragAndDrop.d.ts +2 -1
  127. package/build/main//321/201omponents/DragAndDrop/DragAndDrop.js +2 -2
  128. package/build/main//321/201omponents/DragAndDrop/DragAndDrop.js.map +1 -1
  129. package/build/main//321/201omponents/DraggablePopup/DraggablePopup.d.ts +2 -1
  130. package/build/main//321/201omponents/DraggablePopup/DraggablePopup.js +15 -12
  131. package/build/main//321/201omponents/DraggablePopup/DraggablePopup.js.map +1 -1
  132. package/build/main//321/201omponents/DraggablePopup/types.d.ts +2 -0
  133. package/build/main//321/201omponents/Error/Error.d.ts +2 -1
  134. package/build/main//321/201omponents/Flex/Flex.d.ts +2 -1
  135. package/build/main//321/201omponents/Flex/HFlex/HFlex.d.ts +2 -1
  136. package/build/main//321/201omponents/Flex/VFlex/VFlex.d.ts +2 -1
  137. package/build/main//321/201omponents/Header/Header.d.ts +2 -1
  138. package/build/main//321/201omponents/Input/Input.d.ts +2 -1
  139. package/build/main//321/201omponents/Input/Input.js +53 -22
  140. package/build/main//321/201omponents/Input/Input.js.map +1 -1
  141. package/build/main//321/201omponents/Input/types.d.ts +3 -0
  142. package/build/main//321/201omponents/ListItem/ListItem.d.ts +2 -1
  143. package/build/main//321/201omponents/ListItem/ListItem.js +7 -5
  144. package/build/main//321/201omponents/ListItem/ListItem.js.map +1 -1
  145. package/build/main//321/201omponents/ListItem/types.d.ts +3 -2
  146. package/build/main//321/201omponents/Loader/Loader.d.ts +2 -1
  147. package/build/main//321/201omponents/Loader/Loader.js +3 -3
  148. package/build/main//321/201omponents/Loader/Loader.js.map +1 -1
  149. package/build/main//321/201omponents/Modal/Modal.d.ts +2 -1
  150. package/build/main//321/201omponents/Modal/Modal.js +191 -111
  151. package/build/main//321/201omponents/Modal/Modal.js.map +1 -1
  152. package/build/main//321/201omponents/Modal/types.d.ts +14 -3
  153. package/build/main//321/201omponents/Notification/Notification.d.ts +3 -4
  154. package/build/main//321/201omponents/Notification/Notification.js +36 -70
  155. package/build/main//321/201omponents/Notification/Notification.js.map +1 -1
  156. package/build/main//321/201omponents/Notification/constants.d.ts +34 -0
  157. package/build/main//321/201omponents/Notification/constants.js +59 -0
  158. package/build/main//321/201omponents/Notification/constants.js.map +1 -0
  159. package/build/main//321/201omponents/Notification/types.d.ts +22 -17
  160. package/build/main//321/201omponents/ProgressBar/ProgressBar.d.ts +2 -1
  161. package/build/main//321/201omponents/RadioButton/RadioButton.d.ts +2 -1
  162. package/build/main//321/201omponents/ScrollBar/ScrollBar.d.ts +2 -1
  163. package/build/main//321/201omponents/ScrollBar/ScrollBar.js +2 -2
  164. package/build/main//321/201omponents/ScrollBar/ScrollBar.js.map +1 -1
  165. package/build/main//321/201omponents/Skeleton/Skeleton.d.ts +2 -1
  166. package/build/main//321/201omponents/Skeleton/Skeleton.js +1 -1
  167. package/build/main//321/201omponents/Skeleton/Skeleton.js.map +1 -1
  168. package/build/main//321/201omponents/Stories/Stories.d.ts +2 -1
  169. package/build/main//321/201omponents/Stories/Stories.js +4 -4
  170. package/build/main//321/201omponents/Stories/Stories.js.map +1 -1
  171. package/build/main//321/201omponents/SyncLoader/SyncLoader.d.ts +2 -1
  172. package/build/main//321/201omponents/Textarea/Textarea.d.ts +2 -1
  173. package/build/main//321/201omponents/Textarea/Textarea.js +2 -2
  174. package/build/main//321/201omponents/Textarea/Textarea.js.map +1 -1
  175. package/build/main//321/201omponents/Textarea/types.d.ts +2 -2
  176. package/build/main//321/201omponents/Toggle/Toggle.d.ts +2 -1
  177. package/build/main//321/201omponents/UserDropdown/ContactBottomSheet/ContactBottomSheet.d.ts +2 -1
  178. package/build/main//321/201omponents/UserDropdown/ContactBottomSheet/ContactBottomSheet.js +12 -3
  179. package/build/main//321/201omponents/UserDropdown/ContactBottomSheet/ContactBottomSheet.js.map +1 -1
  180. package/build/main//321/201omponents/UserDropdown/ContactInfo/ContactInfo.d.ts +2 -1
  181. package/build/main//321/201omponents/UserDropdown/ContactInfo/ContactInfo.js +34 -13
  182. package/build/main//321/201omponents/UserDropdown/ContactInfo/ContactInfo.js.map +1 -1
  183. package/build/main//321/201omponents/UserDropdown/LoadingMessage/LoadingMessage.d.ts +2 -1
  184. package/build/main//321/201omponents/UserDropdown/MenuList/MenuList.d.ts +2 -1
  185. package/build/main//321/201omponents/UserDropdown/MenuList/MenuList.js +20 -15
  186. package/build/main//321/201omponents/UserDropdown/MenuList/MenuList.js.map +1 -1
  187. package/build/main//321/201omponents/UserDropdown/MultiValueLabel/MultiValueLabel.d.ts +1 -1
  188. package/build/main//321/201omponents/UserDropdown/MultiValueLabel/MultiValueLabel.js +5 -5
  189. package/build/main//321/201omponents/UserDropdown/MultiValueLabel/MultiValueLabel.js.map +1 -1
  190. package/build/main//321/201omponents/UserDropdown/Option/Option.d.ts +2 -1
  191. package/build/main//321/201omponents/UserDropdown/Option/Option.js +18 -13
  192. package/build/main//321/201omponents/UserDropdown/Option/Option.js.map +1 -1
  193. package/build/main//321/201omponents/UserDropdown/SearchInCatalogButton/SearchInCatalogButton.d.ts +2 -1
  194. package/build/main//321/201omponents/UserDropdown/SearchInCatalogButton/SearchInCatalogButton.js +6 -9
  195. package/build/main//321/201omponents/UserDropdown/SearchInCatalogButton/SearchInCatalogButton.js.map +1 -1
  196. package/build/main//321/201omponents/UserDropdown/UserDropdown.d.ts +1 -2
  197. package/build/main//321/201omponents/UserDropdown/UserDropdown.js +150 -275
  198. package/build/main//321/201omponents/UserDropdown/UserDropdown.js.map +1 -1
  199. package/build/main//321/201omponents/UserDropdown/components/Delimiter.d.ts +9 -0
  200. package/build/main//321/201omponents/UserDropdown/components/Delimiter.js +10 -0
  201. package/build/main//321/201omponents/UserDropdown/components/Delimiter.js.map +1 -0
  202. package/build/main//321/201omponents/UserDropdown/components/Hint.d.ts +6 -0
  203. package/build/main//321/201omponents/UserDropdown/components/Hint.js +21 -0
  204. package/build/main//321/201omponents/UserDropdown/components/Hint.js.map +1 -0
  205. package/build/main//321/201omponents/UserDropdown/components/Input.d.ts +3 -0
  206. package/build/main//321/201omponents/UserDropdown/components/Input.js +32 -0
  207. package/build/main//321/201omponents/UserDropdown/components/Input.js.map +1 -0
  208. package/build/main//321/201omponents/UserDropdown/components/Mask.d.ts +8 -0
  209. package/build/main//321/201omponents/UserDropdown/components/Mask.js +19 -0
  210. package/build/main//321/201omponents/UserDropdown/components/Mask.js.map +1 -0
  211. package/build/main//321/201omponents/UserDropdown/components/Title.d.ts +6 -0
  212. package/build/main//321/201omponents/UserDropdown/components/Title.js +18 -0
  213. package/build/main//321/201omponents/UserDropdown/components/Title.js.map +1 -0
  214. package/build/main//321/201omponents/UserDropdown/constants.d.ts +57 -0
  215. package/build/main//321/201omponents/UserDropdown/constants.js +73 -0
  216. package/build/main//321/201omponents/UserDropdown/constants.js.map +1 -1
  217. package/build/main//321/201omponents/UserDropdown/helpers.d.ts +84 -41
  218. package/build/main//321/201omponents/UserDropdown/helpers.js +188 -18
  219. package/build/main//321/201omponents/UserDropdown/helpers.js.map +1 -1
  220. package/build/main//321/201omponents/UserDropdown/selectStyles.d.ts +1 -1
  221. package/build/main//321/201omponents/UserDropdown/selectStyles.js +45 -20
  222. package/build/main//321/201omponents/UserDropdown/selectStyles.js.map +1 -1
  223. package/build/main//321/201omponents/UserDropdown/types.d.ts +123 -69
  224. package/build/main//321/201omponents/UserDropdown/types.js +1 -8
  225. package/build/main//321/201omponents/UserDropdown/types.js.map +1 -1
  226. package/package.json +5 -5
  227. package/build/main/assets/icons/logout.svg +0 -4
  228. package/build/main/assets/icons/plus.svg +0 -4
  229. package/build/main/assets/icons/unread-mails.svg +0 -4
  230. package/build/main//321/201omponents/Profile/Profile.d.ts +0 -4
  231. package/build/main//321/201omponents/Profile/Profile.js +0 -42
  232. package/build/main//321/201omponents/Profile/Profile.js.map +0 -1
  233. package/build/main//321/201omponents/Profile/index.d.ts +0 -1
  234. package/build/main//321/201omponents/Profile/index.js +0 -2
  235. package/build/main//321/201omponents/Profile/index.js.map +0 -1
  236. package/build/main//321/201omponents/Profile/types.d.ts +0 -14
  237. package/build/main//321/201omponents/Profile/types.js +0 -2
  238. package/build/main//321/201omponents/Profile/types.js.map +0 -1
  239. package/build/main//321/201omponents/Switcher/Switcher.d.ts +0 -4
  240. package/build/main//321/201omponents/Switcher/Switcher.js +0 -34
  241. package/build/main//321/201omponents/Switcher/Switcher.js.map +0 -1
  242. package/build/main//321/201omponents/Switcher/index.d.ts +0 -1
  243. package/build/main//321/201omponents/Switcher/index.js +0 -2
  244. package/build/main//321/201omponents/Switcher/index.js.map +0 -1
  245. package/build/main//321/201omponents/Switcher/types.d.ts +0 -8
  246. package/build/main//321/201omponents/Switcher/types.js +0 -2
  247. package/build/main//321/201omponents/Switcher/types.js.map +0 -1
@@ -23,9 +23,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
23
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
- import { ru } from 'convert-layout';
27
- import { debounce, includes, isEmpty, isNil, isNull, isString, omit, uniq, uniqBy } from 'lodash';
28
- import { transliterate as tr } from 'transliteration';
26
+ import { debounce, includes, isArray, isEmpty, isNil, isNull, omit, pick, uniqBy } from 'lodash';
29
27
  import { useDroppable } from '@dnd-kit/core';
30
28
  import { useCharHintDisplay } from '../../hooks/useCharHintDisplay';
31
29
  import Modal from '../Modal';
@@ -36,89 +34,36 @@ import MultiValueLabel from './MultiValueLabel/MultiValueLabel';
36
34
  import Option from './Option/Option';
37
35
  import SearchInCatalogButton from './SearchInCatalogButton/SearchInCatalogButton';
38
36
  import selectStyles from './selectStyles';
39
- import { checkIfContactTypeIsGroup, generateFontFamilyStyle, generateId, isIosPlatform, isMobilePlatform } from '../../helpers';
40
- import { DropdownIndicator, IndicatorSeparator, LoadingIndicator, MultiValueRemove, generateContactsOption, generateContactsOptionsToSelect, generateCorporateOption, generateCorporateOptionsToSelect, generateEnteredByUserOption, sortContacts, } from './helpers';
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';
37
+ import Delimiter from './components/Delimiter';
38
+ import Hint from './components/Hint';
39
+ import Input from './components/Input';
40
+ import Mask from './components/Mask';
41
+ import Title from './components/Title';
42
+ import { checkIfContactTypeIsGroup, checkIsIosPlatform, checkIsMobilePlatform, generateFontFamilyStyle, generateId } from '../../helpers';
43
+ import { DropdownIndicator, IndicatorSeparator, LoadingIndicator, MultiValueRemove, applyFilteringToOption, calculateHorizontalPadding, checkIsValueIsEmail, collapseChips, extractInputEmails, generateContactsOptionsToSelect, generateCorporateOptionsToSelect, generateEnteredByUserOption, retrieveChipsElements, retrieveFilteredContacts, setCaretInEmptyInput, setCaretPosition, transformSelectedEntity, transformSelectedUsers, unCollapseChips, } from './helpers';
44
+ import { BACKSPACE_KEY, DEFAULT_INPUT_PADDING, EMAIL_FIELD, EMPTY_STRING, ENTER_KEY, EVENT_LISTENER_TYPES, FULL_HEIGHT_BOTTOM_SHEET_TOP_MARGIN, LANGUAGES, LAYOUT_TYPE, MENU_POSITIONS, MIN_INPUT_SYMBOLS, PLATFORM, RENDER_DELAY, SEARCH_PLACEHOLDER, SPACE, SPACE_KEY, } from '../../constants';
45
+ import { CLEAR_USER_TYPING_TIMEOUT, COMMON_FIELDS_TO_OMIT, COMMON_FIELDS_TO_PICK, DEFAULT_MAX_ROWS_COUNT_TO_COLLAPSE_CHIPS, DEFAULT_MENU_LIST_MAX_HEIGHT, EMAIL_SEPARATORS, INPUT_ACTIONS, MENU_ACTIONS, PADDING_WITH_CLEAR_ICON, USER_TYPING_TIMEOUT, } from './constants';
43
46
  import '../../styles/styles.scss';
44
- var THREE_DIGIT_NUMBER_WIDTH = 48;
45
- var TWO_DIGIT_NUMBER_WIDTH = 40;
46
- var SINGLE_DIGIT_NUMBER_WIDTH = 32;
47
- var INPUT_SPACE_WIDTH = 46;
48
- var GAP = 8;
49
- var USER_TYPING_TIMEOUT = 1000;
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
- };
67
- var MENU_ACTIONS;
68
- (function (MENU_ACTIONS) {
69
- MENU_ACTIONS["close"] = "menu-close";
70
- })(MENU_ACTIONS || (MENU_ACTIONS = {}));
71
- var INPUT_ACTIONS;
72
- (function (INPUT_ACTIONS) {
73
- INPUT_ACTIONS["change"] = "input-change";
74
- INPUT_ACTIONS["blur"] = "input-blur";
75
- })(INPUT_ACTIONS || (INPUT_ACTIONS = {}));
76
- var EMAIL_SEPARATORS;
77
- (function (EMAIL_SEPARATORS) {
78
- EMAIL_SEPARATORS["semicolon"] = ";";
79
- EMAIL_SEPARATORS["comma"] = ",";
80
- })(EMAIL_SEPARATORS || (EMAIL_SEPARATORS = {}));
81
- var EXCLUDED_FIELDS;
82
- (function (EXCLUDED_FIELDS) {
83
- EXCLUDED_FIELDS["value"] = "value";
84
- EXCLUDED_FIELDS["label"] = "label";
85
- EXCLUDED_FIELDS["layoutType"] = "layoutType";
86
- EXCLUDED_FIELDS["platform"] = "platform";
87
- EXCLUDED_FIELDS["language"] = "language";
88
- EXCLUDED_FIELDS["isEnteredByUser"] = "isEnteredByUser";
89
- EXCLUDED_FIELDS["isMyContacts"] = "isMyContacts";
90
- EXCLUDED_FIELDS["isChipsCollapsable"] = "isChipsCollapsable";
91
- EXCLUDED_FIELDS["isSelectedChipHasTooltip"] = "isSelectedChipHasTooltip";
92
- EXCLUDED_FIELDS["isInputFocused"] = "isInputFocused";
93
- EXCLUDED_FIELDS["setIsSearchable"] = "setIsSearchable";
94
- EXCLUDED_FIELDS["selectRef"] = "selectRef";
95
- EXCLUDED_FIELDS["setModalData"] = "setModalData";
96
- EXCLUDED_FIELDS["collapsableChipsCount"] = "collapsableChipsCount";
97
- EXCLUDED_FIELDS["lastVisibleChipIndex"] = "lastVisibleChipIndex";
98
- EXCLUDED_FIELDS["fontFamily"] = "fontFamily";
99
- })(EXCLUDED_FIELDS || (EXCLUDED_FIELDS = {}));
100
- var COMMON_FIELDS_TO_OMIT = Object.keys(omit(EXCLUDED_FIELDS, [EXCLUDED_FIELDS.language, EXCLUDED_FIELDS.isMyContacts, EXCLUDED_FIELDS.isEnteredByUser]));
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
- };
47
+ var generateContactBottomSheetMaxHeight = function () { var _a, _b; return ((_b = (_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : window.innerHeight) - FULL_HEIGHT_BOTTOM_SHEET_TOP_MARGIN; };
106
48
  var UserDropdown = function (_a) {
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];
49
+ var _b;
50
+ 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.isError, isError = _g === void 0 ? false : _g, _h = _a.isChipsVisible, isChipsVisible = _h === void 0 ? true : _h, _j = _a.isChipsCollapsable, isChipsCollapsable = _j === void 0 ? false : _j, _k = _a.isSelectedChipHasTooltip, isSelectedChipHasTooltip = _k === void 0 ? false : _k, _l = _a.isMenuCloseOnBlur, isMenuCloseOnBlur = _l === void 0 ? true : _l, _m = _a.isMenuCloseOnSelect, isMenuCloseOnSelect = _m === void 0 ? true : _m, _o = _a.isFilteringDisabled, isFilteringDisabled = _o === void 0 ? false : _o, _p = _a.hasNextPage, hasNextPage = _p === void 0 ? false : _p, _q = _a.isNextPageLoading, isNextPageLoading = _q === void 0 ? false : _q, _r = _a.isInputHidden, isInputHidden = _r === void 0 ? false : _r, _s = _a.isBackspaceChipToInput, isBackspaceChipToInput = _s === void 0 ? false : _s, _t = _a.isShowCatalogSearchButton, isShowCatalogSearchButton = _t === void 0 ? false : _t, _u = _a.isDisabledMenuOffsetAtFullscreen, isDisabledMenuOffsetAtFullscreen = _u === void 0 ? false : _u, _v = _a.isDisabledCheckUniqueEmails, isDisabledCheckUniqueEmails = _v === void 0 ? false : _v, _w = _a.isMenuShadowless, isMenuShadowless = _w === void 0 ? false : _w, _x = _a.isStateless, isStateless = _x === void 0 ? false : _x, _y = _a.isSelectedOptionsHidden, isSelectedOptionsHidden = _y === void 0 ? true : _y, _z = _a.isMaskHiddenOnFocus, isMaskHiddenOnFocus = _z === void 0 ? false : _z, _0 = _a.isInputValueClearedOnBlur, isInputValueClearedOnBlur = _0 === void 0 ? false : _0, _1 = _a.isNotClickable, isNotClickable = _1 === void 0 ? false : _1, _2 = _a.isConvertTextToChipOnBlur, isConvertTextToChipOnBlur = _2 === void 0 ? true : _2, _3 = _a.language, language = _3 === void 0 ? LANGUAGES.ru : _3, _4 = _a.layoutType, layoutType = _4 === void 0 ? LAYOUT_TYPE.minimal : _4, externalInputValue = _a.externalInputValue, title = _a.title, contactInfoTitle = _a.contactInfoTitle, mask = _a.mask, suffix = _a.suffix, _5 = _a.placeholder, placeholder = _5 === void 0 ? EMPTY_STRING : _5, focusPlaceholder = _a.focusPlaceholder, hint = _a.hint, onShowCatalogSearchButtonClick = _a.onShowCatalogSearchButtonClick, noOptionsMessage = _a.noOptionsMessage, maxMembersCount = _a.maxMembersCount, skeletonRowsCount = _a.skeletonRowsCount, _6 = _a.maxRowsCountToCollapseChips, maxRowsCountToCollapseChips = _6 === void 0 ? DEFAULT_MAX_ROWS_COUNT_TO_COLLAPSE_CHIPS : _6, _7 = _a.menuListMaxHeight, menuListMaxHeight = _7 === void 0 ? DEFAULT_MENU_LIST_MAX_HEIGHT : _7, _8 = _a.menuShouldScrollIntoView, menuShouldScrollIntoView = _8 === void 0 ? true : _8, _9 = _a.menuPosition, menuPosition = _9 === void 0 ? MENU_POSITIONS.top : _9, menuLocation = _a.menuLocation, menuPortalTarget = _a.menuPortalTarget, _10 = _a.autoFocus, autoFocus = _10 === void 0 ? false : _10, containerClassName = _a.containerClassName, charHintClassName = _a.charHintClassName, noOptionsMessageClassName = _a.noOptionsMessageClassName, containerPadding = _a.containerPadding, containerStyles = _a.containerStyles, selectedEntries = _a.selectedEntries, corporateEntries = _a.corporateEntries, myContactsEntries = _a.myContactsEntries, emailsToExclude = _a.emailsToExclude, _11 = _a.userDropdownId, initialUserDropdownId = _11 === void 0 ? EMPTY_STRING : _11, focusRef = _a.focusRef, onInputChange = _a.onInputChange, onImmediateInputChange = _a.onImmediateInputChange, onChange = _a.onChange, onMenuOpen = _a.onMenuOpen, onMenuClose = _a.onMenuClose, onLoadNextPage = _a.onLoadNextPage, onClickContactInfoCopyEmail = _a.onClickContactInfoCopyEmail, onFocus = _a.onFocus;
51
+ var _12 = useState(initialUserDropdownId), userDropdownId = _12[0], setUserDropdownId = _12[1];
52
+ var _13 = useState([]), selectedUsers = _13[0], setSelectedUsers = _13[1];
53
+ var _14 = useState(EMPTY_STRING), paddingLeft = _14[0], setPaddingLeft = _14[1];
54
+ var _15 = useState(EMPTY_STRING), paddingRight = _15[0], setPaddingRight = _15[1];
55
+ var _16 = useState(0), maskWidth = _16[0], setMaskWidth = _16[1];
56
+ var _17 = useState(0), suffixWidth = _17[0], setSuffixWidth = _17[1];
57
+ var _18 = useState(true), isSearchable = _18[0], setIsSearchable = _18[1];
58
+ var _19 = useState(false), isUserTyping = _19[0], setIsUserTyping = _19[1];
59
+ var _20 = useState(null), modalData = _20[0], setModalData = _20[1];
60
+ var _21 = useState(EMPTY_STRING), chipLabelWithMaxWidth = _21[0], setChipLabelWithMaxWidth = _21[1];
61
+ var _22 = useState(EMPTY_STRING), inputValue = _22[0], setInputValue = _22[1];
62
+ var _23 = useState(placeholder), placeholderValue = _23[0], setPlaceholderValue = _23[1];
63
+ var _24 = useState(false), isDelimiterVisible = _24[0], setIsDelimiterVisible = _24[1];
64
+ var _25 = useState(0), delimiterOffset = _25[0], setDelimiterOffset = _25[1];
65
+ var _26 = useState(false), isFocused = _26[0], setIsFocused = _26[1];
66
+ var _27 = useState(false), isMenuOpen = _27[0], setIsMenuOpen = _27[1];
122
67
  var isInputFocused = useRef(false);
123
68
  var selectRef = useRef(null);
124
69
  var maskRef = useRef(null);
@@ -130,54 +75,43 @@ var UserDropdown = function (_a) {
130
75
  var lastVisibleChipIndex = useRef(-1);
131
76
  var skipAddUserToChipsOnNextBlurRef = useRef(false);
132
77
  var userTypingTimeoutRef = useRef(null);
78
+ var prevIsLoadingRef = useRef(isLoading);
133
79
  var selectedUsersLength = selectedUsers.length;
134
- var _17 = useDroppable({ id: userDropdownId }), setNodeRef = _17.setNodeRef, over = _17.over;
80
+ var _28 = useDroppable({ id: userDropdownId }), setNodeRef = _28.setNodeRef, over = _28.over;
135
81
  var overId = (over || {}).id;
136
82
  var isDraggable = overId === userDropdownId;
83
+ var isInputPlaceholderVisible = selectedUsersLength === 1 && isEmpty(inputValue) ? ((_b = selectedUsers[0].isNotRemovable) !== null && _b !== void 0 ? _b : false) : false;
84
+ var isMaskVisible = !isEmpty(mask) && (!isMaskHiddenOnFocus || (isEmpty(inputValue) && !isFocused));
137
85
  // eslint-disable-next-line react-hooks/exhaustive-deps
138
86
  useImperativeHandle(focusRef, function () { return ({ focus: handleFocus, blur: function () { return handleDragBlur(true); } }); }, []);
139
87
  var fontFamilyStyle = generateFontFamilyStyle(fontFamily);
140
88
  var isCharHintVisible = useCharHintDisplay({ inputValue: inputValue }).isCharHintVisible;
141
- var checkIsValueIsEmail = function (inputValue) {
142
- var regex = new RegExp(/^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/);
143
- return regex.test(inputValue);
144
- };
145
- // TODO: emailsToExclude в массиве зависимостей вызывает бесконечный ререндер при драге
146
- // eslint-disable-next-line react-hooks/exhaustive-deps
147
- var checkIsEmailToExclude = useCallback(function (email) { return includes(emailsToExclude, email); }, []);
148
- var calculatePaddingLeft = function () {
149
- var _a, _b;
150
- var maskWidth = ((_b = (_a = maskRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) === null || _b === void 0 ? void 0 : _b.width) || null;
151
- maskWidth && setMaskWidth(maskWidth + GAP);
152
- return "".concat(maskWidth ? maskWidth + MASK_INPUT_PL : DEFAULT_INPUT_PADDING, "px");
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
- };
89
+ var checkIsEmailToExclude = useCallback(function (email) { return includes(emailsToExclude, email); }, [emailsToExclude]);
160
90
  var generateStyles = function () {
161
91
  return selectStyles({
162
92
  isChipsVisible: isChipsVisible,
163
93
  isMaxMembersAdded: maxMembersCount && isChipsVisible ? selectedUsersLength === maxMembersCount : false,
164
94
  isDisabled: isDisabled,
95
+ isInputPlaceholderVisible: isInputPlaceholderVisible,
165
96
  lastRowNumber: isChipsVisible ? Math.ceil(selectedUsersLength / 2) + 1 : 1,
166
- paddingLeft: paddingLeft,
97
+ paddingLeft: isMaskVisible || isEmpty(mask) ? paddingLeft : "".concat(DEFAULT_INPUT_PADDING, "px"),
167
98
  paddingRight: !isChipsVisible && !isEmpty(inputValue) ? PADDING_WITH_CLEAR_ICON : paddingRight,
168
99
  platform: platform,
169
100
  layoutType: layoutType,
170
101
  isInputHidden: isInputHidden,
171
102
  isDisabledMenuOffsetAtFullscreen: isDisabledMenuOffsetAtFullscreen,
172
103
  isInputFocused: isInputFocused.current,
173
- isMaskRepresented: !isEmpty(mask),
104
+ isMaskRepresented: isMaskVisible,
174
105
  isSuffixRepresented: !isNil(suffix),
175
106
  isMenuShadowless: isMenuShadowless,
107
+ isShowCatalogSearchButton: isShowCatalogSearchButton,
176
108
  fontFamilyStyle: fontFamilyStyle,
177
109
  containerPadding: containerPadding,
178
110
  isDraggable: isDraggable,
179
111
  isChipsCollapsed: isChipsCollapsable && !isInputFocused.current,
180
112
  menuListMaxHeight: menuListMaxHeight,
113
+ maxRowsCountToCollapseChips: maxRowsCountToCollapseChips,
114
+ isError: isError,
181
115
  });
182
116
  };
183
117
  var generateNoOptionsMessage = function (_a) {
@@ -202,25 +136,13 @@ var UserDropdown = function (_a) {
202
136
  collapsableChipsCount: collapsableChipsCount,
203
137
  lastVisibleChipIndex: lastVisibleChipIndex,
204
138
  };
205
- var corporateContacts = uniqBy(__spreadArray(__spreadArray([], ((corporateEntries === null || corporateEntries === void 0 ? void 0 : corporateEntries.corpPhonebookEntries) || []), true), ((corporateEntries === null || corporateEntries === void 0 ? void 0 : corporateEntries.trustSearchEntries) || []), true), function (_a) {
206
- var contacts = _a.contacts;
207
- return contacts.filter(function (_a) {
208
- var contactType = _a.contactType;
209
- return contactType === EMAIL_FIELD;
210
- })[0].contact;
211
- });
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;
213
- var sortedCorporateContacts = sortContacts(corporateContacts, query);
214
- var sortedMyContacts = sortContacts(myContactsEntries || [], query);
215
- var filteredCorporateContacts = sortedCorporateContacts.filter(function (_a) {
216
- var email = _a.email, contacts = _a.contacts;
217
- return [email, contacts[0].contact].every(function (email) { return !checkIsEmailToExclude(email); });
218
- });
219
- var filteredMyContacts = sortedMyContacts.filter(function (_a) {
220
- var email = _a.email;
221
- return !checkIsEmailToExclude(email);
222
- });
223
- return __spreadArray(__spreadArray([], generateCorporateOptionsToSelect(__assign({ options: filteredCorporateContacts }, commonFields)), true), generateContactsOptionsToSelect(__assign({ options: filteredMyContacts }, commonFields)), true);
139
+ var _c = retrieveFilteredContacts({
140
+ query: ((_b = (_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.inputValue) || EMPTY_STRING,
141
+ corporateEntries: corporateEntries,
142
+ myContactsEntries: myContactsEntries,
143
+ checkIsEmailToExclude: checkIsEmailToExclude,
144
+ }), filteredCorporateContacts = _c.filteredCorporateContacts, filteredLocalContacts = _c.filteredLocalContacts, filteredMyContacts = _c.filteredMyContacts;
145
+ 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);
224
146
  };
225
147
  var clearUserTypingTimeout = useCallback(function () {
226
148
  var userTypingTimeoutRefCurrent = userTypingTimeoutRef.current;
@@ -229,6 +151,13 @@ var UserDropdown = function (_a) {
229
151
  userTypingTimeoutRef.current = null;
230
152
  }
231
153
  }, []);
154
+ useEffect(function () {
155
+ if (prevIsLoadingRef.current && !isLoading) {
156
+ setIsUserTyping(false);
157
+ clearUserTypingTimeout();
158
+ }
159
+ prevIsLoadingRef.current = isLoading;
160
+ }, [isLoading, clearUserTypingTimeout]);
232
161
  var requestInputChangeDebounce = useMemo(function () {
233
162
  return debounce(function (inputValue) {
234
163
  onInputChange(inputValue);
@@ -236,6 +165,10 @@ var UserDropdown = function (_a) {
236
165
  userTypingTimeoutRef.current = setTimeout(function () { return setIsUserTyping(false); }, CLEAR_USER_TYPING_TIMEOUT);
237
166
  }, USER_TYPING_TIMEOUT);
238
167
  }, [clearUserTypingTimeout, onInputChange]);
168
+ var handleMenuOpen = function () {
169
+ setIsMenuOpen(true);
170
+ onMenuOpen === null || onMenuOpen === void 0 ? void 0 : onMenuOpen();
171
+ };
239
172
  var handleMenuClose = function () {
240
173
  menuScrollFromTop.current = 0;
241
174
  setIsDelimiterVisible(false);
@@ -247,33 +180,33 @@ var UserDropdown = function (_a) {
247
180
  var trimPrevInputValue_1 = prevInputValue.trim();
248
181
  var isInputBlurAction = action === INPUT_ACTIONS.blur;
249
182
  var isMenuCloseAction = action === MENU_ACTIONS.close;
250
- if (!isInputBlurAction && !isMenuCloseAction)
183
+ if (!isInputBlurAction && !isMenuCloseAction) {
251
184
  setInputValue(inputValue);
252
- if ((isInputBlurAction || isMenuCloseAction) && checkIsValueIsEmail(trimPrevInputValue_1)) {
185
+ onImmediateInputChange === null || onImmediateInputChange === void 0 ? void 0 : onImmediateInputChange(inputValue);
186
+ }
187
+ if ((isInputBlurAction || isMenuCloseAction) && checkIsValueIsEmail(trimPrevInputValue_1) && isConvertTextToChipOnBlur) {
253
188
  var isUserAlreadySelected = selectedUsers.some(function (_a) {
254
189
  var email = _a.email;
255
190
  return email === trimPrevInputValue_1;
256
191
  });
257
- setInputValue(isUserAlreadySelected || checkIsEmailToExclude(trimPrevInputValue_1) ? trimPrevInputValue_1 : prevInputValue);
192
+ var nextInputValue = isUserAlreadySelected || checkIsEmailToExclude(trimPrevInputValue_1) ? trimPrevInputValue_1 : inputValue;
193
+ setInputValue(nextInputValue);
194
+ onImmediateInputChange === null || onImmediateInputChange === void 0 ? void 0 : onImmediateInputChange(nextInputValue);
258
195
  }
259
196
  }
260
197
  if (!isEmpty(inputValue)) {
261
198
  clearUserTypingTimeout();
262
199
  setIsUserTyping(true);
263
200
  }
264
- onImmediateInputChange === null || onImmediateInputChange === void 0 ? void 0 : onImmediateInputChange(inputValue);
265
201
  inputValue.length >= MIN_INPUT_SYMBOLS && requestInputChangeDebounce(inputValue);
266
- }, [onImmediateInputChange, requestInputChangeDebounce, selectedUsers, checkIsEmailToExclude, clearUserTypingTimeout]);
267
- var extractInputEmails = function (inputValue) {
268
- return inputValue
269
- .split(/[,;]+/)
270
- .map(function (inputStr) { return inputStr.trim(); })
271
- .filter(function (inputStr) { return !!inputStr.length; });
272
- };
273
- var handleAddUser = function () {
274
- var props = selectRef.current.props;
202
+ }, [requestInputChangeDebounce, isConvertTextToChipOnBlur, onImmediateInputChange, selectedUsers, checkIsEmailToExclude, clearUserTypingTimeout]);
203
+ var handleAddUser = function (isInputBlurAction) {
204
+ var selectRefCurrent = selectRef.current;
205
+ if (isNil(selectRefCurrent))
206
+ return;
207
+ var props = selectRefCurrent.props;
275
208
  var options = props.options, onChange = props.onChange;
276
- if (isEmpty(inputValue))
209
+ if (isEmpty(inputValue) || (isInputBlurAction && !isConvertTextToChipOnBlur))
277
210
  return Promise.resolve();
278
211
  var trimInputValue = inputValue.trim();
279
212
  var optionProps = {
@@ -372,7 +305,6 @@ var UserDropdown = function (_a) {
372
305
  [onInputChange, handleInputChange, onMenuOpen, onChange]);
373
306
  var handleChange = function (newSelectedUsers) {
374
307
  var uniqNewSelectedUsers = isDisabledCheckUniqueEmails ? newSelectedUsers : uniqBy(newSelectedUsers, EMAIL_FIELD);
375
- var users = [];
376
308
  var deletedUser = selectedUsers.find(function (_a) {
377
309
  var value = _a.value;
378
310
  return !uniqNewSelectedUsers.some(function (_a) {
@@ -382,104 +314,39 @@ var UserDropdown = function (_a) {
382
314
  });
383
315
  if (deletedUser === null || deletedUser === void 0 ? void 0 : deletedUser.isNotRemovable)
384
316
  return;
385
- uniqNewSelectedUsers.forEach(function (user) {
386
- var isEnteredByUser = user.isEnteredByUser, isMyContacts = user.isMyContacts;
387
- var userToAdd = omit(user, COMMON_FIELDS_TO_OMIT);
388
- var entryFieldsToExclude = isMyContacts ? [EXCLUDED_FIELDS.isMyContacts] : [EXCLUDED_FIELDS.language];
389
- var fieldsToExclude = isEnteredByUser ? [EXCLUDED_FIELDS.isEnteredByUser] : entryFieldsToExclude;
390
- users.push(omit(userToAdd, fieldsToExclude));
391
- });
317
+ var users = transformSelectedUsers(uniqNewSelectedUsers);
392
318
  onChange(users);
393
- if (!isInputHidden)
319
+ if (!isInputHidden && !isStateless)
394
320
  setSelectedUsers(uniqNewSelectedUsers);
395
321
  if (!isInputFocused.current && isChipsCollapsable)
396
322
  handleFocus();
397
323
  };
398
- var isContainsValue = function (_a) {
399
- var label = _a.label, email = _a.email, value = _a.value;
400
- return label.toLowerCase().includes(value) || email.toLowerCase().includes(value);
401
- };
402
324
  var handleFilterOption = function (_a, inputValue) {
403
- var _b = _a.data, label = _b.label, optionEmail = _b.email;
404
- var originInputValue = inputValue.toLowerCase();
405
- var transliteratedInputValue = tr(originInputValue);
406
- var toEngInputValue = ru.toEn(originInputValue);
407
- var fromEngInputValue = ru.fromEn(originInputValue);
408
- var isUserAlreadySelected = selectedUsers.find(function (_a) {
409
- var email = _a.email;
410
- return email === optionEmail;
411
- });
412
- var isContainsInputValue = [originInputValue, transliteratedInputValue, toEngInputValue, fromEngInputValue].some(function (value) {
413
- return isContainsValue({ label: label, email: optionEmail, value: value });
414
- });
415
- if (isFilteringDisabled)
416
- return !isEmpty(selectedUsers) ? !isUserAlreadySelected : true;
417
- return !isEmpty(selectedUsers) ? !isUserAlreadySelected && isContainsInputValue : isContainsInputValue;
418
- };
419
- var generateTruncatedElementY = function (element) { return Math.trunc(element.getBoundingClientRect().y); };
420
- var calculateCounterWidth = function (counterNumber) {
421
- if (counterNumber >= 100)
422
- return THREE_DIGIT_NUMBER_WIDTH;
423
- if (counterNumber >= 10)
424
- return TWO_DIGIT_NUMBER_WIDTH;
425
- return SINGLE_DIGIT_NUMBER_WIDTH;
325
+ var data = _a.data;
326
+ return applyFilteringToOption({ isFilteringDisabled: isFilteringDisabled, isSelectedOptionsHidden: isSelectedOptionsHidden, inputValue: inputValue, data: data, selectedUsers: selectedUsers });
426
327
  };
427
328
  var handleCollapseChips = function () {
428
- var _a, _b;
429
- var collapsableChips = 0;
430
- var chipLabelWithMaxWidth = EMPTY_STRING;
431
- var chipsNodes = ((_a = document.querySelector("#".concat(userDropdownId))) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.smartapp-chip')) || [];
432
- var chips = Array.from(chipsNodes);
329
+ var chips = retrieveChipsElements(userDropdownId);
433
330
  if (isEmpty(chips))
434
331
  return;
435
- var yRows = uniq(chips.map(function (chip) { return generateTruncatedElementY(chip); }));
436
- var ySecondRow = yRows[1];
437
- var rowsToHide = yRows.slice(2);
438
- var secondRow = [];
439
- chips.forEach(function (chip) {
440
- var y = generateTruncatedElementY(chip);
441
- if (rowsToHide.includes(y)) {
442
- collapsableChips += 1;
443
- }
444
- else {
445
- y === ySecondRow && secondRow.push(chip);
446
- }
447
- });
448
- var counterWidth = calculateCounterWidth(collapsableChips);
449
- var rowWidth = counterWidth + INPUT_SPACE_WIDTH;
450
- var dropdownWidth = ((_b = document.querySelector("#".concat(userDropdownId))) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().width) - maskWidth - suffixWidth;
451
- secondRow.forEach(function (chip) {
452
- var _a;
453
- rowWidth += chip.getBoundingClientRect().width + GAP;
454
- if (rowWidth > dropdownWidth) {
455
- if (secondRow.length > 1) {
456
- collapsableChips += 1;
457
- }
458
- else {
459
- var emptySpaceWidth = collapsableChips > 0 ? counterWidth + INPUT_SPACE_WIDTH + GAP : INPUT_SPACE_WIDTH;
460
- chip.style.maxWidth = "".concat(dropdownWidth - emptySpaceWidth, "px");
461
- chipLabelWithMaxWidth = ((_a = chip.querySelector('.smartapp-chip__info--name')) === null || _a === void 0 ? void 0 : _a.innerHTML) || EMPTY_STRING;
462
- }
463
- }
464
- });
465
- var visibleChipsCurrentCount = chips.length - collapsableChips;
332
+ var _a = collapseChips({
333
+ userDropdownId: userDropdownId,
334
+ maxRowsCountToCollapseChips: maxRowsCountToCollapseChips,
335
+ maskWidth: maskWidth,
336
+ suffixWidth: suffixWidth,
337
+ chips: chips,
338
+ }), collapsableChips = _a.collapsableChips, numberOfVisibleChips = _a.numberOfVisibleChips, chipLabelWithMaxWidth = _a.chipLabelWithMaxWidth;
466
339
  isNeedCheckChipCollapsableCount.current = true;
467
- visibleChipsCount.current = visibleChipsCurrentCount;
340
+ visibleChipsCount.current = numberOfVisibleChips;
468
341
  collapsableChipsCount.current = collapsableChips;
469
- lastVisibleChipIndex.current = visibleChipsCurrentCount;
342
+ lastVisibleChipIndex.current = numberOfVisibleChips;
470
343
  setChipLabelWithMaxWidth(chipLabelWithMaxWidth || generateId());
471
344
  };
472
345
  var handleUnCollapseChips = useCallback(function () {
473
- var _a;
474
346
  if (!userDropdownId)
475
347
  return;
476
- var chipsNodes = ((_a = document.querySelector("#".concat(userDropdownId))) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.smartapp-chip')) || [];
477
- var chips = Array.from(chipsNodes);
478
- chips.forEach(function (chip) {
479
- var _a;
480
- var chipLabel = ((_a = chip.querySelector('.smartapp-chip__info--name')) === null || _a === void 0 ? void 0 : _a.innerHTML) || EMPTY_STRING;
481
- chipLabel === chipLabelWithMaxWidth && (chip.style.maxWidth = '100%');
482
- });
348
+ var chips = retrieveChipsElements(userDropdownId);
349
+ unCollapseChips(chipLabelWithMaxWidth, chips);
483
350
  isNeedCheckChipCollapsableCount.current = false;
484
351
  visibleChipsCount.current = chips.length;
485
352
  collapsableChipsCount.current = 0;
@@ -503,17 +370,23 @@ var UserDropdown = function (_a) {
503
370
  var onBlurComplete = function () {
504
371
  isChipsCollapsable && handleCollapseChips();
505
372
  isInputFocused.current = false;
373
+ setIsFocused(false);
506
374
  };
507
375
  if (shouldSkipAddUserToChipsOnNextBlur) {
508
376
  onBlurComplete();
509
377
  return;
510
378
  }
511
379
  else
512
- (_a = handleAddUser()) === null || _a === void 0 ? void 0 : _a.then(onBlurComplete);
380
+ (_a = handleAddUser(true)) === null || _a === void 0 ? void 0 : _a.then(function () { return requestAnimationFrame(function () { return requestAnimationFrame(function () { return onBlurComplete(); }); }); });
513
381
  skipAddUserToChipsOnNextBlurRef.current = false;
514
382
  };
515
383
  var handleSelectBlur = function () {
516
384
  setPlaceholderValue(placeholder);
385
+ isMenuCloseOnBlur && setIsMenuOpen(false);
386
+ if (isInputValueClearedOnBlur) {
387
+ setInputValue(EMPTY_STRING);
388
+ onImmediateInputChange === null || onImmediateInputChange === void 0 ? void 0 : onImmediateInputChange(EMPTY_STRING);
389
+ }
517
390
  setTimeout(handleBlur, RENDER_DELAY);
518
391
  };
519
392
  var focusInputIOS = useCallback(function (input) {
@@ -524,36 +397,32 @@ var UserDropdown = function (_a) {
524
397
  });
525
398
  }, []);
526
399
  var handleFocus = useCallback(function (isDisableCheckFocused) {
527
- setPlaceholderValue(SEARCH_PLACEHOLDER[language]);
400
+ setPlaceholderValue(focusPlaceholder || SEARCH_PLACEHOLDER[language]);
528
401
  if (isInputFocused.current && !isDisableCheckFocused)
529
402
  return;
530
403
  isInputFocused.current = true;
404
+ setIsFocused(true);
531
405
  var selectRefCurrent = selectRef.current;
532
406
  var _a = selectRefCurrent || {}, _preventBlur = _a._preventBlur, inputRef = _a.inputRef;
533
407
  setTimeout(function () {
534
408
  if (selectRefCurrent && !_preventBlur)
535
- isIosPlatform(platform) && inputRef ? focusInputIOS(inputRef) : selectRefCurrent.focus();
409
+ checkIsIosPlatform(platform) && inputRef ? focusInputIOS(inputRef) : selectRefCurrent.focus();
536
410
  }, RENDER_DELAY);
537
411
  isChipsCollapsable && handleUnCollapseChips();
538
- }, [language, isChipsCollapsable, handleUnCollapseChips, platform, focusInputIOS]);
412
+ }, [focusPlaceholder, language, isChipsCollapsable, handleUnCollapseChips, platform, focusInputIOS]);
539
413
  var handleForceFocus = useCallback(function () { return setTimeout(function () { return handleFocus(true); }, RENDER_DELAY); }, [handleFocus]);
414
+ var handleSelectFocus = useCallback(function () {
415
+ handleFocus();
416
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus();
417
+ }, [handleFocus, onFocus]);
540
418
  var handleCloseModal = function () {
541
419
  setModalData(null);
542
420
  setIsSearchable(true);
543
- if (isMobilePlatform(platform)) {
421
+ if (checkIsMobilePlatform(platform)) {
544
422
  new Promise(function (resolve) { return resolve(); }).then(function () { var _a; return (_a = selectRef.current) === null || _a === void 0 ? void 0 : _a.focus(); });
545
423
  }
546
424
  };
547
- var renderTitle = function () { return title && _jsx("div", __assign({ className: "smartapp-user-dropdown__title" }, { children: title })); };
548
- var renderMask = function () {
549
- return mask && (_jsx("div", __assign({ ref: maskRef, className: "smartapp-user-dropdown__container--mask" }, { children: mask })));
550
- };
551
- var renderHint = function () {
552
- if (isNil(hint))
553
- return;
554
- return isString(hint) ? _jsx("div", __assign({ className: "smartapp-user-dropdown__hint" }, { children: hint })) : hint;
555
- };
556
- var modalContent = modalData ? (_jsx(ContactBottomSheet, { fontFamily: fontFamily, language: language, avatar: modalData.avatar, name: modalData.name, email: modalData.email, serverName: modalData.serverName, company: modalData.company, department: modalData.department, companyPosition: modalData.companyPosition })) : (_jsx(_Fragment, {}));
425
+ var modalContent = modalData ? (_jsx(ContactBottomSheet, { fontFamily: fontFamily, language: language, contactInfoTitle: contactInfoTitle, avatar: modalData.avatar, name: modalData.name, email: modalData.email, serverName: modalData.serverName, company: modalData.company, department: modalData.department, companyPosition: modalData.companyPosition, handleCloseModal: handleCloseModal, onClickContactInfoCopyEmail: onClickContactInfoCopyEmail })) : (_jsx(_Fragment, {}));
557
426
  useEffect(function () {
558
427
  if (externalInputValue && isInputHidden) {
559
428
  setInputValue(externalInputValue);
@@ -564,16 +433,23 @@ var UserDropdown = function (_a) {
564
433
  useEffect(function () {
565
434
  !userDropdownId && setUserDropdownId("user_dropdown_".concat(generateId().replace(/-/g, '_')));
566
435
  }, [userDropdownId]);
436
+ useLayoutEffect(function () {
437
+ if (isChipsCollapsable && !isEmpty(chipLabelWithMaxWidth) && !isInputFocused.current) {
438
+ handleUnCollapseChips();
439
+ handleCollapseChips();
440
+ }
441
+ // eslint-disable-next-line
442
+ }, [hint]);
567
443
  useLayoutEffect(function () {
568
444
  if (userDropdownId)
569
445
  setTimeout(function () { return (isChipsCollapsable ? handleCollapseChips() : handleUnCollapseChips()); }, RENDER_DELAY);
570
446
  // eslint-disable-next-line
571
447
  }, [isChipsCollapsable, userDropdownId]);
572
448
  useEffect(function () {
573
- setPaddingLeft(calculatePaddingLeft());
449
+ setPaddingLeft(calculateHorizontalPadding(maskRef, setMaskWidth));
574
450
  }, [mask]);
575
451
  useEffect(function () {
576
- setPaddingRight(calculatePaddingRight());
452
+ setPaddingRight(calculateHorizontalPadding(suffixRef, setSuffixWidth));
577
453
  }, [suffix]);
578
454
  useEffect(function () {
579
455
  setSelectedUsers(function (prevSelectedUsers) {
@@ -581,38 +457,18 @@ var UserDropdown = function (_a) {
581
457
  });
582
458
  }, [layoutType, fontFamily, language, isChipsCollapsable]);
583
459
  useEffect(function () {
584
- if (!isEmpty(selectedEntries)) {
460
+ if (isArray(selectedEntries) && !isEmpty(selectedEntries)) {
585
461
  setSelectedUsers(selectedEntries.map(function (entity) {
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
- } })); });
592
- var commonFields = {
593
- platform: platform,
594
- layoutType: layoutType,
595
- fontFamily: fontFamily,
596
- language: language,
597
- isChipsCollapsable: isChipsCollapsable,
598
- isResetChipsToInputValue: isResetChipsToInputValue,
599
- contextMenuItems: contextMenuItems,
600
- isSelectedChipHasTooltip: isSelectedChipHasTooltip,
601
- isLoading: isLoading,
602
- isWarning: isWarning,
603
- isOrganizerShort: isOrganizerShort,
604
- userType: userType,
605
- uid: uid,
606
- organizerName: organizerName,
607
- isInputFocused: isInputFocused,
608
- selectRef: selectRef,
609
- collapsableChipsCount: collapsableChipsCount,
610
- lastVisibleChipIndex: lastVisibleChipIndex,
462
+ var contextMenuItems = entity.contextMenuItems;
463
+ var generateContextMenuItems = function () {
464
+ return contextMenuItems === null || contextMenuItems === void 0 ? void 0 : contextMenuItems.map(function (item) { return (__assign(__assign({}, item), { action: function (data) {
465
+ var _a;
466
+ (_a = item.action) === null || _a === void 0 ? void 0 : _a.call(item, data);
467
+ checkIsMobilePlatform(platform) && handleFocus(true);
468
+ } })); });
611
469
  };
612
- var generatedNotCorporateEntity = Object.keys(entity).length === 1
613
- ? generateEnteredByUserOption(__assign({ email: entity.email }, commonFields))
614
- : generateContactsOption(__assign({ option: entity }, commonFields));
615
- return 'contacts' in entity ? generateCorporateOption(__assign({ option: entity }, commonFields)) : generatedNotCorporateEntity;
470
+ var commonFields = __assign(__assign({}, pick(entity, COMMON_FIELDS_TO_PICK)), { platform: platform, layoutType: layoutType, fontFamily: fontFamily, language: language, isChipsCollapsable: isChipsCollapsable, isSelectedChipHasTooltip: isSelectedChipHasTooltip, isInputFocused: isInputFocused, selectRef: selectRef, collapsableChipsCount: collapsableChipsCount, lastVisibleChipIndex: lastVisibleChipIndex, contextMenuItems: generateContextMenuItems() });
471
+ return transformSelectedEntity(entity, commonFields);
616
472
  }));
617
473
  }
618
474
  else
@@ -634,10 +490,22 @@ var UserDropdown = function (_a) {
634
490
  }, [clearUserTypingTimeout, requestInputChangeDebounce]);
635
491
  useEffect(function () {
636
492
  if (isChipsCollapsable && !isInputFocused.current && isNeedCheckChipCollapsableCount.current)
637
- collapsableChipsCount.current = selectedEntries.length - visibleChipsCount.current;
493
+ collapsableChipsCount.current = (selectedEntries || []).length - visibleChipsCount.current;
638
494
  }, [isChipsCollapsable, selectedEntries]);
639
495
  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 }))); }, [
496
+ // Don't let a menu click force-focus the input (react-select's default behavior). Without this, e.g. on mobile
497
+ // with the keyboard hidden and the menu still open, the first click only refocuses the field and the
498
+ // option gets selected only on the second click.
499
+ var handleMenuMouseDown = useCallback(function (event) {
500
+ // only handle the primary (left) mouse button, leave right-click/middle-click at their native behavior
501
+ if (event.button !== 0)
502
+ return;
503
+ event.preventDefault();
504
+ event.stopPropagation();
505
+ }, []);
506
+ var MenuComponent = useCallback(function (props) { return _jsx(components.Menu, __assign({}, props, { innerProps: __assign(__assign({}, props.innerProps), { onMouseDown: handleMenuMouseDown }) })); }, [handleMenuMouseDown]);
507
+ var MenuListComponent = useCallback(function (props) { return (_jsx(MenuList, __assign({}, props, { children: props.children, selectRef: selectRef, scrollFromTop: menuScrollFromTop, language: language, platform: platform, menuListMaxHeight: menuListMaxHeight, charHintClassName: charHintClassName, 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 }))); }, [
508
+ charHintClassName,
641
509
  hasNextPage,
642
510
  isCharHintVisible,
643
511
  isLoading,
@@ -649,16 +517,20 @@ var UserDropdown = function (_a) {
649
517
  menuListMaxHeight,
650
518
  onLoadNextPage,
651
519
  onShowCatalogSearchButtonClick,
520
+ platform,
652
521
  ]);
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 }) }) }))); };
654
- var InputComponent = useCallback(function (props) { return _jsx(Input, __assign({}, props, { "data-is-clearable": !isChipsVisible, suffixref: suffixRef, suffix: suffix })); }, [isChipsVisible, suffix]);
522
+ var NoOptionsButton = function (props) { return (_jsx(components.NoOptionsMessage, __assign({}, props, { className: noOptionsMessageClassName }, { children: _jsx(SearchInCatalogButton, { language: language, isOnlyButtonInList: true, isMenuShadowless: isMenuShadowless, noOptionText: isShowCatalogSearchButton ? undefined : generateNoOptionsMessage({ inputValue: inputValue }), onShowCatalogSearchButtonClick: onShowCatalogSearchButtonClick }) }))); };
523
+ var InputComponent = useCallback(function (props) { return (_jsx(Input, __assign({}, props, { "data-is-clearable": !isChipsVisible, "data-placeholder": placeholderValue, suffixref: suffixRef, suffix: suffix }))); }, [isChipsVisible, placeholderValue, suffix]);
655
524
  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
525
  var setContainerNodeRef = function (ref) {
657
526
  var _a = ((ref === null || ref === void 0 ? void 0 : ref.getBoundingClientRect()) || {}).left, left = _a === void 0 ? 0 : _a;
658
527
  setNodeRef(ref);
659
- setDelimiterOffset(left);
528
+ setDelimiterOffset(isShowCatalogSearchButton ? 0 : left);
660
529
  };
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: {
530
+ return (_jsxs("div", __assign({ id: userDropdownId, className: classNames('smartapp-user-dropdown', containerClassName, { 'smartapp-user-dropdown__not-clickable': isNotClickable }), style: __assign(__assign({}, fontFamilyStyle), containerStyles) }, { children: [_jsx(Title, { text: title }), _jsxs("div", __assign({ className: "smartapp-user-dropdown__container", ref: setContainerNodeRef }, { children: [_jsx(Mask, { mask: mask, elementRef: maskRef, isVisible: isMaskVisible }), _jsx(Select, { ref: selectRef, menuIsOpen: isInputHidden ? !!externalInputValue : isMenuOpen, menuPortalTarget: menuPortalTarget === null || menuPortalTarget === void 0 ? void 0 : menuPortalTarget.current, isMulti: true, openMenuOnFocus: true, hideSelectedOptions: isSelectedOptionsHidden, blurInputOnSelect: false, captureMenuScroll: false, isSearchable: isSearchable, menuShouldScrollIntoView: menuShouldScrollIntoView, menuPlacement: menuPosition, menuPosition: menuLocation, controlShouldRenderValue: isChipsVisible, backspaceRemovesValue: isChipsVisible, isDisabled: isDisabled, closeMenuOnSelect: isMenuCloseOnSelect, isLoading: isLoading || isUserTyping, isClearable: false, isOptionDisabled: function (_a) {
531
+ var _b = _a.isAlreadyAdded, isAlreadyAdded = _b === void 0 ? false : _b;
532
+ return isAlreadyAdded;
533
+ }, 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: handleMenuOpen, onKeyDown: handleKeyDown, onBlur: handleSelectBlur, autoFocus: autoFocus, onFocus: handleSelectFocus, instanceId: userDropdownId, components: {
662
534
  Input: InputComponent,
663
535
  MultiValueLabel: MultiValueLabelComponent,
664
536
  MultiValueRemove: MultiValueRemove,
@@ -666,9 +538,12 @@ var UserDropdown = function (_a) {
666
538
  IndicatorSeparator: IndicatorSeparator,
667
539
  DropdownIndicator: DropdownIndicator,
668
540
  LoadingIndicator: LoadingIndicator,
541
+ Menu: MenuComponent,
669
542
  MenuList: MenuListComponent,
670
543
  NoOptionsMessage: NoOptionsButton,
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 })] })));
544
+ } }), _jsx(Delimiter, { isDelimiterVisible: isDelimiterVisible, isMenuShadowless: isMenuShadowless, isShowCatalogSearchButton: isShowCatalogSearchButton, delimiterOffset: delimiterOffset })] })), _jsx(Hint, { text: hint }), _jsx(Modal, { isModalOpen: !isNull(modalData), platform: platform, fontFamily: fontFamily, content: modalContent, isBottomSheet: checkIsMobilePlatform(platform), modalMaxHeight: checkIsMobilePlatform(platform) ? generateContactBottomSheetMaxHeight() : undefined, backgroundColor: "var(--color-bg-blackout-transparent)", handleCloseModal: handleCloseModal,
545
+ // fix появления ненужного паддинга под клавиатуру android у ContactBottomSheet
546
+ bottomSheetScrollMobileConfig: { shouldDoScrollToFocusedElement: false } })] })));
672
547
  };
673
548
  export default memo(UserDropdown);
674
549
  //# sourceMappingURL=UserDropdown.js.map