@vuetify/nightly 3.8.8-master.2025-06-07 → 3.8.8-master.2025-06-10

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 (58) hide show
  1. package/CHANGELOG.md +11 -3
  2. package/dist/json/attributes.json +2832 -2832
  3. package/dist/json/importMap-labs.json +26 -26
  4. package/dist/json/importMap.json +162 -162
  5. package/dist/json/web-types.json +5438 -5438
  6. package/dist/vuetify-labs.cjs +98 -34
  7. package/dist/vuetify-labs.css +4072 -4072
  8. package/dist/vuetify-labs.d.ts +58 -62
  9. package/dist/vuetify-labs.esm.js +99 -35
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +98 -34
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +91 -30
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +4746 -4746
  16. package/dist/vuetify.d.ts +58 -62
  17. package/dist/vuetify.esm.js +92 -31
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +91 -30
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +964 -958
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VDataTable/VDataTableColumn.js +1 -0
  25. package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
  26. package/lib/components/VDataTable/VDataTableHeaders.js +8 -1
  27. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  28. package/lib/components/VDatePicker/VDatePickerMonth.js +2 -2
  29. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  30. package/lib/components/VFileInput/VFileInput.js +8 -3
  31. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  32. package/lib/components/VSelect/VSelect.js +6 -5
  33. package/lib/components/VSelect/VSelect.js.map +1 -1
  34. package/lib/components/VSlider/VSliderThumb.js +1 -1
  35. package/lib/components/VSlider/VSliderThumb.js.map +1 -1
  36. package/lib/composables/date/adapters/vuetify.js +1 -1
  37. package/lib/composables/date/adapters/vuetify.js.map +1 -1
  38. package/lib/composables/date/date.d.ts +1 -4
  39. package/lib/composables/date/date.js +13 -14
  40. package/lib/composables/date/date.js.map +1 -1
  41. package/lib/composables/fileDrop.d.ts +4 -0
  42. package/lib/composables/fileDrop.js +50 -0
  43. package/lib/composables/fileDrop.js.map +1 -0
  44. package/lib/composables/list-items.js +2 -2
  45. package/lib/composables/list-items.js.map +1 -1
  46. package/lib/entry-bundler.d.ts +0 -3
  47. package/lib/entry-bundler.js +1 -1
  48. package/lib/framework.d.ts +58 -62
  49. package/lib/framework.js +1 -1
  50. package/lib/labs/VDateInput/VDateInput.js +2 -1
  51. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  52. package/lib/labs/VFileUpload/VFileUpload.js +7 -3
  53. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  54. package/lib/labs/entry-bundler.d.ts +0 -3
  55. package/lib/util/helpers.d.ts +1 -1
  56. package/lib/util/helpers.js +0 -1
  57. package/lib/util/helpers.js.map +1 -1
  58. package/package.json +1 -1
package/dist/vuetify.d.ts CHANGED
@@ -86,7 +86,6 @@ declare function useRtl(): {
86
86
 
87
87
  interface DateInstance extends DateModule.InternalAdapter {
88
88
  locale?: any;
89
- createDateRange: (start: unknown, stop?: unknown) => unknown[];
90
89
  }
91
90
  /** Supports module augmentation to specify date adapter types */
92
91
  declare namespace DateModule {
@@ -85821,7 +85820,6 @@ declare const createVuetify: {
85821
85820
  options: InternalDateOptions;
85822
85821
  instance: {
85823
85822
  locale?: any;
85824
- createDateRange: (start: unknown, stop?: unknown) => unknown[];
85825
85823
  date: (value?: any) => unknown;
85826
85824
  format: (date: unknown, formatString: string) => string;
85827
85825
  toJsDate: (value: unknown) => Date;
@@ -85865,8 +85863,6 @@ declare const createVuetify: {
85865
85863
  setHours: (date: unknown, hours: number) => unknown;
85866
85864
  getMinutes: (date: unknown) => number;
85867
85865
  setMinutes: (date: unknown, minutes: number) => unknown;
85868
- } & {
85869
- createDateRange(start: unknown, stop?: unknown): unknown[];
85870
85866
  };
85871
85867
  };
85872
85868
  goTo: GoToInstance;
@@ -85915,45 +85911,37 @@ declare module 'vue' {
85915
85911
  VAppBar: VAppBar
85916
85912
  VAppBarNavIcon: VAppBarNavIcon
85917
85913
  VAppBarTitle: VAppBarTitle
85914
+ VApp: VApp
85918
85915
  VAlert: VAlert
85919
85916
  VAlertTitle: VAlertTitle
85920
- VAvatar: VAvatar
85921
- VApp: VApp
85922
- VBadge: VBadge
85923
85917
  VBanner: VBanner
85924
85918
  VBannerActions: VBannerActions
85925
85919
  VBannerText: VBannerText
85920
+ VAvatar: VAvatar
85926
85921
  VAutocomplete: VAutocomplete
85927
- VBottomSheet: VBottomSheet
85922
+ VBtn: VBtn
85923
+ VBadge: VBadge
85924
+ VBottomNavigation: VBottomNavigation
85928
85925
  VBreadcrumbs: VBreadcrumbs
85929
85926
  VBreadcrumbsItem: VBreadcrumbsItem
85930
85927
  VBreadcrumbsDivider: VBreadcrumbsDivider
85931
- VBottomNavigation: VBottomNavigation
85932
- VBtn: VBtn
85933
- VBtnToggle: VBtnToggle
85934
85928
  VBtnGroup: VBtnGroup
85935
- VCarousel: VCarousel
85936
- VCarouselItem: VCarouselItem
85929
+ VBottomSheet: VBottomSheet
85937
85930
  VCard: VCard
85938
85931
  VCardActions: VCardActions
85939
85932
  VCardItem: VCardItem
85940
85933
  VCardSubtitle: VCardSubtitle
85941
85934
  VCardText: VCardText
85942
85935
  VCardTitle: VCardTitle
85943
- VDataTable: VDataTable
85944
- VDataTableHeaders: VDataTableHeaders
85945
- VDataTableFooter: VDataTableFooter
85946
- VDataTableRows: VDataTableRows
85947
- VDataTableRow: VDataTableRow
85948
- VDataTableVirtual: VDataTableVirtual
85949
- VDataTableServer: VDataTableServer
85950
- VCode: VCode
85936
+ VBtnToggle: VBtnToggle
85937
+ VCarousel: VCarousel
85938
+ VCarouselItem: VCarouselItem
85939
+ VChip: VChip
85951
85940
  VCheckbox: VCheckbox
85952
85941
  VCheckboxBtn: VCheckboxBtn
85953
- VChip: VChip
85954
- VCounter: VCounter
85955
- VChipGroup: VChipGroup
85956
85942
  VCombobox: VCombobox
85943
+ VChipGroup: VChipGroup
85944
+ VCode: VCode
85957
85945
  VColorPicker: VColorPicker
85958
85946
  VDatePicker: VDatePicker
85959
85947
  VDatePickerControls: VDatePickerControls
@@ -85961,29 +85949,37 @@ declare module 'vue' {
85961
85949
  VDatePickerMonth: VDatePickerMonth
85962
85950
  VDatePickerMonths: VDatePickerMonths
85963
85951
  VDatePickerYears: VDatePickerYears
85964
- VDivider: VDivider
85952
+ VCounter: VCounter
85965
85953
  VDialog: VDialog
85954
+ VDataTable: VDataTable
85955
+ VDataTableHeaders: VDataTableHeaders
85956
+ VDataTableFooter: VDataTableFooter
85957
+ VDataTableRows: VDataTableRows
85958
+ VDataTableRow: VDataTableRow
85959
+ VDataTableVirtual: VDataTableVirtual
85960
+ VDataTableServer: VDataTableServer
85961
+ VDivider: VDivider
85962
+ VEmptyState: VEmptyState
85966
85963
  VExpansionPanels: VExpansionPanels
85967
85964
  VExpansionPanel: VExpansionPanel
85968
85965
  VExpansionPanelText: VExpansionPanelText
85969
85966
  VExpansionPanelTitle: VExpansionPanelTitle
85970
85967
  VFab: VFab
85971
- VFooter: VFooter
85972
- VFileInput: VFileInput
85973
85968
  VField: VField
85974
85969
  VFieldLabel: VFieldLabel
85970
+ VFileInput: VFileInput
85971
+ VInfiniteScroll: VInfiniteScroll
85972
+ VFooter: VFooter
85975
85973
  VIcon: VIcon
85976
85974
  VComponentIcon: VComponentIcon
85977
85975
  VSvgIcon: VSvgIcon
85978
85976
  VLigatureIcon: VLigatureIcon
85979
85977
  VClassIcon: VClassIcon
85980
- VInfiniteScroll: VInfiniteScroll
85978
+ VImg: VImg
85981
85979
  VInput: VInput
85982
- VKbd: VKbd
85980
+ VLabel: VLabel
85983
85981
  VItemGroup: VItemGroup
85984
85982
  VItem: VItem
85985
- VLabel: VLabel
85986
- VImg: VImg
85987
85983
  VList: VList
85988
85984
  VListGroup: VListGroup
85989
85985
  VListImg: VListImg
@@ -85993,23 +85989,26 @@ declare module 'vue' {
85993
85989
  VListItemSubtitle: VListItemSubtitle
85994
85990
  VListItemTitle: VListItemTitle
85995
85991
  VListSubheader: VListSubheader
85992
+ VKbd: VKbd
85996
85993
  VMenu: VMenu
85997
85994
  VMain: VMain
85998
- VNavigationDrawer: VNavigationDrawer
85999
- VNumberInput: VNumberInput
86000
- VOverlay: VOverlay
86001
85995
  VMessages: VMessages
86002
85996
  VOtpInput: VOtpInput
86003
- VProgressCircular: VProgressCircular
86004
85997
  VPagination: VPagination
85998
+ VNavigationDrawer: VNavigationDrawer
85999
+ VNumberInput: VNumberInput
86005
86000
  VProgressLinear: VProgressLinear
86001
+ VOverlay: VOverlay
86002
+ VProgressCircular: VProgressCircular
86003
+ VSelect: VSelect
86006
86004
  VRadioGroup: VRadioGroup
86007
86005
  VRating: VRating
86008
- VSelect: VSelect
86009
86006
  VSelectionControlGroup: VSelectionControlGroup
86010
- VSkeletonLoader: VSkeletonLoader
86011
- VSheet: VSheet
86012
86007
  VSelectionControl: VSelectionControl
86008
+ VSheet: VSheet
86009
+ VSlider: VSlider
86010
+ VSkeletonLoader: VSkeletonLoader
86011
+ VSnackbar: VSnackbar
86013
86012
  VSlideGroup: VSlideGroup
86014
86013
  VSlideGroupItem: VSlideGroupItem
86015
86014
  VStepper: VStepper
@@ -86018,44 +86017,44 @@ declare module 'vue' {
86018
86017
  VStepperItem: VStepperItem
86019
86018
  VStepperWindow: VStepperWindow
86020
86019
  VStepperWindowItem: VStepperWindowItem
86021
- VSnackbar: VSnackbar
86022
- VSlider: VSlider
86023
- VSystemBar: VSystemBar
86024
86020
  VSwitch: VSwitch
86025
- VTimeline: VTimeline
86026
- VTimelineItem: VTimelineItem
86021
+ VTextField: VTextField
86027
86022
  VTab: VTab
86028
86023
  VTabs: VTabs
86029
86024
  VTabsWindow: VTabsWindow
86030
86025
  VTabsWindowItem: VTabsWindowItem
86031
- VTextField: VTextField
86026
+ VTable: VTable
86027
+ VSystemBar: VSystemBar
86028
+ VTimeline: VTimeline
86029
+ VTimelineItem: VTimelineItem
86032
86030
  VTextarea: VTextarea
86033
86031
  VToolbar: VToolbar
86034
86032
  VToolbarTitle: VToolbarTitle
86035
86033
  VToolbarItems: VToolbarItems
86036
- VTooltip: VTooltip
86037
86034
  VWindow: VWindow
86038
86035
  VWindowItem: VWindowItem
86039
- VConfirmEdit: VConfirmEdit
86040
- VTable: VTable
86036
+ VTooltip: VTooltip
86041
86037
  VDataIterator: VDataIterator
86038
+ VConfirmEdit: VConfirmEdit
86042
86039
  VDefaultsProvider: VDefaultsProvider
86043
- VForm: VForm
86044
86040
  VContainer: VContainer
86045
86041
  VCol: VCol
86046
86042
  VRow: VRow
86047
86043
  VSpacer: VSpacer
86048
86044
  VHover: VHover
86045
+ VForm: VForm
86046
+ VLayout: VLayout
86047
+ VLayoutItem: VLayoutItem
86049
86048
  VLazy: VLazy
86050
86049
  VLocaleProvider: VLocaleProvider
86051
86050
  VNoSsr: VNoSsr
86052
- VRadio: VRadio
86053
86051
  VParallax: VParallax
86054
- VRangeSlider: VRangeSlider
86052
+ VRadio: VRadio
86055
86053
  VResponsive: VResponsive
86054
+ VRangeSlider: VRangeSlider
86056
86055
  VSnackbarQueue: VSnackbarQueue
86057
- VSpeedDial: VSpeedDial
86058
86056
  VSparkline: VSparkline
86057
+ VSpeedDial: VSpeedDial
86059
86058
  VThemeProvider: VThemeProvider
86060
86059
  VValidation: VValidation
86061
86060
  VVirtualScroll: VVirtualScroll
@@ -86075,31 +86074,28 @@ declare module 'vue' {
86075
86074
  VExpandTransition: VExpandTransition
86076
86075
  VExpandXTransition: VExpandXTransition
86077
86076
  VDialogTransition: VDialogTransition
86078
- VEmptyState: VEmptyState
86079
- VLayout: VLayout
86080
- VLayoutItem: VLayoutItem
86077
+ VColorInput: VColorInput
86078
+ VFileUpload: VFileUpload
86079
+ VFileUploadItem: VFileUploadItem
86081
86080
  VCalendar: VCalendar
86082
86081
  VCalendarDay: VCalendarDay
86083
86082
  VCalendarHeader: VCalendarHeader
86084
86083
  VCalendarInterval: VCalendarInterval
86085
86084
  VCalendarIntervalEvent: VCalendarIntervalEvent
86086
86085
  VCalendarMonthDay: VCalendarMonthDay
86087
- VIconBtn: VIconBtn
86088
86086
  VPicker: VPicker
86089
86087
  VPickerTitle: VPickerTitle
86090
- VColorInput: VColorInput
86088
+ VStepperVertical: VStepperVertical
86089
+ VStepperVerticalItem: VStepperVerticalItem
86090
+ VStepperVerticalActions: VStepperVerticalActions
86091
86091
  VTimePicker: VTimePicker
86092
86092
  VTimePickerClock: VTimePickerClock
86093
86093
  VTimePickerControls: VTimePickerControls
86094
- VFileUpload: VFileUpload
86095
- VFileUploadItem: VFileUploadItem
86094
+ VIconBtn: VIconBtn
86096
86095
  VTreeview: VTreeview
86097
86096
  VTreeviewItem: VTreeviewItem
86098
86097
  VTreeviewGroup: VTreeviewGroup
86099
- VStepperVertical: VStepperVertical
86100
- VStepperVerticalItem: VStepperVerticalItem
86101
- VStepperVerticalActions: VStepperVerticalActions
86102
- VDateInput: VDateInput
86103
86098
  VPullToRefresh: VPullToRefresh
86099
+ VDateInput: VDateInput
86104
86100
  }
86105
86101
  }
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.8.8-master.2025-06-07
2
+ * Vuetify v3.8.8-master.2025-06-10
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { shallowRef, reactive, watchEffect, toRef, capitalize, camelize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, createVNode, mergeProps, createElementVNode, normalizeClass, toValue, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, normalizeStyle, TransitionGroup, Transition, toRefs, isRef, onBeforeMount, nextTick, withDirectives, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, normalizeProps, guardReactiveProps, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
7
+ import { shallowRef, reactive, watchEffect, toRef, capitalize, unref, Fragment, camelize, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, computed, provide, inject as inject$1, defineComponent as defineComponent$1, h, createVNode, mergeProps, createElementVNode, normalizeClass, toValue, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, normalizeStyle, TransitionGroup, Transition, toRefs, isRef, onBeforeMount, nextTick, withDirectives, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, normalizeProps, guardReactiveProps, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
8
8
 
9
9
  const IN_BROWSER = typeof window !== 'undefined';
10
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
@@ -526,7 +526,6 @@ function extractNumber(text, decimalDigitsLimit) {
526
526
  return cleanText;
527
527
  }
528
528
  function camelizeProps(props) {
529
- if (!props) return;
530
529
  const out = {};
531
530
  for (const prop in props) {
532
531
  out[camelize(prop)] = props[prop];
@@ -9864,7 +9863,7 @@ function transformItem$3(props, item) {
9864
9863
  const _props = {
9865
9864
  title,
9866
9865
  value,
9867
- ...camelizeProps(itemProps)
9866
+ ...itemProps
9868
9867
  };
9869
9868
  return {
9870
9869
  title: String(_props.title ?? ''),
@@ -13331,6 +13330,7 @@ const VSelect = genericComponent()({
13331
13330
  index,
13332
13331
  itemRef
13333
13332
  } = _ref2;
13333
+ const camelizedProps = camelizeProps(item.props);
13334
13334
  const itemProps = mergeProps(item.props, {
13335
13335
  ref: itemRef,
13336
13336
  key: item.value,
@@ -13352,10 +13352,10 @@ const VSelect = genericComponent()({
13352
13352
  "modelValue": isSelected,
13353
13353
  "ripple": false,
13354
13354
  "tabindex": "-1"
13355
- }, null) : undefined, item.props.prependAvatar && createVNode(VAvatar, {
13356
- "image": item.props.prependAvatar
13357
- }, null), item.props.prependIcon && createVNode(VIcon, {
13358
- "icon": item.props.prependIcon
13355
+ }, null) : undefined, camelizedProps.prependAvatar && createVNode(VAvatar, {
13356
+ "image": camelizedProps.prependAvatar
13357
+ }, null), camelizedProps.prependIcon && createVNode(VIcon, {
13358
+ "icon": camelizedProps.prependIcon
13359
13359
  }, null)]);
13360
13360
  }
13361
13361
  });
@@ -16534,7 +16534,7 @@ const VSliderThumb = genericComponent()({
16534
16534
  default: () => [withDirectives(createElementVNode("div", {
16535
16535
  "class": "v-slider-thumb__label-container"
16536
16536
  }, [createElementVNode("div", {
16537
- "class": normalizeClass(['v-slider-thumb__label'])
16537
+ "class": normalizeClass(['v-slider-thumb__label', textColorClasses.value])
16538
16538
  }, [createElementVNode("div", null, [slots['thumb-label']?.({
16539
16539
  modelValue: props.modelValue
16540
16540
  }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]
@@ -17803,7 +17803,7 @@ function getWeek(date, locale, firstDayOfWeek, firstWeekMinSize) {
17803
17803
  const yearStart = new Date(year, 0, 1);
17804
17804
  const size = firstWeekSize(year);
17805
17805
  const d1w1 = size >= minWeekSize ? addDays(yearStart, size - 7) : addDays(yearStart, size);
17806
- return 1 + getDiff(date, d1w1, 'weeks');
17806
+ return 1 + getDiff(endOfDay(date), startOfDay(d1w1), 'weeks');
17807
17807
  }
17808
17808
  function getDate(date) {
17809
17809
  return date.getDate();
@@ -18106,6 +18106,18 @@ function createDate(options, locale) {
18106
18106
  instance: createInstance(_options, locale)
18107
18107
  };
18108
18108
  }
18109
+ function createDateRange(adapter, start, stop) {
18110
+ const diff = adapter.getDiff(adapter.endOfDay(stop ?? start), adapter.startOfDay(start), 'days');
18111
+ const datesInRange = [start];
18112
+ for (let i = 1; i < diff; i++) {
18113
+ const nextDate = adapter.addDays(start, i);
18114
+ datesInRange.push(nextDate);
18115
+ }
18116
+ if (stop) {
18117
+ datesInRange.push(adapter.endOfDay(stop));
18118
+ }
18119
+ return datesInRange;
18120
+ }
18109
18121
  function createInstance(options, locale) {
18110
18122
  const instance = reactive(typeof options.adapter === 'function'
18111
18123
  // eslint-disable-next-line new-cap
@@ -18116,20 +18128,7 @@ function createInstance(options, locale) {
18116
18128
  watch(locale.current, value => {
18117
18129
  instance.locale = options.locale[value] ?? value ?? instance.locale;
18118
18130
  });
18119
- return Object.assign(instance, {
18120
- createDateRange(start, stop) {
18121
- const diff = instance.getDiff(stop ?? start, start, 'days');
18122
- const datesInRange = [start];
18123
- for (let i = 1; i < diff; i++) {
18124
- const nextDate = instance.addDays(start, i);
18125
- datesInRange.push(nextDate);
18126
- }
18127
- if (stop) {
18128
- datesInRange.push(instance.endOfDay(stop));
18129
- }
18130
- return datesInRange;
18131
- }
18132
- });
18131
+ return instance;
18133
18132
  }
18134
18133
  function useDate() {
18135
18134
  const options = inject$1(DateOptionsSymbol);
@@ -20272,6 +20271,7 @@ const VDataTableColumn = defineFunctionalComponent({
20272
20271
  } = _ref;
20273
20272
  const Tag = props.tag ?? 'td';
20274
20273
  return createVNode(Tag, {
20274
+ "tabindex": "0",
20275
20275
  "class": normalizeClass(['v-data-table__td', {
20276
20276
  'v-data-table-column--fixed': props.fixed,
20277
20277
  'v-data-table-column--last-fixed': props.lastFixed,
@@ -20616,6 +20616,11 @@ const VDataTableHeaders = genericComponent()({
20616
20616
  top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
20617
20617
  };
20618
20618
  }
20619
+ function handleEnterKeyPress(event, column) {
20620
+ if (event.key === 'Enter' && !props.disableSort) {
20621
+ toggleSort(column);
20622
+ }
20623
+ }
20619
20624
  function getSortIcon(column) {
20620
20625
  const item = sortBy.value.find(item => item.key === column.key);
20621
20626
  if (!item) return props.sortAscIcon;
@@ -20672,7 +20677,9 @@ const VDataTableHeaders = genericComponent()({
20672
20677
  "nowrap": column.nowrap,
20673
20678
  "lastFixed": column.lastFixed,
20674
20679
  "noPadding": noPadding
20675
- }, headerProps), {
20680
+ }, headerProps, {
20681
+ "onKeydown": event => column.sortable && handleEnterKeyPress(event, column)
20682
+ }), {
20676
20683
  default: () => {
20677
20684
  const columnSlotName = `header.${column.key}`;
20678
20685
  const columnSlotProps = {
@@ -22525,7 +22532,7 @@ const VDatePickerMonth = genericComponent()({
22525
22532
  } else {
22526
22533
  rangeStop.value = adapter.endOfDay(_value);
22527
22534
  }
22528
- model.value = adapter.createDateRange(rangeStart.value, rangeStop.value);
22535
+ model.value = createDateRange(adapter, rangeStart.value, rangeStop.value);
22529
22536
  } else {
22530
22537
  rangeStart.value = value;
22531
22538
  rangeStop.value = undefined;
@@ -23612,6 +23619,56 @@ const VFab = genericComponent()({
23612
23619
 
23613
23620
  // Types
23614
23621
 
23622
+ function useFileDrop() {
23623
+ function hasFilesOrFolders(e) {
23624
+ const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
23625
+ return entries.length > 0 || [...(e.dataTransfer?.files ?? [])].length > 0;
23626
+ }
23627
+ async function handleDrop(e) {
23628
+ const result = [];
23629
+ const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
23630
+ if (entries.length) {
23631
+ for (const entry of entries) {
23632
+ const files = await traverseFileTree(entry, appendIfDirectory('.', entry));
23633
+ result.push(...files.map(x => x.file));
23634
+ }
23635
+ } else {
23636
+ result.push(...[...(e.dataTransfer?.files ?? [])]);
23637
+ }
23638
+ return result;
23639
+ }
23640
+ return {
23641
+ handleDrop,
23642
+ hasFilesOrFolders
23643
+ };
23644
+ }
23645
+ function traverseFileTree(item) {
23646
+ let path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
23647
+ return new Promise((resolve, reject) => {
23648
+ if (item.isFile) {
23649
+ const fileEntry = item;
23650
+ fileEntry.file(file => resolve([{
23651
+ file,
23652
+ path
23653
+ }]), reject);
23654
+ } else if (item.isDirectory) {
23655
+ const directoryReader = item.createReader();
23656
+ directoryReader.readEntries(async entries => {
23657
+ const files = [];
23658
+ for (const entry of entries) {
23659
+ files.push(...(await traverseFileTree(entry, appendIfDirectory(path, entry))));
23660
+ }
23661
+ resolve(files);
23662
+ });
23663
+ }
23664
+ });
23665
+ }
23666
+ function appendIfDirectory(path, item) {
23667
+ return item.isDirectory ? `${path}/${item.name}` : path;
23668
+ }
23669
+
23670
+ // Types
23671
+
23615
23672
  const makeVFileInputProps = propsFactory({
23616
23673
  chips: Boolean,
23617
23674
  counter: Boolean,
@@ -23696,6 +23753,10 @@ const VFileInput = genericComponent()({
23696
23753
  const isActive = toRef(() => isFocused.value || props.active);
23697
23754
  const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
23698
23755
  const isDragging = shallowRef(false);
23756
+ const {
23757
+ handleDrop,
23758
+ hasFilesOrFolders
23759
+ } = useFileDrop();
23699
23760
  function onFocus() {
23700
23761
  if (inputRef.value !== document.activeElement) {
23701
23762
  inputRef.value?.focus();
@@ -23729,13 +23790,13 @@ const VFileInput = genericComponent()({
23729
23790
  e.preventDefault();
23730
23791
  isDragging.value = false;
23731
23792
  }
23732
- function onDrop(e) {
23793
+ async function onDrop(e) {
23733
23794
  e.preventDefault();
23734
23795
  e.stopImmediatePropagation();
23735
23796
  isDragging.value = false;
23736
- if (!e.dataTransfer?.files?.length || !inputRef.value) return;
23797
+ if (!inputRef.value || !hasFilesOrFolders(e)) return;
23737
23798
  const dataTransfer = new DataTransfer();
23738
- for (const file of e.dataTransfer.files) {
23799
+ for (const file of await handleDrop(e)) {
23739
23800
  dataTransfer.items.add(file);
23740
23801
  }
23741
23802
  inputRef.value.files = dataTransfer.files;
@@ -29403,7 +29464,7 @@ function createVuetify$1() {
29403
29464
  };
29404
29465
  });
29405
29466
  }
29406
- const version$1 = "3.8.8-master.2025-06-07";
29467
+ const version$1 = "3.8.8-master.2025-06-10";
29407
29468
  createVuetify$1.version = version$1;
29408
29469
 
29409
29470
  // Vue's inject() can only be used in setup
@@ -29428,7 +29489,7 @@ const createVuetify = function () {
29428
29489
  ...options
29429
29490
  });
29430
29491
  };
29431
- const version = "3.8.8-master.2025-06-07";
29492
+ const version = "3.8.8-master.2025-06-10";
29432
29493
  createVuetify.version = version;
29433
29494
 
29434
29495
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };