@nuxt/ui 4.6.1 → 4.7.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 (168) 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/Calendar.vue +4 -4
  12. package/dist/runtime/components/Card.d.vue.ts +4 -0
  13. package/dist/runtime/components/Card.vue +16 -2
  14. package/dist/runtime/components/Card.vue.d.ts +4 -0
  15. package/dist/runtime/components/ChatMessage.d.vue.ts +27 -17
  16. package/dist/runtime/components/ChatMessage.vue +10 -16
  17. package/dist/runtime/components/ChatMessage.vue.d.ts +27 -17
  18. package/dist/runtime/components/ChatMessages.d.vue.ts +27 -21
  19. package/dist/runtime/components/ChatMessages.vue +22 -23
  20. package/dist/runtime/components/ChatMessages.vue.d.ts +27 -21
  21. package/dist/runtime/components/ChatPromptSubmit.vue +3 -1
  22. package/dist/runtime/components/Checkbox.vue +5 -3
  23. package/dist/runtime/components/CommandPalette.d.vue.ts +18 -3
  24. package/dist/runtime/components/CommandPalette.vue +11 -7
  25. package/dist/runtime/components/CommandPalette.vue.d.ts +18 -3
  26. package/dist/runtime/components/ContextMenuContent.vue +68 -65
  27. package/dist/runtime/components/DashboardSearch.d.vue.ts +8 -37
  28. package/dist/runtime/components/DashboardSearch.vue +11 -10
  29. package/dist/runtime/components/DashboardSearch.vue.d.ts +8 -37
  30. package/dist/runtime/components/DashboardSidebar.vue +1 -5
  31. package/dist/runtime/components/Drawer.vue +44 -41
  32. package/dist/runtime/components/DropdownMenuContent.vue +90 -87
  33. package/dist/runtime/components/EditorEmojiMenu.d.vue.ts +1 -1
  34. package/dist/runtime/components/EditorEmojiMenu.vue +2 -0
  35. package/dist/runtime/components/EditorEmojiMenu.vue.d.ts +1 -1
  36. package/dist/runtime/components/EditorMentionMenu.d.vue.ts +1 -1
  37. package/dist/runtime/components/EditorMentionMenu.vue +2 -0
  38. package/dist/runtime/components/EditorMentionMenu.vue.d.ts +1 -1
  39. package/dist/runtime/components/EditorSuggestionMenu.d.vue.ts +1 -1
  40. package/dist/runtime/components/EditorSuggestionMenu.vue +2 -0
  41. package/dist/runtime/components/EditorSuggestionMenu.vue.d.ts +1 -1
  42. package/dist/runtime/components/FileUpload.vue +7 -5
  43. package/dist/runtime/components/Header.vue +1 -5
  44. package/dist/runtime/components/Input.vue +2 -2
  45. package/dist/runtime/components/InputDate.vue +6 -6
  46. package/dist/runtime/components/InputMenu.d.vue.ts +3 -3
  47. package/dist/runtime/components/InputMenu.vue +40 -38
  48. package/dist/runtime/components/InputMenu.vue.d.ts +3 -3
  49. package/dist/runtime/components/InputNumber.vue +2 -2
  50. package/dist/runtime/components/InputTags.vue +2 -2
  51. package/dist/runtime/components/InputTime.vue +2 -2
  52. package/dist/runtime/components/Link.vue +64 -8
  53. package/dist/runtime/components/Listbox.d.vue.ts +228 -0
  54. package/dist/runtime/components/Listbox.vue +242 -0
  55. package/dist/runtime/components/Listbox.vue.d.ts +228 -0
  56. package/dist/runtime/components/Modal.vue +13 -10
  57. package/dist/runtime/components/Popover.vue +7 -4
  58. package/dist/runtime/components/PricingTable.vue +60 -58
  59. package/dist/runtime/components/RadioGroup.vue +5 -3
  60. package/dist/runtime/components/Select.d.vue.ts +1 -1
  61. package/dist/runtime/components/Select.vue +84 -73
  62. package/dist/runtime/components/Select.vue.d.ts +1 -1
  63. package/dist/runtime/components/SelectMenu.d.vue.ts +3 -3
  64. package/dist/runtime/components/SelectMenu.vue +54 -52
  65. package/dist/runtime/components/SelectMenu.vue.d.ts +3 -3
  66. package/dist/runtime/components/Sidebar.vue +1 -4
  67. package/dist/runtime/components/Slideover.vue +67 -64
  68. package/dist/runtime/components/Table.d.vue.ts +1 -2
  69. package/dist/runtime/components/Table.vue +17 -29
  70. package/dist/runtime/components/Table.vue.d.ts +1 -2
  71. package/dist/runtime/components/Tabs.d.vue.ts +5 -1
  72. package/dist/runtime/components/Tabs.vue +2 -2
  73. package/dist/runtime/components/Tabs.vue.d.ts +5 -1
  74. package/dist/runtime/components/Textarea.d.vue.ts +1 -0
  75. package/dist/runtime/components/Textarea.vue +2 -1
  76. package/dist/runtime/components/Textarea.vue.d.ts +1 -0
  77. package/dist/runtime/components/Tooltip.vue +12 -9
  78. package/dist/runtime/components/content/ContentSearch.d.vue.ts +19 -35
  79. package/dist/runtime/components/content/ContentSearch.vue +10 -9
  80. package/dist/runtime/components/content/ContentSearch.vue.d.ts +19 -35
  81. package/dist/runtime/components/content/ContentToc.vue +19 -9
  82. package/dist/runtime/components/prose/Img.vue +2 -1
  83. package/dist/runtime/components/prose/Pre.vue +8 -3
  84. package/dist/runtime/components/prose/Prompt.d.vue.ts +32 -0
  85. package/dist/runtime/components/prose/Prompt.vue +88 -0
  86. package/dist/runtime/components/prose/Prompt.vue.d.ts +32 -0
  87. package/dist/runtime/composables/index.d.ts +1 -0
  88. package/dist/runtime/composables/index.js +1 -0
  89. package/dist/runtime/composables/useContentSearch.js +19 -5
  90. package/dist/runtime/composables/useEditorMenu.d.ts +5 -0
  91. package/dist/runtime/composables/useEditorMenu.js +3 -1
  92. package/dist/runtime/composables/useFieldGroup.d.ts +3 -0
  93. package/dist/runtime/composables/useFieldGroup.js +11 -1
  94. package/dist/runtime/composables/useResolvedVariants.d.ts +21 -0
  95. package/dist/runtime/composables/useResolvedVariants.js +14 -0
  96. package/dist/runtime/locale/ar.js +9 -0
  97. package/dist/runtime/locale/az.js +9 -0
  98. package/dist/runtime/locale/be.js +9 -0
  99. package/dist/runtime/locale/bg.js +9 -0
  100. package/dist/runtime/locale/bn.js +9 -0
  101. package/dist/runtime/locale/ca.js +9 -0
  102. package/dist/runtime/locale/ckb.js +10 -1
  103. package/dist/runtime/locale/cs.js +9 -0
  104. package/dist/runtime/locale/da.js +9 -0
  105. package/dist/runtime/locale/de.js +9 -0
  106. package/dist/runtime/locale/de_ch.js +9 -0
  107. package/dist/runtime/locale/el.js +9 -0
  108. package/dist/runtime/locale/en.js +10 -1
  109. package/dist/runtime/locale/es.js +9 -0
  110. package/dist/runtime/locale/et.js +9 -0
  111. package/dist/runtime/locale/eu.js +11 -2
  112. package/dist/runtime/locale/fa_ir.js +9 -0
  113. package/dist/runtime/locale/fi.js +9 -0
  114. package/dist/runtime/locale/fr.js +9 -0
  115. package/dist/runtime/locale/gl.js +9 -0
  116. package/dist/runtime/locale/he.js +9 -0
  117. package/dist/runtime/locale/hi.js +9 -0
  118. package/dist/runtime/locale/hr.js +9 -0
  119. package/dist/runtime/locale/hu.js +9 -0
  120. package/dist/runtime/locale/hy.js +9 -0
  121. package/dist/runtime/locale/id.js +9 -0
  122. package/dist/runtime/locale/is.js +9 -0
  123. package/dist/runtime/locale/it.js +9 -0
  124. package/dist/runtime/locale/ja.js +9 -0
  125. package/dist/runtime/locale/ka.js +9 -0
  126. package/dist/runtime/locale/kk.js +9 -0
  127. package/dist/runtime/locale/km.js +9 -0
  128. package/dist/runtime/locale/ko.js +9 -0
  129. package/dist/runtime/locale/ky.js +9 -0
  130. package/dist/runtime/locale/lb.js +11 -2
  131. package/dist/runtime/locale/lo.js +15 -6
  132. package/dist/runtime/locale/lt.js +9 -0
  133. package/dist/runtime/locale/mn.js +9 -0
  134. package/dist/runtime/locale/ms.js +9 -0
  135. package/dist/runtime/locale/nb_no.js +9 -0
  136. package/dist/runtime/locale/nl.js +9 -0
  137. package/dist/runtime/locale/pl.js +9 -0
  138. package/dist/runtime/locale/pt.js +9 -0
  139. package/dist/runtime/locale/pt_br.js +9 -0
  140. package/dist/runtime/locale/ro.js +9 -0
  141. package/dist/runtime/locale/ru.js +9 -0
  142. package/dist/runtime/locale/sk.js +9 -0
  143. package/dist/runtime/locale/sl.js +9 -0
  144. package/dist/runtime/locale/sq.js +9 -0
  145. package/dist/runtime/locale/sv.js +9 -0
  146. package/dist/runtime/locale/th.js +9 -0
  147. package/dist/runtime/locale/tj.js +9 -0
  148. package/dist/runtime/locale/tr.js +9 -0
  149. package/dist/runtime/locale/ug_cn.js +9 -0
  150. package/dist/runtime/locale/uk.js +9 -0
  151. package/dist/runtime/locale/ur.js +9 -0
  152. package/dist/runtime/locale/uz.js +9 -0
  153. package/dist/runtime/locale/vi.js +9 -0
  154. package/dist/runtime/locale/zh_cn.js +9 -0
  155. package/dist/runtime/locale/zh_tw.js +9 -0
  156. package/dist/runtime/plugins/colors.js +1 -1
  157. package/dist/runtime/types/index.d.ts +1 -0
  158. package/dist/runtime/types/index.js +1 -0
  159. package/dist/runtime/types/locale.d.ts +9 -0
  160. package/dist/runtime/types/prose.d.ts +1 -0
  161. package/dist/runtime/types/prose.js +1 -0
  162. package/dist/runtime/vue/overrides/inertia/Link.vue +3 -3
  163. package/dist/runtime/vue/overrides/none/Link.vue +3 -2
  164. package/dist/runtime/vue/overrides/vue-router/Link.vue +27 -31
  165. package/dist/shared/{ui.DJUbBpE2.mjs → ui.BIQuJqNV.mjs} +186 -34
  166. package/dist/unplugin.mjs +1 -1
  167. package/dist/vite.mjs +1 -1
  168. package/package.json +48 -39
@@ -4,12 +4,13 @@ import theme from "#build/ui/select";
4
4
 
5
5
  <script setup>
6
6
  import { useTemplateRef, computed, onMounted, toRef } from "vue";
7
- import { SelectRoot, SelectArrow, SelectTrigger, SelectPortal, SelectContent, SelectLabel, SelectGroup, SelectItem as RSelectItem, SelectItemIndicator, SelectItemText, SelectSeparator, useForwardPropsEmits } from "reka-ui";
7
+ import { SelectRoot, SelectArrow, SelectTrigger, SelectPortal, SelectContent, SelectViewport, SelectValue as RSelectValue, SelectLabel, SelectGroup, SelectItem as RSelectItem, 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";
11
11
  import { useComponentUI } from "../composables/useComponentUI";
12
- import { useFieldGroup } from "../composables/useFieldGroup";
12
+ import { useResolvedVariants } from "../composables/useResolvedVariants";
13
+ import { useFieldGroup, FieldGroupReset } from "../composables/useFieldGroup";
13
14
  import { useComponentIcons } from "../composables/useComponentIcons";
14
15
  import { useFormField } from "../composables/useFormField";
15
16
  import { usePortal } from "../composables/usePortal";
@@ -63,12 +64,16 @@ const appConfig = useAppConfig();
63
64
  const uiProp = useComponentUI("select", props);
64
65
  const rootProps = useForwardPropsEmits(reactivePick(props, "open", "defaultOpen", "disabled", "autocomplete", "required", "multiple"), emits);
65
66
  const portalProps = usePortal(toRef(() => props.portal));
66
- const contentProps = toRef(() => defu(props.content, { side: "bottom", sideOffset: 8, collisionPadding: 8, position: "popper" }));
67
+ const { position } = useResolvedVariants("select", props, theme, ["position"], {
68
+ position: () => props.content?.position
69
+ });
70
+ const contentProps = toRef(() => defu(props.content, { side: "bottom", sideOffset: 8, collisionPadding: 8, position: position.value }));
67
71
  const arrowProps = toRef(() => defu(props.arrow, { rounded: true }));
68
- const { emitFormChange, emitFormInput, emitFormBlur, emitFormFocus, size: formGroupSize, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props);
72
+ const { emitFormChange, emitFormInput, emitFormBlur, emitFormFocus, size: formFieldSize, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props);
69
73
  const { orientation, size: fieldGroupSize } = useFieldGroup(props);
70
74
  const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(toRef(() => defu(props, { trailingIcon: appConfig.ui.icons.chevronDown })));
71
- const selectSize = computed(() => fieldGroupSize.value || formGroupSize.value);
75
+ const selectSize = computed(() => fieldGroupSize.value || formFieldSize.value);
76
+ const isItemAligned = computed(() => position.value === "item-aligned");
72
77
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.select || {} })({
73
78
  color: color.value,
74
79
  variant: props.variant,
@@ -77,7 +82,8 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.select || {}
77
82
  highlight: highlight.value,
78
83
  leading: isLeading.value || !!props.avatar || !!slots.leading,
79
84
  trailing: isTrailing.value || !!slots.trailing,
80
- fieldGroup: orientation.value
85
+ fieldGroup: orientation.value,
86
+ position: position.value
81
87
  }));
82
88
  const groups = computed(
83
89
  () => props.items?.length ? isArrayOfArray(props.items) ? props.items : [props.items] : []
@@ -144,7 +150,10 @@ function isSelectItem(item) {
144
150
  const viewportRef = useTemplateRef("viewportRef");
145
151
  defineExpose({
146
152
  triggerRef: toRef(() => triggerRef.value?.$el),
147
- viewportRef: toRef(() => viewportRef.value)
153
+ viewportRef: toRef(() => {
154
+ const instance = viewportRef.value;
155
+ return instance && typeof instance === "object" && "$el" in instance ? instance.$el : instance;
156
+ })
148
157
  });
149
158
  </script>
150
159
 
@@ -174,16 +183,16 @@ defineExpose({
174
183
  </slot>
175
184
  </span>
176
185
 
177
- <slot :model-value="modelValue" :open="open" :ui="ui">
178
- <template v-for="displayedModelValue in [displayValue(modelValue)]" :key="displayedModelValue">
179
- <span v-if="displayedModelValue !== void 0 && displayedModelValue !== null" data-slot="value" :class="ui.value({ class: uiProp?.value })">
180
- {{ displayedModelValue }}
181
- </span>
182
- <span v-else data-slot="placeholder" :class="ui.placeholder({ class: uiProp?.placeholder })">
183
- {{ placeholder ?? "\xA0" }}
184
- </span>
185
- </template>
186
- </slot>
186
+ <template v-for="displayedModelValue in [displayValue(modelValue)]" :key="displayedModelValue">
187
+ <RSelectValue
188
+ :data-slot="displayedModelValue != null ? 'value' : 'placeholder'"
189
+ :class="displayedModelValue != null ? ui.value({ class: uiProp?.value }) : ui.placeholder({ class: uiProp?.placeholder })"
190
+ >
191
+ <slot :model-value="modelValue" :open="open" :ui="ui">
192
+ {{ displayedModelValue ?? (placeholder ?? "\xA0") }}
193
+ </slot>
194
+ </RSelectValue>
195
+ </template>
187
196
 
188
197
  <span v-if="isTrailing || !!slots.trailing" data-slot="trailing" :class="ui.trailing({ class: uiProp?.trailing })">
189
198
  <slot name="trailing" :model-value="modelValue" :open="open" :ui="ui">
@@ -193,72 +202,74 @@ defineExpose({
193
202
  </SelectTrigger>
194
203
 
195
204
  <SelectPortal v-bind="portalProps">
196
- <SelectContent data-slot="content" :class="ui.content({ class: uiProp?.content })" v-bind="contentProps">
197
- <slot name="content-top" />
205
+ <FieldGroupReset>
206
+ <SelectContent data-slot="content" :class="ui.content({ class: uiProp?.content })" v-bind="contentProps">
207
+ <slot name="content-top" />
198
208
 
199
- <div ref="viewportRef" role="presentation" data-slot="viewport" :class="ui.viewport({ class: uiProp?.viewport })">
200
- <SelectGroup v-for="(group, groupIndex) in groups" :key="`group-${groupIndex}`" data-slot="group" :class="ui.group({ class: uiProp?.group })">
201
- <template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
202
- <SelectLabel v-if="isSelectItem(item) && item.type === 'label'" data-slot="label" :class="ui.label({ class: [uiProp?.label, item.ui?.label, item.class] })">
203
- {{ get(item, props.labelKey) }}
204
- </SelectLabel>
209
+ <component :is="isItemAligned ? SelectViewport : 'div'" ref="viewportRef" role="presentation" data-slot="viewport" :class="ui.viewport({ class: uiProp?.viewport })">
210
+ <SelectGroup v-for="(group, groupIndex) in groups" :key="`group-${groupIndex}`" data-slot="group" :class="ui.group({ class: uiProp?.group })">
211
+ <template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
212
+ <SelectLabel v-if="isSelectItem(item) && item.type === 'label'" data-slot="label" :class="ui.label({ class: [uiProp?.label, item.ui?.label, item.class] })">
213
+ {{ get(item, props.labelKey) }}
214
+ </SelectLabel>
205
215
 
206
- <SelectSeparator v-else-if="isSelectItem(item) && item.type === 'separator'" data-slot="separator" :class="ui.separator({ class: [uiProp?.separator, item.ui?.separator, item.class] })" />
216
+ <SelectSeparator v-else-if="isSelectItem(item) && item.type === 'separator'" data-slot="separator" :class="ui.separator({ class: [uiProp?.separator, item.ui?.separator, item.class] })" />
207
217
 
208
- <RSelectItem
209
- v-else
210
- data-slot="item"
211
- :class="ui.item({ class: [uiProp?.item, isSelectItem(item) && item.ui?.item, isSelectItem(item) && item.class] })"
212
- :disabled="isSelectItem(item) && item.disabled"
213
- :value="isSelectItem(item) ? get(item, props.valueKey) : item"
214
- @select="isSelectItem(item) && item.onSelect?.($event)"
215
- >
216
- <slot name="item" :item="item" :index="index" :ui="ui">
217
- <slot name="item-leading" :item="item" :index="index" :ui="ui">
218
- <UIcon v-if="isSelectItem(item) && item.icon" :name="item.icon" data-slot="itemLeadingIcon" :class="ui.itemLeadingIcon({ class: [uiProp?.itemLeadingIcon, item.ui?.itemLeadingIcon] })" />
219
- <UAvatar v-else-if="isSelectItem(item) && item.avatar" :size="item.ui?.itemLeadingAvatarSize || uiProp?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()" v-bind="item.avatar" data-slot="itemLeadingAvatar" :class="ui.itemLeadingAvatar({ class: [uiProp?.itemLeadingAvatar, item.ui?.itemLeadingAvatar] })" />
220
- <UChip
221
- v-else-if="isSelectItem(item) && item.chip"
222
- :size="item.ui?.itemLeadingChipSize || uiProp?.itemLeadingChipSize || ui.itemLeadingChipSize()"
223
- inset
224
- standalone
225
- v-bind="item.chip"
226
- data-slot="itemLeadingChip"
227
- :class="ui.itemLeadingChip({ class: [uiProp?.itemLeadingChip, item.ui?.itemLeadingChip] })"
228
- />
229
- </slot>
218
+ <RSelectItem
219
+ v-else
220
+ data-slot="item"
221
+ :class="ui.item({ class: [uiProp?.item, isSelectItem(item) && item.ui?.item, isSelectItem(item) && item.class] })"
222
+ :disabled="isSelectItem(item) && item.disabled"
223
+ :value="isSelectItem(item) ? get(item, props.valueKey) : item"
224
+ @select="isSelectItem(item) && item.onSelect?.($event)"
225
+ >
226
+ <slot name="item" :item="item" :index="index" :ui="ui">
227
+ <slot name="item-leading" :item="item" :index="index" :ui="ui">
228
+ <UIcon v-if="isSelectItem(item) && item.icon" :name="item.icon" data-slot="itemLeadingIcon" :class="ui.itemLeadingIcon({ class: [uiProp?.itemLeadingIcon, item.ui?.itemLeadingIcon] })" />
229
+ <UAvatar v-else-if="isSelectItem(item) && item.avatar" :size="item.ui?.itemLeadingAvatarSize || uiProp?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()" v-bind="item.avatar" data-slot="itemLeadingAvatar" :class="ui.itemLeadingAvatar({ class: [uiProp?.itemLeadingAvatar, item.ui?.itemLeadingAvatar] })" />
230
+ <UChip
231
+ v-else-if="isSelectItem(item) && item.chip"
232
+ :size="item.ui?.itemLeadingChipSize || uiProp?.itemLeadingChipSize || ui.itemLeadingChipSize()"
233
+ inset
234
+ standalone
235
+ v-bind="item.chip"
236
+ data-slot="itemLeadingChip"
237
+ :class="ui.itemLeadingChip({ class: [uiProp?.itemLeadingChip, item.ui?.itemLeadingChip] })"
238
+ />
239
+ </slot>
230
240
 
231
- <span data-slot="itemWrapper" :class="ui.itemWrapper({ class: [uiProp?.itemWrapper, isSelectItem(item) && item.ui?.itemWrapper] })">
232
- <SelectItemText data-slot="itemLabel" :class="ui.itemLabel({ class: [uiProp?.itemLabel, isSelectItem(item) && item.ui?.itemLabel] })">
233
- <slot name="item-label" :item="item" :index="index">
234
- {{ isSelectItem(item) ? get(item, props.labelKey) : item }}
235
- </slot>
236
- </SelectItemText>
241
+ <span data-slot="itemWrapper" :class="ui.itemWrapper({ class: [uiProp?.itemWrapper, isSelectItem(item) && item.ui?.itemWrapper] })">
242
+ <SelectItemText data-slot="itemLabel" :class="ui.itemLabel({ class: [uiProp?.itemLabel, isSelectItem(item) && item.ui?.itemLabel] })">
243
+ <slot name="item-label" :item="item" :index="index">
244
+ {{ isSelectItem(item) ? get(item, props.labelKey) : item }}
245
+ </slot>
246
+ </SelectItemText>
237
247
 
238
- <span v-if="isSelectItem(item) && (get(item, props.descriptionKey) || !!slots['item-description'])" data-slot="itemDescription" :class="ui.itemDescription({ class: [uiProp?.itemDescription, isSelectItem(item) && item.ui?.itemDescription] })">
239
- <slot name="item-description" :item="item" :index="index">
240
- {{ get(item, props.descriptionKey) }}
241
- </slot>
248
+ <span v-if="isSelectItem(item) && (get(item, props.descriptionKey) || !!slots['item-description'])" data-slot="itemDescription" :class="ui.itemDescription({ class: [uiProp?.itemDescription, isSelectItem(item) && item.ui?.itemDescription] })">
249
+ <slot name="item-description" :item="item" :index="index">
250
+ {{ get(item, props.descriptionKey) }}
251
+ </slot>
252
+ </span>
242
253
  </span>
243
- </span>
244
254
 
245
- <span data-slot="itemTrailing" :class="ui.itemTrailing({ class: [uiProp?.itemTrailing, isSelectItem(item) && item.ui?.itemTrailing] })">
246
- <slot name="item-trailing" :item="item" :index="index" :ui="ui" />
255
+ <span data-slot="itemTrailing" :class="ui.itemTrailing({ class: [uiProp?.itemTrailing, isSelectItem(item) && item.ui?.itemTrailing] })">
256
+ <slot name="item-trailing" :item="item" :index="index" :ui="ui" />
247
257
 
248
- <SelectItemIndicator as-child>
249
- <UIcon :name="selectedIcon || appConfig.ui.icons.check" data-slot="itemTrailingIcon" :class="ui.itemTrailingIcon({ class: [uiProp?.itemTrailingIcon, isSelectItem(item) && item.ui?.itemTrailingIcon] })" />
250
- </SelectItemIndicator>
251
- </span>
252
- </slot>
253
- </RSelectItem>
254
- </template>
255
- </SelectGroup>
256
- </div>
258
+ <SelectItemIndicator as-child>
259
+ <UIcon :name="selectedIcon || appConfig.ui.icons.check" data-slot="itemTrailingIcon" :class="ui.itemTrailingIcon({ class: [uiProp?.itemTrailingIcon, isSelectItem(item) && item.ui?.itemTrailingIcon] })" />
260
+ </SelectItemIndicator>
261
+ </span>
262
+ </slot>
263
+ </RSelectItem>
264
+ </template>
265
+ </SelectGroup>
266
+ </component>
257
267
 
258
- <slot name="content-bottom" />
268
+ <slot name="content-bottom" />
259
269
 
260
- <SelectArrow v-if="!!arrow" v-bind="arrowProps" data-slot="arrow" :class="ui.arrow({ class: uiProp?.arrow })" />
261
- </SelectContent>
270
+ <SelectArrow v-if="!!arrow" v-bind="arrowProps" data-slot="arrow" :class="ui.arrow({ class: uiProp?.arrow })" />
271
+ </SelectContent>
272
+ </FieldGroupReset>
262
273
  </SelectPortal>
263
274
  </SelectRoot>
264
275
  </template>
@@ -183,7 +183,7 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectItem>, VK extends Get
183
183
  } ? P : {});
184
184
  expose: (exposed: import("vue").ShallowUnwrapRef<{
185
185
  triggerRef: Readonly<import("vue").Ref<HTMLButtonElement, HTMLButtonElement>>;
186
- viewportRef: Readonly<import("vue").Ref<HTMLDivElement | null, HTMLDivElement | null>>;
186
+ viewportRef: Readonly<import("vue").Ref<HTMLElement | null, HTMLElement | null>>;
187
187
  }>) => void;
188
188
  attrs: any;
189
189
  slots: SelectSlots<T, VK, M, Mod, NestedItem<T>>;
@@ -225,7 +225,6 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectMenuItem>, VK extends
225
225
  props: import("vue").PublicProps & __VLS_PrettifyLocal<(SelectMenuProps<T, VK, M, Mod, C> & {
226
226
  searchTerm?: string;
227
227
  }) & {
228
- onClear?: (() => any) | undefined;
229
228
  onBlur?: ((event: FocusEvent) => any) | undefined;
230
229
  onChange?: ((event: Event) => any) | undefined;
231
230
  onFocus?: ((event: FocusEvent) => any) | undefined;
@@ -253,6 +252,7 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectMenuItem>, VK extends
253
252
  nullable: true;
254
253
  } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | IsClearUsed<M, C>;
255
254
  } | undefined) => any) | undefined;
255
+ onClear?: (() => any) | undefined;
256
256
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
257
257
  onCreate?: ((item: string) => any) | undefined;
258
258
  "onUpdate:modelValue"?: ((value: (Mod extends {
@@ -286,7 +286,7 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectMenuItem>, VK extends
286
286
  }>) => void;
287
287
  attrs: any;
288
288
  slots: SelectMenuSlots<T, VK, M, Mod, C, NestedItem<T>>;
289
- emit: (((evt: "clear") => void) & ((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "highlight", payload: {
289
+ emit: (((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "highlight", payload: {
290
290
  ref: HTMLElement;
291
291
  value: (Mod extends {
292
292
  number: true;
@@ -309,7 +309,7 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectMenuItem>, VK extends
309
309
  } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | undefined : Mod extends {
310
310
  nullable: true;
311
311
  } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | IsClearUsed<M, C>;
312
- } | undefined) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "create", item: string) => void) & ((evt: "update:modelValue", value: (Mod extends {
312
+ } | undefined) => void) & ((evt: "clear") => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "create", item: string) => void) & ((evt: "update:modelValue", value: (Mod extends {
313
313
  number: true;
314
314
  } ? (Mod extends {
315
315
  optional: true;
@@ -9,7 +9,7 @@ import { defu } from "defu";
9
9
  import { reactivePick, createReusableTemplate } from "@vueuse/core";
10
10
  import { useAppConfig } from "#imports";
11
11
  import { useComponentUI } from "../composables/useComponentUI";
12
- import { useFieldGroup } from "../composables/useFieldGroup";
12
+ import { useFieldGroup, FieldGroupReset } from "../composables/useFieldGroup";
13
13
  import { useComponentIcons } from "../composables/useComponentIcons";
14
14
  import { useFormField } from "../composables/useFormField";
15
15
  import { useFilter } from "../composables/useFilter";
@@ -92,10 +92,10 @@ const virtualizerProps = toRef(() => {
92
92
  });
93
93
  });
94
94
  const searchInputProps = toRef(() => defu(props.searchInput, { placeholder: t("selectMenu.search"), variant: "none" }));
95
- const { emitFormBlur, emitFormFocus, emitFormInput, emitFormChange, size: formGroupSize, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props);
95
+ const { emitFormBlur, emitFormFocus, emitFormInput, emitFormChange, size: formFieldSize, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props);
96
96
  const { orientation, size: fieldGroupSize } = useFieldGroup(props);
97
97
  const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(toRef(() => defu(props, { trailingIcon: appConfig.ui.icons.chevronDown })));
98
- const selectSize = computed(() => fieldGroupSize.value || formGroupSize.value);
98
+ const selectSize = computed(() => fieldGroupSize.value || formFieldSize.value);
99
99
  const [DefineCreateItemTemplate, ReuseCreateItemTemplate] = createReusableTemplate();
100
100
  const [DefineItemTemplate, ReuseItemTemplate] = createReusableTemplate({
101
101
  props: {
@@ -377,67 +377,69 @@ defineExpose({
377
377
  </ComboboxAnchor>
378
378
 
379
379
  <ComboboxPortal v-bind="portalProps">
380
- <ComboboxContent data-slot="content" :class="ui.content({ class: uiProp?.content })" v-bind="contentProps">
381
- <FocusScope trapped data-slot="focusScope" :class="ui.focusScope({ class: uiProp?.focusScope })">
382
- <slot name="content-top" />
380
+ <FieldGroupReset>
381
+ <ComboboxContent data-slot="content" :class="ui.content({ class: uiProp?.content })" v-bind="contentProps">
382
+ <FocusScope trapped data-slot="focusScope" :class="ui.focusScope({ class: uiProp?.focusScope })">
383
+ <slot name="content-top" />
383
384
 
384
- <ComboboxInput v-if="!!searchInput" v-model="searchTerm" :display-value="() => searchTerm" as-child>
385
- <UInput
386
- autofocus
387
- autocomplete="off"
388
- :size="selectSize"
389
- v-bind="searchInputProps"
390
- :model-modifiers="{
385
+ <ComboboxInput v-if="!!searchInput" v-model="searchTerm" :display-value="() => searchTerm" as-child>
386
+ <UInput
387
+ autofocus
388
+ autocomplete="off"
389
+ :size="selectSize"
390
+ v-bind="searchInputProps"
391
+ :model-modifiers="{
391
392
  trim: modelModifiers?.trim
392
393
  }"
393
- data-slot="input"
394
- :class="ui.input({ class: uiProp?.input })"
395
- @change.stop
396
- />
397
- </ComboboxInput>
394
+ data-slot="input"
395
+ :class="ui.input({ class: uiProp?.input })"
396
+ @change.stop
397
+ />
398
+ </ComboboxInput>
398
399
 
399
- <ComboboxEmpty data-slot="empty" :class="ui.empty({ class: uiProp?.empty })">
400
- <slot name="empty" :search-term="searchTerm">
401
- {{ searchTerm ? t("selectMenu.noMatch", { searchTerm }) : t("selectMenu.noData") }}
402
- </slot>
403
- </ComboboxEmpty>
400
+ <ComboboxEmpty data-slot="empty" :class="ui.empty({ class: uiProp?.empty })">
401
+ <slot name="empty" :search-term="searchTerm">
402
+ {{ searchTerm ? t("selectMenu.noMatch", { searchTerm }) : t("selectMenu.noData") }}
403
+ </slot>
404
+ </ComboboxEmpty>
404
405
 
405
- <div ref="viewportRef" role="presentation" data-slot="viewport" :class="ui.viewport({ class: uiProp?.viewport })">
406
- <template v-if="!!virtualize">
407
- <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'top'" />
406
+ <div ref="viewportRef" role="presentation" data-slot="viewport" :class="ui.viewport({ class: uiProp?.viewport })">
407
+ <template v-if="!!virtualize">
408
+ <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'top'" />
408
409
 
409
- <ComboboxVirtualizer
410
- v-slot="{ option: item, virtualItem }"
411
- :options="filteredItems"
412
- :text-content="(item2) => isSelectItem(item2) ? get(item2, props.labelKey) : String(item2)"
413
- v-bind="virtualizerProps"
414
- >
415
- <ReuseItemTemplate :item="item" :index="virtualItem.index" />
416
- </ComboboxVirtualizer>
410
+ <ComboboxVirtualizer
411
+ v-slot="{ option: item, virtualItem }"
412
+ :options="filteredItems"
413
+ :text-content="(item2) => isSelectItem(item2) ? get(item2, props.labelKey) : String(item2)"
414
+ v-bind="virtualizerProps"
415
+ >
416
+ <ReuseItemTemplate :item="item" :index="virtualItem.index" />
417
+ </ComboboxVirtualizer>
417
418
 
418
- <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'bottom'" />
419
- </template>
419
+ <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'bottom'" />
420
+ </template>
420
421
 
421
- <template v-else>
422
- <ComboboxGroup v-if="createItem && createItemPosition === 'top'" data-slot="group" :class="ui.group({ class: uiProp?.group })">
423
- <ReuseCreateItemTemplate />
424
- </ComboboxGroup>
422
+ <template v-else>
423
+ <ComboboxGroup v-if="createItem && createItemPosition === 'top'" data-slot="group" :class="ui.group({ class: uiProp?.group })">
424
+ <ReuseCreateItemTemplate />
425
+ </ComboboxGroup>
425
426
 
426
- <ComboboxGroup v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" data-slot="group" :class="ui.group({ class: uiProp?.group })">
427
- <ReuseItemTemplate v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`" :item="item" :index="index" />
428
- </ComboboxGroup>
427
+ <ComboboxGroup v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" data-slot="group" :class="ui.group({ class: uiProp?.group })">
428
+ <ReuseItemTemplate v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`" :item="item" :index="index" />
429
+ </ComboboxGroup>
429
430
 
430
- <ComboboxGroup v-if="createItem && createItemPosition === 'bottom'" data-slot="group" :class="ui.group({ class: uiProp?.group })">
431
- <ReuseCreateItemTemplate />
432
- </ComboboxGroup>
433
- </template>
434
- </div>
431
+ <ComboboxGroup v-if="createItem && createItemPosition === 'bottom'" data-slot="group" :class="ui.group({ class: uiProp?.group })">
432
+ <ReuseCreateItemTemplate />
433
+ </ComboboxGroup>
434
+ </template>
435
+ </div>
435
436
 
436
- <slot name="content-bottom" />
437
- </FocusScope>
437
+ <slot name="content-bottom" />
438
+ </FocusScope>
438
439
 
439
- <ComboboxArrow v-if="!!arrow" v-bind="arrowProps" data-slot="arrow" :class="ui.arrow({ class: uiProp?.arrow })" />
440
- </ComboboxContent>
440
+ <ComboboxArrow v-if="!!arrow" v-bind="arrowProps" data-slot="arrow" :class="ui.arrow({ class: uiProp?.arrow })" />
441
+ </ComboboxContent>
442
+ </FieldGroupReset>
441
443
  </ComboboxPortal>
442
444
  </ComboboxRoot>
443
445
  </template>
@@ -225,7 +225,6 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectMenuItem>, VK extends
225
225
  props: import("vue").PublicProps & __VLS_PrettifyLocal<(SelectMenuProps<T, VK, M, Mod, C> & {
226
226
  searchTerm?: string;
227
227
  }) & {
228
- onClear?: (() => any) | undefined;
229
228
  onBlur?: ((event: FocusEvent) => any) | undefined;
230
229
  onChange?: ((event: Event) => any) | undefined;
231
230
  onFocus?: ((event: FocusEvent) => any) | undefined;
@@ -253,6 +252,7 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectMenuItem>, VK extends
253
252
  nullable: true;
254
253
  } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | IsClearUsed<M, C>;
255
254
  } | undefined) => any) | undefined;
255
+ onClear?: (() => any) | undefined;
256
256
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
257
257
  onCreate?: ((item: string) => any) | undefined;
258
258
  "onUpdate:modelValue"?: ((value: (Mod extends {
@@ -286,7 +286,7 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectMenuItem>, VK extends
286
286
  }>) => void;
287
287
  attrs: any;
288
288
  slots: SelectMenuSlots<T, VK, M, Mod, C, NestedItem<T>>;
289
- emit: (((evt: "clear") => void) & ((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "highlight", payload: {
289
+ emit: (((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "highlight", payload: {
290
290
  ref: HTMLElement;
291
291
  value: (Mod extends {
292
292
  number: true;
@@ -309,7 +309,7 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectMenuItem>, VK extends
309
309
  } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | undefined : Mod extends {
310
310
  nullable: true;
311
311
  } ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) | IsClearUsed<M, C>;
312
- } | undefined) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "create", item: string) => void) & ((evt: "update:modelValue", value: (Mod extends {
312
+ } | undefined) => void) & ((evt: "clear") => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "create", item: string) => void) & ((evt: "update:modelValue", value: (Mod extends {
313
313
  number: true;
314
314
  } ? (Mod extends {
315
315
  optional: true;
@@ -94,10 +94,7 @@ const menuProps = toRef(() => defu(props.menu, {
94
94
  title: props.title,
95
95
  description: props.description,
96
96
  close: props.close,
97
- closeIcon: props.closeIcon,
98
- content: {
99
- onOpenAutoFocus: (e) => e.preventDefault()
100
- }
97
+ closeIcon: props.closeIcon
101
98
  }, props.mode === "modal" ? {} : props.mode === "slideover" ? { side: props.side, inset: props.variant === "inset" } : {}));
102
99
  </script>
103
100
 
@@ -8,6 +8,7 @@ import { DialogRoot, DialogTrigger, DialogPortal, DialogOverlay, DialogContent,
8
8
  import { reactivePick } from "@vueuse/core";
9
9
  import { useAppConfig } from "#imports";
10
10
  import { useComponentUI } from "../composables/useComponentUI";
11
+ import { FieldGroupReset } from "../composables/useFieldGroup";
11
12
  import { useLocale } from "../composables/useLocale";
12
13
  import { usePortal } from "../composables/usePortal";
13
14
  import { pointerDownOutside } from "../utils/overlay";
@@ -68,78 +69,80 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.slideover ||
68
69
  </DialogTrigger>
69
70
 
70
71
  <DialogPortal v-bind="portalProps">
71
- <DialogOverlay v-if="overlay" data-slot="overlay" :class="ui.overlay({ class: uiProp?.overlay })" />
72
+ <FieldGroupReset>
73
+ <DialogOverlay v-if="overlay" data-slot="overlay" :class="ui.overlay({ class: uiProp?.overlay })" />
72
74
 
73
- <DialogContent
74
- :data-side="side"
75
- data-slot="content"
76
- :class="ui.content({ class: [!slots.default && props.class, uiProp?.content] })"
77
- v-bind="contentProps"
78
- @after-enter="emits('after:enter')"
79
- @after-leave="emits('after:leave')"
80
- v-on="contentEvents"
81
- >
82
- <VisuallyHidden v-if="!title && !slots.title || !description && !slots.description || !!slots.content">
83
- <DialogTitle v-if="!title && !slots.title" />
84
- <DialogTitle v-else-if="!!slots.content">
85
- <slot name="title">
86
- {{ title }}
87
- </slot>
88
- </DialogTitle>
75
+ <DialogContent
76
+ :data-side="side"
77
+ data-slot="content"
78
+ :class="ui.content({ class: [!slots.default && props.class, uiProp?.content] })"
79
+ v-bind="contentProps"
80
+ @after-enter="emits('after:enter')"
81
+ @after-leave="emits('after:leave')"
82
+ v-on="contentEvents"
83
+ >
84
+ <VisuallyHidden v-if="!title && !slots.title || !description && !slots.description || !!slots.content">
85
+ <DialogTitle v-if="!title && !slots.title" />
86
+ <DialogTitle v-else-if="!!slots.content">
87
+ <slot name="title">
88
+ {{ title }}
89
+ </slot>
90
+ </DialogTitle>
89
91
 
90
- <DialogDescription v-if="!description && !slots.description" />
91
- <DialogDescription v-else-if="!!slots.content">
92
- <slot name="description">
93
- {{ description }}
94
- </slot>
95
- </DialogDescription>
96
- </VisuallyHidden>
92
+ <DialogDescription v-if="!description && !slots.description" />
93
+ <DialogDescription v-else-if="!!slots.content">
94
+ <slot name="description">
95
+ {{ description }}
96
+ </slot>
97
+ </DialogDescription>
98
+ </VisuallyHidden>
97
99
 
98
- <slot name="content" :close="close">
99
- <div v-if="!!slots.header || (title || !!slots.title) || (description || !!slots.description) || (props.close || !!slots.close)" data-slot="header" :class="ui.header({ class: uiProp?.header })">
100
- <slot name="header" :close="close">
101
- <div data-slot="wrapper" :class="ui.wrapper({ class: uiProp?.wrapper })">
102
- <DialogTitle v-if="title || !!slots.title" data-slot="title" :class="ui.title({ class: uiProp?.title })">
103
- <slot name="title">
104
- {{ title }}
105
- </slot>
106
- </DialogTitle>
100
+ <slot name="content" :close="close">
101
+ <div v-if="!!slots.header || (title || !!slots.title) || (description || !!slots.description) || (props.close || !!slots.close)" data-slot="header" :class="ui.header({ class: uiProp?.header })">
102
+ <slot name="header" :close="close">
103
+ <div v-if="title || !!slots.title || description || !!slots.description" data-slot="wrapper" :class="ui.wrapper({ class: uiProp?.wrapper })">
104
+ <DialogTitle v-if="title || !!slots.title" data-slot="title" :class="ui.title({ class: uiProp?.title })">
105
+ <slot name="title">
106
+ {{ title }}
107
+ </slot>
108
+ </DialogTitle>
107
109
 
108
- <DialogDescription v-if="description || !!slots.description" data-slot="description" :class="ui.description({ class: uiProp?.description })">
109
- <slot name="description">
110
- {{ description }}
111
- </slot>
112
- </DialogDescription>
113
- </div>
110
+ <DialogDescription v-if="description || !!slots.description" data-slot="description" :class="ui.description({ class: uiProp?.description })">
111
+ <slot name="description">
112
+ {{ description }}
113
+ </slot>
114
+ </DialogDescription>
115
+ </div>
114
116
 
115
- <slot name="actions" />
117
+ <slot name="actions" />
116
118
 
117
- <DialogClose v-if="props.close || !!slots.close" as-child>
118
- <slot name="close" :ui="ui">
119
- <UButton
120
- v-if="props.close"
121
- :icon="closeIcon || appConfig.ui.icons.close"
122
- color="neutral"
123
- variant="ghost"
124
- :aria-label="t('slideover.close')"
125
- v-bind="typeof props.close === 'object' ? props.close : {}"
126
- data-slot="close"
127
- :class="ui.close({ class: uiProp?.close })"
128
- />
129
- </slot>
130
- </DialogClose>
131
- </slot>
132
- </div>
119
+ <DialogClose v-if="props.close || !!slots.close" as-child>
120
+ <slot name="close" :ui="ui">
121
+ <UButton
122
+ v-if="props.close"
123
+ :icon="closeIcon || appConfig.ui.icons.close"
124
+ color="neutral"
125
+ variant="ghost"
126
+ :aria-label="t('slideover.close')"
127
+ v-bind="typeof props.close === 'object' ? props.close : {}"
128
+ data-slot="close"
129
+ :class="ui.close({ class: uiProp?.close })"
130
+ />
131
+ </slot>
132
+ </DialogClose>
133
+ </slot>
134
+ </div>
133
135
 
134
- <div data-slot="body" :class="ui.body({ class: uiProp?.body })">
135
- <slot name="body" :close="close" />
136
- </div>
136
+ <div data-slot="body" :class="ui.body({ class: uiProp?.body })">
137
+ <slot name="body" :close="close" />
138
+ </div>
137
139
 
138
- <div v-if="!!slots.footer" data-slot="footer" :class="ui.footer({ class: uiProp?.footer })">
139
- <slot name="footer" :close="close" />
140
- </div>
141
- </slot>
142
- </DialogContent>
140
+ <div v-if="!!slots.footer" data-slot="footer" :class="ui.footer({ class: uiProp?.footer })">
141
+ <slot name="footer" :close="close" />
142
+ </div>
143
+ </slot>
144
+ </DialogContent>
145
+ </FieldGroupReset>
143
146
  </DialogPortal>
144
147
  </DialogRoot>
145
148
  </template>