hasChildren = true → should render as
<details>
hasChildren = false → should render as
<div>
hasChildren = false → but wrongly renders as
<details>
hasChildren = true → but wrongly renders as
<div>
const sectionTag = computed(() => (hasChildren.value ? 'details' : 'div'))
<template>
<component :is="sectionTag" class="VPSidebarItem" :class="classes" :open="!collapsed">
<!-- Non-collapsible items (no children) - use regular div -->
<div
v-if="props.item.text && !hasChildren"
class="item"
>
<!-- content -->
</div>
<!-- Collapsible items (has children) - use summary -->
<summary
v-else-if="props.item.text && hasChildren"
class="item"
>
<!-- content -->
</summary>
</component>
</template>
Expected behavior:
<details><summary> (collapsible with caret)
<div><div> (simple
link, no caret)