@nuxt/ui 4.6.1 → 4.7.1

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 (175) hide show
  1. package/README.md +7 -4
  2. package/cli/package.json +1 -1
  3. package/dist/module.json +1 -1
  4. package/dist/module.mjs +3 -2
  5. package/dist/runtime/components/Accordion.d.vue.ts +6 -1
  6. package/dist/runtime/components/Accordion.vue +1 -1
  7. package/dist/runtime/components/Accordion.vue.d.ts +6 -1
  8. package/dist/runtime/components/AuthForm.d.vue.ts +22 -29
  9. package/dist/runtime/components/AuthForm.vue +8 -6
  10. package/dist/runtime/components/AuthForm.vue.d.ts +22 -29
  11. package/dist/runtime/components/Button.vue +1 -0
  12. package/dist/runtime/components/Calendar.vue +4 -4
  13. package/dist/runtime/components/Card.d.vue.ts +4 -0
  14. package/dist/runtime/components/Card.vue +16 -2
  15. package/dist/runtime/components/Card.vue.d.ts +4 -0
  16. package/dist/runtime/components/ChatMessage.d.vue.ts +27 -17
  17. package/dist/runtime/components/ChatMessage.vue +10 -16
  18. package/dist/runtime/components/ChatMessage.vue.d.ts +27 -17
  19. package/dist/runtime/components/ChatMessages.d.vue.ts +27 -21
  20. package/dist/runtime/components/ChatMessages.vue +22 -23
  21. package/dist/runtime/components/ChatMessages.vue.d.ts +27 -21
  22. package/dist/runtime/components/ChatPromptSubmit.vue +3 -1
  23. package/dist/runtime/components/Checkbox.vue +5 -3
  24. package/dist/runtime/components/CommandPalette.d.vue.ts +18 -3
  25. package/dist/runtime/components/CommandPalette.vue +11 -7
  26. package/dist/runtime/components/CommandPalette.vue.d.ts +18 -3
  27. package/dist/runtime/components/ContextMenuContent.vue +68 -65
  28. package/dist/runtime/components/DashboardSearch.d.vue.ts +8 -37
  29. package/dist/runtime/components/DashboardSearch.vue +11 -10
  30. package/dist/runtime/components/DashboardSearch.vue.d.ts +8 -37
  31. package/dist/runtime/components/DashboardSidebar.vue +1 -5
  32. package/dist/runtime/components/Drawer.vue +44 -41
  33. package/dist/runtime/components/DropdownMenuContent.vue +90 -87
  34. package/dist/runtime/components/EditorEmojiMenu.d.vue.ts +1 -1
  35. package/dist/runtime/components/EditorEmojiMenu.vue +2 -0
  36. package/dist/runtime/components/EditorEmojiMenu.vue.d.ts +1 -1
  37. package/dist/runtime/components/EditorMentionMenu.d.vue.ts +1 -1
  38. package/dist/runtime/components/EditorMentionMenu.vue +2 -0
  39. package/dist/runtime/components/EditorMentionMenu.vue.d.ts +1 -1
  40. package/dist/runtime/components/EditorSuggestionMenu.d.vue.ts +1 -1
  41. package/dist/runtime/components/EditorSuggestionMenu.vue +2 -0
  42. package/dist/runtime/components/EditorSuggestionMenu.vue.d.ts +1 -1
  43. package/dist/runtime/components/FileUpload.vue +7 -5
  44. package/dist/runtime/components/FormField.d.vue.ts +1 -1
  45. package/dist/runtime/components/FormField.vue.d.ts +1 -1
  46. package/dist/runtime/components/Header.vue +1 -5
  47. package/dist/runtime/components/Input.vue +2 -2
  48. package/dist/runtime/components/InputDate.vue +6 -6
  49. package/dist/runtime/components/InputMenu.d.vue.ts +3 -3
  50. package/dist/runtime/components/InputMenu.vue +40 -38
  51. package/dist/runtime/components/InputMenu.vue.d.ts +3 -3
  52. package/dist/runtime/components/InputNumber.vue +2 -2
  53. package/dist/runtime/components/InputTags.vue +2 -2
  54. package/dist/runtime/components/InputTime.vue +2 -2
  55. package/dist/runtime/components/Link.d.vue.ts +10 -1
  56. package/dist/runtime/components/Link.vue +74 -9
  57. package/dist/runtime/components/Link.vue.d.ts +10 -1
  58. package/dist/runtime/components/Listbox.d.vue.ts +228 -0
  59. package/dist/runtime/components/Listbox.vue +242 -0
  60. package/dist/runtime/components/Listbox.vue.d.ts +228 -0
  61. package/dist/runtime/components/Modal.vue +13 -10
  62. package/dist/runtime/components/Popover.vue +7 -4
  63. package/dist/runtime/components/PricingTable.vue +60 -58
  64. package/dist/runtime/components/RadioGroup.vue +5 -3
  65. package/dist/runtime/components/Select.d.vue.ts +1 -1
  66. package/dist/runtime/components/Select.vue +84 -73
  67. package/dist/runtime/components/Select.vue.d.ts +1 -1
  68. package/dist/runtime/components/SelectMenu.d.vue.ts +3 -3
  69. package/dist/runtime/components/SelectMenu.vue +54 -52
  70. package/dist/runtime/components/SelectMenu.vue.d.ts +3 -3
  71. package/dist/runtime/components/Sidebar.vue +1 -4
  72. package/dist/runtime/components/Slideover.vue +67 -64
  73. package/dist/runtime/components/Table.d.vue.ts +1 -2
  74. package/dist/runtime/components/Table.vue +17 -29
  75. package/dist/runtime/components/Table.vue.d.ts +1 -2
  76. package/dist/runtime/components/Tabs.d.vue.ts +5 -1
  77. package/dist/runtime/components/Tabs.vue +2 -2
  78. package/dist/runtime/components/Tabs.vue.d.ts +5 -1
  79. package/dist/runtime/components/Textarea.d.vue.ts +1 -0
  80. package/dist/runtime/components/Textarea.vue +2 -1
  81. package/dist/runtime/components/Textarea.vue.d.ts +1 -0
  82. package/dist/runtime/components/Tooltip.vue +12 -9
  83. package/dist/runtime/components/content/ContentSearch.d.vue.ts +19 -35
  84. package/dist/runtime/components/content/ContentSearch.vue +10 -9
  85. package/dist/runtime/components/content/ContentSearch.vue.d.ts +19 -35
  86. package/dist/runtime/components/content/ContentToc.vue +19 -9
  87. package/dist/runtime/components/prose/Img.vue +7 -1
  88. package/dist/runtime/components/prose/Pre.vue +8 -3
  89. package/dist/runtime/components/prose/Prompt.d.vue.ts +32 -0
  90. package/dist/runtime/components/prose/Prompt.vue +88 -0
  91. package/dist/runtime/components/prose/Prompt.vue.d.ts +32 -0
  92. package/dist/runtime/composables/index.d.ts +1 -0
  93. package/dist/runtime/composables/index.js +1 -0
  94. package/dist/runtime/composables/useContentSearch.js +19 -5
  95. package/dist/runtime/composables/useEditorMenu.d.ts +5 -0
  96. package/dist/runtime/composables/useEditorMenu.js +3 -1
  97. package/dist/runtime/composables/useFieldGroup.d.ts +3 -0
  98. package/dist/runtime/composables/useFieldGroup.js +11 -1
  99. package/dist/runtime/composables/useResolvedVariants.d.ts +21 -0
  100. package/dist/runtime/composables/useResolvedVariants.js +14 -0
  101. package/dist/runtime/locale/ar.js +9 -0
  102. package/dist/runtime/locale/az.js +9 -0
  103. package/dist/runtime/locale/be.js +9 -0
  104. package/dist/runtime/locale/bg.js +9 -0
  105. package/dist/runtime/locale/bn.js +9 -0
  106. package/dist/runtime/locale/ca.js +9 -0
  107. package/dist/runtime/locale/ckb.js +10 -1
  108. package/dist/runtime/locale/cs.js +9 -0
  109. package/dist/runtime/locale/da.js +9 -0
  110. package/dist/runtime/locale/de.js +9 -0
  111. package/dist/runtime/locale/de_ch.js +9 -0
  112. package/dist/runtime/locale/el.js +9 -0
  113. package/dist/runtime/locale/en.js +10 -1
  114. package/dist/runtime/locale/es.js +9 -0
  115. package/dist/runtime/locale/et.js +9 -0
  116. package/dist/runtime/locale/eu.js +11 -2
  117. package/dist/runtime/locale/fa_ir.js +9 -0
  118. package/dist/runtime/locale/fi.js +9 -0
  119. package/dist/runtime/locale/fr.js +9 -0
  120. package/dist/runtime/locale/gl.js +9 -0
  121. package/dist/runtime/locale/he.js +9 -0
  122. package/dist/runtime/locale/hi.js +9 -0
  123. package/dist/runtime/locale/hr.js +9 -0
  124. package/dist/runtime/locale/hu.js +9 -0
  125. package/dist/runtime/locale/hy.js +9 -0
  126. package/dist/runtime/locale/id.js +9 -0
  127. package/dist/runtime/locale/is.js +9 -0
  128. package/dist/runtime/locale/it.js +9 -0
  129. package/dist/runtime/locale/ja.js +9 -0
  130. package/dist/runtime/locale/ka.js +9 -0
  131. package/dist/runtime/locale/kk.js +9 -0
  132. package/dist/runtime/locale/km.js +9 -0
  133. package/dist/runtime/locale/ko.js +9 -0
  134. package/dist/runtime/locale/ky.js +9 -0
  135. package/dist/runtime/locale/lb.js +11 -2
  136. package/dist/runtime/locale/lo.js +15 -6
  137. package/dist/runtime/locale/lt.js +9 -0
  138. package/dist/runtime/locale/mn.js +9 -0
  139. package/dist/runtime/locale/ms.js +9 -0
  140. package/dist/runtime/locale/nb_no.js +9 -0
  141. package/dist/runtime/locale/nl.js +9 -0
  142. package/dist/runtime/locale/pl.js +9 -0
  143. package/dist/runtime/locale/pt.js +9 -0
  144. package/dist/runtime/locale/pt_br.js +9 -0
  145. package/dist/runtime/locale/ro.js +9 -0
  146. package/dist/runtime/locale/ru.js +9 -0
  147. package/dist/runtime/locale/sk.js +9 -0
  148. package/dist/runtime/locale/sl.js +9 -0
  149. package/dist/runtime/locale/sq.js +9 -0
  150. package/dist/runtime/locale/sv.js +9 -0
  151. package/dist/runtime/locale/th.js +9 -0
  152. package/dist/runtime/locale/tj.js +9 -0
  153. package/dist/runtime/locale/tr.js +9 -0
  154. package/dist/runtime/locale/ug_cn.js +9 -0
  155. package/dist/runtime/locale/uk.js +9 -0
  156. package/dist/runtime/locale/ur.js +9 -0
  157. package/dist/runtime/locale/uz.js +9 -0
  158. package/dist/runtime/locale/vi.js +9 -0
  159. package/dist/runtime/locale/zh_cn.js +9 -0
  160. package/dist/runtime/locale/zh_tw.js +9 -0
  161. package/dist/runtime/plugins/colors.js +1 -1
  162. package/dist/runtime/types/index.d.ts +1 -0
  163. package/dist/runtime/types/index.js +1 -0
  164. package/dist/runtime/types/locale.d.ts +9 -0
  165. package/dist/runtime/types/prose.d.ts +1 -0
  166. package/dist/runtime/types/prose.js +1 -0
  167. package/dist/runtime/utils/link.d.ts +1 -1
  168. package/dist/runtime/utils/link.js +1 -0
  169. package/dist/runtime/vue/overrides/inertia/Link.vue +3 -3
  170. package/dist/runtime/vue/overrides/none/Link.vue +3 -2
  171. package/dist/runtime/vue/overrides/vue-router/Link.vue +27 -31
  172. package/dist/shared/{ui.DJUbBpE2.mjs → ui.C6mn7iap.mjs} +189 -37
  173. package/dist/unplugin.mjs +1 -1
  174. package/dist/vite.mjs +1 -1
  175. package/package.json +49 -40
@@ -9,6 +9,7 @@ import { DropdownMenu } from "reka-ui/namespaced";
9
9
  import { useForwardPropsEmits } from "reka-ui";
10
10
  import { reactiveOmit, createReusableTemplate } from "@vueuse/core";
11
11
  import { useAppConfig } from "#imports";
12
+ import { FieldGroupReset } from "../composables/useFieldGroup";
12
13
  import { useFilter } from "../composables/useFilter";
13
14
  import { useLocale } from "../composables/useLocale";
14
15
  import { usePortal } from "../composables/usePortal";
@@ -136,103 +137,105 @@ const hasFilteredItems = computed(() => filteredGroups.value.some((group) => gro
136
137
  </DefineItemTemplate>
137
138
 
138
139
  <DropdownMenu.Portal v-bind="portalProps">
139
- <component :is="sub ? DropdownMenu.SubContent : DropdownMenu.Content" data-slot="content" :class="ui.content({ class: [uiOverride?.content, props.class] })" v-bind="contentProps">
140
- <DropdownMenu.Filter v-if="!!filter" v-model="searchTerm" as-child>
141
- <UInput
142
- autofocus
143
- autocomplete="off"
144
- :size="size"
145
- v-bind="inputProps"
146
- data-slot="input"
147
- :class="ui.input({ class: uiOverride?.input })"
148
- @change.stop
149
- />
150
- </DropdownMenu.Filter>
140
+ <FieldGroupReset>
141
+ <component :is="sub ? DropdownMenu.SubContent : DropdownMenu.Content" data-slot="content" :class="ui.content({ class: [uiOverride?.content, props.class] })" v-bind="contentProps">
142
+ <DropdownMenu.Filter v-if="!!filter" v-model="searchTerm" as-child>
143
+ <UInput
144
+ autofocus
145
+ autocomplete="off"
146
+ :size="size"
147
+ v-bind="inputProps"
148
+ data-slot="input"
149
+ :class="ui.input({ class: uiOverride?.input })"
150
+ @change.stop
151
+ />
152
+ </DropdownMenu.Filter>
151
153
 
152
- <slot name="content-top" :sub="sub ?? false" />
154
+ <slot name="content-top" :sub="sub ?? false" />
153
155
 
154
- <div v-if="!searchTerm || hasFilteredItems" role="presentation" data-slot="viewport" :class="ui.viewport({ class: uiOverride?.viewport })">
155
- <DropdownMenu.Group v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" data-slot="group" :class="ui.group({ class: uiOverride?.group })">
156
- <template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
157
- <DropdownMenu.Label v-if="item.type === 'label'" data-slot="label" :class="ui.label({ class: [uiOverride?.label, item.ui?.label, item.class] })">
158
- <ReuseItemTemplate :item="item" :index="index" />
159
- </DropdownMenu.Label>
160
- <DropdownMenu.Separator v-else-if="item.type === 'separator'" data-slot="separator" :class="ui.separator({ class: [uiOverride?.separator, item.ui?.separator, item.class] })" />
161
- <DropdownMenu.Sub v-else-if="item?.children?.length" :open="item.open" :default-open="item.defaultOpen">
162
- <DropdownMenu.SubTrigger
163
- as="button"
164
- type="button"
165
- :disabled="item.disabled"
166
- :text-value="get(item, props.labelKey)"
167
- data-slot="item"
168
- :class="ui.item({ class: [uiOverride?.item, item.ui?.item, item.class], color: item?.color })"
169
- >
156
+ <div v-if="!searchTerm || hasFilteredItems" role="presentation" data-slot="viewport" :class="ui.viewport({ class: uiOverride?.viewport })">
157
+ <DropdownMenu.Group v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" data-slot="group" :class="ui.group({ class: uiOverride?.group })">
158
+ <template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
159
+ <DropdownMenu.Label v-if="item.type === 'label'" data-slot="label" :class="ui.label({ class: [uiOverride?.label, item.ui?.label, item.class] })">
170
160
  <ReuseItemTemplate :item="item" :index="index" />
171
- </DropdownMenu.SubTrigger>
161
+ </DropdownMenu.Label>
162
+ <DropdownMenu.Separator v-else-if="item.type === 'separator'" data-slot="separator" :class="ui.separator({ class: [uiOverride?.separator, item.ui?.separator, item.class] })" />
163
+ <DropdownMenu.Sub v-else-if="item?.children?.length" :open="item.open" :default-open="item.defaultOpen">
164
+ <DropdownMenu.SubTrigger
165
+ as="button"
166
+ type="button"
167
+ :disabled="item.disabled"
168
+ :text-value="get(item, props.labelKey)"
169
+ data-slot="item"
170
+ :class="ui.item({ class: [uiOverride?.item, item.ui?.item, item.class], color: item?.color })"
171
+ >
172
+ <ReuseItemTemplate :item="item" :index="index" />
173
+ </DropdownMenu.SubTrigger>
172
174
 
173
- <UDropdownMenuContent
174
- sub
175
- :class="item.ui?.content"
176
- :ui="ui"
177
- :ui-override="uiOverride"
178
- :portal="portal"
179
- :items="item.children"
180
- align="start"
181
- :align-offset="-4"
182
- :side-offset="3"
183
- :label-key="labelKey"
184
- :description-key="descriptionKey"
185
- :checked-icon="checkedIcon"
186
- :loading-icon="loadingIcon"
187
- :external-icon="externalIcon"
188
- :size="size"
189
- :filter="item.filter"
190
- :filter-fields="item.filterFields || filterFields"
191
- :ignore-filter="item.ignoreFilter ?? ignoreFilter"
192
- v-bind="item.content"
193
- >
194
- <template v-for="(_, name) in getProxySlots()" #[name]="slotData">
195
- <slot :name="name" v-bind="slotData" />
196
- </template>
197
- </UDropdownMenuContent>
198
- </DropdownMenu.Sub>
199
- <DropdownMenu.CheckboxItem
200
- v-else-if="item.type === 'checkbox'"
201
- :model-value="item.checked"
202
- :disabled="item.disabled"
203
- :text-value="get(item, props.labelKey)"
204
- data-slot="item"
205
- :class="ui.item({ class: [uiOverride?.item, item.ui?.item, item.class], color: item?.color })"
206
- @update:model-value="item.onUpdateChecked"
207
- @select="item.onSelect"
208
- >
209
- <ReuseItemTemplate :item="item" :index="index" />
210
- </DropdownMenu.CheckboxItem>
211
- <ULink v-else v-slot="{ active, ...slotProps }" v-bind="pickLinkProps(item)" custom>
212
- <DropdownMenu.Item
213
- as-child
175
+ <UDropdownMenuContent
176
+ sub
177
+ :class="item.ui?.content"
178
+ :ui="ui"
179
+ :ui-override="uiOverride"
180
+ :portal="portal"
181
+ :items="item.children"
182
+ align="start"
183
+ :align-offset="-4"
184
+ :side-offset="3"
185
+ :label-key="labelKey"
186
+ :description-key="descriptionKey"
187
+ :checked-icon="checkedIcon"
188
+ :loading-icon="loadingIcon"
189
+ :external-icon="externalIcon"
190
+ :size="size"
191
+ :filter="item.filter"
192
+ :filter-fields="item.filterFields || filterFields"
193
+ :ignore-filter="item.ignoreFilter ?? ignoreFilter"
194
+ v-bind="item.content"
195
+ >
196
+ <template v-for="(_, name) in getProxySlots()" #[name]="slotData">
197
+ <slot :name="name" v-bind="slotData" />
198
+ </template>
199
+ </UDropdownMenuContent>
200
+ </DropdownMenu.Sub>
201
+ <DropdownMenu.CheckboxItem
202
+ v-else-if="item.type === 'checkbox'"
203
+ :model-value="item.checked"
214
204
  :disabled="item.disabled"
215
205
  :text-value="get(item, props.labelKey)"
206
+ data-slot="item"
207
+ :class="ui.item({ class: [uiOverride?.item, item.ui?.item, item.class], color: item?.color })"
208
+ @update:model-value="item.onUpdateChecked"
216
209
  @select="item.onSelect"
217
210
  >
218
- <ULinkBase v-bind="slotProps" data-slot="item" :class="ui.item({ class: [uiOverride?.item, item.ui?.item, item.class], color: item?.color, active })">
219
- <ReuseItemTemplate :item="item" :active="active" :index="index" />
220
- </ULinkBase>
221
- </DropdownMenu.Item>
222
- </ULink>
223
- </template>
224
- </DropdownMenu.Group>
225
- </div>
211
+ <ReuseItemTemplate :item="item" :index="index" />
212
+ </DropdownMenu.CheckboxItem>
213
+ <ULink v-else v-slot="{ active, ...slotProps }" v-bind="pickLinkProps(item)" custom>
214
+ <DropdownMenu.Item
215
+ as-child
216
+ :disabled="item.disabled"
217
+ :text-value="get(item, props.labelKey)"
218
+ @select="item.onSelect"
219
+ >
220
+ <ULinkBase v-bind="slotProps" data-slot="item" :class="ui.item({ class: [uiOverride?.item, item.ui?.item, item.class], color: item?.color, active })">
221
+ <ReuseItemTemplate :item="item" :active="active" :index="index" />
222
+ </ULinkBase>
223
+ </DropdownMenu.Item>
224
+ </ULink>
225
+ </template>
226
+ </DropdownMenu.Group>
227
+ </div>
226
228
 
227
- <div v-if="searchTerm && !hasFilteredItems" data-slot="empty" :class="ui.empty({ class: uiOverride?.empty })">
228
- <slot name="empty" :search-term="searchTerm">
229
- {{ t("dropdownMenu.noMatch", { searchTerm }) }}
230
- </slot>
231
- </div>
229
+ <div v-if="searchTerm && !hasFilteredItems" data-slot="empty" :class="ui.empty({ class: uiOverride?.empty })">
230
+ <slot name="empty" :search-term="searchTerm">
231
+ {{ t("dropdownMenu.noMatch", { searchTerm }) }}
232
+ </slot>
233
+ </div>
232
234
 
233
- <slot />
235
+ <slot />
234
236
 
235
- <slot name="content-bottom" :sub="sub ?? false" />
236
- </component>
237
+ <slot name="content-bottom" :sub="sub ?? false" />
238
+ </component>
239
+ </FieldGroupReset>
237
240
  </DropdownMenu.Portal>
238
241
  </template>
@@ -12,7 +12,7 @@ export interface EditorEmojiMenuItem {
12
12
  fallbackImage?: string;
13
13
  [key: string]: any;
14
14
  }
15
- export interface EditorEmojiMenuProps<T extends EditorEmojiMenuItem = EditorEmojiMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'appendTo'>> {
15
+ export interface EditorEmojiMenuProps<T extends EditorEmojiMenuItem = EditorEmojiMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'suggestion' | 'appendTo'>> {
16
16
  /**
17
17
  * @defaultValue 'md'
18
18
  */
@@ -19,6 +19,7 @@ const props = defineProps({
19
19
  filterFields: { type: Array, required: false, default: () => ["name", "shortcodes", "tags"] },
20
20
  limit: { type: Number, required: false },
21
21
  options: { type: Object, required: false },
22
+ suggestion: { type: Object, required: false },
22
23
  appendTo: { type: Function, required: false, skipCheck: true }
23
24
  });
24
25
  const appConfig = useAppConfig();
@@ -39,6 +40,7 @@ onMounted(async () => {
39
40
  filterFields: props.filterFields,
40
41
  limit: props.limit,
41
42
  options: props.options,
43
+ suggestion: props.suggestion,
42
44
  appendTo: props.appendTo,
43
45
  ui,
44
46
  onSelect: (editor, range, item) => {
@@ -12,7 +12,7 @@ export interface EditorEmojiMenuItem {
12
12
  fallbackImage?: string;
13
13
  [key: string]: any;
14
14
  }
15
- export interface EditorEmojiMenuProps<T extends EditorEmojiMenuItem = EditorEmojiMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'appendTo'>> {
15
+ export interface EditorEmojiMenuProps<T extends EditorEmojiMenuItem = EditorEmojiMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'suggestion' | 'appendTo'>> {
16
16
  /**
17
17
  * @defaultValue 'md'
18
18
  */
@@ -16,7 +16,7 @@ export interface EditorMentionMenuItem {
16
16
  class?: any;
17
17
  [key: string]: any;
18
18
  }
19
- export interface EditorMentionMenuProps<T extends EditorMentionMenuItem = EditorMentionMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'appendTo' | 'ignoreFilter'>> {
19
+ export interface EditorMentionMenuProps<T extends EditorMentionMenuItem = EditorMentionMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'suggestion' | 'appendTo' | 'ignoreFilter'>> {
20
20
  /**
21
21
  * @defaultValue 'md'
22
22
  */
@@ -21,6 +21,7 @@ const props = defineProps({
21
21
  filterFields: { type: Array, required: false },
22
22
  limit: { type: Number, required: false },
23
23
  options: { type: Object, required: false },
24
+ suggestion: { type: Object, required: false },
24
25
  appendTo: { type: Function, required: false, skipCheck: true },
25
26
  ignoreFilter: { type: Boolean, required: false }
26
27
  });
@@ -44,6 +45,7 @@ onMounted(async () => {
44
45
  ignoreFilter: props.ignoreFilter,
45
46
  limit: props.limit,
46
47
  options: props.options,
48
+ suggestion: props.suggestion,
47
49
  appendTo: props.appendTo,
48
50
  searchTerm,
49
51
  ui,
@@ -16,7 +16,7 @@ export interface EditorMentionMenuItem {
16
16
  class?: any;
17
17
  [key: string]: any;
18
18
  }
19
- export interface EditorMentionMenuProps<T extends EditorMentionMenuItem = EditorMentionMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'appendTo' | 'ignoreFilter'>> {
19
+ export interface EditorMentionMenuProps<T extends EditorMentionMenuItem = EditorMentionMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'suggestion' | 'appendTo' | 'ignoreFilter'>> {
20
20
  /**
21
21
  * @defaultValue 'md'
22
22
  */
@@ -29,7 +29,7 @@ type EditorSuggestionMenuActionItem<H extends EditorCustomHandlers = EditorCusto
29
29
  [key: string]: any;
30
30
  } & EditorItem<H>;
31
31
  export type EditorSuggestionMenuItem<H extends EditorCustomHandlers = EditorCustomHandlers> = EditorSuggestionMenuLabelItem | EditorSuggestionMenuSeparatorItem | EditorSuggestionMenuActionItem<H>;
32
- export interface EditorSuggestionMenuProps<T extends EditorSuggestionMenuItem = EditorSuggestionMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'appendTo'>> {
32
+ export interface EditorSuggestionMenuProps<T extends EditorSuggestionMenuItem = EditorSuggestionMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'suggestion' | 'appendTo'>> {
33
33
  /**
34
34
  * @defaultValue 'md'
35
35
  */
@@ -21,6 +21,7 @@ const props = defineProps({
21
21
  filterFields: { type: Array, required: false },
22
22
  limit: { type: Number, required: false },
23
23
  options: { type: Object, required: false },
24
+ suggestion: { type: Object, required: false },
24
25
  appendTo: { type: Function, required: false, skipCheck: true }
25
26
  });
26
27
  const appConfig = useAppConfig();
@@ -42,6 +43,7 @@ onMounted(async () => {
42
43
  filterFields: props.filterFields,
43
44
  limit: props.limit,
44
45
  options: props.options,
46
+ suggestion: props.suggestion,
45
47
  appendTo: props.appendTo,
46
48
  ui,
47
49
  onSelect: (editor, range, item) => {
@@ -29,7 +29,7 @@ type EditorSuggestionMenuActionItem<H extends EditorCustomHandlers = EditorCusto
29
29
  [key: string]: any;
30
30
  } & EditorItem<H>;
31
31
  export type EditorSuggestionMenuItem<H extends EditorCustomHandlers = EditorCustomHandlers> = EditorSuggestionMenuLabelItem | EditorSuggestionMenuSeparatorItem | EditorSuggestionMenuActionItem<H>;
32
- export interface EditorSuggestionMenuProps<T extends EditorSuggestionMenuItem = EditorSuggestionMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'appendTo'>> {
32
+ export interface EditorSuggestionMenuProps<T extends EditorSuggestionMenuItem = EditorSuggestionMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'suggestion' | 'appendTo'>> {
33
33
  /**
34
34
  * @defaultValue 'md'
35
35
  */
@@ -9,6 +9,7 @@ import { createReusableTemplate } from "@vueuse/core";
9
9
  import { useAppConfig } from "#imports";
10
10
  import { useLocale } from "../composables/useLocale";
11
11
  import { useComponentUI } from "../composables/useComponentUI";
12
+ import { useResolvedVariants } from "../composables/useResolvedVariants";
12
13
  import { useFormField } from "../composables/useFormField";
13
14
  import { useFileUpload } from "../composables/useFileUpload";
14
15
  import { tv } from "../utils/tv";
@@ -59,9 +60,10 @@ const { isDragging, open, inputRef, dropzoneRef } = useFileUpload({
59
60
  dropzone: props.dropzone,
60
61
  onUpdate
61
62
  });
62
- const { emitFormInput, emitFormChange, id, name, disabled, ariaAttrs } = useFormField(props);
63
- const variant = computed(() => props.multiple ? "area" : props.variant);
64
- const layout = computed(() => props.variant === "button" && !props.multiple ? "grid" : props.layout);
63
+ const { emitFormInput, emitFormChange, id, name, color, highlight, disabled, ariaAttrs } = useFormField(props);
64
+ const { variant: resolvedVariant } = useResolvedVariants("fileUpload", props, theme, ["variant"]);
65
+ const variant = computed(() => props.multiple ? "area" : resolvedVariant.value);
66
+ const layout = computed(() => resolvedVariant.value === "button" && !props.multiple ? "grid" : props.layout);
65
67
  const position = computed(() => {
66
68
  if (layout.value === "grid" && props.multiple) {
67
69
  return "inside";
@@ -74,13 +76,13 @@ const position = computed(() => {
74
76
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.fileUpload || {} })({
75
77
  dropzone: props.dropzone,
76
78
  interactive: props.interactive,
77
- color: props.color,
79
+ color: color.value,
78
80
  size: props.size,
79
81
  variant: variant.value,
80
82
  layout: layout.value,
81
83
  position: position.value,
82
84
  multiple: props.multiple,
83
- highlight: props.highlight,
85
+ highlight: highlight.value,
84
86
  disabled: props.disabled
85
87
  }));
86
88
  function createObjectUrl(file) {
@@ -11,7 +11,7 @@ export interface FormFieldProps {
11
11
  as?: any;
12
12
  /** The name of the FormField. Also used to match form errors. */
13
13
  name?: string;
14
- /** A regular expression to match form error names. */
14
+ /** A regular expression to match form error names. Useful for components with array values such as InputTags, where errors include array indices in their name (e.g. `tags.0`). */
15
15
  errorPattern?: RegExp;
16
16
  label?: string;
17
17
  description?: string;
@@ -11,7 +11,7 @@ export interface FormFieldProps {
11
11
  as?: any;
12
12
  /** The name of the FormField. Also used to match form errors. */
13
13
  name?: string;
14
- /** A regular expression to match form error names. */
14
+ /** A regular expression to match form error names. Useful for components with array values such as InputTags, where errors include array indices in their name (e.g. `tags.0`). */
15
15
  errorPattern?: RegExp;
16
16
  label?: string;
17
17
  description?: string;
@@ -54,11 +54,7 @@ const Menu = computed(() => ({
54
54
  modal: UModal,
55
55
  drawer: UDrawer
56
56
  })[props.mode]);
57
- const menuProps = toRef(() => defu(props.menu, {
58
- content: {
59
- onOpenAutoFocus: (e) => e.preventDefault()
60
- }
61
- }, props.mode === "modal" ? { fullscreen: true, transition: false } : {}));
57
+ const menuProps = toRef(() => defu(props.menu, {}, props.mode === "modal" ? { fullscreen: true, transition: false } : {}));
62
58
  function toggleOpen() {
63
59
  open.value = !open.value;
64
60
  }
@@ -51,10 +51,10 @@ const slots = defineSlots();
51
51
  const modelValue = useVModel(props, "modelValue", emits, { defaultValue: props.defaultValue });
52
52
  const appConfig = useAppConfig();
53
53
  const uiProp = useComponentUI("input", props);
54
- const { emitFormBlur, emitFormInput, emitFormChange, size: formGroupSize, color, id, name, highlight, disabled, emitFormFocus, ariaAttrs } = useFormField(props, { deferInputValidation: true });
54
+ const { emitFormBlur, emitFormInput, emitFormChange, size: formFieldSize, color, id, name, highlight, disabled, emitFormFocus, ariaAttrs } = useFormField(props, { deferInputValidation: true });
55
55
  const { orientation, size: fieldGroupSize } = useFieldGroup(props);
56
56
  const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props);
57
- const inputSize = computed(() => fieldGroupSize.value || formGroupSize.value);
57
+ const inputSize = computed(() => fieldGroupSize.value || formFieldSize.value);
58
58
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.input || {} })({
59
59
  type: props.type,
60
60
  color: color.value,
@@ -39,14 +39,14 @@ const props = defineProps({
39
39
  trailingIcon: { type: null, required: false },
40
40
  loading: { type: Boolean, required: false },
41
41
  loadingIcon: { type: null, required: false },
42
- defaultPlaceholder: { type: null, required: false },
43
- placeholder: { type: null, required: false },
42
+ defaultPlaceholder: { type: Object, required: false },
43
+ placeholder: { type: Object, required: false },
44
44
  hourCycle: { type: null, required: false },
45
45
  step: { type: Object, required: false },
46
46
  granularity: { type: String, required: false },
47
47
  hideTimeZone: { type: Boolean, required: false },
48
- maxValue: { type: null, required: false },
49
- minValue: { type: null, required: false },
48
+ maxValue: { type: Object, required: false },
49
+ minValue: { type: Object, required: false },
50
50
  disabled: { type: Boolean, required: false },
51
51
  readonly: { type: Boolean, required: false },
52
52
  isDateUnavailable: { type: Function, required: false },
@@ -59,11 +59,11 @@ const slots = defineSlots();
59
59
  const appConfig = useAppConfig();
60
60
  const uiProp = useComponentUI("inputDate", props);
61
61
  const rootProps = useForwardPropsEmits(reactiveOmit(props, "id", "name", "range", "modelValue", "defaultValue", "color", "variant", "size", "highlight", "fixed", "disabled", "autofocus", "autofocusDelay", "icon", "avatar", "leading", "leadingIcon", "trailing", "trailingIcon", "loading", "loadingIcon", "separatorIcon", "class", "ui"), emits);
62
- const { emitFormBlur, emitFormFocus, emitFormChange, emitFormInput, size: formGroupSize, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props);
62
+ const { emitFormBlur, emitFormFocus, emitFormChange, emitFormInput, size: formFieldSize, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props);
63
63
  const { orientation, size: fieldGroupSize } = useFieldGroup(props);
64
64
  const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props);
65
65
  const [DefineSegmentsTemplate, ReuseSegmentsTemplate] = createReusableTemplate();
66
- const inputSize = computed(() => fieldGroupSize.value || formGroupSize.value);
66
+ const inputSize = computed(() => fieldGroupSize.value || formFieldSize.value);
67
67
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.inputDate || {} })({
68
68
  color: color.value,
69
69
  variant: props.variant,
@@ -241,7 +241,6 @@ declare const __VLS_export: <T extends ArrayOrNested<InputMenuItem>, VK extends
241
241
  props: import("vue").PublicProps & __VLS_PrettifyLocal<(InputMenuProps<T, VK, M, Mod, C> & {
242
242
  searchTerm?: string;
243
243
  }) & {
244
- onClear?: (() => any) | undefined;
245
244
  onBlur?: ((event: FocusEvent) => any) | undefined;
246
245
  onChange?: ((event: Event) => any) | undefined;
247
246
  onFocus?: ((event: FocusEvent) => any) | undefined;
@@ -269,6 +268,7 @@ declare const __VLS_export: <T extends ArrayOrNested<InputMenuItem>, VK extends
269
268
  nullable: true;
270
269
  } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | IsClearUsed<M, C>;
271
270
  } | undefined) => any) | undefined;
271
+ onClear?: (() => any) | undefined;
272
272
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
273
273
  onCreate?: ((item: string) => any) | undefined;
274
274
  "onUpdate:modelValue"?: ((value: (Mod extends {
@@ -323,7 +323,7 @@ declare const __VLS_export: <T extends ArrayOrNested<InputMenuItem>, VK extends
323
323
  }>) => void;
324
324
  attrs: any;
325
325
  slots: InputMenuSlots<T, VK, M, Mod, C, NestedItem<T>>;
326
- emit: (((evt: "clear") => void) & ((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "highlight", payload: {
326
+ emit: (((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "highlight", payload: {
327
327
  ref: HTMLElement;
328
328
  value: (Mod extends {
329
329
  number: true;
@@ -346,7 +346,7 @@ declare const __VLS_export: <T extends ArrayOrNested<InputMenuItem>, VK extends
346
346
  } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | undefined : Mod extends {
347
347
  nullable: true;
348
348
  } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | IsClearUsed<M, C>;
349
- } | undefined) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "create", item: string) => void) & ((evt: "update:modelValue", value: (Mod extends {
349
+ } | undefined) => void) & ((evt: "clear") => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "create", item: string) => void) & ((evt: "update:modelValue", value: (Mod extends {
350
350
  number: true;
351
351
  } ? (Mod extends {
352
352
  optional: true;
@@ -11,7 +11,7 @@ import { isEqual } from "ohash/utils";
11
11
  import { reactivePick, reactiveOmit, createReusableTemplate } from "@vueuse/core";
12
12
  import { useAppConfig } from "#imports";
13
13
  import { useComponentUI } from "../composables/useComponentUI";
14
- import { useFieldGroup } from "../composables/useFieldGroup";
14
+ import { useFieldGroup, FieldGroupReset } from "../composables/useFieldGroup";
15
15
  import { useComponentIcons } from "../composables/useComponentIcons";
16
16
  import { useFormField } from "../composables/useFormField";
17
17
  import { useFilter } from "../composables/useFilter";
@@ -100,10 +100,10 @@ const virtualizerProps = toRef(() => {
100
100
  estimateSize: getEstimateSize(filteredItems.value, inputSize.value || "md", props.descriptionKey, !!slots["item-description"])
101
101
  });
102
102
  });
103
- const { emitFormBlur, emitFormFocus, emitFormChange, emitFormInput, size: formGroupSize, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props);
103
+ const { emitFormBlur, emitFormFocus, emitFormChange, emitFormInput, size: formFieldSize, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props);
104
104
  const { orientation, size: fieldGroupSize } = useFieldGroup(props);
105
105
  const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(toRef(() => defu(props, { trailingIcon: appConfig.ui.icons.chevronDown })));
106
- const inputSize = computed(() => fieldGroupSize.value || formGroupSize.value);
106
+ const inputSize = computed(() => fieldGroupSize.value || formFieldSize.value);
107
107
  const [DefineCreateItemTemplate, ReuseCreateItemTemplate] = createReusableTemplate();
108
108
  const [DefineItemTemplate, ReuseItemTemplate] = createReusableTemplate({
109
109
  props: {
@@ -453,50 +453,52 @@ defineExpose({
453
453
  </Component.Anchor>
454
454
 
455
455
  <Component.Portal v-bind="portalProps">
456
- <Component.Content data-slot="content" :class="ui.content({ class: uiProp?.content })" v-bind="contentProps" @focus-outside.prevent>
457
- <slot name="content-top" />
456
+ <FieldGroupReset>
457
+ <Component.Content data-slot="content" :class="ui.content({ class: uiProp?.content })" v-bind="contentProps" @focus-outside.prevent>
458
+ <slot name="content-top" />
458
459
 
459
- <Component.Empty data-slot="empty" :class="ui.empty({ class: uiProp?.empty })">
460
- <slot name="empty" :search-term="searchTerm">
461
- {{ searchTerm ? t("inputMenu.noMatch", { searchTerm }) : t("inputMenu.noData") }}
462
- </slot>
463
- </Component.Empty>
460
+ <Component.Empty data-slot="empty" :class="ui.empty({ class: uiProp?.empty })">
461
+ <slot name="empty" :search-term="searchTerm">
462
+ {{ searchTerm ? t("inputMenu.noMatch", { searchTerm }) : t("inputMenu.noData") }}
463
+ </slot>
464
+ </Component.Empty>
464
465
 
465
- <div ref="viewportRef" role="presentation" data-slot="viewport" :class="ui.viewport({ class: uiProp?.viewport })">
466
- <template v-if="!!virtualize">
467
- <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'top'" />
466
+ <div ref="viewportRef" role="presentation" data-slot="viewport" :class="ui.viewport({ class: uiProp?.viewport })">
467
+ <template v-if="!!virtualize">
468
+ <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'top'" />
468
469
 
469
- <Component.Virtualizer
470
- v-slot="{ option: item, virtualItem }"
471
- :options="filteredItems"
472
- :text-content="(item2) => isInputItem(item2) ? get(item2, props.labelKey) : String(item2)"
473
- v-bind="virtualizerProps"
474
- >
475
- <ReuseItemTemplate :item="item" :index="virtualItem.index" />
476
- </Component.Virtualizer>
470
+ <Component.Virtualizer
471
+ v-slot="{ option: item, virtualItem }"
472
+ :options="filteredItems"
473
+ :text-content="(item2) => isInputItem(item2) ? get(item2, props.labelKey) : String(item2)"
474
+ v-bind="virtualizerProps"
475
+ >
476
+ <ReuseItemTemplate :item="item" :index="virtualItem.index" />
477
+ </Component.Virtualizer>
477
478
 
478
- <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'bottom'" />
479
- </template>
479
+ <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'bottom'" />
480
+ </template>
480
481
 
481
- <template v-else>
482
- <Component.Group v-if="createItem && createItemPosition === 'top'" data-slot="group" :class="ui.group({ class: uiProp?.group })">
483
- <ReuseCreateItemTemplate />
484
- </Component.Group>
482
+ <template v-else>
483
+ <Component.Group v-if="createItem && createItemPosition === 'top'" data-slot="group" :class="ui.group({ class: uiProp?.group })">
484
+ <ReuseCreateItemTemplate />
485
+ </Component.Group>
485
486
 
486
- <Component.Group v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" data-slot="group" :class="ui.group({ class: uiProp?.group })">
487
- <ReuseItemTemplate v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`" :item="item" :index="index" />
488
- </Component.Group>
487
+ <Component.Group v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" data-slot="group" :class="ui.group({ class: uiProp?.group })">
488
+ <ReuseItemTemplate v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`" :item="item" :index="index" />
489
+ </Component.Group>
489
490
 
490
- <Component.Group v-if="createItem && createItemPosition === 'bottom'" data-slot="group" :class="ui.group({ class: uiProp?.group })">
491
- <ReuseCreateItemTemplate />
492
- </Component.Group>
493
- </template>
494
- </div>
491
+ <Component.Group v-if="createItem && createItemPosition === 'bottom'" data-slot="group" :class="ui.group({ class: uiProp?.group })">
492
+ <ReuseCreateItemTemplate />
493
+ </Component.Group>
494
+ </template>
495
+ </div>
495
496
 
496
- <slot name="content-bottom" />
497
+ <slot name="content-bottom" />
497
498
 
498
- <Component.Arrow v-if="!!arrow" v-bind="arrowProps" data-slot="arrow" :class="ui.arrow({ class: uiProp?.arrow })" />
499
- </Component.Content>
499
+ <Component.Arrow v-if="!!arrow" v-bind="arrowProps" data-slot="arrow" :class="ui.arrow({ class: uiProp?.arrow })" />
500
+ </Component.Content>
501
+ </FieldGroupReset>
500
502
  </Component.Portal>
501
503
  </Component.Root>
502
504
  </template>
@@ -241,7 +241,6 @@ declare const __VLS_export: <T extends ArrayOrNested<InputMenuItem>, VK extends
241
241
  props: import("vue").PublicProps & __VLS_PrettifyLocal<(InputMenuProps<T, VK, M, Mod, C> & {
242
242
  searchTerm?: string;
243
243
  }) & {
244
- onClear?: (() => any) | undefined;
245
244
  onBlur?: ((event: FocusEvent) => any) | undefined;
246
245
  onChange?: ((event: Event) => any) | undefined;
247
246
  onFocus?: ((event: FocusEvent) => any) | undefined;
@@ -269,6 +268,7 @@ declare const __VLS_export: <T extends ArrayOrNested<InputMenuItem>, VK extends
269
268
  nullable: true;
270
269
  } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | IsClearUsed<M, C>;
271
270
  } | undefined) => any) | undefined;
271
+ onClear?: (() => any) | undefined;
272
272
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
273
273
  onCreate?: ((item: string) => any) | undefined;
274
274
  "onUpdate:modelValue"?: ((value: (Mod extends {
@@ -323,7 +323,7 @@ declare const __VLS_export: <T extends ArrayOrNested<InputMenuItem>, VK extends
323
323
  }>) => void;
324
324
  attrs: any;
325
325
  slots: InputMenuSlots<T, VK, M, Mod, C, NestedItem<T>>;
326
- emit: (((evt: "clear") => void) & ((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "highlight", payload: {
326
+ emit: (((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "highlight", payload: {
327
327
  ref: HTMLElement;
328
328
  value: (Mod extends {
329
329
  number: true;
@@ -346,7 +346,7 @@ declare const __VLS_export: <T extends ArrayOrNested<InputMenuItem>, VK extends
346
346
  } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | undefined : Mod extends {
347
347
  nullable: true;
348
348
  } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | IsClearUsed<M, C>;
349
- } | undefined) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "create", item: string) => void) & ((evt: "update:modelValue", value: (Mod extends {
349
+ } | undefined) => void) & ((evt: "clear") => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "create", item: string) => void) & ((evt: "update:modelValue", value: (Mod extends {
350
350
  number: true;
351
351
  } ? (Mod extends {
352
352
  optional: true;