fix: skip closed inline teleports so sheets never mount against a missing target
ci / gitleaks (push) Successful in 1m1s
ci / docker (push) Successful in 4m5s

This commit is contained in:
2026-09-23 11:48:46 +08:00
parent a64b7b8262
commit 6c9618252b
2 changed files with 2 additions and 2 deletions
+1 -1
View File
@@ -100,7 +100,7 @@ onBeforeUnmount(deactivate)
</div>
</Transition>
</Teleport>
<Teleport v-else-if="inlineTarget" :key="'app-sheet-inline'" :to="inlineTarget">
<Teleport v-else-if="inlineTarget && open" :key="'app-sheet-inline'" :to="inlineTarget">
<component v-if="open" :is="$attrs.onSubmit ? 'form' : 'section'" ref="panel" class="app-sheet" :class="[`app-sheet--${variant}`, panelClass]" role="dialog" :aria-labelledby="titleId" :aria-describedby="descriptionId" :aria-label="label" :aria-busy="busy || undefined" tabindex="-1" v-bind="$attrs" @keydown="keydown">
<slot />
</component>
+1 -1
View File
@@ -1532,7 +1532,7 @@ describe('desktop task and habit detail disclosure', () => {
expect(mvpPanel).toContain('if (busy.value && !force) return')
expect(mvpPanel).toContain(':modal="compactLayout"')
expect(mvpPanel).toContain('inline-target=".shell"')
expect(appSheet).toContain(`<Teleport v-else-if="inlineTarget" :key="'app-sheet-inline'" :to="inlineTarget">`)
expect(appSheet).toContain(`<Teleport v-else-if="inlineTarget && open" :key="'app-sheet-inline'" :to="inlineTarget">`)
expect(mvpPanel).toContain("watch(selectedHabit, (habit) => emit('detail', Boolean(habit)))")
expect(app).toContain('@click="closeTaskDetail"')
expect(app).toContain('function closeTaskDetail()')