feat: improve layout of room

This commit is contained in:
Jeremy Kahn 2022-08-26 09:39:01 -05:00
parent 4584e0f42f
commit fd9998fc2c
4 changed files with 28 additions and 6 deletions

11
package-lock.json generated
View File

@ -20,6 +20,7 @@
"@types/node": "^18.6.5", "@types/node": "^18.6.5",
"@types/react": "^18.0.17", "@types/react": "^18.0.17",
"@types/react-dom": "^18.0.6", "@types/react-dom": "^18.0.6",
"classnames": "^2.3.1",
"fast-memoize": "^2.5.2", "fast-memoize": "^2.5.2",
"localforage": "^1.10.0", "localforage": "^1.10.0",
"react": "^18.2.0", "react": "^18.2.0",
@ -7753,6 +7754,11 @@
"resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz",
"integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw=="
}, },
"node_modules/classnames": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
"integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
},
"node_modules/clean-css": { "node_modules/clean-css": {
"version": "5.3.1", "version": "5.3.1",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz",
@ -29134,6 +29140,11 @@
"resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz",
"integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw=="
}, },
"classnames": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
"integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
},
"clean-css": { "clean-css": {
"version": "5.3.1", "version": "5.3.1",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz",

View File

@ -16,6 +16,7 @@
"@types/node": "^18.6.5", "@types/node": "^18.6.5",
"@types/react": "^18.0.17", "@types/react": "^18.0.17",
"@types/react-dom": "^18.0.6", "@types/react-dom": "^18.0.6",
"classnames": "^2.3.1",
"fast-memoize": "^2.5.2", "fast-memoize": "^2.5.2",
"localforage": "^1.10.0", "localforage": "^1.10.0",
"react": "^18.2.0", "react": "^18.2.0",

View File

@ -1,14 +1,21 @@
import { HTMLAttributes } from 'react'
import cx from 'classnames'
import { Message as IMessage } from 'models/chat' import { Message as IMessage } from 'models/chat'
import { Message } from 'components/Message' import { Message } from 'components/Message'
export interface ChatTranscriptProps { export interface ChatTranscriptProps extends HTMLAttributes<HTMLDivElement> {
messageLog: Array<IMessage> messageLog: Array<IMessage>
userId: string userId: string
} }
export const ChatTranscript = ({ messageLog, userId }: ChatTranscriptProps) => { export const ChatTranscript = ({
className,
messageLog,
userId,
}: ChatTranscriptProps) => {
return ( return (
<div className="ChatTranscript flex flex-col"> <div className={cx('ChatTranscript flex flex-col', className)}>
{messageLog.map(message => { {messageLog.map(message => {
return <Message key={message.id} message={message} userId={userId} /> return <Message key={message.id} message={message} userId={userId} />
})} })}

View File

@ -75,9 +75,13 @@ export function Room({
}) })
return ( return (
<div className="p-4"> <div className="h-full p-4 flex flex-col">
<Typography>Room ID: {roomId}</Typography> <Typography>Room ID: {roomId}</Typography>
<Typography>Open this page in another tab.</Typography> <ChatTranscript
messageLog={messageLog}
userId={userId}
className="grow overflow-auto"
/>
<form onSubmit={handleMessageSubmit} className="max-w-xl mt-8"> <form onSubmit={handleMessageSubmit} className="max-w-xl mt-8">
<FormControl fullWidth> <FormControl fullWidth>
<TextField <TextField
@ -99,7 +103,6 @@ export function Room({
Send Send
</Button> </Button>
</form> </form>
<ChatTranscript messageLog={messageLog} userId={userId} />
</div> </div>
) )
} }