Autofocus input when after clicking OpenAI API Key in sidebar. (#324)
* Update Key.tsx Autofocus input after its visible. * Update Key.tsx
This commit is contained in:
parent
c1b7b0e070
commit
863d8d8121
|
@ -1,6 +1,6 @@
|
||||||
import { IconCheck, IconKey, IconX } from '@tabler/icons-react';
|
import { IconCheck, IconKey, IconX } from '@tabler/icons-react';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { FC, KeyboardEvent, useState } from 'react';
|
import { FC, KeyboardEvent, useEffect, useRef, useState } from 'react';
|
||||||
import { SidebarButton } from '../Sidebar/SidebarButton';
|
import { SidebarButton } from '../Sidebar/SidebarButton';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
|
@ -12,6 +12,7 @@ export const Key: FC<Props> = ({ apiKey, onApiKeyChange }) => {
|
||||||
const { t } = useTranslation('sidebar');
|
const { t } = useTranslation('sidebar');
|
||||||
const [isChanging, setIsChanging] = useState(false);
|
const [isChanging, setIsChanging] = useState(false);
|
||||||
const [newKey, setNewKey] = useState(apiKey);
|
const [newKey, setNewKey] = useState(apiKey);
|
||||||
|
const inputRef = useRef<HTMLInputElement>(null);
|
||||||
|
|
||||||
const handleEnterDown = (e: KeyboardEvent<HTMLDivElement>) => {
|
const handleEnterDown = (e: KeyboardEvent<HTMLDivElement>) => {
|
||||||
if (e.key === 'Enter') {
|
if (e.key === 'Enter') {
|
||||||
|
@ -25,11 +26,18 @@ export const Key: FC<Props> = ({ apiKey, onApiKeyChange }) => {
|
||||||
setIsChanging(false);
|
setIsChanging(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (isChanging) {
|
||||||
|
inputRef.current?.focus();
|
||||||
|
}
|
||||||
|
}, [isChanging]);
|
||||||
|
|
||||||
return isChanging ? (
|
return isChanging ? (
|
||||||
<div className="duration:200 flex w-full cursor-pointer items-center rounded-md py-3 px-3 transition-colors hover:bg-gray-500/10">
|
<div className="duration:200 flex w-full cursor-pointer items-center rounded-md py-3 px-3 transition-colors hover:bg-gray-500/10">
|
||||||
<IconKey size={18} />
|
<IconKey size={18} />
|
||||||
|
|
||||||
<input
|
<input
|
||||||
|
ref={inputRef}
|
||||||
className="ml-2 h-[20px] flex-1 overflow-hidden overflow-ellipsis border-b border-neutral-400 bg-transparent pr-1 text-[12.5px] leading-3 text-left text-white outline-none focus:border-neutral-100"
|
className="ml-2 h-[20px] flex-1 overflow-hidden overflow-ellipsis border-b border-neutral-400 bg-transparent pr-1 text-[12.5px] leading-3 text-left text-white outline-none focus:border-neutral-100"
|
||||||
type="password"
|
type="password"
|
||||||
value={newKey}
|
value={newKey}
|
||||||
|
|
Loading…
Reference in New Issue