Skip to content

Commit 333707d

Browse files
fix(Menu,Listbox): prevent data-highlighted flash on mount (#2651)
Both `MenuItemImpl` and `ListboxItem` compared `currentElement` against `highlightedElement` without guarding for `undefined`, so every item matched (`undefined === undefined`) until template refs resolved.
1 parent 67a7b11 commit 333707d

2 files changed

Lines changed: 2 additions & 2 deletions

File tree

packages/core/src/Listbox/ListboxItem.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ const { CollectionItem } = useCollection()
4444
const { forwardRef, currentElement } = useForwardExpose()
4545
const rootContext = injectListboxRootContext()
4646
47-
const isHighlighted = computed(() => currentElement.value === rootContext.highlightedElement.value)
47+
const isHighlighted = computed(() => currentElement.value != null && currentElement.value === rootContext.highlightedElement.value)
4848
const isSelected = computed(() => valueComparator(rootContext.modelValue.value, props.value, rootContext.by))
4949
5050
const disabled = computed(() => rootContext.disabled.value || props.disabled)

packages/core/src/Menu/MenuItemImpl.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const { forwardRef, currentElement } = useForwardExpose()
3333
const { CollectionItem } = useCollection()
3434
3535
const isFocused = ref(false)
36-
const isHighlighted = computed(() => isFocused.value || (contentContext.highlightedElement.value === currentElement.value))
36+
const isHighlighted = computed(() => isFocused.value || (currentElement.value != null && contentContext.highlightedElement.value === currentElement.value))
3737
3838
async function handlePointerMove(event: PointerEvent) {
3939
if (event.defaultPrevented || !isMouseEvent(event))

0 commit comments

Comments
 (0)