Added stroke colours.

This commit is contained in:
Bash Elliott 2023-01-20 11:21:15 +11:00
parent 06e2b0a003
commit c40ab4f703
3 changed files with 22 additions and 10 deletions

View file

@ -11,7 +11,8 @@ import React from 'react'
function App() { function App() {
const [messages, addMessage] = useMessages([]) const [messages, addMessage] = useMessages([])
const [newMessage, setNewMessage] = useState('') const [newMessage, setNewMessage] = useState('')
const [colour, setColour] = useState('#f00') const [fillColour, setFillColour] = useState('#eee')
const [strokeColour, setStrokeColour] = useState('#000')
const handleSubmit = useCallback( const handleSubmit = useCallback(
bubbleHeight => { bubbleHeight => {
@ -27,8 +28,13 @@ function App() {
[newMessage, messages] [newMessage, messages]
) )
const handleColourChange = (color) => { const handleFillColourChange = (color) => {
setColour(color.hex); setFillColour(color.hex);
console.log(color);
};
const handleStrokeColourChange = (color) => {
setStrokeColour(color.hex);
console.log(color); console.log(color);
}; };
@ -40,7 +46,7 @@ function App() {
<Chat> <Chat>
<AnimatePresence> <AnimatePresence>
{messages.map(m => ( {messages.map(m => (
<Bubble key={m.id} id={m.id} dy={dy} colourClass={colour}> <Bubble key={m.id} id={m.id} dy={dy} fillColour={fillColour} strokeColour={strokeColour}>
{m.text} {m.text}
</Bubble> </Bubble>
))} ))}
@ -49,11 +55,17 @@ function App() {
value={newMessage} value={newMessage}
onChange={setNewMessage} onChange={setNewMessage}
onSubmit={handleSubmit} onSubmit={handleSubmit}
colourClass={colour} fillColour={fillColour}
strokeColour={strokeColour}
/> />
</Chat> </Chat>
<SketchPicker className="picker" color={colour} onChange={handleColourChange}/> <div className="picker">
<p>Fill</p>
<SketchPicker color={fillColour} onChange={handleFillColourChange}/>
<p>Stroke</p>
<SketchPicker color={strokeColour} onChange={handleStrokeColourChange}/>
</div>
</div> </div>
) )
} }

View file

@ -1,7 +1,7 @@
import React, { useCallback, useState, useRef, useEffect } from 'react' import React, { useCallback, useState, useRef, useEffect } from 'react'
import './bubble-input.css' import './bubble-input.css'
const BubbleInput = ({ onChange, onSubmit, value, colourClass }) => { const BubbleInput = ({ onChange, onSubmit, value, fillColour, strokeColour }) => {
const refEditable = useRef() const refEditable = useRef()
const refContainer = useRef() const refContainer = useRef()
const [submitted, setSubmitted] = useState(false) const [submitted, setSubmitted] = useState(false)
@ -42,7 +42,7 @@ const BubbleInput = ({ onChange, onSubmit, value, colourClass }) => {
ref={refEditable} ref={refEditable}
className="bubble-content" className="bubble-content"
contentEditable contentEditable
style={{backgroundColor: colourClass}} style={{backgroundColor: fillColour, color: strokeColour}}
spellCheck="false" spellCheck="false"
onBlur={handleBlur} onBlur={handleBlur}
onKeyDown={handleKeyDown} onKeyDown={handleKeyDown}

View file

@ -11,7 +11,7 @@ const transition = {
} }
} }
const Bubble = ({ id, children, sender, dy, colourClass }) => { const Bubble = ({ id, children, sender, dy, fillColour, strokeColour }) => {
const [isPresent, safeToRemove] = usePresence() const [isPresent, safeToRemove] = usePresence()
const animations = { const animations = {
@ -32,7 +32,7 @@ const Bubble = ({ id, children, sender, dy, colourClass }) => {
return ( return (
<motion.div key={id} className="bubble" {...animations}> <motion.div key={id} className="bubble" {...animations}>
<div className="bubble-content" style={{backgroundColor: colourClass}}>{children}</div> <div className="bubble-content" style={{backgroundColor: fillColour, color: strokeColour}}>{children}</div>
</motion.div> </motion.div>
) )
} }