Commit 8d5fd312 authored by timel's avatar timel

feat: filter and order2

parent f27a8f3f
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
.select-btns { .select-btns {
padding: 5px; padding: 5px;
display: flex; display: flex;
gap: 4px;
} }
} }
} }
...@@ -103,6 +104,7 @@ ...@@ -103,6 +104,7 @@
aspect-ratio: var(--card-ratio); aspect-ratio: var(--card-ratio);
position: relative; position: relative;
background-size: contain; background-size: contain;
content-visibility: auto;
.cardname { .cardname {
font-size: 12px; font-size: 12px;
position: absolute; position: absolute;
......
...@@ -45,6 +45,7 @@ import { editDeckStore } from "./editDeckStore"; ...@@ -45,6 +45,7 @@ import { editDeckStore } from "./editDeckStore";
import { Filter } from "./Filter"; import { Filter } from "./Filter";
import styles from "./index.module.scss"; import styles from "./index.module.scss";
import { editingDeckToIDeck, iDeckToEditingDeck, type Type } from "./utils"; import { editingDeckToIDeck, iDeckToEditingDeck, type Type } from "./utils";
import { isEqual } from "lodash-es";
const theme: ThemeConfig = { const theme: ThemeConfig = {
components: { components: {
...@@ -206,14 +207,17 @@ const DeckEditor: React.FC<{ ...@@ -206,14 +207,17 @@ const DeckEditor: React.FC<{
const Search: React.FC = () => { const Search: React.FC = () => {
const { modal } = App.useApp(); const { modal } = App.useApp();
const [searchWord, setSearchWord] = useState(""); const [searchWord, setSearchWord] = useState("");
const [searchConditions, setSearchConditions] = useState<FtsConditions>({ const emptySearchConditions: FtsConditions = {
atk: { min: null, max: null }, atk: { min: null, max: null },
def: { min: null, max: null }, def: { min: null, max: null },
levels: [], levels: [],
races: [], races: [],
attributes: [], attributes: [],
types: [], types: [],
}); };
const [searchConditions, setSearchConditions] = useState<FtsConditions>(
emptySearchConditions
);
const [searchResult, setSearchResult] = useState<CardMeta[]>([]); const [searchResult, setSearchResult] = useState<CardMeta[]>([]);
const sortRef = useRef<(a: CardMeta, b: CardMeta) => number>( const sortRef = useRef<(a: CardMeta, b: CardMeta) => number>(
...@@ -280,7 +284,7 @@ const Search: React.FC = () => { ...@@ -280,7 +284,7 @@ const Search: React.FC = () => {
onConfirm={(newConditions) => { onConfirm={(newConditions) => {
setSearchConditions(newConditions); setSearchConditions(newConditions);
destroy(); destroy();
setTimeout(handleSearch, 50); // 先收起再搜索 setTimeout(handleSearch, 200); // 先收起再搜索
}} }}
onCancel={() => destroy()} onCancel={() => destroy()}
/> />
...@@ -311,13 +315,15 @@ const Search: React.FC = () => { ...@@ -311,13 +315,15 @@ const Search: React.FC = () => {
<div className={styles["select-btns"]}> <div className={styles["select-btns"]}>
<Button <Button
block block
type="text" type={
isEqual(emptySearchConditions, searchConditions)
? "text"
: "primary"
}
icon={<FilterOutlined />} icon={<FilterOutlined />}
onClick={showFilterModal} onClick={showFilterModal}
> >
筛选 筛选
{/* TODO: 下面这个Badge应根据有无筛选规则而显示 */}
{false && <Badge dot offset={[5, -5]} />}
</Button> </Button>
<Dropdown <Dropdown
menu={{ items: dropdownOptions }} menu={{ items: dropdownOptions }}
...@@ -332,10 +338,14 @@ const Search: React.FC = () => { ...@@ -332,10 +338,14 @@ const Search: React.FC = () => {
({searchResult.length}) ({searchResult.length})
</span> </span>
</span> </span>
{false && <Badge dot offset={[5, -5]} />}
</Button> </Button>
</Dropdown> </Dropdown>
<Button block type="text" icon={<DeleteOutlined />}> <Button
block
type="text"
icon={<DeleteOutlined />}
onClick={() => setSearchConditions(emptySearchConditions)}
>
重置 重置
</Button> </Button>
</div> </div>
...@@ -441,7 +451,7 @@ const Card: React.FC<{ ...@@ -441,7 +451,7 @@ const Card: React.FC<{
const [{ isDragging }, drag] = useDrag({ const [{ isDragging }, drag] = useDrag({
type: "Card", type: "Card",
item: { value, source }, item: { value, source },
collect: (monitor: any) => ({ collect: (monitor) => ({
isDragging: monitor.isDragging(), isDragging: monitor.isDragging(),
}), }),
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment