feat: support Ctrl+Enter post in reply

This commit is contained in:
Shusui MOYATANI
2023-03-07 21:13:44 +09:00
parent e2cb527fcf
commit 410b18d3a2
2 changed files with 15 additions and 4 deletions

View File

@@ -25,7 +25,7 @@ const NotePostForm: Component<NotePostFormProps> = (props) => {
submit(); submit();
}; };
const handleKeyDown: JSX.EventHandler<HTMLFormElement, KeyboardEvent> = (ev) => { const handleKeyDown: JSX.EventHandlerUnion<HTMLTextAreaElement, KeyboardEvent> = (ev) => {
if (ev.key === 'Enter' && (ev.ctrlKey || ev.metaKey)) { if (ev.key === 'Enter' && (ev.ctrlKey || ev.metaKey)) {
submit(); submit();
} }

View File

@@ -18,13 +18,23 @@ const ReplyPostForm: Component<ReplyPostFormProps> = (props: ReplyPostFormProps)
setText(ev.currentTarget.value); setText(ev.currentTarget.value);
}; };
const handleSubmit: JSX.EventHandler<HTMLFormElement, Event> = (ev) => {
ev.preventDefault();
// TODO 投稿完了したかどうかの検知をしたい // TODO 投稿完了したかどうかの検知をしたい
const submit = () => {
props.onPost({ content: text() }); props.onPost({ content: text() });
clearText(); clearText();
}; };
const handleSubmit: JSX.EventHandler<HTMLFormElement, Event> = (ev) => {
ev.preventDefault();
submit();
};
const handleKeyDown: JSX.EventHandler<HTMLTextAreaElement, KeyboardEvent> = (ev) => {
if (ev.key === 'Enter' && (ev.ctrlKey || ev.metaKey)) {
submit();
}
};
const submitDisabled = createMemo(() => text().trim().length === 0); const submitDisabled = createMemo(() => text().trim().length === 0);
return ( return (
@@ -40,6 +50,7 @@ const ReplyPostForm: Component<ReplyPostFormProps> = (props: ReplyPostFormProps)
rows={4} rows={4}
placeholder="返信を投稿" placeholder="返信を投稿"
onInput={handleChangeText} onInput={handleChangeText}
onKeyDown={handleKeyDown}
value={text()} value={text()}
/> />
<div class="flex justify-between"> <div class="flex justify-between">