@@ -14,6 +14,7 @@ type RepositoryItemProps = {
1414
1515export const RepositoryItem = ( { repository } : RepositoryItemProps ) => {
1616 const [ isIssueOpen , setIsIssueOpen ] = useState ( false ) ;
17+ const [ isIssuesListVisible , setIsIssuesListVisible ] = useState ( false ) ;
1718
1819 dayjs . extend ( relativeTime ) ;
1920 const useLastModified = ( date : string ) => {
@@ -25,10 +26,20 @@ export const RepositoryItem = ({ repository }: RepositoryItemProps) => {
2526 } ;
2627 const lastModified = useLastModified ( repository . last_modified ) ;
2728
29+ useEffect ( ( ) => {
30+ if ( isIssueOpen ) {
31+ setIsIssuesListVisible ( true ) ;
32+ } else {
33+ // Delay unmounting to allow close animation to complete
34+ const timer = setTimeout ( ( ) => setIsIssuesListVisible ( false ) , 300 ) ;
35+ return ( ) => clearTimeout ( timer ) ;
36+ }
37+ } , [ isIssueOpen ] ) ;
38+
2839 return (
2940 < div className = "repo-item" >
30- < div id = { `repo-${ repository . id } ` } onClick = { ( ) => setIsIssueOpen ( ! isIssueOpen ) } >
31- < div >
41+ < div id = { `repo-${ repository . id } ` } >
42+ < div onClick = { ( ) => setIsIssueOpen ( ! isIssueOpen ) } >
3243 < RepositoryItemTopBar
3344 isIssueOpen = { isIssueOpen }
3445 repositoryHasNewIssues = { repository . has_new_issues }
@@ -50,7 +61,9 @@ export const RepositoryItem = ({ repository }: RepositoryItemProps) => {
5061 />
5162 </ div >
5263 </ div >
53- { isIssueOpen && < IssuesList issues = { repository . issues } /> }
64+ < div className = { `repo-item__issues-warper ${ isIssueOpen ? 'open' : '' } ` } >
65+ { isIssuesListVisible && < IssuesList issues = { repository . issues } /> }
66+ </ div >
5467 </ div >
5568 </ div >
5669 ) ;
0 commit comments