auto highlight slash command on typing (#743)

This commit is contained in:
Timothy Carambat 2024-02-19 10:32:53 -08:00 committed by GitHub
parent 17c1913ccc
commit 755df4dbba
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 13 additions and 3 deletions

View File

@ -2,7 +2,6 @@ import { CircleNotch, PaperPlaneRight } from "@phosphor-icons/react";
import React, { useState, useRef } from "react"; import React, { useState, useRef } from "react";
export default function PromptInput({ export default function PromptInput({
setttings,
message, message,
submit, submit,
onChange, onChange,

View File

@ -79,7 +79,6 @@ export default function ChatContainer({
<div className="h-full w-full relative"> <div className="h-full w-full relative">
<ChatHistory settings={settings} history={chatHistory} /> <ChatHistory settings={settings} history={chatHistory} />
<PromptInput <PromptInput
settings={settings}
message={message} message={message}
submit={handleSubmit} submit={handleSubmit}
onChange={handleMessageChange} onChange={handleMessageChange}

View File

@ -5,6 +5,7 @@ import SlashCommandsButton, {
useSlashCommands, useSlashCommands,
} from "./SlashCommands"; } from "./SlashCommands";
import { isMobile } from "react-device-detect"; import { isMobile } from "react-device-detect";
import debounce from "lodash.debounce";
export default function PromptInput({ export default function PromptInput({
workspace, workspace,
@ -24,6 +25,13 @@ export default function PromptInput({
submit(e); submit(e);
}; };
const checkForSlash = (e) => {
const input = e.target.value;
if (input === "/") setShowSlashCommand(true);
if (showSlashCommand) setShowSlashCommand(false);
return;
};
const captureEnter = (event) => { const captureEnter = (event) => {
if (event.keyCode == 13) { if (event.keyCode == 13) {
if (!event.shiftKey) { if (!event.shiftKey) {
@ -42,6 +50,7 @@ export default function PromptInput({
: "1px"; : "1px";
}; };
const watchForSlash = debounce(checkForSlash, 300);
return ( return (
<div className="w-full fixed md:absolute bottom-0 left-0 z-10 md:z-0 flex justify-center items-center"> <div className="w-full fixed md:absolute bottom-0 left-0 z-10 md:z-0 flex justify-center items-center">
<SlashCommands <SlashCommands
@ -59,7 +68,10 @@ export default function PromptInput({
<textarea <textarea
onKeyUp={adjustTextArea} onKeyUp={adjustTextArea}
onKeyDown={captureEnter} onKeyDown={captureEnter}
onChange={onChange} onChange={(e) => {
onChange(e);
watchForSlash(e);
}}
required={true} required={true}
disabled={inputDisabled} disabled={inputDisabled}
onFocus={() => setFocused(true)} onFocus={() => setFocused(true)}