Files
ColdBreeze-chat-web/src/routes/users/Search.tsx
T
2023-05-15 08:53:12 +08:00

38 lines
1.7 KiB
TypeScript

import { FC, ChangeEvent } from "react";
import Tippy from "@tippyjs/react";
import IconSearch from "../../assets/icons/search.svg";
import IconAdd from "../../assets/icons/add.svg";
import { useTranslation } from "react-i18next";
import { useAppSelector } from "../../app/store";
import { compareVersion } from "../../common/utils";
import Tooltip from "../../common/component/Tooltip";
import AddEntriesMenu from "../../common/component/AddEntriesMenu";
type Props = {
input: string,
openModal: () => void,
updateInput: (input: string) => void
};
const Search: FC<Props> = ({ input, updateInput, openModal }) => {
const serverVersion = useAppSelector(store => store.server.version);
const { t } = useTranslation();
const handleInput = (evt: ChangeEvent<HTMLInputElement>) => {
updateInput(evt.target.value);
};
const enableContact = compareVersion(serverVersion, "0.3.7") >= 0;
return (
<div className="hidden md:flex relative min-h-[56px] px-2 py-3 items-center justify-between gap-2 shadow-[rgb(0_0_0_/_10%)_0px_1px_0px] dark:border-b-gray-500">
<div className="flex items-center gap-1">
<IconSearch className="dark:fill-gray-400 w-6 h-6 shrink-0" />
<input value={input} placeholder={`${t("action.search")}...`} className="w-full text-sm bg-transparent dark:text-gray-50 outline-none" onChange={handleInput} />
</div>
{enableContact ? <IconAdd onClick={openModal} role="button" className="dark:fill-gray-400" /> : <Tooltip tip={t("more")} placement="bottom">
<Tippy interactive placement="bottom-end" trigger="click" content={<AddEntriesMenu />}>
<IconAdd role="button" className="dark:fill-gray-400" />
</Tippy>
</Tooltip>}
</div>
);
};
export default Search;