Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion src/utils/isElementVisible.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ function isStyleVisible<T extends Element>(element: T) {
}

function isAttributeVisible<T extends Element>(element: T) {
if (
element.nodeName === 'SUMMARY' &&
element.closest('details')
) {
return true
}
return (
!element.hasAttribute('hidden') &&
(element.nodeName === 'DETAILS' ? element.hasAttribute('open') : true)
Expand All @@ -31,6 +37,6 @@ export function isElementVisible<T extends Element>(element: T): boolean {
element.nodeName !== '#comment' &&
isStyleVisible(element) &&
isAttributeVisible(element) &&
(!element.parentElement || isElementVisible(element.parentElement))
(element.nodeName === 'SUMMARY' || !element.parentElement || isElementVisible(element.parentElement))
)
}
10 changes: 10 additions & 0 deletions tests/isVisible.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,16 @@ describe('isVisible', () => {
})
expect(wrapper.isVisible()).toBe(false)
})
it ('DetailContent should be visible when summary is visible', () => {
const DetailContent = defineComponent({
template: `<details><summary>Summary</summary><div>Content</div></details>`
})

const wrapper = mount(DetailContent)
expect(wrapper.find('summary').isVisible()).toBe(true)
expect(wrapper.find('div').isVisible()).toBe(false)

})
})
})
})
Loading