@chayns-components/person-finder 5.3.0 → 5.3.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 (56) hide show
  1. package/lib/cjs/api/person/get.js +5 -3
  2. package/lib/cjs/api/person/get.js.map +1 -1
  3. package/lib/cjs/components/PersonFinderProvider.js +12 -5
  4. package/lib/cjs/components/PersonFinderProvider.js.map +1 -1
  5. package/lib/cjs/components/person-finder/PersonFinder.js +4 -2
  6. package/lib/cjs/components/person-finder/PersonFinder.js.map +1 -1
  7. package/lib/cjs/components/person-finder/person-finder-wrapper/PersonFinderWrapper.js.map +1 -1
  8. package/lib/cjs/components/person-finder/person-finder-wrapper/person-finder-body/PersonFinderBody.js +1 -3
  9. package/lib/cjs/components/person-finder/person-finder-wrapper/person-finder-body/PersonFinderBody.js.map +1 -1
  10. package/lib/cjs/components/person-finder/person-finder-wrapper/person-finder-body/person-finder-group/PersonFinderGroup.js +3 -6
  11. package/lib/cjs/components/person-finder/person-finder-wrapper/person-finder-body/person-finder-group/PersonFinderGroup.js.map +1 -1
  12. package/lib/cjs/constants/textStrings.js +70 -1
  13. package/lib/cjs/constants/textStrings.js.map +1 -1
  14. package/lib/cjs/hooks/personFinder.js +43 -7
  15. package/lib/cjs/hooks/personFinder.js.map +1 -1
  16. package/lib/cjs/index.js +6 -0
  17. package/lib/cjs/index.js.map +1 -1
  18. package/lib/cjs/types/personFinder.js +6 -1
  19. package/lib/cjs/types/personFinder.js.map +1 -1
  20. package/lib/cjs/utils/convert.js +5 -2
  21. package/lib/cjs/utils/convert.js.map +1 -1
  22. package/lib/cjs/utils/personFinder.js +110 -9
  23. package/lib/cjs/utils/personFinder.js.map +1 -1
  24. package/lib/esm/api/person/get.js +5 -3
  25. package/lib/esm/api/person/get.js.map +1 -1
  26. package/lib/esm/components/PersonFinderProvider.js +12 -5
  27. package/lib/esm/components/PersonFinderProvider.js.map +1 -1
  28. package/lib/esm/components/person-finder/PersonFinder.js +5 -3
  29. package/lib/esm/components/person-finder/PersonFinder.js.map +1 -1
  30. package/lib/esm/components/person-finder/person-finder-wrapper/PersonFinderWrapper.js.map +1 -1
  31. package/lib/esm/components/person-finder/person-finder-wrapper/person-finder-body/PersonFinderBody.js +1 -3
  32. package/lib/esm/components/person-finder/person-finder-wrapper/person-finder-body/PersonFinderBody.js.map +1 -1
  33. package/lib/esm/components/person-finder/person-finder-wrapper/person-finder-body/person-finder-group/PersonFinderGroup.js +4 -7
  34. package/lib/esm/components/person-finder/person-finder-wrapper/person-finder-body/person-finder-group/PersonFinderGroup.js.map +1 -1
  35. package/lib/esm/constants/textStrings.js +69 -0
  36. package/lib/esm/constants/textStrings.js.map +1 -1
  37. package/lib/esm/hooks/personFinder.js +43 -8
  38. package/lib/esm/hooks/personFinder.js.map +1 -1
  39. package/lib/esm/index.js +1 -1
  40. package/lib/esm/index.js.map +1 -1
  41. package/lib/esm/types/personFinder.js +5 -0
  42. package/lib/esm/types/personFinder.js.map +1 -1
  43. package/lib/esm/utils/convert.js +5 -2
  44. package/lib/esm/utils/convert.js.map +1 -1
  45. package/lib/esm/utils/personFinder.js +107 -9
  46. package/lib/esm/utils/personFinder.js.map +1 -1
  47. package/lib/types/api/person/get.d.ts +3 -2
  48. package/lib/types/components/PersonFinderProvider.d.ts +2 -1
  49. package/lib/types/components/person-finder/PersonFinder.d.ts +9 -1
  50. package/lib/types/components/person-finder/person-finder-wrapper/person-finder-body/person-finder-group/PersonFinderGroup.d.ts +0 -1
  51. package/lib/types/constants/textStrings.d.ts +69 -0
  52. package/lib/types/index.d.ts +1 -1
  53. package/lib/types/types/personFinder.d.ts +5 -0
  54. package/lib/types/utils/convert.d.ts +5 -1
  55. package/lib/types/utils/personFinder.d.ts +13 -3
  56. package/package.json +2 -2
@@ -5,11 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getPersons = void 0;
7
7
  var _chaynsApi = require("chayns-api");
8
- const URL = 'https://relations.chayns.net/relations/v2/person?skip=##skip##&take=##take##&query=##search##';
8
+ var _personFinder = require("../../types/personFinder");
9
+ const URL = 'https://relations.chayns.net/relations/v2/person?skip=##skip##&take=##take##&query=##search##&scoreForSite=##scoreForSite##';
9
10
  const getPersons = async ({
10
11
  search,
11
12
  skip,
12
- take = 20
13
+ take = 20,
14
+ relationMode = _personFinder.RelationMode.PERSON
13
15
  }) => {
14
16
  const {
15
17
  accessToken
@@ -23,7 +25,7 @@ const getPersons = async ({
23
25
  },
24
26
  method: 'GET'
25
27
  };
26
- const response = await fetch(URL.replace('##search##', search).replace('##skip##', skip.toString()).replace('##take##', take === null || take === void 0 ? void 0 : take.toString()), requestInit);
28
+ const response = await fetch(URL.replace('##search##', search).replace('##skip##', skip.toString()).replace('##take##', take === null || take === void 0 ? void 0 : take.toString()).replace('##scoreForSite##', relationMode === _personFinder.RelationMode.SITE ? '1' : '0'), requestInit);
27
29
  if (response.status === 200) {
28
30
  return await response.json();
29
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","names":["_chaynsApi","require","URL","getPersons","search","skip","take","accessToken","getAccessToken","undefined","requestInit","headers","Authorization","method","response","fetch","replace","toString","status","json","exports"],"sources":["../../../../src/api/person/get.ts"],"sourcesContent":["import { getAccessToken } from 'chayns-api';\nimport { PersonEntryResult } from '../../types/personFinder';\n\nconst URL =\n 'https://relations.chayns.net/relations/v2/person?skip=##skip##&take=##take##&query=##search##';\n\ninterface GetPersonResult {\n list: PersonEntryResult[];\n count: number;\n}\n\ninterface GetPersonsOptions {\n search: string;\n skip: number;\n take?: number;\n}\n\nexport const getPersons = async ({ search, skip, take = 20 }: GetPersonsOptions) => {\n const { accessToken } = await getAccessToken();\n\n if (!accessToken) {\n return undefined;\n }\n\n const requestInit: RequestInit = {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n method: 'GET',\n };\n\n const response = await fetch(\n URL.replace('##search##', search)\n .replace('##skip##', skip.toString())\n .replace('##take##', take?.toString()),\n requestInit,\n );\n\n if (response.status === 200) {\n return (await response.json()) as GetPersonResult;\n }\n\n return undefined;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAGA,MAAMC,GAAG,GACL,+FAA+F;AAa5F,MAAMC,UAAU,GAAG,MAAAA,CAAO;EAAEC,MAAM;EAAEC,IAAI;EAAEC,IAAI,GAAG;AAAsB,CAAC,KAAK;EAChF,MAAM;IAAEC;EAAY,CAAC,GAAG,MAAM,IAAAC,yBAAc,EAAC,CAAC;EAE9C,IAAI,CAACD,WAAW,EAAE;IACd,OAAOE,SAAS;EACpB;EAEA,MAAMC,WAAwB,GAAG;IAC7BC,OAAO,EAAE;MACLC,aAAa,EAAE,UAAUL,WAAW;IACxC,CAAC;IACDM,MAAM,EAAE;EACZ,CAAC;EAED,MAAMC,QAAQ,GAAG,MAAMC,KAAK,CACxBb,GAAG,CAACc,OAAO,CAAC,YAAY,EAAEZ,MAAM,CAAC,CAC5BY,OAAO,CAAC,UAAU,EAAEX,IAAI,CAACY,QAAQ,CAAC,CAAC,CAAC,CACpCD,OAAO,CAAC,UAAU,EAAEV,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEW,QAAQ,CAAC,CAAC,CAAC,EAC1CP,WACJ,CAAC;EAED,IAAII,QAAQ,CAACI,MAAM,KAAK,GAAG,EAAE;IACzB,OAAQ,MAAMJ,QAAQ,CAACK,IAAI,CAAC,CAAC;EACjC;EAEA,OAAOV,SAAS;AACpB,CAAC;AAACW,OAAA,CAAAjB,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"file":"get.js","names":["_chaynsApi","require","_personFinder","URL","getPersons","search","skip","take","relationMode","RelationMode","PERSON","accessToken","getAccessToken","undefined","requestInit","headers","Authorization","method","response","fetch","replace","toString","SITE","status","json","exports"],"sources":["../../../../src/api/person/get.ts"],"sourcesContent":["import { getAccessToken } from 'chayns-api';\nimport { PersonEntryResult, RelationMode } from '../../types/personFinder';\n\nconst URL =\n 'https://relations.chayns.net/relations/v2/person?skip=##skip##&take=##take##&query=##search##&scoreForSite=##scoreForSite##';\n\ninterface GetPersonResult {\n list: PersonEntryResult[];\n count: number;\n}\n\ninterface GetPersonsOptions {\n search: string;\n skip: number;\n take?: number;\n relationMode?: RelationMode;\n}\n\nexport const getPersons = async ({\n search,\n skip,\n take = 20,\n relationMode = RelationMode.PERSON,\n}: GetPersonsOptions) => {\n const { accessToken } = await getAccessToken();\n\n if (!accessToken) {\n return undefined;\n }\n\n const requestInit: RequestInit = {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n method: 'GET',\n };\n\n const response = await fetch(\n URL.replace('##search##', search)\n .replace('##skip##', skip.toString())\n .replace('##take##', take?.toString())\n .replace('##scoreForSite##', relationMode === RelationMode.SITE ? '1' : '0'),\n requestInit,\n );\n\n if (response.status === 200) {\n return (await response.json()) as GetPersonResult;\n }\n\n return undefined;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEA,MAAME,GAAG,GACL,6HAA6H;AAc1H,MAAMC,UAAU,GAAG,MAAAA,CAAO;EAC7BC,MAAM;EACNC,IAAI;EACJC,IAAI,GAAG,EAAE;EACTC,YAAY,GAAGC,0BAAY,CAACC;AACb,CAAC,KAAK;EACrB,MAAM;IAAEC;EAAY,CAAC,GAAG,MAAM,IAAAC,yBAAc,EAAC,CAAC;EAE9C,IAAI,CAACD,WAAW,EAAE;IACd,OAAOE,SAAS;EACpB;EAEA,MAAMC,WAAwB,GAAG;IAC7BC,OAAO,EAAE;MACLC,aAAa,EAAE,UAAUL,WAAW;IACxC,CAAC;IACDM,MAAM,EAAE;EACZ,CAAC;EAED,MAAMC,QAAQ,GAAG,MAAMC,KAAK,CACxBhB,GAAG,CAACiB,OAAO,CAAC,YAAY,EAAEf,MAAM,CAAC,CAC5Be,OAAO,CAAC,UAAU,EAAEd,IAAI,CAACe,QAAQ,CAAC,CAAC,CAAC,CACpCD,OAAO,CAAC,UAAU,EAAEb,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEc,QAAQ,CAAC,CAAC,CAAC,CACrCD,OAAO,CAAC,kBAAkB,EAAEZ,YAAY,KAAKC,0BAAY,CAACa,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,EAChFR,WACJ,CAAC;EAED,IAAII,QAAQ,CAACK,MAAM,KAAK,GAAG,EAAE;IACzB,OAAQ,MAAML,QAAQ,CAACM,IAAI,CAAC,CAAC;EACjC;EAEA,OAAOX,SAAS;AACpB,CAAC;AAACY,OAAA,CAAArB,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -12,6 +12,8 @@ var _post = require("../api/friends/post");
12
12
  var _delete = require("../api/friends/delete");
13
13
  var _personFinder2 = require("../utils/personFinder");
14
14
  var _uac = require("../utils/uac");
15
+ var _textstring = require("@chayns-components/textstring");
16
+ var _textStrings = require("../constants/textStrings");
15
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
18
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
17
19
  const THROTTLE_INTERVAL = 500;
@@ -42,7 +44,8 @@ const PersonFinderProvider = ({
42
44
  excludedEntryIds,
43
45
  shouldShowOwnUser = false,
44
46
  uacFilter,
45
- entries
47
+ entries,
48
+ relationMode
46
49
  }) => {
47
50
  const [data, setData] = (0, _react.useState)();
48
51
  const [friends, setFriends] = (0, _react.useState)();
@@ -104,7 +107,8 @@ const PersonFinderProvider = ({
104
107
  filter: [key],
105
108
  skipMap: {
106
109
  [key]: current.skip
107
- }
110
+ },
111
+ relationMode
108
112
  }).then(result => {
109
113
  const newData = result === null || result === void 0 ? void 0 : result[key];
110
114
  if (newData) {
@@ -113,7 +117,7 @@ const PersonFinderProvider = ({
113
117
  }).finally(() => {
114
118
  updateLoadingState(key, _personFinder.LoadingState.Success);
115
119
  });
116
- }, [updateLoadingState, data, search, appendData]);
120
+ }, [updateLoadingState, data, search, relationMode, appendData]);
117
121
  const addFriend = (0, _react.useCallback)(personId => {
118
122
  void (0, _post.postFriends)(personId).then(result => {
119
123
  if (result) {
@@ -180,7 +184,8 @@ const PersonFinderProvider = ({
180
184
  const result = await (0, _personFinder2.loadData)({
181
185
  searchString,
182
186
  filter,
183
- skipMap: {}
187
+ skipMap: {},
188
+ relationMode
184
189
  });
185
190
  if (requestTimestamp < latestHandledRequestRef.current) {
186
191
  return;
@@ -333,7 +338,9 @@ const PersonFinderProvider = ({
333
338
  }), [activeFilter, addFriend, data, excludedEntryIds, friends, loadMore, loadingState, removeFriend, search, shouldShowOwnUser, tags, uacFilter, updateActiveFilter, updateData, updateLoadingState, updateSearch]);
334
339
  return /*#__PURE__*/_react.default.createElement(PersonFinderContext.Provider, {
335
340
  value: providerValue
336
- }, children);
341
+ }, /*#__PURE__*/_react.default.createElement(_textstring.TextstringProvider, {
342
+ libraryName: _textStrings.PERSON_FINDER_TEXTSTRING_LIBRARY_NAME
343
+ }, children));
337
344
  };
338
345
  PersonFinderProvider.displayName = 'PersonFinderProvider';
339
346
  var _default = exports.default = PersonFinderProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"PersonFinderProvider.js","names":["_react","_interopRequireWildcard","require","_lodash","_interopRequireDefault","_personFinder","_get","_post","_delete","_personFinder2","_uac","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","THROTTLE_INTERVAL","PersonFinderContext","exports","createContext","data","undefined","updateData","friends","addFriend","removeFriend","activeFilter","updateActiveFilter","search","updateSearch","loadMore","loadingState","updateLoadingState","tags","setTags","displayName","usePersonFinder","useContext","PersonFinderProvider","children","friendsPriority","filterTypes","defaultEntries","excludedEntryIds","shouldShowOwnUser","uacFilter","entries","setData","useState","setFriends","uacUsers","setUacUsers","setActiveFilter","setSearch","map","id","name","text","setLoadingState","PersonFinderFilterTypes","PERSON","LoadingState","None","SITE","dataRef","useRef","useCallback","filter","key","newData","prevState","appendData","_prevState$key","_prevState$key2","oldEntries","state","prev","value","Pending","current","Error","loadData","searchString","skipMap","skip","then","result","finally","Success","personId","postFriends","firstName","lastName","verificationState","isVerified","commonSites","type","deleteFriends","wasSuccessful","useEffect","includes","getFriends","latestArgsRef","latestHandledRequestRef","throttledRequest","throttle","args","requestTimestamp","Date","now","forEach","keyString","Priority","HIGH","friendIds","Set","serverFriendEntries","entry","serverFriendIds","missingFriends","_f$firstName","_f$lastName","toLowerCase","otherEntries","length","leading","trailing","searchData","tmpData","uacEntries","filteredEntries","count","searchLocal","searchedUsers","entriesToSearch","_entry$firstName","_entry$lastName","Boolean","join","trim","push","active","UAC","cancel","getUsersByGroups","users","getUACGroups","uac","person","providerValue","useMemo","filterDataByKeys","createElement","Provider","_default"],"sources":["../../../src/components/PersonFinderProvider.tsx"],"sourcesContent":["import React, {\n createContext,\n Dispatch,\n FC,\n ReactNode,\n SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport throttle from 'lodash.throttle';\nimport {\n DefaultEntry,\n LoadingState,\n LoadingStateMap,\n PersonEntry,\n PersonFinderData,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n Priority,\n ThrottledFunction,\n UACEntry,\n UACFilter,\n} from '../types/personFinder';\nimport { getFriends } from '../api/friends/get';\nimport { postFriends } from '../api/friends/post';\nimport { deleteFriends } from '../api/friends/delete';\nimport { filterDataByKeys, loadData } from '../utils/personFinder';\nimport { Tag } from '@chayns-components/core/lib/types/types/tagInput';\nimport { getUACGroups, getUsersByGroups } from '../utils/uac';\n\nconst THROTTLE_INTERVAL = 500;\n\ninterface IPersonFinderContext {\n // Data\n data?: { [key: string]: PersonFinderData };\n updateData?: (key: PersonFinderFilterTypes, personFinderData: PersonFinderData) => void;\n\n // Tags\n tags?: Tag[];\n setTags?: Dispatch<SetStateAction<Tag[]>>;\n\n // Friends\n friends?: PersonEntry[];\n addFriend?: (personId: string) => void;\n removeFriend?: (personId: string) => void;\n\n // Filter\n activeFilter?: PersonFinderFilterTypes[];\n updateActiveFilter?: (filter: PersonFinderFilterTypes[]) => void;\n\n // Search\n search?: string;\n updateSearch?: (value: string) => void;\n\n // Loading\n loadMore?: (key: PersonFinderFilterTypes) => void;\n loadingState?: LoadingStateMap;\n updateLoadingState?: (key: PersonFinderFilterTypes, state: LoadingState) => void;\n}\n\nexport const PersonFinderContext = createContext<IPersonFinderContext>({\n data: undefined,\n updateData: undefined,\n friends: undefined,\n addFriend: undefined,\n removeFriend: undefined,\n activeFilter: undefined,\n updateActiveFilter: undefined,\n search: undefined,\n updateSearch: undefined,\n loadMore: undefined,\n loadingState: undefined,\n updateLoadingState: undefined,\n tags: undefined,\n setTags: undefined,\n});\n\nPersonFinderContext.displayName = 'PersonFinderContext';\n\nexport const usePersonFinder = () => useContext(PersonFinderContext);\n\ntype PersonFinderProviderProps = {\n children: ReactNode;\n friendsPriority: Priority;\n filterTypes: PersonFinderFilterTypes[];\n defaultEntries?: DefaultEntry[];\n excludedEntryIds?: PersonFinderEntry['id'][];\n shouldShowOwnUser?: boolean;\n uacFilter?: UACFilter[];\n entries?: PersonEntry[];\n};\n\nconst PersonFinderProvider: FC<PersonFinderProviderProps> = ({\n children,\n friendsPriority,\n filterTypes,\n defaultEntries,\n excludedEntryIds,\n shouldShowOwnUser = false,\n uacFilter,\n entries,\n}) => {\n const [data, setData] = useState<IPersonFinderContext['data']>();\n const [friends, setFriends] = useState<PersonEntry[]>();\n const [uacUsers, setUacUsers] = useState<PersonEntry[]>();\n const [activeFilter, setActiveFilter] = useState<IPersonFinderContext['activeFilter']>();\n const [search, setSearch] = useState('');\n const [tags, setTags] = useState<Tag[]>(\n defaultEntries?.map(({ id, name }) => ({ id, text: name })) ?? [],\n );\n const [loadingState, setLoadingState] = useState<LoadingStateMap>({\n [PersonFinderFilterTypes.PERSON]: LoadingState.None,\n [PersonFinderFilterTypes.SITE]: LoadingState.None,\n });\n\n const dataRef = useRef<IPersonFinderContext['data']>();\n\n const updateActiveFilter = useCallback((filter: IPersonFinderContext['activeFilter']) => {\n setActiveFilter(filter);\n }, []);\n\n const updateData = useCallback((key: PersonFinderFilterTypes, newData: PersonFinderData) => {\n setData((prevState) => ({ ...prevState, [key]: newData }));\n }, []);\n\n const appendData = useCallback((key: PersonFinderFilterTypes, newData: PersonFinderData) => {\n setData((prevState) => {\n const oldEntries = prevState && prevState[key]?.entries ? prevState[key]?.entries : [];\n\n return {\n ...prevState,\n [key]: {\n ...newData,\n entries: [...oldEntries, ...newData.entries],\n },\n };\n });\n }, []);\n\n const updateLoadingState = useCallback((key: PersonFinderFilterTypes, state: LoadingState) => {\n setLoadingState((prev) => ({\n ...prev,\n [key]: state,\n }));\n }, []);\n\n const updateSearch = useCallback((value: string) => {\n setSearch(value);\n }, []);\n\n const loadMore = useCallback(\n (key: PersonFinderFilterTypes) => {\n updateLoadingState(key, LoadingState.Pending);\n\n const current = data?.[key];\n\n if (!current) {\n updateLoadingState(key, LoadingState.Error);\n\n return;\n }\n\n void loadData({\n searchString: search ?? '',\n filter: [key],\n skipMap: { [key]: current.skip },\n })\n .then((result) => {\n const newData = result?.[key];\n\n if (newData) {\n appendData(key, newData);\n }\n })\n .finally(() => {\n updateLoadingState(key, LoadingState.Success);\n });\n },\n [updateLoadingState, data, search, appendData],\n );\n\n const addFriend = useCallback((personId: string) => {\n void postFriends(personId).then((result) => {\n if (result) {\n const { firstName, lastName, verificationState } = result;\n\n setFriends((prev) => [\n ...(prev ?? []),\n {\n id: personId,\n isVerified: verificationState === 1,\n commonSites: 0,\n firstName,\n lastName,\n type: PersonFinderFilterTypes.PERSON,\n },\n ]);\n }\n });\n }, []);\n\n const removeFriend = useCallback((personId: string) => {\n void deleteFriends(personId).then((wasSuccessful) => {\n if (wasSuccessful) {\n setFriends((prev) => prev?.filter(({ id }) => id !== personId));\n }\n });\n }, []);\n\n useEffect(() => {\n if (!filterTypes.includes(PersonFinderFilterTypes.PERSON)) {\n return;\n }\n\n void getFriends().then((result) => {\n if (result) {\n setFriends(\n result.map(({ personId, firstName, lastName, verificationState }) => ({\n lastName,\n firstName,\n id: personId,\n commonSites: 0,\n isVerified: verificationState === 1,\n type: PersonFinderFilterTypes.PERSON,\n })),\n );\n }\n });\n }, [filterTypes]);\n\n const latestArgsRef = useRef<{ search: string; filter: PersonFinderFilterTypes[] } | null>(\n null,\n );\n const latestHandledRequestRef = useRef<number>(0);\n\n const throttledRequest = useRef<ThrottledFunction<() => void>>(\n throttle(\n async () => {\n const args = latestArgsRef.current;\n\n if (!args) return;\n\n const { search: searchString, filter } = args;\n const requestTimestamp = Date.now();\n\n filter.forEach((key) => {\n updateLoadingState(key, LoadingState.Pending);\n });\n\n const result = await loadData({\n searchString,\n filter,\n skipMap: {},\n });\n\n if (requestTimestamp < latestHandledRequestRef.current) {\n return;\n }\n\n latestHandledRequestRef.current = requestTimestamp;\n\n if (!result) return;\n\n Object.entries(result).forEach(([keyString, value]) => {\n const key = keyString as PersonFinderFilterTypes;\n\n if (\n key === PersonFinderFilterTypes.PERSON &&\n friendsPriority === Priority.HIGH &&\n friends\n ) {\n const friendIds = new Set(friends.map((f) => f.id));\n const serverFriendEntries = value.entries.filter((entry) =>\n friendIds.has(entry.id as string),\n );\n const serverFriendIds = new Set(serverFriendEntries.map((f) => f.id));\n\n const missingFriends = friends\n .filter((f) => !serverFriendIds.has(f.id))\n .filter(\n (f) =>\n f.firstName\n ?.toLowerCase()\n .includes(searchString.toLowerCase()) ||\n f.lastName?.toLowerCase().includes(searchString.toLowerCase()),\n );\n\n const otherEntries = value.entries.filter(\n (entry) => !friendIds.has(entry.id as string),\n );\n\n updateData(key, {\n ...value,\n entries: [...serverFriendEntries, ...missingFriends, ...otherEntries],\n });\n } else {\n updateData(key, value);\n }\n\n updateLoadingState(\n key,\n value.entries.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n });\n },\n THROTTLE_INTERVAL,\n { leading: false, trailing: true },\n ),\n ).current;\n\n useEffect(() => {\n dataRef.current = data;\n }, [data]);\n\n const searchData = useCallback(\n ({ filter }: { filter: PersonFinderFilterTypes[] }) => {\n const tmpData = dataRef.current;\n\n filter.forEach((key) => {\n updateLoadingState(key, LoadingState.Pending);\n\n if (tmpData && tmpData[key]) {\n // Add all Types that are not searched by a request\n const uacEntries = tmpData[key].entries as UACEntry[];\n\n const filteredEntries = uacEntries.filter(({ name }) =>\n name.toLowerCase().includes(search.toLowerCase()),\n );\n\n updateData(key, {\n entries: filteredEntries,\n searchString: search,\n count: filteredEntries.length,\n skip: filteredEntries.length,\n });\n\n updateLoadingState(\n key,\n filteredEntries.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n }\n });\n },\n [search, updateData, updateLoadingState],\n );\n\n const searchLocal = useCallback(() => {\n if (search.length < 3) {\n return;\n }\n\n updateLoadingState(PersonFinderFilterTypes.PERSON, LoadingState.Pending);\n\n const searchedUsers: PersonEntry[] = [];\n\n const entriesToSearch = entries ?? uacUsers;\n\n entriesToSearch?.forEach((entry) => {\n if (\n entry.firstName?.toLowerCase().includes(search.toLowerCase()) ||\n entry.lastName?.toLowerCase().includes(search.toLowerCase()) ||\n [entry.firstName, entry.lastName]\n .filter(Boolean)\n .join(' ')\n .toLowerCase()\n .trim()\n .includes(search.toLowerCase().trim()) ||\n entry.id.toLowerCase().includes(search.toLowerCase())\n ) {\n searchedUsers.push(entry);\n }\n });\n\n updateData(PersonFinderFilterTypes.PERSON, {\n entries: searchedUsers,\n searchString: search,\n count: searchedUsers.length,\n skip: searchedUsers.length,\n });\n\n updateLoadingState(\n PersonFinderFilterTypes.PERSON,\n searchedUsers.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n }, [entries, search, uacUsers, updateData, updateLoadingState]);\n\n useEffect(() => {\n if (!search) return;\n\n const active = activeFilter ?? filterTypes;\n\n if (uacFilter || entries) {\n searchLocal();\n } else if (active?.includes(PersonFinderFilterTypes.UAC)) {\n searchData({ filter: [PersonFinderFilterTypes.UAC] });\n } else {\n latestArgsRef.current = { search, filter: active };\n\n throttledRequest();\n }\n }, [\n filterTypes,\n search,\n activeFilter,\n friends,\n friendsPriority,\n updateData,\n updateLoadingState,\n throttledRequest,\n searchData,\n uacFilter,\n searchLocal,\n entries,\n ]);\n\n useEffect(\n () => () => {\n throttledRequest.cancel();\n },\n [throttledRequest],\n );\n\n // load initial data\n useEffect(() => {\n if (entries) {\n return;\n }\n\n if (uacFilter) {\n void getUsersByGroups(uacFilter).then((users) => {\n setUacUsers(users);\n });\n\n return;\n }\n\n if (filterTypes.includes(PersonFinderFilterTypes.UAC) && search === '') {\n void getUACGroups().then((result) => {\n setData({\n uac: {\n entries: result,\n searchString: '',\n skip: result.length,\n count: result.length,\n },\n });\n });\n }\n\n if (\n friendsPriority === Priority.HIGH &&\n filterTypes.includes(PersonFinderFilterTypes.PERSON) &&\n friends &&\n search === ''\n ) {\n setData({\n person: {\n entries: friends,\n searchString: '',\n skip: friends.length,\n count: friends.length,\n },\n });\n }\n }, [entries, filterTypes, friends, friendsPriority, search, uacFilter]);\n\n const providerValue = useMemo<IPersonFinderContext>(\n () => ({\n data: filterDataByKeys(data, activeFilter, {\n excludedEntryIds,\n shouldShowOwnUser: uacFilter ? false : shouldShowOwnUser,\n }),\n updateData,\n activeFilter,\n updateActiveFilter,\n friends,\n addFriend,\n removeFriend,\n search,\n updateSearch,\n loadMore,\n loadingState,\n updateLoadingState,\n setTags,\n tags,\n }),\n [\n activeFilter,\n addFriend,\n data,\n excludedEntryIds,\n friends,\n loadMore,\n loadingState,\n removeFriend,\n search,\n shouldShowOwnUser,\n tags,\n uacFilter,\n updateActiveFilter,\n updateData,\n updateLoadingState,\n updateSearch,\n ],\n );\n\n return (\n <PersonFinderContext.Provider value={providerValue}>\n {children}\n </PersonFinderContext.Provider>\n );\n};\n\nPersonFinderProvider.displayName = 'PersonFinderProvider';\n\nexport default PersonFinderProvider;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PersonFinderProvider.js","names":["_react","_interopRequireWildcard","require","_lodash","_interopRequireDefault","_personFinder","_get","_post","_delete","_personFinder2","_uac","_textstring","_textStrings","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","THROTTLE_INTERVAL","PersonFinderContext","exports","createContext","data","undefined","updateData","friends","addFriend","removeFriend","activeFilter","updateActiveFilter","search","updateSearch","loadMore","loadingState","updateLoadingState","tags","setTags","displayName","usePersonFinder","useContext","PersonFinderProvider","children","friendsPriority","filterTypes","defaultEntries","excludedEntryIds","shouldShowOwnUser","uacFilter","entries","relationMode","setData","useState","setFriends","uacUsers","setUacUsers","setActiveFilter","setSearch","map","id","name","text","setLoadingState","PersonFinderFilterTypes","PERSON","LoadingState","None","SITE","dataRef","useRef","useCallback","filter","key","newData","prevState","appendData","_prevState$key","_prevState$key2","oldEntries","state","prev","value","Pending","current","Error","loadData","searchString","skipMap","skip","then","result","finally","Success","personId","postFriends","firstName","lastName","verificationState","isVerified","commonSites","type","deleteFriends","wasSuccessful","useEffect","includes","getFriends","latestArgsRef","latestHandledRequestRef","throttledRequest","throttle","args","requestTimestamp","Date","now","forEach","keyString","Priority","HIGH","friendIds","Set","serverFriendEntries","entry","serverFriendIds","missingFriends","_f$firstName","_f$lastName","toLowerCase","otherEntries","length","leading","trailing","searchData","tmpData","uacEntries","filteredEntries","count","searchLocal","searchedUsers","entriesToSearch","_entry$firstName","_entry$lastName","Boolean","join","trim","push","active","UAC","cancel","getUsersByGroups","users","getUACGroups","uac","person","providerValue","useMemo","filterDataByKeys","createElement","Provider","TextstringProvider","libraryName","PERSON_FINDER_TEXTSTRING_LIBRARY_NAME","_default"],"sources":["../../../src/components/PersonFinderProvider.tsx"],"sourcesContent":["import React, {\n createContext,\n Dispatch,\n FC,\n ReactNode,\n SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport throttle from 'lodash.throttle';\nimport {\n DefaultEntry,\n LoadingState,\n LoadingStateMap,\n PersonEntry,\n PersonFinderData,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n Priority,\n RelationMode,\n ThrottledFunction,\n UACEntry,\n UACFilter,\n} from '../types/personFinder';\nimport { getFriends } from '../api/friends/get';\nimport { postFriends } from '../api/friends/post';\nimport { deleteFriends } from '../api/friends/delete';\nimport { filterDataByKeys, loadData } from '../utils/personFinder';\nimport { Tag } from '@chayns-components/core/lib/types/types/tagInput';\nimport { getUACGroups, getUsersByGroups } from '../utils/uac';\nimport { TextstringProvider } from '@chayns-components/textstring';\nimport { PERSON_FINDER_TEXTSTRING_LIBRARY_NAME } from '../constants/textStrings';\n\nconst THROTTLE_INTERVAL = 500;\n\ninterface IPersonFinderContext {\n // Data\n data?: { [key: string]: PersonFinderData };\n updateData?: (key: PersonFinderFilterTypes, personFinderData: PersonFinderData) => void;\n\n // Tags\n tags?: Tag[];\n setTags?: Dispatch<SetStateAction<Tag[]>>;\n\n // Friends\n friends?: PersonEntry[];\n addFriend?: (personId: string) => void;\n removeFriend?: (personId: string) => void;\n\n // Filter\n activeFilter?: PersonFinderFilterTypes[];\n updateActiveFilter?: (filter: PersonFinderFilterTypes[]) => void;\n\n // Search\n search?: string;\n updateSearch?: (value: string) => void;\n\n // Loading\n loadMore?: (key: PersonFinderFilterTypes) => void;\n loadingState?: LoadingStateMap;\n updateLoadingState?: (key: PersonFinderFilterTypes, state: LoadingState) => void;\n}\n\nexport const PersonFinderContext = createContext<IPersonFinderContext>({\n data: undefined,\n updateData: undefined,\n friends: undefined,\n addFriend: undefined,\n removeFriend: undefined,\n activeFilter: undefined,\n updateActiveFilter: undefined,\n search: undefined,\n updateSearch: undefined,\n loadMore: undefined,\n loadingState: undefined,\n updateLoadingState: undefined,\n tags: undefined,\n setTags: undefined,\n});\n\nPersonFinderContext.displayName = 'PersonFinderContext';\n\nexport const usePersonFinder = () => useContext(PersonFinderContext);\n\ntype PersonFinderProviderProps = {\n children: ReactNode;\n friendsPriority: Priority;\n filterTypes: PersonFinderFilterTypes[];\n defaultEntries?: DefaultEntry[];\n excludedEntryIds?: PersonFinderEntry['id'][];\n shouldShowOwnUser?: boolean;\n uacFilter?: UACFilter[];\n entries?: PersonEntry[];\n relationMode?: RelationMode;\n};\n\nconst PersonFinderProvider: FC<PersonFinderProviderProps> = ({\n children,\n friendsPriority,\n filterTypes,\n defaultEntries,\n excludedEntryIds,\n shouldShowOwnUser = false,\n uacFilter,\n entries,\n relationMode,\n}) => {\n const [data, setData] = useState<IPersonFinderContext['data']>();\n const [friends, setFriends] = useState<PersonEntry[]>();\n const [uacUsers, setUacUsers] = useState<PersonEntry[]>();\n const [activeFilter, setActiveFilter] = useState<IPersonFinderContext['activeFilter']>();\n const [search, setSearch] = useState('');\n const [tags, setTags] = useState<Tag[]>(\n defaultEntries?.map(({ id, name }) => ({ id, text: name })) ?? [],\n );\n const [loadingState, setLoadingState] = useState<LoadingStateMap>({\n [PersonFinderFilterTypes.PERSON]: LoadingState.None,\n [PersonFinderFilterTypes.SITE]: LoadingState.None,\n });\n\n const dataRef = useRef<IPersonFinderContext['data']>();\n\n const updateActiveFilter = useCallback((filter: IPersonFinderContext['activeFilter']) => {\n setActiveFilter(filter);\n }, []);\n\n const updateData = useCallback((key: PersonFinderFilterTypes, newData: PersonFinderData) => {\n setData((prevState) => ({ ...prevState, [key]: newData }));\n }, []);\n\n const appendData = useCallback((key: PersonFinderFilterTypes, newData: PersonFinderData) => {\n setData((prevState) => {\n const oldEntries = prevState && prevState[key]?.entries ? prevState[key]?.entries : [];\n\n return {\n ...prevState,\n [key]: {\n ...newData,\n entries: [...oldEntries, ...newData.entries],\n },\n };\n });\n }, []);\n\n const updateLoadingState = useCallback((key: PersonFinderFilterTypes, state: LoadingState) => {\n setLoadingState((prev) => ({\n ...prev,\n [key]: state,\n }));\n }, []);\n\n const updateSearch = useCallback((value: string) => {\n setSearch(value);\n }, []);\n\n const loadMore = useCallback(\n (key: PersonFinderFilterTypes) => {\n updateLoadingState(key, LoadingState.Pending);\n\n const current = data?.[key];\n\n if (!current) {\n updateLoadingState(key, LoadingState.Error);\n\n return;\n }\n\n void loadData({\n searchString: search ?? '',\n filter: [key],\n skipMap: { [key]: current.skip },\n relationMode,\n })\n .then((result) => {\n const newData = result?.[key];\n\n if (newData) {\n appendData(key, newData);\n }\n })\n .finally(() => {\n updateLoadingState(key, LoadingState.Success);\n });\n },\n [updateLoadingState, data, search, relationMode, appendData],\n );\n\n const addFriend = useCallback((personId: string) => {\n void postFriends(personId).then((result) => {\n if (result) {\n const { firstName, lastName, verificationState } = result;\n\n setFriends((prev) => [\n ...(prev ?? []),\n {\n id: personId,\n isVerified: verificationState === 1,\n commonSites: 0,\n firstName,\n lastName,\n type: PersonFinderFilterTypes.PERSON,\n },\n ]);\n }\n });\n }, []);\n\n const removeFriend = useCallback((personId: string) => {\n void deleteFriends(personId).then((wasSuccessful) => {\n if (wasSuccessful) {\n setFriends((prev) => prev?.filter(({ id }) => id !== personId));\n }\n });\n }, []);\n\n useEffect(() => {\n if (!filterTypes.includes(PersonFinderFilterTypes.PERSON)) {\n return;\n }\n\n void getFriends().then((result) => {\n if (result) {\n setFriends(\n result.map(({ personId, firstName, lastName, verificationState }) => ({\n lastName,\n firstName,\n id: personId,\n commonSites: 0,\n isVerified: verificationState === 1,\n type: PersonFinderFilterTypes.PERSON,\n })),\n );\n }\n });\n }, [filterTypes]);\n\n const latestArgsRef = useRef<{ search: string; filter: PersonFinderFilterTypes[] } | null>(\n null,\n );\n const latestHandledRequestRef = useRef<number>(0);\n\n const throttledRequest = useRef<ThrottledFunction<() => void>>(\n throttle(\n async () => {\n const args = latestArgsRef.current;\n\n if (!args) return;\n\n const { search: searchString, filter } = args;\n const requestTimestamp = Date.now();\n\n filter.forEach((key) => {\n updateLoadingState(key, LoadingState.Pending);\n });\n\n const result = await loadData({\n searchString,\n filter,\n skipMap: {},\n relationMode,\n });\n\n if (requestTimestamp < latestHandledRequestRef.current) {\n return;\n }\n\n latestHandledRequestRef.current = requestTimestamp;\n\n if (!result) return;\n\n Object.entries(result).forEach(([keyString, value]) => {\n const key = keyString as PersonFinderFilterTypes;\n\n if (\n key === PersonFinderFilterTypes.PERSON &&\n friendsPriority === Priority.HIGH &&\n friends\n ) {\n const friendIds = new Set(friends.map((f) => f.id));\n const serverFriendEntries = value.entries.filter((entry) =>\n friendIds.has(entry.id as string),\n );\n const serverFriendIds = new Set(serverFriendEntries.map((f) => f.id));\n\n const missingFriends = friends\n .filter((f) => !serverFriendIds.has(f.id))\n .filter(\n (f) =>\n f.firstName\n ?.toLowerCase()\n .includes(searchString.toLowerCase()) ||\n f.lastName?.toLowerCase().includes(searchString.toLowerCase()),\n );\n\n const otherEntries = value.entries.filter(\n (entry) => !friendIds.has(entry.id as string),\n );\n\n updateData(key, {\n ...value,\n entries: [...serverFriendEntries, ...missingFriends, ...otherEntries],\n });\n } else {\n updateData(key, value);\n }\n\n updateLoadingState(\n key,\n value.entries.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n });\n },\n THROTTLE_INTERVAL,\n { leading: false, trailing: true },\n ),\n ).current;\n\n useEffect(() => {\n dataRef.current = data;\n }, [data]);\n\n const searchData = useCallback(\n ({ filter }: { filter: PersonFinderFilterTypes[] }) => {\n const tmpData = dataRef.current;\n\n filter.forEach((key) => {\n updateLoadingState(key, LoadingState.Pending);\n\n if (tmpData && tmpData[key]) {\n // Add all Types that are not searched by a request\n const uacEntries = tmpData[key].entries as UACEntry[];\n\n const filteredEntries = uacEntries.filter(({ name }) =>\n name.toLowerCase().includes(search.toLowerCase()),\n );\n\n updateData(key, {\n entries: filteredEntries,\n searchString: search,\n count: filteredEntries.length,\n skip: filteredEntries.length,\n });\n\n updateLoadingState(\n key,\n filteredEntries.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n }\n });\n },\n [search, updateData, updateLoadingState],\n );\n\n const searchLocal = useCallback(() => {\n if (search.length < 3) {\n return;\n }\n\n updateLoadingState(PersonFinderFilterTypes.PERSON, LoadingState.Pending);\n\n const searchedUsers: PersonEntry[] = [];\n\n const entriesToSearch = entries ?? uacUsers;\n\n entriesToSearch?.forEach((entry) => {\n if (\n entry.firstName?.toLowerCase().includes(search.toLowerCase()) ||\n entry.lastName?.toLowerCase().includes(search.toLowerCase()) ||\n [entry.firstName, entry.lastName]\n .filter(Boolean)\n .join(' ')\n .toLowerCase()\n .trim()\n .includes(search.toLowerCase().trim()) ||\n entry.id.toLowerCase().includes(search.toLowerCase())\n ) {\n searchedUsers.push(entry);\n }\n });\n\n updateData(PersonFinderFilterTypes.PERSON, {\n entries: searchedUsers,\n searchString: search,\n count: searchedUsers.length,\n skip: searchedUsers.length,\n });\n\n updateLoadingState(\n PersonFinderFilterTypes.PERSON,\n searchedUsers.length === 0 ? LoadingState.Error : LoadingState.Success,\n );\n }, [entries, search, uacUsers, updateData, updateLoadingState]);\n\n useEffect(() => {\n if (!search) return;\n\n const active = activeFilter ?? filterTypes;\n\n if (uacFilter || entries) {\n searchLocal();\n } else if (active?.includes(PersonFinderFilterTypes.UAC)) {\n searchData({ filter: [PersonFinderFilterTypes.UAC] });\n } else {\n latestArgsRef.current = { search, filter: active };\n\n throttledRequest();\n }\n }, [\n filterTypes,\n search,\n activeFilter,\n friends,\n friendsPriority,\n updateData,\n updateLoadingState,\n throttledRequest,\n searchData,\n uacFilter,\n searchLocal,\n entries,\n ]);\n\n useEffect(\n () => () => {\n throttledRequest.cancel();\n },\n [throttledRequest],\n );\n\n // load initial data\n useEffect(() => {\n if (entries) {\n return;\n }\n\n if (uacFilter) {\n void getUsersByGroups(uacFilter).then((users) => {\n setUacUsers(users);\n });\n\n return;\n }\n\n if (filterTypes.includes(PersonFinderFilterTypes.UAC) && search === '') {\n void getUACGroups().then((result) => {\n setData({\n uac: {\n entries: result,\n searchString: '',\n skip: result.length,\n count: result.length,\n },\n });\n });\n }\n\n if (\n friendsPriority === Priority.HIGH &&\n filterTypes.includes(PersonFinderFilterTypes.PERSON) &&\n friends &&\n search === ''\n ) {\n setData({\n person: {\n entries: friends,\n searchString: '',\n skip: friends.length,\n count: friends.length,\n },\n });\n }\n }, [entries, filterTypes, friends, friendsPriority, search, uacFilter]);\n\n const providerValue = useMemo<IPersonFinderContext>(\n () => ({\n data: filterDataByKeys(data, activeFilter, {\n excludedEntryIds,\n shouldShowOwnUser: uacFilter ? false : shouldShowOwnUser,\n }),\n updateData,\n activeFilter,\n updateActiveFilter,\n friends,\n addFriend,\n removeFriend,\n search,\n updateSearch,\n loadMore,\n loadingState,\n updateLoadingState,\n setTags,\n tags,\n }),\n [\n activeFilter,\n addFriend,\n data,\n excludedEntryIds,\n friends,\n loadMore,\n loadingState,\n removeFriend,\n search,\n shouldShowOwnUser,\n tags,\n uacFilter,\n updateActiveFilter,\n updateData,\n updateLoadingState,\n updateSearch,\n ],\n );\n\n return (\n <PersonFinderContext.Provider value={providerValue}>\n <TextstringProvider libraryName={PERSON_FINDER_TEXTSTRING_LIBRARY_NAME}>\n {children}\n </TextstringProvider>\n </PersonFinderContext.Provider>\n );\n};\n\nPersonFinderProvider.displayName = 'PersonFinderProvider';\n\nexport default PersonFinderProvider;\n"],"mappings":"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","ignoreList":[]}
@@ -32,7 +32,8 @@ const PersonFinder = /*#__PURE__*/(0, _react.forwardRef)(({
32
32
  shouldHideResultsOnAdd = !shouldAllowMultiple || false,
33
33
  shouldShowOwnUser = false,
34
34
  shouldDisableRemove = false,
35
- shouldRenderInline = false
35
+ shouldRenderInline = false,
36
+ relationMode = _personFinder.RelationMode.PERSON
36
37
  }, ref) => {
37
38
  const personFinderRef = (0, _react.useRef)(null);
38
39
  const innerRef = (0, _react.useRef)(null);
@@ -49,7 +50,8 @@ const PersonFinder = /*#__PURE__*/(0, _react.forwardRef)(({
49
50
  excludedEntryIds: excludedEntryIds,
50
51
  shouldShowOwnUser: shouldShowOwnUser,
51
52
  uacFilter: uacFilter,
52
- entries: entries
53
+ entries: entries,
54
+ relationMode: relationMode
53
55
  }, /*#__PURE__*/_react.default.createElement(_core.AreaProvider, {
54
56
  shouldChangeColor: false,
55
57
  shouldDisableListItemPadding: true
@@ -1 +1 @@
1
- {"version":3,"file":"PersonFinder.js","names":["_react","_interopRequireWildcard","require","_personFinder","_PersonFinderProvider","_interopRequireDefault","_PersonFinderWrapper","_core","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_FILTER_TYPES","PersonFinderFilterTypes","PERSON","SITE","PersonFinder","forwardRef","container","dropdownDirection","defaultEntries","excludedEntryIds","uacFilter","entries","filterTypes","friendsPriority","Priority","HIGH","leftElement","maxEntries","onAdd","onDropdownHide","onDropdownShow","onRemove","placeholder","shouldAllowMultiple","shouldHideResultsOnAdd","shouldShowOwnUser","shouldDisableRemove","shouldRenderInline","ref","personFinderRef","useRef","innerRef","useImperativeHandle","clear","_innerRef$current","current","createElement","AreaProvider","shouldChangeColor","shouldDisableListItemPadding","className","displayName","_default","exports"],"sources":["../../../../src/components/person-finder/PersonFinder.tsx"],"sourcesContent":["import React, { forwardRef, useImperativeHandle, useRef } from 'react';\nimport {\n DefaultEntry,\n PersonEntry,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n Priority,\n UACFilter,\n} from '../../types/personFinder';\nimport PersonFinderProvider from '../PersonFinderProvider';\nimport PersonFinderWrapper, {\n PersonFinderWrapperProps,\n PersonFinderRef,\n} from './person-finder-wrapper/PersonFinderWrapper';\nimport { AreaProvider } from '@chayns-components/core';\n\nconst DEFAULT_FILTER_TYPES = [PersonFinderFilterTypes.PERSON, PersonFinderFilterTypes.SITE];\n\nexport type PersonFinderProps = PersonFinderWrapperProps & {\n /**\n * Sites and persons that are selected by default.\n */\n defaultEntries?: DefaultEntry[];\n /**\n * Entry ids to exclude from the results\n */\n excludedEntryIds?: PersonFinderEntry['id'][];\n /**\n * Whether the own user should be shown in the results. By default, it is not shown.\n */\n shouldShowOwnUser?: boolean;\n /**\n * Optional filter to search member of uac group. Only works with groups of the current Site and if the user is manager.\n */\n uacFilter?: UACFilter[];\n /**\n * A list of entries that should be searched.\n */\n entries?: PersonEntry[];\n};\n\nconst PersonFinder = forwardRef<PersonFinderRef, PersonFinderProps>(\n (\n {\n container,\n dropdownDirection,\n defaultEntries,\n excludedEntryIds,\n uacFilter,\n entries,\n filterTypes = uacFilter || entries\n ? [PersonFinderFilterTypes.PERSON]\n : DEFAULT_FILTER_TYPES,\n friendsPriority = Priority.HIGH,\n leftElement,\n maxEntries,\n onAdd,\n onDropdownHide,\n onDropdownShow,\n onRemove,\n placeholder = 'Person oder Site finden',\n shouldAllowMultiple = true,\n shouldHideResultsOnAdd = !shouldAllowMultiple || false,\n shouldShowOwnUser = false,\n shouldDisableRemove = false,\n shouldRenderInline = false,\n },\n ref,\n ) => {\n const personFinderRef = useRef<HTMLDivElement>(null);\n const innerRef = useRef<PersonFinderRef>(null);\n\n useImperativeHandle(ref, () => ({\n clear: () => innerRef.current?.clear(),\n }));\n\n return (\n <PersonFinderProvider\n friendsPriority={friendsPriority}\n defaultEntries={defaultEntries}\n filterTypes={filterTypes}\n excludedEntryIds={excludedEntryIds}\n shouldShowOwnUser={shouldShowOwnUser}\n uacFilter={uacFilter}\n entries={entries}\n >\n <AreaProvider shouldChangeColor={false} shouldDisableListItemPadding>\n <div className=\"beta-chayns-person-finder\" ref={personFinderRef}>\n <PersonFinderWrapper\n ref={innerRef}\n container={container}\n dropdownDirection={dropdownDirection}\n filterTypes={filterTypes}\n maxEntries={maxEntries}\n onAdd={onAdd}\n shouldDisableRemove={shouldDisableRemove}\n onDropdownHide={onDropdownHide}\n onDropdownShow={onDropdownShow}\n leftElement={leftElement}\n onRemove={onRemove}\n placeholder={placeholder}\n shouldAllowMultiple={shouldAllowMultiple}\n shouldHideResultsOnAdd={shouldHideResultsOnAdd}\n shouldRenderInline={shouldRenderInline}\n />\n </div>\n </AreaProvider>\n </PersonFinderProvider>\n );\n },\n);\n\nPersonFinder.displayName = 'PersonFinder';\n\nexport default PersonFinder;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PersonFinder.js","names":["_react","_interopRequireWildcard","require","_personFinder","_PersonFinderProvider","_interopRequireDefault","_PersonFinderWrapper","_core","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_FILTER_TYPES","PersonFinderFilterTypes","PERSON","SITE","PersonFinder","forwardRef","container","dropdownDirection","defaultEntries","excludedEntryIds","uacFilter","entries","filterTypes","friendsPriority","Priority","HIGH","leftElement","maxEntries","onAdd","onDropdownHide","onDropdownShow","onRemove","placeholder","shouldAllowMultiple","shouldHideResultsOnAdd","shouldShowOwnUser","shouldDisableRemove","shouldRenderInline","relationMode","RelationMode","ref","personFinderRef","useRef","innerRef","useImperativeHandle","clear","_innerRef$current","current","createElement","AreaProvider","shouldChangeColor","shouldDisableListItemPadding","className","displayName","_default","exports"],"sources":["../../../../src/components/person-finder/PersonFinder.tsx"],"sourcesContent":["import React, { forwardRef, useImperativeHandle, useRef } from 'react';\nimport {\n DefaultEntry,\n PersonEntry,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n Priority,\n RelationMode,\n UACFilter,\n} from '../../types/personFinder';\nimport PersonFinderProvider from '../PersonFinderProvider';\nimport PersonFinderWrapper, {\n PersonFinderWrapperProps,\n PersonFinderRef,\n} from './person-finder-wrapper/PersonFinderWrapper';\nimport { AreaProvider } from '@chayns-components/core';\n\nconst DEFAULT_FILTER_TYPES = [PersonFinderFilterTypes.PERSON, PersonFinderFilterTypes.SITE];\n\nexport type PersonFinderProps = PersonFinderWrapperProps & {\n /**\n * Sites and persons that are selected by default.\n */\n defaultEntries?: DefaultEntry[];\n /**\n * Entry ids to exclude from the results\n */\n excludedEntryIds?: PersonFinderEntry['id'][];\n /**\n * Whether the own user should be shown in the results. By default, it is not shown.\n */\n shouldShowOwnUser?: boolean;\n /**\n * Optional filter to search member of uac group. Only works with groups of the current Site and if the user is manager.\n */\n uacFilter?: UACFilter[];\n /**\n * A list of entries that should be searched.\n */\n entries?: PersonEntry[];\n /**\n * Determines whether persons are searched and sorted from the user's perspective or from a site's perspective.\n */\n relationMode?: RelationMode;\n};\n\nconst PersonFinder = forwardRef<PersonFinderRef, PersonFinderProps>(\n (\n {\n container,\n dropdownDirection,\n defaultEntries,\n excludedEntryIds,\n uacFilter,\n entries,\n filterTypes = uacFilter || entries\n ? [PersonFinderFilterTypes.PERSON]\n : DEFAULT_FILTER_TYPES,\n friendsPriority = Priority.HIGH,\n leftElement,\n maxEntries,\n onAdd,\n onDropdownHide,\n onDropdownShow,\n onRemove,\n placeholder = 'Person oder Site finden',\n shouldAllowMultiple = true,\n shouldHideResultsOnAdd = !shouldAllowMultiple || false,\n shouldShowOwnUser = false,\n shouldDisableRemove = false,\n shouldRenderInline = false,\n relationMode = RelationMode.PERSON,\n },\n ref,\n ) => {\n const personFinderRef = useRef<HTMLDivElement>(null);\n const innerRef = useRef<PersonFinderRef>(null);\n\n useImperativeHandle(ref, () => ({\n clear: () => innerRef.current?.clear(),\n }));\n\n return (\n <PersonFinderProvider\n friendsPriority={friendsPriority}\n defaultEntries={defaultEntries}\n filterTypes={filterTypes}\n excludedEntryIds={excludedEntryIds}\n shouldShowOwnUser={shouldShowOwnUser}\n uacFilter={uacFilter}\n entries={entries}\n relationMode={relationMode}\n >\n <AreaProvider shouldChangeColor={false} shouldDisableListItemPadding>\n <div className=\"beta-chayns-person-finder\" ref={personFinderRef}>\n <PersonFinderWrapper\n ref={innerRef}\n container={container}\n dropdownDirection={dropdownDirection}\n filterTypes={filterTypes}\n maxEntries={maxEntries}\n onAdd={onAdd}\n shouldDisableRemove={shouldDisableRemove}\n onDropdownHide={onDropdownHide}\n onDropdownShow={onDropdownShow}\n leftElement={leftElement}\n onRemove={onRemove}\n placeholder={placeholder}\n shouldAllowMultiple={shouldAllowMultiple}\n shouldHideResultsOnAdd={shouldHideResultsOnAdd}\n shouldRenderInline={shouldRenderInline}\n />\n </div>\n </AreaProvider>\n </PersonFinderProvider>\n );\n },\n);\n\nPersonFinder.displayName = 'PersonFinder';\n\nexport default PersonFinder;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"PersonFinderWrapper.js","names":["_core","require","_chaynsApi","_react","_interopRequireWildcard","_uuid","_personFinder","_PersonFinderWrapper","_PersonFinderBody","_interopRequireDefault","_PersonFinderProvider","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","PersonFinderWrapper","forwardRef","container","dropdownDirection","filterTypes","friendsPriority","leftElement","leftElementProp","maxEntries","Infinity","onAdd","onDropdownHide","onDropdownShow","shouldDisableRemove","onRemove","placeholder","shouldAllowMultiple","shouldHideResultsOnAdd","shouldRenderInline","ref","data","updateSearch","setTags","tags","search","usePersonFinder","isFocused","setIsFocused","useState","shouldShowBody","setShouldShowBody","boxRef","useRef","contentRef","keyRef","uuidV4","tagInputRef","isTouch","useDevice","createElement","StyledPersonFinderLeftElement","Icon","icons","handleTagInputBlur","useCallback","handleTagInputFocus","handleRemove","id","prevState","filter","entry","handleClose","handleOpen","handleClear","_tagInputRef$current","current","resetValue","handleDropdownOutsideClick","_tagInputRef$current2","blur","handleAdd","selectedEntry","values","flat","map","entries","find","toString","name","firstName","lastName","tag","text","_tagInputRef$current3","some","length","handleChange","event","target","value","useImperativeHandle","clear","useEffect","showBody","useMemo","extraMobileCheck","includes","PersonFinderFilterTypes","SITE","PERSON","Priority","HIGH","content","body","DropdownBodyWrapper","anchorElement","direction","onClose","onOutsideClick","shouldShowDropdown","StyledPersonFinder","onFocus","key","TagInput","onBlur","onChange","shouldPreventEnter","displayName","_default","exports"],"sources":["../../../../../src/components/person-finder/person-finder-wrapper/PersonFinderWrapper.tsx"],"sourcesContent":["import {\n DropdownBodyWrapper,\n DropdownDirection,\n Icon,\n type Tag,\n TagInput,\n type TagInputRef,\n} from '@chayns-components/core';\nimport { useDevice } from 'chayns-api';\nimport React, {\n type ChangeEvent,\n forwardRef,\n type ReactElement,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport {\n PersonEntry,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n Priority,\n SiteEntry,\n} from '../../../types/personFinder';\nimport { StyledPersonFinder, StyledPersonFinderLeftElement } from './PersonFinderWrapper.styles';\nimport PersonFinderBody from './person-finder-body/PersonFinderBody';\nimport { usePersonFinder } from '../../PersonFinderProvider';\n\nexport type PersonFinderRef = {\n clear: () => void;\n};\n\nexport type PersonFinderWrapperProps = {\n /**\n * The element where the content of the `PersonFinder` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * The direction in which the dropdown should be displayed. By default, it is displayed below the input.\n */\n dropdownDirection?: DropdownDirection;\n /**\n * The filter options of the component.\n */\n filterTypes?: PersonFinderFilterTypes[];\n /**\n * Determines the priority level for displaying friends in search results.\n */\n friendsPriority?: Priority;\n /**\n * An element that should be displayed on the left side of the input.\n */\n leftElement?: ReactElement;\n /**\n * The maximum number of entries that can be selected.\n */\n maxEntries?: number;\n /**\n * Function to be executed if a person or site is added.\n */\n onAdd?: (entry: PersonFinderEntry) => void;\n /**\n * Function to be executed if the dropdown is hidden.\n */\n onDropdownHide?: () => void;\n /**\n * Function to be executed if the dropdown is shown.\n */\n onDropdownShow?: () => void;\n /**\n * Function to be executed if a person or site is removed.\n */\n onRemove?: (id: PersonFinderEntry['id']) => void;\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Whether multiple persons and sites should be selected.\n */\n shouldAllowMultiple?: boolean;\n /**\n * Whether the dropdown should be hidden after adding an entry. By default, it is not hidden.\n */\n shouldHideResultsOnAdd?: boolean;\n /**\n * Whether the `PersonFinder` should be rendered inline without a dropdown.\n * @description\n * If set to `true`, the `PersonFinder` will display the results below the input field, without\n * using a dropdown. This is useful for scenarios where the `PersonFinder` is part of a larger\n * form and should always be visible.\n * @default false\n * @example\n * <PersonFinder shouldRenderInline />\n * @optional\n */\n shouldRenderInline?: boolean;\n /**\n * Whether the remove action should be disabled.\n */\n shouldDisableRemove?: boolean;\n};\n\nconst PersonFinderWrapper = forwardRef<PersonFinderRef, PersonFinderWrapperProps>(\n (\n {\n container,\n dropdownDirection,\n filterTypes,\n friendsPriority,\n leftElement: leftElementProp,\n maxEntries = Infinity,\n onAdd,\n onDropdownHide,\n onDropdownShow,\n shouldDisableRemove,\n onRemove,\n placeholder,\n shouldAllowMultiple,\n shouldHideResultsOnAdd,\n shouldRenderInline,\n },\n ref,\n ) => {\n const { data, updateSearch, setTags, tags, search } = usePersonFinder();\n\n const [isFocused, setIsFocused] = useState(false);\n const [shouldShowBody, setShouldShowBody] = useState(false);\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const keyRef = useRef(`person-finder-${uuidV4()}`);\n const tagInputRef = useRef<TagInputRef>(null);\n\n const { isTouch } = useDevice();\n\n const leftElement = leftElementProp ?? (\n <StyledPersonFinderLeftElement>\n <Icon icons={['fa fa-search']} />\n </StyledPersonFinderLeftElement>\n );\n\n const handleTagInputBlur = useCallback(() => {\n setIsFocused(false);\n }, []);\n\n const handleTagInputFocus = useCallback(() => {\n setIsFocused(true);\n }, []);\n\n const handleRemove = useCallback(\n (id: string) => {\n if (typeof setTags !== 'function' || shouldDisableRemove) {\n return;\n }\n\n setTags((prevState) => prevState.filter((entry) => entry.id !== id));\n\n if (typeof onRemove === 'function') {\n onRemove(id);\n }\n },\n [onRemove, setTags, shouldDisableRemove],\n );\n\n const handleClose = useCallback(() => {\n setShouldShowBody(false);\n }, []);\n\n const handleOpen = useCallback(() => {\n setShouldShowBody(true);\n }, []);\n\n const handleClear = useCallback(() => {\n if (typeof setTags !== 'function' || shouldDisableRemove) {\n return;\n }\n\n tagInputRef.current?.resetValue();\n\n setTags([]);\n }, [setTags, shouldDisableRemove]);\n\n const handleDropdownOutsideClick = useCallback(() => {\n tagInputRef.current?.blur();\n\n return isFocused && isTouch;\n }, [isFocused, isTouch]);\n\n const handleAdd = useCallback(\n (id: string) => {\n if (typeof setTags !== 'function') {\n return;\n }\n\n const selectedEntry = Object.values(data ?? {})\n .flat()\n .map(({ entries }) => entries)\n .flat()\n .find(\n (entry) =>\n (typeof entry.id === 'string' ? entry.id : entry.id.toString()) === id,\n );\n\n if (!selectedEntry) {\n return;\n }\n\n const { name, firstName, lastName } = selectedEntry as PersonEntry & SiteEntry;\n\n const tag: Tag = {\n id,\n text: name ?? `${(firstName as string) ?? ''} ${(lastName as string) ?? ''}`,\n };\n\n setTags((prevState) => {\n if (prevState.some((t) => t.id === id) || prevState.length >= maxEntries) {\n return prevState;\n }\n\n tagInputRef.current?.resetValue();\n\n if (typeof onAdd === 'function') {\n onAdd(selectedEntry);\n }\n\n if (shouldHideResultsOnAdd) {\n setShouldShowBody(false);\n }\n\n return [...prevState, tag];\n });\n },\n [data, maxEntries, onAdd, setTags, shouldHideResultsOnAdd],\n );\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (typeof updateSearch === 'function') {\n updateSearch(event.target.value);\n }\n },\n [updateSearch],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => handleClear(),\n }),\n [handleClear],\n );\n\n useEffect(() => {\n if (shouldShowBody) {\n if (typeof onDropdownShow === 'function') {\n onDropdownShow();\n }\n } else if (typeof onDropdownHide === 'function') {\n onDropdownHide();\n }\n }, [onDropdownHide, onDropdownShow, shouldShowBody]);\n\n const showBody = useMemo(() => {\n const extraMobileCheck = isTouch ? isFocused : true;\n\n if (\n filterTypes?.length === 1 &&\n (filterTypes.includes(PersonFinderFilterTypes.SITE) ||\n (filterTypes.includes(PersonFinderFilterTypes.PERSON) &&\n friendsPriority !== Priority.HIGH))\n ) {\n return shouldShowBody && extraMobileCheck && !!search && search?.length > 2;\n }\n\n return shouldShowBody && extraMobileCheck;\n }, [filterTypes, friendsPriority, isFocused, isTouch, search, shouldShowBody]);\n\n const content = useMemo(() => {\n const body = (\n <PersonFinderBody\n filterTypes={filterTypes}\n onAdd={handleAdd}\n onRemove={handleRemove}\n ref={contentRef}\n shouldRenderInline={shouldRenderInline}\n />\n );\n\n if (shouldRenderInline) {\n return body;\n }\n\n if (boxRef.current) {\n return (\n <DropdownBodyWrapper\n anchorElement={boxRef.current}\n container={container}\n direction={dropdownDirection}\n onClose={handleClose}\n onOutsideClick={handleDropdownOutsideClick}\n shouldShowDropdown={showBody}\n >\n {body}\n </DropdownBodyWrapper>\n );\n }\n\n return null;\n }, [\n container,\n dropdownDirection,\n filterTypes,\n handleAdd,\n handleClose,\n handleDropdownOutsideClick,\n handleRemove,\n shouldRenderInline,\n showBody,\n ]);\n\n return (\n <StyledPersonFinder ref={boxRef} onFocus={handleOpen} key={keyRef.current}>\n <TagInput\n leftElement={leftElement}\n onBlur={handleTagInputBlur}\n onChange={handleChange}\n onFocus={handleTagInputFocus}\n onRemove={handleRemove}\n placeholder={placeholder}\n ref={tagInputRef}\n shouldAllowMultiple={shouldAllowMultiple}\n shouldPreventEnter\n tags={tags}\n />\n {content}\n </StyledPersonFinder>\n );\n },\n);\n\nPersonFinderWrapper.displayName = 'PersonFinderWrapper';\n\nexport default PersonFinderWrapper;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PersonFinderWrapper.js","names":["_core","require","_chaynsApi","_react","_interopRequireWildcard","_uuid","_personFinder","_PersonFinderWrapper","_PersonFinderBody","_interopRequireDefault","_PersonFinderProvider","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","PersonFinderWrapper","forwardRef","container","dropdownDirection","filterTypes","friendsPriority","leftElement","leftElementProp","maxEntries","Infinity","onAdd","onDropdownHide","onDropdownShow","shouldDisableRemove","onRemove","placeholder","shouldAllowMultiple","shouldHideResultsOnAdd","shouldRenderInline","ref","data","updateSearch","setTags","tags","search","usePersonFinder","isFocused","setIsFocused","useState","shouldShowBody","setShouldShowBody","boxRef","useRef","contentRef","keyRef","uuidV4","tagInputRef","isTouch","useDevice","createElement","StyledPersonFinderLeftElement","Icon","icons","handleTagInputBlur","useCallback","handleTagInputFocus","handleRemove","id","prevState","filter","entry","handleClose","handleOpen","handleClear","_tagInputRef$current","current","resetValue","handleDropdownOutsideClick","_tagInputRef$current2","blur","handleAdd","selectedEntry","values","flat","map","entries","find","toString","name","firstName","lastName","tag","text","_tagInputRef$current3","some","length","handleChange","event","target","value","useImperativeHandle","clear","useEffect","showBody","useMemo","extraMobileCheck","includes","PersonFinderFilterTypes","SITE","PERSON","Priority","HIGH","content","body","DropdownBodyWrapper","anchorElement","direction","onClose","onOutsideClick","shouldShowDropdown","StyledPersonFinder","onFocus","key","TagInput","onBlur","onChange","shouldPreventEnter","displayName","_default","exports"],"sources":["../../../../../src/components/person-finder/person-finder-wrapper/PersonFinderWrapper.tsx"],"sourcesContent":["import {\n DropdownBodyWrapper,\n DropdownDirection,\n Icon,\n type Tag,\n TagInput,\n type TagInputRef,\n} from '@chayns-components/core';\nimport { useDevice } from 'chayns-api';\nimport React, {\n type ChangeEvent,\n forwardRef,\n type ReactElement,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport {\n PersonEntry,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n Priority,\n RelationMode,\n SiteEntry,\n} from '../../../types/personFinder';\nimport { StyledPersonFinder, StyledPersonFinderLeftElement } from './PersonFinderWrapper.styles';\nimport PersonFinderBody from './person-finder-body/PersonFinderBody';\nimport { usePersonFinder } from '../../PersonFinderProvider';\n\nexport type PersonFinderRef = {\n clear: () => void;\n};\n\nexport type PersonFinderWrapperProps = {\n /**\n * The element where the content of the `PersonFinder` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * The direction in which the dropdown should be displayed. By default, it is displayed below the input.\n */\n dropdownDirection?: DropdownDirection;\n /**\n * The filter options of the component.\n */\n filterTypes?: PersonFinderFilterTypes[];\n /**\n * Determines the priority level for displaying friends in search results.\n */\n friendsPriority?: Priority;\n /**\n * An element that should be displayed on the left side of the input.\n */\n leftElement?: ReactElement;\n /**\n * The maximum number of entries that can be selected.\n */\n maxEntries?: number;\n /**\n * Function to be executed if a person or site is added.\n */\n onAdd?: (entry: PersonFinderEntry) => void;\n /**\n * Function to be executed if the dropdown is hidden.\n */\n onDropdownHide?: () => void;\n /**\n * Function to be executed if the dropdown is shown.\n */\n onDropdownShow?: () => void;\n /**\n * Function to be executed if a person or site is removed.\n */\n onRemove?: (id: PersonFinderEntry['id']) => void;\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Whether multiple persons and sites should be selected.\n */\n shouldAllowMultiple?: boolean;\n /**\n * Whether the dropdown should be hidden after adding an entry. By default, it is not hidden.\n */\n shouldHideResultsOnAdd?: boolean;\n /**\n * Whether the `PersonFinder` should be rendered inline without a dropdown.\n * @description\n * If set to `true`, the `PersonFinder` will display the results below the input field, without\n * using a dropdown. This is useful for scenarios where the `PersonFinder` is part of a larger\n * form and should always be visible.\n * @default false\n * @example\n * <PersonFinder shouldRenderInline />\n * @optional\n */\n shouldRenderInline?: boolean;\n /**\n * Whether the remove action should be disabled.\n */\n shouldDisableRemove?: boolean;\n};\n\nconst PersonFinderWrapper = forwardRef<PersonFinderRef, PersonFinderWrapperProps>(\n (\n {\n container,\n dropdownDirection,\n filterTypes,\n friendsPriority,\n leftElement: leftElementProp,\n maxEntries = Infinity,\n onAdd,\n onDropdownHide,\n onDropdownShow,\n shouldDisableRemove,\n onRemove,\n placeholder,\n shouldAllowMultiple,\n shouldHideResultsOnAdd,\n shouldRenderInline,\n },\n ref,\n ) => {\n const { data, updateSearch, setTags, tags, search } = usePersonFinder();\n\n const [isFocused, setIsFocused] = useState(false);\n const [shouldShowBody, setShouldShowBody] = useState(false);\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const keyRef = useRef(`person-finder-${uuidV4()}`);\n const tagInputRef = useRef<TagInputRef>(null);\n\n const { isTouch } = useDevice();\n\n const leftElement = leftElementProp ?? (\n <StyledPersonFinderLeftElement>\n <Icon icons={['fa fa-search']} />\n </StyledPersonFinderLeftElement>\n );\n\n const handleTagInputBlur = useCallback(() => {\n setIsFocused(false);\n }, []);\n\n const handleTagInputFocus = useCallback(() => {\n setIsFocused(true);\n }, []);\n\n const handleRemove = useCallback(\n (id: string) => {\n if (typeof setTags !== 'function' || shouldDisableRemove) {\n return;\n }\n\n setTags((prevState) => prevState.filter((entry) => entry.id !== id));\n\n if (typeof onRemove === 'function') {\n onRemove(id);\n }\n },\n [onRemove, setTags, shouldDisableRemove],\n );\n\n const handleClose = useCallback(() => {\n setShouldShowBody(false);\n }, []);\n\n const handleOpen = useCallback(() => {\n setShouldShowBody(true);\n }, []);\n\n const handleClear = useCallback(() => {\n if (typeof setTags !== 'function' || shouldDisableRemove) {\n return;\n }\n\n tagInputRef.current?.resetValue();\n\n setTags([]);\n }, [setTags, shouldDisableRemove]);\n\n const handleDropdownOutsideClick = useCallback(() => {\n tagInputRef.current?.blur();\n\n return isFocused && isTouch;\n }, [isFocused, isTouch]);\n\n const handleAdd = useCallback(\n (id: string) => {\n if (typeof setTags !== 'function') {\n return;\n }\n\n const selectedEntry = Object.values(data ?? {})\n .flat()\n .map(({ entries }) => entries)\n .flat()\n .find(\n (entry) =>\n (typeof entry.id === 'string' ? entry.id : entry.id.toString()) === id,\n );\n\n if (!selectedEntry) {\n return;\n }\n\n const { name, firstName, lastName } = selectedEntry as PersonEntry & SiteEntry;\n\n const tag: Tag = {\n id,\n text: name ?? `${(firstName as string) ?? ''} ${(lastName as string) ?? ''}`,\n };\n\n setTags((prevState) => {\n if (prevState.some((t) => t.id === id) || prevState.length >= maxEntries) {\n return prevState;\n }\n\n tagInputRef.current?.resetValue();\n\n if (typeof onAdd === 'function') {\n onAdd(selectedEntry);\n }\n\n if (shouldHideResultsOnAdd) {\n setShouldShowBody(false);\n }\n\n return [...prevState, tag];\n });\n },\n [data, maxEntries, onAdd, setTags, shouldHideResultsOnAdd],\n );\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (typeof updateSearch === 'function') {\n updateSearch(event.target.value);\n }\n },\n [updateSearch],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => handleClear(),\n }),\n [handleClear],\n );\n\n useEffect(() => {\n if (shouldShowBody) {\n if (typeof onDropdownShow === 'function') {\n onDropdownShow();\n }\n } else if (typeof onDropdownHide === 'function') {\n onDropdownHide();\n }\n }, [onDropdownHide, onDropdownShow, shouldShowBody]);\n\n const showBody = useMemo(() => {\n const extraMobileCheck = isTouch ? isFocused : true;\n\n if (\n filterTypes?.length === 1 &&\n (filterTypes.includes(PersonFinderFilterTypes.SITE) ||\n (filterTypes.includes(PersonFinderFilterTypes.PERSON) &&\n friendsPriority !== Priority.HIGH))\n ) {\n return shouldShowBody && extraMobileCheck && !!search && search?.length > 2;\n }\n\n return shouldShowBody && extraMobileCheck;\n }, [filterTypes, friendsPriority, isFocused, isTouch, search, shouldShowBody]);\n\n const content = useMemo(() => {\n const body = (\n <PersonFinderBody\n filterTypes={filterTypes}\n onAdd={handleAdd}\n onRemove={handleRemove}\n ref={contentRef}\n shouldRenderInline={shouldRenderInline}\n />\n );\n\n if (shouldRenderInline) {\n return body;\n }\n\n if (boxRef.current) {\n return (\n <DropdownBodyWrapper\n anchorElement={boxRef.current}\n container={container}\n direction={dropdownDirection}\n onClose={handleClose}\n onOutsideClick={handleDropdownOutsideClick}\n shouldShowDropdown={showBody}\n >\n {body}\n </DropdownBodyWrapper>\n );\n }\n\n return null;\n }, [\n container,\n dropdownDirection,\n filterTypes,\n handleAdd,\n handleClose,\n handleDropdownOutsideClick,\n handleRemove,\n shouldRenderInline,\n showBody,\n ]);\n\n return (\n <StyledPersonFinder ref={boxRef} onFocus={handleOpen} key={keyRef.current}>\n <TagInput\n leftElement={leftElement}\n onBlur={handleTagInputBlur}\n onChange={handleChange}\n onFocus={handleTagInputFocus}\n onRemove={handleRemove}\n placeholder={placeholder}\n ref={tagInputRef}\n shouldAllowMultiple={shouldAllowMultiple}\n shouldPreventEnter\n tags={tags}\n />\n {content}\n </StyledPersonFinder>\n );\n },\n);\n\nPersonFinderWrapper.displayName = 'PersonFinderWrapper';\n\nexport default PersonFinderWrapper;\n"],"mappings":"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","ignoreList":[]}
@@ -34,8 +34,7 @@ const PersonFinderBody = /*#__PURE__*/(0, _react.forwardRef)(({
34
34
  const content = (0, _react.useMemo)(() => Object.entries(data ?? {}).map(([key, singleData], index) => {
35
35
  const {
36
36
  count,
37
- entries,
38
- searchString
37
+ entries
39
38
  } = singleData;
40
39
  return /*#__PURE__*/_react.default.createElement(_PersonFinderGroup.default, {
41
40
  key: `person-finder-group--${key}`,
@@ -44,7 +43,6 @@ const PersonFinderBody = /*#__PURE__*/(0, _react.forwardRef)(({
44
43
  onRemove: onRemove,
45
44
  entries: entries,
46
45
  count: count,
47
- search: searchString,
48
46
  shouldShowGroupName: shouldShowGroupNames && index !== 0
49
47
  });
50
48
  }), [data, onAdd, onRemove, shouldShowGroupNames]);
@@ -1 +1 @@
1
- {"version":3,"file":"PersonFinderBody.js","names":["_react","_interopRequireWildcard","require","_PersonFinderBody","_PersonFinderProvider","_personFinder","_personFinder2","_PersonFinderGroup","_interopRequireDefault","_PersonFinderHeader","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","PersonFinderBody","forwardRef","onAdd","filterTypes","onRemove","shouldRenderInline","ref","activeFilter","data","usePersonFinder","isScrollTop","setIsScrollTop","useState","contentRef","useRef","currentGroupName","useClosestElementAbove","shouldShowGroupNames","length","defaultGroupName","getGroupName","keys","handleContentScroll","event","target","scrollTop","content","useMemo","entries","map","key","singleData","index","count","searchString","createElement","filterKey","search","shouldShowGroupName","StyledPersonFinderBody","$shouldRenderInline","shouldShowShadow","StyledPersonFinderBodyContent","className","onScroll","displayName","_default","exports"],"sources":["../../../../../../src/components/person-finder/person-finder-wrapper/person-finder-body/PersonFinderBody.tsx"],"sourcesContent":["import React, { forwardRef, UIEvent, useMemo, useRef, useState } from 'react';\nimport { StyledPersonFinderBody, StyledPersonFinderBodyContent } from './PersonFinderBody.styles';\nimport { PersonFinderFilterTypes } from '../../../../types/personFinder';\nimport { usePersonFinder } from '../../../PersonFinderProvider';\nimport { getGroupName } from '../../../../utils/personFinder';\nimport { useClosestElementAbove } from '../../../../hooks/personFinder';\nimport PersonFinderGroup from './person-finder-group/PersonFinderGroup';\nimport PersonFinderHeader from './person-finder-header/PersonFinderHeader';\n\nexport type PersonFinderBodyProps = {\n onAdd: (id: string) => void;\n onRemove: (id: string) => void;\n filterTypes?: PersonFinderFilterTypes[];\n shouldRenderInline?: boolean;\n};\n\nconst PersonFinderBody = forwardRef<HTMLDivElement, PersonFinderBodyProps>(\n ({ onAdd, filterTypes, onRemove, shouldRenderInline }, ref) => {\n const { activeFilter, data } = usePersonFinder();\n\n const [isScrollTop, setIsScrollTop] = useState(true);\n\n const contentRef = useRef<HTMLDivElement>(null);\n\n const currentGroupName = useClosestElementAbove(contentRef, 'person-finder-group-name');\n\n const shouldShowGroupNames = (activeFilter?.length ?? 0) !== 1;\n\n const defaultGroupName = getGroupName(Object.keys(data ?? {})[0] ?? '');\n\n const handleContentScroll = (event: UIEvent<HTMLDivElement>) => {\n setIsScrollTop((event.target as HTMLElement).scrollTop === 0);\n };\n\n const content = useMemo(\n () =>\n Object.entries(data ?? {}).map(([key, singleData], index) => {\n const { count, entries, searchString } = singleData;\n\n return (\n <PersonFinderGroup\n key={`person-finder-group--${key}`}\n filterKey={key as PersonFinderFilterTypes}\n onAdd={onAdd}\n onRemove={onRemove}\n entries={entries}\n count={count}\n search={searchString}\n shouldShowGroupName={shouldShowGroupNames && index !== 0}\n />\n );\n }),\n [data, onAdd, onRemove, shouldShowGroupNames],\n );\n\n return (\n <StyledPersonFinderBody ref={ref} $shouldRenderInline={shouldRenderInline}>\n <PersonFinderHeader\n currentGroupName={currentGroupName}\n defaultGroupName={defaultGroupName}\n filterTypes={filterTypes}\n shouldShowGroupNames={shouldShowGroupNames}\n shouldShowShadow={!isScrollTop && !shouldRenderInline}\n />\n <StyledPersonFinderBodyContent\n ref={contentRef}\n className=\"chayns-scrollbar\"\n onScroll={handleContentScroll}\n >\n {content}\n </StyledPersonFinderBodyContent>\n </StyledPersonFinderBody>\n );\n },\n);\n\nPersonFinderBody.displayName = 'PersonFinderBody';\n\nexport default PersonFinderBody;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PersonFinderBody.js","names":["_react","_interopRequireWildcard","require","_PersonFinderBody","_PersonFinderProvider","_personFinder","_personFinder2","_PersonFinderGroup","_interopRequireDefault","_PersonFinderHeader","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","PersonFinderBody","forwardRef","onAdd","filterTypes","onRemove","shouldRenderInline","ref","activeFilter","data","usePersonFinder","isScrollTop","setIsScrollTop","useState","contentRef","useRef","currentGroupName","useClosestElementAbove","shouldShowGroupNames","length","defaultGroupName","getGroupName","keys","handleContentScroll","event","target","scrollTop","content","useMemo","entries","map","key","singleData","index","count","createElement","filterKey","shouldShowGroupName","StyledPersonFinderBody","$shouldRenderInline","shouldShowShadow","StyledPersonFinderBodyContent","className","onScroll","displayName","_default","exports"],"sources":["../../../../../../src/components/person-finder/person-finder-wrapper/person-finder-body/PersonFinderBody.tsx"],"sourcesContent":["import React, { forwardRef, UIEvent, useMemo, useRef, useState } from 'react';\nimport { StyledPersonFinderBody, StyledPersonFinderBodyContent } from './PersonFinderBody.styles';\nimport { PersonFinderFilterTypes } from '../../../../types/personFinder';\nimport { usePersonFinder } from '../../../PersonFinderProvider';\nimport { getGroupName } from '../../../../utils/personFinder';\nimport { useClosestElementAbove } from '../../../../hooks/personFinder';\nimport PersonFinderGroup from './person-finder-group/PersonFinderGroup';\nimport PersonFinderHeader from './person-finder-header/PersonFinderHeader';\n\nexport type PersonFinderBodyProps = {\n onAdd: (id: string) => void;\n onRemove: (id: string) => void;\n filterTypes?: PersonFinderFilterTypes[];\n shouldRenderInline?: boolean;\n};\n\nconst PersonFinderBody = forwardRef<HTMLDivElement, PersonFinderBodyProps>(\n ({ onAdd, filterTypes, onRemove, shouldRenderInline }, ref) => {\n const { activeFilter, data } = usePersonFinder();\n\n const [isScrollTop, setIsScrollTop] = useState(true);\n\n const contentRef = useRef<HTMLDivElement>(null);\n\n const currentGroupName = useClosestElementAbove(contentRef, 'person-finder-group-name');\n\n const shouldShowGroupNames = (activeFilter?.length ?? 0) !== 1;\n\n const defaultGroupName = getGroupName(Object.keys(data ?? {})[0] ?? '');\n\n const handleContentScroll = (event: UIEvent<HTMLDivElement>) => {\n setIsScrollTop((event.target as HTMLElement).scrollTop === 0);\n };\n\n const content = useMemo(\n () =>\n Object.entries(data ?? {}).map(([key, singleData], index) => {\n const { count, entries } = singleData;\n\n return (\n <PersonFinderGroup\n key={`person-finder-group--${key}`}\n filterKey={key as PersonFinderFilterTypes}\n onAdd={onAdd}\n onRemove={onRemove}\n entries={entries}\n count={count}\n shouldShowGroupName={shouldShowGroupNames && index !== 0}\n />\n );\n }),\n [data, onAdd, onRemove, shouldShowGroupNames],\n );\n\n return (\n <StyledPersonFinderBody ref={ref} $shouldRenderInline={shouldRenderInline}>\n <PersonFinderHeader\n currentGroupName={currentGroupName}\n defaultGroupName={defaultGroupName}\n filterTypes={filterTypes}\n shouldShowGroupNames={shouldShowGroupNames}\n shouldShowShadow={!isScrollTop && !shouldRenderInline}\n />\n <StyledPersonFinderBodyContent\n ref={contentRef}\n className=\"chayns-scrollbar\"\n onScroll={handleContentScroll}\n >\n {content}\n </StyledPersonFinderBodyContent>\n </StyledPersonFinderBody>\n );\n },\n);\n\nPersonFinderBody.displayName = 'PersonFinderBody';\n\nexport default PersonFinderBody;\n"],"mappings":"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","ignoreList":[]}
@@ -13,7 +13,6 @@ var _PersonFinderProvider = require("../../../../PersonFinderProvider");
13
13
  var _PersonFinderItem = _interopRequireDefault(require("./person-finder-item/PersonFinderItem"));
14
14
  var _personFinder3 = require("../../../../../hooks/personFinder");
15
15
  var _PersonFinderSmallItem = _interopRequireDefault(require("./person-finder-small-item/PersonFinderSmallItem"));
16
- var _textstring = require("@chayns-components/textstring");
17
16
  var _textStrings = _interopRequireDefault(require("../../../../../constants/textStrings"));
18
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
18
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
@@ -74,11 +73,9 @@ const PersonFinderGroup = ({
74
73
  key: `more-button--${filterKey}`,
75
74
  shouldShowWaitCursor: loadingState === _personFinder.LoadingState.Pending,
76
75
  onClick: handleLoadMore
77
- }, /*#__PURE__*/_react.default.createElement(_textstring.TextstringProvider, {
78
- libraryName: "@chayns-components-person-finder"
79
- }, /*#__PURE__*/_react.default.createElement(_textstring.Textstring, {
80
- textstring: (0, _textstring.ttsToITextString)(ts.loadMore)
81
- }), ' ', (0, _personFinder2.getGroupName)(filterKey)))));
76
+ }, (0, _personFinder2.getPersonFinderTextstringValue)({
77
+ textstring: ts.loadMore
78
+ }), " ", groupName)));
82
79
  };
83
80
  PersonFinderGroup.displayName = 'PersonFinderGroup';
84
81
  var _default = exports.default = PersonFinderGroup;
@@ -1 +1 @@
1
- {"version":3,"file":"PersonFinderGroup.js","names":["_react","_interopRequireWildcard","require","_core","_personFinder","_personFinder2","_PersonFinderGroup","_PersonFinderProvider","_PersonFinderItem","_interopRequireDefault","_personFinder3","_PersonFinderSmallItem","_textstring","_textStrings","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","PersonFinderGroup","entries","filterKey","count","shouldShowGroupName","onAdd","onRemove","loadMore","loadingState","loadingStateFromState","search","usePersonFinder","areOnlyFriendsGiven","useOnlyFriends","PersonFinderFilterTypes","UAC","groupName","getGroupName","LoadingState","None","shouldShowLoadMoreButton","length","waitCursor","Pending","createElement","StyledPersonFinderGroupWaitCursor","SmallWaitCursor","shouldHideBackground","errorMessage","useErrorMessage","handleLoadMore","useCallback","handlePreventDefault","event","preventDefault","stopPropagation","ts","textStrings","components","personFinder","wrapper","body","group","StyledPersonFinderGroup","onClick","StyledPersonFinderGroupName","className","List","map","entry","id","key","StyledPersonFinderGroupButtonWrapper","Button","shouldShowWaitCursor","TextstringProvider","libraryName","Textstring","textstring","ttsToITextString","displayName","_default","exports"],"sources":["../../../../../../../src/components/person-finder/person-finder-wrapper/person-finder-body/person-finder-group/PersonFinderGroup.tsx"],"sourcesContent":["import React, { FC, MouseEvent, useCallback } from 'react';\nimport { Button, List, SmallWaitCursor } from '@chayns-components/core';\nimport {\n LoadingState,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n} from '../../../../../types/personFinder';\nimport { getGroupName } from '../../../../../utils/personFinder';\nimport {\n StyledPersonFinderGroup,\n StyledPersonFinderGroupButtonWrapper,\n StyledPersonFinderGroupName,\n StyledPersonFinderGroupWaitCursor,\n} from './PersonFinderGroup.styles';\nimport { usePersonFinder } from '../../../../PersonFinderProvider';\nimport PersonFinderItem from './person-finder-item/PersonFinderItem';\nimport { useErrorMessage, useOnlyFriends } from '../../../../../hooks/personFinder';\nimport PersonFinderSmallItem from './person-finder-small-item/PersonFinderSmallItem';\nimport { Textstring, TextstringProvider, ttsToITextString } from '@chayns-components/textstring';\nimport textStrings from '../../../../../constants/textStrings';\n\nexport type PersonFinderGroupProps = {\n filterKey: PersonFinderFilterTypes;\n entries: PersonFinderEntry[];\n count: number;\n search: string;\n shouldShowGroupName: boolean;\n onAdd: (id: string) => void;\n onRemove: (id: string) => void;\n};\n\nconst PersonFinderGroup: FC<PersonFinderGroupProps> = ({\n entries,\n filterKey,\n count,\n shouldShowGroupName,\n onAdd,\n onRemove,\n}) => {\n const { loadMore, loadingState: loadingStateFromState, search } = usePersonFinder();\n const areOnlyFriendsGiven =\n useOnlyFriends(entries) || filterKey === PersonFinderFilterTypes.UAC;\n\n const groupName = getGroupName(filterKey);\n\n const loadingState = loadingStateFromState\n ? (loadingStateFromState[filterKey] ?? LoadingState.None)\n : LoadingState.None;\n\n const shouldShowLoadMoreButton = entries.length < count;\n\n const waitCursor =\n (entries.length === 0 || areOnlyFriendsGiven) && loadingState === LoadingState.Pending ? (\n <StyledPersonFinderGroupWaitCursor>\n <SmallWaitCursor shouldHideBackground />\n </StyledPersonFinderGroupWaitCursor>\n ) : null;\n\n const errorMessage = useErrorMessage({\n areOnlyFriendsGiven,\n entries,\n loadingState,\n search: search ?? '',\n groupName,\n });\n\n const handleLoadMore = useCallback(() => {\n if (typeof loadMore === 'function') {\n loadMore(filterKey);\n }\n }, [filterKey, loadMore]);\n\n const handlePreventDefault = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n const ts = textStrings.components.personFinder.wrapper.body.group;\n\n return (\n <StyledPersonFinderGroup onClick={handlePreventDefault}>\n {shouldShowGroupName && (\n <StyledPersonFinderGroupName className=\"person-finder-group-name\">\n {groupName}\n </StyledPersonFinderGroupName>\n )}\n {entries.length > 0 && (\n <List>\n {entries.map((entry) =>\n typeof entry.id === 'number' ? (\n <PersonFinderSmallItem\n key={`person-finder-entry--${entry.id}`}\n entry={entry}\n onAdd={onAdd}\n onRemove={onRemove}\n />\n ) : (\n <PersonFinderItem\n key={`person-finder-entry--${entry.id}`}\n entry={entry}\n onAdd={onAdd}\n onRemove={onRemove}\n />\n ),\n )}\n </List>\n )}\n {waitCursor}\n {errorMessage}\n {shouldShowLoadMoreButton && (\n <StyledPersonFinderGroupButtonWrapper key={`more-button-wrapper--${filterKey}`}>\n <Button\n key={`more-button--${filterKey}`}\n shouldShowWaitCursor={loadingState === LoadingState.Pending}\n onClick={handleLoadMore}\n >\n <TextstringProvider libraryName=\"@chayns-components-person-finder\">\n <Textstring textstring={ttsToITextString(ts.loadMore)} />{' '}\n {getGroupName(filterKey)}\n </TextstringProvider>\n </Button>\n </StyledPersonFinderGroupButtonWrapper>\n )}\n </StyledPersonFinderGroup>\n );\n};\n\nPersonFinderGroup.displayName = 'PersonFinderGroup';\n\nexport default PersonFinderGroup;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PersonFinderGroup.js","names":["_react","_interopRequireWildcard","require","_core","_personFinder","_personFinder2","_PersonFinderGroup","_PersonFinderProvider","_PersonFinderItem","_interopRequireDefault","_personFinder3","_PersonFinderSmallItem","_textStrings","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","PersonFinderGroup","entries","filterKey","count","shouldShowGroupName","onAdd","onRemove","loadMore","loadingState","loadingStateFromState","search","usePersonFinder","areOnlyFriendsGiven","useOnlyFriends","PersonFinderFilterTypes","UAC","groupName","getGroupName","LoadingState","None","shouldShowLoadMoreButton","length","waitCursor","Pending","createElement","StyledPersonFinderGroupWaitCursor","SmallWaitCursor","shouldHideBackground","errorMessage","useErrorMessage","handleLoadMore","useCallback","handlePreventDefault","event","preventDefault","stopPropagation","ts","textStrings","components","personFinder","wrapper","body","group","StyledPersonFinderGroup","onClick","StyledPersonFinderGroupName","className","List","map","entry","id","key","StyledPersonFinderGroupButtonWrapper","Button","shouldShowWaitCursor","getPersonFinderTextstringValue","textstring","displayName","_default","exports"],"sources":["../../../../../../../src/components/person-finder/person-finder-wrapper/person-finder-body/person-finder-group/PersonFinderGroup.tsx"],"sourcesContent":["import React, { FC, MouseEvent, useCallback } from 'react';\nimport { Button, List, SmallWaitCursor } from '@chayns-components/core';\nimport {\n LoadingState,\n PersonFinderEntry,\n PersonFinderFilterTypes,\n} from '../../../../../types/personFinder';\nimport { getGroupName, getPersonFinderTextstringValue } from '../../../../../utils/personFinder';\nimport {\n StyledPersonFinderGroup,\n StyledPersonFinderGroupButtonWrapper,\n StyledPersonFinderGroupName,\n StyledPersonFinderGroupWaitCursor,\n} from './PersonFinderGroup.styles';\nimport { usePersonFinder } from '../../../../PersonFinderProvider';\nimport PersonFinderItem from './person-finder-item/PersonFinderItem';\nimport { useErrorMessage, useOnlyFriends } from '../../../../../hooks/personFinder';\nimport PersonFinderSmallItem from './person-finder-small-item/PersonFinderSmallItem';\nimport textStrings from '../../../../../constants/textStrings';\n\nexport type PersonFinderGroupProps = {\n filterKey: PersonFinderFilterTypes;\n entries: PersonFinderEntry[];\n count: number;\n shouldShowGroupName: boolean;\n onAdd: (id: string) => void;\n onRemove: (id: string) => void;\n};\n\nconst PersonFinderGroup: FC<PersonFinderGroupProps> = ({\n entries,\n filterKey,\n count,\n shouldShowGroupName,\n onAdd,\n onRemove,\n}) => {\n const { loadMore, loadingState: loadingStateFromState, search } = usePersonFinder();\n const areOnlyFriendsGiven =\n useOnlyFriends(entries) || filterKey === PersonFinderFilterTypes.UAC;\n\n const groupName = getGroupName(filterKey);\n\n const loadingState = loadingStateFromState\n ? (loadingStateFromState[filterKey] ?? LoadingState.None)\n : LoadingState.None;\n\n const shouldShowLoadMoreButton = entries.length < count;\n\n const waitCursor =\n (entries.length === 0 || areOnlyFriendsGiven) && loadingState === LoadingState.Pending ? (\n <StyledPersonFinderGroupWaitCursor>\n <SmallWaitCursor shouldHideBackground />\n </StyledPersonFinderGroupWaitCursor>\n ) : null;\n\n const errorMessage = useErrorMessage({\n areOnlyFriendsGiven,\n entries,\n loadingState,\n search: search ?? '',\n groupName,\n });\n\n const handleLoadMore = useCallback(() => {\n if (typeof loadMore === 'function') {\n loadMore(filterKey);\n }\n }, [filterKey, loadMore]);\n\n const handlePreventDefault = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n const ts = textStrings.components.personFinder.wrapper.body.group;\n\n return (\n <StyledPersonFinderGroup onClick={handlePreventDefault}>\n {shouldShowGroupName && (\n <StyledPersonFinderGroupName className=\"person-finder-group-name\">\n {groupName}\n </StyledPersonFinderGroupName>\n )}\n {entries.length > 0 && (\n <List>\n {entries.map((entry) =>\n typeof entry.id === 'number' ? (\n <PersonFinderSmallItem\n key={`person-finder-entry--${entry.id}`}\n entry={entry}\n onAdd={onAdd}\n onRemove={onRemove}\n />\n ) : (\n <PersonFinderItem\n key={`person-finder-entry--${entry.id}`}\n entry={entry}\n onAdd={onAdd}\n onRemove={onRemove}\n />\n ),\n )}\n </List>\n )}\n {waitCursor}\n {errorMessage}\n {shouldShowLoadMoreButton && (\n <StyledPersonFinderGroupButtonWrapper key={`more-button-wrapper--${filterKey}`}>\n <Button\n key={`more-button--${filterKey}`}\n shouldShowWaitCursor={loadingState === LoadingState.Pending}\n onClick={handleLoadMore}\n >\n {getPersonFinderTextstringValue({ textstring: ts.loadMore })} {groupName}\n </Button>\n </StyledPersonFinderGroupButtonWrapper>\n )}\n </StyledPersonFinderGroup>\n );\n};\n\nPersonFinderGroup.displayName = 'PersonFinderGroup';\n\nexport default PersonFinderGroup;\n"],"mappings":"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","ignoreList":[]}