11"use client" ;
2- import { fetchIdeas , ideaType } from "@/api/fetchIdeas" ;
3- import { fetchTeams } from "@/api/teams " ;
2+ import { fetchIdeas , type ideaType } from "@/api/fetchIdeas" ;
3+ import loading from "@/assets/images/loading.gif " ;
44import { DataTable } from "@/components/table/data-table" ;
55import { DataTableColumnHeader } from "@/components/table/data-table-column-header" ;
6- import { Card , CardContent , CardHeader , CardTitle } from "@/components/ui/card" ;
76import {
87 Select ,
98 SelectContent ,
109 SelectItem ,
1110 SelectTrigger ,
1211 SelectValue ,
1312} from "@/components/ui/select" ;
14- import loading from "@/assets/images/loading.gif" ;
1513import Image from "next/image" ;
1614
17- import { type Team } from "@/data/schema " ;
15+ import { Button } from "@/components/ui/button " ;
1816import { useQuery , useQueryClient } from "@tanstack/react-query" ;
1917import { type ColumnDef } from "@tanstack/react-table" ;
2018import { useEffect , useState } from "react" ;
19+ import { ModalTeamIdea } from "./ModalTeamIdea" ;
2120
2221export default function TeamsIdeasTable ( ) {
2322 const queryClient = useQueryClient ( ) ;
@@ -62,6 +61,7 @@ export default function TeamsIdeasTable() {
6261 queryKey : [ "idea" ] ,
6362 } ) ;
6463 } , [ selectedTrack ] ) ;
64+
6565 const handlePrevPage = ( ) => {
6666 if ( cursorHistory . length > 0 ) {
6767 const prevCursor = cursorHistory [ cursorHistory . length - 1 ] ; // Get last cursor
@@ -76,7 +76,9 @@ export default function TeamsIdeasTable() {
7676 < DataTableColumnHeader column = { column } title = "Team ID" />
7777 ) ,
7878 cell : ( { row } ) => (
79- < div className = "text-center" > { row . original . TeamID } </ div >
79+ < span className = "relative block max-w-[100px] cursor-pointer truncate text-ellipsis whitespace-nowrap text-white" >
80+ { row . original . TeamID }
81+ </ span >
8082 ) ,
8183 } ,
8284 {
@@ -98,9 +100,9 @@ export default function TeamsIdeasTable() {
98100 < DataTableColumnHeader column = { column } title = "Description" />
99101 ) ,
100102 cell : ( { row } ) => (
101- < div className = "max-w-[300px] truncate" >
102- { row . original . Description ?? "No description" }
103- </ div >
103+ < ModalTeamIdea row = { row . original } >
104+ < Button > View </ Button >
105+ </ ModalTeamIdea >
104106 ) ,
105107 } ,
106108 {
@@ -142,51 +144,44 @@ export default function TeamsIdeasTable() {
142144 }
143145
144146 return (
145- < Card className = "w-full" >
146- < CardHeader >
147- < CardTitle > Ideas </ CardTitle >
148- </ CardHeader >
149- < CardContent >
150- < div className = "mb-6 flex flex-wrap gap-4" >
151- < input
152- type = "text"
153- placeholder = "Search teams or submissions..."
154- className = "w-64 rounded-md border border-gray-300 p-2"
155- value = { searchTerm }
156- onChange = { ( e ) => setSearchTerm ( e . target . value ) }
157- />
158- < Select
159- value = { selectedTrack ?? "" }
160- onValueChange = { ( value ) => {
161- setSelectedTrack (
162- value === "all" ? "" : String ( Number ( value ) ) ,
163- ) ;
164- } }
165- >
166- < SelectTrigger className = "w-48 p-6" >
167- < SelectValue placeholder = "Filter by track" />
168- </ SelectTrigger >
169- < SelectContent >
170- < SelectItem value = "all" > All Tracks</ SelectItem >
171- { tracks . map ( ( track , index ) => (
172- < SelectItem key = { track } value = { String ( index + 1 ) } >
173- { track }
174- </ SelectItem >
175- ) ) }
176- </ SelectContent >
177- </ Select >
178- </ div >
179- { (
180- < DataTable
181- columns = { columns }
182- data = { ideasData ?. idea . ideas ?? [ ] }
183- handleNextPage = { handleNextPage }
184- handlePrevPage = { handlePrevPage }
185- setPageLimit = { setPageLimit }
186- pageLimit = { pageLimit }
187- />
188- ) }
189- </ CardContent >
190- </ Card >
147+ < >
148+ < div className = "mb-6 flex flex-wrap gap-4" >
149+ < input
150+ type = "text"
151+ placeholder = "Search teams or submissions..."
152+ className = "w-64 rounded-md border border-gray-300 p-2"
153+ value = { searchTerm }
154+ onChange = { ( e ) => setSearchTerm ( e . target . value ) }
155+ />
156+ < Select
157+ value = { selectedTrack ?? "" }
158+ onValueChange = { ( value ) => {
159+ setSelectedTrack ( value === "all" ? "" : String ( Number ( value ) ) ) ;
160+ } }
161+ >
162+ < SelectTrigger className = "w-48 p-6" >
163+ < SelectValue placeholder = "Filter by track" />
164+ </ SelectTrigger >
165+ < SelectContent >
166+ < SelectItem value = "all" > All Tracks</ SelectItem >
167+ { tracks . map ( ( track , index ) => (
168+ < SelectItem key = { track } value = { String ( index + 1 ) } >
169+ { track }
170+ </ SelectItem >
171+ ) ) }
172+ </ SelectContent >
173+ </ Select >
174+ </ div >
175+ {
176+ < DataTable
177+ columns = { columns }
178+ data = { ideasData ?. idea . ideas ?? [ ] }
179+ handleNextPage = { handleNextPage }
180+ handlePrevPage = { handlePrevPage }
181+ setPageLimit = { setPageLimit }
182+ pageLimit = { pageLimit }
183+ />
184+ }
185+ </ >
191186 ) ;
192187}
0 commit comments