mirror of
				https://github.com/ItzCrazyKns/Perplexica.git
				synced 2025-11-04 04:38:15 +00:00 
			
		
		
		
	feat(message-input): focus on / key
				
					
				
			This commit is contained in:
		@@ -1,5 +1,5 @@
 | 
			
		||||
import { ArrowRight } from 'lucide-react';
 | 
			
		||||
import { useState } from 'react';
 | 
			
		||||
import { useEffect, useRef, useState } from 'react';
 | 
			
		||||
import TextareaAutosize from 'react-textarea-autosize';
 | 
			
		||||
import CopilotToggle from './MessageInputActions/Copilot';
 | 
			
		||||
import Focus from './MessageInputActions/Focus';
 | 
			
		||||
@@ -16,6 +16,23 @@ const EmptyChatMessageInput = ({
 | 
			
		||||
  const [copilotEnabled, setCopilotEnabled] = useState(false);
 | 
			
		||||
  const [message, setMessage] = useState('');
 | 
			
		||||
 | 
			
		||||
  const inputRef = useRef<HTMLTextAreaElement | null>(null);
 | 
			
		||||
 | 
			
		||||
  const handleKeyDown = (e: KeyboardEvent) => {
 | 
			
		||||
    if (e.key === '/') {
 | 
			
		||||
      e.preventDefault();
 | 
			
		||||
      inputRef.current?.focus();
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  useEffect(() => {
 | 
			
		||||
    document.addEventListener('keydown', handleKeyDown);
 | 
			
		||||
 | 
			
		||||
    return () => {
 | 
			
		||||
      document.removeEventListener('keydown', handleKeyDown);
 | 
			
		||||
    };
 | 
			
		||||
  }, []);
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <form
 | 
			
		||||
      onSubmit={(e) => {
 | 
			
		||||
@@ -34,6 +51,7 @@ const EmptyChatMessageInput = ({
 | 
			
		||||
    >
 | 
			
		||||
      <div className="flex flex-col bg-light-secondary dark:bg-dark-secondary px-5 pt-5 pb-2 rounded-lg w-full border border-light-200 dark:border-dark-200">
 | 
			
		||||
        <TextareaAutosize
 | 
			
		||||
          ref={inputRef}
 | 
			
		||||
          value={message}
 | 
			
		||||
          onChange={(e) => setMessage(e.target.value)}
 | 
			
		||||
          minRows={2}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
import { cn } from '@/lib/utils';
 | 
			
		||||
import { ArrowUp } from 'lucide-react';
 | 
			
		||||
import { useEffect, useState } from 'react';
 | 
			
		||||
import { useEffect, useRef, useState } from 'react';
 | 
			
		||||
import TextareaAutosize from 'react-textarea-autosize';
 | 
			
		||||
import Attach from './MessageInputActions/Attach';
 | 
			
		||||
import CopilotToggle from './MessageInputActions/Copilot';
 | 
			
		||||
@@ -25,6 +25,23 @@ const MessageInput = ({
 | 
			
		||||
    }
 | 
			
		||||
  }, [textareaRows, mode, message]);
 | 
			
		||||
 | 
			
		||||
  const inputRef = useRef<HTMLTextAreaElement | null>(null);
 | 
			
		||||
 | 
			
		||||
  const handleKeyDown = (e: KeyboardEvent) => {
 | 
			
		||||
    if (e.key === '/') {
 | 
			
		||||
      e.preventDefault();
 | 
			
		||||
      inputRef.current?.focus();
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  useEffect(() => {
 | 
			
		||||
    document.addEventListener('keydown', handleKeyDown);
 | 
			
		||||
 | 
			
		||||
    return () => {
 | 
			
		||||
      document.removeEventListener('keydown', handleKeyDown);
 | 
			
		||||
    };
 | 
			
		||||
  }, []);
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <form
 | 
			
		||||
      onSubmit={(e) => {
 | 
			
		||||
@@ -47,6 +64,7 @@ const MessageInput = ({
 | 
			
		||||
    >
 | 
			
		||||
      {mode === 'single' && <Attach />}
 | 
			
		||||
      <TextareaAutosize
 | 
			
		||||
        ref={inputRef}
 | 
			
		||||
        value={message}
 | 
			
		||||
        onChange={(e) => setMessage(e.target.value)}
 | 
			
		||||
        onHeightChange={(height, props) => {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user