Skip to content

Commit 6a30813

Browse files
fix(ProjectCard): fix formattedPath display and ensure card click opens
1 parent 9b70ae0 commit 6a30813

File tree

2 files changed

+50
-24
lines changed

2 files changed

+50
-24
lines changed

src/components/ProjectCard/ProjectCard.vue

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ const openButtonRef = ref<OpenButtonExpose | null>(null)
4141
const projectCardActive = ref<boolean>(false)
4242
const langGroup = ref(projectLangGroup.value)
4343
44-
const formattedPath = computed(() => window.api.formatPath(projectPath.value))
44+
const formattedPath = ref<string>('')
4545
4646
function handleClick() {
4747
openButtonRef.value?.handleClick()
@@ -64,6 +64,14 @@ watch(
6464
{ deep: true },
6565
) // 使用 deep 监听 langGroup 的内部变化
6666
67+
watchEffect(async () => {
68+
if (!projectPath.value) {
69+
formattedPath.value = ''
70+
return
71+
}
72+
formattedPath.value = await window.api.formatPath(projectPath.value)
73+
})
74+
6775
// ==================== More Button ====================
6876
function getDeleteLabel() {
6977
if (!projectExists.value) {
@@ -134,7 +142,7 @@ function showMenu() {
134142
cursor-pointer
135143
tabindex="0"
136144
draggable="true"
137-
@click.self="handleClick"
145+
@click="handleClick"
138146
@dragstart="handleDragStart"
139147
>
140148
<div
@@ -177,7 +185,12 @@ function showMenu() {
177185
text="secondary"
178186
>
179187
{{ projectKind === ProjectKind.FORK ? 'Forked from' : 'Cloned from' }}
180-
<JeLink v-if="projectFromUrl" type="web" :on-click="() => openLink(projectFromUrl)">
188+
<JeLink
189+
v-if="projectFromUrl"
190+
type="web"
191+
:on-click="() => openLink(projectFromUrl)"
192+
@click.stop
193+
>
181194
{{ projectFromName || projectFromUrl }}
182195
</JeLink>
183196
<span v-else>{{ projectFromName }}</span>
@@ -189,11 +202,12 @@ function showMenu() {
189202

190203
<!-- Button -->
191204
<div flex="~ row" gap="15px">
192-
<LanguageButton :project-item="projectItem" />
205+
<LanguageButton :project-item="projectItem" @click.stop />
193206

194207
<LicenseButton
195208
v-if="projectLicense && projectLicense !== LicenseEnum.NONE"
196209
:license="projectLicense"
210+
@click.stop
197211
/>
198212
</div>
199213
</div>
@@ -205,21 +219,23 @@ function showMenu() {
205219
:append-time="projectAppendTime"
206220
:default-open="projectDefaultOpen"
207221
:project-path="projectPath"
222+
@click.stop
208223
/>
209224

210225
<!-- More Button -->
211226
<JeTransparentToolButton
212227
p="3px"
213228
icon="light:i-jet:more-vertical dark:i-jet:more-vertical-dark"
214229
icon-size="17px"
215-
@click="showMenu"
230+
@click.stop="showMenu"
216231
/>
217232
<JeMenu
218233
v-model:visible="menuVisible"
219234
:options="projectActions"
220235
absolute
221236
translate-y="45px"
222237
right="5px"
238+
@click.stop
223239
/>
224240
</div>
225241
</div>

src/global.d.ts

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ declare global {
1212
getFolderList: (folderPath: string) => Promise<{ folders: string[], error?: string }>
1313

1414
// path
15-
formatPath: (filePath: string) => string
15+
formatPath: (filePath: string) => Promise<string>
1616
checkPathExistence: (path: string) => Promise<{ exists: boolean, error?: string }>
1717

1818
// project
@@ -34,7 +34,10 @@ declare global {
3434
openSettingsJSON: () => Promise<boolean>
3535

3636
// data
37-
saveData: (fileType: 'projects' | 'projectScanner' | 'settings', data: string) => Promise<{
37+
saveData: (
38+
fileType: 'projects' | 'projectScanner' | 'settings',
39+
data: string
40+
) => Promise<{
3841
success: boolean
3942
error?: string
4043
}>
@@ -66,29 +69,36 @@ declare global {
6669
}>
6770

6871
// scanner (batch)
69-
scanProjects: (payload: { roots: string[], existingPaths: string[] }) => Promise<Array<{
70-
path: string
71-
name: string
72-
mainLang?: string
73-
mainLangColor?: `#${string}`
74-
langGroup?: Array<{ text: string, color: `#${string}`, percentage: number }>
75-
error?: string
76-
}>>
77-
78-
// scanner (stream)
79-
startProjectScan: (payload: { roots: string[], existingPaths: string[] }) => Promise<{ sessionId: number }>
80-
stopProjectScan: (sessionId: number) => Promise<{ stopped: boolean }>
81-
onScannerItem: (cb: (data: {
82-
sessionId: number
83-
item: {
72+
scanProjects: (payload: { roots: string[], existingPaths: string[] }) => Promise<
73+
Array<{
8474
path: string
8575
name: string
8676
mainLang?: string
8777
mainLangColor?: `#${string}`
8878
langGroup?: Array<{ text: string, color: `#${string}`, percentage: number }>
8979
error?: string
90-
}
91-
}) => void) => () => void
80+
}>
81+
>
82+
83+
// scanner (stream)
84+
startProjectScan: (payload: {
85+
roots: string[]
86+
existingPaths: string[]
87+
}) => Promise<{ sessionId: number }>
88+
stopProjectScan: (sessionId: number) => Promise<{ stopped: boolean }>
89+
onScannerItem: (
90+
cb: (data: {
91+
sessionId: number
92+
item: {
93+
path: string
94+
name: string
95+
mainLang?: string
96+
mainLangColor?: `#${string}`
97+
langGroup?: Array<{ text: string, color: `#${string}`, percentage: number }>
98+
error?: string
99+
}
100+
}) => void
101+
) => () => void
92102
onScannerDone: (cb: (data: { sessionId: number }) => void) => () => void
93103
onScannerError: (cb: (data: { sessionId: number, error: string }) => void) => () => void
94104

0 commit comments

Comments
 (0)