vuetify 3.8.9 → 3.8.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 (83) hide show
  1. package/dist/json/attributes.json +3370 -3362
  2. package/dist/json/importMap-labs.json +24 -24
  3. package/dist/json/importMap.json +160 -160
  4. package/dist/json/tags.json +2 -0
  5. package/dist/json/web-types.json +5992 -5974
  6. package/dist/vuetify-labs.cjs +89 -40
  7. package/dist/vuetify-labs.css +5399 -5390
  8. package/dist/vuetify-labs.d.ts +69 -59
  9. package/dist/vuetify-labs.esm.js +89 -40
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +89 -40
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +83 -39
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +5526 -5517
  16. package/dist/vuetify.d.ts +64 -59
  17. package/dist/vuetify.esm.js +83 -39
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +83 -39
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +390 -387
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VBtn/VBtn.css +3 -0
  25. package/lib/components/VBtn/VBtn.sass +3 -0
  26. package/lib/components/VBtnGroup/VBtnGroup.css +2 -1
  27. package/lib/components/VBtnGroup/VBtnGroup.sass +2 -1
  28. package/lib/components/VDataTable/VDataTable.css +6 -3
  29. package/lib/components/VDataTable/VDataTable.sass +4 -2
  30. package/lib/components/VDatePicker/VDatePicker.js +19 -13
  31. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  32. package/lib/components/VDatePicker/VDatePickerYears.js +1 -3
  33. package/lib/components/VDatePicker/VDatePickerYears.js.map +1 -1
  34. package/lib/components/VField/VField.js +10 -2
  35. package/lib/components/VField/VField.js.map +1 -1
  36. package/lib/components/VList/VListChildren.js +4 -3
  37. package/lib/components/VList/VListChildren.js.map +1 -1
  38. package/lib/components/VList/VListGroup.d.ts +10 -0
  39. package/lib/components/VList/VListGroup.js +2 -2
  40. package/lib/components/VList/VListGroup.js.map +1 -1
  41. package/lib/components/VList/VListItem.css +2 -0
  42. package/lib/components/VList/VListItem.sass +2 -0
  43. package/lib/components/VList/_variables.scss +1 -0
  44. package/lib/components/VOtpInput/VOtpInput.js +17 -1
  45. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  46. package/lib/components/VSpeedDial/VSpeedDial.css +1 -1
  47. package/lib/components/VSpeedDial/VSpeedDial.sass +3 -1
  48. package/lib/components/VTextField/VTextField.js +4 -4
  49. package/lib/components/VTextField/VTextField.js.map +1 -1
  50. package/lib/components/VTextarea/VTextarea.js +4 -4
  51. package/lib/components/VTextarea/VTextarea.js.map +1 -1
  52. package/lib/composables/autofocus.d.ts +7 -0
  53. package/lib/composables/autofocus.js +10 -0
  54. package/lib/composables/autofocus.js.map +1 -0
  55. package/lib/composables/group.js +1 -0
  56. package/lib/composables/group.js.map +1 -1
  57. package/lib/composables/hotkey.d.ts +9 -0
  58. package/lib/composables/hotkey.js +131 -0
  59. package/lib/composables/hotkey.js.map +1 -0
  60. package/lib/composables/intersectionObserver.js +2 -2
  61. package/lib/composables/intersectionObserver.js.map +1 -1
  62. package/lib/composables/selectLink.js +2 -2
  63. package/lib/composables/selectLink.js.map +1 -1
  64. package/lib/composables/transition.js +3 -3
  65. package/lib/composables/transition.js.map +1 -1
  66. package/lib/entry-bundler.js +1 -1
  67. package/lib/entry-bundler.js.map +1 -1
  68. package/lib/framework.d.ts +59 -59
  69. package/lib/framework.js +1 -1
  70. package/lib/framework.js.map +1 -1
  71. package/lib/labs/VFileUpload/VFileUploadItem.js +1 -0
  72. package/lib/labs/VFileUpload/VFileUploadItem.js.map +1 -1
  73. package/lib/labs/VTimePicker/VTimePickerClock.js +3 -1
  74. package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
  75. package/lib/labs/VTreeview/VTreeviewChildren.js +2 -1
  76. package/lib/labs/VTreeview/VTreeviewChildren.js.map +1 -1
  77. package/lib/labs/VTreeview/VTreeviewGroup.d.ts +10 -0
  78. package/lib/labs/VTreeview/VTreeviewItem.js +1 -0
  79. package/lib/labs/VTreeview/VTreeviewItem.js.map +1 -1
  80. package/lib/util/helpers.d.ts +3 -0
  81. package/lib/util/helpers.js +7 -0
  82. package/lib/util/helpers.js.map +1 -1
  83. package/package.json +8 -8
package/dist/vuetify.d.ts CHANGED
@@ -7573,6 +7573,7 @@ declare const VListGroup: {
7573
7573
  activeColor?: string | undefined;
7574
7574
  prependIcon?: IconValue | undefined;
7575
7575
  appendIcon?: IconValue | undefined;
7576
+ rawId?: string | number | undefined;
7576
7577
  } & {
7577
7578
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
7578
7579
  default?: (() => vue.VNodeChild) | undefined;
@@ -7632,6 +7633,7 @@ declare const VListGroup: {
7632
7633
  activeColor?: string | undefined;
7633
7634
  prependIcon?: IconValue | undefined;
7634
7635
  appendIcon?: IconValue | undefined;
7636
+ rawId?: string | number | undefined;
7635
7637
  } & {
7636
7638
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
7637
7639
  default?: (() => vue.VNodeChild) | undefined;
@@ -7682,6 +7684,7 @@ declare const VListGroup: {
7682
7684
  activeColor?: string | undefined;
7683
7685
  prependIcon?: IconValue | undefined;
7684
7686
  appendIcon?: IconValue | undefined;
7687
+ rawId?: string | number | undefined;
7685
7688
  } & {
7686
7689
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
7687
7690
  default?: (() => vue.VNodeChild) | undefined;
@@ -7739,6 +7742,7 @@ declare const VListGroup: {
7739
7742
  type: vue.PropType<IconValue>;
7740
7743
  default: string;
7741
7744
  };
7745
+ rawId: (StringConstructor | NumberConstructor)[];
7742
7746
  prependIcon: vue.PropType<IconValue>;
7743
7747
  appendIcon: vue.PropType<IconValue>;
7744
7748
  fluid: BooleanConstructor;
@@ -7766,6 +7770,7 @@ declare const VListGroup: {
7766
7770
  type: vue.PropType<IconValue>;
7767
7771
  default: string;
7768
7772
  };
7773
+ rawId: (StringConstructor | NumberConstructor)[];
7769
7774
  prependIcon: vue.PropType<IconValue>;
7770
7775
  appendIcon: vue.PropType<IconValue>;
7771
7776
  fluid: BooleanConstructor;
@@ -85908,48 +85913,41 @@ declare module 'vue' {
85908
85913
  $children?: VNodeChild
85909
85914
  }
85910
85915
  export interface GlobalComponents {
85911
- VApp: VApp
85912
85916
  VAlert: VAlert
85913
85917
  VAlertTitle: VAlertTitle
85914
- VAutocomplete: VAutocomplete
85915
- VAvatar: VAvatar
85918
+ VApp: VApp
85916
85919
  VAppBar: VAppBar
85917
85920
  VAppBarNavIcon: VAppBarNavIcon
85918
85921
  VAppBarTitle: VAppBarTitle
85919
- VBadge: VBadge
85922
+ VAvatar: VAvatar
85923
+ VAutocomplete: VAutocomplete
85920
85924
  VBanner: VBanner
85921
85925
  VBannerActions: VBannerActions
85922
85926
  VBannerText: VBannerText
85923
85927
  VBottomSheet: VBottomSheet
85928
+ VBadge: VBadge
85929
+ VBottomNavigation: VBottomNavigation
85930
+ VBtnGroup: VBtnGroup
85924
85931
  VBreadcrumbs: VBreadcrumbs
85925
85932
  VBreadcrumbsItem: VBreadcrumbsItem
85926
85933
  VBreadcrumbsDivider: VBreadcrumbsDivider
85927
- VBtn: VBtn
85928
- VBottomNavigation: VBottomNavigation
85929
85934
  VBtnToggle: VBtnToggle
85930
- VCarousel: VCarousel
85931
- VCarouselItem: VCarouselItem
85932
- VCheckbox: VCheckbox
85933
- VCheckboxBtn: VCheckboxBtn
85934
- VBtnGroup: VBtnGroup
85935
- VChipGroup: VChipGroup
85936
- VCode: VCode
85937
85935
  VCard: VCard
85938
85936
  VCardActions: VCardActions
85939
85937
  VCardItem: VCardItem
85940
85938
  VCardSubtitle: VCardSubtitle
85941
85939
  VCardText: VCardText
85942
85940
  VCardTitle: VCardTitle
85943
- VColorPicker: VColorPicker
85944
- VCounter: VCounter
85945
- VDataTable: VDataTable
85946
- VDataTableHeaders: VDataTableHeaders
85947
- VDataTableFooter: VDataTableFooter
85948
- VDataTableRows: VDataTableRows
85949
- VDataTableRow: VDataTableRow
85950
- VDataTableVirtual: VDataTableVirtual
85951
- VDataTableServer: VDataTableServer
85941
+ VCheckbox: VCheckbox
85942
+ VCheckboxBtn: VCheckboxBtn
85943
+ VChipGroup: VChipGroup
85944
+ VCode: VCode
85945
+ VCarousel: VCarousel
85946
+ VCarouselItem: VCarouselItem
85947
+ VChip: VChip
85952
85948
  VCombobox: VCombobox
85949
+ VCounter: VCounter
85950
+ VColorPicker: VColorPicker
85953
85951
  VDatePicker: VDatePicker
85954
85952
  VDatePickerControls: VDatePickerControls
85955
85953
  VDatePickerHeader: VDatePickerHeader
@@ -85957,21 +85955,35 @@ declare module 'vue' {
85957
85955
  VDatePickerMonths: VDatePickerMonths
85958
85956
  VDatePickerYears: VDatePickerYears
85959
85957
  VDialog: VDialog
85958
+ VBtn: VBtn
85959
+ VDataTable: VDataTable
85960
+ VDataTableHeaders: VDataTableHeaders
85961
+ VDataTableFooter: VDataTableFooter
85962
+ VDataTableRows: VDataTableRows
85963
+ VDataTableRow: VDataTableRow
85964
+ VDataTableVirtual: VDataTableVirtual
85965
+ VDataTableServer: VDataTableServer
85960
85966
  VDivider: VDivider
85961
85967
  VEmptyState: VEmptyState
85968
+ VField: VField
85969
+ VFieldLabel: VFieldLabel
85970
+ VFileInput: VFileInput
85962
85971
  VExpansionPanels: VExpansionPanels
85963
85972
  VExpansionPanel: VExpansionPanel
85964
85973
  VExpansionPanelText: VExpansionPanelText
85965
85974
  VExpansionPanelTitle: VExpansionPanelTitle
85966
85975
  VFab: VFab
85967
- VFileInput: VFileInput
85968
- VFooter: VFooter
85969
- VField: VField
85970
- VFieldLabel: VFieldLabel
85971
85976
  VItemGroup: VItemGroup
85972
85977
  VItem: VItem
85973
85978
  VImg: VImg
85974
85979
  VInput: VInput
85980
+ VIcon: VIcon
85981
+ VComponentIcon: VComponentIcon
85982
+ VSvgIcon: VSvgIcon
85983
+ VLigatureIcon: VLigatureIcon
85984
+ VClassIcon: VClassIcon
85985
+ VInfiniteScroll: VInfiniteScroll
85986
+ VFooter: VFooter
85975
85987
  VLabel: VLabel
85976
85988
  VKbd: VKbd
85977
85989
  VList: VList
@@ -85983,26 +85995,25 @@ declare module 'vue' {
85983
85995
  VListItemSubtitle: VListItemSubtitle
85984
85996
  VListItemTitle: VListItemTitle
85985
85997
  VListSubheader: VListSubheader
85986
- VMenu: VMenu
85987
- VMessages: VMessages
85988
- VNavigationDrawer: VNavigationDrawer
85989
85998
  VMain: VMain
85990
- VNumberInput: VNumberInput
85999
+ VMessages: VMessages
86000
+ VMenu: VMenu
85991
86001
  VOtpInput: VOtpInput
86002
+ VNavigationDrawer: VNavigationDrawer
85992
86003
  VOverlay: VOverlay
85993
- VProgressLinear: VProgressLinear
85994
- VProgressCircular: VProgressCircular
85995
86004
  VPagination: VPagination
86005
+ VProgressCircular: VProgressCircular
86006
+ VNumberInput: VNumberInput
85996
86007
  VRadioGroup: VRadioGroup
86008
+ VProgressLinear: VProgressLinear
86009
+ VRating: VRating
85997
86010
  VSelect: VSelect
86011
+ VSheet: VSheet
85998
86012
  VSelectionControl: VSelectionControl
85999
86013
  VSelectionControlGroup: VSelectionControlGroup
86000
- VRating: VRating
86001
- VSheet: VSheet
86014
+ VSkeletonLoader: VSkeletonLoader
86002
86015
  VSlideGroup: VSlideGroup
86003
86016
  VSlideGroupItem: VSlideGroupItem
86004
- VSnackbar: VSnackbar
86005
- VSkeletonLoader: VSkeletonLoader
86006
86017
  VSlider: VSlider
86007
86018
  VStepper: VStepper
86008
86019
  VStepperActions: VStepperActions
@@ -86010,38 +86021,33 @@ declare module 'vue' {
86010
86021
  VStepperItem: VStepperItem
86011
86022
  VStepperWindow: VStepperWindow
86012
86023
  VStepperWindowItem: VStepperWindowItem
86024
+ VSnackbar: VSnackbar
86013
86025
  VSwitch: VSwitch
86014
- VSystemBar: VSystemBar
86026
+ VTable: VTable
86027
+ VTextField: VTextField
86015
86028
  VTab: VTab
86016
86029
  VTabs: VTabs
86017
86030
  VTabsWindow: VTabsWindow
86018
86031
  VTabsWindowItem: VTabsWindowItem
86032
+ VSystemBar: VSystemBar
86019
86033
  VTextarea: VTextarea
86020
- VTextField: VTextField
86021
86034
  VToolbar: VToolbar
86022
86035
  VToolbarTitle: VToolbarTitle
86023
86036
  VToolbarItems: VToolbarItems
86024
86037
  VTimeline: VTimeline
86025
86038
  VTimelineItem: VTimelineItem
86026
86039
  VTooltip: VTooltip
86027
- VTable: VTable
86028
86040
  VWindow: VWindow
86029
86041
  VWindowItem: VWindowItem
86030
- VChip: VChip
86031
86042
  VConfirmEdit: VConfirmEdit
86032
86043
  VDataIterator: VDataIterator
86033
86044
  VDefaultsProvider: VDefaultsProvider
86034
- VHover: VHover
86045
+ VForm: VForm
86035
86046
  VContainer: VContainer
86036
86047
  VCol: VCol
86037
86048
  VRow: VRow
86038
86049
  VSpacer: VSpacer
86039
- VIcon: VIcon
86040
- VComponentIcon: VComponentIcon
86041
- VSvgIcon: VSvgIcon
86042
- VLigatureIcon: VLigatureIcon
86043
- VClassIcon: VClassIcon
86044
- VForm: VForm
86050
+ VHover: VHover
86045
86051
  VLayout: VLayout
86046
86052
  VLayoutItem: VLayoutItem
86047
86053
  VLazy: VLazy
@@ -86055,8 +86061,8 @@ declare module 'vue' {
86055
86061
  VSnackbarQueue: VSnackbarQueue
86056
86062
  VSpeedDial: VSpeedDial
86057
86063
  VThemeProvider: VThemeProvider
86058
- VValidation: VValidation
86059
86064
  VVirtualScroll: VVirtualScroll
86065
+ VValidation: VValidation
86060
86066
  VFabTransition: VFabTransition
86061
86067
  VDialogBottomTransition: VDialogBottomTransition
86062
86068
  VDialogTopTransition: VDialogTopTransition
@@ -86073,29 +86079,28 @@ declare module 'vue' {
86073
86079
  VExpandTransition: VExpandTransition
86074
86080
  VExpandXTransition: VExpandXTransition
86075
86081
  VDialogTransition: VDialogTransition
86076
- VInfiniteScroll: VInfiniteScroll
86077
86082
  VCalendar: VCalendar
86078
86083
  VCalendarDay: VCalendarDay
86079
86084
  VCalendarHeader: VCalendarHeader
86080
86085
  VCalendarInterval: VCalendarInterval
86081
86086
  VCalendarIntervalEvent: VCalendarIntervalEvent
86082
86087
  VCalendarMonthDay: VCalendarMonthDay
86083
- VFileUpload: VFileUpload
86084
- VFileUploadItem: VFileUploadItem
86085
- VIconBtn: VIconBtn
86086
- VStepperVertical: VStepperVertical
86087
- VStepperVerticalItem: VStepperVerticalItem
86088
- VStepperVerticalActions: VStepperVerticalActions
86088
+ VColorInput: VColorInput
86089
86089
  VPicker: VPicker
86090
86090
  VPickerTitle: VPickerTitle
86091
- VTimePicker: VTimePicker
86092
- VTimePickerClock: VTimePickerClock
86093
- VTimePickerControls: VTimePickerControls
86091
+ VIconBtn: VIconBtn
86094
86092
  VTreeview: VTreeview
86095
86093
  VTreeviewItem: VTreeviewItem
86096
86094
  VTreeviewGroup: VTreeviewGroup
86095
+ VFileUpload: VFileUpload
86096
+ VFileUploadItem: VFileUploadItem
86097
+ VTimePicker: VTimePicker
86098
+ VTimePickerClock: VTimePickerClock
86099
+ VTimePickerControls: VTimePickerControls
86100
+ VStepperVertical: VStepperVertical
86101
+ VStepperVerticalItem: VStepperVerticalItem
86102
+ VStepperVerticalActions: VStepperVerticalActions
86097
86103
  VDateInput: VDateInput
86098
- VColorInput: VColorInput
86099
86104
  VPullToRefresh: VPullToRefresh
86100
86105
  }
86101
86106
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.9
2
+ * Vuetify v3.8.10
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -532,6 +532,13 @@ function camelizeProps(props) {
532
532
  }
533
533
  return out;
534
534
  }
535
+ function onlyDefinedProps(props) {
536
+ const booleanAttributes = ['checked', 'disabled'];
537
+ return Object.fromEntries(Object.entries(props).filter(_ref => {
538
+ let [key, v] = _ref;
539
+ return booleanAttributes.includes(key) ? !!v : v !== undefined;
540
+ }));
541
+ }
535
542
 
536
543
  // Utilities
537
544
  const block = ['top', 'bottom'];
@@ -856,7 +863,7 @@ function APCAcontrast(text, background) {
856
863
  // WoB should always return negative value.
857
864
 
858
865
  const SAPC = (Ybg ** revBG - Ytxt ** revTXT) * scaleWoB;
859
- outputContrast = SAPC > -1e-3 ? 0.0 : SAPC > -0.078 ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
866
+ outputContrast = SAPC > -loClip ? 0.0 : SAPC > -loConThresh ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
860
867
  }
861
868
  return outputContrast * 100;
862
869
  }
@@ -3808,10 +3815,10 @@ const MaybeTransition = (props, _ref) => {
3808
3815
  } = isObject(transition) ? transition : {};
3809
3816
  let transitionProps;
3810
3817
  if (isObject(transition)) {
3811
- transitionProps = mergeProps(customProps, JSON.parse(JSON.stringify({
3818
+ transitionProps = mergeProps(customProps, onlyDefinedProps({
3812
3819
  disabled,
3813
3820
  group
3814
- })), rest);
3821
+ }), rest);
3815
3822
  } else {
3816
3823
  transitionProps = mergeProps({
3817
3824
  name: disabled || !transition ? '' : transition
@@ -4880,6 +4887,7 @@ function useGroup(props, injectKey) {
4880
4887
  } else {
4881
4888
  const isSelected = selected.value.includes(id);
4882
4889
  if (props.mandatory && isSelected) return;
4890
+ if (!isSelected && !value) return;
4883
4891
  selected.value = value ?? !isSelected ? [id] : [];
4884
4892
  }
4885
4893
  }
@@ -5105,7 +5113,7 @@ function useIntersectionObserver(callback, options) {
5105
5113
  const observer = new IntersectionObserver(entries => {
5106
5114
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
5107
5115
  }, options);
5108
- onBeforeUnmount(() => {
5116
+ onScopeDispose(() => {
5109
5117
  observer.disconnect();
5110
5118
  });
5111
5119
  watch(intersectionRef, (newValue, oldValue) => {
@@ -5636,9 +5644,9 @@ function useBackButton(router, cb) {
5636
5644
 
5637
5645
  function useSelectLink(link, select) {
5638
5646
  watch(() => link.isActive?.value, isActive => {
5639
- if (link.isLink.value && isActive && select) {
5647
+ if (link.isLink.value && isActive != null && select) {
5640
5648
  nextTick(() => {
5641
- select(true);
5649
+ select(isActive);
5642
5650
  });
5643
5651
  }
5644
5652
  }, {
@@ -9252,6 +9260,7 @@ const makeVListGroupProps = propsFactory({
9252
9260
  type: IconValue,
9253
9261
  default: '$expand'
9254
9262
  },
9263
+ rawId: [String, Number],
9255
9264
  prependIcon: IconValue,
9256
9265
  appendIcon: IconValue,
9257
9266
  fluid: Boolean,
@@ -9273,13 +9282,12 @@ const VListGroup = genericComponent()({
9273
9282
  open,
9274
9283
  id: _id
9275
9284
  } = useNestedItem(() => props.value, true);
9276
- const id = computed(() => `v-list-group--id-${String(_id.value)}`);
9285
+ const id = computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`);
9277
9286
  const list = useList();
9278
9287
  const {
9279
9288
  isBooted
9280
9289
  } = useSsrBoot();
9281
9290
  function onClick(e) {
9282
- e.stopPropagation();
9283
9291
  if (['INPUT', 'TEXTAREA'].includes(e.target?.tagName)) return;
9284
9292
  open(!isOpen.value, e);
9285
9293
  }
@@ -9797,9 +9805,10 @@ const VListChildren = genericComponent()({
9797
9805
  }) : undefined
9798
9806
  };
9799
9807
  const listGroupProps = VListGroup.filterProps(itemProps);
9800
- return children ? createVNode(VListGroup, mergeProps({
9801
- "value": itemProps?.value
9802
- }, listGroupProps), {
9808
+ return children ? createVNode(VListGroup, mergeProps(listGroupProps, {
9809
+ "value": props.returnObject ? item : itemProps?.value,
9810
+ "rawId": itemProps?.value
9811
+ }), {
9803
9812
  activator: _ref3 => {
9804
9813
  let {
9805
9814
  props: activatorProps
@@ -12223,7 +12232,11 @@ const VField = genericComponent()({
12223
12232
  default: slots.loader
12224
12233
  }), hasPrepend && createElementVNode("div", {
12225
12234
  "key": "prepend",
12226
- "class": "v-field__prepend-inner"
12235
+ "class": "v-field__prepend-inner",
12236
+ "onMousedown": e => {
12237
+ e.preventDefault();
12238
+ e.stopPropagation();
12239
+ }
12227
12240
  }, [props.prependInnerIcon && createVNode(InputIcon, {
12228
12241
  "key": "prepend-icon",
12229
12242
  "name": "prependInner",
@@ -12292,7 +12305,11 @@ const VField = genericComponent()({
12292
12305
  })]), [[vShow, props.dirty]])]
12293
12306
  }), hasAppend && createElementVNode("div", {
12294
12307
  "key": "append",
12295
- "class": "v-field__append-inner"
12308
+ "class": "v-field__append-inner",
12309
+ "onMousedown": e => {
12310
+ e.preventDefault();
12311
+ e.stopPropagation();
12312
+ }
12296
12313
  }, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && createVNode(InputIcon, {
12297
12314
  "key": "append-icon",
12298
12315
  "name": "appendInner",
@@ -12327,6 +12344,16 @@ const VField = genericComponent()({
12327
12344
  }
12328
12345
  });
12329
12346
 
12347
+ function useAutofocus(props) {
12348
+ function onIntersect(isIntersecting, entries) {
12349
+ if (!props.autofocus || !isIntersecting) return;
12350
+ entries[0].target?.focus?.();
12351
+ }
12352
+ return {
12353
+ onIntersect
12354
+ };
12355
+ }
12356
+
12330
12357
  // Types
12331
12358
 
12332
12359
  const activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month'];
@@ -12373,6 +12400,9 @@ const VTextField = genericComponent()({
12373
12400
  focus,
12374
12401
  blur
12375
12402
  } = useFocus(props);
12403
+ const {
12404
+ onIntersect
12405
+ } = useAutofocus(props);
12376
12406
  const counterValue = computed(() => {
12377
12407
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : (model.value ?? '').toString().length;
12378
12408
  });
@@ -12382,10 +12412,6 @@ const VTextField = genericComponent()({
12382
12412
  return props.counter;
12383
12413
  });
12384
12414
  const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
12385
- function onIntersect(isIntersecting, entries) {
12386
- if (!props.autofocus || !isIntersecting) return;
12387
- entries[0].target?.focus?.();
12388
- }
12389
12415
  const vInputRef = ref();
12390
12416
  const vFieldRef = ref();
12391
12417
  const inputRef = ref();
@@ -22751,9 +22777,7 @@ const VDatePickerYears = genericComponent()({
22751
22777
  const yearRef = templateRef();
22752
22778
  onMounted(async () => {
22753
22779
  await nextTick();
22754
- yearRef.el?.scrollIntoView({
22755
- block: 'center'
22756
- });
22780
+ yearRef.el?.focus();
22757
22781
  });
22758
22782
  function isYearAllowed(year) {
22759
22783
  if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
@@ -22889,8 +22913,16 @@ const VDatePicker = genericComponent()({
22889
22913
  return value && adapter.isValid(value) ? value : today;
22890
22914
  });
22891
22915
  const headerColor = toRef(() => props.headerColor ?? props.color);
22892
- const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))));
22893
- const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))));
22916
+ const _month = useProxiedModel(props, 'month');
22917
+ const month = computed({
22918
+ get: () => Number(_month.value ?? adapter.getMonth(adapter.startOfMonth(internal.value))),
22919
+ set: v => _month.value = v
22920
+ });
22921
+ const _year = useProxiedModel(props, 'year');
22922
+ const year = computed({
22923
+ get: () => Number(_year.value ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))),
22924
+ set: v => _year.value = v
22925
+ });
22894
22926
  const isReversing = shallowRef(false);
22895
22927
  const header = computed(() => {
22896
22928
  if (props.multiple && model.value.length > 1) {
@@ -22974,9 +23006,9 @@ const VDatePicker = genericComponent()({
22974
23006
  } else {
22975
23007
  year.value++;
22976
23008
  month.value = 0;
22977
- onUpdateYear(year.value);
23009
+ onUpdateYear();
22978
23010
  }
22979
- onUpdateMonth(month.value);
23011
+ onUpdateMonth();
22980
23012
  }
22981
23013
  function onClickPrev() {
22982
23014
  if (month.value > 0) {
@@ -22984,9 +23016,9 @@ const VDatePicker = genericComponent()({
22984
23016
  } else {
22985
23017
  year.value--;
22986
23018
  month.value = 11;
22987
- onUpdateYear(year.value);
23019
+ onUpdateYear();
22988
23020
  }
22989
- onUpdateMonth(month.value);
23021
+ onUpdateMonth();
22990
23022
  }
22991
23023
  function onClickDate() {
22992
23024
  viewMode.value = 'month';
@@ -22997,13 +23029,11 @@ const VDatePicker = genericComponent()({
22997
23029
  function onClickYear() {
22998
23030
  viewMode.value = viewMode.value === 'year' ? 'month' : 'year';
22999
23031
  }
23000
- function onUpdateMonth(value) {
23032
+ function onUpdateMonth() {
23001
23033
  if (viewMode.value === 'months') onClickMonth();
23002
- emit('update:month', value);
23003
23034
  }
23004
- function onUpdateYear(value) {
23035
+ function onUpdateYear() {
23005
23036
  if (viewMode.value === 'year') onClickYear();
23006
- emit('update:year', value);
23007
23037
  }
23008
23038
  watch(model, (val, oldVal) => {
23009
23039
  const arrBefore = wrapInArray(oldVal);
@@ -23015,11 +23045,11 @@ const VDatePicker = genericComponent()({
23015
23045
  const newYear = adapter.getYear(after);
23016
23046
  if (newMonth !== month.value) {
23017
23047
  month.value = newMonth;
23018
- onUpdateMonth(month.value);
23048
+ onUpdateMonth();
23019
23049
  }
23020
23050
  if (newYear !== year.value) {
23021
23051
  year.value = newYear;
23022
- onUpdateYear(year.value);
23052
+ onUpdateYear();
23023
23053
  }
23024
23054
  isReversing.value = adapter.isBefore(before, after);
23025
23055
  });
@@ -25627,6 +25657,21 @@ const VOtpInput = genericComponent()({
25627
25657
  const contentRef = ref();
25628
25658
  const inputRef = ref([]);
25629
25659
  const current = computed(() => inputRef.value[focusIndex.value]);
25660
+ const intersectScope = effectScope();
25661
+ intersectScope.run(() => {
25662
+ const {
25663
+ intersectionRef,
25664
+ isIntersecting
25665
+ } = useIntersectionObserver();
25666
+ watch(isIntersecting, v => {
25667
+ if (!v) return;
25668
+ intersectionRef.value?.focus();
25669
+ intersectScope.stop();
25670
+ });
25671
+ watchEffect(() => {
25672
+ intersectionRef.value = inputRef.value[0];
25673
+ });
25674
+ });
25630
25675
  function onInput() {
25631
25676
  // The maxlength attribute doesn't work for the number type input, so the text type is used.
25632
25677
  // The following logic simulates the behavior of a number input.
@@ -28373,6 +28418,9 @@ const VTextarea = genericComponent()({
28373
28418
  focus,
28374
28419
  blur
28375
28420
  } = useFocus(props);
28421
+ const {
28422
+ onIntersect
28423
+ } = useAutofocus(props);
28376
28424
  const counterValue = computed(() => {
28377
28425
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : (model.value || '').toString().length;
28378
28426
  });
@@ -28381,10 +28429,6 @@ const VTextarea = genericComponent()({
28381
28429
  if (!props.counter || typeof props.counter !== 'number' && typeof props.counter !== 'string') return undefined;
28382
28430
  return props.counter;
28383
28431
  });
28384
- function onIntersect(isIntersecting, entries) {
28385
- if (!props.autofocus || !isIntersecting) return;
28386
- entries[0].target?.focus?.();
28387
- }
28388
28432
  const vInputRef = ref();
28389
28433
  const vFieldRef = ref();
28390
28434
  const controlHeight = shallowRef('');
@@ -29464,7 +29508,7 @@ function createVuetify$1() {
29464
29508
  };
29465
29509
  });
29466
29510
  }
29467
- const version$1 = "3.8.9";
29511
+ const version$1 = "3.8.10";
29468
29512
  createVuetify$1.version = version$1;
29469
29513
 
29470
29514
  // Vue's inject() can only be used in setup
@@ -29489,7 +29533,7 @@ const createVuetify = function () {
29489
29533
  ...options
29490
29534
  });
29491
29535
  };
29492
- const version = "3.8.9";
29536
+ const version = "3.8.10";
29493
29537
  createVuetify.version = version;
29494
29538
 
29495
29539
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };