22
33import { DataTable } from "@/components/data-table/data-table" ;
44import { DataTableColumnHeader } from "@/components/data-table/data-table-column-header" ;
5- import { DataTableSortList } from "@/components/data-table/data-table-sort-list " ;
5+ import { DataTableToolbar } from "@/components/data-table/data-table-toolbar " ;
66import { useDataTable } from "@/hooks/use-data-table" ;
77import { useI18n } from "@/locales/client" ;
8+ import type { FrameworkEditorRequirement } from "@comp/db/types" ;
89import { Card , CardContent , CardHeader , CardTitle } from "@comp/ui/card" ;
9- import { Input } from "@comp/ui/input" ;
1010import { ColumnDef } from "@tanstack/react-table" ;
1111import { useParams } from "next/navigation" ;
12- import { useMemo , useState } from "react" ;
12+ import { useMemo } from "react" ;
1313import type { FrameworkInstanceWithControls } from "../../types" ;
14- import type { FrameworkEditorRequirement } from "@comp/db/types" ;
1514
1615interface RequirementItem extends FrameworkEditorRequirement {
1716 mappedControlsCount : number ;
@@ -29,7 +28,6 @@ export function FrameworkRequirements({
2928 orgId : string ;
3029 frameworkInstanceId : string ;
3130 } > ( ) ;
32- const [ searchTerm , setSearchTerm ] = useState ( "" ) ;
3331
3432 const items = useMemo ( ( ) => {
3533 return requirementDefinitions . map ( ( def ) => {
@@ -60,7 +58,12 @@ export function FrameworkRequirements({
6058 size : 200 ,
6159 minSize : 150 ,
6260 maxSize : 250 ,
63- enableResizing : true ,
61+ meta : {
62+ label : "Requirement Name" ,
63+ placeholder : "Search..." ,
64+ variant : "text" ,
65+ } ,
66+ enableColumnFilter : true ,
6467 } ,
6568 {
6669 accessorKey : "description" ,
@@ -104,22 +107,8 @@ export function FrameworkRequirements({
104107 [ t ] ,
105108 ) ;
106109
107- const filteredRequirements = useMemo ( ( ) => {
108- if ( ! items ?. length ) return [ ] ;
109- if ( ! searchTerm . trim ( ) ) return items ;
110-
111- const searchLower = searchTerm . toLowerCase ( ) ;
112- return items . filter (
113- ( requirement ) =>
114- ( requirement . id ?. toLowerCase ( ) || "" ) . includes ( searchLower ) ||
115- ( requirement . name ?. toLowerCase ( ) || "" ) . includes ( searchLower ) ||
116- ( requirement . description ?. toLowerCase ( ) || "" ) . includes ( searchLower ) ||
117- ( requirement . identifier ?. toLowerCase ( ) || "" ) . includes ( searchLower )
118- ) ;
119- } , [ items , searchTerm ] ) ;
120-
121110 const table = useDataTable ( {
122- data : filteredRequirements ,
111+ data : items ,
123112 columns,
124113 pageCount : 1 ,
125114 shallow : false ,
@@ -129,6 +118,7 @@ export function FrameworkRequirements({
129118 } ,
130119 } ) ;
131120
121+
132122 if ( ! items ?. length ) {
133123 return null ;
134124 }
@@ -138,28 +128,19 @@ export function FrameworkRequirements({
138128 < CardHeader >
139129 < CardTitle >
140130 { t ( "frameworks.requirements.requirements" ) } (
141- { filteredRequirements . length } )
131+ { table . table . getFilteredRowModel ( ) . rows . length } )
142132 </ CardTitle >
143133 </ CardHeader >
144134 < CardContent >
145- < div className = "flex items-center mb-4" >
146- < Input
147- placeholder = { t (
148- "frameworks.requirements.search.universal_placeholder" ,
149- ) }
150- value = { searchTerm }
151- onChange = { ( e ) => setSearchTerm ( e . target . value ) }
152- className = "max-w-sm"
153- />
154- < div className = "ml-auto" >
155- < DataTableSortList table = { table . table } align = "end" />
156- </ div >
157- </ div >
158135 < DataTable
159136 table = { table . table }
160137 rowClickBasePath = { `/${ orgId } /frameworks/${ frameworkInstanceId } /requirements/` }
161138 getRowId = { ( row ) => row . id }
162- />
139+ >
140+ < DataTableToolbar table = { table . table } >
141+ { /* <DataTableSortList table={table.table} align="end" /> */ }
142+ </ DataTableToolbar >
143+ </ DataTable >
163144 </ CardContent >
164145 </ Card >
165146 ) ;
0 commit comments