@@ -14,10 +14,12 @@ import {
1414 DataTable ,
1515 Dialog ,
1616 DropZone ,
17+ Icon ,
1718 IconButton ,
1819 SearchInput ,
1920 Spinner ,
2021 Text ,
22+ TextField ,
2123 toast ,
2224} from 'opub-ui' ;
2325
@@ -26,6 +28,13 @@ import { formatDate } from '@/lib/utils';
2628import { Icons } from '@/components/icons' ;
2729import { createResourceFilesDoc } from './DistributionList' ;
2830
31+ type FilteredRow = {
32+ name_of_resource : string ;
33+ type : string ;
34+ date_added : string ;
35+ id : string ;
36+ } ;
37+
2938export const ResourceListView = ( { data, refetch } : any ) => {
3039 const updateResourceList : any = graphql ( `
3140 mutation deleteFileResource($resourceId: UUID!) {
@@ -35,10 +44,14 @@ export const ResourceListView = ({ data, refetch }: any) => {
3544
3645 const [ resourceId , setResourceId ] = useQueryState ( 'id' , parseAsString ) ;
3746
38- const { mutate, isLoading } = useMutation (
47+ const { mutate } = useMutation (
3948 ( data : { resourceId : string } ) => GraphQL ( updateResourceList , data ) ,
4049 {
41- onSuccess : ( ) => {
50+ onSuccess : ( data , variables ) => {
51+ const updatedFilteredRows = filteredRows . filter (
52+ ( row : any ) => row . id !== variables . resourceId
53+ ) ;
54+ setFilteredRows ( updatedFilteredRows ) ;
4255 refetch ( ) ;
4356 toast ( 'Resource Deleted Successfully' , {
4457 action : {
@@ -136,16 +149,17 @@ export const ResourceListView = ({ data, refetch }: any) => {
136149 } ) ) || [ ] ,
137150 } ;
138151
139- //const [filteredRows, setFilteredRows] = React.useState(table.rows);
152+ const [ filteredRows , setFilteredRows ] = React . useState < FilteredRow [ ] > (
153+ table . rows
154+ ) ;
140155
141- // const handleSearchChange = (e:string) => {
142- // console.log(e, 'e');
143- // const searchTerm = e.toLowerCase();
144- // const filtered = table.rows.filter((row:any) =>
145- // row.name_of_resource.toLowerCase().includes(searchTerm)
146- // );
147- // setFilteredRows(filtered);
148- // };
156+ const handleSearchChange = ( e : string ) => {
157+ const searchTerm = e . toLowerCase ( ) ;
158+ const filtered = table . rows . filter ( ( row : any ) =>
159+ row . name_of_resource . toLowerCase ( ) . includes ( searchTerm )
160+ ) ;
161+ setFilteredRows ( filtered ) ;
162+ } ;
149163
150164 const filteredColumns = table . columns . filter (
151165 ( column ) => column . accessorKey !== 'id'
@@ -177,38 +191,33 @@ export const ResourceListView = ({ data, refetch }: any) => {
177191 return (
178192 < div className = "mt-3" >
179193 < div className = "my-8 flex items-center gap-6 px-4" >
180- { /* <Text>
181- Showing {table.rows. length} of {table.rows .length} resources
182- </Text> */ }
183- { /* <SearchInput
194+ < Text >
195+ Showing { filteredRows . length } of { filteredRows . length } resources
196+ </ Text >
197+ < SearchInput
184198 className = "w-1/2 "
185199 placeholder = "Search in Resources"
186200 label = "Search"
187201 name = "Search"
188- onChange={function Ga() {} }
189- /> */ }
202+ onChange = { ( e ) => handleSearchChange ( e ) }
203+ />
190204 { /* <Dialog>
191205 <Dialog.Trigger>
192206 <Button size="medium" className=" mx-5">
193207 ADD NEW RESOURCE
194208 </Button>
195209 </Dialog.Trigger>
196210 <Dialog.Content title={'Add New Resource'}>
197- <DropZone
198- name="file_upload"
199- allowMultiple={true}
200- onDrop={dropZone}
201- >
211+ <DropZone name="file_upload" allowMultiple={true} onDrop={dropZone}>
202212 {uploadedFile}
203213 {file.length === 0 && <DropZone.FileUpload />}
204214 </DropZone>
205215 </Dialog.Content>
206216 </Dialog> */ }
207217 </ div >
208218 < DataTable
209- addToolbar
210219 columns = { filteredColumns }
211- rows = { table . rows }
220+ rows = { filteredRows }
212221 hideFooter = { true }
213222 hideSelection = { true }
214223 defaultRowCount = { 10 }
0 commit comments