packages/storybook8/stories/Components/MessageThread/CustomizedBlockedMessage/CustomizedBlockedMessage.story.tsx (84 lines of code) (raw):

// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. import { FluentThemeProvider, MessageThread, MessageProps, MessageThreadStyles, MessageRenderer, BlockedMessage } from '@azure/communication-react'; import React from 'react'; import { ArgsFrom } from '../../../controlsUtils'; const storyControls = { textColor: { control: 'text', name: 'Text Color' }, border: { control: 'text', name: 'Border' }, warningMessage: { control: 'text', name: 'Warning Message' }, overrideDefaultMessage: { control: 'text', name: 'Override Default Message' } }; const CustomizedBlockedMessageStory = (args: ArgsFrom<typeof storyControls>): JSX.Element => { const messageThreadStyle: MessageThreadStyles = { blockedMessageContainer: { '& i': { paddingTop: '0.25rem' }, '& p': { color: args.textColor, marginBlock: '0.125rem' }, '& a': { marginBlock: '0.125rem' }, '& svg': { color: args.textColor }, border: args.border } }; const onRenderMessage = (messageProps: MessageProps, defaultOnRender?: MessageRenderer): JSX.Element => { // Add your own logic if (messageProps.message.messageType === 'blocked' && messageProps.message.senderId === 'user3') { return ( <h3>{`Message from ${messageProps.message.senderDisplayName} has been blocked (with custom onRenderMessage)`}</h3> ); } return defaultOnRender ? defaultOnRender(messageProps) : <></>; }; const messages: BlockedMessage[] = [ { messageType: 'blocked', senderId: 'user2', warningText: args.warningMessage, senderDisplayName: 'Robert Tolbert', messageId: Math.random().toString(), createdOn: new Date('2019-04-13T00:00:00.000+08:09'), mine: false, attached: false }, { messageType: 'blocked', senderId: 'user2', warningText: '', linkText: 'This is custom blocked content with hyperlink only (microsoft.com)', link: 'https://microsoft.com', senderDisplayName: 'Robert Tolbert', messageId: Math.random().toString(), createdOn: new Date('2019-04-13T00:00:00.000+08:10'), mine: false, attached: true }, { messageType: 'blocked', senderId: 'user3', senderDisplayName: 'Carole Poland', messageId: Math.random().toString(), createdOn: new Date('2019-04-13T00:00:00.000+08:11'), mine: false, attached: false }, { messageType: 'blocked', senderId: 'user1', senderDisplayName: 'Elliot Woodward', warningText: args.overrideDefaultMessage, messageId: Math.random().toString(), createdOn: new Date('2019-04-13T00:00:00.000+08:11'), mine: true, attached: false } ]; return ( <FluentThemeProvider> <MessageThread userId={'1'} styles={messageThreadStyle} messages={messages} onRenderMessage={onRenderMessage} /> </FluentThemeProvider> ); }; export const CustomizedBlockedMessage = CustomizedBlockedMessageStory.bind({});