Skip to content

Commit

Permalink
Merge pull request #248 from rebeccaalpert/list-message
Browse files Browse the repository at this point in the history
feat(ListMessage): Add component to render lists appropriately
  • Loading branch information
nicolethoen authored Nov 4, 2024
2 parents cfed82e + 9e35f65 commit 11b24c5
Show file tree
Hide file tree
Showing 8 changed files with 122 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,21 @@ export default MessageLoading;
~~~
`;

const orderedList = `
Here is an ordered list:
1. Item 1
2. Item 2
3. Item 3`;

const unorderedList = `
Here is an unordered list:
* Item 1
* Item 2
* Item 3`;

return (
<>
<Message
Expand All @@ -43,6 +58,8 @@ export default MessageLoading;
timestamp="1 hour ago"
/>
<Message name="Bot" role="bot" avatar={patternflyAvatar} content={markdown} />
<Message name="Bot" role="bot" avatar={patternflyAvatar} content={orderedList} />
<Message name="Bot" role="bot" avatar={patternflyAvatar} content={unorderedList} />
<Message name="Bot" role="bot" avatar={patternflyAvatar} content="Example content" isLoading />
</>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,19 @@ export const AttachmentMenuExample: React.FunctionComponent = () => {
> A block quote with ~strikethrough~ and a URL: https://reactjs.org.
Here is an inline code - \`() => void\``;
Here is an inline code - \`() => void\`
Here is an ordered list:
1. Item 1
2. Item 3
3. Item 4
Here is an unordered list:
* Item 1
* Item 2
* Item 3`;

return (
<>
Expand Down
11 changes: 11 additions & 0 deletions packages/module/src/Message/ListMessage/ListItemMessage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// ============================================================================
// Chatbot Main - Message - Content - List
// ============================================================================

import React from 'react';
import { ExtraProps } from 'react-markdown';
import { ListItem } from '@patternfly/react-core';

const ListItemMessage = ({ children }: JSX.IntrinsicElements['li'] & ExtraProps) => <ListItem>{children}</ListItem>;

export default ListItemMessage;
25 changes: 25 additions & 0 deletions packages/module/src/Message/ListMessage/ListMessage.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// ============================================================================
// Chatbot Main - Message - Content - Text
// ============================================================================

.pf-chatbot__message-ordered-list,
.pf-chatbot__message-unordered-list {
width: fit-content;
padding: var(--pf-t--chatbot-message--type--padding) 0 var(--pf-t--chatbot-message--type--padding) 0;
border-radius: var(--pf-t--chatbot-message--type--border--radius);

.pf-v6-c-list,
ul,
li {
font-size: var(--pf-t--chatbot--font-size);
}
}

.pf-chatbot__message--user {
.pf-chatbot__message-ordered-list,
.pf-chatbot__message-unordered-list {
background-color: var(--pf-t--chatbot-message--type--background--color--primary);
color: var(--pf-t--chatbot-message--type--text--color--primary);
padding: var(--pf-t--chatbot-message--type--padding);
}
}
17 changes: 17 additions & 0 deletions packages/module/src/Message/ListMessage/OrderedListMessage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// ============================================================================
// Chatbot Main - Message - Content - List
// ============================================================================

import React from 'react';
import { ExtraProps } from 'react-markdown';
import { List, ListComponent, OrderType } from '@patternfly/react-core';

const OrderedListMessage = ({ children }: JSX.IntrinsicElements['ol'] & ExtraProps) => (
<div className="pf-chatbot__message-ordered-list">
<List component={ListComponent.ol} type={OrderType.number}>
{children}
</List>
</div>
);

export default OrderedListMessage;
15 changes: 15 additions & 0 deletions packages/module/src/Message/ListMessage/UnorderedListMessage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// ============================================================================
// Chatbot Main - Message - Content - List
// ============================================================================

import React from 'react';
import { ExtraProps } from 'react-markdown';
import { List } from '@patternfly/react-core';

const UnorderedListMessage = ({ children }: JSX.IntrinsicElements['ul'] & ExtraProps) => (
<div className="pf-chatbot__message-unordered-list">
<List>{children}</List>
</div>
);

export default UnorderedListMessage;
14 changes: 13 additions & 1 deletion packages/module/src/Message/Message.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ import TextMessage from './TextMessage/TextMessage';
import FileDetailsLabel from '../FileDetailsLabel/FileDetailsLabel';
import ResponseActions, { ActionProps } from '../ResponseActions/ResponseActions';
import SourcesCard, { SourcesCardProps } from '../SourcesCard';
import ListItemMessage from './ListMessage/ListItemMessage';
import UnorderedListMessage from './ListMessage/UnorderedListMessage';
import OrderedListMessage from './ListMessage/OrderedListMessage';

export interface MessageProps extends Omit<React.HTMLProps<HTMLDivElement>, 'role'> {
/** Unique id for message */
Expand Down Expand Up @@ -114,7 +117,16 @@ export const Message: React.FunctionComponent<MessageProps> = ({
{isLoading ? (
<MessageLoading loadingWord={loadingWord} />
) : (
<Markdown components={{ p: TextMessage, code: CodeBlockMessage }} remarkPlugins={[remarkGfm]}>
<Markdown
components={{
p: TextMessage,
code: CodeBlockMessage,
ul: UnorderedListMessage,
ol: OrderedListMessage,
li: ListItemMessage
}}
remarkPlugins={[remarkGfm]}
>
{content}
</Markdown>
)}
Expand Down
21 changes: 11 additions & 10 deletions packages/module/src/main.scss
Original file line number Diff line number Diff line change
@@ -1,27 +1,28 @@
@import './AttachMenu/AttachMenu';
@import './ChatbotConversationHistoryNav/ChatbotConversationHistoryNav';
@import './Chatbot/Chatbot';
@import './ChatbotToggle/ChatbotToggle';
@import './ChatbotAlert/ChatbotAlert';
@import './ChatbotContent/ChatbotContent';
@import './ChatbotHeader/ChatbotHeader';
@import './ChatbotConversationHistoryNav/ChatbotConversationHistoryNav';
@import './ChatbotFooter/ChatbotFooter';
@import './ChatbotHeader/ChatbotHeader';
@import './ChatbotPopover/ChatbotPopover';
@import './ChatbotToggle/ChatbotToggle';
@import './ChatbotWelcomePrompt/ChatbotWelcomePrompt';
@import './CodeModal/CodeModal';
@import './FileDetails/FileDetails';
@import './FileDetailsLabel/FileDetailsLabel';
@import './FileDropZone/FileDropZone';
@import './MessageBar/MessageBar';
@import './MessageBox/MessageBox';
@import './MessageBox/JumpButton';
@import './Message/Message';
@import './ChatbotPopover/ChatbotPopover';
@import './SourceDetailsMenuItem/SourceDetailsMenuItem';
@import './ResponseActions/ResponseActions';
@import './ChatbotAlert/ChatbotAlert';
@import './Message/CodeBlockMessage/CodeBlockMessage';
@import './Message/TextMessage/TextMessage';
@import './Message/ListMessage/ListMessage';
@import './Message/MessageLoading';
@import './MessageBar/MessageBar';
@import './MessageBox/MessageBox';
@import './MessageBox/JumpButton';
@import './ResponseActions/ResponseActions';
@import './SourcesCard/SourcesCard.scss';
@import './SourceDetailsMenuItem/SourceDetailsMenuItem';

:where(:root) {
// ============================================================================
Expand Down

0 comments on commit 11b24c5

Please sign in to comment.