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
@@ -1,10 +1,10 @@
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
  */
6
6
 
7
- import { shallowRef, Fragment, reactive, computed, watchEffect, toRefs, capitalize, isVNode, Comment, unref, warn, getCurrentInstance as getCurrentInstance$1, ref, provide, inject as inject$1, defineComponent as defineComponent$1, camelize, h, createVNode, mergeProps, onBeforeUnmount, watch, readonly, onDeactivated, onActivated, onMounted, onScopeDispose, effectScope, toRaw, TransitionGroup, Transition, isRef, toRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, toDisplayString, vModelText, resolveComponent, render } from 'vue';
7
+ import { shallowRef, Fragment, reactive, computed, watchEffect, toRefs, capitalize, isVNode, Comment, unref, warn, getCurrentInstance as getCurrentInstance$1, ref, provide, inject as inject$1, defineComponent as defineComponent$1, camelize, h, createVNode, mergeProps, onBeforeUnmount, watch, readonly, onDeactivated, onActivated, onMounted, onScopeDispose, effectScope, toRaw, TransitionGroup, Transition, isRef, toRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, markRaw, Teleport, cloneVNode, onUnmounted, createTextVNode, onBeforeUpdate, withModifiers, toDisplayString, 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;
@@ -3208,6 +3208,7 @@ function ExpandTransitionGenerator () {
3208
3208
  },
3209
3209
  onEnter(el) {
3210
3210
  const initialStyle = el._initialStyle;
3211
+ if (!initialStyle) return;
3211
3212
  el.style.setProperty('transition', 'none', 'important');
3212
3213
  // Hide overflow to account for collapsed margins in the calculated height
3213
3214
  el.style.overflow = 'hidden';
@@ -3247,6 +3248,7 @@ function ExpandTransitionGenerator () {
3247
3248
  resetStyles(el);
3248
3249
  }
3249
3250
  function resetStyles(el) {
3251
+ if (!el._initialStyle) return;
3250
3252
  const size = el._initialStyle[sizeProperty];
3251
3253
  el.style.overflow = el._initialStyle.overflow;
3252
3254
  if (size != null) el.style[sizeProperty] = size;
@@ -12631,6 +12633,34 @@ function useScrolling(listRef, textFieldRef) {
12631
12633
  }; // typescript doesn't know about vue's event merging
12632
12634
  }
12633
12635
 
12636
+ // https://github.com/vuetifyjs/vuetify/issues/20003
12637
+ /**
12638
+ * This composable is designed to track whether the mouse is in a mousedown state at any given time. The original motivation is that
12639
+ * it is impossible to distinguish whether a blur event is triggered by mousedown, keydown, or via JavaScript.
12640
+ * This composable allows for conditional logic when a blur is triggered by mousedown.
12641
+ */
12642
+
12643
+ function useIsMousedown() {
12644
+ const isMousedown = shallowRef(false);
12645
+ function mousedown() {
12646
+ isMousedown.value = true;
12647
+ }
12648
+ function mouseup() {
12649
+ isMousedown.value = false;
12650
+ }
12651
+ onMounted(() => {
12652
+ document.body.addEventListener('mousedown', mousedown);
12653
+ document.body.addEventListener('mouseup', mouseup);
12654
+ });
12655
+ onUnmounted(() => {
12656
+ document.body.removeEventListener('mousedown', mousedown);
12657
+ document.body.removeEventListener('mouseup', mouseup);
12658
+ });
12659
+ return {
12660
+ isMousedown
12661
+ };
12662
+ }
12663
+
12634
12664
  // Types
12635
12665
 
12636
12666
  const makeSelectProps = propsFactory({
@@ -12720,6 +12750,9 @@ const VSelect = genericComponent()({
12720
12750
  return typeof props.counterValue === 'function' ? props.counterValue(model.value) : typeof props.counterValue === 'number' ? props.counterValue : model.value.length;
12721
12751
  });
12722
12752
  const form = useForm(props);
12753
+ const {
12754
+ isMousedown
12755
+ } = useIsMousedown();
12723
12756
  const selectedValues = computed(() => model.value.map(selection => selection.value));
12724
12757
  const isFocused = shallowRef(false);
12725
12758
  const label = computed(() => menu.value ? props.closeText : props.openText);
@@ -12817,7 +12850,7 @@ const VSelect = genericComponent()({
12817
12850
  }
12818
12851
  }
12819
12852
  function onBlur(e) {
12820
- if (!listRef.value?.$el.contains(e.relatedTarget)) {
12853
+ if (!listRef.value?.$el.contains(e.relatedTarget) && !isMousedown.value) {
12821
12854
  menu.value = false;
12822
12855
  }
12823
12856
  }
@@ -13229,6 +13262,9 @@ const VAutocomplete = genericComponent()({
13229
13262
  textColorClasses,
13230
13263
  textColorStyles
13231
13264
  } = useTextColor(color);
13265
+ const {
13266
+ isMousedown
13267
+ } = useIsMousedown();
13232
13268
  const search = useProxiedModel(props, 'search', '');
13233
13269
  const model = useProxiedModel(props, 'modelValue', [], v => transformIn(v === null ? [null] : wrapInArray(v)), v => {
13234
13270
  const transformed = transformOut(v);
@@ -13402,6 +13438,11 @@ const VAutocomplete = genericComponent()({
13402
13438
  });
13403
13439
  }
13404
13440
  }
13441
+ function onBlur(e) {
13442
+ if (!isMousedown.value) {
13443
+ menu.value = false;
13444
+ }
13445
+ }
13405
13446
  watch(isFocused, (val, oldVal) => {
13406
13447
  if (val === oldVal) return;
13407
13448
  if (val) {
@@ -13411,7 +13452,6 @@ const VAutocomplete = genericComponent()({
13411
13452
  nextTick(() => isSelecting.value = false);
13412
13453
  } else {
13413
13454
  if (!props.multiple && search.value == null) model.value = [];
13414
- menu.value = false;
13415
13455
  if (!model.value.some(_ref3 => {
13416
13456
  let {
13417
13457
  title
@@ -13465,6 +13505,7 @@ const VAutocomplete = genericComponent()({
13465
13505
  "readonly": form.isReadonly.value,
13466
13506
  "placeholder": isDirty ? undefined : props.placeholder,
13467
13507
  "onClick:clear": onClear,
13508
+ "onBlur": onBlur,
13468
13509
  "onMousedown:control": onMousedownControl,
13469
13510
  "onKeydown": onKeydown
13470
13511
  }), {
@@ -17084,6 +17125,9 @@ const VCombobox = genericComponent()({
17084
17125
  return props.multiple ? transformed : transformed[0] ?? null;
17085
17126
  });
17086
17127
  const form = useForm(props);
17128
+ const {
17129
+ isMousedown
17130
+ } = useIsMousedown();
17087
17131
  const hasChips = computed(() => !!(props.chips || slots.chip));
17088
17132
  const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);
17089
17133
  const _search = shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');
@@ -17247,6 +17291,12 @@ const VCombobox = genericComponent()({
17247
17291
  vTextFieldRef.value?.focus();
17248
17292
  }
17249
17293
  }
17294
+ function onBlur(e) {
17295
+ if (!isMousedown.value) {
17296
+ menu.value = false;
17297
+ }
17298
+ }
17299
+
17250
17300
  /** @param set - null means toggle */
17251
17301
  function select(item) {
17252
17302
  let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
@@ -17291,7 +17341,6 @@ const VCombobox = genericComponent()({
17291
17341
  watch(isFocused, (val, oldVal) => {
17292
17342
  if (val || val === oldVal) return;
17293
17343
  selectionIndex.value = -1;
17294
- menu.value = false;
17295
17344
  if (search.value) {
17296
17345
  if (props.multiple) {
17297
17346
  select(transformItem$3(props, search.value));
@@ -17349,6 +17398,7 @@ const VCombobox = genericComponent()({
17349
17398
  "readonly": form.isReadonly.value,
17350
17399
  "placeholder": isDirty ? undefined : props.placeholder,
17351
17400
  "onClick:clear": onClear,
17401
+ "onBlur": onBlur,
17352
17402
  "onMousedown:control": onMousedownControl,
17353
17403
  "onKeydown": onKeydown
17354
17404
  }), {
@@ -22435,8 +22485,9 @@ const VDatePicker = genericComponent()({
22435
22485
  targets.push(...['prev', 'next']);
22436
22486
  } else {
22437
22487
  let _date = adapter.date();
22438
- _date = adapter.setYear(_date, year.value);
22488
+ _date = adapter.startOfMonth(_date);
22439
22489
  _date = adapter.setMonth(_date, month.value);
22490
+ _date = adapter.setYear(_date, year.value);
22440
22491
  if (minDate.value) {
22441
22492
  const date = adapter.addDays(adapter.startOfMonth(_date), -1);
22442
22493
  adapter.isAfter(minDate.value, date) && targets.push('prev');
@@ -27086,6 +27137,8 @@ const VTabsWindowItem = genericComponent()({
27086
27137
  }
27087
27138
  });
27088
27139
 
27140
+ // Types
27141
+
27089
27142
  function parseItems(items) {
27090
27143
  if (!items) return [];
27091
27144
  return items.map(item => {
@@ -28324,7 +28377,7 @@ function createVuetify$1() {
28324
28377
  goTo
28325
28378
  };
28326
28379
  }
28327
- const version$1 = "3.7.9";
28380
+ const version$1 = "3.7.10";
28328
28381
  createVuetify$1.version = version$1;
28329
28382
 
28330
28383
  // Vue's inject() can only be used in setup
@@ -28349,7 +28402,7 @@ const createVuetify = function () {
28349
28402
  ...options
28350
28403
  });
28351
28404
  };
28352
- const version = "3.7.9";
28405
+ const version = "3.7.10";
28353
28406
  createVuetify.version = version;
28354
28407
 
28355
28408
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };