11import { useCallback , useState } from 'react' ;
22import ViewModuleIcon from '@mui/icons-material/ViewModule' ;
33import cx from 'classnames' ;
4- import { Link } from 'react-router-dom' ;
54
65import { getThumbnailUrl } from '/@/modules/project' ;
76import { t } from '/@/modules/store/translation/utils' ;
@@ -13,10 +12,14 @@ import type { Props } from './types';
1312
1413import './styles.css' ;
1514
16- export function ProjectCard ( { project, onDelete, onDuplicate } : Props ) {
15+ export function ProjectCard ( { project, onClick , onDelete, onDuplicate } : Props ) {
1716 const [ open , setOpen ] = useState ( false ) ;
1817 const parcels = project . layout . cols * project . layout . rows ;
1918
19+ const handleClick = useCallback ( ( ) => {
20+ if ( onClick ) onClick ( project ) ;
21+ } , [ project , onClick ] ) ;
22+
2023 const handleDeleteProject = useCallback ( ( ) => {
2124 onDelete ( project ) ;
2225 handleCloseModal ( ) ;
@@ -48,36 +51,37 @@ export function ProjectCard({ project, onDelete, onDuplicate }: Props) {
4851 ] ;
4952
5053 return (
51- < div className = { cx ( 'ProjectCard' , { 'has-thumbnail' : ! ! thumbnailUrl } ) } >
52- < Link
53- to = { `/editor?path=${ encodeURIComponent ( project . path ) } ` }
54- className = "project-thumbnail"
55- style = { thumbnailUrl ? { backgroundImage : `url(${ thumbnailUrl } )` } : { } }
56- />
57- < div className = "project-data" >
58- < Link
59- to = { `/editor?path=${ encodeURIComponent ( project . path ) } ` }
60- className = "title-wrapper"
61- >
62- < div className = "title" > { project . title } </ div >
63- < div
64- className = "description"
65- title = { project . description }
66- >
67- < ViewModuleIcon className = "Icon" /> { t ( 'scene_list.parcel_count' , { parcels } ) }
68- </ div >
69- </ Link >
70- < Dropdown
71- className = "options-dropdown"
72- options = { dropdownOptions }
54+ < >
55+ < div
56+ className = { cx ( 'ProjectCard' , { 'has-thumbnail' : ! ! thumbnailUrl } ) }
57+ onClick = { handleClick }
58+ >
59+ < div
60+ className = "project-thumbnail"
61+ style = { thumbnailUrl ? { backgroundImage : `url(${ thumbnailUrl } )` } : { } }
7362 />
63+ < div className = "project-data" >
64+ < div className = "title-wrapper" >
65+ < div className = "title" > { project . title } </ div >
66+ < div
67+ className = "description"
68+ title = { project . description }
69+ >
70+ < ViewModuleIcon className = "Icon" /> { t ( 'scene_list.parcel_count' , { parcels } ) }
71+ </ div >
72+ </ div >
73+ < Dropdown
74+ className = "options-dropdown"
75+ options = { dropdownOptions }
76+ />
77+ </ div >
7478 </ div >
7579 < DeleteProject
7680 open = { open }
7781 project = { project }
7882 onClose = { handleCloseModal }
7983 onSubmit = { handleDeleteProject }
8084 />
81- </ div >
85+ </ >
8286 ) ;
8387}
0 commit comments