@nuxt/ui 4.0.1 → 4.1.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 (234) hide show
  1. package/.nuxt/ui/calendar.ts +221 -9
  2. package/.nuxt/ui/chat-message.ts +10 -3
  3. package/.nuxt/ui/command-palette.ts +12 -2
  4. package/.nuxt/ui/context-menu.ts +3 -1
  5. package/.nuxt/ui/dropdown-menu.ts +3 -1
  6. package/.nuxt/ui/empty.ts +83 -0
  7. package/.nuxt/ui/index.ts +1 -0
  8. package/.nuxt/ui/input-menu.ts +12 -2
  9. package/.nuxt/ui/input-number.ts +25 -14
  10. package/.nuxt/ui/kbd.ts +1 -1
  11. package/.nuxt/ui/prose/code-tree.ts +1 -1
  12. package/.nuxt/ui/prose/img.ts +2 -1
  13. package/.nuxt/ui/select-menu.ts +12 -2
  14. package/.nuxt/ui/select.ts +4 -2
  15. package/.nuxt/ui/table.ts +8 -2
  16. package/.nuxt/ui/tree.ts +25 -11
  17. package/cli/templates.mjs +14 -2
  18. package/dist/module.d.mts +15 -0
  19. package/dist/module.json +2 -2
  20. package/dist/module.mjs +5 -2
  21. package/dist/runtime/components/Accordion.d.vue.ts +7 -1
  22. package/dist/runtime/components/Accordion.vue +4 -4
  23. package/dist/runtime/components/Accordion.vue.d.ts +7 -1
  24. package/dist/runtime/components/Alert.d.vue.ts +4 -4
  25. package/dist/runtime/components/Alert.vue +1 -1
  26. package/dist/runtime/components/Alert.vue.d.ts +4 -4
  27. package/dist/runtime/components/AuthForm.d.vue.ts +3 -1
  28. package/dist/runtime/components/AuthForm.vue +1 -1
  29. package/dist/runtime/components/AuthForm.vue.d.ts +3 -1
  30. package/dist/runtime/components/Avatar.d.vue.ts +5 -4
  31. package/dist/runtime/components/Avatar.vue +10 -3
  32. package/dist/runtime/components/Avatar.vue.d.ts +5 -4
  33. package/dist/runtime/components/Badge.d.vue.ts +9 -3
  34. package/dist/runtime/components/Badge.vue +3 -3
  35. package/dist/runtime/components/Badge.vue.d.ts +9 -3
  36. package/dist/runtime/components/Banner.d.vue.ts +4 -2
  37. package/dist/runtime/components/Banner.vue +1 -1
  38. package/dist/runtime/components/Banner.vue.d.ts +4 -2
  39. package/dist/runtime/components/BlogPost.d.vue.ts +9 -3
  40. package/dist/runtime/components/BlogPost.vue +2 -2
  41. package/dist/runtime/components/BlogPost.vue.d.ts +9 -3
  42. package/dist/runtime/components/BlogPosts.d.vue.ts +22 -13
  43. package/dist/runtime/components/BlogPosts.vue +8 -2
  44. package/dist/runtime/components/BlogPosts.vue.d.ts +22 -13
  45. package/dist/runtime/components/Breadcrumb.d.vue.ts +19 -4
  46. package/dist/runtime/components/Breadcrumb.vue +8 -8
  47. package/dist/runtime/components/Breadcrumb.vue.d.ts +19 -4
  48. package/dist/runtime/components/Button.d.vue.ts +9 -3
  49. package/dist/runtime/components/Button.vue +3 -3
  50. package/dist/runtime/components/Button.vue.d.ts +9 -3
  51. package/dist/runtime/components/Calendar.d.vue.ts +4 -0
  52. package/dist/runtime/components/Calendar.vue +3 -1
  53. package/dist/runtime/components/Calendar.vue.d.ts +4 -0
  54. package/dist/runtime/components/ChangelogVersion.d.vue.ts +12 -4
  55. package/dist/runtime/components/ChangelogVersion.vue +3 -3
  56. package/dist/runtime/components/ChangelogVersion.vue.d.ts +12 -4
  57. package/dist/runtime/components/ChangelogVersions.d.vue.ts +8 -36
  58. package/dist/runtime/components/ChangelogVersions.vue +2 -2
  59. package/dist/runtime/components/ChangelogVersions.vue.d.ts +8 -36
  60. package/dist/runtime/components/ChatMessage.d.vue.ts +1 -0
  61. package/dist/runtime/components/ChatMessage.vue +1 -1
  62. package/dist/runtime/components/ChatMessage.vue.d.ts +1 -0
  63. package/dist/runtime/components/ChatMessages.d.vue.ts +14 -15
  64. package/dist/runtime/components/ChatMessages.vue +24 -8
  65. package/dist/runtime/components/ChatMessages.vue.d.ts +14 -15
  66. package/dist/runtime/components/CommandPalette.d.vue.ts +43 -12
  67. package/dist/runtime/components/CommandPalette.vue +134 -68
  68. package/dist/runtime/components/CommandPalette.vue.d.ts +43 -12
  69. package/dist/runtime/components/ContextMenu.d.vue.ts +28 -6
  70. package/dist/runtime/components/ContextMenu.vue +2 -0
  71. package/dist/runtime/components/ContextMenu.vue.d.ts +28 -6
  72. package/dist/runtime/components/ContextMenuContent.d.vue.ts +2 -3
  73. package/dist/runtime/components/ContextMenuContent.vue +21 -11
  74. package/dist/runtime/components/ContextMenuContent.vue.d.ts +2 -3
  75. package/dist/runtime/components/DashboardNavbar.d.vue.ts +9 -3
  76. package/dist/runtime/components/DashboardNavbar.vue +3 -3
  77. package/dist/runtime/components/DashboardNavbar.vue.d.ts +9 -3
  78. package/dist/runtime/components/DashboardSearch.d.vue.ts +3 -1
  79. package/dist/runtime/components/DashboardSearch.vue +2 -2
  80. package/dist/runtime/components/DashboardSearch.vue.d.ts +3 -1
  81. package/dist/runtime/components/DashboardSearchButton.vue +2 -2
  82. package/dist/runtime/components/DashboardSidebar.d.vue.ts +5 -1
  83. package/dist/runtime/components/DashboardSidebar.vue +4 -4
  84. package/dist/runtime/components/DashboardSidebar.vue.d.ts +5 -1
  85. package/dist/runtime/components/Drawer.vue +2 -5
  86. package/dist/runtime/components/DropdownMenu.d.vue.ts +28 -6
  87. package/dist/runtime/components/DropdownMenu.vue +2 -0
  88. package/dist/runtime/components/DropdownMenu.vue.d.ts +28 -6
  89. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +8 -5
  90. package/dist/runtime/components/DropdownMenuContent.vue +21 -11
  91. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +8 -5
  92. package/dist/runtime/components/Empty.d.vue.ts +53 -0
  93. package/dist/runtime/components/Empty.vue +68 -0
  94. package/dist/runtime/components/Empty.vue.d.ts +53 -0
  95. package/dist/runtime/components/Error.d.vue.ts +0 -1
  96. package/dist/runtime/components/Error.vue +1 -1
  97. package/dist/runtime/components/Error.vue.d.ts +0 -1
  98. package/dist/runtime/components/FileUpload.d.vue.ts +6 -1
  99. package/dist/runtime/components/FileUpload.vue +8 -7
  100. package/dist/runtime/components/FileUpload.vue.d.ts +6 -1
  101. package/dist/runtime/components/FooterColumns.d.vue.ts +9 -2
  102. package/dist/runtime/components/FooterColumns.vue +2 -2
  103. package/dist/runtime/components/FooterColumns.vue.d.ts +9 -2
  104. package/dist/runtime/components/Header.d.vue.ts +4 -1
  105. package/dist/runtime/components/Header.vue +3 -3
  106. package/dist/runtime/components/Header.vue.d.ts +4 -1
  107. package/dist/runtime/components/Input.d.vue.ts +9 -3
  108. package/dist/runtime/components/Input.vue +3 -3
  109. package/dist/runtime/components/Input.vue.d.ts +9 -3
  110. package/dist/runtime/components/InputMenu.d.vue.ts +40 -10
  111. package/dist/runtime/components/InputMenu.vue +117 -65
  112. package/dist/runtime/components/InputMenu.vue.d.ts +40 -10
  113. package/dist/runtime/components/InputNumber.d.vue.ts +4 -2
  114. package/dist/runtime/components/InputNumber.vue +7 -5
  115. package/dist/runtime/components/InputNumber.vue.d.ts +4 -2
  116. package/dist/runtime/components/InputTags.d.vue.ts +10 -3
  117. package/dist/runtime/components/InputTags.vue +5 -5
  118. package/dist/runtime/components/InputTags.vue.d.ts +10 -3
  119. package/dist/runtime/components/Main.d.vue.ts +2 -4
  120. package/dist/runtime/components/Main.vue +1 -1
  121. package/dist/runtime/components/Main.vue.d.ts +2 -4
  122. package/dist/runtime/components/Modal.d.vue.ts +1 -4
  123. package/dist/runtime/components/Modal.vue +3 -6
  124. package/dist/runtime/components/Modal.vue.d.ts +1 -4
  125. package/dist/runtime/components/NavigationMenu.d.vue.ts +16 -4
  126. package/dist/runtime/components/NavigationMenu.vue +14 -7
  127. package/dist/runtime/components/NavigationMenu.vue.d.ts +16 -4
  128. package/dist/runtime/components/PageAnchors.d.vue.ts +9 -2
  129. package/dist/runtime/components/PageAnchors.vue +2 -2
  130. package/dist/runtime/components/PageAnchors.vue.d.ts +9 -2
  131. package/dist/runtime/components/PageCard.d.vue.ts +3 -1
  132. package/dist/runtime/components/PageCard.vue +1 -1
  133. package/dist/runtime/components/PageCard.vue.d.ts +3 -1
  134. package/dist/runtime/components/PageFeature.d.vue.ts +3 -1
  135. package/dist/runtime/components/PageFeature.vue +1 -1
  136. package/dist/runtime/components/PageFeature.vue.d.ts +3 -1
  137. package/dist/runtime/components/PageLinks.d.vue.ts +9 -2
  138. package/dist/runtime/components/PageLinks.vue +2 -2
  139. package/dist/runtime/components/PageLinks.vue.d.ts +9 -2
  140. package/dist/runtime/components/PageSection.d.vue.ts +3 -1
  141. package/dist/runtime/components/PageSection.vue +1 -1
  142. package/dist/runtime/components/PageSection.vue.d.ts +3 -1
  143. package/dist/runtime/components/Pagination.d.vue.ts +3 -1
  144. package/dist/runtime/components/Pagination.vue +1 -1
  145. package/dist/runtime/components/Pagination.vue.d.ts +3 -1
  146. package/dist/runtime/components/Popover.d.vue.ts +24 -23
  147. package/dist/runtime/components/Popover.vue +4 -4
  148. package/dist/runtime/components/Popover.vue.d.ts +24 -23
  149. package/dist/runtime/components/PricingPlan.d.vue.ts +9 -3
  150. package/dist/runtime/components/PricingPlan.vue +3 -3
  151. package/dist/runtime/components/PricingPlan.vue.d.ts +9 -3
  152. package/dist/runtime/components/PricingPlans.d.vue.ts +20 -13
  153. package/dist/runtime/components/PricingPlans.vue +7 -1
  154. package/dist/runtime/components/PricingPlans.vue.d.ts +20 -13
  155. package/dist/runtime/components/Select.d.vue.ts +20 -9
  156. package/dist/runtime/components/Select.vue +18 -9
  157. package/dist/runtime/components/Select.vue.d.ts +20 -9
  158. package/dist/runtime/components/SelectMenu.d.vue.ts +39 -11
  159. package/dist/runtime/components/SelectMenu.vue +114 -61
  160. package/dist/runtime/components/SelectMenu.vue.d.ts +39 -11
  161. package/dist/runtime/components/Separator.d.vue.ts +3 -1
  162. package/dist/runtime/components/Separator.vue +1 -1
  163. package/dist/runtime/components/Separator.vue.d.ts +3 -1
  164. package/dist/runtime/components/Slideover.d.vue.ts +1 -4
  165. package/dist/runtime/components/Slideover.vue +3 -6
  166. package/dist/runtime/components/Slideover.vue.d.ts +1 -4
  167. package/dist/runtime/components/Stepper.d.vue.ts +4 -1
  168. package/dist/runtime/components/Stepper.vue +1 -1
  169. package/dist/runtime/components/Stepper.vue.d.ts +4 -1
  170. package/dist/runtime/components/Table.d.vue.ts +21 -1
  171. package/dist/runtime/components/Table.vue +126 -60
  172. package/dist/runtime/components/Table.vue.d.ts +21 -1
  173. package/dist/runtime/components/Tabs.d.vue.ts +8 -3
  174. package/dist/runtime/components/Tabs.vue +3 -3
  175. package/dist/runtime/components/Tabs.vue.d.ts +8 -3
  176. package/dist/runtime/components/Textarea.d.vue.ts +9 -3
  177. package/dist/runtime/components/Textarea.vue +3 -3
  178. package/dist/runtime/components/Textarea.vue.d.ts +9 -3
  179. package/dist/runtime/components/Toast.d.vue.ts +4 -4
  180. package/dist/runtime/components/Toast.vue +1 -1
  181. package/dist/runtime/components/Toast.vue.d.ts +4 -4
  182. package/dist/runtime/components/Toaster.d.vue.ts +6 -0
  183. package/dist/runtime/components/Toaster.vue +6 -3
  184. package/dist/runtime/components/Toaster.vue.d.ts +6 -0
  185. package/dist/runtime/components/Tooltip.d.vue.ts +3 -1
  186. package/dist/runtime/components/Tooltip.vue +1 -1
  187. package/dist/runtime/components/Tooltip.vue.d.ts +3 -1
  188. package/dist/runtime/components/Tree.d.vue.ts +43 -5
  189. package/dist/runtime/components/Tree.vue +169 -81
  190. package/dist/runtime/components/Tree.vue.d.ts +43 -5
  191. package/dist/runtime/components/User.d.vue.ts +3 -1
  192. package/dist/runtime/components/User.vue +1 -1
  193. package/dist/runtime/components/User.vue.d.ts +3 -1
  194. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +1 -0
  195. package/dist/runtime/components/content/ContentNavigation.vue +5 -5
  196. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +1 -0
  197. package/dist/runtime/components/content/ContentSearch.d.vue.ts +3 -1
  198. package/dist/runtime/components/content/ContentSearch.vue +4 -2
  199. package/dist/runtime/components/content/ContentSearch.vue.d.ts +3 -1
  200. package/dist/runtime/components/content/ContentSearchButton.vue +2 -2
  201. package/dist/runtime/components/content/ContentSurround.d.vue.ts +1 -0
  202. package/dist/runtime/components/content/ContentSurround.vue +4 -4
  203. package/dist/runtime/components/content/ContentSurround.vue.d.ts +1 -0
  204. package/dist/runtime/components/content/ContentToc.d.vue.ts +2 -0
  205. package/dist/runtime/components/content/ContentToc.vue +2 -2
  206. package/dist/runtime/components/content/ContentToc.vue.d.ts +2 -0
  207. package/dist/runtime/components/prose/Accordion.d.vue.ts +6 -0
  208. package/dist/runtime/components/prose/Accordion.vue +3 -2
  209. package/dist/runtime/components/prose/Accordion.vue.d.ts +6 -0
  210. package/dist/runtime/components/prose/CodeTree.vue +40 -36
  211. package/dist/runtime/components/prose/Collapsible.d.vue.ts +2 -2
  212. package/dist/runtime/components/prose/Collapsible.vue +2 -2
  213. package/dist/runtime/components/prose/Collapsible.vue.d.ts +2 -2
  214. package/dist/runtime/components/prose/Field.d.vue.ts +1 -1
  215. package/dist/runtime/components/prose/Field.vue.d.ts +1 -1
  216. package/dist/runtime/components/prose/Img.vue +14 -3
  217. package/dist/runtime/components/prose/Tabs.d.vue.ts +6 -0
  218. package/dist/runtime/components/prose/Tabs.vue +3 -2
  219. package/dist/runtime/components/prose/Tabs.vue.d.ts +6 -0
  220. package/dist/runtime/composables/useKbd.js +1 -1
  221. package/dist/runtime/composables/useToast.d.ts +3 -1
  222. package/dist/runtime/composables/useToast.js +4 -3
  223. package/dist/runtime/inertia/components/Link.vue +12 -7
  224. package/dist/runtime/locale/hr.d.ts +3 -0
  225. package/dist/runtime/locale/hr.js +129 -0
  226. package/dist/runtime/locale/index.d.ts +1 -0
  227. package/dist/runtime/locale/index.js +1 -0
  228. package/dist/runtime/types/index.d.ts +2 -1
  229. package/dist/runtime/types/index.js +2 -1
  230. package/dist/runtime/types/tv.d.ts +6 -0
  231. package/dist/shared/{ui.D-FDXAUi.mjs → ui.Cmctwxv6.mjs} +381 -48
  232. package/dist/unplugin.mjs +2 -1
  233. package/dist/vite.mjs +3 -2
  234. package/package.json +18 -17
@@ -4,7 +4,7 @@ import theme from "#build/ui/select-menu";
4
4
 
5
5
  <script setup>
6
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";
7
+ import { ComboboxRoot, ComboboxArrow, ComboboxAnchor, ComboboxInput, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxVirtualizer, 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";
@@ -33,8 +33,10 @@ const props = defineProps({
33
33
  content: { type: Object, required: false },
34
34
  arrow: { type: [Boolean, Object], required: false },
35
35
  portal: { type: [Boolean, String], required: false, skipCheck: true, default: true },
36
+ virtualize: { type: [Boolean, Object], required: false, default: false },
36
37
  valueKey: { type: null, required: false },
37
38
  labelKey: { type: null, required: false, default: "label" },
39
+ descriptionKey: { type: null, required: false, default: "description" },
38
40
  items: { type: null, required: false },
39
41
  defaultValue: { type: null, required: false },
40
42
  modelValue: { type: null, required: false },
@@ -72,12 +74,33 @@ const rootProps = useForwardPropsEmits(reactivePick(props, "modelValue", "defaul
72
74
  const portalProps = usePortal(toRef(() => props.portal));
73
75
  const contentProps = toRef(() => defu(props.content, { side: "bottom", sideOffset: 8, collisionPadding: 8, position: "popper" }));
74
76
  const arrowProps = toRef(() => props.arrow);
77
+ const virtualizerProps = toRef(() => !!props.virtualize && defu(typeof props.virtualize === "boolean" ? {} : props.virtualize, {
78
+ estimateSize: {
79
+ xs: 24,
80
+ sm: 28,
81
+ md: 32,
82
+ lg: 36,
83
+ xl: 40
84
+ }[props.size || "md"]
85
+ }));
75
86
  const searchInputProps = toRef(() => defu(props.searchInput, { placeholder: t("selectMenu.search"), variant: "none" }));
76
87
  const { emitFormBlur, emitFormFocus, emitFormInput, emitFormChange, size: formGroupSize, color, id, name, highlight, disabled, ariaAttrs } = useFormField(props);
77
88
  const { orientation, size: fieldGroupSize } = useFieldGroup(props);
78
89
  const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(toRef(() => defu(props, { trailingIcon: appConfig.ui.icons.chevronDown })));
79
90
  const selectSize = computed(() => fieldGroupSize.value || formGroupSize.value);
80
91
  const [DefineCreateItemTemplate, ReuseCreateItemTemplate] = createReusableTemplate();
92
+ const [DefineItemTemplate, ReuseItemTemplate] = createReusableTemplate({
93
+ props: {
94
+ item: {
95
+ type: [Object, String, Number, Boolean],
96
+ required: true
97
+ },
98
+ index: {
99
+ type: Number,
100
+ required: false
101
+ }
102
+ }
103
+ });
81
104
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.selectMenu || {} })({
82
105
  color: color.value,
83
106
  variant: props.variant,
@@ -86,7 +109,8 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.selectMenu ||
86
109
  highlight: highlight.value,
87
110
  leading: isLeading.value || !!props.avatar || !!slots.leading,
88
111
  trailing: isTrailing.value || !!slots.trailing,
89
- fieldGroup: orientation.value
112
+ fieldGroup: orientation.value,
113
+ virtualize: !!props.virtualize
90
114
  }));
91
115
  function displayValue(value) {
92
116
  if (props.multiple && Array.isArray(value)) {
@@ -204,21 +228,72 @@ defineExpose({
204
228
 
205
229
  <template>
206
230
  <DefineCreateItemTemplate>
207
- <ComboboxGroup :class="ui.group({ class: props.ui?.group })">
208
- <ComboboxItem
209
- :class="ui.item({ class: props.ui?.item })"
210
- :value="searchTerm"
211
- @select.prevent="emits('create', searchTerm)"
212
- >
213
- <span :class="ui.itemLabel({ class: props.ui?.itemLabel })">
214
- <slot name="create-item-label" :item="searchTerm">
215
- {{ t("selectMenu.create", { label: searchTerm }) }}
216
- </slot>
217
- </span>
218
- </ComboboxItem>
219
- </ComboboxGroup>
231
+ <ComboboxItem
232
+ :class="ui.item({ class: props.ui?.item })"
233
+ :value="searchTerm"
234
+ @select.prevent="emits('create', searchTerm)"
235
+ >
236
+ <span :class="ui.itemLabel({ class: props.ui?.itemLabel })">
237
+ <slot name="create-item-label" :item="searchTerm">
238
+ {{ t("selectMenu.create", { label: searchTerm }) }}
239
+ </slot>
240
+ </span>
241
+ </ComboboxItem>
220
242
  </DefineCreateItemTemplate>
221
243
 
244
+ <DefineItemTemplate v-slot="{ item, index }">
245
+ <ComboboxLabel v-if="isSelectItem(item) && item.type === 'label'" :class="ui.label({ class: [props.ui?.label, item.ui?.label, item.class] })">
246
+ {{ get(item, props.labelKey) }}
247
+ </ComboboxLabel>
248
+
249
+ <ComboboxSeparator v-else-if="isSelectItem(item) && item.type === 'separator'" :class="ui.separator({ class: [props.ui?.separator, item.ui?.separator, item.class] })" />
250
+
251
+ <ComboboxItem
252
+ v-else
253
+ :class="ui.item({ class: [props.ui?.item, isSelectItem(item) && item.ui?.item, isSelectItem(item) && item.class] })"
254
+ :disabled="isSelectItem(item) && item.disabled"
255
+ :value="props.valueKey && isSelectItem(item) ? get(item, props.valueKey) : item"
256
+ @select="onSelect($event, item)"
257
+ >
258
+ <slot name="item" :item="item" :index="index" :ui="ui">
259
+ <slot name="item-leading" :item="item" :index="index" :ui="ui">
260
+ <UIcon v-if="isSelectItem(item) && item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: [props.ui?.itemLeadingIcon, item.ui?.itemLeadingIcon] })" />
261
+ <UAvatar v-else-if="isSelectItem(item) && item.avatar" :size="item.ui?.itemLeadingAvatarSize || props.ui?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: [props.ui?.itemLeadingAvatar, item.ui?.itemLeadingAvatar] })" />
262
+ <UChip
263
+ v-else-if="isSelectItem(item) && item.chip"
264
+ :size="props.ui?.itemLeadingChipSize || ui.itemLeadingChipSize()"
265
+ inset
266
+ standalone
267
+ v-bind="item.chip"
268
+ :class="ui.itemLeadingChip({ class: [props.ui?.itemLeadingChip, item.ui?.itemLeadingChip] })"
269
+ />
270
+ </slot>
271
+
272
+ <span :class="ui.itemWrapper({ class: [props.ui?.itemWrapper, isSelectItem(item) && item.ui?.itemWrapper] })">
273
+ <span :class="ui.itemLabel({ class: [props.ui?.itemLabel, isSelectItem(item) && item.ui?.itemLabel] })">
274
+ <slot name="item-label" :item="item" :index="index">
275
+ {{ isSelectItem(item) ? get(item, props.labelKey) : item }}
276
+ </slot>
277
+ </span>
278
+
279
+ <span v-if="isSelectItem(item) && (get(item, props.descriptionKey) || !!slots['item-description'])" :class="ui.itemDescription({ class: [props.ui?.itemDescription, isSelectItem(item) && item.ui?.itemDescription] })">
280
+ <slot name="item-description" :item="item" :index="index">
281
+ {{ get(item, props.descriptionKey) }}
282
+ </slot>
283
+ </span>
284
+ </span>
285
+
286
+ <span :class="ui.itemTrailing({ class: [props.ui?.itemTrailing, isSelectItem(item) && item.ui?.itemTrailing] })">
287
+ <slot name="item-trailing" :item="item" :index="index" :ui="ui" />
288
+
289
+ <ComboboxItemIndicator as-child>
290
+ <UIcon :name="selectedIcon || appConfig.ui.icons.check" :class="ui.itemTrailingIcon({ class: [props.ui?.itemTrailingIcon, isSelectItem(item) && item.ui?.itemTrailingIcon] })" />
291
+ </ComboboxItemIndicator>
292
+ </span>
293
+ </slot>
294
+ </ComboboxItem>
295
+ </DefineItemTemplate>
296
+
222
297
  <ComboboxRoot
223
298
  :id="id"
224
299
  v-slot="{ modelValue, open }"
@@ -239,7 +314,7 @@ defineExpose({
239
314
  </slot>
240
315
  </span>
241
316
 
242
- <slot :model-value="modelValue" :open="open">
317
+ <slot :model-value="modelValue" :open="open" :ui="ui">
243
318
  <template v-for="displayedModelValue in [displayValue(modelValue)]" :key="displayedModelValue">
244
319
  <span v-if="displayedModelValue !== void 0 && displayedModelValue !== null" :class="ui.value({ class: props.ui?.value })">
245
320
  {{ displayedModelValue }}
@@ -274,56 +349,34 @@ defineExpose({
274
349
  </ComboboxEmpty>
275
350
 
276
351
  <div role="presentation" :class="ui.viewport({ class: props.ui?.viewport })">
277
- <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'top'" />
278
-
279
- <ComboboxGroup v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" :class="ui.group({ class: props.ui?.group })">
280
- <template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
281
- <ComboboxLabel v-if="isSelectItem(item) && item.type === 'label'" :class="ui.label({ class: [props.ui?.label, item.ui?.label, item.class] })">
282
- {{ get(item, props.labelKey) }}
283
- </ComboboxLabel>
284
-
285
- <ComboboxSeparator v-else-if="isSelectItem(item) && item.type === 'separator'" :class="ui.separator({ class: [props.ui?.separator, item.ui?.separator, item.class] })" />
352
+ <template v-if="!!virtualize">
353
+ <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'top'" />
286
354
 
287
- <ComboboxItem
288
- v-else
289
- :class="ui.item({ class: [props.ui?.item, isSelectItem(item) && item.ui?.item, isSelectItem(item) && item.class] })"
290
- :disabled="isSelectItem(item) && item.disabled"
291
- :value="props.valueKey && isSelectItem(item) ? get(item, props.valueKey) : item"
292
- @select="onSelect($event, item)"
293
- >
294
- <slot name="item" :item="item" :index="index">
295
- <slot name="item-leading" :item="item" :index="index">
296
- <UIcon v-if="isSelectItem(item) && item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: [props.ui?.itemLeadingIcon, item.ui?.itemLeadingIcon] })" />
297
- <UAvatar v-else-if="isSelectItem(item) && item.avatar" :size="item.ui?.itemLeadingAvatarSize || props.ui?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: [props.ui?.itemLeadingAvatar, item.ui?.itemLeadingAvatar] })" />
298
- <UChip
299
- v-else-if="isSelectItem(item) && item.chip"
300
- :size="props.ui?.itemLeadingChipSize || ui.itemLeadingChipSize()"
301
- inset
302
- standalone
303
- v-bind="item.chip"
304
- :class="ui.itemLeadingChip({ class: [props.ui?.itemLeadingChip, item.ui?.itemLeadingChip] })"
305
- />
306
- </slot>
355
+ <ComboboxVirtualizer
356
+ v-slot="{ option: item, virtualItem }"
357
+ :options="filteredItems"
358
+ :text-content="(item2) => isSelectItem(item2) ? get(item2, props.labelKey) : String(item2)"
359
+ v-bind="virtualizerProps"
360
+ >
361
+ <ReuseItemTemplate :item="item" :index="virtualItem.index" />
362
+ </ComboboxVirtualizer>
307
363
 
308
- <span :class="ui.itemLabel({ class: [props.ui?.itemLabel, isSelectItem(item) && item.ui?.itemLabel] })">
309
- <slot name="item-label" :item="item" :index="index">
310
- {{ isSelectItem(item) ? get(item, props.labelKey) : item }}
311
- </slot>
312
- </span>
364
+ <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'bottom'" />
365
+ </template>
313
366
 
314
- <span :class="ui.itemTrailing({ class: [props.ui?.itemTrailing, isSelectItem(item) && item.ui?.itemTrailing] })">
315
- <slot name="item-trailing" :item="item" :index="index" />
367
+ <template v-else>
368
+ <ComboboxGroup v-if="createItem && createItemPosition === 'top'" :class="ui.group({ class: props.ui?.group })">
369
+ <ReuseCreateItemTemplate />
370
+ </ComboboxGroup>
316
371
 
317
- <ComboboxItemIndicator as-child>
318
- <UIcon :name="selectedIcon || appConfig.ui.icons.check" :class="ui.itemTrailingIcon({ class: [props.ui?.itemTrailingIcon, isSelectItem(item) && item.ui?.itemTrailingIcon] })" />
319
- </ComboboxItemIndicator>
320
- </span>
321
- </slot>
322
- </ComboboxItem>
323
- </template>
324
- </ComboboxGroup>
372
+ <ComboboxGroup v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" :class="ui.group({ class: props.ui?.group })">
373
+ <ReuseItemTemplate v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`" :item="item" :index="index" />
374
+ </ComboboxGroup>
325
375
 
326
- <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'bottom'" />
376
+ <ComboboxGroup v-if="createItem && createItemPosition === 'bottom'" :class="ui.group({ class: props.ui?.group })">
377
+ <ReuseCreateItemTemplate />
378
+ </ComboboxGroup>
379
+ </template>
327
380
  </div>
328
381
 
329
382
  <slot name="content-bottom" />
@@ -9,6 +9,7 @@ type SelectMenu = ComponentConfig<typeof theme, AppConfig, 'selectMenu'>;
9
9
  export type SelectMenuValue = AcceptableValue;
10
10
  export type SelectMenuItem = SelectMenuValue | {
11
11
  label?: string;
12
+ description?: string;
12
13
  /**
13
14
  * @IconifyIcon
14
15
  */
@@ -21,9 +22,9 @@ export type SelectMenuItem = SelectMenuValue | {
21
22
  */
22
23
  type?: 'label' | 'separator' | 'item';
23
24
  disabled?: boolean;
24
- onSelect?(e?: Event): void;
25
+ onSelect?: (e: Event) => void;
25
26
  class?: any;
26
- ui?: Pick<SelectMenu['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemLabel' | 'itemTrailing' | 'itemTrailingIcon'>;
27
+ ui?: Pick<SelectMenu['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>;
27
28
  [key: string]: any;
28
29
  };
29
30
  export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = ArrayOrNested<SelectMenuItem>, VK extends GetItemKeys<T> | undefined = undefined, M extends boolean = false> extends Pick<ComboboxRootProps<T>, 'open' | 'defaultOpen' | 'disabled' | 'name' | 'resetSearchTermOnBlur' | 'resetSearchTermOnSelect' | 'highlightOnHover'>, UseComponentIconsProps {
@@ -78,6 +79,23 @@ export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = Array
78
79
  * @defaultValue true
79
80
  */
80
81
  portal?: boolean | string | HTMLElement;
82
+ /**
83
+ * Enable virtualization for large lists.
84
+ * Note: when enabled, all groups are flattened into a single list due to a limitation of Reka UI (https://github.com/unovue/reka-ui/issues/1885).
85
+ * @defaultValue false
86
+ */
87
+ virtualize?: boolean | {
88
+ /**
89
+ * Number of items rendered outside the visible area
90
+ * @defaultValue 12
91
+ */
92
+ overscan?: number;
93
+ /**
94
+ * Estimated size (in px) of each item
95
+ * @defaultValue 32
96
+ */
97
+ estimateSize?: number;
98
+ };
81
99
  /**
82
100
  * When `items` is an array of objects, select the field to use as the value instead of the object itself.
83
101
  * @defaultValue undefined
@@ -88,6 +106,11 @@ export interface SelectMenuProps<T extends ArrayOrNested<SelectMenuItem> = Array
88
106
  * @defaultValue 'label'
89
107
  */
90
108
  labelKey?: GetItemKeys<T>;
109
+ /**
110
+ * When `items` is an array of objects, select the field to use as the description.
111
+ * @defaultValue 'description'
112
+ */
113
+ descriptionKey?: GetItemKeys<T>;
91
114
  items?: T;
92
115
  /** The value of the SelectMenu when initially rendered. Use when you do not need to control the state of the SelectMenu. */
93
116
  defaultValue?: GetModelValue<T, VK, M>;
@@ -136,32 +159,37 @@ export type SelectMenuEmits<A extends ArrayOrNested<SelectMenuItem>, VK extends
136
159
  type SlotProps<T extends SelectMenuItem> = (props: {
137
160
  item: T;
138
161
  index: number;
162
+ ui: SelectMenu['ui'];
139
163
  }) => any;
140
164
  export interface SelectMenuSlots<A extends ArrayOrNested<SelectMenuItem> = ArrayOrNested<SelectMenuItem>, VK extends GetItemKeys<A> | undefined = undefined, M extends boolean = false, T extends NestedItem<A> = NestedItem<A>> {
141
165
  'leading'(props: {
142
166
  modelValue?: GetModelValue<A, VK, M>;
143
167
  open: boolean;
144
- ui: {
145
- [K in keyof Required<SelectMenu['slots']>]: (props?: Record<string, any>) => string;
146
- };
168
+ ui: SelectMenu['ui'];
147
169
  }): any;
148
170
  'default'(props: {
149
171
  modelValue?: GetModelValue<A, VK, M>;
150
172
  open: boolean;
173
+ ui: SelectMenu['ui'];
151
174
  }): any;
152
175
  'trailing'(props: {
153
176
  modelValue?: GetModelValue<A, VK, M>;
154
177
  open: boolean;
155
- ui: {
156
- [K in keyof Required<SelectMenu['slots']>]: (props?: Record<string, any>) => string;
157
- };
178
+ ui: SelectMenu['ui'];
158
179
  }): any;
159
180
  'empty'(props: {
160
181
  searchTerm?: string;
161
182
  }): any;
162
183
  'item': SlotProps<T>;
163
184
  'item-leading': SlotProps<T>;
164
- 'item-label': SlotProps<T>;
185
+ 'item-label'(props: {
186
+ item: T;
187
+ index: number;
188
+ }): any;
189
+ 'item-description'(props: {
190
+ item: T;
191
+ index: number;
192
+ }): any;
165
193
  'item-trailing': SlotProps<T>;
166
194
  'content-top': (props?: {}) => any;
167
195
  'content-bottom': (props?: {}) => any;
@@ -229,7 +257,7 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectMenuItem>, VK extends
229
257
  };
230
258
  $forceUpdate: () => void;
231
259
  $nextTick: typeof import("vue").nextTick;
232
- $watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 extends (...args: any) => infer R ? (... /** Event handler when highlighted element changes. */args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
260
+ $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;
233
261
  } & Readonly<{
234
262
  as: import("reka-ui").AsTag | import("vue").Component;
235
263
  }> & Omit<Readonly<import("reka-ui").ComboboxTriggerProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
@@ -279,7 +307,7 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectMenuItem>, VK extends
279
307
  };
280
308
  $forceUpdate: () => void;
281
309
  $nextTick: typeof import("vue").nextTick;
282
- $watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 extends (...args: any) => infer R ? (... /** Event handler when highlighted element changes. */args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
310
+ $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;
283
311
  } & Readonly<{
284
312
  as: import("reka-ui").AsTag | import("vue").Component;
285
313
  }> & Omit<Readonly<import("reka-ui").ComboboxTriggerProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
@@ -41,7 +41,9 @@ export interface SeparatorProps extends Pick<_SeparatorProps, 'decorative'> {
41
41
  ui?: Separator['slots'];
42
42
  }
43
43
  export interface SeparatorSlots {
44
- default(props?: {}): any;
44
+ default(props: {
45
+ ui: Separator['ui'];
46
+ }): any;
45
47
  }
46
48
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<SeparatorProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SeparatorProps> & Readonly<{}>, {
47
49
  orientation: "horizontal" | "vertical";
@@ -40,7 +40,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.separator ||
40
40
 
41
41
  <template v-if="label || icon || avatar || !!slots.default">
42
42
  <div :class="ui.container({ class: props.ui?.container })">
43
- <slot>
43
+ <slot :ui="ui">
44
44
  <span v-if="label" :class="ui.label({ class: props.ui?.label })">{{ label }}</span>
45
45
  <UIcon v-else-if="icon" :name="icon" :class="ui.icon({ class: props.ui?.icon })" />
46
46
  <UAvatar v-else-if="avatar" :size="props.ui?.avatarSize || ui.avatarSize()" v-bind="avatar" :class="ui.avatar({ class: props.ui?.avatar })" />
@@ -41,7 +41,9 @@ export interface SeparatorProps extends Pick<_SeparatorProps, 'decorative'> {
41
41
  ui?: Separator['slots'];
42
42
  }
43
43
  export interface SeparatorSlots {
44
- default(props?: {}): any;
44
+ default(props: {
45
+ ui: Separator['ui'];
46
+ }): any;
45
47
  }
46
48
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<SeparatorProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SeparatorProps> & Readonly<{}>, {
47
49
  orientation: "horizontal" | "vertical";
@@ -69,10 +69,7 @@ export interface SlideoverSlots {
69
69
  description(props?: {}): any;
70
70
  actions(props?: {}): any;
71
71
  close(props: {
72
- close: () => void;
73
- ui: {
74
- [K in keyof Required<Slideover['slots']>]: (props?: Record<string, any>) => string;
75
- };
72
+ ui: Slideover['ui'];
76
73
  }): any;
77
74
  body(props: {
78
75
  close: () => void;
@@ -36,9 +36,6 @@ const rootProps = useForwardPropsEmits(reactivePick(props, "open", "defaultOpen"
36
36
  const portalProps = usePortal(toRef(() => props.portal));
37
37
  const contentProps = toRef(() => props.content);
38
38
  const contentEvents = computed(() => {
39
- const defaultEvents = {
40
- closeAutoFocus: (e) => e.preventDefault()
41
- };
42
39
  if (!props.dismissible) {
43
40
  const events = ["pointerDownOutside", "interactOutside", "escapeKeyDown"];
44
41
  return events.reduce((acc, curr) => {
@@ -47,9 +44,9 @@ const contentEvents = computed(() => {
47
44
  emits("close:prevent");
48
45
  };
49
46
  return acc;
50
- }, defaultEvents);
47
+ }, {});
51
48
  }
52
- return defaultEvents;
49
+ return {};
53
50
  });
54
51
  const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.slideover || {} })({
55
52
  transition: props.transition,
@@ -108,7 +105,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.slideover ||
108
105
  <slot name="actions" />
109
106
 
110
107
  <DialogClose v-if="props.close || !!slots.close" as-child>
111
- <slot name="close" :close="close" :ui="ui">
108
+ <slot name="close" :ui="ui">
112
109
  <UButton
113
110
  v-if="props.close"
114
111
  :icon="closeIcon || appConfig.ui.icons.close"
@@ -69,10 +69,7 @@ export interface SlideoverSlots {
69
69
  description(props?: {}): any;
70
70
  actions(props?: {}): any;
71
71
  close(props: {
72
- close: () => void;
73
- ui: {
74
- [K in keyof Required<Slideover['slots']>]: (props?: Record<string, any>) => string;
75
- };
72
+ ui: Slideover['ui'];
76
73
  }): any;
77
74
  body(props: {
78
75
  close: () => void;
@@ -56,7 +56,10 @@ type SlotProps<T extends StepperItem> = (props: {
56
56
  item: T;
57
57
  }) => any;
58
58
  export type StepperSlots<T extends StepperItem = StepperItem> = {
59
- indicator: SlotProps<T>;
59
+ indicator(props: {
60
+ item: T;
61
+ ui: Stepper['ui'];
62
+ }): any;
60
63
  title: SlotProps<T>;
61
64
  description: SlotProps<T>;
62
65
  content: SlotProps<T>;
@@ -74,7 +74,7 @@ defineExpose({
74
74
  <div :class="ui.container({ class: [props.ui?.container, item.ui?.container] })">
75
75
  <StepperTrigger :class="ui.trigger({ class: [props.ui?.trigger, item.ui?.trigger] })">
76
76
  <StepperIndicator :class="ui.indicator({ class: [props.ui?.indicator, item.ui?.indicator] })">
77
- <slot name="indicator" :item="item">
77
+ <slot name="indicator" :item="item" :ui="ui">
78
78
  <UIcon v-if="item.icon" :name="item.icon" :class="ui.icon({ class: [props.ui?.icon, item.ui?.icon] })" />
79
79
  <template v-else>
80
80
  {{ count + 1 }}
@@ -56,7 +56,10 @@ type SlotProps<T extends StepperItem> = (props: {
56
56
  item: T;
57
57
  }) => any;
58
58
  export type StepperSlots<T extends StepperItem = StepperItem> = {
59
- indicator: SlotProps<T>;
59
+ indicator(props: {
60
+ item: T;
61
+ ui: Stepper['ui'];
62
+ }): any;
60
63
  title: SlotProps<T>;
61
64
  description: SlotProps<T>;
62
65
  content: SlotProps<T>;
@@ -2,6 +2,7 @@ import type { Ref, WatchOptions } from 'vue';
2
2
  import type { AppConfig } from '@nuxt/schema';
3
3
  import type { Cell, Header, RowData, TableMeta } from '@tanstack/table-core';
4
4
  import type { CellContext, ColumnDef, ColumnFiltersOptions, ColumnFiltersState, ColumnOrderState, ColumnPinningOptions, ColumnPinningState, ColumnSizingInfoState, ColumnSizingOptions, ColumnSizingState, CoreOptions, ExpandedOptions, ExpandedState, FacetedOptions, GlobalFilterOptions, GroupingOptions, GroupingState, HeaderContext, PaginationOptions, PaginationState, Row, RowPinningOptions, RowPinningState, RowSelectionOptions, RowSelectionState, SortingOptions, SortingState, VisibilityOptions, VisibilityState } from '@tanstack/vue-table';
5
+ import type { VirtualizerOptions } from '@tanstack/vue-virtual';
5
6
  import theme from '#build/ui/table';
6
7
  import type { ComponentConfig } from '../types/tv';
7
8
  declare module '@tanstack/table-core' {
@@ -49,6 +50,23 @@ export interface TableProps<T extends TableData = TableData> extends TableOption
49
50
  columns?: TableColumn<T>[];
50
51
  caption?: string;
51
52
  meta?: TableMeta<T>;
53
+ /**
54
+ * Enable virtualization for large datasets.
55
+ * Note: when enabled, the divider between rows and sticky properties are not supported.
56
+ * @defaultValue false
57
+ */
58
+ virtualize?: boolean | (Partial<Omit<VirtualizerOptions<Element, Element>, 'getScrollElement' | 'count' | 'estimateSize' | 'overscan'>> & {
59
+ /**
60
+ * Number of items rendered outside the visible area
61
+ * @defaultValue 12
62
+ */
63
+ overscan?: number;
64
+ /**
65
+ * Estimated size (in px) of each item
66
+ * @defaultValue 65
67
+ */
68
+ estimateSize?: number;
69
+ });
52
70
  /**
53
71
  * The text to display when the table is empty.
54
72
  * @defaultValue t('table.noData')
@@ -56,6 +74,7 @@ export interface TableProps<T extends TableData = TableData> extends TableOption
56
74
  empty?: string;
57
75
  /**
58
76
  * Whether the table should have a sticky header or footer. True for both, 'header' for header only, 'footer' for footer only.
77
+ * Note: this prop is not supported when `virtualize` is true.
59
78
  * @defaultValue false
60
79
  */
61
80
  sticky?: boolean | 'header' | 'footer';
@@ -136,7 +155,7 @@ export interface TableProps<T extends TableData = TableData> extends TableOption
136
155
  * @see [Guide](https://tanstack.com/table/v8/docs/guide/column-faceting)
137
156
  */
138
157
  facetedOptions?: FacetedOptions<T>;
139
- onSelect?: (row: TableRow<T>, e?: Event) => void;
158
+ onSelect?: (e: Event, row: TableRow<T>) => void;
140
159
  onHover?: (e: Event, row: TableRow<T> | null) => void;
141
160
  onContextmenu?: ((e: Event, row: TableRow<T>) => void) | Array<((e: Event, row: TableRow<T>) => void)>;
142
161
  class?: any;
@@ -186,6 +205,7 @@ declare const __VLS_export: <T extends TableData>(__VLS_props: NonNullable<Await
186
205
  "onUpdate:pagination"?: ((value: PaginationState) => any) | undefined;
187
206
  }> & import("vue").PublicProps;
188
207
  expose: (exposed: import("vue").ShallowUnwrapRef<{
208
+ readonly $el: any;
189
209
  tableRef: Ref<HTMLTableElement | null, HTMLTableElement | null>;
190
210
  tableApi: import("@tanstack/table-core").Table<T>;
191
211
  }>) => void;