vuetify 3.8.8 → 3.8.9

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 (80) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/json/attributes.json +3119 -3119
  3. package/dist/json/importMap-labs.json +32 -32
  4. package/dist/json/importMap.json +154 -154
  5. package/dist/json/web-types.json +5973 -5973
  6. package/dist/vuetify-labs.cjs +124 -66
  7. package/dist/vuetify-labs.css +4474 -4474
  8. package/dist/vuetify-labs.d.ts +72 -60
  9. package/dist/vuetify-labs.esm.js +125 -67
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +124 -66
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +111 -47
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +4922 -4922
  16. package/dist/vuetify.d.ts +67 -60
  17. package/dist/vuetify.esm.js +112 -48
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +111 -47
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +982 -976
  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/VDataTableFooter.js +3 -1
  27. package/lib/components/VDataTable/VDataTableFooter.js.map +1 -1
  28. package/lib/components/VDataTable/VDataTableHeaders.js +8 -1
  29. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  30. package/lib/components/VDatePicker/VDatePickerMonth.js +2 -2
  31. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  32. package/lib/components/VFileInput/VFileInput.js +8 -3
  33. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  34. package/lib/components/VNumberInput/VNumberInput.d.ts +5 -0
  35. package/lib/components/VNumberInput/VNumberInput.js +7 -11
  36. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  37. package/lib/components/VOtpInput/VOtpInput.js +5 -2
  38. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  39. package/lib/components/VSelect/VSelect.js +6 -5
  40. package/lib/components/VSelect/VSelect.js.map +1 -1
  41. package/lib/components/VSlider/VSliderThumb.js +1 -1
  42. package/lib/components/VSlider/VSliderThumb.js.map +1 -1
  43. package/lib/components/VTextField/VTextField.js +5 -4
  44. package/lib/components/VTextField/VTextField.js.map +1 -1
  45. package/lib/composables/date/adapters/vuetify.js +1 -1
  46. package/lib/composables/date/adapters/vuetify.js.map +1 -1
  47. package/lib/composables/date/date.d.ts +1 -4
  48. package/lib/composables/date/date.js +13 -14
  49. package/lib/composables/date/date.js.map +1 -1
  50. package/lib/composables/fileDrop.d.ts +4 -0
  51. package/lib/composables/fileDrop.js +50 -0
  52. package/lib/composables/fileDrop.js.map +1 -0
  53. package/lib/composables/icons.d.ts +6 -0
  54. package/lib/composables/icons.js.map +1 -1
  55. package/lib/composables/list-items.js +2 -2
  56. package/lib/composables/list-items.js.map +1 -1
  57. package/lib/entry-bundler.d.ts +0 -3
  58. package/lib/entry-bundler.js +1 -1
  59. package/lib/framework.d.ts +62 -60
  60. package/lib/framework.js +1 -1
  61. package/lib/iconsets/fa.js +3 -1
  62. package/lib/iconsets/fa.js.map +1 -1
  63. package/lib/iconsets/fa4.js +3 -1
  64. package/lib/iconsets/fa4.js.map +1 -1
  65. package/lib/iconsets/md.js +3 -1
  66. package/lib/iconsets/md.js.map +1 -1
  67. package/lib/iconsets/mdi-svg.js +3 -1
  68. package/lib/iconsets/mdi-svg.js.map +1 -1
  69. package/lib/labs/VColorInput/VColorInput.js +3 -8
  70. package/lib/labs/VColorInput/VColorInput.js.map +1 -1
  71. package/lib/labs/VDateInput/VDateInput.d.ts +5 -0
  72. package/lib/labs/VDateInput/VDateInput.js +7 -10
  73. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  74. package/lib/labs/VFileUpload/VFileUpload.js +7 -3
  75. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  76. package/lib/labs/entry-bundler.d.ts +0 -3
  77. package/lib/util/helpers.d.ts +1 -1
  78. package/lib/util/helpers.js +0 -1
  79. package/lib/util/helpers.js.map +1 -1
  80. package/package.json +2 -2
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 {
@@ -258,6 +257,7 @@ type IconValue = string | (string | [path: string, opacity: number])[] | JSXComp
258
257
  declare const IconValue: PropType<IconValue>;
259
258
  interface IconAliases {
260
259
  [name: string]: IconValue;
260
+ collapse: IconValue;
261
261
  complete: IconValue;
262
262
  cancel: IconValue;
263
263
  close: IconValue;
@@ -293,6 +293,11 @@ interface IconAliases {
293
293
  plus: IconValue;
294
294
  minus: IconValue;
295
295
  calendar: IconValue;
296
+ treeviewCollapse: IconValue;
297
+ treeviewExpand: IconValue;
298
+ eyeDropper: IconValue;
299
+ upload: IconValue;
300
+ color: IconValue;
296
301
  }
297
302
  interface IconProps {
298
303
  tag: string | JSXComponent;
@@ -51069,6 +51074,7 @@ declare const VNumberInput: {
51069
51074
  "v-slot:increment"?: false | ((arg: ControlSlot$1) => vue.VNodeChild) | undefined;
51070
51075
  "v-slot:decrement"?: false | ((arg: ControlSlot$1) => vue.VNodeChild) | undefined;
51071
51076
  } & {
51077
+ "onUpdate:focused"?: ((val: boolean) => any) | undefined;
51072
51078
  "onUpdate:modelValue"?: ((val: number) => any) | undefined;
51073
51079
  }, Omit<Omit<{
51074
51080
  $: vue.ComponentInternalInstance;
@@ -53009,6 +53015,7 @@ declare const VNumberInput: {
53009
53015
  } | {};
53010
53016
  }) | {};
53011
53017
  }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
53018
+ 'update:focused': (val: boolean) => true;
53012
53019
  'update:modelValue': (val: number) => true;
53013
53020
  }, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, {
53014
53021
  flat: boolean;
@@ -53205,6 +53212,7 @@ declare const VNumberInput: {
53205
53212
  "v-slot:increment"?: false | ((arg: ControlSlot$1) => vue.VNodeChild) | undefined;
53206
53213
  "v-slot:decrement"?: false | ((arg: ControlSlot$1) => vue.VNodeChild) | undefined;
53207
53214
  } & {
53215
+ "onUpdate:focused"?: ((val: boolean) => any) | undefined;
53208
53216
  "onUpdate:modelValue"?: ((val: number) => any) | undefined;
53209
53217
  }, Omit<Omit<{
53210
53218
  $: vue.ComponentInternalInstance;
@@ -55318,6 +55326,7 @@ declare const VNumberInput: {
55318
55326
  "v-slot:increment"?: false | ((arg: ControlSlot$1) => vue.VNodeChild) | undefined;
55319
55327
  "v-slot:decrement"?: false | ((arg: ControlSlot$1) => vue.VNodeChild) | undefined;
55320
55328
  } & {
55329
+ "onUpdate:focused"?: ((val: boolean) => any) | undefined;
55321
55330
  "onUpdate:modelValue"?: ((val: number) => any) | undefined;
55322
55331
  }, Omit<Omit<{
55323
55332
  $: vue.ComponentInternalInstance;
@@ -57258,6 +57267,7 @@ declare const VNumberInput: {
57258
57267
  } | {};
57259
57268
  }) | {};
57260
57269
  }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
57270
+ 'update:focused': (val: boolean) => true;
57261
57271
  'update:modelValue': (val: number) => true;
57262
57272
  }, string, {
57263
57273
  flat: boolean;
@@ -85810,7 +85820,6 @@ declare const createVuetify: {
85810
85820
  options: InternalDateOptions;
85811
85821
  instance: {
85812
85822
  locale?: any;
85813
- createDateRange: (start: unknown, stop?: unknown) => unknown[];
85814
85823
  date: (value?: any) => unknown;
85815
85824
  format: (date: unknown, formatString: string) => string;
85816
85825
  toJsDate: (value: unknown) => Date;
@@ -85854,8 +85863,6 @@ declare const createVuetify: {
85854
85863
  setHours: (date: unknown, hours: number) => unknown;
85855
85864
  getMinutes: (date: unknown) => number;
85856
85865
  setMinutes: (date: unknown, minutes: number) => unknown;
85857
- } & {
85858
- createDateRange(start: unknown, stop?: unknown): unknown[];
85859
85866
  };
85860
85867
  };
85861
85868
  goTo: GoToInstance;
@@ -85902,38 +85909,39 @@ declare module 'vue' {
85902
85909
  }
85903
85910
  export interface GlobalComponents {
85904
85911
  VApp: VApp
85912
+ VAlert: VAlert
85913
+ VAlertTitle: VAlertTitle
85914
+ VAutocomplete: VAutocomplete
85915
+ VAvatar: VAvatar
85905
85916
  VAppBar: VAppBar
85906
85917
  VAppBarNavIcon: VAppBarNavIcon
85907
85918
  VAppBarTitle: VAppBarTitle
85908
- VAvatar: VAvatar
85909
- VAlert: VAlert
85910
- VAlertTitle: VAlertTitle
85919
+ VBadge: VBadge
85911
85920
  VBanner: VBanner
85912
85921
  VBannerActions: VBannerActions
85913
85922
  VBannerText: VBannerText
85914
- VBadge: VBadge
85915
- VBtn: VBtn
85916
- VAutocomplete: VAutocomplete
85917
85923
  VBottomSheet: VBottomSheet
85918
- VBottomNavigation: VBottomNavigation
85919
85924
  VBreadcrumbs: VBreadcrumbs
85920
85925
  VBreadcrumbsItem: VBreadcrumbsItem
85921
85926
  VBreadcrumbsDivider: VBreadcrumbsDivider
85927
+ VBtn: VBtn
85928
+ VBottomNavigation: VBottomNavigation
85929
+ VBtnToggle: VBtnToggle
85922
85930
  VCarousel: VCarousel
85923
85931
  VCarouselItem: VCarouselItem
85932
+ VCheckbox: VCheckbox
85933
+ VCheckboxBtn: VCheckboxBtn
85924
85934
  VBtnGroup: VBtnGroup
85925
- VBtnToggle: VBtnToggle
85935
+ VChipGroup: VChipGroup
85936
+ VCode: VCode
85926
85937
  VCard: VCard
85927
85938
  VCardActions: VCardActions
85928
85939
  VCardItem: VCardItem
85929
85940
  VCardSubtitle: VCardSubtitle
85930
85941
  VCardText: VCardText
85931
85942
  VCardTitle: VCardTitle
85932
- VCode: VCode
85933
85943
  VColorPicker: VColorPicker
85934
- VCheckbox: VCheckbox
85935
- VCheckboxBtn: VCheckboxBtn
85936
- VCombobox: VCombobox
85944
+ VCounter: VCounter
85937
85945
  VDataTable: VDataTable
85938
85946
  VDataTableHeaders: VDataTableHeaders
85939
85947
  VDataTableFooter: VDataTableFooter
@@ -85941,36 +85949,30 @@ declare module 'vue' {
85941
85949
  VDataTableRow: VDataTableRow
85942
85950
  VDataTableVirtual: VDataTableVirtual
85943
85951
  VDataTableServer: VDataTableServer
85944
- VCounter: VCounter
85945
- VChip: VChip
85946
- VDialog: VDialog
85947
- VDivider: VDivider
85948
- VFab: VFab
85952
+ VCombobox: VCombobox
85949
85953
  VDatePicker: VDatePicker
85950
85954
  VDatePickerControls: VDatePickerControls
85951
85955
  VDatePickerHeader: VDatePickerHeader
85952
85956
  VDatePickerMonth: VDatePickerMonth
85953
85957
  VDatePickerMonths: VDatePickerMonths
85954
85958
  VDatePickerYears: VDatePickerYears
85959
+ VDialog: VDialog
85960
+ VDivider: VDivider
85955
85961
  VEmptyState: VEmptyState
85956
- VFileInput: VFileInput
85957
- VFooter: VFooter
85958
85962
  VExpansionPanels: VExpansionPanels
85959
85963
  VExpansionPanel: VExpansionPanel
85960
85964
  VExpansionPanelText: VExpansionPanelText
85961
85965
  VExpansionPanelTitle: VExpansionPanelTitle
85966
+ VFab: VFab
85967
+ VFileInput: VFileInput
85968
+ VFooter: VFooter
85962
85969
  VField: VField
85963
85970
  VFieldLabel: VFieldLabel
85964
- VInfiniteScroll: VInfiniteScroll
85965
- VIcon: VIcon
85966
- VComponentIcon: VComponentIcon
85967
- VSvgIcon: VSvgIcon
85968
- VLigatureIcon: VLigatureIcon
85969
- VClassIcon: VClassIcon
85970
- VImg: VImg
85971
85971
  VItemGroup: VItemGroup
85972
85972
  VItem: VItem
85973
+ VImg: VImg
85973
85974
  VInput: VInput
85975
+ VLabel: VLabel
85974
85976
  VKbd: VKbd
85975
85977
  VList: VList
85976
85978
  VListGroup: VListGroup
@@ -85981,59 +85983,65 @@ declare module 'vue' {
85981
85983
  VListItemSubtitle: VListItemSubtitle
85982
85984
  VListItemTitle: VListItemTitle
85983
85985
  VListSubheader: VListSubheader
85984
- VLabel: VLabel
85985
- VMain: VMain
85986
- VMessages: VMessages
85987
85986
  VMenu: VMenu
85987
+ VMessages: VMessages
85988
85988
  VNavigationDrawer: VNavigationDrawer
85989
+ VMain: VMain
85989
85990
  VNumberInput: VNumberInput
85990
- VOverlay: VOverlay
85991
85991
  VOtpInput: VOtpInput
85992
+ VOverlay: VOverlay
85993
+ VProgressLinear: VProgressLinear
85994
+ VProgressCircular: VProgressCircular
85992
85995
  VPagination: VPagination
85993
85996
  VRadioGroup: VRadioGroup
85994
- VProgressLinear: VProgressLinear
85995
- VRating: VRating
85996
- VSelectionControl: VSelectionControl
85997
85997
  VSelect: VSelect
85998
- VSheet: VSheet
85998
+ VSelectionControl: VSelectionControl
85999
85999
  VSelectionControlGroup: VSelectionControlGroup
86000
- VSkeletonLoader: VSkeletonLoader
86000
+ VRating: VRating
86001
+ VSheet: VSheet
86001
86002
  VSlideGroup: VSlideGroup
86002
86003
  VSlideGroupItem: VSlideGroupItem
86004
+ VSnackbar: VSnackbar
86005
+ VSkeletonLoader: VSkeletonLoader
86003
86006
  VSlider: VSlider
86004
- VSwitch: VSwitch
86005
86007
  VStepper: VStepper
86006
86008
  VStepperActions: VStepperActions
86007
86009
  VStepperHeader: VStepperHeader
86008
86010
  VStepperItem: VStepperItem
86009
86011
  VStepperWindow: VStepperWindow
86010
86012
  VStepperWindowItem: VStepperWindowItem
86013
+ VSwitch: VSwitch
86011
86014
  VSystemBar: VSystemBar
86012
86015
  VTab: VTab
86013
86016
  VTabs: VTabs
86014
86017
  VTabsWindow: VTabsWindow
86015
86018
  VTabsWindowItem: VTabsWindowItem
86016
- VTextField: VTextField
86017
86019
  VTextarea: VTextarea
86018
- VTable: VTable
86020
+ VTextField: VTextField
86019
86021
  VToolbar: VToolbar
86020
86022
  VToolbarTitle: VToolbarTitle
86021
86023
  VToolbarItems: VToolbarItems
86022
- VTooltip: VTooltip
86023
86024
  VTimeline: VTimeline
86024
86025
  VTimelineItem: VTimelineItem
86026
+ VTooltip: VTooltip
86027
+ VTable: VTable
86025
86028
  VWindow: VWindow
86026
86029
  VWindowItem: VWindowItem
86030
+ VChip: VChip
86027
86031
  VConfirmEdit: VConfirmEdit
86028
86032
  VDataIterator: VDataIterator
86029
86033
  VDefaultsProvider: VDefaultsProvider
86030
- VForm: VForm
86034
+ VHover: VHover
86031
86035
  VContainer: VContainer
86032
86036
  VCol: VCol
86033
86037
  VRow: VRow
86034
86038
  VSpacer: VSpacer
86035
- VChipGroup: VChipGroup
86036
- VHover: VHover
86039
+ VIcon: VIcon
86040
+ VComponentIcon: VComponentIcon
86041
+ VSvgIcon: VSvgIcon
86042
+ VLigatureIcon: VLigatureIcon
86043
+ VClassIcon: VClassIcon
86044
+ VForm: VForm
86037
86045
  VLayout: VLayout
86038
86046
  VLayoutItem: VLayoutItem
86039
86047
  VLazy: VLazy
@@ -86042,14 +86050,13 @@ declare module 'vue' {
86042
86050
  VParallax: VParallax
86043
86051
  VRadio: VRadio
86044
86052
  VRangeSlider: VRangeSlider
86045
- VSnackbarQueue: VSnackbarQueue
86046
- VSparkline: VSparkline
86047
86053
  VResponsive: VResponsive
86054
+ VSparkline: VSparkline
86055
+ VSnackbarQueue: VSnackbarQueue
86056
+ VSpeedDial: VSpeedDial
86048
86057
  VThemeProvider: VThemeProvider
86049
86058
  VValidation: VValidation
86050
86059
  VVirtualScroll: VVirtualScroll
86051
- VSpeedDial: VSpeedDial
86052
- VSnackbar: VSnackbar
86053
86060
  VFabTransition: VFabTransition
86054
86061
  VDialogBottomTransition: VDialogBottomTransition
86055
86062
  VDialogTopTransition: VDialogTopTransition
@@ -86066,29 +86073,29 @@ declare module 'vue' {
86066
86073
  VExpandTransition: VExpandTransition
86067
86074
  VExpandXTransition: VExpandXTransition
86068
86075
  VDialogTransition: VDialogTransition
86069
- VProgressCircular: VProgressCircular
86070
- VColorInput: VColorInput
86071
- VFileUpload: VFileUpload
86072
- VFileUploadItem: VFileUploadItem
86073
- VStepperVertical: VStepperVertical
86074
- VStepperVerticalItem: VStepperVerticalItem
86075
- VStepperVerticalActions: VStepperVerticalActions
86076
+ VInfiniteScroll: VInfiniteScroll
86076
86077
  VCalendar: VCalendar
86077
86078
  VCalendarDay: VCalendarDay
86078
86079
  VCalendarHeader: VCalendarHeader
86079
86080
  VCalendarInterval: VCalendarInterval
86080
86081
  VCalendarIntervalEvent: VCalendarIntervalEvent
86081
86082
  VCalendarMonthDay: VCalendarMonthDay
86082
- VTimePicker: VTimePicker
86083
- VTimePickerClock: VTimePickerClock
86084
- VTimePickerControls: VTimePickerControls
86083
+ VFileUpload: VFileUpload
86084
+ VFileUploadItem: VFileUploadItem
86085
86085
  VIconBtn: VIconBtn
86086
+ VStepperVertical: VStepperVertical
86087
+ VStepperVerticalItem: VStepperVerticalItem
86088
+ VStepperVerticalActions: VStepperVerticalActions
86086
86089
  VPicker: VPicker
86087
86090
  VPickerTitle: VPickerTitle
86091
+ VTimePicker: VTimePicker
86092
+ VTimePickerClock: VTimePickerClock
86093
+ VTimePickerControls: VTimePickerControls
86088
86094
  VTreeview: VTreeview
86089
86095
  VTreeviewItem: VTreeviewItem
86090
86096
  VTreeviewGroup: VTreeviewGroup
86091
86097
  VDateInput: VDateInput
86098
+ VColorInput: VColorInput
86092
86099
  VPullToRefresh: VPullToRefresh
86093
86100
  }
86094
86101
  }
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.8.8
2
+ * Vuetify v3.8.9
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 ?? ''),
@@ -12392,10 +12391,12 @@ const VTextField = genericComponent()({
12392
12391
  const inputRef = ref();
12393
12392
  const isActive = computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);
12394
12393
  function onFocus() {
12395
- if (inputRef.value !== document.activeElement) {
12396
- inputRef.value?.focus();
12397
- }
12398
12394
  if (!isFocused.value) focus();
12395
+ nextTick(() => {
12396
+ if (inputRef.value !== document.activeElement) {
12397
+ inputRef.value?.focus();
12398
+ }
12399
+ });
12399
12400
  }
12400
12401
  function onControlMousedown(e) {
12401
12402
  emit('mousedown:control', e);
@@ -12404,7 +12405,6 @@ const VTextField = genericComponent()({
12404
12405
  e.preventDefault();
12405
12406
  }
12406
12407
  function onControlClick(e) {
12407
- onFocus();
12408
12408
  emit('click:control', e);
12409
12409
  }
12410
12410
  function onClear(e, reset) {
@@ -13330,6 +13330,7 @@ const VSelect = genericComponent()({
13330
13330
  index,
13331
13331
  itemRef
13332
13332
  } = _ref2;
13333
+ const camelizedProps = camelizeProps(item.props);
13333
13334
  const itemProps = mergeProps(item.props, {
13334
13335
  ref: itemRef,
13335
13336
  key: item.value,
@@ -13351,10 +13352,10 @@ const VSelect = genericComponent()({
13351
13352
  "modelValue": isSelected,
13352
13353
  "ripple": false,
13353
13354
  "tabindex": "-1"
13354
- }, null) : undefined, item.props.prependAvatar && createVNode(VAvatar, {
13355
- "image": item.props.prependAvatar
13356
- }, null), item.props.prependIcon && createVNode(VIcon, {
13357
- "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
13358
13359
  }, null)]);
13359
13360
  }
13360
13361
  });
@@ -16533,7 +16534,7 @@ const VSliderThumb = genericComponent()({
16533
16534
  default: () => [withDirectives(createElementVNode("div", {
16534
16535
  "class": "v-slider-thumb__label-container"
16535
16536
  }, [createElementVNode("div", {
16536
- "class": normalizeClass(['v-slider-thumb__label'])
16537
+ "class": normalizeClass(['v-slider-thumb__label', textColorClasses.value])
16537
16538
  }, [createElementVNode("div", null, [slots['thumb-label']?.({
16538
16539
  modelValue: props.modelValue
16539
16540
  }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]
@@ -17802,7 +17803,7 @@ function getWeek(date, locale, firstDayOfWeek, firstWeekMinSize) {
17802
17803
  const yearStart = new Date(year, 0, 1);
17803
17804
  const size = firstWeekSize(year);
17804
17805
  const d1w1 = size >= minWeekSize ? addDays(yearStart, size - 7) : addDays(yearStart, size);
17805
- return 1 + getDiff(date, d1w1, 'weeks');
17806
+ return 1 + getDiff(endOfDay(date), startOfDay(d1w1), 'weeks');
17806
17807
  }
17807
17808
  function getDate(date) {
17808
17809
  return date.getDate();
@@ -18105,6 +18106,18 @@ function createDate(options, locale) {
18105
18106
  instance: createInstance(_options, locale)
18106
18107
  };
18107
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
+ }
18108
18121
  function createInstance(options, locale) {
18109
18122
  const instance = reactive(typeof options.adapter === 'function'
18110
18123
  // eslint-disable-next-line new-cap
@@ -18115,20 +18128,7 @@ function createInstance(options, locale) {
18115
18128
  watch(locale.current, value => {
18116
18129
  instance.locale = options.locale[value] ?? value ?? instance.locale;
18117
18130
  });
18118
- return Object.assign(instance, {
18119
- createDateRange(start, stop) {
18120
- const diff = instance.getDiff(stop ?? start, start, 'days');
18121
- const datesInRange = [start];
18122
- for (let i = 1; i < diff; i++) {
18123
- const nextDate = instance.addDays(start, i);
18124
- datesInRange.push(nextDate);
18125
- }
18126
- if (stop) {
18127
- datesInRange.push(instance.endOfDay(stop));
18128
- }
18129
- return datesInRange;
18130
- }
18131
- });
18131
+ return instance;
18132
18132
  }
18133
18133
  function useDate() {
18134
18134
  const options = inject$1(DateOptionsSymbol);
@@ -20217,7 +20217,9 @@ const VDataTableFooter = genericComponent()({
20217
20217
  "class": "v-data-table-footer"
20218
20218
  }, [slots.prepend?.(), createElementVNode("div", {
20219
20219
  "class": "v-data-table-footer__items-per-page"
20220
- }, [createElementVNode("span", null, [t(props.itemsPerPageText)]), createVNode(VSelect, {
20220
+ }, [createElementVNode("span", {
20221
+ "aria-label": t(props.itemsPerPageText)
20222
+ }, [t(props.itemsPerPageText)]), createVNode(VSelect, {
20221
20223
  "items": itemsPerPageOptions.value,
20222
20224
  "modelValue": itemsPerPage.value,
20223
20225
  "onUpdate:modelValue": v => setItemsPerPage(Number(v)),
@@ -20269,6 +20271,7 @@ const VDataTableColumn = defineFunctionalComponent({
20269
20271
  } = _ref;
20270
20272
  const Tag = props.tag ?? 'td';
20271
20273
  return createVNode(Tag, {
20274
+ "tabindex": "0",
20272
20275
  "class": normalizeClass(['v-data-table__td', {
20273
20276
  'v-data-table-column--fixed': props.fixed,
20274
20277
  'v-data-table-column--last-fixed': props.lastFixed,
@@ -20613,6 +20616,11 @@ const VDataTableHeaders = genericComponent()({
20613
20616
  top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
20614
20617
  };
20615
20618
  }
20619
+ function handleEnterKeyPress(event, column) {
20620
+ if (event.key === 'Enter' && !props.disableSort) {
20621
+ toggleSort(column);
20622
+ }
20623
+ }
20616
20624
  function getSortIcon(column) {
20617
20625
  const item = sortBy.value.find(item => item.key === column.key);
20618
20626
  if (!item) return props.sortAscIcon;
@@ -20669,7 +20677,9 @@ const VDataTableHeaders = genericComponent()({
20669
20677
  "nowrap": column.nowrap,
20670
20678
  "lastFixed": column.lastFixed,
20671
20679
  "noPadding": noPadding
20672
- }, headerProps), {
20680
+ }, headerProps, {
20681
+ "onKeydown": event => column.sortable && handleEnterKeyPress(event, column)
20682
+ }), {
20673
20683
  default: () => {
20674
20684
  const columnSlotName = `header.${column.key}`;
20675
20685
  const columnSlotProps = {
@@ -22522,7 +22532,7 @@ const VDatePickerMonth = genericComponent()({
22522
22532
  } else {
22523
22533
  rangeStop.value = adapter.endOfDay(_value);
22524
22534
  }
22525
- model.value = adapter.createDateRange(rangeStart.value, rangeStop.value);
22535
+ model.value = createDateRange(adapter, rangeStart.value, rangeStop.value);
22526
22536
  } else {
22527
22537
  rangeStart.value = value;
22528
22538
  rangeStop.value = undefined;
@@ -23609,6 +23619,56 @@ const VFab = genericComponent()({
23609
23619
 
23610
23620
  // Types
23611
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
+
23612
23672
  const makeVFileInputProps = propsFactory({
23613
23673
  chips: Boolean,
23614
23674
  counter: Boolean,
@@ -23693,6 +23753,10 @@ const VFileInput = genericComponent()({
23693
23753
  const isActive = toRef(() => isFocused.value || props.active);
23694
23754
  const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
23695
23755
  const isDragging = shallowRef(false);
23756
+ const {
23757
+ handleDrop,
23758
+ hasFilesOrFolders
23759
+ } = useFileDrop();
23696
23760
  function onFocus() {
23697
23761
  if (inputRef.value !== document.activeElement) {
23698
23762
  inputRef.value?.focus();
@@ -23726,13 +23790,13 @@ const VFileInput = genericComponent()({
23726
23790
  e.preventDefault();
23727
23791
  isDragging.value = false;
23728
23792
  }
23729
- function onDrop(e) {
23793
+ async function onDrop(e) {
23730
23794
  e.preventDefault();
23731
23795
  e.stopImmediatePropagation();
23732
23796
  isDragging.value = false;
23733
- if (!e.dataTransfer?.files?.length || !inputRef.value) return;
23797
+ if (!inputRef.value || !hasFilesOrFolders(e)) return;
23734
23798
  const dataTransfer = new DataTransfer();
23735
- for (const file of e.dataTransfer.files) {
23799
+ for (const file of await handleDrop(e)) {
23736
23800
  dataTransfer.items.add(file);
23737
23801
  }
23738
23802
  inputRef.value.files = dataTransfer.files;
@@ -25163,6 +25227,7 @@ const VNumberInput = genericComponent()({
25163
25227
  ...makeVNumberInputProps()
25164
25228
  },
25165
25229
  emits: {
25230
+ 'update:focused': val => true,
25166
25231
  'update:modelValue': val => true
25167
25232
  },
25168
25233
  setup(props, _ref) {
@@ -25178,11 +25243,7 @@ const VNumberInput = genericComponent()({
25178
25243
  });
25179
25244
  const form = useForm(props);
25180
25245
  const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);
25181
- const {
25182
- isFocused,
25183
- focus,
25184
- blur
25185
- } = useFocus(props);
25246
+ const isFocused = shallowRef(props.focused);
25186
25247
  function correctPrecision(val) {
25187
25248
  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
25188
25249
  const fixed = precision == null ? String(val) : val.toFixed(precision);
@@ -25367,11 +25428,9 @@ const VNumberInput = genericComponent()({
25367
25428
  inputText.value = model.value.toString();
25368
25429
  }
25369
25430
  function onFocus() {
25370
- focus();
25371
25431
  trimDecimalZeros();
25372
25432
  }
25373
25433
  function onBlur() {
25374
- blur();
25375
25434
  clampModel();
25376
25435
  }
25377
25436
  useRender(() => {
@@ -25464,9 +25523,12 @@ const VNumberInput = genericComponent()({
25464
25523
  }, null)]) : props.reverse && controlVariant.value !== 'hidden' ? createElementVNode(Fragment, null, [controlNode(), dividerNode()]) : undefined;
25465
25524
  const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
25466
25525
  return createVNode(VTextField, mergeProps({
25467
- "ref": vTextFieldRef,
25526
+ "ref": vTextFieldRef
25527
+ }, textFieldProps, {
25468
25528
  "modelValue": inputText.value,
25469
25529
  "onUpdate:modelValue": $event => inputText.value = $event,
25530
+ "focused": isFocused.value,
25531
+ "onUpdate:focused": $event => isFocused.value = $event,
25470
25532
  "validationValue": model.value,
25471
25533
  "onBeforeinput": onBeforeinput,
25472
25534
  "onFocus": onFocus,
@@ -25479,8 +25541,7 @@ const VNumberInput = genericComponent()({
25479
25541
  'v-number-input--reverse': props.reverse,
25480
25542
  'v-number-input--split': controlVariant.value === 'split',
25481
25543
  'v-number-input--stacked': controlVariant.value === 'stacked'
25482
- }, props.class]
25483
- }, textFieldProps, {
25544
+ }, props.class],
25484
25545
  "style": props.style,
25485
25546
  "inputmode": "decimal"
25486
25547
  }), {
@@ -25615,7 +25676,7 @@ const VOtpInput = genericComponent()({
25615
25676
  function onPaste(index, e) {
25616
25677
  e.preventDefault();
25617
25678
  e.stopPropagation();
25618
- const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';
25679
+ const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? '';
25619
25680
  if (isValidNumber(clipboardText)) return;
25620
25681
  model.value = clipboardText.split('');
25621
25682
  inputRef.value?.[index].blur();
@@ -25647,7 +25708,10 @@ const VOtpInput = genericComponent()({
25647
25708
  scoped: true
25648
25709
  });
25649
25710
  watch(model, val => {
25650
- if (val.length === length.value) emit('finish', val.join(''));
25711
+ if (val.length === length.value) {
25712
+ focusIndex.value = length.value - 1;
25713
+ emit('finish', val.join(''));
25714
+ }
25651
25715
  }, {
25652
25716
  deep: true
25653
25717
  });
@@ -29400,7 +29464,7 @@ function createVuetify$1() {
29400
29464
  };
29401
29465
  });
29402
29466
  }
29403
- const version$1 = "3.8.8";
29467
+ const version$1 = "3.8.9";
29404
29468
  createVuetify$1.version = version$1;
29405
29469
 
29406
29470
  // Vue's inject() can only be used in setup
@@ -29425,7 +29489,7 @@ const createVuetify = function () {
29425
29489
  ...options
29426
29490
  });
29427
29491
  };
29428
- const version = "3.8.8";
29492
+ const version = "3.8.9";
29429
29493
  createVuetify.version = version;
29430
29494
 
29431
29495
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };