mirror of https://github.com/usememos/memos
chore: remove memo filter
parent
f33571fec6
commit
076aa2f8aa
@ -1,75 +0,0 @@
|
|||||||
import clsx from "clsx";
|
|
||||||
import { useEffect } from "react";
|
|
||||||
import { useLocation } from "react-router-dom";
|
|
||||||
import { useFilterStore } from "@/store/module";
|
|
||||||
import { useTranslate } from "@/utils/i18n";
|
|
||||||
import Icon from "./Icon";
|
|
||||||
|
|
||||||
interface Props {
|
|
||||||
className?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
const MemoFilter = (props: Props) => {
|
|
||||||
const t = useTranslate();
|
|
||||||
const location = useLocation();
|
|
||||||
const filterStore = useFilterStore();
|
|
||||||
const filter = filterStore.state;
|
|
||||||
const showFilter = Boolean(filter.tag || filter.text || filter.visibility);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
filterStore.clearFilter();
|
|
||||||
}, [location]);
|
|
||||||
|
|
||||||
if (!showFilter) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div
|
|
||||||
className={clsx(
|
|
||||||
`w-full flex flex-row justify-start items-start flex-wrap gap-2 text-sm leading-7 dark:text-gray-400`,
|
|
||||||
props.className,
|
|
||||||
)}
|
|
||||||
>
|
|
||||||
<div className="shrink-0 flex flex-row justify-start items-center text-gray-400">
|
|
||||||
<Icon.Filter className="w-4 h-auto mr-1" />
|
|
||||||
<span>{t("common.filter")}:</span>
|
|
||||||
</div>
|
|
||||||
{filter.tag && (
|
|
||||||
<div
|
|
||||||
className="max-w-xs flex flex-row justify-start items-center px-2 cursor-pointer dark:text-gray-400 bg-gray-200 dark:bg-zinc-800 rounded whitespace-nowrap truncate hover:line-through"
|
|
||||||
onClick={() => {
|
|
||||||
filterStore.setTagFilter(undefined);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Icon.Hash className="w-4 h-auto mr-1 text-gray-500 dark:text-gray-400" /> {filter.tag}
|
|
||||||
<Icon.X className="w-4 h-auto ml-1 opacity-40" />
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
{filter.visibility && (
|
|
||||||
<div
|
|
||||||
className="max-w-xs flex flex-row justify-start items-center px-2 cursor-pointer dark:text-gray-400 bg-gray-200 dark:bg-zinc-800 rounded whitespace-nowrap truncate hover:line-through"
|
|
||||||
onClick={() => {
|
|
||||||
filterStore.setMemoVisibilityFilter(undefined);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Icon.Eye className="w-4 h-auto mr-1 text-gray-500 dark:text-gray-400" /> {filter.visibility}
|
|
||||||
<Icon.X className="w-4 h-auto ml-1 opacity-40" />
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
{filter.text && (
|
|
||||||
<div
|
|
||||||
className="max-w-xs flex flex-row justify-start items-center px-2 cursor-pointer dark:text-gray-400 bg-gray-200 dark:bg-zinc-800 rounded whitespace-nowrap truncate hover:line-through"
|
|
||||||
onClick={() => {
|
|
||||||
filterStore.setTextFilter(undefined);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Icon.Search className="w-4 h-auto mr-1 text-gray-500 dark:text-gray-400" /> {filter.text}
|
|
||||||
<Icon.X className="w-4 h-auto ml-1 opacity-40" />
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default MemoFilter;
|
|
Loading…
Reference in New Issue