@vuetify/nightly 3.9.2-dev.2025-07-18 → 3.9.2-master.2025-07-22

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 (57) hide show
  1. package/CHANGELOG.md +16 -14
  2. package/dist/json/attributes.json +2954 -2974
  3. package/dist/json/importMap-labs.json +22 -22
  4. package/dist/json/importMap.json +184 -184
  5. package/dist/json/tags.json +0 -5
  6. package/dist/json/web-types.json +5821 -5891
  7. package/dist/vuetify-labs.cjs +27 -216
  8. package/dist/vuetify-labs.css +5981 -5983
  9. package/dist/vuetify-labs.d.ts +67 -129
  10. package/dist/vuetify-labs.esm.js +27 -216
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +27 -216
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.cjs +18 -178
  15. package/dist/vuetify.cjs.map +1 -1
  16. package/dist/vuetify.css +3778 -3780
  17. package/dist/vuetify.d.ts +67 -119
  18. package/dist/vuetify.esm.js +18 -178
  19. package/dist/vuetify.esm.js.map +1 -1
  20. package/dist/vuetify.js +18 -178
  21. package/dist/vuetify.js.map +1 -1
  22. package/dist/vuetify.min.css +2 -2
  23. package/dist/vuetify.min.js +701 -723
  24. package/dist/vuetify.min.js.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.js +0 -1
  26. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  27. package/lib/components/VCombobox/VCombobox.js +0 -1
  28. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  29. package/lib/components/VFileInput/VFileInput.d.ts +0 -15
  30. package/lib/components/VFileInput/VFileInput.js +9 -38
  31. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  32. package/lib/components/VList/VList.js +1 -2
  33. package/lib/components/VList/VList.js.map +1 -1
  34. package/lib/components/VList/VListItem.js +1 -7
  35. package/lib/components/VList/VListItem.js.map +1 -1
  36. package/lib/components/VProgressLinear/VProgressLinear.css +1 -1
  37. package/lib/components/VProgressLinear/VProgressLinear.d.ts +0 -75
  38. package/lib/components/VProgressLinear/VProgressLinear.js +6 -32
  39. package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
  40. package/lib/components/VProgressLinear/VProgressLinear.sass +2 -2
  41. package/lib/components/VSelect/VSelect.js +0 -1
  42. package/lib/components/VSelect/VSelect.js.map +1 -1
  43. package/lib/entry-bundler.js +1 -1
  44. package/lib/entry-bundler.js.map +1 -1
  45. package/lib/framework.d.ts +67 -67
  46. package/lib/framework.js +1 -1
  47. package/lib/framework.js.map +1 -1
  48. package/lib/labs/VFileUpload/VFileUpload.d.ts +0 -15
  49. package/lib/labs/VFileUpload/VFileUpload.js +9 -39
  50. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  51. package/package.json +1 -1
  52. package/lib/components/VProgressLinear/chunks.d.ts +0 -55
  53. package/lib/components/VProgressLinear/chunks.js +0 -62
  54. package/lib/components/VProgressLinear/chunks.js.map +0 -1
  55. package/lib/composables/fileFilter.d.ts +0 -18
  56. package/lib/composables/fileFilter.js +0 -38
  57. package/lib/composables/fileFilter.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.9.2-dev.2025-07-18
2
+ * Vuetify v3.9.2-master.2025-07-22
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -5443,69 +5443,6 @@ function useLocation(props) {
5443
5443
  };
5444
5444
  }
5445
5445
 
5446
- // Utilities
5447
-
5448
- // Types
5449
-
5450
- // Composables
5451
- const makeChunksProps = propsFactory({
5452
- chunkCount: {
5453
- type: [Number, String],
5454
- default: null
5455
- },
5456
- chunkWidth: {
5457
- type: [Number, String],
5458
- default: null
5459
- },
5460
- chunkGap: {
5461
- type: [Number, String],
5462
- default: 4
5463
- }
5464
- }, 'chunks');
5465
- function useChunks(props, containerWidth) {
5466
- const hasChunks = toRef(() => !!props.chunkCount || !!props.chunkWidth);
5467
- const chunkWidth = computed(() => {
5468
- const containerSize = toValue(containerWidth);
5469
- if (!containerSize) {
5470
- return 0;
5471
- }
5472
- if (!props.chunkCount) {
5473
- return Number(props.chunkWidth);
5474
- }
5475
- const count = Number(props.chunkCount);
5476
- const availableWidth = containerSize - Number(props.chunkGap) * (count - 1);
5477
- return availableWidth / count;
5478
- });
5479
- const chunkGap = toRef(() => Number(props.chunkGap));
5480
- const chunksMaskStyles = computed(() => {
5481
- if (!hasChunks.value) {
5482
- return {};
5483
- }
5484
- const chunkGapPx = convertToUnit(chunkGap.value);
5485
- const chunkWidthPx = convertToUnit(chunkWidth.value);
5486
- return {
5487
- maskRepeat: 'repeat-x',
5488
- maskImage: `linear-gradient(90deg, #000, #000 ${chunkWidthPx}, transparent ${chunkWidthPx}, transparent)`,
5489
- maskSize: `calc(${chunkWidthPx} + ${chunkGapPx}) 100%`
5490
- };
5491
- });
5492
- function snapValueToChunk(val) {
5493
- const containerSize = toValue(containerWidth);
5494
- if (!containerSize) {
5495
- return val;
5496
- }
5497
- const gapRelativeSize = 100 * chunkGap.value / containerSize;
5498
- const chunkRelativeSize = 100 * (chunkWidth.value + chunkGap.value) / containerSize;
5499
- const filledChunks = Math.floor((val + gapRelativeSize) / chunkRelativeSize);
5500
- return clamp(0, filledChunks * chunkRelativeSize - gapRelativeSize / 2, 100);
5501
- }
5502
- return {
5503
- hasChunks,
5504
- chunksMaskStyles,
5505
- snapValueToChunk
5506
- };
5507
- }
5508
-
5509
5446
  const makeVProgressLinearProps = propsFactory({
5510
5447
  absolute: Boolean,
5511
5448
  active: {
@@ -5540,7 +5477,6 @@ const makeVProgressLinearProps = propsFactory({
5540
5477
  stream: Boolean,
5541
5478
  striped: Boolean,
5542
5479
  roundedBar: Boolean,
5543
- ...makeChunksProps(),
5544
5480
  ...makeComponentProps(),
5545
5481
  ...makeLocationProps({
5546
5482
  location: 'top'
@@ -5559,7 +5495,6 @@ const VProgressLinear = genericComponent()({
5559
5495
  let {
5560
5496
  slots
5561
5497
  } = _ref;
5562
- const root = ref();
5563
5498
  const progress = useProxiedModel(props, 'modelValue');
5564
5499
  const {
5565
5500
  isRtl,
@@ -5601,24 +5536,6 @@ const VProgressLinear = genericComponent()({
5601
5536
  const isReversed = computed(() => isRtl.value !== props.reverse);
5602
5537
  const transition = computed(() => props.indeterminate ? 'fade-transition' : 'slide-x-transition');
5603
5538
  const isForcedColorsModeActive = IN_BROWSER && window.matchMedia?.('(forced-colors: active)').matches;
5604
- const containerWidth = shallowRef(0);
5605
- const {
5606
- hasChunks,
5607
- chunksMaskStyles,
5608
- snapValueToChunk
5609
- } = useChunks(props, containerWidth);
5610
- useToggleScope(hasChunks, () => {
5611
- const {
5612
- resizeRef
5613
- } = useResizeObserver(entries => containerWidth.value = entries[0].contentRect.width);
5614
- watchEffect(() => resizeRef.value = root.value);
5615
- });
5616
- const bufferWidth = computed(() => {
5617
- return hasChunks.value ? snapValueToChunk(normalizedBuffer.value) : normalizedBuffer.value;
5618
- });
5619
- const barWidth = computed(() => {
5620
- return hasChunks.value ? snapValueToChunk(normalizedValue.value) : normalizedValue.value;
5621
- });
5622
5539
  function handleClick(e) {
5623
5540
  if (!intersectionRef.value) return;
5624
5541
  const {
@@ -5629,11 +5546,8 @@ const VProgressLinear = genericComponent()({
5629
5546
  const value = isReversed.value ? width - e.clientX + (right - width) : e.clientX - left;
5630
5547
  progress.value = Math.round(value / width * max.value);
5631
5548
  }
5632
- watchEffect(() => {
5633
- intersectionRef.value = root.value;
5634
- });
5635
5549
  useRender(() => createVNode(props.tag, {
5636
- "ref": root,
5550
+ "ref": intersectionRef,
5637
5551
  "class": normalizeClass(['v-progress-linear', {
5638
5552
  'v-progress-linear--absolute': props.absolute,
5639
5553
  'v-progress-linear--active': props.active && isIntersecting.value,
@@ -5648,7 +5562,7 @@ const VProgressLinear = genericComponent()({
5648
5562
  height: props.active ? convertToUnit(height.value) : 0,
5649
5563
  '--v-progress-linear-height': convertToUnit(height.value),
5650
5564
  ...(props.absolute ? locationStyles.value : {})
5651
- }, chunksMaskStyles.value, props.style]),
5565
+ }, props.style]),
5652
5566
  "role": "progressbar",
5653
5567
  "aria-hidden": props.active ? 'false' : 'true',
5654
5568
  "aria-valuemin": "0",
@@ -5678,7 +5592,7 @@ const VProgressLinear = genericComponent()({
5678
5592
  "class": normalizeClass(['v-progress-linear__buffer', !isForcedColorsModeActive ? bufferColorClasses.value : undefined]),
5679
5593
  "style": normalizeStyle([bufferColorStyles.value, {
5680
5594
  opacity: parseFloat(props.bufferOpacity),
5681
- width: convertToUnit(bufferWidth.value, '%')
5595
+ width: convertToUnit(normalizedBuffer.value, '%')
5682
5596
  }])
5683
5597
  }, null), createVNode(Transition, {
5684
5598
  "name": transition.value
@@ -5686,7 +5600,7 @@ const VProgressLinear = genericComponent()({
5686
5600
  default: () => [!props.indeterminate ? createElementVNode("div", {
5687
5601
  "class": normalizeClass(['v-progress-linear__determinate', !isForcedColorsModeActive ? barColorClasses.value : undefined]),
5688
5602
  "style": normalizeStyle([barColorStyles.value, {
5689
- width: convertToUnit(barWidth.value, '%')
5603
+ width: convertToUnit(normalizedValue.value, '%')
5690
5604
  }])
5691
5605
  }, null) : createElementVNode("div", {
5692
5606
  "class": "v-progress-linear__indeterminate"
@@ -9904,11 +9818,6 @@ const VListItem = genericComponent()({
9904
9818
  const isLink = toRef(() => props.link !== false && link.isLink.value);
9905
9819
  const isSelectable = computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null));
9906
9820
  const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value));
9907
- const role = computed(() => list ? isSelectable.value ? 'option' : 'listitem' : undefined);
9908
- const ariaSelected = computed(() => {
9909
- if (!isSelectable.value) return undefined;
9910
- return root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value;
9911
- });
9912
9821
  const roundedProps = toRef(() => props.rounded || props.nav);
9913
9822
  const color = toRef(() => props.color ?? props.activeColor);
9914
9823
  const variantProps = toRef(() => ({
@@ -10012,8 +9921,7 @@ const VListItem = genericComponent()({
10012
9921
  }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
10013
9922
  "style": [colorStyles.value, dimensionStyles.value, props.style],
10014
9923
  "tabindex": isClickable.value ? list ? -2 : 0 : undefined,
10015
- "aria-selected": ariaSelected.value,
10016
- "role": role.value,
9924
+ "aria-selected": isSelectable.value ? root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value : undefined,
10017
9925
  "onClick": onClick,
10018
9926
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
10019
9927
  }, link.linkProps), {
@@ -10515,7 +10423,6 @@ const VList = genericComponent()({
10515
10423
  const activeColor = toRef(() => props.activeColor);
10516
10424
  const baseColor = toRef(() => props.baseColor);
10517
10425
  const color = toRef(() => props.color);
10518
- const isSelectable = toRef(() => props.selectable || props.activatable);
10519
10426
  createList({
10520
10427
  filterable: props.filterable
10521
10428
  });
@@ -10587,7 +10494,7 @@ const VList = genericComponent()({
10587
10494
  }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class]),
10588
10495
  "style": normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, props.style]),
10589
10496
  "tabindex": props.disabled ? -1 : 0,
10590
- "role": isSelectable.value ? 'listbox' : 'list',
10497
+ "role": "listbox",
10591
10498
  "aria-activedescendant": undefined,
10592
10499
  "onFocusin": onFocusin,
10593
10500
  "onFocusout": onFocusout,
@@ -13657,7 +13564,6 @@ const VSelect = genericComponent()({
13657
13564
  "onKeydown": onListKeydown,
13658
13565
  "onFocusin": onFocusin,
13659
13566
  "tabindex": "-1",
13660
- "selectable": true,
13661
13567
  "aria-live": "polite",
13662
13568
  "aria-label": `${props.label}-list`,
13663
13569
  "color": props.itemColor ?? props.color
@@ -14277,7 +14183,6 @@ const VAutocomplete = genericComponent()({
14277
14183
  "onFocusin": onFocusin,
14278
14184
  "onFocusout": onFocusout,
14279
14185
  "tabindex": "-1",
14280
- "selectable": true,
14281
14186
  "aria-live": "polite",
14282
14187
  "color": props.itemColor ?? props.color
14283
14188
  }, listEvents, props.listProps), {
@@ -19365,7 +19270,6 @@ const VCombobox = genericComponent()({
19365
19270
  "selected": selectedValues.value,
19366
19271
  "selectStrategy": props.multiple ? 'independent' : 'single-independent',
19367
19272
  "onMousedown": e => e.preventDefault(),
19368
- "selectable": true,
19369
19273
  "onKeydown": onListKeydown,
19370
19274
  "onFocusin": onFocusin,
19371
19275
  "onFocusout": onFocusout,
@@ -24464,42 +24368,6 @@ function appendIfDirectory(path, item) {
24464
24368
  return item.isDirectory ? `${path}/${item.name}` : path;
24465
24369
  }
24466
24370
 
24467
- // Utilities
24468
- // Composables
24469
- const makeFileFilterProps = propsFactory({
24470
- filterByType: String
24471
- }, 'file-accept');
24472
- function useFileFilter(props) {
24473
- const fileFilter = computed(() => props.filterByType ? createFilter(props.filterByType) : null);
24474
- function filterAccepted(files) {
24475
- if (fileFilter.value) {
24476
- const accepted = files.filter(fileFilter.value);
24477
- return {
24478
- accepted,
24479
- rejected: files.filter(f => !accepted.includes(f))
24480
- };
24481
- }
24482
- return {
24483
- accepted: files,
24484
- rejected: []
24485
- };
24486
- }
24487
- return {
24488
- filterAccepted
24489
- };
24490
- }
24491
- function createFilter(v) {
24492
- const types = v.split(',').map(x => x.trim().toLowerCase());
24493
- const extensionsToMatch = types.filter(x => x.startsWith('.'));
24494
- const wildcards = types.filter(x => x.endsWith('/*'));
24495
- const typesToMatch = types.filter(x => !extensionsToMatch.includes(x) && !wildcards.includes(x));
24496
- return file => {
24497
- const extension = file.name.split('.').at(-1)?.toLowerCase() ?? '';
24498
- const typeGroup = file.type.split('/').at(0)?.toLowerCase() ?? '';
24499
- return typesToMatch.includes(file.type) || extensionsToMatch.includes(`.${extension}`) || wildcards.includes(`${typeGroup}/*`);
24500
- };
24501
- }
24502
-
24503
24371
  // Types
24504
24372
 
24505
24373
  const makeVFileInputProps = propsFactory({
@@ -24532,7 +24400,6 @@ const makeVFileInputProps = propsFactory({
24532
24400
  return wrapInArray(val).every(v => v != null && typeof v === 'object');
24533
24401
  }
24534
24402
  },
24535
- ...makeFileFilterProps(),
24536
24403
  ...makeVFieldProps({
24537
24404
  clearable: true
24538
24405
  })
@@ -24545,8 +24412,7 @@ const VFileInput = genericComponent()({
24545
24412
  'click:control': e => true,
24546
24413
  'mousedown:control': e => true,
24547
24414
  'update:focused': focused => true,
24548
- 'update:modelValue': files => true,
24549
- rejected: files => true
24415
+ 'update:modelValue': files => true
24550
24416
  },
24551
24417
  setup(props, _ref) {
24552
24418
  let {
@@ -24557,9 +24423,6 @@ const VFileInput = genericComponent()({
24557
24423
  const {
24558
24424
  t
24559
24425
  } = useLocale();
24560
- const {
24561
- filterAccepted
24562
- } = useFileFilter(props);
24563
24426
  const model = useProxiedModel(props, 'modelValue', props.modelValue, val => wrapInArray(val), val => !props.multiple && Array.isArray(val) ? val[0] : val);
24564
24427
  const {
24565
24428
  isFocused,
@@ -24633,38 +24496,14 @@ const VFileInput = genericComponent()({
24633
24496
  e.stopImmediatePropagation();
24634
24497
  isDragging.value = false;
24635
24498
  if (!inputRef.value || !hasFilesOrFolders(e)) return;
24636
- const allDroppedFiles = await handleDrop(e);
24637
- selectAccepted(allDroppedFiles);
24638
- }
24639
- function onFileSelection(e) {
24640
- if (!e.target || e.repack) return; // prevent loop
24641
-
24642
- if (!props.filterByType) {
24643
- const target = e.target;
24644
- model.value = [...(target.files ?? [])];
24645
- } else {
24646
- selectAccepted([...e.target.files]);
24647
- }
24648
- }
24649
- function selectAccepted(files) {
24650
24499
  const dataTransfer = new DataTransfer();
24651
- const {
24652
- accepted,
24653
- rejected
24654
- } = filterAccepted(files);
24655
- if (rejected.length) {
24656
- emit('rejected', rejected);
24657
- }
24658
- for (const file of accepted) {
24500
+ for (const file of await handleDrop(e)) {
24659
24501
  dataTransfer.items.add(file);
24660
24502
  }
24661
24503
  inputRef.value.files = dataTransfer.files;
24662
- model.value = [...dataTransfer.files];
24663
- const event = new Event('change', {
24504
+ inputRef.value.dispatchEvent(new Event('change', {
24664
24505
  bubbles: true
24665
- });
24666
- event.repack = true;
24667
- inputRef.value.dispatchEvent(event);
24506
+ }));
24668
24507
  }
24669
24508
  watch(model, newValue => {
24670
24509
  const hasModelReset = !Array.isArray(newValue) || !newValue.length;
@@ -24681,8 +24520,6 @@ const VFileInput = genericComponent()({
24681
24520
  ...inputProps
24682
24521
  } = VInput.filterProps(props);
24683
24522
  const fieldProps = VField.filterProps(props);
24684
- const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
24685
- const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
24686
24523
  return createVNode(VInput, mergeProps({
24687
24524
  "ref": vInputRef,
24688
24525
  "modelValue": props.multiple ? model.value : model.value[0],
@@ -24738,7 +24575,6 @@ const VFileInput = genericComponent()({
24738
24575
  return createElementVNode(Fragment, null, [createElementVNode("input", mergeProps({
24739
24576
  "ref": inputRef,
24740
24577
  "type": "file",
24741
- "accept": inputAccept,
24742
24578
  "readonly": isReadonly.value,
24743
24579
  "disabled": isDisabled.value,
24744
24580
  "multiple": props.multiple,
@@ -24748,7 +24584,11 @@ const VFileInput = genericComponent()({
24748
24584
  if (isReadonly.value) e.preventDefault();
24749
24585
  onFocus();
24750
24586
  },
24751
- "onChange": onFileSelection,
24587
+ "onChange": e => {
24588
+ if (!e.target) return;
24589
+ const target = e.target;
24590
+ model.value = [...(target.files ?? [])];
24591
+ },
24752
24592
  "onDragleave": onDragleave,
24753
24593
  "onFocus": onFocus,
24754
24594
  "onBlur": blur
@@ -31544,7 +31384,7 @@ function createVuetify$1() {
31544
31384
  };
31545
31385
  });
31546
31386
  }
31547
- const version$1 = "3.9.2-dev.2025-07-18";
31387
+ const version$1 = "3.9.2-master.2025-07-22";
31548
31388
  createVuetify$1.version = version$1;
31549
31389
 
31550
31390
  // Vue's inject() can only be used in setup
@@ -31569,7 +31409,7 @@ const createVuetify = function () {
31569
31409
  ...options
31570
31410
  });
31571
31411
  };
31572
- const version = "3.9.2-dev.2025-07-18";
31412
+ const version = "3.9.2-master.2025-07-22";
31573
31413
  createVuetify.version = version;
31574
31414
 
31575
31415
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useHotkey, useLayout, useLocale, useRtl, useTheme, version };