diff --git a/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx index a0f0283d..6f459ee3 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx @@ -17,7 +17,7 @@ import { getDefaultGroupName, isFreeModel, runAsyncFunction } from '@renderer/ut import { Avatar, Button, Empty, Flex, Modal, Popover, Radio, Tooltip } from 'antd' import Search from 'antd/es/input/Search' import { groupBy, isEmpty, uniqBy } from 'lodash' -import { useEffect, useState } from 'react' +import { useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' @@ -44,6 +44,7 @@ const PopupContainer: React.FC = ({ provider: _provider, resolve }) => { const [searchText, setSearchText] = useState('') const [filterType, setFilterType] = useState('all') const { t, i18n } = useTranslation() + const searchInputRef = useRef(null) const systemModels = SYSTEM_MODELS[_provider.id] || [] const allModels = uniqBy([...systemModels, ...listModels, ...models], 'id') @@ -127,6 +128,14 @@ const PopupContainer: React.FC = ({ provider: _provider, resolve }) => { // eslint-disable-next-line react-hooks/exhaustive-deps }, []) + useEffect(() => { + if (open && searchInputRef.current) { + setTimeout(() => { + searchInputRef.current?.focus() + }, 100) + } + }, [open]) + const ModalHeader = () => { return ( @@ -167,6 +176,7 @@ const PopupContainer: React.FC = ({ provider: _provider, resolve }) => { setSearchText(e.target.value)}