vuetify 3.8.3 → 3.8.4

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 (95) hide show
  1. package/dist/json/attributes.json +3888 -3884
  2. package/dist/json/importMap-labs.json +12 -12
  3. package/dist/json/importMap.json +142 -142
  4. package/dist/json/tags.json +1 -0
  5. package/dist/json/web-types.json +6709 -6699
  6. package/dist/vuetify-labs.cjs +107 -71
  7. package/dist/vuetify-labs.css +5358 -5358
  8. package/dist/vuetify-labs.d.ts +4100 -1172
  9. package/dist/vuetify-labs.esm.js +107 -71
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +107 -71
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +56 -29
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +3018 -3018
  16. package/dist/vuetify.d.ts +4107 -1199
  17. package/dist/vuetify.esm.js +56 -29
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +56 -29
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +30 -27
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VAutocomplete/VAutocomplete.d.ts +795 -77
  25. package/lib/components/VAutocomplete/VAutocomplete.js +5 -0
  26. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  27. package/lib/components/VBadge/VBadge.d.ts +22 -46
  28. package/lib/components/VBottomNavigation/VBottomNavigation.d.ts +6 -6
  29. package/lib/components/VBottomSheet/VBottomSheet.d.ts +1434 -80
  30. package/lib/components/VCombobox/VCombobox.d.ts +795 -77
  31. package/lib/components/VCounter/VCounter.d.ts +22 -46
  32. package/lib/components/VDataIterator/VDataIterator.d.ts +22 -46
  33. package/lib/components/VDataTable/VDataTable.d.ts +110 -110
  34. package/lib/components/VDataTable/VDataTableHeaders.js +1 -2
  35. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  36. package/lib/components/VDataTable/VDataTableServer.d.ts +62 -189
  37. package/lib/components/VDataTable/VDataTableServer.js.map +1 -1
  38. package/lib/components/VDataTable/VDataTableVirtual.d.ts +62 -189
  39. package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
  40. package/lib/components/VDataTable/composables/headers.d.ts +75 -75
  41. package/lib/components/VDataTable/composables/select.js +1 -1
  42. package/lib/components/VDataTable/composables/select.js.map +1 -1
  43. package/lib/components/VDatePicker/VDatePicker.d.ts +3 -3
  44. package/lib/components/VDatePicker/VDatePickerMonth.d.ts +6 -6
  45. package/lib/components/VDialog/VDialog.d.ts +1048 -146
  46. package/lib/components/VDialog/VDialog.js +1 -1
  47. package/lib/components/VDialog/VDialog.js.map +1 -1
  48. package/lib/components/VFab/VFab.d.ts +22 -46
  49. package/lib/components/VFileInput/VFileInput.css +4 -0
  50. package/lib/components/VFileInput/VFileInput.js +21 -3
  51. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  52. package/lib/components/VFileInput/VFileInput.sass +4 -0
  53. package/lib/components/VImg/VImg.d.ts +22 -49
  54. package/lib/components/VLazy/VLazy.d.ts +22 -46
  55. package/lib/components/VMenu/VMenu.d.ts +1048 -146
  56. package/lib/components/VMenu/VMenu.js.map +1 -1
  57. package/lib/components/VMessages/VMessages.d.ts +22 -46
  58. package/lib/components/VNumberInput/VNumberInput.d.ts +3 -3
  59. package/lib/components/VOverlay/VOverlay.d.ts +22 -49
  60. package/lib/components/VOverlay/locationStrategies.js +1 -1
  61. package/lib/components/VOverlay/locationStrategies.js.map +1 -1
  62. package/lib/components/VSelect/VSelect.d.ts +1235 -93
  63. package/lib/components/VSnackbar/VSnackbar.d.ts +58 -109
  64. package/lib/components/VSnackbarQueue/VSnackbarQueue.d.ts +22 -46
  65. package/lib/components/VSpeedDial/VSpeedDial.d.ts +1434 -80
  66. package/lib/components/VTable/VTable.css +2 -6
  67. package/lib/components/VTable/VTable.sass +4 -22
  68. package/lib/components/VTabs/VTabs.d.ts +6 -6
  69. package/lib/components/VTextField/VTextField.js +5 -3
  70. package/lib/components/VTextField/VTextField.js.map +1 -1
  71. package/lib/components/VTooltip/VTooltip.d.ts +58 -109
  72. package/lib/components/VTooltip/VTooltip.js +2 -2
  73. package/lib/components/VTooltip/VTooltip.js.map +1 -1
  74. package/lib/components/transitions/dialog-transition.js +3 -3
  75. package/lib/components/transitions/dialog-transition.js.map +1 -1
  76. package/lib/composables/transition.d.ts +10 -20
  77. package/lib/composables/transition.js +15 -12
  78. package/lib/composables/transition.js.map +1 -1
  79. package/lib/entry-bundler.d.ts +6 -6
  80. package/lib/entry-bundler.js +1 -1
  81. package/lib/framework.d.ts +99 -138
  82. package/lib/framework.js +1 -1
  83. package/lib/labs/VCalendar/VCalendar.d.ts +3 -3
  84. package/lib/labs/VCalendar/VCalendarDay.d.ts +3 -3
  85. package/lib/labs/VCalendar/VCalendarInterval.d.ts +3 -3
  86. package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +3 -3
  87. package/lib/labs/VDateInput/VDateInput.d.ts +50 -13
  88. package/lib/labs/VDateInput/VDateInput.js +30 -9
  89. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  90. package/lib/labs/VFileUpload/VFileUpload.js +19 -31
  91. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  92. package/lib/labs/VTimePicker/VTimePickerClock.js +2 -2
  93. package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
  94. package/lib/util/helpers.js.map +1 -1
  95. package/package.json +7 -7
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.3
2
+ * Vuetify v3.8.4
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -2923,10 +2923,10 @@ const VDialogTransition = genericComponent()({
2923
2923
  async onLeave(el, done) {
2924
2924
  await new Promise(resolve => requestAnimationFrame(resolve));
2925
2925
  let dimensions;
2926
- if (!Array.isArray(props.target) && !props.target.offsetParent && saved.has(el)) {
2927
- dimensions = saved.get(el);
2928
- } else {
2926
+ if (!saved.has(el) || Array.isArray(props.target) || props.target.offsetParent || props.target.getClientRects().length) {
2929
2927
  dimensions = getDimensions(props.target, el);
2928
+ } else {
2929
+ dimensions = saved.get(el);
2930
2930
  }
2931
2931
  const {
2932
2932
  x,
@@ -3251,7 +3251,7 @@ function useRounded(props) {
3251
3251
 
3252
3252
  const makeTransitionProps = propsFactory({
3253
3253
  transition: {
3254
- type: [Boolean, String, Object],
3254
+ type: null,
3255
3255
  default: 'fade-transition',
3256
3256
  validator: val => val !== true
3257
3257
  }
@@ -3269,16 +3269,19 @@ const MaybeTransition = (props, _ref) => {
3269
3269
  const {
3270
3270
  component = group ? TransitionGroup : Transition,
3271
3271
  ...customProps
3272
- } = typeof transition === 'object' ? transition : {};
3273
- return h(component, mergeProps(typeof transition === 'string' ? {
3274
- name: disabled ? '' : transition
3275
- } : customProps, typeof transition === 'string' ? {} : Object.fromEntries(Object.entries({
3276
- disabled,
3277
- group
3278
- }).filter(_ref2 => {
3279
- let [_, v] = _ref2;
3280
- return v !== undefined;
3281
- })), rest), slots);
3272
+ } = isObject(transition) ? transition : {};
3273
+ let transitionProps;
3274
+ if (isObject(transition)) {
3275
+ transitionProps = mergeProps(customProps, JSON.parse(JSON.stringify({
3276
+ disabled,
3277
+ group
3278
+ })), rest);
3279
+ } else {
3280
+ transitionProps = mergeProps({
3281
+ name: disabled || !transition ? '' : transition
3282
+ }, rest);
3283
+ }
3284
+ return h(component, transitionProps, slots);
3282
3285
  };
3283
3286
 
3284
3287
  // Utilities
@@ -10161,7 +10164,7 @@ function connectedLocationStrategy(data, props, contentStyles) {
10161
10164
  observe = false;
10162
10165
  requestAnimationFrame(() => observe = true);
10163
10166
  if (!data.target.value || !data.contentEl.value) return;
10164
- if (Array.isArray(data.target.value) || data.target.value.offsetParent) {
10167
+ if (Array.isArray(data.target.value) || data.target.value.offsetParent || data.target.value.getClientRects().length) {
10165
10168
  targetBox = getTargetBox(data.target.value);
10166
10169
  } // Otherwise target element is hidden, use last known value
10167
10170
 
@@ -12081,11 +12084,12 @@ const VTextField = genericComponent()({
12081
12084
  onFocus();
12082
12085
  emit('click:control', e);
12083
12086
  }
12084
- function onClear(e) {
12087
+ function onClear(e, reset) {
12085
12088
  e.stopPropagation();
12086
12089
  onFocus();
12087
12090
  nextTick(() => {
12088
12091
  model.value = null;
12092
+ reset();
12089
12093
  callEvent(props['onClick:clear'], e);
12090
12094
  });
12091
12095
  }
@@ -12130,13 +12134,14 @@ const VTextField = genericComponent()({
12130
12134
  isDisabled,
12131
12135
  isDirty,
12132
12136
  isReadonly,
12133
- isValid
12137
+ isValid,
12138
+ reset
12134
12139
  } = _ref2;
12135
12140
  return createVNode(VField, mergeProps({
12136
12141
  "ref": vFieldRef,
12137
12142
  "onMousedown": onControlMousedown,
12138
12143
  "onClick": onControlClick,
12139
- "onClick:clear": onClear,
12144
+ "onClick:clear": e => onClear(e, reset),
12140
12145
  "onClick:prependInner": props['onClick:prependInner'],
12141
12146
  "onClick:appendInner": props['onClick:appendInner'],
12142
12147
  "role": props.role
@@ -13497,6 +13502,11 @@ const VAutocomplete = genericComponent()({
13497
13502
  menu.value = true;
13498
13503
  }
13499
13504
  });
13505
+ watch(model, value => {
13506
+ if (!props.multiple && !hasSelectionSlot.value) {
13507
+ search.value = value[0]?.title ?? '';
13508
+ }
13509
+ });
13500
13510
  useRender(() => {
13501
13511
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
13502
13512
  const isDirty = model.value.length > 0;
@@ -14116,7 +14126,7 @@ const VDialog = genericComponent()({
14116
14126
  }
14117
14127
  function onAfterEnter() {
14118
14128
  emit('afterEnter');
14119
- if (overlay.value?.contentEl && !overlay.value.contentEl.contains(document.activeElement)) {
14129
+ if ((props.scrim || props.retainFocus) && overlay.value?.contentEl && !overlay.value.contentEl.contains(document.activeElement)) {
14120
14130
  overlay.value.contentEl.focus({
14121
14131
  preventScroll: true
14122
14132
  });
@@ -18988,7 +18998,7 @@ function provideSelection(props, _ref9) {
18988
18998
  index = index ?? currentPage.value.findIndex(i => i.value === item.value);
18989
18999
  if (props.selectStrategy !== 'single' && event?.shiftKey && lastSelectedIndex.value !== null) {
18990
19000
  const [start, end] = [lastSelectedIndex.value, index].sort((a, b) => a - b);
18991
- items.push(...currentPage.value.slice(start, end + 1));
19001
+ items.push(...currentPage.value.slice(start, end + 1).filter(item => item.selectable));
18992
19002
  } else {
18993
19003
  items.push(item);
18994
19004
  lastSelectedIndex.value = index;
@@ -20324,7 +20334,6 @@ const VDataTableHeaders = genericComponent()({
20324
20334
  });
20325
20335
  };
20326
20336
  const VDataTableMobileHeaderCell = () => {
20327
- const headerProps = mergeProps(props.headerProps ?? {} ?? {});
20328
20337
  const displayItems = computed(() => {
20329
20338
  return columns.value.filter(column => column?.sortable && !props.disableSort);
20330
20339
  });
@@ -20337,7 +20346,7 @@ const VDataTableHeaders = genericComponent()({
20337
20346
  "tag": "th",
20338
20347
  "class": [...headerCellClasses.value],
20339
20348
  "colspan": headers.value.length + 1
20340
- }, headerProps), {
20349
+ }, props.headerProps), {
20341
20350
  default: () => [createVNode("div", {
20342
20351
  "class": "v-data-table-header__content"
20343
20352
  }, [createVNode(VSelect, {
@@ -23260,6 +23269,7 @@ const VFileInput = genericComponent()({
23260
23269
  const inputRef = ref();
23261
23270
  const isActive = toRef(() => isFocused.value || props.active);
23262
23271
  const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant));
23272
+ const isDragging = shallowRef(false);
23263
23273
  function onFocus() {
23264
23274
  if (inputRef.value !== document.activeElement) {
23265
23275
  inputRef.value?.focus();
@@ -23286,11 +23296,26 @@ const VFileInput = genericComponent()({
23286
23296
  }
23287
23297
  function onDragover(e) {
23288
23298
  e.preventDefault();
23299
+ e.stopImmediatePropagation();
23300
+ isDragging.value = true;
23301
+ }
23302
+ function onDragleave(e) {
23303
+ e.preventDefault();
23304
+ isDragging.value = false;
23289
23305
  }
23290
23306
  function onDrop(e) {
23291
23307
  e.preventDefault();
23292
- if (!e.dataTransfer) return;
23293
- model.value = [...(e.dataTransfer.files ?? [])];
23308
+ e.stopImmediatePropagation();
23309
+ isDragging.value = false;
23310
+ if (!e.dataTransfer?.files?.length || !inputRef.value) return;
23311
+ const dataTransfer = new DataTransfer();
23312
+ for (const file of e.dataTransfer.files) {
23313
+ dataTransfer.items.add(file);
23314
+ }
23315
+ inputRef.value.files = dataTransfer.files;
23316
+ inputRef.value.dispatchEvent(new Event('change', {
23317
+ bubbles: true
23318
+ }));
23294
23319
  }
23295
23320
  watch(model, newValue => {
23296
23321
  const hasModelReset = !Array.isArray(newValue) || !newValue.length;
@@ -23312,6 +23337,7 @@ const VFileInput = genericComponent()({
23312
23337
  "modelValue": props.multiple ? model.value : model.value[0],
23313
23338
  "class": ['v-file-input', {
23314
23339
  'v-file-input--chips': !!props.chips,
23340
+ 'v-file-input--dragging': isDragging.value,
23315
23341
  'v-file-input--hide': props.hideInput,
23316
23342
  'v-input--plain-underlined': isPlainOrUnderlined.value
23317
23343
  }, props.class],
@@ -23373,6 +23399,7 @@ const VFileInput = genericComponent()({
23373
23399
  const target = e.target;
23374
23400
  model.value = [...(target.files ?? [])];
23375
23401
  },
23402
+ "onDragleave": onDragleave,
23376
23403
  "onFocus": onFocus,
23377
23404
  "onBlur": blur
23378
23405
  }, slotProps, inputAttrs), null), createVNode("div", {
@@ -28360,7 +28387,7 @@ const makeVTooltipProps = propsFactory({
28360
28387
  origin: 'auto',
28361
28388
  scrim: false,
28362
28389
  scrollStrategy: 'reposition',
28363
- transition: false
28390
+ transition: null
28364
28391
  }), ['absolute', 'persistent'])
28365
28392
  }, 'VTooltip');
28366
28393
  const VTooltip = genericComponent()({
@@ -28387,7 +28414,7 @@ const VTooltip = genericComponent()({
28387
28414
  return props.origin === 'auto' || props.origin === 'overlap' || props.origin.split(' ').length > 1 || props.location.split(' ').length > 1 ? props.origin : props.origin + ' center';
28388
28415
  });
28389
28416
  const transition = toRef(() => {
28390
- if (props.transition) return props.transition;
28417
+ if (props.transition != null) return props.transition;
28391
28418
  return isActive.value ? 'scale-transition' : 'fade-transition';
28392
28419
  });
28393
28420
  const activatorProps = computed(() => mergeProps({
@@ -29058,7 +29085,13 @@ const makeVDateInputProps = propsFactory({
29058
29085
  type: String,
29059
29086
  default: 'bottom start'
29060
29087
  },
29061
- ...makeDisplayProps(),
29088
+ updateOn: {
29089
+ type: Array,
29090
+ default: () => ['blur', 'enter']
29091
+ },
29092
+ ...makeDisplayProps({
29093
+ mobile: null
29094
+ }),
29062
29095
  ...makeFocusProps(),
29063
29096
  ...makeVConfirmEditProps({
29064
29097
  hideActions: true
@@ -29097,7 +29130,8 @@ const VDateInput = genericComponent()({
29097
29130
  focus,
29098
29131
  blur
29099
29132
  } = useFocus(props);
29100
- const model = useProxiedModel(props, 'modelValue', props.multiple ? [] : null, val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val, val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val);
29133
+ const emptyModelValue = () => props.multiple ? [] : null;
29134
+ const model = useProxiedModel(props, 'modelValue', emptyModelValue(), val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val, val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val);
29101
29135
  const menu = shallowRef(false);
29102
29136
  const isEditingInput = shallowRef(false);
29103
29137
  const vTextFieldRef = ref();
@@ -29128,7 +29162,10 @@ const VDateInput = genericComponent()({
29128
29162
  return 'none';
29129
29163
  });
29130
29164
  const isInteractive = computed(() => !props.disabled && !props.readonly);
29131
- const isReadonly = computed(() => !(mobile.value && isEditingInput.value) && props.readonly);
29165
+ const isReadonly = computed(() => {
29166
+ if (!props.updateOn.length) return true;
29167
+ return !(mobile.value && isEditingInput.value) && props.readonly;
29168
+ });
29132
29169
  watch(menu, val => {
29133
29170
  if (val) return;
29134
29171
  isEditingInput.value = false;
@@ -29140,8 +29177,9 @@ const VDateInput = genericComponent()({
29140
29177
  menu.value = true;
29141
29178
  return;
29142
29179
  }
29143
- const target = e.target;
29144
- model.value = adapter.isValid(target.value) ? target.value : null;
29180
+ if (props.updateOn.includes('enter')) {
29181
+ onUserInput(e.target);
29182
+ }
29145
29183
  }
29146
29184
  function onClick(e) {
29147
29185
  e.preventDefault();
@@ -29163,9 +29201,12 @@ const VDateInput = genericComponent()({
29163
29201
  }
29164
29202
  function onUpdateDisplayModel(value) {
29165
29203
  if (value != null) return;
29166
- model.value = null;
29204
+ model.value = emptyModelValue();
29167
29205
  }
29168
- function onBlur() {
29206
+ function onBlur(e) {
29207
+ if (props.updateOn.includes('blur')) {
29208
+ onUserInput(e.target);
29209
+ }
29169
29210
  blur();
29170
29211
 
29171
29212
  // When in mobile mode and editing is done (due to keyboard dismissal), close the menu
@@ -29174,6 +29215,13 @@ const VDateInput = genericComponent()({
29174
29215
  isEditingInput.value = false;
29175
29216
  }
29176
29217
  }
29218
+ function onUserInput(_ref2) {
29219
+ let {
29220
+ value
29221
+ } = _ref2;
29222
+ if (value && !adapter.isValid(value)) return;
29223
+ model.value = !value ? emptyModelValue() : value;
29224
+ }
29177
29225
  useRender(() => {
29178
29226
  const confirmEditProps = VConfirmEdit.filterProps(props);
29179
29227
  const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']));
@@ -29212,14 +29260,14 @@ const VDateInput = genericComponent()({
29212
29260
  "onSave": onSave,
29213
29261
  "onCancel": onCancel
29214
29262
  }), {
29215
- default: _ref2 => {
29263
+ default: _ref3 => {
29216
29264
  let {
29217
29265
  actions,
29218
29266
  model: proxyModel,
29219
29267
  save,
29220
29268
  cancel,
29221
29269
  isPristine
29222
- } = _ref2;
29270
+ } = _ref3;
29223
29271
  function onUpdateModel(value) {
29224
29272
  if (!props.hideActions) {
29225
29273
  proxyModel.value = value;
@@ -29404,43 +29452,31 @@ const VFileUpload = genericComponent()({
29404
29452
  densityClasses
29405
29453
  } = useDensity(props);
29406
29454
  const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => props.multiple || Array.isArray(props.modelValue) ? val : val[0]);
29407
- const dragOver = shallowRef(false);
29455
+ const isDragging = shallowRef(false);
29408
29456
  const vSheetRef = ref(null);
29409
29457
  const inputRef = ref(null);
29410
- onMounted(() => {
29411
- vSheetRef.value?.$el.addEventListener('dragover', onDragOver);
29412
- vSheetRef.value?.$el.addEventListener('drop', onDrop);
29413
- });
29414
- onUnmounted(() => {
29415
- vSheetRef.value?.$el.removeEventListener('dragover', onDragOver);
29416
- vSheetRef.value?.$el.removeEventListener('drop', onDrop);
29417
- });
29418
- function onDragOver(e) {
29458
+ function onDragover(e) {
29419
29459
  e.preventDefault();
29420
29460
  e.stopImmediatePropagation();
29421
- dragOver.value = true;
29461
+ isDragging.value = true;
29422
29462
  }
29423
- function onDragLeave(e) {
29463
+ function onDragleave(e) {
29424
29464
  e.preventDefault();
29425
- dragOver.value = false;
29465
+ isDragging.value = false;
29426
29466
  }
29427
29467
  function onDrop(e) {
29428
29468
  e.preventDefault();
29429
29469
  e.stopImmediatePropagation();
29430
- dragOver.value = false;
29431
- const files = Array.from(e.dataTransfer?.files ?? []);
29432
- if (!files.length) return;
29433
- if (!props.multiple) {
29434
- model.value = [files[0]];
29435
- return;
29436
- }
29437
- const array = model.value.slice();
29438
- for (const file of files) {
29439
- if (!array.some(f => f.name === file.name)) {
29440
- array.push(file);
29441
- }
29442
- }
29443
- model.value = array;
29470
+ isDragging.value = false;
29471
+ if (!e.dataTransfer?.files?.length || !inputRef.value) return;
29472
+ const dataTransfer = new DataTransfer();
29473
+ for (const file of e.dataTransfer.files) {
29474
+ dataTransfer.items.add(file);
29475
+ }
29476
+ inputRef.value.files = dataTransfer.files;
29477
+ inputRef.value.dispatchEvent(new Event('change', {
29478
+ bubbles: true
29479
+ }));
29444
29480
  }
29445
29481
  function onClick() {
29446
29482
  inputRef.value?.click();
@@ -29476,11 +29512,11 @@ const VFileUpload = genericComponent()({
29476
29512
  "class": ['v-file-upload', {
29477
29513
  'v-file-upload--clickable': !hasBrowse,
29478
29514
  'v-file-upload--disabled': props.disabled,
29479
- 'v-file-upload--dragging': dragOver.value
29515
+ 'v-file-upload--dragging': isDragging.value
29480
29516
  }, densityClasses.value, props.class],
29481
29517
  "style": [props.style],
29482
- "onDragleave": onDragLeave,
29483
- "onDragover": onDragOver,
29518
+ "onDragleave": onDragleave,
29519
+ "onDragover": onDragover,
29484
29520
  "onDrop": onDrop,
29485
29521
  "onClick": !hasBrowse ? onClick : undefined
29486
29522
  }, rootAttrs), {
@@ -29531,7 +29567,7 @@ const VFileUpload = genericComponent()({
29531
29567
  })]), props.subtitle && createVNode("div", {
29532
29568
  "class": "v-file-upload-subtitle"
29533
29569
  }, [props.subtitle])]), createVNode(VOverlay, {
29534
- "model-value": dragOver.value,
29570
+ "model-value": isDragging.value,
29535
29571
  "contained": true,
29536
29572
  "scrim": props.scrim
29537
29573
  }, null), slots.input?.({
@@ -30229,8 +30265,8 @@ const VTimePickerClock = genericComponent()({
30229
30265
  y
30230
30266
  } = getPosition(i);
30231
30267
  return {
30232
- left: `${50 + x * 50}%`,
30233
- top: `${50 + y * 50}%`
30268
+ left: `${Math.round(50 + x * 50)}%`,
30269
+ top: `${Math.round(50 + y * 50)}%`
30234
30270
  };
30235
30271
  }
30236
30272
  function euclidean(p0, p1) {
@@ -31634,7 +31670,7 @@ function createVuetify$1() {
31634
31670
  };
31635
31671
  });
31636
31672
  }
31637
- const version$1 = "3.8.3";
31673
+ const version$1 = "3.8.4";
31638
31674
  createVuetify$1.version = version$1;
31639
31675
 
31640
31676
  // Vue's inject() can only be used in setup
@@ -31932,7 +31968,7 @@ var index = /*#__PURE__*/Object.freeze({
31932
31968
 
31933
31969
  /* eslint-disable local-rules/sort-imports */
31934
31970
 
31935
- const version = "3.8.3";
31971
+ const version = "3.8.4";
31936
31972
 
31937
31973
  /* eslint-disable local-rules/sort-imports */
31938
31974