@@ -9,30 +9,30 @@ import {
99import ReactTooltip from 'react-tooltip' ;
1010import { useTable , useFilters , useSortBy } from 'react-table' ;
1111import { FaQuestionCircle , FaLock } from 'react-icons/fa' ;
12+ import {
13+ DefaultColumnFilter ,
14+ SelectDifficultyColumnFilter ,
15+ SelectColumnFilter ,
16+ } from './filters' ;
1217import { Event } from '../Shared/Tracking' ;
1318
14- import questionList from '../../data' ;
19+ import questions from '../../data' ;
1520
1621import './styles.scss' ;
1722
1823const images = require . context ( '../../icons' , true ) ;
1924
20- const sortByObject = { Easy : 0 , Medium : 1 , Hard : 2 } ;
21- questionList . sort (
22- ( a , b ) => sortByObject [ a . difficulty ] - sortByObject [ b . difficulty ] ,
23- ) ;
24-
2525const Table = ( ) => {
2626 const [ checked , setChecked ] = useState (
2727 JSON . parse ( localStorage . getItem ( 'checked' ) ) ||
28- new Array ( questionList . length ) . fill ( false ) ,
28+ new Array ( questions . length ) . fill ( false ) ,
2929 ) ;
3030
3131 useEffect ( ( ) => {
3232 window . localStorage . setItem ( 'checked' , JSON . stringify ( checked ) ) ;
3333 } , [ checked ] ) ;
3434
35- const data = React . useMemo ( ( ) => questionList , [ ] ) ;
35+ const data = React . useMemo ( ( ) => questions , [ ] ) ;
3636
3737 const defaultColumn = React . useMemo (
3838 ( ) => ( {
@@ -73,8 +73,8 @@ const Table = () => {
7373 return (
7474 < span >
7575 { cellInfo . row . original . premium ? (
76- < span data-tip = "Requires leetcode premium" >
77- < FaLock /> { ' ' }
76+ < span data-tip = "Requires leetcode premium to view " >
77+ < FaLock />
7878 </ span >
7979 ) : (
8080 ''
@@ -123,7 +123,7 @@ const Table = () => {
123123 { cellInfo . row . original . difficulty }
124124 </ Badge >
125125 ) ,
126- Filter : SelectColumnFilter ,
126+ Filter : SelectDifficultyColumnFilter ,
127127 } ,
128128 {
129129 Header : ( ) => {
@@ -152,7 +152,7 @@ const Table = () => {
152152
153153 return < Row className = "companies" > { companies } </ Row > ;
154154 } ,
155- disableFilters : true ,
155+ Filter : SelectColumnFilter ,
156156 } ,
157157 ] ,
158158 } ,
@@ -161,56 +161,6 @@ const Table = () => {
161161 [ ] ,
162162 ) ;
163163
164- function DefaultColumnFilter ( {
165- column : { filterValue, preFilteredRows, setFilter } ,
166- } ) {
167- const count = preFilteredRows . length ;
168-
169- return (
170- < input
171- value = { filterValue || '' }
172- onChange = { e => {
173- setFilter ( e . target . value || undefined ) ; // Set undefined to remove the filter entirely
174- } }
175- placeholder = { `Search ${ count } questions...` }
176- />
177- ) ;
178- }
179-
180- function SelectColumnFilter ( {
181- column : { filterValue, setFilter, preFilteredRows, id } ,
182- } ) {
183- const options = React . useMemo ( ( ) => {
184- const options = new Set ( ) ;
185-
186- preFilteredRows . forEach ( row => {
187- options . add ( row . values [ id ] ) ;
188- } ) ;
189-
190- if ( id === 'difficulty' ) {
191- return [ ...options . values ( ) ] ;
192- }
193-
194- return [ ...options . values ( ) ] . sort ( ) ;
195- } , [ id , preFilteredRows ] ) ;
196-
197- return (
198- < select
199- value = { filterValue }
200- onChange = { e => {
201- setFilter ( e . target . value || undefined ) ;
202- } }
203- >
204- < option value = "" > All</ option >
205- { options . map ( ( option , i ) => (
206- < option key = { i } value = { option } >
207- { option }
208- </ option >
209- ) ) }
210- </ select >
211- ) ;
212- }
213-
214164 const {
215165 getTableProps,
216166 getTableBodyProps,
@@ -233,10 +183,10 @@ const Table = () => {
233183 return (
234184 < Container className = "table" >
235185 < ReactTooltip />
236- < ReactTable align = "center" borderless striped hover { ...getTableProps ( ) } >
186+ < ReactTable borderless striped hover { ...getTableProps ( ) } >
237187 < thead >
238188 { headerGroups . map ( headerGroup => (
239- < tr className = "sticky" { ...headerGroup . getHeaderGroupProps ( ) } >
189+ < tr { ...headerGroup . getHeaderGroupProps ( ) } >
240190 { headerGroup . headers . map ( column => (
241191 < th { ...column . getHeaderProps ( ) } >
242192 { column . render ( 'Header' ) }
0 commit comments