@expressms/smartapp-ui 3.0.0-alpha.165 → 3.0.0-alpha.167

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 (40) hide show
  1. package/build/main/constants/constants.d.ts +5 -2
  2. package/build/main/constants/constants.js +6 -2
  3. package/build/main/constants/constants.js.map +1 -1
  4. package/build/main//321/201omponents/CustomSelectProfiles/CustomSelectProfiles.js +1 -1
  5. package/build/main//321/201omponents/CustomSelectProfiles/CustomSelectProfiles.js.map +1 -1
  6. package/build/main//321/201omponents/CustomSelectProfiles/selectStyles.js +1 -0
  7. package/build/main//321/201omponents/CustomSelectProfiles/selectStyles.js.map +1 -1
  8. package/build/main//321/201omponents/DragAndDrop/DragAndDrop.js +2 -2
  9. package/build/main//321/201omponents/DragAndDrop/DragAndDrop.js.map +1 -1
  10. package/build/main//321/201omponents/DraggablePopup/DraggablePopup.js.map +1 -1
  11. package/build/main//321/201omponents/Input/Input.js +2 -2
  12. package/build/main//321/201omponents/Input/Input.js.map +1 -1
  13. package/build/main//321/201omponents/UserDropdown/UserDropdown.d.ts +0 -2
  14. package/build/main//321/201omponents/UserDropdown/UserDropdown.js +43 -259
  15. package/build/main//321/201omponents/UserDropdown/UserDropdown.js.map +1 -1
  16. package/build/main//321/201omponents/UserDropdown/components/Delimiter.d.ts +8 -0
  17. package/build/main//321/201omponents/UserDropdown/components/Delimiter.js +10 -0
  18. package/build/main//321/201omponents/UserDropdown/components/Delimiter.js.map +1 -0
  19. package/build/main//321/201omponents/UserDropdown/components/Hint.d.ts +6 -0
  20. package/build/main//321/201omponents/UserDropdown/components/Hint.js +21 -0
  21. package/build/main//321/201omponents/UserDropdown/components/Hint.js.map +1 -0
  22. package/build/main//321/201omponents/UserDropdown/components/Input.d.ts +2 -0
  23. package/build/main//321/201omponents/UserDropdown/components/Input.js +24 -0
  24. package/build/main//321/201omponents/UserDropdown/components/Input.js.map +1 -0
  25. package/build/main//321/201omponents/UserDropdown/components/Mask.d.ts +7 -0
  26. package/build/main//321/201omponents/UserDropdown/components/Mask.js +18 -0
  27. package/build/main//321/201omponents/UserDropdown/components/Mask.js.map +1 -0
  28. package/build/main//321/201omponents/UserDropdown/components/Title.d.ts +5 -0
  29. package/build/main//321/201omponents/UserDropdown/components/Title.js +18 -0
  30. package/build/main//321/201omponents/UserDropdown/components/Title.js.map +1 -0
  31. package/build/main//321/201omponents/UserDropdown/constants.d.ts +58 -0
  32. package/build/main//321/201omponents/UserDropdown/constants.js +60 -0
  33. package/build/main//321/201omponents/UserDropdown/constants.js.map +1 -1
  34. package/build/main//321/201omponents/UserDropdown/helpers.d.ts +70 -41
  35. package/build/main//321/201omponents/UserDropdown/helpers.js +179 -11
  36. package/build/main//321/201omponents/UserDropdown/helpers.js.map +1 -1
  37. package/build/main//321/201omponents/UserDropdown/types.d.ts +34 -10
  38. package/build/main//321/201omponents/UserDropdown/types.js +1 -8
  39. package/build/main//321/201omponents/UserDropdown/types.js.map +1 -1
  40. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ declare const Input: (props: any) => import("react/jsx-runtime").JSX.Element;
2
+ export default Input;
@@ -0,0 +1,24 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { components } from 'react-select';
14
+ import { isEmpty } from 'lodash';
15
+ import { ENTER_KEY_HINT } from '../../../constants';
16
+ import { EMPTY_STRING, INPUT_ACTIONS } from '../constants';
17
+ import { ReactComponent as ClearIcon } from '../../../assets/icons/clear.svg';
18
+ var Input = function (props) {
19
+ var isClearable = props["data-is-clearable"], placeholder = props["data-placeholder"], value = props.value, suffix = props.suffix, suffixRef = props.suffixref, onInputChange = props.selectProps.onInputChange;
20
+ var handleClearInput = function () { return onInputChange(EMPTY_STRING, { action: INPUT_ACTIONS.change, prevInputValue: value }); };
21
+ return (_jsxs(_Fragment, { children: [_jsx(components.Input, __assign({}, props, { enterKeyHint: ENTER_KEY_HINT.done, placeholder: placeholder })), suffix && (_jsx("div", __assign({ ref: suffixRef, className: "smartapp-user-dropdown__suffix" }, { children: suffix }))), isClearable && !isEmpty(value) && (_jsx("div", __assign({ className: "smartapp-user-dropdown__clear-icon", onMouseDown: handleClearInput, onTouchEnd: handleClearInput }, { children: _jsx(ClearIcon, {}) })))] }));
22
+ };
23
+ export default Input;
24
+ //# sourceMappingURL=Input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../../../src/сomponents/UserDropdown/components/Input.tsx"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,cAAc,IAAI,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAE7E,IAAM,KAAK,GAAG,UAAC,KAAU;IAErB,IAAqB,WAAW,GAM9B,KAAK,qBANyB,EACZ,WAAW,GAK7B,KAAK,oBALwB,EAC/B,KAAK,GAIH,KAAK,MAJF,EACL,MAAM,GAGJ,KAAK,OAHD,EACK,SAAS,GAElB,KAAK,UAFa,EACL,aAAa,GAC1B,KAAK,0BADqB,CACrB;IAET,IAAM,gBAAgB,GAAG,cAAM,OAAA,aAAa,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAApF,CAAoF,CAAA;IAEnH,OAAO,CACL,8BACE,KAAC,UAAU,CAAC,KAAK,eAAK,KAAK,IAAE,YAAY,EAAE,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,IAAI,EAC3F,MAAM,IAAI,CACT,uBAAK,GAAG,EAAE,SAAS,EAAE,SAAS,EAAC,gCAAgC,gBAC5D,MAAM,IACH,CACP,EACA,WAAW,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CACjC,uBAAK,SAAS,EAAC,oCAAoC,EAAC,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,gBAC7G,KAAC,SAAS,KAAG,IACT,CACP,IACA,CACJ,CAAA;AACH,CAAC,CAAA;AAED,eAAe,KAAK,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { RefObject } from 'react';
2
+ type TMask = {
3
+ text?: string;
4
+ elementRef?: RefObject<HTMLDivElement | null>;
5
+ };
6
+ declare const Mask: ({ text, elementRef }: TMask) => import("react/jsx-runtime").JSX.Element | null;
7
+ export default Mask;
@@ -0,0 +1,18 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ var Mask = function (_a) {
14
+ var text = _a.text, elementRef = _a.elementRef;
15
+ return text ? (_jsx("div", __assign({ ref: elementRef, className: "smartapp-user-dropdown__container--mask" }, { children: text }))) : null;
16
+ };
17
+ export default Mask;
18
+ //# sourceMappingURL=Mask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mask.js","sourceRoot":"","sources":["../../../../../src/сomponents/UserDropdown/components/Mask.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAOA,IAAM,IAAI,GAAG,UAAC,EAA2B;QAAzB,IAAI,UAAA,EAAE,UAAU,gBAAA;IAC9B,OAAA,IAAI,CAAC,CAAC,CAAC,CACL,uBAAK,GAAG,EAAE,UAAU,EAAE,SAAS,EAAC,yCAAyC,gBACtE,IAAI,IACD,CACP,CAAC,CAAC,CAAC,IAAI;AAJR,CAIQ,CAAA;AAEV,eAAe,IAAI,CAAA"}
@@ -0,0 +1,5 @@
1
+ type TTitle = {
2
+ text?: string;
3
+ };
4
+ declare const Title: ({ text }: TTitle) => import("react/jsx-runtime").JSX.Element | null;
5
+ export default Title;
@@ -0,0 +1,18 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ var Title = function (_a) {
14
+ var text = _a.text;
15
+ return (text ? _jsx("div", __assign({ className: "smartapp-user-dropdown__title" }, { children: text })) : null);
16
+ };
17
+ export default Title;
18
+ //# sourceMappingURL=Title.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Title.js","sourceRoot":"","sources":["../../../../../src/сomponents/UserDropdown/components/Title.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAMA,IAAM,KAAK,GAAG,UAAC,EAAgB;QAAd,IAAI,UAAA;IAAe,OAAA,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAK,SAAS,EAAC,+BAA+B,gBAAE,IAAI,IAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAA3E,CAA2E,CAAA;AAE/G,eAAe,KAAK,CAAA"}
@@ -1,3 +1,30 @@
1
+ import { TCorporateContacts } from './types';
2
+ export declare const THREE_DIGIT_NUMBER_WIDTH = 48;
3
+ export declare const TWO_DIGIT_NUMBER_WIDTH = 40;
4
+ export declare const SINGLE_DIGIT_NUMBER_WIDTH = 32;
5
+ export declare const INPUT_SPACE_WIDTH = 46;
6
+ export declare const GAP = 8;
7
+ export declare const USER_TYPING_TIMEOUT = 1000;
8
+ export declare const CLEAR_USER_TYPING_TIMEOUT = 500;
9
+ export declare const INPUT = "input";
10
+ export declare const EMPTY_STRING = "";
11
+ export declare const BUBBLES: {
12
+ bubbles: boolean;
13
+ };
14
+ export declare const PADDING_WITH_CLEAR_ICON = "40px";
15
+ export declare const CTS_USER = "cts_user";
16
+ export declare const CTS_USER_ALTERNATIVE = "ctsUser";
17
+ export declare const DEFAULT_MENU_LIST_MAX_HEIGHT = 220;
18
+ export declare const DEFAULT_MAX_ROWS_COUNT_TO_COLLAPSE_CHIPS = 2;
19
+ export declare const INITIAL_CORPORATE_CONTACTS: TCorporateContacts;
20
+ export declare const MATCH_SCORES: {
21
+ readonly EMAIL_STARTS_WITH: 6;
22
+ readonly EMAIL_CONTAINS: 5;
23
+ readonly NAME_FIRST_WORD_STARTS_WITH: 4;
24
+ readonly NAME_ANY_WORD_STARTS_WITH: 3;
25
+ readonly NAME_CONTAINS: 2;
26
+ readonly NO_MATCH: 0;
27
+ };
1
28
  export declare enum CONTACT_TYPES {
2
29
  myContact = "My contact",
3
30
  GALContact = "GAL contact",
@@ -6,3 +33,34 @@ export declare enum CONTACT_TYPES {
6
33
  meetingRoom = "Meeting room",
7
34
  roomList = "Room list"
8
35
  }
36
+ export declare enum MENU_ACTIONS {
37
+ close = "menu-close"
38
+ }
39
+ export declare enum INPUT_ACTIONS {
40
+ change = "input-change",
41
+ blur = "input-blur"
42
+ }
43
+ export declare enum EMAIL_SEPARATORS {
44
+ semicolon = ";",
45
+ comma = ","
46
+ }
47
+ export declare enum EXCLUDED_FIELDS {
48
+ value = "value",
49
+ label = "label",
50
+ layoutType = "layoutType",
51
+ platform = "platform",
52
+ language = "language",
53
+ isEnteredByUser = "isEnteredByUser",
54
+ isMyContacts = "isMyContacts",
55
+ isChipsCollapsable = "isChipsCollapsable",
56
+ isSelectedChipHasTooltip = "isSelectedChipHasTooltip",
57
+ isInputFocused = "isInputFocused",
58
+ setIsSearchable = "setIsSearchable",
59
+ selectRef = "selectRef",
60
+ setModalData = "setModalData",
61
+ collapsableChipsCount = "collapsableChipsCount",
62
+ lastVisibleChipIndex = "lastVisibleChipIndex",
63
+ fontFamily = "fontFamily"
64
+ }
65
+ export declare const COMMON_FIELDS_TO_OMIT: string[];
66
+ export declare const COMMON_FIELDS_TO_PICK: string[];
@@ -1,3 +1,28 @@
1
+ import { omit } from 'lodash';
2
+ export var THREE_DIGIT_NUMBER_WIDTH = 48;
3
+ export var TWO_DIGIT_NUMBER_WIDTH = 40;
4
+ export var SINGLE_DIGIT_NUMBER_WIDTH = 32;
5
+ export var INPUT_SPACE_WIDTH = 46;
6
+ export var GAP = 8;
7
+ export var USER_TYPING_TIMEOUT = 1000;
8
+ export var CLEAR_USER_TYPING_TIMEOUT = 500;
9
+ export var INPUT = 'input';
10
+ export var EMPTY_STRING = '';
11
+ export var BUBBLES = { bubbles: true };
12
+ export var PADDING_WITH_CLEAR_ICON = '40px';
13
+ export var CTS_USER = 'cts_user';
14
+ export var CTS_USER_ALTERNATIVE = 'ctsUser';
15
+ export var DEFAULT_MENU_LIST_MAX_HEIGHT = 220;
16
+ export var DEFAULT_MAX_ROWS_COUNT_TO_COLLAPSE_CHIPS = 2;
17
+ export var INITIAL_CORPORATE_CONTACTS = { corporateContacts: [], corporateContactsSet: new Set() };
18
+ export var MATCH_SCORES = {
19
+ EMAIL_STARTS_WITH: 6,
20
+ EMAIL_CONTAINS: 5,
21
+ NAME_FIRST_WORD_STARTS_WITH: 4,
22
+ NAME_ANY_WORD_STARTS_WITH: 3,
23
+ NAME_CONTAINS: 2,
24
+ NO_MATCH: 0,
25
+ };
1
26
  export var CONTACT_TYPES;
2
27
  (function (CONTACT_TYPES) {
3
28
  CONTACT_TYPES["myContact"] = "My contact";
@@ -7,4 +32,39 @@ export var CONTACT_TYPES;
7
32
  CONTACT_TYPES["meetingRoom"] = "Meeting room";
8
33
  CONTACT_TYPES["roomList"] = "Room list";
9
34
  })(CONTACT_TYPES || (CONTACT_TYPES = {}));
35
+ export var MENU_ACTIONS;
36
+ (function (MENU_ACTIONS) {
37
+ MENU_ACTIONS["close"] = "menu-close";
38
+ })(MENU_ACTIONS || (MENU_ACTIONS = {}));
39
+ export var INPUT_ACTIONS;
40
+ (function (INPUT_ACTIONS) {
41
+ INPUT_ACTIONS["change"] = "input-change";
42
+ INPUT_ACTIONS["blur"] = "input-blur";
43
+ })(INPUT_ACTIONS || (INPUT_ACTIONS = {}));
44
+ export var EMAIL_SEPARATORS;
45
+ (function (EMAIL_SEPARATORS) {
46
+ EMAIL_SEPARATORS["semicolon"] = ";";
47
+ EMAIL_SEPARATORS["comma"] = ",";
48
+ })(EMAIL_SEPARATORS || (EMAIL_SEPARATORS = {}));
49
+ export var EXCLUDED_FIELDS;
50
+ (function (EXCLUDED_FIELDS) {
51
+ EXCLUDED_FIELDS["value"] = "value";
52
+ EXCLUDED_FIELDS["label"] = "label";
53
+ EXCLUDED_FIELDS["layoutType"] = "layoutType";
54
+ EXCLUDED_FIELDS["platform"] = "platform";
55
+ EXCLUDED_FIELDS["language"] = "language";
56
+ EXCLUDED_FIELDS["isEnteredByUser"] = "isEnteredByUser";
57
+ EXCLUDED_FIELDS["isMyContacts"] = "isMyContacts";
58
+ EXCLUDED_FIELDS["isChipsCollapsable"] = "isChipsCollapsable";
59
+ EXCLUDED_FIELDS["isSelectedChipHasTooltip"] = "isSelectedChipHasTooltip";
60
+ EXCLUDED_FIELDS["isInputFocused"] = "isInputFocused";
61
+ EXCLUDED_FIELDS["setIsSearchable"] = "setIsSearchable";
62
+ EXCLUDED_FIELDS["selectRef"] = "selectRef";
63
+ EXCLUDED_FIELDS["setModalData"] = "setModalData";
64
+ EXCLUDED_FIELDS["collapsableChipsCount"] = "collapsableChipsCount";
65
+ EXCLUDED_FIELDS["lastVisibleChipIndex"] = "lastVisibleChipIndex";
66
+ EXCLUDED_FIELDS["fontFamily"] = "fontFamily";
67
+ })(EXCLUDED_FIELDS || (EXCLUDED_FIELDS = {}));
68
+ export var COMMON_FIELDS_TO_OMIT = Object.keys(omit(EXCLUDED_FIELDS, [EXCLUDED_FIELDS.language, EXCLUDED_FIELDS.isMyContacts, EXCLUDED_FIELDS.isEnteredByUser]));
69
+ export var COMMON_FIELDS_TO_PICK = ['isWarning', 'isLoading', 'isOrganizerShort', 'isResetChipsToInputValue', 'userType', 'uid', 'organizerName'];
10
70
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/сomponents/UserDropdown/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,yCAAwB,CAAA;IACxB,2CAA0B,CAAA;IAC1B,yCAAwB,CAAA;IACxB,uCAAsB,CAAA;IACtB,6CAA4B,CAAA;IAC5B,uCAAsB,CAAA;AACxB,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/сomponents/UserDropdown/constants.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
- /// <reference types="react" />
2
- import { TGenerateContactsOption, TGenerateContactsOptionsToSelect, TGenerateCorporateOption, TGenerateCorporateOptionsToSelect, TGenerateEnteredByUserOption, TUser } from './types';
3
- export declare const generateCorporateOption: ({ option: { name, avatar, email, contacts, serverName, company, userType, uid, department, companyPosition, isPrivateSchedule, isNotRemovable, isBusyAtSelectedTime, isCachedContact, }, ...remainingFields }: TGenerateCorporateOption) => {
1
+ import { RefObject, SetStateAction } from 'react';
2
+ import { MultiValue } from 'react-select';
3
+ import { MultiOptionType, TApplyFilteringToOption, TCollapseChips, TCorporateEntity, TGenerateContactsOptionsToSelect, TGenerateCorporateOptionsToSelect, TGenerateEnteredByUserOption, TLocalEntity, TMyContactsEntries, TRetrieveFilteredContacts, TUser } from './types';
4
+ export declare const generateCorporateOptionsToSelect: ({ language, options, setIsSearchable, setModalData, ...remainingFields }: TGenerateCorporateOptionsToSelect) => {
5
+ language: string;
6
+ setIsSearchable: (isSearchable: boolean) => void;
7
+ setModalData: (modalData: import("./types").TModalData | null) => void;
4
8
  platform: string;
5
9
  layoutType: string;
6
10
  isChipsCollapsable: boolean;
7
- isInputFocused: import("react").RefObject<boolean>;
8
- selectRef: import("react").RefObject<any>;
11
+ isInputFocused: RefObject<boolean>;
12
+ selectRef: RefObject<any>;
9
13
  value: string;
10
14
  label: string;
11
15
  name: string;
@@ -27,16 +31,65 @@ export declare const generateCorporateOption: ({ option: { name, avatar, email,
27
31
  isNotRemovable: boolean | undefined;
28
32
  isBusyAtSelectedTime: boolean | undefined;
29
33
  isCachedContact: boolean | undefined;
34
+ }[];
35
+ export declare const generateContactsOptionsToSelect: ({ options, ...remainingFields }: TGenerateContactsOptionsToSelect) => {
36
+ platform: string;
37
+ layoutType: string;
38
+ isChipsCollapsable: boolean;
39
+ isInputFocused: RefObject<boolean>;
40
+ selectRef: RefObject<any>;
41
+ isMyContacts?: boolean | undefined;
42
+ isLocalContact?: boolean | undefined;
43
+ value: string;
44
+ label: string;
45
+ name: string | null;
46
+ avatar: string | null;
47
+ email: string;
48
+ isPrivateSchedule: boolean | undefined;
49
+ isNotRemovable: boolean | undefined;
50
+ isBusyAtSelectedTime: boolean | undefined;
51
+ }[];
52
+ export declare const generateEnteredByUserOption: ({ email, ...remainingFields }: TGenerateEnteredByUserOption) => {
53
+ platform: string;
54
+ layoutType: string;
55
+ isChipsCollapsable: boolean;
56
+ isInputFocused: RefObject<boolean>;
57
+ selectRef: RefObject<any>;
58
+ value: string;
59
+ label: string;
60
+ email: string;
61
+ isEnteredByUser: boolean;
30
62
  };
31
- export declare const generateCorporateOptionsToSelect: ({ language, options, setIsSearchable, setModalData, ...remainingFields }: TGenerateCorporateOptionsToSelect) => {
32
- language: string;
33
- setIsSearchable: (isSearchable: boolean) => void;
34
- setModalData: (modalData: import("./types").TModalData | null) => void;
63
+ export declare const IndicatorSeparator: () => null;
64
+ export declare const DropdownIndicator: () => null;
65
+ export declare const MultiValueRemove: () => null;
66
+ export declare const LoadingIndicator: () => null;
67
+ export declare const sortContacts: <T extends TUser>(contacts: T[], query: string) => T[];
68
+ export declare const checkIsValueIsEmail: (inputValue: string) => boolean;
69
+ export declare const calculateHorizontalPadding: (elementRef: RefObject<HTMLDivElement | null>, setElementWidth: (value: SetStateAction<number>) => void) => string;
70
+ export declare const extractInputEmails: (inputValue: string) => string[];
71
+ export declare const applyFilteringToOption: ({ isFilteringDisabled, inputValue, data: { label, email: optionEmail }, selectedUsers, }: TApplyFilteringToOption) => boolean;
72
+ export declare const setCaretPosition: (input: HTMLInputElement, position: number) => void;
73
+ export declare const setCaretInEmptyInput: (input: HTMLInputElement) => void;
74
+ export declare const retrieveFilteredContacts: ({ query, corporateEntries, myContactsEntries, checkIsEmailToExclude }: TRetrieveFilteredContacts) => {
75
+ filteredCorporateContacts: TCorporateEntity[];
76
+ filteredLocalContacts: TLocalEntity[];
77
+ filteredMyContacts: TMyContactsEntries[];
78
+ };
79
+ export declare const transformSelectedUsers: (selectedUsers: MultiValue<MultiOptionType>) => TUser[];
80
+ export declare const collapseChips: ({ userDropdownId, maxRowsCountToCollapseChips, maskWidth, suffixWidth, chips }: TCollapseChips) => {
81
+ collapsableChips: number;
82
+ numberOfVisibleChips: number;
83
+ chipLabelWithMaxWidth: string;
84
+ };
85
+ export declare const unCollapseChips: (chipLabelWithMaxWidth: string, chips: HTMLDivElement[]) => void;
86
+ export declare const retrieveChipsElements: (userDropdownId: string) => HTMLDivElement[];
87
+ export declare const transformSelectedEntity: (entity: TUser, commonFields: any) => {
35
88
  platform: string;
36
89
  layoutType: string;
37
90
  isChipsCollapsable: boolean;
38
- isInputFocused: import("react").RefObject<boolean>;
39
- selectRef: import("react").RefObject<any>;
91
+ isInputFocused: RefObject<boolean>;
92
+ selectRef: RefObject<any>;
40
93
  value: string;
41
94
  label: string;
42
95
  name: string;
@@ -58,13 +111,12 @@ export declare const generateCorporateOptionsToSelect: ({ language, options, set
58
111
  isNotRemovable: boolean | undefined;
59
112
  isBusyAtSelectedTime: boolean | undefined;
60
113
  isCachedContact: boolean | undefined;
61
- }[];
62
- export declare const generateContactsOption: ({ option: { name, avatar, email, isPrivateSchedule, isNotRemovable, isBusyAtSelectedTime, contacts }, ...remainingFields }: TGenerateContactsOption) => {
114
+ } | {
63
115
  platform: string;
64
116
  layoutType: string;
65
117
  isChipsCollapsable: boolean;
66
- isInputFocused: import("react").RefObject<boolean>;
67
- selectRef: import("react").RefObject<any>;
118
+ isInputFocused: RefObject<boolean>;
119
+ selectRef: RefObject<any>;
68
120
  isMyContacts?: boolean | undefined;
69
121
  isLocalContact?: boolean | undefined;
70
122
  value: string;
@@ -75,37 +127,14 @@ export declare const generateContactsOption: ({ option: { name, avatar, email, i
75
127
  isPrivateSchedule: boolean | undefined;
76
128
  isNotRemovable: boolean | undefined;
77
129
  isBusyAtSelectedTime: boolean | undefined;
78
- };
79
- export declare const generateContactsOptionsToSelect: ({ options, ...remainingFields }: TGenerateContactsOptionsToSelect) => {
130
+ } | {
80
131
  platform: string;
81
132
  layoutType: string;
82
133
  isChipsCollapsable: boolean;
83
- isInputFocused: import("react").RefObject<boolean>;
84
- selectRef: import("react").RefObject<any>;
85
- isMyContacts?: boolean | undefined;
86
- isLocalContact?: boolean | undefined;
87
- value: string;
88
- label: string;
89
- name: string | null;
90
- avatar: string | null;
91
- email: string;
92
- isPrivateSchedule: boolean | undefined;
93
- isNotRemovable: boolean | undefined;
94
- isBusyAtSelectedTime: boolean | undefined;
95
- }[];
96
- export declare const generateEnteredByUserOption: ({ email, ...remainingFields }: TGenerateEnteredByUserOption) => {
97
- platform: string;
98
- layoutType: string;
99
- isChipsCollapsable: boolean;
100
- isInputFocused: import("react").RefObject<boolean>;
101
- selectRef: import("react").RefObject<any>;
134
+ isInputFocused: RefObject<boolean>;
135
+ selectRef: RefObject<any>;
102
136
  value: string;
103
137
  label: string;
104
138
  email: string;
105
139
  isEnteredByUser: boolean;
106
140
  };
107
- export declare const IndicatorSeparator: () => null;
108
- export declare const DropdownIndicator: () => null;
109
- export declare const MultiValueRemove: () => null;
110
- export declare const LoadingIndicator: () => null;
111
- export declare const sortContacts: <T extends TUser>(contacts: T[], query: string) => T[];
@@ -29,11 +29,12 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
29
29
  }
30
30
  return to.concat(ar || Array.prototype.slice.call(from));
31
31
  };
32
+ import { ru } from 'convert-layout';
33
+ import { isEmpty, omit, uniq } from 'lodash';
32
34
  import { transliterate as tr } from 'transliteration';
33
- import ru from 'convert-layout/ru';
34
- import { SPACE } from '../../constants';
35
- import { MATCH_SCORES, } from './types';
36
- export var generateCorporateOption = function (_a) {
35
+ import { AFFIX_INPUT_PH, DEFAULT_INPUT_PADDING, EMAIL_FIELD, SPACE } from '../../constants';
36
+ import { BUBBLES, COMMON_FIELDS_TO_OMIT, CTS_USER, CTS_USER_ALTERNATIVE, EMPTY_STRING, EXCLUDED_FIELDS, GAP, INITIAL_CORPORATE_CONTACTS, INPUT, INPUT_SPACE_WIDTH, MATCH_SCORES, SINGLE_DIGIT_NUMBER_WIDTH, THREE_DIGIT_NUMBER_WIDTH, TWO_DIGIT_NUMBER_WIDTH, } from './constants';
37
+ var generateCorporateOption = function (_a) {
37
38
  var _b = _a.option, name = _b.name, avatar = _b.avatar, email = _b.email, contacts = _b.contacts, serverName = _b.serverName, company = _b.company, userType = _b.userType, uid = _b.uid, department = _b.department, companyPosition = _b.companyPosition, isPrivateSchedule = _b.isPrivateSchedule, isNotRemovable = _b.isNotRemovable, isBusyAtSelectedTime = _b.isBusyAtSelectedTime, isCachedContact = _b.isCachedContact, remainingFields = __rest(_a, ["option"]);
38
39
  return (__assign({ value: contacts[0].userHuid, label: name, name: name, avatar: avatar, email: email || contacts[0].contact, contacts: contacts, userType: userType, uid: uid, serverName: serverName, company: company, department: department, companyPosition: companyPosition, isPrivateSchedule: isPrivateSchedule, isNotRemovable: isNotRemovable, isBusyAtSelectedTime: isBusyAtSelectedTime, isCachedContact: isCachedContact }, remainingFields));
39
40
  };
@@ -41,10 +42,10 @@ export var generateCorporateOptionsToSelect = function (_a) {
41
42
  var language = _a.language, options = _a.options, setIsSearchable = _a.setIsSearchable, setModalData = _a.setModalData, remainingFields = __rest(_a, ["language", "options", "setIsSearchable", "setModalData"]);
42
43
  return options.map(function (option) { return (__assign(__assign({}, generateCorporateOption(__assign({ option: option }, remainingFields))), { language: language, setIsSearchable: setIsSearchable, setModalData: setModalData })); });
43
44
  };
44
- export var generateContactsOption = function (_a) {
45
+ var generateContactsOption = function (_a) {
45
46
  var _b;
46
47
  var _c = _a.option, name = _c.name, avatar = _c.avatar, email = _c.email, isPrivateSchedule = _c.isPrivateSchedule, isNotRemovable = _c.isNotRemovable, isBusyAtSelectedTime = _c.isBusyAtSelectedTime, contacts = _c.contacts, remainingFields = __rest(_a, ["option"]);
47
- var contactEmail = ((_b = contacts === null || contacts === void 0 ? void 0 : contacts[0]) === null || _b === void 0 ? void 0 : _b.contact) || email || '';
48
+ var contactEmail = ((_b = contacts === null || contacts === void 0 ? void 0 : contacts[0]) === null || _b === void 0 ? void 0 : _b.contact) || email || EMPTY_STRING;
48
49
  return __assign({ value: contactEmail, label: name || contactEmail, name: name, avatar: avatar, email: contactEmail, isPrivateSchedule: isPrivateSchedule, isNotRemovable: isNotRemovable, isBusyAtSelectedTime: isBusyAtSelectedTime }, remainingFields);
49
50
  };
50
51
  export var generateContactsOptionsToSelect = function (_a) {
@@ -72,7 +73,7 @@ var generateQueryVariants = function (query) { return ({
72
73
  toEng: ru.toEn(query),
73
74
  fromEng: ru.fromEn(query),
74
75
  }); };
75
- var extractFirstWord = function (text) { var _a; return (_a = text.split(SPACE)[0]) !== null && _a !== void 0 ? _a : ''; };
76
+ var extractFirstWord = function (text) { var _a; return (_a = text.split(SPACE)[0]) !== null && _a !== void 0 ? _a : EMPTY_STRING; };
76
77
  var createMatchers = function (queryVariants) {
77
78
  var variants = Object.values(queryVariants);
78
79
  var startsWith = function (text) { return variants.some(function (variant) { return text.startsWith(variant); }); };
@@ -106,11 +107,11 @@ var scoreNameMatch = function (name, _a) {
106
107
  return MATCH_SCORES.NO_MATCH;
107
108
  };
108
109
  var calculateContactScore = function (_a, matchers) {
109
- var email = _a.email, _b = _a.name, name = _b === void 0 ? '' : _b;
110
+ var email = _a.email, _b = _a.name, name = _b === void 0 ? EMPTY_STRING : _b;
110
111
  return ({
111
112
  emailScore: scoreEmailMatch(email, matchers),
112
- nameScore: scoreNameMatch(name || '', matchers),
113
- originalName: name || '',
113
+ nameScore: scoreNameMatch(name || EMPTY_STRING, matchers),
114
+ originalName: name || EMPTY_STRING,
114
115
  });
115
116
  };
116
117
  var compareContacts = function (_a, _b) {
@@ -127,7 +128,7 @@ export var sortContacts = function (contacts, query) {
127
128
  return __spreadArray([], contacts, true).sort(function (_a, _b) {
128
129
  var nameA = _a.name;
129
130
  var nameB = _b.name;
130
- return (nameA || '').localeCompare(nameB || '');
131
+ return (nameA || EMPTY_STRING).localeCompare(nameB || EMPTY_STRING);
131
132
  });
132
133
  var queryVariants = generateQueryVariants(query.toLowerCase());
133
134
  var matchers = createMatchers(queryVariants);
@@ -142,4 +143,171 @@ export var sortContacts = function (contacts, query) {
142
143
  return contact;
143
144
  });
144
145
  };
146
+ export var checkIsValueIsEmail = function (inputValue) {
147
+ var regex = new RegExp(/^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/);
148
+ return regex.test(inputValue);
149
+ };
150
+ export var calculateHorizontalPadding = function (elementRef, setElementWidth) {
151
+ var _a, _b;
152
+ var elementWidth = ((_b = (_a = elementRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) === null || _b === void 0 ? void 0 : _b.width) || null;
153
+ elementWidth && setElementWidth(elementWidth + GAP);
154
+ return "".concat(elementWidth ? elementWidth + AFFIX_INPUT_PH : DEFAULT_INPUT_PADDING, "px");
155
+ };
156
+ export var extractInputEmails = function (inputValue) {
157
+ return inputValue
158
+ .split(/[,;]+/)
159
+ .map(function (inputStr) { return inputStr.trim(); })
160
+ .filter(function (inputStr) { return !!inputStr.length; });
161
+ };
162
+ var checkIsContainsValue = function (_a) {
163
+ var label = _a.label, email = _a.email, value = _a.value;
164
+ var _b = label.split(SPACE), name = _b[0], surname = _b[1];
165
+ var reversedLabel = "".concat(surname).concat(SPACE).concat(name);
166
+ return label.toLowerCase().includes(value) || reversedLabel.toLowerCase().includes(value) || email.toLowerCase().includes(value);
167
+ };
168
+ export var applyFilteringToOption = function (_a) {
169
+ var isFilteringDisabled = _a.isFilteringDisabled, inputValue = _a.inputValue, _b = _a.data, label = _b.label, optionEmail = _b.email, selectedUsers = _a.selectedUsers;
170
+ var originInputValue = inputValue.toLowerCase();
171
+ var transliteratedInputValue = tr(originInputValue);
172
+ var toEngInputValue = ru.toEn(originInputValue);
173
+ var fromEngInputValue = ru.fromEn(originInputValue);
174
+ var isUserAlreadySelected = selectedUsers.find(function (_a) {
175
+ var email = _a.email;
176
+ return email === optionEmail;
177
+ });
178
+ var isContainsInputValue = [originInputValue, transliteratedInputValue, toEngInputValue, fromEngInputValue].some(function (value) {
179
+ return checkIsContainsValue({ label: label, email: optionEmail, value: value });
180
+ });
181
+ if (isFilteringDisabled)
182
+ return !isEmpty(selectedUsers) ? !isUserAlreadySelected : true;
183
+ return !isEmpty(selectedUsers) ? !isUserAlreadySelected && isContainsInputValue : isContainsInputValue;
184
+ };
185
+ var calculateCounterWidth = function (counterNumber) {
186
+ if (counterNumber >= 100)
187
+ return THREE_DIGIT_NUMBER_WIDTH;
188
+ if (counterNumber >= 10)
189
+ return TWO_DIGIT_NUMBER_WIDTH;
190
+ return SINGLE_DIGIT_NUMBER_WIDTH;
191
+ };
192
+ var dispatchInputEvent = function (input) { return input.dispatchEvent(new Event(INPUT, BUBBLES)); };
193
+ var generateTruncatedElementY = function (element) { return Math.trunc(element.getBoundingClientRect().y); };
194
+ export var setCaretPosition = function (input, position) { return input.setSelectionRange(position, position); };
195
+ export var setCaretInEmptyInput = function (input) {
196
+ input.value = SPACE;
197
+ dispatchInputEvent(input);
198
+ setTimeout(function () {
199
+ input.value = EMPTY_STRING;
200
+ dispatchInputEvent(input);
201
+ setCaretPosition(input, 0);
202
+ }, 0);
203
+ };
204
+ export var retrieveFilteredContacts = function (_a) {
205
+ var query = _a.query, corporateEntries = _a.corporateEntries, myContactsEntries = _a.myContactsEntries, checkIsEmailToExclude = _a.checkIsEmailToExclude;
206
+ var _b = corporateEntries || {}, _c = _b.corpPhonebookEntries, corpPhonebookEntries = _c === void 0 ? [] : _c, _d = _b.trustSearchEntries, trustSearchEntries = _d === void 0 ? [] : _d, _e = _b.cachedSearchEntries, cachedSearchEntries = _e === void 0 ? [] : _e, _f = _b.localPhonebookEntries, localPhonebookEntries = _f === void 0 ? [] : _f;
207
+ var _g = __spreadArray(__spreadArray(__spreadArray([], corpPhonebookEntries, true), trustSearchEntries, true), cachedSearchEntries.map(function (entity) { return (__assign(__assign({}, entity), { isCachedContact: true })); }), true).reduce(function (acc, entity) {
208
+ var _a;
209
+ var email = entity.email, contacts = entity.contacts;
210
+ var emailToCheck = email || ((_a = contacts === null || contacts === void 0 ? void 0 : contacts.find(function (_a) {
211
+ var contactType = _a.contactType;
212
+ return contactType === EMAIL_FIELD;
213
+ })) === null || _a === void 0 ? void 0 : _a.contact);
214
+ if (emailToCheck && !acc.corporateContactsSet.has(emailToCheck)) {
215
+ acc.corporateContacts.push(entity);
216
+ acc.corporateContactsSet.add(emailToCheck);
217
+ }
218
+ return acc;
219
+ }, INITIAL_CORPORATE_CONTACTS), corporateContacts = _g.corporateContacts, corporateContactsSet = _g.corporateContactsSet;
220
+ var sortedCorporateContacts = sortContacts(corporateContacts, query);
221
+ var sortedLocalContacts = sortContacts(localPhonebookEntries, query);
222
+ var sortedMyContacts = sortContacts(myContactsEntries || [], query);
223
+ var filteredCorporateContacts = sortedCorporateContacts.filter(function (_a) {
224
+ var _b;
225
+ var email = _a.email, contacts = _a.contacts;
226
+ return [email, (_b = contacts[0]) === null || _b === void 0 ? void 0 : _b.contact].every(function (email) { return !checkIsEmailToExclude(email); });
227
+ });
228
+ var filteredLocalContacts = sortedLocalContacts.filter(function (_a) {
229
+ var _b;
230
+ var email = _a.email, contacts = _a.contacts;
231
+ var contact = (_b = contacts[0]) === null || _b === void 0 ? void 0 : _b.contact;
232
+ var emailToCheck = email || contact;
233
+ return !checkIsEmailToExclude(email) && !checkIsEmailToExclude(contact) && !corporateContactsSet.has(emailToCheck);
234
+ });
235
+ var filteredMyContacts = sortedMyContacts.filter(function (_a) {
236
+ var email = _a.email;
237
+ return !checkIsEmailToExclude(email) && !corporateContactsSet.has(email);
238
+ });
239
+ return { filteredCorporateContacts: filteredCorporateContacts, filteredLocalContacts: filteredLocalContacts, filteredMyContacts: filteredMyContacts };
240
+ };
241
+ export var transformSelectedUsers = function (selectedUsers) {
242
+ var users = [];
243
+ selectedUsers.forEach(function (user) {
244
+ var isEnteredByUser = user.isEnteredByUser, isMyContacts = user.isMyContacts;
245
+ var userToAdd = omit(user, COMMON_FIELDS_TO_OMIT);
246
+ var entryFieldsToExclude = isMyContacts ? [EXCLUDED_FIELDS.isMyContacts] : [EXCLUDED_FIELDS.language];
247
+ var fieldsToExclude = isEnteredByUser ? [EXCLUDED_FIELDS.isEnteredByUser] : entryFieldsToExclude;
248
+ users.push(omit(userToAdd, fieldsToExclude));
249
+ });
250
+ return users;
251
+ };
252
+ export var collapseChips = function (_a) {
253
+ var _b;
254
+ var userDropdownId = _a.userDropdownId, maxRowsCountToCollapseChips = _a.maxRowsCountToCollapseChips, maskWidth = _a.maskWidth, suffixWidth = _a.suffixWidth, chips = _a.chips;
255
+ var collapsableChips = 0;
256
+ var chipLabelWithMaxWidth = EMPTY_STRING;
257
+ var yRows = uniq(chips.map(function (chip) { return generateTruncatedElementY(chip); }));
258
+ var yLastRow = yRows[maxRowsCountToCollapseChips - 1];
259
+ var rowsToHide = yRows.slice(maxRowsCountToCollapseChips);
260
+ var lastRow = [];
261
+ chips.forEach(function (chip) {
262
+ var y = generateTruncatedElementY(chip);
263
+ if (rowsToHide.includes(y))
264
+ collapsableChips += 1;
265
+ else
266
+ y === yLastRow && lastRow.push(chip);
267
+ });
268
+ var counterWidth = calculateCounterWidth(collapsableChips);
269
+ var rowWidth = counterWidth + INPUT_SPACE_WIDTH;
270
+ var dropdownWidth = ((_b = document.querySelector("#".concat(userDropdownId))) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect().width) - maskWidth - suffixWidth;
271
+ lastRow.forEach(function (chip) {
272
+ var _a;
273
+ rowWidth += chip.getBoundingClientRect().width + GAP;
274
+ if (rowWidth > dropdownWidth) {
275
+ if (lastRow.length > 1) {
276
+ collapsableChips += 1;
277
+ }
278
+ else {
279
+ var emptySpaceWidth = collapsableChips > 0 ? counterWidth + INPUT_SPACE_WIDTH + GAP : INPUT_SPACE_WIDTH;
280
+ chip.style.maxWidth = "".concat(dropdownWidth - emptySpaceWidth, "px");
281
+ chipLabelWithMaxWidth = ((_a = chip.querySelector('.smartapp-chip__info--name')) === null || _a === void 0 ? void 0 : _a.innerHTML) || EMPTY_STRING;
282
+ }
283
+ }
284
+ });
285
+ return { collapsableChips: collapsableChips, numberOfVisibleChips: chips.length - collapsableChips, chipLabelWithMaxWidth: chipLabelWithMaxWidth };
286
+ };
287
+ export var unCollapseChips = function (chipLabelWithMaxWidth, chips) {
288
+ chips.forEach(function (chip) {
289
+ var _a;
290
+ var chipLabel = ((_a = chip.querySelector('.smartapp-chip__info--name')) === null || _a === void 0 ? void 0 : _a.innerHTML) || EMPTY_STRING;
291
+ chipLabel === chipLabelWithMaxWidth && (chip.style.maxWidth = '100%');
292
+ });
293
+ };
294
+ export var retrieveChipsElements = function (userDropdownId) {
295
+ var _a;
296
+ var chipsNodes = ((_a = document.querySelector("#".concat(userDropdownId))) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.smartapp-chip')) || [];
297
+ return Array.from(chipsNodes);
298
+ };
299
+ export var transformSelectedEntity = function (entity, commonFields) {
300
+ var _a;
301
+ var email = entity.email;
302
+ var isEntityContainsContacts = 'contacts' in entity;
303
+ var isCorporateEntity = isEntityContainsContacts && [CTS_USER, CTS_USER_ALTERNATIVE].includes(((_a = entity.contacts[0]) === null || _a === void 0 ? void 0 : _a.userKind) || EMPTY_STRING);
304
+ var generatedNotCorporateEntity = Object.keys(entity).length === 1
305
+ ? generateEnteredByUserOption(__assign({ email: email }, commonFields))
306
+ : generateContactsOption(__assign({ option: entity, isMyContacts: true }, commonFields));
307
+ if (isCorporateEntity)
308
+ return generateCorporateOption(__assign({ option: entity }, commonFields));
309
+ return isEntityContainsContacts
310
+ ? generateContactsOption(__assign({ option: entity, isLocalContact: true }, commonFields))
311
+ : generatedNotCorporateEntity;
312
+ };
145
313
  //# sourceMappingURL=helpers.js.map