@nuxt/ui 3.1.2 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/.nuxt/ui/avatar.ts +1 -1
  2. package/.nuxt/ui/card.ts +1 -1
  3. package/.nuxt/ui/carousel.ts +1 -1
  4. package/.nuxt/ui/checkbox-group.ts +1 -1
  5. package/.nuxt/ui/command-palette.ts +1 -0
  6. package/.nuxt/ui/context-menu.ts +2 -1
  7. package/.nuxt/ui/drawer.ts +1 -1
  8. package/.nuxt/ui/dropdown-menu.ts +2 -1
  9. package/.nuxt/ui/index.ts +2 -0
  10. package/.nuxt/ui/input-menu.ts +26 -12
  11. package/.nuxt/ui/input-tags.ts +310 -0
  12. package/.nuxt/ui/modal.ts +1 -1
  13. package/.nuxt/ui/navigation-menu.ts +43 -34
  14. package/.nuxt/ui/radio-group.ts +1 -1
  15. package/.nuxt/ui/select-menu.ts +13 -8
  16. package/.nuxt/ui/select.ts +13 -8
  17. package/.nuxt/ui/table.ts +3 -2
  18. package/.nuxt/ui/timeline.ts +321 -0
  19. package/.nuxt/ui/toaster.ts +1 -1
  20. package/.nuxt/ui/tooltip.ts +1 -1
  21. package/.nuxt/ui.css +4 -1
  22. package/cli/templates.mjs +7 -4
  23. package/dist/module.json +1 -1
  24. package/dist/module.mjs +2 -2
  25. package/dist/runtime/components/Alert.vue +0 -1
  26. package/dist/runtime/components/Avatar.vue +10 -2
  27. package/dist/runtime/components/Avatar.vue.d.ts +2 -0
  28. package/dist/runtime/components/Calendar.vue +4 -1
  29. package/dist/runtime/components/Carousel.vue +1 -2
  30. package/dist/runtime/components/Checkbox.vue +1 -1
  31. package/dist/runtime/components/CommandPalette.vue +80 -16
  32. package/dist/runtime/components/CommandPalette.vue.d.ts +32 -8
  33. package/dist/runtime/components/ContextMenuContent.vue +58 -56
  34. package/dist/runtime/components/ContextMenuContent.vue.d.ts +4 -20
  35. package/dist/runtime/components/Drawer.vue +15 -1
  36. package/dist/runtime/components/DropdownMenuContent.vue +60 -58
  37. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +4 -20
  38. package/dist/runtime/components/Form.vue +6 -6
  39. package/dist/runtime/components/Form.vue.d.ts +12 -11
  40. package/dist/runtime/components/Input.vue +1 -0
  41. package/dist/runtime/components/Input.vue.d.ts +7 -0
  42. package/dist/runtime/components/InputMenu.vue +3 -3
  43. package/dist/runtime/components/InputMenu.vue.d.ts +4 -4
  44. package/dist/runtime/components/InputNumber.vue +3 -2
  45. package/dist/runtime/components/InputNumber.vue.d.ts +1 -1
  46. package/dist/runtime/components/InputTags.vue +159 -0
  47. package/dist/runtime/components/InputTags.vue.d.ts +183 -0
  48. package/dist/runtime/components/Modal.vue +16 -15
  49. package/dist/runtime/components/Modal.vue.d.ts +17 -4
  50. package/dist/runtime/components/NavigationMenu.vue +85 -26
  51. package/dist/runtime/components/NavigationMenu.vue.d.ts +30 -17
  52. package/dist/runtime/components/OverlayProvider.vue +2 -2
  53. package/dist/runtime/components/Pagination.vue +1 -1
  54. package/dist/runtime/components/Pagination.vue.d.ts +0 -1
  55. package/dist/runtime/components/PinInput.vue +4 -3
  56. package/dist/runtime/components/PinInput.vue.d.ts +22 -19
  57. package/dist/runtime/components/Popover.vue +4 -0
  58. package/dist/runtime/components/Popover.vue.d.ts +1 -0
  59. package/dist/runtime/components/Progress.vue +2 -1
  60. package/dist/runtime/components/Progress.vue.d.ts +1 -1
  61. package/dist/runtime/components/RadioGroup.vue +2 -2
  62. package/dist/runtime/components/Select.vue +26 -7
  63. package/dist/runtime/components/Select.vue.d.ts +107 -1
  64. package/dist/runtime/components/SelectMenu.vue +27 -8
  65. package/dist/runtime/components/SelectMenu.vue.d.ts +105 -1
  66. package/dist/runtime/components/Slideover.vue +23 -15
  67. package/dist/runtime/components/Slideover.vue.d.ts +17 -4
  68. package/dist/runtime/components/Table.vue +7 -1
  69. package/dist/runtime/components/Table.vue.d.ts +10 -8
  70. package/dist/runtime/components/Tabs.vue +13 -2
  71. package/dist/runtime/components/Tabs.vue.d.ts +4 -1
  72. package/dist/runtime/components/Textarea.vue +4 -1
  73. package/dist/runtime/components/Textarea.vue.d.ts +11 -4
  74. package/dist/runtime/components/Timeline.vue +92 -0
  75. package/dist/runtime/components/Timeline.vue.d.ts +70 -0
  76. package/dist/runtime/components/Toast.vue +4 -5
  77. package/dist/runtime/components/Tree.vue +3 -2
  78. package/dist/runtime/components/Tree.vue.d.ts +1 -1
  79. package/dist/runtime/composables/defineLocale.d.ts +2 -0
  80. package/dist/runtime/composables/defineLocale.js +4 -0
  81. package/dist/runtime/composables/defineShortcuts.js +2 -2
  82. package/dist/runtime/composables/useOverlay.d.ts +2 -1
  83. package/dist/runtime/composables/useOverlay.js +7 -6
  84. package/dist/runtime/locale/ar.js +2 -1
  85. package/dist/runtime/locale/az.js +2 -1
  86. package/dist/runtime/locale/bg.js +2 -1
  87. package/dist/runtime/locale/bn.js +2 -1
  88. package/dist/runtime/locale/ca.js +2 -1
  89. package/dist/runtime/locale/ckb.js +2 -1
  90. package/dist/runtime/locale/cs.js +2 -1
  91. package/dist/runtime/locale/da.js +2 -1
  92. package/dist/runtime/locale/de.js +2 -1
  93. package/dist/runtime/locale/el.js +2 -1
  94. package/dist/runtime/locale/en.js +2 -1
  95. package/dist/runtime/locale/es.js +2 -1
  96. package/dist/runtime/locale/et.js +2 -1
  97. package/dist/runtime/locale/fa_ir.js +2 -1
  98. package/dist/runtime/locale/fi.js +2 -1
  99. package/dist/runtime/locale/fr.js +2 -1
  100. package/dist/runtime/locale/he.js +2 -1
  101. package/dist/runtime/locale/hi.js +2 -1
  102. package/dist/runtime/locale/hu.js +2 -1
  103. package/dist/runtime/locale/hy.js +2 -1
  104. package/dist/runtime/locale/id.js +2 -1
  105. package/dist/runtime/locale/index.d.ts +7 -2
  106. package/dist/runtime/locale/index.js +7 -2
  107. package/dist/runtime/locale/it.js +2 -1
  108. package/dist/runtime/locale/ja.js +2 -1
  109. package/dist/runtime/locale/kk.js +2 -1
  110. package/dist/runtime/locale/km.js +2 -1
  111. package/dist/runtime/locale/ko.js +2 -1
  112. package/dist/runtime/locale/ky.d.ts +3 -0
  113. package/dist/runtime/locale/ky.js +55 -0
  114. package/dist/runtime/locale/lb.d.ts +3 -0
  115. package/dist/runtime/locale/lb.js +55 -0
  116. package/dist/runtime/locale/lt.d.ts +3 -0
  117. package/dist/runtime/locale/lt.js +55 -0
  118. package/dist/runtime/locale/mn.d.ts +3 -0
  119. package/dist/runtime/locale/mn.js +55 -0
  120. package/dist/runtime/locale/ms.d.ts +3 -0
  121. package/dist/runtime/locale/ms.js +55 -0
  122. package/dist/runtime/locale/nb_no.js +2 -1
  123. package/dist/runtime/locale/nl.js +2 -1
  124. package/dist/runtime/locale/pl.js +2 -1
  125. package/dist/runtime/locale/pt.js +2 -1
  126. package/dist/runtime/locale/pt_br.js +2 -1
  127. package/dist/runtime/locale/ro.js +2 -1
  128. package/dist/runtime/locale/ru.js +2 -1
  129. package/dist/runtime/locale/sk.js +2 -1
  130. package/dist/runtime/locale/sl.js +2 -1
  131. package/dist/runtime/locale/sv.js +2 -1
  132. package/dist/runtime/locale/th.js +2 -1
  133. package/dist/runtime/locale/tj.js +2 -1
  134. package/dist/runtime/locale/tr.js +2 -1
  135. package/dist/runtime/locale/ug_cn.js +2 -1
  136. package/dist/runtime/locale/uk.js +2 -1
  137. package/dist/runtime/locale/ur.js +2 -1
  138. package/dist/runtime/locale/uz.js +2 -1
  139. package/dist/runtime/locale/vi.js +2 -1
  140. package/dist/runtime/locale/zh_cn.js +2 -1
  141. package/dist/runtime/locale/zh_tw.js +2 -1
  142. package/dist/runtime/types/form.d.ts +11 -10
  143. package/dist/runtime/types/index.d.ts +2 -0
  144. package/dist/runtime/types/index.js +2 -0
  145. package/dist/runtime/types/locale.d.ts +1 -0
  146. package/dist/runtime/types/utils.d.ts +3 -0
  147. package/dist/shared/{ui.BvUP-pSb.mjs → ui.BPVxSPGY.mjs} +332 -62
  148. package/dist/unplugin.mjs +1 -1
  149. package/dist/vite.mjs +1 -1
  150. package/package.json +35 -36
@@ -1,11 +1,11 @@
1
1
  <script setup>
2
2
  import { computed } from "vue";
3
3
  import { useOverlay } from "../composables/useOverlay";
4
- const { overlays, unMount, close } = useOverlay();
4
+ const { overlays, unmount, close } = useOverlay();
5
5
  const mountedOverlays = computed(() => overlays.filter((overlay) => overlay.isMounted));
6
6
  const onAfterLeave = (id) => {
7
7
  close(id);
8
- unMount(id);
8
+ unmount(id);
9
9
  };
10
10
  const onClose = (id, value) => {
11
11
  close(id, value);
@@ -22,7 +22,7 @@ const props = defineProps({
22
22
  activeColor: { type: null, required: false, default: "primary" },
23
23
  activeVariant: { type: null, required: false, default: "solid" },
24
24
  showControls: { type: Boolean, required: false, default: true },
25
- size: { type: null, required: false, default: "md" },
25
+ size: { type: null, required: false },
26
26
  to: { type: Function, required: false },
27
27
  class: { type: null, required: false },
28
28
  ui: { type: null, required: false },
@@ -100,7 +100,6 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<Pagination
100
100
  }, string, import("vue").PublicProps, Readonly<PaginationProps> & Readonly<{
101
101
  "onUpdate:page"?: ((value: number) => any) | undefined;
102
102
  }>, {
103
- size: "xs" | "sm" | "md" | "lg" | "xl";
104
103
  color: "error" | "info" | "primary" | "secondary" | "success" | "warning" | "neutral";
105
104
  activeColor: "error" | "info" | "primary" | "secondary" | "success" | "warning" | "neutral";
106
105
  variant: "link" | "solid" | "outline" | "soft" | "subtle" | "ghost";
@@ -25,16 +25,16 @@ const props = defineProps({
25
25
  disabled: { type: Boolean, required: false },
26
26
  id: { type: String, required: false },
27
27
  mask: { type: Boolean, required: false },
28
- modelValue: { type: [Array, null], required: false },
28
+ modelValue: { type: null, required: false },
29
29
  name: { type: String, required: false },
30
30
  otp: { type: Boolean, required: false },
31
31
  placeholder: { type: String, required: false },
32
32
  required: { type: Boolean, required: false },
33
- type: { type: String, required: false, default: "text" }
33
+ type: { type: null, required: false, default: "text" }
34
34
  });
35
35
  const emits = defineEmits(["update:modelValue", "complete", "change", "blur"]);
36
36
  const appConfig = useAppConfig();
37
- const rootProps = useForwardPropsEmits(reactivePick(props, "defaultValue", "disabled", "id", "mask", "modelValue", "name", "otp", "placeholder", "required", "type"), emits);
37
+ const rootProps = useForwardPropsEmits(reactivePick(props, "defaultValue", "disabled", "id", "mask", "modelValue", "name", "otp", "required", "type"), emits);
38
38
  const { emitFormInput, emitFormFocus, emitFormChange, emitFormBlur, size, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props);
39
39
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.pinInput || {} })({
40
40
  color: color.value,
@@ -75,6 +75,7 @@ defineExpose({
75
75
  v-bind="{ ...rootProps, ...ariaAttrs }"
76
76
  :id="id"
77
77
  :name="name"
78
+ :placeholder="placeholder"
78
79
  :class="ui.root({ class: [props.ui?.root, props.class] })"
79
80
  @update:model-value="emitFormInput()"
80
81
  @complete="onComplete"
@@ -4,7 +4,8 @@ import type { AppConfig } from '@nuxt/schema';
4
4
  import theme from '#build/ui/pin-input';
5
5
  import type { ComponentConfig } from '../types/utils';
6
6
  type PinInput = ComponentConfig<typeof theme, AppConfig, 'pinInput'>;
7
- export interface PinInputProps extends Pick<PinInputRootProps, 'defaultValue' | 'disabled' | 'id' | 'mask' | 'modelValue' | 'name' | 'otp' | 'placeholder' | 'required' | 'type'> {
7
+ type PinInputType = 'text' | 'number';
8
+ export interface PinInputProps<T extends PinInputType = 'text'> extends Pick<PinInputRootProps<T>, 'defaultValue' | 'disabled' | 'id' | 'mask' | 'modelValue' | 'name' | 'otp' | 'placeholder' | 'required' | 'type'> {
8
9
  /**
9
10
  * The element or component this component should render as.
10
11
  * @defaultValue 'div'
@@ -33,25 +34,27 @@ export interface PinInputProps extends Pick<PinInputRootProps, 'defaultValue' |
33
34
  class?: any;
34
35
  ui?: PinInput['slots'];
35
36
  }
36
- export type PinInputEmits = PinInputRootEmits & {
37
+ export type PinInputEmits<T extends PinInputType = 'text'> = PinInputRootEmits<T> & {
37
38
  change: [payload: Event];
38
39
  blur: [payload: Event];
39
40
  };
40
- declare const _default: import("vue").DefineComponent<PinInputProps, {
41
- inputsRef: import("vue").Ref<ComponentPublicInstance[], ComponentPublicInstance[]>;
42
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
43
- blur: (payload: Event) => any;
44
- complete: (value: string[]) => any;
45
- change: (payload: Event) => any;
46
- "update:modelValue": (value: string[]) => any;
47
- }, string, import("vue").PublicProps, Readonly<PinInputProps> & Readonly<{
48
- onBlur?: ((payload: Event) => any) | undefined;
49
- onComplete?: ((value: string[]) => any) | undefined;
50
- onChange?: ((payload: Event) => any) | undefined;
51
- "onUpdate:modelValue"?: ((value: string[]) => any) | undefined;
52
- }>, {
53
- length: number | string;
54
- type: "text" | "number";
55
- autofocusDelay: number;
56
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
41
+ declare const _default: <T extends PinInputType = "text">(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
42
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
43
+ readonly onBlur?: ((payload: Event) => any) | undefined;
44
+ readonly onComplete?: ((value: T extends "number" ? number[] : string[]) => any) | undefined;
45
+ readonly onChange?: ((payload: Event) => any) | undefined;
46
+ readonly "onUpdate:modelValue"?: ((value: T extends "number" ? number[] : string[]) => any) | undefined;
47
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onBlur" | "onChange" | "onUpdate:modelValue" | "onComplete"> & PinInputProps<T> & Partial<{}>> & import("vue").PublicProps;
48
+ expose(exposed: import("vue").ShallowUnwrapRef<{
49
+ inputsRef: import("vue").Ref<ComponentPublicInstance[], ComponentPublicInstance[]>;
50
+ }>): void;
51
+ attrs: any;
52
+ slots: {};
53
+ emit: ((evt: "blur", payload: Event) => void) & ((evt: "complete", value: T extends "number" ? number[] : string[]) => void) & ((evt: "change", payload: Event) => void) & ((evt: "update:modelValue", value: T extends "number" ? number[] : string[]) => void);
54
+ }>) => import("vue").VNode & {
55
+ __ctx?: Awaited<typeof __VLS_setup>;
56
+ };
57
57
  export default _default;
58
+ type __VLS_PrettifyLocal<T> = {
59
+ [K in keyof T]: T[K];
60
+ } & {};
@@ -58,6 +58,10 @@ const Component = computed(() => props.mode === "hover" ? HoverCard : Popover);
58
58
  <slot :open="open" />
59
59
  </Component.Trigger>
60
60
 
61
+ <Component.Anchor v-if="'Anchor' in Component && !!slots.anchor" as-child>
62
+ <slot name="anchor" />
63
+ </Component.Anchor>
64
+
61
65
  <Component.Portal v-bind="portalProps">
62
66
  <Component.Content v-bind="contentProps" :class="ui.content({ class: [!slots.default && props.class, props.ui?.content] })" v-on="contentEvents">
63
67
  <slot name="content" />
@@ -41,6 +41,7 @@ export interface PopoverSlots {
41
41
  open: boolean;
42
42
  }): any;
43
43
  content(props?: {}): any;
44
+ anchor(props?: {}): any;
44
45
  }
45
46
  declare const _default: __VLS_WithSlots<import("vue").DefineComponent<PopoverProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
46
47
  "update:open": (value: boolean) => any;
@@ -21,13 +21,14 @@ const props = defineProps({
21
21
  class: { type: null, required: false },
22
22
  ui: { type: null, required: false },
23
23
  getValueLabel: { type: Function, required: false },
24
+ getValueText: { type: Function, required: false },
24
25
  modelValue: { type: [Number, null], required: false, default: null }
25
26
  });
26
27
  const emits = defineEmits(["update:modelValue", "update:max"]);
27
28
  const slots = defineSlots();
28
29
  const { dir } = useLocale();
29
30
  const appConfig = useAppConfig();
30
- const rootProps = useForwardPropsEmits(reactivePick(props, "getValueLabel", "modelValue"), emits);
31
+ const rootProps = useForwardPropsEmits(reactivePick(props, "getValueLabel", "getValueText", "modelValue"), emits);
31
32
  const isIndeterminate = computed(() => rootProps.value.modelValue === null);
32
33
  const hasSteps = computed(() => Array.isArray(props.max));
33
34
  const realMax = computed(() => {
@@ -3,7 +3,7 @@ import type { AppConfig } from '@nuxt/schema';
3
3
  import theme from '#build/ui/progress';
4
4
  import type { ComponentConfig } from '../types/utils';
5
5
  type Progress = ComponentConfig<typeof theme, AppConfig, 'progress'>;
6
- export interface ProgressProps extends Pick<ProgressRootProps, 'getValueLabel' | 'modelValue'> {
6
+ export interface ProgressProps extends Pick<ProgressRootProps, 'getValueLabel' | 'getValueText' | 'modelValue'> {
7
7
  /**
8
8
  * The element or component this component should render as.
9
9
  * @defaultValue 'div'
@@ -24,10 +24,10 @@ const props = defineProps({
24
24
  indicator: { type: null, required: false },
25
25
  class: { type: null, required: false },
26
26
  ui: { type: null, required: false },
27
- defaultValue: { type: [String, Number, Object, null], required: false },
27
+ defaultValue: { type: null, required: false },
28
28
  disabled: { type: Boolean, required: false },
29
29
  loop: { type: Boolean, required: false },
30
- modelValue: { type: [String, Number, Object, null], required: false },
30
+ modelValue: { type: null, required: false },
31
31
  name: { type: String, required: false },
32
32
  required: { type: Boolean, required: false }
33
33
  });
@@ -3,8 +3,8 @@ import theme from "#build/ui/select";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
- import { computed, toRef } from "vue";
7
- import { SelectRoot, SelectArrow, SelectTrigger, SelectPortal, SelectContent, SelectViewport, SelectLabel, SelectGroup, SelectItem, SelectItemIndicator, SelectItemText, SelectSeparator, useForwardPropsEmits } from "reka-ui";
6
+ import { ref, computed, onMounted, toRef } from "vue";
7
+ import { SelectRoot, SelectArrow, SelectTrigger, SelectPortal, SelectContent, SelectLabel, SelectGroup, SelectItem, SelectItemIndicator, SelectItemText, SelectSeparator, useForwardPropsEmits } from "reka-ui";
8
8
  import { defu } from "defu";
9
9
  import { reactivePick } from "@vueuse/core";
10
10
  import { useAppConfig } from "#imports";
@@ -36,6 +36,8 @@ const props = defineProps({
36
36
  modelValue: { type: null, required: false },
37
37
  multiple: { type: Boolean, required: false },
38
38
  highlight: { type: Boolean, required: false },
39
+ autofocus: { type: Boolean, required: false },
40
+ autofocusDelay: { type: Number, required: false, default: 0 },
39
41
  class: { type: null, required: false },
40
42
  ui: { type: null, required: false },
41
43
  open: { type: Boolean, required: false },
@@ -79,11 +81,25 @@ const groups = computed(
79
81
  const items = computed(() => groups.value.flatMap((group) => group));
80
82
  function displayValue(value) {
81
83
  if (props.multiple && Array.isArray(value)) {
82
- return value.map((v) => displayValue(v)).filter(Boolean).join(", ");
84
+ const values = value.map((v) => displayValue(v)).filter(Boolean);
85
+ return values?.length ? values.join(", ") : void 0;
83
86
  }
84
87
  const item = items.value.find((item2) => compare(typeof item2 === "object" ? get(item2, props.valueKey) : item2, value));
85
88
  return item && (typeof item === "object" ? get(item, props.labelKey) : item);
86
89
  }
90
+ const triggerRef = ref(null);
91
+ function autoFocus() {
92
+ if (props.autofocus) {
93
+ triggerRef.value?.$el?.focus({
94
+ focusVisible: true
95
+ });
96
+ }
97
+ }
98
+ onMounted(() => {
99
+ setTimeout(() => {
100
+ autoFocus();
101
+ }, props.autofocusDelay);
102
+ });
87
103
  function onUpdate(value) {
88
104
  const event = new Event("change", { target: { value } });
89
105
  emits("change", event);
@@ -104,6 +120,9 @@ function onUpdateOpen(value) {
104
120
  function isSelectItem(item) {
105
121
  return typeof item === "object" && item !== null;
106
122
  }
123
+ defineExpose({
124
+ triggerRef
125
+ });
107
126
  </script>
108
127
 
109
128
  <template>
@@ -118,7 +137,7 @@ function isSelectItem(item) {
118
137
  @update:model-value="onUpdate"
119
138
  @update:open="onUpdateOpen"
120
139
  >
121
- <SelectTrigger :id="id" :class="ui.base({ class: [props.ui?.base, props.class] })" v-bind="{ ...$attrs, ...ariaAttrs }">
140
+ <SelectTrigger :id="id" ref="triggerRef" :class="ui.base({ class: [props.ui?.base, props.class] })" v-bind="{ ...$attrs, ...ariaAttrs }">
122
141
  <span v-if="isLeading || !!avatar || !!slots.leading" :class="ui.leading({ class: props.ui?.leading })">
123
142
  <slot name="leading" :model-value="modelValue" :open="open" :ui="ui">
124
143
  <UIcon v-if="isLeading && leadingIconName" :name="leadingIconName" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
@@ -128,7 +147,7 @@ function isSelectItem(item) {
128
147
 
129
148
  <slot :model-value="modelValue" :open="open">
130
149
  <template v-for="displayedModelValue in [displayValue(modelValue)]" :key="displayedModelValue">
131
- <span v-if="displayedModelValue" :class="ui.value({ class: props.ui?.value })">
150
+ <span v-if="displayedModelValue !== void 0 && displayedModelValue !== null" :class="ui.value({ class: props.ui?.value })">
132
151
  {{ displayedModelValue }}
133
152
  </span>
134
153
  <span v-else :class="ui.placeholder({ class: props.ui?.placeholder })">
@@ -148,7 +167,7 @@ function isSelectItem(item) {
148
167
  <SelectContent :class="ui.content({ class: props.ui?.content })" v-bind="contentProps">
149
168
  <slot name="content-top" />
150
169
 
151
- <SelectViewport :class="ui.viewport({ class: props.ui?.viewport })">
170
+ <div role="presentation" :class="ui.viewport({ class: props.ui?.viewport })">
152
171
  <SelectGroup v-for="(group, groupIndex) in groups" :key="`group-${groupIndex}`" :class="ui.group({ class: props.ui?.group })">
153
172
  <template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
154
173
  <SelectLabel v-if="isSelectItem(item) && item.type === 'label'" :class="ui.label({ class: [props.ui?.label, item.ui?.label, item.class] })">
@@ -195,7 +214,7 @@ function isSelectItem(item) {
195
214
  </SelectItem>
196
215
  </template>
197
216
  </SelectGroup>
198
- </SelectViewport>
217
+ </div>
199
218
 
200
219
  <slot name="content-bottom" />
201
220
 
@@ -88,6 +88,8 @@ export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested
88
88
  multiple?: M & boolean;
89
89
  /** Highlight the ring color like a focus state. */
90
90
  highlight?: boolean;
91
+ autofocus?: boolean;
92
+ autofocusDelay?: number;
91
93
  class?: any;
92
94
  ui?: Select['slots'];
93
95
  }
@@ -134,7 +136,111 @@ declare const _default: <T extends ArrayOrNested<SelectItem>, VK extends GetItem
134
136
  readonly "onUpdate:open"?: ((value: boolean) => any) | undefined;
135
137
  readonly "onUpdate:modelValue"?: ((payload: GetModelValue<T, VK, M>) => any) | undefined;
136
138
  } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onFocus" | "onBlur" | "onChange" | "onUpdate:open" | "onUpdate:modelValue"> & SelectProps<T, VK, M> & Partial<{}>> & import("vue").PublicProps;
137
- expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
139
+ expose(exposed: import("vue").ShallowUnwrapRef<{
140
+ triggerRef: import("vue").Ref<({
141
+ $: import("vue").ComponentInternalInstance;
142
+ $data: {};
143
+ $props: {
144
+ readonly disabled?: boolean | undefined;
145
+ readonly reference?: import("reka-ui").ReferenceElement | undefined;
146
+ readonly asChild?: boolean | undefined;
147
+ readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
148
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
149
+ $attrs: {
150
+ [x: string]: unknown;
151
+ };
152
+ $refs: {
153
+ [x: string]: unknown;
154
+ };
155
+ $slots: Readonly<{
156
+ [name: string]: import("vue").Slot<any> | undefined;
157
+ }>;
158
+ $root: import("vue").ComponentPublicInstance | null;
159
+ $parent: import("vue").ComponentPublicInstance | null;
160
+ $host: Element | null;
161
+ $emit: (event: string, ...args: any[]) => void;
162
+ $el: any;
163
+ $options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").SelectTriggerProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
164
+ as: import("reka-ui").AsTag | import("vue").Component;
165
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
166
+ beforeCreate?: (() => void) | (() => void)[];
167
+ created?: (() => void) | (() => void)[];
168
+ beforeMount?: (() => void) | (() => void)[];
169
+ mounted?: (() => void) | (() => void)[];
170
+ beforeUpdate?: (() => void) | (() => void)[];
171
+ updated?: (() => void) | (() => void)[];
172
+ activated?: (() => void) | (() => void)[];
173
+ deactivated?: (() => void) | (() => void)[];
174
+ beforeDestroy?: (() => void) | (() => void)[];
175
+ beforeUnmount?: (() => void) | (() => void)[];
176
+ destroyed?: (() => void) | (() => void)[];
177
+ unmounted?: (() => void) | (() => void)[];
178
+ renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
179
+ renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
180
+ errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
181
+ };
182
+ $forceUpdate: () => void;
183
+ $nextTick: typeof import("vue").nextTick;
184
+ $watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
185
+ } & Readonly<{
186
+ as: import("reka-ui").AsTag | import("vue").Component;
187
+ }> & Omit<Readonly<import("reka-ui").SelectTriggerProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
188
+ $slots: {
189
+ default?(_: {}): any;
190
+ };
191
+ }) | null, ({
192
+ $: import("vue").ComponentInternalInstance;
193
+ $data: {};
194
+ $props: {
195
+ readonly disabled?: boolean | undefined;
196
+ readonly reference?: import("reka-ui").ReferenceElement | undefined;
197
+ readonly asChild?: boolean | undefined;
198
+ readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
199
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
200
+ $attrs: {
201
+ [x: string]: unknown;
202
+ };
203
+ $refs: {
204
+ [x: string]: unknown;
205
+ };
206
+ $slots: Readonly<{
207
+ [name: string]: import("vue").Slot<any> | undefined;
208
+ }>;
209
+ $root: import("vue").ComponentPublicInstance | null;
210
+ $parent: import("vue").ComponentPublicInstance | null;
211
+ $host: Element | null;
212
+ $emit: (event: string, ...args: any[]) => void;
213
+ $el: any;
214
+ $options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").SelectTriggerProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
215
+ as: import("reka-ui").AsTag | import("vue").Component;
216
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
217
+ beforeCreate?: (() => void) | (() => void)[];
218
+ created?: (() => void) | (() => void)[];
219
+ beforeMount?: (() => void) | (() => void)[];
220
+ mounted?: (() => void) | (() => void)[];
221
+ beforeUpdate?: (() => void) | (() => void)[];
222
+ updated?: (() => void) | (() => void)[];
223
+ activated?: (() => void) | (() => void)[];
224
+ deactivated?: (() => void) | (() => void)[];
225
+ beforeDestroy?: (() => void) | (() => void)[];
226
+ beforeUnmount?: (() => void) | (() => void)[];
227
+ destroyed?: (() => void) | (() => void)[];
228
+ unmounted?: (() => void) | (() => void)[];
229
+ renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
230
+ renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
231
+ errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
232
+ };
233
+ $forceUpdate: () => void;
234
+ $nextTick: typeof import("vue").nextTick;
235
+ $watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
236
+ } & Readonly<{
237
+ as: import("reka-ui").AsTag | import("vue").Component;
238
+ }> & Omit<Readonly<import("reka-ui").SelectTriggerProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
239
+ $slots: {
240
+ default?(_: {}): any;
241
+ };
242
+ }) | null>;
243
+ }>): void;
138
244
  attrs: any;
139
245
  slots: SelectSlots<T, VK, M, NestedItem<T>>;
140
246
  emit: ((evt: "blur", payload: FocusEvent) => void) & ((evt: "change", payload: Event) => void) & ((evt: "focus", payload: FocusEvent) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "update:modelValue", payload: GetModelValue<T, VK, M>) => void);
@@ -3,8 +3,8 @@ import theme from "#build/ui/select-menu";
3
3
  </script>
4
4
 
5
5
  <script setup>
6
- import { computed, toRef, toRaw } from "vue";
7
- import { ComboboxRoot, ComboboxArrow, ComboboxAnchor, ComboboxInput, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxViewport, ComboboxEmpty, ComboboxGroup, ComboboxLabel, ComboboxSeparator, ComboboxItem, ComboboxItemIndicator, FocusScope, useForwardPropsEmits, useFilter } from "reka-ui";
6
+ import { ref, computed, onMounted, toRef, toRaw } from "vue";
7
+ import { ComboboxRoot, ComboboxArrow, ComboboxAnchor, ComboboxInput, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxLabel, ComboboxSeparator, ComboboxItem, ComboboxItemIndicator, FocusScope, useForwardPropsEmits, useFilter } from "reka-ui";
8
8
  import { defu } from "defu";
9
9
  import { reactivePick, createReusableTemplate } from "@vueuse/core";
10
10
  import { useAppConfig } from "#imports";
@@ -43,6 +43,8 @@ const props = defineProps({
43
43
  createItem: { type: [Boolean, String, Object], required: false },
44
44
  filterFields: { type: Array, required: false },
45
45
  ignoreFilter: { type: Boolean, required: false },
46
+ autofocus: { type: Boolean, required: false },
47
+ autofocusDelay: { type: Number, required: false, default: 0 },
46
48
  class: { type: null, required: false },
47
49
  ui: { type: null, required: false },
48
50
  open: { type: Boolean, required: false },
@@ -88,7 +90,8 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.selectMenu ||
88
90
  }));
89
91
  function displayValue(value) {
90
92
  if (props.multiple && Array.isArray(value)) {
91
- return value.map((v) => displayValue(v)).filter(Boolean).join(", ");
93
+ const values = value.map((v) => displayValue(v)).filter(Boolean);
94
+ return values?.length ? values.join(", ") : void 0;
92
95
  }
93
96
  if (!props.valueKey) {
94
97
  return value && (typeof value === "object" ? get(value, props.labelKey) : value);
@@ -129,6 +132,19 @@ const createItem = computed(() => {
129
132
  return !filteredItems.value.length;
130
133
  });
131
134
  const createItemPosition = computed(() => typeof props.createItem === "object" ? props.createItem.position : "bottom");
135
+ const triggerRef = ref(null);
136
+ function autoFocus() {
137
+ if (props.autofocus) {
138
+ triggerRef.value?.$el?.focus({
139
+ focusVisible: true
140
+ });
141
+ }
142
+ }
143
+ onMounted(() => {
144
+ setTimeout(() => {
145
+ autoFocus();
146
+ }, props.autofocusDelay);
147
+ });
132
148
  function onUpdate(value) {
133
149
  if (toRaw(props.modelValue) === value) {
134
150
  return;
@@ -173,6 +189,9 @@ function onSelect(e, item) {
173
189
  function isSelectItem(item) {
174
190
  return typeof item === "object" && item !== null;
175
191
  }
192
+ defineExpose({
193
+ triggerRef
194
+ });
176
195
  </script>
177
196
 
178
197
  <template>
@@ -204,7 +223,7 @@ function isSelectItem(item) {
204
223
  @update:open="onUpdateOpen"
205
224
  >
206
225
  <ComboboxAnchor as-child>
207
- <ComboboxTrigger :class="ui.base({ class: [props.ui?.base, props.class] })" tabindex="0">
226
+ <ComboboxTrigger ref="triggerRef" :class="ui.base({ class: [props.ui?.base, props.class] })" tabindex="0">
208
227
  <span v-if="isLeading || !!avatar || !!slots.leading" :class="ui.leading({ class: props.ui?.leading })">
209
228
  <slot name="leading" :model-value="modelValue" :open="open" :ui="ui">
210
229
  <UIcon v-if="isLeading && leadingIconName" :name="leadingIconName" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
@@ -214,7 +233,7 @@ function isSelectItem(item) {
214
233
 
215
234
  <slot :model-value="modelValue" :open="open">
216
235
  <template v-for="displayedModelValue in [displayValue(modelValue)]" :key="displayedModelValue">
217
- <span v-if="displayedModelValue" :class="ui.value({ class: props.ui?.value })">
236
+ <span v-if="displayedModelValue !== void 0 && displayedModelValue !== null" :class="ui.value({ class: props.ui?.value })">
218
237
  {{ displayedModelValue }}
219
238
  </span>
220
239
  <span v-else :class="ui.placeholder({ class: props.ui?.placeholder })">
@@ -237,7 +256,7 @@ function isSelectItem(item) {
237
256
  <slot name="content-top" />
238
257
 
239
258
  <ComboboxInput v-if="!!searchInput" v-model="searchTerm" :display-value="() => searchTerm" as-child>
240
- <UInput autofocus autocomplete="off" v-bind="searchInputProps" :class="ui.input({ class: props.ui?.input })" />
259
+ <UInput autofocus autocomplete="off" :size="size" v-bind="searchInputProps" :class="ui.input({ class: props.ui?.input })" />
241
260
  </ComboboxInput>
242
261
 
243
262
  <ComboboxEmpty :class="ui.empty({ class: props.ui?.empty })">
@@ -246,7 +265,7 @@ function isSelectItem(item) {
246
265
  </slot>
247
266
  </ComboboxEmpty>
248
267
 
249
- <ComboboxViewport :class="ui.viewport({ class: props.ui?.viewport })">
268
+ <div role="presentation" :class="ui.viewport({ class: props.ui?.viewport })">
250
269
  <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'top'" />
251
270
 
252
271
  <ComboboxGroup v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" :class="ui.group({ class: props.ui?.group })">
@@ -297,7 +316,7 @@ function isSelectItem(item) {
297
316
  </ComboboxGroup>
298
317
 
299
318
  <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'bottom'" />
300
- </ComboboxViewport>
319
+ </div>
301
320
 
302
321
  <slot name="content-bottom" />
303
322
  </FocusScope>
@@ -114,6 +114,8 @@ export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = Array
114
114
  * @defaultValue false
115
115
  */
116
116
  ignoreFilter?: boolean;
117
+ autofocus?: boolean;
118
+ autofocusDelay?: number;
117
119
  class?: any;
118
120
  ui?: SelectMenu['slots'];
119
121
  }
@@ -182,7 +184,109 @@ declare const _default: <T extends ArrayOrNested<SelectMenuItem>, VK extends Get
182
184
  } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onFocus" | "onBlur" | "onChange" | "onUpdate:open" | "onUpdate:modelValue" | "onHighlight" | "onUpdate:searchTerm" | "onCreate"> & (SelectMenuProps<T, VK, M> & {
183
185
  searchTerm?: string;
184
186
  }) & Partial<{}>> & import("vue").PublicProps;
185
- expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
187
+ expose(exposed: import("vue").ShallowUnwrapRef<{
188
+ triggerRef: import("vue").Ref<({
189
+ $: import("vue").ComponentInternalInstance;
190
+ $data: {};
191
+ $props: {
192
+ readonly disabled?: boolean | undefined;
193
+ readonly asChild?: boolean | undefined;
194
+ readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
195
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
196
+ $attrs: {
197
+ [x: string]: unknown;
198
+ };
199
+ $refs: {
200
+ [x: string]: unknown;
201
+ };
202
+ $slots: Readonly<{
203
+ [name: string]: import("vue").Slot<any> | undefined;
204
+ }>;
205
+ $root: import("vue").ComponentPublicInstance | null;
206
+ $parent: import("vue").ComponentPublicInstance | null;
207
+ $host: Element | null;
208
+ $emit: (event: string, ...args: any[]) => void;
209
+ $el: any;
210
+ $options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").ComboboxTriggerProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
211
+ as: import("reka-ui").AsTag | import("vue").Component;
212
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
213
+ beforeCreate?: (() => void) | (() => void)[];
214
+ created?: (() => void) | (() => void)[];
215
+ beforeMount?: (() => void) | (() => void)[];
216
+ mounted?: (() => void) | (() => void)[];
217
+ beforeUpdate?: (() => void) | (() => void)[];
218
+ updated?: (() => void) | (() => void)[];
219
+ activated?: (() => void) | (() => void)[];
220
+ deactivated?: (() => void) | (() => void)[];
221
+ beforeDestroy?: (() => void) | (() => void)[];
222
+ beforeUnmount?: (() => void) | (() => void)[];
223
+ destroyed?: (() => void) | (() => void)[];
224
+ unmounted?: (() => void) | (() => void)[];
225
+ renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
226
+ renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
227
+ errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
228
+ };
229
+ $forceUpdate: () => void;
230
+ $nextTick: typeof import("vue").nextTick;
231
+ $watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
232
+ } & Readonly<{
233
+ as: import("reka-ui").AsTag | import("vue").Component;
234
+ }> & Omit<Readonly<import("reka-ui").ComboboxTriggerProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
235
+ $slots: {
236
+ default?(_: {}): any;
237
+ };
238
+ }) | null, ({
239
+ $: import("vue").ComponentInternalInstance;
240
+ $data: {};
241
+ $props: {
242
+ readonly disabled?: boolean | undefined;
243
+ readonly asChild?: boolean | undefined;
244
+ readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
245
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
246
+ $attrs: {
247
+ [x: string]: unknown;
248
+ };
249
+ $refs: {
250
+ [x: string]: unknown;
251
+ };
252
+ $slots: Readonly<{
253
+ [name: string]: import("vue").Slot<any> | undefined;
254
+ }>;
255
+ $root: import("vue").ComponentPublicInstance | null;
256
+ $parent: import("vue").ComponentPublicInstance | null;
257
+ $host: Element | null;
258
+ $emit: (event: string, ...args: any[]) => void;
259
+ $el: any;
260
+ $options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").ComboboxTriggerProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
261
+ as: import("reka-ui").AsTag | import("vue").Component;
262
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
263
+ beforeCreate?: (() => void) | (() => void)[];
264
+ created?: (() => void) | (() => void)[];
265
+ beforeMount?: (() => void) | (() => void)[];
266
+ mounted?: (() => void) | (() => void)[];
267
+ beforeUpdate?: (() => void) | (() => void)[];
268
+ updated?: (() => void) | (() => void)[];
269
+ activated?: (() => void) | (() => void)[];
270
+ deactivated?: (() => void) | (() => void)[];
271
+ beforeDestroy?: (() => void) | (() => void)[];
272
+ beforeUnmount?: (() => void) | (() => void)[];
273
+ destroyed?: (() => void) | (() => void)[];
274
+ unmounted?: (() => void) | (() => void)[];
275
+ renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
276
+ renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
277
+ errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
278
+ };
279
+ $forceUpdate: () => void;
280
+ $nextTick: typeof import("vue").nextTick;
281
+ $watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
282
+ } & Readonly<{
283
+ as: import("reka-ui").AsTag | import("vue").Component;
284
+ }> & Omit<Readonly<import("reka-ui").ComboboxTriggerProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
285
+ $slots: {
286
+ default?(_: {}): any;
287
+ };
288
+ }) | null>;
289
+ }>): void;
186
290
  attrs: any;
187
291
  slots: SelectMenuSlots<T, VK, M, NestedItem<T>>;
188
292
  emit: (((evt: "blur", payload: FocusEvent) => void) & ((evt: "change", payload: Event) => void) & ((evt: "focus", payload: FocusEvent) => void) & ((evt: "create", item: string) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "update:modelValue", payload: GetModelValue<T, VK, M>) => void) & ((evt: "highlight", payload: {