drawDB/src/components/EditorSidePanel/EnumsTab/SearchBar.jsx
2024-06-30 13:19:21 +03:00

42 lines
1.1 KiB
JavaScript

import { useState } from "react";
import { AutoComplete } from "@douyinfe/semi-ui";
import { IconSearch } from "@douyinfe/semi-icons";
import { useEnums } from "../../../hooks";
import { useTranslation } from "react-i18next";
export default function SearchBar() {
const { enums } = useEnums();
const [value, setValue] = useState("");
const { t } = useTranslation();
const [filteredResult, setFilteredResult] = useState(
enums.map((e) => e.name),
);
const handleStringSearch = (value) => {
setFilteredResult(
enums.map((e) => e.name).filter((i) => i.includes(value)),
);
};
return (
<AutoComplete
data={filteredResult}
value={value}
showClear
prefix={<IconSearch />}
placeholder={t("search")}
onSearch={(v) => handleStringSearch(v)}
emptyContent={<div className="p-3 popover-theme">{t("not_found")}</div>}
onChange={(v) => setValue(v)}
onSelect={(v) => {
const i = enums.findIndex((t) => t.name === v);
document
.getElementById(`scroll_enum_${i}`)
.scrollIntoView({ behavior: "smooth" });
}}
className="w-full"
/>
);
}