File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed
frontend/src/components/QnFilter Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change
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
+ } ;
You can’t perform that action at this time.
0 commit comments