stream-chat-react
Version:
React components to create chat conversations or livestream style chat
25 lines (24 loc) • 1.26 kB
JavaScript
import React from 'react';
import clsx from 'clsx';
import { Avatar as DefaultAvatar } from '../../Avatar';
/**
* UI component for mentions rendered in suggestion list
*/
export const UserItem = ({ Avatar = DefaultAvatar, entity }) => {
const hasEntity = !!Object.keys(entity).length;
if (!hasEntity)
return null;
const { parts, token } = entity.tokenizedDisplayName;
const renderName = () => parts.map((part, i) => {
const matches = part.toLowerCase() === token;
const partWithHTMLSpacesAround = part.replace(/^\s+|\s+$/g, '\u00A0');
return (React.createElement("span", { className: clsx({
'str-chat__emoji-item--highlight': matches,
'str-chat__emoji-item--part': !matches,
}), key: `part-${i}` }, partWithHTMLSpacesAround));
});
return (React.createElement("div", { className: 'str-chat__user-item' },
React.createElement(Avatar, { className: 'str-chat__avatar--autocomplete-item', image: entity.image, name: entity.name || entity.id }),
React.createElement("span", { className: 'str-chat__user-item--name', "data-testid": 'user-item-name' }, renderName()),
React.createElement("div", { className: 'str-chat__user-item-at' }, "@")));
};