From 16a3bc94897705be535ce41d044f96ff7557534c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlia=20Jaeger=20Foresti?= <60678893+juliajforesti@users.noreply.github.com> Date: Mon, 21 Feb 2022 20:44:53 -0300 Subject: [PATCH] [IMPROVE] Replace AutoComplete in UserAutoComplete & UserAutoCompleteMultiple components (#24529) * Replace AutoComplete with MultiSelectFiltered on CreateTeamModal/UsersInput * Add addonIcon on CreateTeamModal/UsersInput multiSelect * Replace Autocomplete with SelectFiltered on UserAutoComplete * Replace AutoComplete in UserAutoCompleteMultiple & Unify with UsersInput * Replace AutoComplete in UserAutoCompleteMultiple & Unify with UsersInput * Update onChanges passed to UserAutoCompleteMultiple * remove log * chore: review * Update fuselage, fuselage-hooks, fuselage-ui-kit e onboarding-ui versions to @next * Fix typings * Bump Fuselage one more time Co-authored-by: dougfabris Co-authored-by: Tasso Evangelista --- .../CreateDiscussion/CreateDiscussion.tsx | 10 +- client/components/UserAutoComplete/Avatar.js | 8 - .../UserAutoComplete/UserAutoComplete.js | 39 ++- .../UserAutoComplete/{index.js => index.ts} | 0 .../UserAutoCompleteMultiple/Avatar.js | 8 - .../UserAutoCompleteMultiple.js | 59 ++-- .../sidebar/header/CreateChannelWithData.js | 10 +- client/sidebar/header/CreateDirectMessage.tsx | 18 +- .../views/account/AccountIntegrationsPage.tsx | 4 +- .../FederationModal/FederationModal.tsx | 4 +- .../omnichannel/triggers/TriggersForm.tsx | 6 +- client/views/room/Header/ToolBox/ToolBox.tsx | 6 +- .../ExportMessages/MailExportForm.js | 10 +- .../PruneMessages/PruneMessagesWithData.js | 10 +- .../RoomMembers/AddUsers/AddUsersWithData.js | 10 +- client/views/room/lib/Toolbox/index.tsx | 2 +- .../teams/CreateTeamModal/CreateTeamModal.tsx | 20 +- .../teams/CreateTeamModal/UsersInput.tsx | 90 ------ ee/client/audit/AuditPage.js | 10 +- .../cannedResponses/CannedResponseFilter.tsx | 4 +- .../EngagementDashboardPage.tsx | 2 +- .../users/BusiestChatTimesSection.tsx | 2 +- package-lock.json | 265 ++++++------------ package.json | 28 +- 24 files changed, 179 insertions(+), 446 deletions(-) delete mode 100644 client/components/UserAutoComplete/Avatar.js rename client/components/UserAutoComplete/{index.js => index.ts} (100%) delete mode 100644 client/components/UserAutoCompleteMultiple/Avatar.js delete mode 100644 client/views/teams/CreateTeamModal/UsersInput.tsx diff --git a/client/components/CreateDiscussion/CreateDiscussion.tsx b/client/components/CreateDiscussion/CreateDiscussion.tsx index b5f2a67ab9b..5fe9e6c12f9 100644 --- a/client/components/CreateDiscussion/CreateDiscussion.tsx +++ b/client/components/CreateDiscussion/CreateDiscussion.tsx @@ -65,14 +65,8 @@ const CreateDiscussion = ({ onClose, defaultParentRoom, parentMessageId, nameSug } }); - const onChangeUsers = useMutableCallback((value, action) => { - if (!action) { - if (usernames.includes(value)) { - return; - } - return handleUsernames([...usernames, value]); - } - handleUsernames(usernames.filter((current) => current !== value)); + const onChangeUsers = useMutableCallback((value: CreateDiscussionFormValues['usernames']) => { + handleUsernames(value); }); return ( diff --git a/client/components/UserAutoComplete/Avatar.js b/client/components/UserAutoComplete/Avatar.js deleted file mode 100644 index 8e135268df9..00000000000 --- a/client/components/UserAutoComplete/Avatar.js +++ /dev/null @@ -1,8 +0,0 @@ -import { Options } from '@rocket.chat/fuselage'; -import React from 'react'; - -import UserAvatar from '../avatar/UserAvatar'; - -const Avatar = ({ value, ...props }) => ; - -export default Avatar; diff --git a/client/components/UserAutoComplete/UserAutoComplete.js b/client/components/UserAutoComplete/UserAutoComplete.js index b44a350cfc8..d2c3c507b3b 100644 --- a/client/components/UserAutoComplete/UserAutoComplete.js +++ b/client/components/UserAutoComplete/UserAutoComplete.js @@ -1,10 +1,9 @@ -import { AutoComplete, Option, Box, Chip } from '@rocket.chat/fuselage'; +import { SelectFiltered, Option, Box, Chip } from '@rocket.chat/fuselage'; import { useDebouncedValue } from '@rocket.chat/fuselage-hooks'; import React, { memo, useMemo, useState } from 'react'; import { useEndpointData } from '../../hooks/useEndpointData'; import UserAvatar from '../avatar/UserAvatar'; -import Avatar from './Avatar'; const query = (term = '', conditions = {}) => ({ selector: JSON.stringify({ term, conditions }) }); @@ -18,29 +17,29 @@ const UserAutoComplete = (props) => { useMemo(() => query(debouncedFilter, conditions), [filter]), ); - const options = useMemo(() => (data && data.items.map((user) => ({ value: user.username, label: user.name }))) || [], [data]); + const options = useMemo(() => (data && data.items.map((user) => [user.username, user.name])) || [], [data]); + + const renderSelected = ({ value, label }) => + value ? ( + props.onChange()} mie='x4'> + + + {label} + + + ) : null; + + const renderItem = ({ value, ...props }) =>