diff --git a/package.json b/package.json index 7e7f8e97..14e09b75 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,8 @@ "@types/node": "^18.11.18", "@types/react": "^18.0.26", "@types/react-dom": "^18.0.10", + "@types/webscopeio__react-textarea-autocomplete": "^4.7.2", + "@webscopeio/react-textarea-autocomplete": "^4.9.2", "bech32": "^2.0.0", "light-bolt11-decoder": "^2.1.0", "qr-code-styling": "^1.6.0-rc.1", diff --git a/src/element/NoteCreator.css b/src/element/NoteCreator.css index 2a3205a1..04d3c578 100644 --- a/src/element/NoteCreator.css +++ b/src/element/NoteCreator.css @@ -2,14 +2,11 @@ margin-bottom: 10px; background-color: var(--gray); border-radius: 10px; - overflow: hidden; } .note-creator textarea { - resize: none; outline: none; min-height: 40px; - max-height: 300px; border-radius: 10px 10px 0 0; max-width: -webkit-fill-available; max-width: -moz-available; @@ -18,6 +15,11 @@ min-width: -webkit-fill-available; min-width: -moz-available; min-width: fill-available; + transition: min-height .5s; +} + +.note-creator .textarea--focused { + min-height: 120px; } .note-creator .actions { diff --git a/src/element/NoteCreator.js b/src/element/NoteCreator.js index 96582369..cbd68e3b 100644 --- a/src/element/NoteCreator.js +++ b/src/element/NoteCreator.js @@ -1,11 +1,15 @@ -import "./NoteCreator.css"; -import { useState } from "react"; -import useEventPublisher from "../feed/EventPublisher"; +import { useState, Component } from "react"; +import { useSelector } from "react-redux"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faPaperclip } from "@fortawesome/free-solid-svg-icons"; + +import "./NoteCreator.css"; + +import useEventPublisher from "../feed/EventPublisher"; import { openFile } from "../Util"; import VoidUpload from "../feed/VoidUpload"; import { FileExtensionRegex } from "../Const"; +import Textarea from "../element/Textarea"; export function NoteCreator(props) { const replyTo = props.replyTo; @@ -15,15 +19,14 @@ export function NoteCreator(props) { const [note, setNote] = useState(""); const [error, setError] = useState(""); const [active, setActive] = useState(false); + const users = useSelector((state) => state.users.users) async function sendNote() { - let ev = replyTo ? - await publisher.reply(replyTo, note) - : await publisher.note(note); - + let ev = replyTo ? await publisher.reply(replyTo, note) : await publisher.note(note); console.debug("Sending note: ", ev); publisher.broadcast(ev); setNote(""); + setActive(false); if (typeof onSend === "function") { onSend(); } @@ -44,20 +47,35 @@ export function NoteCreator(props) { } } + function onChange(ev) { + const { value } = ev.target + if (value) { + setNote(value) + setActive(true) + } else { + setActive(false) + } + } + if (!show) return false; return ( <> {replyTo ? {`Reply to: ${replyTo.Id.substring(0, 8)}`} : null} -
setActive(true)}> -
-