@@ -33,6 +33,8 @@ const SearchFilters: React.FC<SearchFiltersProps> = ({ onFilterChange }) => {
3333 const [ selectedPeople , setSelectedPeople ] = useState < SelectOption [ ] > ( [ ] ) ;
3434 const [ selectedRating , setSelectedRating ] = useState < string > ( '' ) ;
3535 const [ isUnreviewed , setIsUnreviewed ] = useState < boolean > ( false ) ;
36+ const [ sortBy , setSortBy ] = useState < string > ( '' ) ;
37+ const [ sortOrder , setSortOrder ] = useState < string > ( 'DESC' ) ;
3638 const [ loading , setLoading ] = useState ( true ) ;
3739
3840 const bgColor = useColorModeValue ( 'white' , 'gray.800' ) ;
@@ -76,7 +78,9 @@ const SearchFilters: React.FC<SearchFiltersProps> = ({ onFilterChange }) => {
7678 tags : selectedTags . map ( tag => tag . value ) ,
7779 people : selectedPeople . map ( person => person . value ) ,
7880 rating : selectedRating ? parseInt ( selectedRating , 10 ) : undefined ,
79- unreviewed : isUnreviewed || undefined
81+ unreviewed : isUnreviewed || undefined ,
82+ sort_by : sortBy || undefined ,
83+ sort_order : sortOrder || undefined
8084 } ) ;
8185 } ;
8286
@@ -86,11 +90,15 @@ const SearchFilters: React.FC<SearchFiltersProps> = ({ onFilterChange }) => {
8690 setSelectedPeople ( [ ] ) ;
8791 setSelectedRating ( '' ) ;
8892 setIsUnreviewed ( false ) ;
93+ setSortBy ( '' ) ;
94+ setSortOrder ( 'DESC' ) ;
8995 onFilterChange ( {
9096 tags : undefined ,
9197 people : undefined ,
9298 rating : undefined ,
93- unreviewed : undefined
99+ unreviewed : undefined ,
100+ sort_by : undefined ,
101+ sort_order : undefined
94102 } ) ;
95103 } ;
96104
@@ -172,6 +180,35 @@ const SearchFilters: React.FC<SearchFiltersProps> = ({ onFilterChange }) => {
172180 </ Box >
173181 </ SimpleGrid >
174182
183+ < SimpleGrid columns = { { base : 1 , md : 2 } } spacing = { 4 } mt = { 4 } >
184+ < Box >
185+ < Heading size = "sm" mb = { 2 } > Sort By</ Heading >
186+ < ChakraSelect
187+ value = { sortBy }
188+ onChange = { ( e ) => setSortBy ( e . target . value ) }
189+ placeholder = "Default (Created Date)"
190+ >
191+ < option value = "" > Default (Created Date)</ option >
192+ < option value = "duration" > Duration</ option >
193+ < option value = "title" > Title</ option >
194+ < option value = "rating" > Rating</ option >
195+ < option value = "file_size" > File Size</ option >
196+ < option value = "created_date" > Created Date</ option >
197+ </ ChakraSelect >
198+ </ Box >
199+
200+ < Box >
201+ < Heading size = "sm" mb = { 2 } > Sort Order</ Heading >
202+ < ChakraSelect
203+ value = { sortOrder }
204+ onChange = { ( e ) => setSortOrder ( e . target . value ) }
205+ >
206+ < option value = "ASC" > Ascending</ option >
207+ < option value = "DESC" > Descending</ option >
208+ </ ChakraSelect >
209+ </ Box >
210+ </ SimpleGrid >
211+
175212 < Box mt = { 4 } >
176213 < Checkbox
177214 isChecked = { isUnreviewed }
0 commit comments