Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ const RoomAutoComplete = ({ value, onChange, scope = 'regular', renderRoomIcon,
renderSelected={({ selected: { value, label } }) => (
<>
<Box margin='none' mi={2}>
<RoomAvatar size={AVATAR_SIZE} room={{ type: label?.type || 'c', _id: value, ...label }} />
<RoomAvatar size={AVATAR_SIZE} room={{ ...label, type: label?.type || 'c', _id: value }} />
</Box>
<Box margin='none' mi={2}>
{label?.name}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ const RoomAutoCompleteMultiple = ({ value, onChange, ...props }: RoomAutoComplet
multiple
renderSelected={({ selected: { value, label }, onRemove, ...props }): ReactElement => (
<Chip {...props} key={value} value={value} onClick={onRemove}>
<RoomAvatar size='x20' room={{ type: label?.type || 'c', _id: value, ...label }} />
<RoomAvatar size='x20' room={{ ...label, type: label?.type || 'c', _id: value }} />
<Box is='span' margin='none' mis={4}>
{label?.name}
</Box>
Expand All @@ -63,7 +63,7 @@ const RoomAutoCompleteMultiple = ({ value, onChange, ...props }: RoomAutoComplet
key={value}
{...props}
label={label.name}
avatar={<RoomAvatar size='x20' room={{ type: label?.type || 'c', _id: value, ...label }} />}
avatar={<RoomAvatar size='x20' room={{ ...label, type: label?.type || 'c', _id: value }} />}
/>
)}
options={options}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,27 @@
import { isDirectMessageRoom } from '@rocket.chat/core-typings';
import { type RoomType, isDirectMessageRoom } from '@rocket.chat/core-typings';
import { AutoComplete, Box, Option, OptionAvatar, OptionContent, Chip } from '@rocket.chat/fuselage';
import { useDebouncedValue } from '@rocket.chat/fuselage-hooks';
import { escapeRegExp } from '@rocket.chat/string-helpers';
import { RoomAvatar, UserAvatar } from '@rocket.chat/ui-avatar';
import { RoomAvatar } from '@rocket.chat/ui-avatar';
import { useUser, useUserSubscriptions } from '@rocket.chat/ui-contexts';
import type { ComponentProps } from 'react';
import type { ComponentProps, ReactElement } from 'react';
import { memo, useMemo, useState } from 'react';

import { roomCoordinator } from '../../lib/rooms/roomCoordinator';
import { Rooms } from '../../stores';

type UserAndRoomAutoCompleteMultipleProps = Omit<ComponentProps<typeof AutoComplete>, 'filter'> & { limit?: number };
type UserAndRoomAutoCompleteMultipleProps = Omit<ComponentProps<typeof AutoComplete>, 'filter'> & {
limit?: number;
};

type OptionType = {
value: string;
label: {
name: string | undefined;
avatarETag: string | undefined;
type: RoomType;
};
}[];

const UserAndRoomAutoCompleteMultiple = ({ value, onChange, limit, ...props }: UserAndRoomAutoCompleteMultipleProps) => {
const user = useUser();
Expand All @@ -35,33 +46,31 @@ const UserAndRoomAutoCompleteMultiple = ({ value, onChange, limit, ...props }: U
),
);

const options = useMemo(() => {
if (!user) {
return [];
}

return rooms.reduce<Exclude<UserAndRoomAutoCompleteMultipleProps['options'], undefined>>((acc, room) => {
if (acc.length === limit) return acc;
const options = useMemo(
() =>
rooms.reduce<OptionType>((acc, room) => {
if (acc.length === limit) return acc;

if (isDirectMessageRoom(room) && (room.blocked || room.blocker)) {
return acc;
}
if (isDirectMessageRoom(room) && (room.blocked || room.blocker)) {
return acc;
}

if (roomCoordinator.readOnly(Rooms.state.get(room.rid), user)) return acc;
if (roomCoordinator.readOnly(Rooms.state.get(room.rid), user)) return acc;

return [
...acc,
{
value: room.rid,
label: {
name: room.fname || room.name,
avatarETag: room.avatarETag,
type: room.t,
return [
...acc,
{
value: room.rid,
label: {
name: room.fname || room.name,
avatarETag: room.avatarETag,
type: room.t,
},
},
},
];
}, []);
}, [limit, rooms, user]);
];
}, []),
[limit, rooms, user],
);

return (
<AutoComplete
Expand All @@ -71,13 +80,9 @@ const UserAndRoomAutoCompleteMultiple = ({ value, onChange, limit, ...props }: U
filter={filter}
setFilter={setFilter}
multiple
renderSelected={({ selected: { value, label }, onRemove, ...props }) => (
renderSelected={({ selected: { value, label }, onRemove, ...props }): ReactElement => (
<Chip {...props} height='x20' value={value} onClick={onRemove} mie={4}>
{label.t === 'd' ? (
<UserAvatar size='x20' username={value} />
) : (
<RoomAvatar size='x20' room={{ type: label?.type, _id: value, ...label }} />
)}
<RoomAvatar size='x20' room={{ ...label, _id: value }} />
<Box is='span' margin='none' mis={4}>
{label.name}
</Box>
Expand All @@ -86,11 +91,7 @@ const UserAndRoomAutoCompleteMultiple = ({ value, onChange, limit, ...props }: U
renderItem={({ value, label, ...props }) => (
<Option key={value} {...props}>
<OptionAvatar>
{label.t === 'd' ? (
<UserAvatar size='x20' username={value} />
) : (
<RoomAvatar size='x20' room={{ type: label?.type, _id: value, ...label }} />
)}
<RoomAvatar size='x20' room={{ ...label, _id: value }} />
</OptionAvatar>
<OptionContent>{label.name}</OptionContent>
</Option>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import type { OptionType } from '@rocket.chat/fuselage';
import { MultiSelectFiltered } from '@rocket.chat/fuselage';
import { useDebouncedValue } from '@rocket.chat/fuselage-hooks';
import { useEndpoint } from '@rocket.chat/ui-contexts';
Expand Down Expand Up @@ -94,7 +93,7 @@ const UserAutoCompleteMultipleFederated = ({
);

return (
<OptionsContext.Provider value={{ options: options as unknown as OptionType[] }}>
<OptionsContext.Provider value={{ options }}>
<MultiSelectFiltered
{...props}
data-qa-type='user-auto-complete-input'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
import type { IUser } from '@rocket.chat/core-typings';
import { Option, OptionDescription } from '@rocket.chat/fuselage';
import { UserAvatar } from '@rocket.chat/ui-avatar';
import type { ReactElement } from 'react';

import type { UserLabel } from './UserAutoCompleteMultipleOptions';

type UserAutoCompleteMultipleOptionProps = {
label: {
_federated?: boolean;
} & Pick<IUser, 'username' | 'name'>;
label: UserLabel;
value: string | number;
selected?: boolean;
focus?: boolean;
role?: string;
};

const UserAutoCompleteMultipleOption = ({ label, ...props }: UserAutoCompleteMultipleOptionProps): ReactElement => {
const UserAutoCompleteMultipleOption = ({ label, ...props }: UserAutoCompleteMultipleOptionProps) => {
const { name, username, _federated } = label;

return (
Expand All @@ -20,13 +22,10 @@ const UserAutoCompleteMultipleOption = ({ label, ...props }: UserAutoCompleteMul
icon={_federated ? 'globe' : undefined}
key={username}
label={
(
<>
{name || username} {!_federated && <OptionDescription>({username})</OptionDescription>}
</>
) as any
<>
{name || username} {!_federated && <OptionDescription>({username})</OptionDescription>}
</>
}
children={undefined}
/>
);
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,14 @@ import UserAutoCompleteMultipleOption from './UserAutoCompleteMultipleOption';
// The select requires a forwarded ref component in the renderOptions property
// but we also need to pass internal state to this renderer, as well as the props that also come from the Select.

export type UserLabel = {
_federated?: boolean;
username: string;
name?: string;
};

type OptionsContextValue = {
options: OptionType[];
options: OptionType<string, UserLabel>[];
};

export const OptionsContext = createContext<OptionsContextValue>({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ const AutoCompleteDepartmentMultiple = ({
flexShrink={0}
flexGrow={0}
placeholder={t('Select_an_option')}
renderItem={({ label, value, ref: _ref, ...props }) => {
renderItem={({ label, value, ...props }) => {
if (withCheckbox) {
return (
<CheckOption
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ const AutoCompleteMonitors = ({ value = [], onBlur, onChange, ...props }: AutoCo
endReached={() => fetchNextPage()}
onBlur={onBlur}
onChange={onChange}
renderItem={({ label, value, ref: _ref, ...props }) => (
renderItem={({ label, value, ...props }) => (
<CheckOption {...props} label={label} selected={value ? selectedValues.has(value) : false} />
)}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ const RoomsAvailableForTeamsAutoComplete = ({ value, onChange, ...props }: Rooms
setFilter={setFilter}
renderSelected={({ selected: { value, label }, onRemove }) => (
<Chip key={value} height='x20' value={value} onClick={onRemove} mb={2} mie={4}>
<RoomAvatar size='x20' room={{ type: label?.type || 'c', _id: value, ...label }} />
<RoomAvatar size='x20' room={{ ...label, type: label?.type || 'c', _id: value }} />
<Box is='span' margin='none' mis={4}>
{label.name}
</Box>
Expand Down
2 changes: 1 addition & 1 deletion apps/meteor/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@
"@rocket.chat/federation-matrix": "workspace:^",
"@rocket.chat/federation-sdk": "0.3.2",
"@rocket.chat/freeswitch": "workspace:^",
"@rocket.chat/fuselage": "~0.68.1",
"@rocket.chat/fuselage": "^0.69.0",
"@rocket.chat/fuselage-forms": "~0.1.1",
"@rocket.chat/fuselage-hooks": "~0.38.1",
"@rocket.chat/fuselage-toastbar": "~0.35.1",
Expand Down
2 changes: 1 addition & 1 deletion apps/uikit-playground/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"@lezer/highlight": "^1.2.3",
"@rocket.chat/core-typings": "workspace:^",
"@rocket.chat/css-in-js": "~0.31.25",
"@rocket.chat/fuselage": "~0.68.1",
"@rocket.chat/fuselage": "^0.69.0",
"@rocket.chat/fuselage-hooks": "~0.38.1",
"@rocket.chat/fuselage-toastbar": "~0.35.1",
"@rocket.chat/fuselage-tokens": "~0.33.2",
Expand Down
2 changes: 1 addition & 1 deletion ee/packages/ui-theming/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"devDependencies": {
"@rocket.chat/css-in-js": "~0.31.25",
"@rocket.chat/emitter": "~0.31.25",
"@rocket.chat/fuselage": "~0.68.1",
"@rocket.chat/fuselage": "^0.69.0",
"@rocket.chat/fuselage-hooks": "~0.38.1",
"@rocket.chat/fuselage-tokens": "~0.33.2",
"@rocket.chat/icons": "~0.45.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/fuselage-ui-kit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
"@rocket.chat/core-typings": "workspace:^",
"@rocket.chat/emitter": "~0.31.25",
"@rocket.chat/eslint-config": "workspace:^",
"@rocket.chat/fuselage": "~0.68.1",
"@rocket.chat/fuselage": "^0.69.0",
"@rocket.chat/fuselage-hooks": "~0.38.1",
"@rocket.chat/fuselage-tokens": "~0.33.2",
"@rocket.chat/icons": "~0.45.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/gazzodown/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"@rocket.chat/core-typings": "workspace:^",
"@rocket.chat/css-in-js": "~0.31.25",
"@rocket.chat/emitter": "~0.31.25",
"@rocket.chat/fuselage": "~0.68.1",
"@rocket.chat/fuselage": "^0.69.0",
"@rocket.chat/fuselage-hooks": "~0.38.1",
"@rocket.chat/fuselage-tokens": "~0.33.2",
"@rocket.chat/icons": "~0.45.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/storybook-config/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
},
"devDependencies": {
"@rocket.chat/eslint-config": "workspace:~",
"@rocket.chat/fuselage": "~0.68.1",
"@rocket.chat/fuselage": "^0.69.0",
"@rocket.chat/icons": "~0.45.0",
"@rocket.chat/tsconfig": "workspace:*",
"@storybook/react": "^8.6.14",
Expand Down
2 changes: 1 addition & 1 deletion packages/ui-avatar/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"devDependencies": {
"@rocket.chat/core-typings": "workspace:~",
"@rocket.chat/emitter": "~0.31.25",
"@rocket.chat/fuselage": "~0.68.1",
"@rocket.chat/fuselage": "^0.69.0",
"@rocket.chat/fuselage-hooks": "~0.38.1",
"@rocket.chat/fuselage-tokens": "~0.33.2",
"@rocket.chat/icons": "~0.45.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/ui-client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"@rocket.chat/core-typings": "workspace:~",
"@rocket.chat/css-in-js": "~0.31.25",
"@rocket.chat/emitter": "~0.31.25",
"@rocket.chat/fuselage": "~0.68.1",
"@rocket.chat/fuselage": "^0.69.0",
"@rocket.chat/fuselage-hooks": "~0.38.1",
"@rocket.chat/fuselage-tokens": "~0.33.2",
"@rocket.chat/icons": "~0.45.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/ui-composer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"@react-aria/toolbar": "^3.0.0-nightly.5042",
"@rocket.chat/emitter": "~0.31.25",
"@rocket.chat/eslint-config": "workspace:^",
"@rocket.chat/fuselage": "~0.68.1",
"@rocket.chat/fuselage": "^0.69.0",
"@rocket.chat/fuselage-hooks": "~0.38.1",
"@rocket.chat/fuselage-tokens": "~0.33.2",
"@rocket.chat/icons": "~0.45.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/ui-contexts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"@rocket.chat/core-typings": "workspace:^",
"@rocket.chat/ddp-client": "workspace:~",
"@rocket.chat/emitter": "~0.31.25",
"@rocket.chat/fuselage": "~0.68.1",
"@rocket.chat/fuselage": "^0.69.0",
"@rocket.chat/fuselage-hooks": "~0.38.1",
"@rocket.chat/fuselage-tokens": "~0.33.2",
"@rocket.chat/i18n": "workspace:~",
Expand Down
2 changes: 1 addition & 1 deletion packages/ui-video-conf/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"devDependencies": {
"@rocket.chat/css-in-js": "~0.31.25",
"@rocket.chat/eslint-config": "workspace:^",
"@rocket.chat/fuselage": "~0.68.1",
"@rocket.chat/fuselage": "^0.69.0",
"@rocket.chat/fuselage-hooks": "~0.38.1",
"@rocket.chat/fuselage-tokens": "~0.33.2",
"@rocket.chat/icons": "~0.45.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/ui-voip/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
"@react-spectrum/test-utils": "~1.0.0-alpha.8",
"@rocket.chat/css-in-js": "~0.31.25",
"@rocket.chat/eslint-config": "workspace:^",
"@rocket.chat/fuselage": "~0.68.1",
"@rocket.chat/fuselage": "^0.69.0",
"@rocket.chat/fuselage-hooks": "~0.38.1",
"@rocket.chat/fuselage-tokens": "~0.33.2",
"@rocket.chat/icons": "~0.45.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/web-ui-registration/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"@rocket.chat/core-typings": "workspace:~",
"@rocket.chat/css-in-js": "~0.31.25",
"@rocket.chat/emitter": "~0.31.25",
"@rocket.chat/fuselage": "~0.68.1",
"@rocket.chat/fuselage": "^0.69.0",
"@rocket.chat/fuselage-hooks": "~0.38.1",
"@rocket.chat/fuselage-tokens": "~0.33.2",
"@rocket.chat/i18n": "workspace:~",
Expand Down
Loading
Loading