11'use client' ;
22
3+ import Switch from '@node-core/ui-components/Common/Switch' ;
34import { useTranslations } from 'next-intl' ;
45import type { FC } from 'react' ;
56import { Fragment , useState } from 'react' ;
@@ -23,45 +24,72 @@ const EOLReleaseTableBody: FC<EOLReleaseTableBodyProps> = ({
2324 const t = useTranslations ( ) ;
2425
2526 const [ currentModal , setCurrentModal ] = useState < string | undefined > ( ) ;
27+ const [ hideNonLts , setHideNonLts ] = useState ( false ) ;
28+
29+ const filteredReleases = hideNonLts
30+ ? eolReleases . filter ( release => release . isLts )
31+ : eolReleases ;
2632
2733 return (
28- < tbody >
29- { eolReleases . map ( release => (
30- < Fragment key = { release . major } >
34+ < >
35+ < Switch
36+ label = { 'Hide Non-LTS Releases' }
37+ checked = { hideNonLts }
38+ onCheckedChange = { ( ) => setHideNonLts ( ! hideNonLts ) }
39+ />
40+ < table id = "tbVulnerabilities" >
41+ < thead >
3142 < tr >
32- < td data-label = "Version" >
33- v{ release . major } { release . codename ? `(${ release . codename } )` : '' }
34- </ td >
43+ < th >
44+ { t ( 'components.eolTable.version' ) } (
45+ { t ( 'components.eolTable.codename' ) } )
46+ </ th >
47+ < th > { t ( 'components.eolTable.lastUpdated' ) } </ th >
48+ < th > { t ( 'components.eolTable.vulnerabilities' ) } </ th >
49+ < th > { t ( 'components.eolTable.details' ) } </ th >
50+ </ tr >
51+ </ thead >
3552
36- < td data-label = "Date" >
37- < FormattedTime date = { release . releaseDate } />
38- </ td >
53+ < tbody >
54+ { filteredReleases . map ( release => (
55+ < Fragment key = { release . major } >
56+ < tr >
57+ < td data-label = "Version" >
58+ v{ release . major } { ' ' }
59+ { release . codename ? `(${ release . codename } )` : '' }
60+ </ td >
3961
40- < td >
41- < VulnerabilityChips
42- vulnerabilities = { vulnerabilities [ release . major ] }
43- />
44- </ td >
62+ < td data-label = "Date" >
63+ < FormattedTime date = { release . releaseDate } />
64+ </ td >
4565
46- < td >
47- < LinkWithArrow
48- className = "cursor-pointer"
49- onClick = { ( ) => setCurrentModal ( release . version ) }
50- >
51- { t ( 'components.downloadReleasesTable.details' ) }
52- </ LinkWithArrow >
53- </ td >
54- </ tr >
66+ < td >
67+ < VulnerabilityChips
68+ vulnerabilities = { vulnerabilities [ release . major ] }
69+ />
70+ </ td >
71+
72+ < td >
73+ < LinkWithArrow
74+ className = "cursor-pointer"
75+ onClick = { ( ) => setCurrentModal ( release . version ) }
76+ >
77+ { t ( 'components.downloadReleasesTable.details' ) }
78+ </ LinkWithArrow >
79+ </ td >
80+ </ tr >
5581
56- < EOLModal
57- release = { release }
58- vulnerabilities = { vulnerabilities [ release . major ] }
59- open = { currentModal === release . version }
60- onOpenChange = { open => open || setCurrentModal ( undefined ) }
61- />
62- </ Fragment >
63- ) ) }
64- </ tbody >
82+ < EOLModal
83+ release = { release }
84+ vulnerabilities = { vulnerabilities [ release . major ] }
85+ open = { currentModal === release . version }
86+ onOpenChange = { open => open || setCurrentModal ( undefined ) }
87+ />
88+ </ Fragment >
89+ ) ) }
90+ </ tbody >
91+ </ table >
92+ </ >
6593 ) ;
6694} ;
6795
0 commit comments