diff --git a/packages/core/src/ColorSwatchPicker/ColorSwatchPickerItem.vue b/packages/core/src/ColorSwatchPicker/ColorSwatchPickerItem.vue
index 0537da4b8b..3d184c096c 100644
--- a/packages/core/src/ColorSwatchPicker/ColorSwatchPickerItem.vue
+++ b/packages/core/src/ColorSwatchPicker/ColorSwatchPickerItem.vue
@@ -50,11 +50,12 @@ provideColorSwatchPickerItemContext({
-
+
diff --git a/packages/core/src/Combobox/ComboboxItem.vue b/packages/core/src/Combobox/ComboboxItem.vue
index 888f12e1d5..e03273b270 100644
--- a/packages/core/src/Combobox/ComboboxItem.vue
+++ b/packages/core/src/Combobox/ComboboxItem.vue
@@ -26,6 +26,13 @@ import { ListboxItem } from '@/Listbox'
const props = defineProps>()
const emits = defineEmits>()
+defineSlots<{
+ default?: (props: {
+ /** Whether the item is currently selected */
+ selected: boolean
+ }) => any
+}>()
+
const id = useId(undefined, 'reka-combobox-item')
const rootContext = injectComboboxRootContext()
const groupContext = injectComboboxGroupContext(null)
@@ -80,6 +87,7 @@ onUnmounted(() => {
v-bind="props"
:id="id"
ref="primitiveElement"
+ v-slot="slotProps"
:disabled="rootContext.disabled.value || disabled"
@select="(event) => {
emits('select', event as any)
@@ -93,6 +101,8 @@ onUnmounted(() => {
}
}"
>
- {{ value }}
+
+ {{ value }}
+
diff --git a/packages/core/src/ContextMenu/ContextMenuCheckboxItem.vue b/packages/core/src/ContextMenu/ContextMenuCheckboxItem.vue
index e12254ff6e..f5d821dda0 100644
--- a/packages/core/src/ContextMenu/ContextMenuCheckboxItem.vue
+++ b/packages/core/src/ContextMenu/ContextMenuCheckboxItem.vue
@@ -21,7 +21,10 @@ useForwardExpose()
-
-
+
+
diff --git a/packages/core/src/ContextMenu/ContextMenuRadioItem.vue b/packages/core/src/ContextMenu/ContextMenuRadioItem.vue
index 0cdbcc2c04..f7bf31cd43 100644
--- a/packages/core/src/ContextMenu/ContextMenuRadioItem.vue
+++ b/packages/core/src/ContextMenu/ContextMenuRadioItem.vue
@@ -21,7 +21,10 @@ useForwardExpose()
-
-
+
+
diff --git a/packages/core/src/DropdownMenu/DropdownMenuCheckboxItem.vue b/packages/core/src/DropdownMenu/DropdownMenuCheckboxItem.vue
index ef7b4e49b4..031710c974 100644
--- a/packages/core/src/DropdownMenu/DropdownMenuCheckboxItem.vue
+++ b/packages/core/src/DropdownMenu/DropdownMenuCheckboxItem.vue
@@ -21,7 +21,10 @@ useForwardExpose()
-
-
+
+
diff --git a/packages/core/src/DropdownMenu/DropdownMenuRadioItem.vue b/packages/core/src/DropdownMenu/DropdownMenuRadioItem.vue
index dba6b7e508..11000f7047 100644
--- a/packages/core/src/DropdownMenu/DropdownMenuRadioItem.vue
+++ b/packages/core/src/DropdownMenu/DropdownMenuRadioItem.vue
@@ -21,7 +21,10 @@ useForwardExpose()
-
-
+
+
diff --git a/packages/core/src/Listbox/ListboxItem.vue b/packages/core/src/Listbox/ListboxItem.vue
index a2326dfe75..255ee2c179 100644
--- a/packages/core/src/Listbox/ListboxItem.vue
+++ b/packages/core/src/Listbox/ListboxItem.vue
@@ -39,6 +39,13 @@ const props = withDefaults(defineProps>(), {
})
const emits = defineEmits>()
+defineSlots<{
+ default?: (props: {
+ /** Whether the item is currently selected */
+ selected: boolean
+ }) => any
+}>()
+
const id = useId(undefined, 'reka-listbox-item')
const { CollectionItem } = useCollection()
const { forwardRef, currentElement } = useForwardExpose()
@@ -96,7 +103,7 @@ provideListboxItemContext({
rootContext.changeHighlight(currentElement, false)
}"
>
-
+
diff --git a/packages/core/src/Listbox/ListboxItemIndicator.vue b/packages/core/src/Listbox/ListboxItemIndicator.vue
index d834d784d1..4b8660ce6d 100644
--- a/packages/core/src/Listbox/ListboxItemIndicator.vue
+++ b/packages/core/src/Listbox/ListboxItemIndicator.vue
@@ -2,10 +2,17 @@
import type { PrimitiveProps } from '@/Primitive'
import { useForwardExpose } from '@/shared'
-export interface ListboxItemIndicatorProps extends PrimitiveProps {}
+export interface ListboxItemIndicatorProps extends PrimitiveProps {
+ /**
+ * Used to force mounting when more control is needed. Useful when
+ * controlling animation with Vue animation libraries.
+ */
+ forceMount?: boolean
+}
-
-
-
+
+
+
+
+
diff --git a/packages/core/src/Menu/MenuRadioItem.vue b/packages/core/src/Menu/MenuRadioItem.vue
index 3310ac392f..b1334f4cb8 100644
--- a/packages/core/src/Menu/MenuRadioItem.vue
+++ b/packages/core/src/Menu/MenuRadioItem.vue
@@ -25,6 +25,12 @@ import { getCheckedState } from './utils'
const props = defineProps()
const emits = defineEmits()
+defineSlots<{
+ default?: (props: {
+ /** Current checked state */
+ checked: boolean
+ }) => any
+}>()
const delegatedProps = reactiveOmit(props, ['value'])
const forwarded = useForwardProps(delegatedProps)
@@ -50,6 +56,6 @@ provideMenuItemIndicatorContext({ modelValue })
}
"
>
-
+
diff --git a/packages/core/src/Menubar/MenubarCheckboxItem.vue b/packages/core/src/Menubar/MenubarCheckboxItem.vue
index 10ea06ba78..8702a779cf 100644
--- a/packages/core/src/Menubar/MenubarCheckboxItem.vue
+++ b/packages/core/src/Menubar/MenubarCheckboxItem.vue
@@ -21,7 +21,10 @@ useForwardExpose()
-
-
+
+
diff --git a/packages/core/src/Menubar/MenubarRadioItem.vue b/packages/core/src/Menubar/MenubarRadioItem.vue
index 41ae1474d6..52250d41e3 100644
--- a/packages/core/src/Menubar/MenubarRadioItem.vue
+++ b/packages/core/src/Menubar/MenubarRadioItem.vue
@@ -21,7 +21,10 @@ useForwardExpose()
-
-
+
+
diff --git a/packages/core/src/Select/SelectItem.vue b/packages/core/src/Select/SelectItem.vue
index dcf1cfcd98..7d4376c61f 100644
--- a/packages/core/src/Select/SelectItem.vue
+++ b/packages/core/src/Select/SelectItem.vue
@@ -169,7 +169,7 @@ provideSelectItemContext({
@focus="isFocused = true"
@blur="isFocused = false"
@pointerup="handleSelectCustomEvent"
- @pointerdown="(event) => {
+ @pointerdown="(event: PointerEvent) => {
(event.currentTarget as HTMLElement).focus({ preventScroll: true })
}"
@touchend.prevent.stop
@@ -177,7 +177,7 @@ provideSelectItemContext({
@pointerleave="handlePointerLeave"
@keydown="handleKeyDown"
>
-
+
diff --git a/packages/core/src/Select/SelectItemIndicator.vue b/packages/core/src/Select/SelectItemIndicator.vue
index 18f3ca5364..eec6d445c0 100644
--- a/packages/core/src/Select/SelectItemIndicator.vue
+++ b/packages/core/src/Select/SelectItemIndicator.vue
@@ -1,10 +1,18 @@
-
-
-
+
+
+
+
+