@@ -8,22 +8,40 @@ interface ResultItemProps {
88 onToggle : ( ) => void ;
99}
1010
11- export const ResultItem : React . FC < ResultItemProps > = ( { result, isExpanded, onToggle } ) => {
12- const [ showContext , setShowContext ] = React . useState ( false ) ;
11+ interface ResultItemState {
12+ showContext : boolean ;
13+ }
14+
15+ export class ResultItem extends React . Component < ResultItemProps , ResultItemState > {
16+ constructor ( props : ResultItemProps ) {
17+ super ( props ) ;
18+ this . state = {
19+ showContext : false
20+ } ;
21+ }
22+
23+ handleToggleContext = ( e : React . MouseEvent ) => {
24+ e . stopPropagation ( ) ;
25+ this . setState ( prevState => ( { showContext : ! prevState . showContext } ) ) ;
26+ } ;
1327
14- const borderColor = result . judge_correct
15- ? 'border-green-500'
16- : 'border-red-500' ;
28+ render ( ) {
29+ const { result , isExpanded , onToggle } = this . props ;
30+ const { showContext } = this . state ;
1731
18- const iconColor = result . judge_correct
19- ? 'text -green-500'
20- : 'text -red-500' ;
32+ const borderColor = result . judge_correct
33+ ? 'border -green-500'
34+ : 'border -red-500' ;
2135
22- const badgeClass = result . judge_correct
23- ? 'bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200 '
24- : 'bg-red-100 dark:bg-red-900 text-red-800 dark:text-red-200 ';
36+ const iconColor = result . judge_correct
37+ ? ' text-green-500 '
38+ : ' text-red-500 ';
2539
26- return (
40+ const badgeClass = result . judge_correct
41+ ? 'bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200'
42+ : 'bg-red-100 dark:bg-red-900 text-red-800 dark:text-red-200' ;
43+
44+ return (
2745 < div className = { `border-l-4 ${ borderColor } ` } >
2846 < div
2947 className = "px-4 py-4 sm:px-6 hover:bg-gray-50 dark:hover:bg-gray-700 cursor-pointer"
@@ -121,10 +139,7 @@ export const ResultItem: React.FC<ResultItemProps> = ({ result, isExpanded, onTo
121139 { /* Retrieved Context (Collapsible) */ }
122140 < div >
123141 < button
124- onClick = { ( e ) => {
125- e . stopPropagation ( ) ;
126- setShowContext ( ! showContext ) ;
127- } }
142+ onClick = { this . handleToggleContext }
128143 className = "text-sm font-medium text-blue-600 dark:text-blue-400 hover:underline flex items-center"
129144 >
130145 < FileText className = "h-4 w-4 mr-1" />
@@ -150,5 +165,6 @@ export const ResultItem: React.FC<ResultItemProps> = ({ result, isExpanded, onTo
150165 </ div >
151166 ) }
152167 </ div >
153- ) ;
154- } ;
168+ ) ;
169+ }
170+ }
0 commit comments