@@ -19,6 +19,7 @@ import { TableCell } from 'lib/ui/Table/TableCell.js'
1919import { TableHeader } from 'lib/ui/Table/TableHeader.js'
2020import { TableRow } from 'lib/ui/Table/TableRow.js'
2121import { TableTitle } from 'lib/ui/Table/TableTitle.js'
22+ import { SearchTextField } from 'lib/ui/TextField/SearchTextField.js'
2223import { Caption } from 'lib/ui/typography/Caption.js'
2324import { Title } from 'lib/ui/typography/Title.js'
2425
@@ -38,6 +39,7 @@ export function AccessCodeTable(
3839 const [ selectedAccessCode , selectAccessCode ] = useState < AccessCode | null > (
3940 null
4041 )
42+ const [ searchTerm , setSearchTerm ] = useState ( '' )
4143
4244 if ( selectedAccessCode != null ) {
4345 return (
@@ -54,16 +56,31 @@ export function AccessCodeTable(
5456 return null
5557 }
5658
59+ const filteredCodes = accessCodes . filter ( ( accessCode ) => {
60+ if ( searchTerm === '' ) {
61+ return true
62+ }
63+
64+ return new RegExp ( searchTerm , 'i' ) . test ( accessCode . name ?? '' )
65+ } )
66+
67+ const accessCodeCount = accessCodes . length
68+
5769 return (
5870 < div className = 'seam-access-code-table' >
5971 < ContentHeader onBack = { onBack } />
6072 < TableHeader >
6173 < TableTitle >
62- { t . accessCodes } < Caption > ({ accessCodes . length } )</ Caption >
74+ { t . accessCodes } < Caption > ({ accessCodeCount } )</ Caption >
6375 </ TableTitle >
76+ < SearchTextField
77+ value = { searchTerm }
78+ onChange = { setSearchTerm }
79+ disabled = { accessCodeCount === 0 }
80+ />
6481 </ TableHeader >
6582 < TableBody >
66- < Body accessCodes = { accessCodes } selectAccessCode = { selectAccessCode } />
83+ < Body accessCodes = { filteredCodes } selectAccessCode = { selectAccessCode } />
6784 </ TableBody >
6885 </ div >
6986 )
0 commit comments