Skip to content

Commit 869d47d

Browse files
Adds initial code for filtering of questions
1 parent f16c1bc commit 869d47d

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { Flex, HStack, Input } from "@chakra-ui/react";
2+
import { QnFilter } from "../../models/Quesiton.model";
3+
import React, { useState } from "react";
4+
5+
export interface filterprop extends QnFilter {
6+
onFilterChange?: (filter: QnFilter) => void; // refilters original db
7+
}
8+
9+
export const FilterBar = ({
10+
qnFilter = "",
11+
tagFilter = new Set(),
12+
difficultyFilter = [0, 100],
13+
titleAscd = true,
14+
onFilterChange,
15+
}: filterprop) => {
16+
const [txtFilter, setTextFilter] = useState(qnFilter);
17+
const filterChange = (event: React.FormEvent<HTMLInputElement>) => {
18+
setTextFilter((event.target as HTMLInputElement).value);
19+
const newFilter: QnFilter = {
20+
qnFilter: (event.target as HTMLInputElement).value.toLowerCase().trim(),
21+
tagFilter: tagFilter,
22+
difficultyFilter: difficultyFilter,
23+
titleAscd: titleAscd,
24+
};
25+
26+
if (onFilterChange) onFilterChange(newFilter);
27+
};
28+
return (
29+
<Flex w="80%" px="6" py="4" align={"center"} justify={"space-between"}>
30+
<HStack spacing="1">
31+
<Input
32+
variant="outline"
33+
placeholder={qnFilter || "Find Questions"}
34+
borderRadius="15"
35+
onChange={(ev) => filterChange(ev)}
36+
value={txtFilter}
37+
></Input>
38+
</HStack>
39+
</Flex>
40+
);
41+
};

0 commit comments

Comments
 (0)