vuetify 3.7.9 → 3.7.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 (54) hide show
  1. package/dist/json/attributes.json +1041 -1037
  2. package/dist/json/importMap-labs.json +14 -14
  3. package/dist/json/importMap.json +154 -154
  4. package/dist/json/tags.json +1 -0
  5. package/dist/json/web-types.json +2437 -2427
  6. package/dist/vuetify-labs.css +4911 -4911
  7. package/dist/vuetify-labs.d.ts +41 -118
  8. package/dist/vuetify-labs.esm.js +72 -9
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +71 -8
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +4741 -4741
  13. package/dist/vuetify.d.ts +81 -173
  14. package/dist/vuetify.esm.js +61 -8
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +60 -7
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +462 -459
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs +10 -1
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  23. package/lib/components/VCombobox/VCombobox.mjs +11 -1
  24. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  25. package/lib/components/VDatePicker/VDatePicker.mjs +2 -1
  26. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  27. package/lib/components/VSelect/VSelect.mjs +5 -1
  28. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  29. package/lib/components/VTabs/VTabs.mjs +1 -1
  30. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  31. package/lib/components/VTabs/index.d.mts +52 -119
  32. package/lib/components/index.d.mts +26 -118
  33. package/lib/components/transitions/expand-transition.mjs +2 -0
  34. package/lib/components/transitions/expand-transition.mjs.map +1 -1
  35. package/lib/composables/mousedown.mjs +30 -0
  36. package/lib/composables/mousedown.mjs.map +1 -0
  37. package/lib/entry-bundler.mjs +1 -1
  38. package/lib/entry-bundler.mjs.map +1 -1
  39. package/lib/framework.mjs +1 -1
  40. package/lib/framework.mjs.map +1 -1
  41. package/lib/index.d.mts +55 -55
  42. package/lib/labs/VTreeview/VTreeview.mjs +1 -1
  43. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  44. package/lib/labs/VTreeview/VTreeviewChildren.mjs +13 -2
  45. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
  46. package/lib/labs/VTreeview/index.d.mts +15 -0
  47. package/lib/labs/components.d.mts +15 -0
  48. package/lib/locale/da.mjs +5 -5
  49. package/lib/locale/da.mjs.map +1 -1
  50. package/lib/locale/de.mjs +3 -3
  51. package/lib/locale/de.mjs.map +1 -1
  52. package/lib/locale/fi.mjs +5 -5
  53. package/lib/locale/fi.mjs.map +1 -1
  54. package/package.json +2 -2
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.7.9
2
+ * Vuetify v3.7.10
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -3212,6 +3212,7 @@
3212
3212
  },
3213
3213
  onEnter(el) {
3214
3214
  const initialStyle = el._initialStyle;
3215
+ if (!initialStyle) return;
3215
3216
  el.style.setProperty('transition', 'none', 'important');
3216
3217
  // Hide overflow to account for collapsed margins in the calculated height
3217
3218
  el.style.overflow = 'hidden';
@@ -3251,6 +3252,7 @@
3251
3252
  resetStyles(el);
3252
3253
  }
3253
3254
  function resetStyles(el) {
3255
+ if (!el._initialStyle) return;
3254
3256
  const size = el._initialStyle[sizeProperty];
3255
3257
  el.style.overflow = el._initialStyle.overflow;
3256
3258
  if (size != null) el.style[sizeProperty] = size;
@@ -12635,6 +12637,34 @@
12635
12637
  }; // typescript doesn't know about vue's event merging
12636
12638
  }
12637
12639
 
12640
+ // https://github.com/vuetifyjs/vuetify/issues/20003
12641
+ /**
12642
+ * This composable is designed to track whether the mouse is in a mousedown state at any given time. The original motivation is that
12643
+ * it is impossible to distinguish whether a blur event is triggered by mousedown, keydown, or via JavaScript.
12644
+ * This composable allows for conditional logic when a blur is triggered by mousedown.
12645
+ */
12646
+
12647
+ function useIsMousedown() {
12648
+ const isMousedown = vue.shallowRef(false);
12649
+ function mousedown() {
12650
+ isMousedown.value = true;
12651
+ }
12652
+ function mouseup() {
12653
+ isMousedown.value = false;
12654
+ }
12655
+ vue.onMounted(() => {
12656
+ document.body.addEventListener('mousedown', mousedown);
12657
+ document.body.addEventListener('mouseup', mouseup);
12658
+ });
12659
+ vue.onUnmounted(() => {
12660
+ document.body.removeEventListener('mousedown', mousedown);
12661
+ document.body.removeEventListener('mouseup', mouseup);
12662
+ });
12663
+ return {
12664
+ isMousedown
12665
+ };
12666
+ }
12667
+
12638
12668
  // Types
12639
12669
 
12640
12670
  const makeSelectProps = propsFactory({
@@ -12724,6 +12754,9 @@
12724
12754
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;
12725
12755
  });
12726
12756
  const form = useForm(props);
12757
+ const {
12758
+ isMousedown
12759
+ } = useIsMousedown();
12727
12760
  const selectedValues = vue.computed(() => model.value.map(selection => selection.value));
12728
12761
  const isFocused = vue.shallowRef(false);
12729
12762
  const label = vue.computed(() => menu.value ? props.closeText : props.openText);
@@ -12821,7 +12854,7 @@
12821
12854
  }
12822
12855
  }
12823
12856
  function onBlur(e) {
12824
- if (!listRef.value?.$el.contains(e.relatedTarget)) {
12857
+ if (!listRef.value?.$el.contains(e.relatedTarget) && !isMousedown.value) {
12825
12858
  menu.value = false;
12826
12859
  }
12827
12860
  }
@@ -13233,6 +13266,9 @@
13233
13266
  textColorClasses,
13234
13267
  textColorStyles
13235
13268
  } = useTextColor(color);
13269
+ const {
13270
+ isMousedown
13271
+ } = useIsMousedown();
13236
13272
  const search = useProxiedModel(props, 'search', '');
13237
13273
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {
13238
13274
  const transformed = transformOut(v);
@@ -13406,6 +13442,11 @@
13406
13442
  });
13407
13443
  }
13408
13444
  }
13445
+ function onBlur(e) {
13446
+ if (!isMousedown.value) {
13447
+ menu.value = false;
13448
+ }
13449
+ }
13409
13450
  vue.watch(isFocused, (val, oldVal) => {
13410
13451
  if (val === oldVal) return;
13411
13452
  if (val) {
@@ -13415,7 +13456,6 @@
13415
13456
  vue.nextTick(() => isSelecting.value = false);
13416
13457
  } else {
13417
13458
  if (!props.multiple && search.value == null) model.value = [];
13418
- menu.value = false;
13419
13459
  if (!model.value.some(_ref3 => {
13420
13460
  let {
13421
13461
  title
@@ -13469,6 +13509,7 @@
13469
13509
  "readonly": form.isReadonly.value,
13470
13510
  "placeholder": isDirty ? undefined : props.placeholder,
13471
13511
  "onClick:clear": onClear,
13512
+ "onBlur": onBlur,
13472
13513
  "onMousedown:control": onMousedownControl,
13473
13514
  "onKeydown": onKeydown
13474
13515
  }), {
@@ -17088,6 +17129,9 @@
17088
17129
  return props.multiple ? transformed : transformed[0] ?? null;
17089
17130
  });
17090
17131
  const form = useForm(props);
17132
+ const {
17133
+ isMousedown
17134
+ } = useIsMousedown();
17091
17135
  const hasChips = vue.computed(() => !!(props.chips || slots.chip));
17092
17136
  const hasSelectionSlot = vue.computed(() => hasChips.value || !!slots.selection);
17093
17137
  const _search = vue.shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');
@@ -17251,6 +17295,12 @@
17251
17295
  vTextFieldRef.value?.focus();
17252
17296
  }
17253
17297
  }
17298
+ function onBlur(e) {
17299
+ if (!isMousedown.value) {
17300
+ menu.value = false;
17301
+ }
17302
+ }
17303
+
17254
17304
  /** @param set - null means toggle */
17255
17305
  function select(item) {
17256
17306
  let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
@@ -17295,7 +17345,6 @@
17295
17345
  vue.watch(isFocused, (val, oldVal) => {
17296
17346
  if (val || val === oldVal) return;
17297
17347
  selectionIndex.value = -1;
17298
- menu.value = false;
17299
17348
  if (search.value) {
17300
17349
  if (props.multiple) {
17301
17350
  select(transformItem$3(props, search.value));
@@ -17353,6 +17402,7 @@
17353
17402
  "readonly": form.isReadonly.value,
17354
17403
  "placeholder": isDirty ? undefined : props.placeholder,
17355
17404
  "onClick:clear": onClear,
17405
+ "onBlur": onBlur,
17356
17406
  "onMousedown:control": onMousedownControl,
17357
17407
  "onKeydown": onKeydown
17358
17408
  }), {
@@ -22439,8 +22489,9 @@
22439
22489
  targets.push(...['prev', 'next']);
22440
22490
  } else {
22441
22491
  let _date = adapter.date();
22442
- _date = adapter.setYear(_date, year.value);
22492
+ _date = adapter.startOfMonth(_date);
22443
22493
  _date = adapter.setMonth(_date, month.value);
22494
+ _date = adapter.setYear(_date, year.value);
22444
22495
  if (minDate.value) {
22445
22496
  const date = adapter.addDays(adapter.startOfMonth(_date), -1);
22446
22497
  adapter.isAfter(minDate.value, date) && targets.push('prev');
@@ -27090,6 +27141,8 @@
27090
27141
  }
27091
27142
  });
27092
27143
 
27144
+ // Types
27145
+
27093
27146
  function parseItems(items) {
27094
27147
  if (!items) return [];
27095
27148
  return items.map(item => {
@@ -28328,7 +28381,7 @@
28328
28381
  goTo
28329
28382
  };
28330
28383
  }
28331
- const version$1 = "3.7.9";
28384
+ const version$1 = "3.7.10";
28332
28385
  createVuetify$1.version = version$1;
28333
28386
 
28334
28387
  // Vue's inject() can only be used in setup
@@ -28353,7 +28406,7 @@
28353
28406
  ...options
28354
28407
  });
28355
28408
  };
28356
- const version = "3.7.9";
28409
+ const version = "3.7.10";
28357
28410
  createVuetify.version = version;
28358
28411
 
28359
28412
  exports.blueprints = index;