diff --git a/docs/src/prototypes/chatPane/services/dataMock.ts b/docs/src/prototypes/chatPane/services/dataMock.ts index b00c40604f..32cf13880a 100644 --- a/docs/src/prototypes/chatPane/services/dataMock.ts +++ b/docs/src/prototypes/chatPane/services/dataMock.ts @@ -66,6 +66,7 @@ class ChatMock { timestamp: timestamp.short, timestampLong: timestamp.long, isImportant: random.boolean(), + withAttachment: random.boolean(), } return message diff --git a/docs/src/prototypes/chatPane/services/messageFactoryMock.ts b/docs/src/prototypes/chatPane/services/messageFactoryMock.tsx similarity index 63% rename from docs/src/prototypes/chatPane/services/messageFactoryMock.ts rename to docs/src/prototypes/chatPane/services/messageFactoryMock.tsx index d4a6a8ad00..9efe7077b7 100644 --- a/docs/src/prototypes/chatPane/services/messageFactoryMock.ts +++ b/docs/src/prototypes/chatPane/services/messageFactoryMock.tsx @@ -1,3 +1,5 @@ +import { Attachment, Popup, Button, Menu, popupFocusTrapBehavior } from '@stardust-ui/react' +import * as React from 'react' import * as _ from 'lodash' import { ChatMessageProps } from 'src/components/Chat/ChatMessage' import { DividerProps } from 'src/components/Divider/Divider' @@ -32,7 +34,9 @@ const statusMap: Map = new Map([ function generateChatMsgProps(msg: MessageData, fromUser: UserData): ChatMessage { const { content, mine } = msg const msgProps: ChatMessage = { - content, + content: msg.withAttachment + ? { content: createMessageContentWithAttachments(content) } + : content, mine, tabIndex: 0, timestamp: { content: msg.timestamp, title: msg.timestampLong }, @@ -44,6 +48,56 @@ function generateChatMsgProps(msg: MessageData, fromUser: UserData): ChatMessage return msgProps } +function createMessageContentWithAttachments(content: string) { + const contextMenu = ( + + ) + + const actionPopup = ( + + } + content={{ content: contextMenu }} + /> + ) + + return ( + <> + + {content} Some link + +
+ {_.map(['MeetingNotes.pptx', 'Document.docx'], (fileName, index) => ( + actionPopup} + data-is-focusable={true} + styles={{ + '&:focus': { + outline: '.2rem solid #6264A7', + }, + ...(index === 1 ? { marginLeft: '15px' } : {}), + }} + /> + ))} +
+ + ) +} + function generateDividerProps(props: DividerProps): Divider { const { content, important, type = 'secondary' } = props const dividerProps: Divider = { itemType: ChatItemTypes.divider, content, important, type } diff --git a/docs/src/prototypes/chatPane/services/types.ts b/docs/src/prototypes/chatPane/services/types.ts index b22c30821e..2ec2710266 100644 --- a/docs/src/prototypes/chatPane/services/types.ts +++ b/docs/src/prototypes/chatPane/services/types.ts @@ -19,6 +19,7 @@ export interface MessageData { from: string isImportant: boolean mine: boolean + withAttachment?: boolean } export interface ChatData {