vuetify 3.5.6 → 3.5.7

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 (72) hide show
  1. package/dist/_component-variables-labs.sass +2 -0
  2. package/dist/json/attributes.json +312 -40
  3. package/dist/json/importMap-labs.json +8 -0
  4. package/dist/json/importMap.json +122 -122
  5. package/dist/json/tags.json +78 -0
  6. package/dist/json/web-types.json +793 -52
  7. package/dist/vuetify-labs.css +1931 -1803
  8. package/dist/vuetify-labs.d.ts +1073 -106
  9. package/dist/vuetify-labs.esm.js +315 -75
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +315 -75
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +846 -844
  14. package/dist/vuetify.d.ts +74 -141
  15. package/dist/vuetify.esm.js +70 -69
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +70 -69
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +50 -49
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VApp/index.d.mts +8 -6
  23. package/lib/components/VAutocomplete/VAutocomplete.css +4 -4
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs +28 -27
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  26. package/lib/components/VAutocomplete/VAutocomplete.sass +1 -1
  27. package/lib/components/VCheckbox/VCheckbox.mjs +3 -1
  28. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  29. package/lib/components/VCombobox/VCombobox.css +4 -4
  30. package/lib/components/VCombobox/VCombobox.mjs +19 -22
  31. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  32. package/lib/components/VCombobox/VCombobox.sass +1 -1
  33. package/lib/components/VDataIterator/VDataIterator.mjs.map +1 -1
  34. package/lib/components/VDataIterator/index.d.mts +50 -94
  35. package/lib/components/VLayout/index.d.mts +8 -6
  36. package/lib/components/VSelect/VSelect.mjs +18 -17
  37. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  38. package/lib/components/VToolbar/VToolbar.css +3 -1
  39. package/lib/components/VToolbar/VToolbar.sass +2 -1
  40. package/lib/components/index.d.mts +38 -105
  41. package/lib/composables/layout.mjs.map +1 -1
  42. package/lib/entry-bundler.mjs +1 -1
  43. package/lib/framework.mjs +1 -1
  44. package/lib/index.d.mts +38 -36
  45. package/lib/labs/VEmptyState/VEmptyState.css +59 -0
  46. package/lib/labs/VEmptyState/VEmptyState.mjs +145 -0
  47. package/lib/labs/VEmptyState/VEmptyState.mjs.map +1 -0
  48. package/lib/labs/VEmptyState/VEmptyState.sass +53 -0
  49. package/lib/labs/VEmptyState/_variables.scss +22 -0
  50. package/lib/labs/VEmptyState/index.d.mts +415 -0
  51. package/lib/labs/VEmptyState/index.mjs +2 -0
  52. package/lib/labs/VEmptyState/index.mjs.map +1 -0
  53. package/lib/labs/VFab/VFab.css +69 -0
  54. package/lib/labs/VFab/VFab.mjs +114 -0
  55. package/lib/labs/VFab/VFab.mjs.map +1 -0
  56. package/lib/labs/VFab/VFab.sass +82 -0
  57. package/lib/labs/VFab/_mixins.scss +22 -0
  58. package/lib/labs/VFab/_variables.scss +33 -0
  59. package/lib/labs/VFab/index.d.mts +656 -0
  60. package/lib/labs/VFab/index.mjs +2 -0
  61. package/lib/labs/VFab/index.mjs.map +1 -0
  62. package/lib/labs/VSparkline/VBarline.mjs +4 -4
  63. package/lib/labs/VSparkline/VBarline.mjs.map +1 -1
  64. package/lib/labs/VSparkline/VTrendline.mjs +6 -2
  65. package/lib/labs/VSparkline/VTrendline.mjs.map +1 -1
  66. package/lib/labs/VSparkline/index.d.mts +12 -0
  67. package/lib/labs/VSparkline/util/line.mjs +2 -0
  68. package/lib/labs/VSparkline/util/line.mjs.map +1 -1
  69. package/lib/labs/components.d.mts +1066 -2
  70. package/lib/labs/components.mjs +2 -0
  71. package/lib/labs/components.mjs.map +1 -1
  72. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.5.6
2
+ * Vuetify v3.5.7
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -6881,7 +6881,8 @@ const VCheckbox = genericComponent()({
6881
6881
  id,
6882
6882
  messagesId,
6883
6883
  isDisabled,
6884
- isReadonly
6884
+ isReadonly,
6885
+ isValid
6885
6886
  } = _ref2;
6886
6887
  return createVNode(VCheckboxBtn, mergeProps(checkboxProps, {
6887
6888
  "id": id.value,
@@ -6889,6 +6890,7 @@ const VCheckbox = genericComponent()({
6889
6890
  "disabled": isDisabled.value,
6890
6891
  "readonly": isReadonly.value
6891
6892
  }, controlAttrs, {
6893
+ "error": isValid.value === false,
6892
6894
  "modelValue": model.value,
6893
6895
  "onUpdate:modelValue": $event => model.value = $event,
6894
6896
  "onFocus": focus,
@@ -11838,21 +11840,27 @@ const VSelect = genericComponent()({
11838
11840
  model.value = [item];
11839
11841
  }
11840
11842
  }
11843
+
11844
+ /** @param set - null means toggle */
11841
11845
  function select(item) {
11842
- let add = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
11846
+ let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
11847
+ if (item.props.disabled) return;
11843
11848
  if (props.multiple) {
11844
11849
  const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
11845
- add = index === -1;
11846
- if (add) {
11847
- model.value = [...model.value, item];
11848
- } else {
11849
- const value = [...model.value];
11850
+ const add = set == null ? !~index : set;
11851
+ if (~index) {
11852
+ const value = add ? [...model.value, item] : [...model.value];
11850
11853
  value.splice(index, 1);
11851
11854
  model.value = value;
11855
+ } else if (add) {
11856
+ model.value = [...model.value, item];
11852
11857
  }
11853
11858
  } else {
11859
+ const add = set !== false;
11854
11860
  model.value = add ? [item] : [];
11855
- menu.value = false;
11861
+ nextTick(() => {
11862
+ menu.value = false;
11863
+ });
11856
11864
  }
11857
11865
  }
11858
11866
  function onBlur(e) {
@@ -11886,14 +11894,9 @@ const VSelect = genericComponent()({
11886
11894
  });
11887
11895
  }
11888
11896
  });
11889
- watch(displayItems, (val, oldVal) => {
11890
- if (!isFocused.value) return;
11891
- if (!val.length && props.hideNoData) {
11892
- menu.value = false;
11893
- }
11894
- if (!oldVal.length && val.length) {
11895
- menu.value = true;
11896
- }
11897
+ watch(() => props.items, val => {
11898
+ if (!isFocused.value || !val.length || menu.value) return;
11899
+ menu.value = true;
11897
11900
  });
11898
11901
  useRender(() => {
11899
11902
  const hasChips = !!(props.chips || slots.chip);
@@ -11971,7 +11974,7 @@ const VSelect = genericComponent()({
11971
11974
  const itemProps = mergeProps(item.props, {
11972
11975
  ref: itemRef,
11973
11976
  key: index,
11974
- onClick: () => select(item)
11977
+ onClick: () => select(item, null)
11975
11978
  });
11976
11979
  return slots.item?.({
11977
11980
  item,
@@ -12278,6 +12281,8 @@ const VAutocomplete = genericComponent()({
12278
12281
  }
12279
12282
  return filteredItems.value;
12280
12283
  });
12284
+ const hasChips = computed(() => !!(props.chips || slots.chip));
12285
+ const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);
12281
12286
  const selectedValues = computed(() => model.value.map(selection => selection.props.value));
12282
12287
  const highlightFirst = computed(() => {
12283
12288
  const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
@@ -12336,7 +12341,7 @@ const VAutocomplete = genericComponent()({
12336
12341
  }
12337
12342
  const originalSelectionIndex = selectionIndex.value;
12338
12343
  const selectedItem = model.value[selectionIndex.value];
12339
- if (selectedItem && !selectedItem.props.disabled) select(selectedItem);
12344
+ if (selectedItem && !selectedItem.props.disabled) select(selectedItem, false);
12340
12345
  selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
12341
12346
  }
12342
12347
  if (e.key === 'ArrowLeft') {
@@ -12387,36 +12392,41 @@ const VAutocomplete = genericComponent()({
12387
12392
  if (v == null || v === '' && !props.multiple) model.value = [];
12388
12393
  }
12389
12394
  const isSelecting = shallowRef(false);
12395
+
12396
+ /** @param set - null means toggle */
12390
12397
  function select(item) {
12391
- let add = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
12398
+ let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
12392
12399
  if (item.props.disabled) return;
12393
12400
  if (props.multiple) {
12394
12401
  const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
12395
- add = index === -1;
12396
- if (add) {
12397
- model.value = [...model.value, item];
12398
- } else {
12399
- const value = [...model.value];
12402
+ const add = set == null ? !~index : set;
12403
+ if (~index) {
12404
+ const value = add ? [...model.value, item] : [...model.value];
12400
12405
  value.splice(index, 1);
12401
12406
  model.value = value;
12407
+ } else if (add) {
12408
+ model.value = [...model.value, item];
12402
12409
  }
12403
12410
  if (props.clearOnSelect) {
12404
12411
  search.value = '';
12405
12412
  }
12406
12413
  } else {
12414
+ const add = set !== false;
12407
12415
  model.value = add ? [item] : [];
12408
- isSelecting.value = true;
12409
- search.value = add ? item.title : '';
12410
- menu.value = false;
12411
- isPristine.value = true;
12412
- nextTick(() => isSelecting.value = false);
12416
+ search.value = add && !hasSelectionSlot.value ? item.title : '';
12417
+
12418
+ // watch for search watcher to trigger
12419
+ nextTick(() => {
12420
+ menu.value = false;
12421
+ isPristine.value = true;
12422
+ });
12413
12423
  }
12414
12424
  }
12415
12425
  watch(isFocused, (val, oldVal) => {
12416
12426
  if (val === oldVal) return;
12417
12427
  if (val) {
12418
12428
  isSelecting.value = true;
12419
- search.value = props.multiple ? '' : String(model.value.at(-1)?.props.title ?? '');
12429
+ search.value = props.multiple || hasSelectionSlot.value ? '' : String(model.value.at(-1)?.props.title ?? '');
12420
12430
  isPristine.value = true;
12421
12431
  nextTick(() => isSelecting.value = false);
12422
12432
  } else {
@@ -12446,17 +12456,11 @@ const VAutocomplete = genericComponent()({
12446
12456
  });
12447
12457
  }
12448
12458
  });
12449
- watch(displayItems, (val, oldVal) => {
12450
- if (!isFocused.value) return;
12451
- if (!val.length && props.hideNoData) {
12452
- menu.value = false;
12453
- }
12454
- if (!oldVal.length && val.length) {
12455
- menu.value = true;
12456
- }
12459
+ watch(() => props.items, val => {
12460
+ if (!isFocused.value || !val.length || menu.value) return;
12461
+ menu.value = true;
12457
12462
  });
12458
12463
  useRender(() => {
12459
- const hasChips = !!(props.chips || slots.chip);
12460
12464
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
12461
12465
  const isDirty = model.value.length > 0;
12462
12466
  const textFieldProps = VTextField.filterProps(props);
@@ -12474,7 +12478,7 @@ const VAutocomplete = genericComponent()({
12474
12478
  "class": ['v-autocomplete', `v-autocomplete--${props.multiple ? 'multiple' : 'single'}`, {
12475
12479
  'v-autocomplete--active-menu': menu.value,
12476
12480
  'v-autocomplete--chips': !!props.chips,
12477
- 'v-autocomplete--selection-slot': !!slots.selection,
12481
+ 'v-autocomplete--selection-slot': !!hasSelectionSlot.value,
12478
12482
  'v-autocomplete--selecting-index': selectionIndex.value > -1
12479
12483
  }, props.class],
12480
12484
  "style": props.style,
@@ -12529,7 +12533,7 @@ const VAutocomplete = genericComponent()({
12529
12533
  ref: itemRef,
12530
12534
  key: index,
12531
12535
  active: highlightFirst.value && index === 0 ? true : undefined,
12532
- onClick: () => select(item)
12536
+ onClick: () => select(item, null)
12533
12537
  });
12534
12538
  return slots.item?.({
12535
12539
  item,
@@ -12575,8 +12579,8 @@ const VAutocomplete = genericComponent()({
12575
12579
  modelValue: true,
12576
12580
  'onUpdate:modelValue': undefined
12577
12581
  };
12578
- const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
12579
- const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
12582
+ const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;
12583
+ const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({
12580
12584
  item,
12581
12585
  index,
12582
12586
  props: slotProps
@@ -12589,7 +12593,7 @@ const VAutocomplete = genericComponent()({
12589
12593
  "key": item.value,
12590
12594
  "class": ['v-autocomplete__selection', index === selectionIndex.value && ['v-autocomplete__selection--selected', textColorClasses.value]],
12591
12595
  "style": index === selectionIndex.value ? textColorStyles.value : {}
12592
- }, [hasChips ? !slots.chip ? createVNode(VChip, mergeProps({
12596
+ }, [hasChips.value ? !slots.chip ? createVNode(VChip, mergeProps({
12593
12597
  "key": "chip",
12594
12598
  "closable": props.closableChips,
12595
12599
  "size": "small",
@@ -16028,14 +16032,16 @@ const VCombobox = genericComponent()({
16028
16032
  return props.multiple ? transformed : transformed[0] ?? null;
16029
16033
  });
16030
16034
  const form = useForm();
16031
- const _search = shallowRef(!props.multiple ? model.value[0]?.title ?? '' : '');
16035
+ const hasChips = computed(() => !!(props.chips || slots.chip));
16036
+ const hasSelectionSlot = computed(() => hasChips.value || !!slots.selection);
16037
+ const _search = shallowRef(!props.multiple && !hasSelectionSlot.value ? model.value[0]?.title ?? '' : '');
16032
16038
  const search = computed({
16033
16039
  get: () => {
16034
16040
  return _search.value;
16035
16041
  },
16036
16042
  set: val => {
16037
16043
  _search.value = val ?? '';
16038
- if (!props.multiple) {
16044
+ if (!props.multiple && !hasSelectionSlot.value) {
16039
16045
  model.value = [transformItem$3(props, val)];
16040
16046
  }
16041
16047
  if (val && props.multiple && props.delimiters?.length) {
@@ -16066,7 +16072,7 @@ const VCombobox = genericComponent()({
16066
16072
  emit('update:search', value);
16067
16073
  });
16068
16074
  watch(model, value => {
16069
- if (!props.multiple) {
16075
+ if (!props.multiple && !hasSelectionSlot.value) {
16070
16076
  _search.value = value[0]?.title ?? '';
16071
16077
  }
16072
16078
  });
@@ -16131,6 +16137,10 @@ const VCombobox = genericComponent()({
16131
16137
  if (e.key === 'ArrowDown' && highlightFirst.value) {
16132
16138
  listRef.value?.focus('next');
16133
16139
  }
16140
+ if (e.key === 'Enter' && search.value) {
16141
+ select(transformItem$3(props, search.value));
16142
+ if (hasSelectionSlot.value) search.value = '';
16143
+ }
16134
16144
  if (!props.multiple) return;
16135
16145
  if (['Backspace', 'Delete'].includes(e.key)) {
16136
16146
  if (selectionIndex.value < 0) {
@@ -16164,10 +16174,6 @@ const VCombobox = genericComponent()({
16164
16174
  vTextFieldRef.value.setSelectionRange(0, 0);
16165
16175
  }
16166
16176
  }
16167
- if (e.key === 'Enter' && search.value) {
16168
- select(transformItem$3(props, search.value));
16169
- search.value = '';
16170
- }
16171
16177
  }
16172
16178
  function onAfterLeave() {
16173
16179
  if (isFocused.value) {
@@ -16178,6 +16184,7 @@ const VCombobox = genericComponent()({
16178
16184
  /** @param set - null means toggle */
16179
16185
  function select(item) {
16180
16186
  let set = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
16187
+ if (item.props.disabled) return;
16181
16188
  if (props.multiple) {
16182
16189
  const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
16183
16190
  const add = set == null ? !~index : set;
@@ -16194,7 +16201,7 @@ const VCombobox = genericComponent()({
16194
16201
  } else {
16195
16202
  const add = set !== false;
16196
16203
  model.value = add ? [item] : [];
16197
- _search.value = add ? item.title : '';
16204
+ _search.value = add && !hasSelectionSlot.value ? item.title : '';
16198
16205
 
16199
16206
  // watch for search watcher to trigger
16200
16207
  nextTick(() => {
@@ -16226,7 +16233,7 @@ const VCombobox = genericComponent()({
16226
16233
  return value === displayItems.value[0].value;
16227
16234
  })) {
16228
16235
  select(displayItems.value[0]);
16229
- } else if (props.multiple && search.value) {
16236
+ } else if (search.value) {
16230
16237
  select(transformItem$3(props, search.value));
16231
16238
  }
16232
16239
  });
@@ -16238,17 +16245,11 @@ const VCombobox = genericComponent()({
16238
16245
  });
16239
16246
  }
16240
16247
  });
16241
- watch(displayItems, (val, oldVal) => {
16242
- if (!isFocused.value) return;
16243
- if (!val.length && props.hideNoData) {
16244
- menu.value = false;
16245
- }
16246
- if (!oldVal.length && val.length) {
16247
- menu.value = true;
16248
- }
16248
+ watch(() => props.items, val => {
16249
+ if (!isFocused.value || !val.length || menu.value) return;
16250
+ menu.value = true;
16249
16251
  });
16250
16252
  useRender(() => {
16251
- const hasChips = !!(props.chips || slots.chip);
16252
16253
  const hasList = !!(!props.hideNoData || displayItems.value.length || slots['prepend-item'] || slots['append-item'] || slots['no-data']);
16253
16254
  const isDirty = model.value.length > 0;
16254
16255
  const textFieldProps = VTextField.filterProps(props);
@@ -16265,7 +16266,7 @@ const VCombobox = genericComponent()({
16265
16266
  "class": ['v-combobox', {
16266
16267
  'v-combobox--active-menu': menu.value,
16267
16268
  'v-combobox--chips': !!props.chips,
16268
- 'v-combobox--selection-slot': !!slots.selection,
16269
+ 'v-combobox--selection-slot': !!hasSelectionSlot.value,
16269
16270
  'v-combobox--selecting-index': selectionIndex.value > -1,
16270
16271
  [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
16271
16272
  }, props.class],
@@ -16367,8 +16368,8 @@ const VCombobox = genericComponent()({
16367
16368
  modelValue: true,
16368
16369
  'onUpdate:modelValue': undefined
16369
16370
  };
16370
- const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
16371
- const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
16371
+ const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;
16372
+ const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({
16372
16373
  item,
16373
16374
  index,
16374
16375
  props: slotProps
@@ -16381,7 +16382,7 @@ const VCombobox = genericComponent()({
16381
16382
  "key": item.value,
16382
16383
  "class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
16383
16384
  "style": index === selectionIndex.value ? textColorStyles.value : {}
16384
- }, [hasChips ? !slots.chip ? createVNode(VChip, mergeProps({
16385
+ }, [hasChips.value ? !slots.chip ? createVNode(VChip, mergeProps({
16385
16386
  "key": "chip",
16386
16387
  "closable": props.closableChips,
16387
16388
  "size": "small",
@@ -25734,7 +25735,7 @@ function createVuetify$1() {
25734
25735
  goTo
25735
25736
  };
25736
25737
  }
25737
- const version$1 = "3.5.6";
25738
+ const version$1 = "3.5.7";
25738
25739
  createVuetify$1.version = version$1;
25739
25740
 
25740
25741
  // Vue's inject() can only be used in setup
@@ -25759,7 +25760,7 @@ const createVuetify = function () {
25759
25760
  ...options
25760
25761
  });
25761
25762
  };
25762
- const version = "3.5.6";
25763
+ const version = "3.5.7";
25763
25764
  createVuetify.version = version;
25764
25765
 
25765
25766
  export { components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };