vuetify 3.3.5 → 3.3.6

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 (74) hide show
  1. package/dist/json/attributes.json +4 -8
  2. package/dist/json/importMap.json +12 -12
  3. package/dist/json/tags.json +0 -1
  4. package/dist/json/web-types.json +7 -17
  5. package/dist/vuetify-labs.css +41 -18
  6. package/dist/vuetify-labs.d.ts +38 -54
  7. package/dist/vuetify-labs.esm.js +67 -39
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +67 -39
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +36 -13
  12. package/dist/vuetify.d.ts +3 -3
  13. package/dist/vuetify.esm.js +36 -29
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +36 -29
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +20 -21
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAppBar/VAppBar.mjs +12 -9
  21. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  22. package/lib/components/VAutocomplete/VAutocomplete.css +12 -4
  23. package/lib/components/VAutocomplete/VAutocomplete.sass +17 -9
  24. package/lib/components/VAutocomplete/_variables.scss +1 -0
  25. package/lib/components/VBreadcrumbs/VBreadcrumbs.css +4 -0
  26. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +1 -1
  27. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  28. package/lib/components/VBreadcrumbs/VBreadcrumbs.sass +4 -0
  29. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +8 -7
  30. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  31. package/lib/components/VBtn/VBtn.css +1 -1
  32. package/lib/components/VBtn/VBtn.sass +1 -1
  33. package/lib/components/VCombobox/VCombobox.css +12 -4
  34. package/lib/components/VCombobox/VCombobox.sass +17 -9
  35. package/lib/components/VCombobox/_variables.scss +1 -0
  36. package/lib/components/VFooter/VFooter.mjs +4 -2
  37. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  38. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -1
  39. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  40. package/lib/components/VOverlay/VOverlay.mjs +1 -1
  41. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  42. package/lib/components/VSelect/VSelect.css +4 -3
  43. package/lib/components/VSelect/VSelect.sass +10 -12
  44. package/lib/components/VSlider/VSliderThumb.mjs +6 -2
  45. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  46. package/lib/components/VTextField/VTextField.css +2 -0
  47. package/lib/components/VTextField/VTextField.mjs +2 -4
  48. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  49. package/lib/components/VTextField/VTextField.sass +3 -1
  50. package/lib/composables/validation.mjs +2 -2
  51. package/lib/composables/validation.mjs.map +1 -1
  52. package/lib/entry-bundler.mjs +1 -1
  53. package/lib/framework.mjs +1 -1
  54. package/lib/iconsets/fa.mjs +2 -2
  55. package/lib/iconsets/fa.mjs.map +1 -1
  56. package/lib/iconsets/fa4.mjs +2 -2
  57. package/lib/iconsets/fa4.mjs.map +1 -1
  58. package/lib/index.d.mts +3 -3
  59. package/lib/labs/VDataTable/composables/sort.mjs +4 -1
  60. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
  61. package/lib/labs/VDatePicker/VDatePickerControls.mjs +1 -1
  62. package/lib/labs/VDatePicker/VDatePickerControls.mjs.map +1 -1
  63. package/lib/labs/VDatePicker/VDatePickerMonth.mjs +0 -5
  64. package/lib/labs/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  65. package/lib/labs/VDatePicker/index.d.mts +38 -54
  66. package/lib/labs/VDateRangePicker/index.d.mts +34 -44
  67. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs +24 -4
  68. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -1
  69. package/lib/labs/components.d.mts +38 -54
  70. package/lib/util/helpers.mjs +3 -0
  71. package/lib/util/helpers.mjs.map +1 -1
  72. package/lib/util/injectSelf.mjs +1 -0
  73. package/lib/util/injectSelf.mjs.map +1 -1
  74. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.3.5
2
+ * Vuetify v3.3.6
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -428,6 +428,9 @@ function focusChild(el, location) {
428
428
  if (_el) _el.focus();else focusChild(el, location === 'next' ? 'first' : 'last');
429
429
  }
430
430
  }
431
+ function isEmpty(val) {
432
+ return val === null || val === undefined || typeof val === 'string' && val.trim() === '';
433
+ }
431
434
  function noop() {}
432
435
 
433
436
  // Utilities
@@ -1290,6 +1293,7 @@ function injectSelf(key) {
1290
1293
  // TS doesn't allow symbol as index type
1291
1294
  return provides[key];
1292
1295
  }
1296
+ return undefined;
1293
1297
  }
1294
1298
 
1295
1299
  function isFixedPosition(el) {
@@ -3640,16 +3644,18 @@ const VAppBar = genericComponent()({
3640
3644
  const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;
3641
3645
  return height + extensionHeight;
3642
3646
  });
3643
- watchEffect(() => {
3644
- if (scrollBehavior.value.hide) {
3645
- if (scrollBehavior.value.inverted) {
3646
- isActive.value = currentScroll.value > scrollThreshold.value;
3647
+ useToggleScope(computed(() => !!props.scrollBehavior), () => {
3648
+ watchEffect(() => {
3649
+ if (scrollBehavior.value.hide) {
3650
+ if (scrollBehavior.value.inverted) {
3651
+ isActive.value = currentScroll.value > scrollThreshold.value;
3652
+ } else {
3653
+ isActive.value = isScrollingUp.value || currentScroll.value < scrollThreshold.value;
3654
+ }
3647
3655
  } else {
3648
- isActive.value = isScrollingUp.value || currentScroll.value < scrollThreshold.value;
3656
+ isActive.value = true;
3649
3657
  }
3650
- } else {
3651
- isActive.value = true;
3652
- }
3658
+ });
3653
3659
  });
3654
3660
  const {
3655
3661
  ssrBootStyles
@@ -6281,12 +6287,12 @@ function useValidation(props) {
6281
6287
  const handler = typeof rule === 'function' ? rule : () => rule;
6282
6288
  const result = await handler(validationModel.value);
6283
6289
  if (result === true) continue;
6284
- if (typeof result !== 'string') {
6290
+ if (result !== false && typeof result !== 'string') {
6285
6291
  // eslint-disable-next-line no-console
6286
6292
  console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`);
6287
6293
  continue;
6288
6294
  }
6289
- results.push(result);
6295
+ results.push(result || '');
6290
6296
  }
6291
6297
  internalErrorMessages.value = results;
6292
6298
  isValidating.value = false;
@@ -9421,7 +9427,7 @@ const makeVOverlayProps = propsFactory({
9421
9427
  modelValue: Boolean,
9422
9428
  persistent: Boolean,
9423
9429
  scrim: {
9424
- type: [String, Boolean],
9430
+ type: [Boolean, String],
9425
9431
  default: true
9426
9432
  },
9427
9433
  zIndex: {
@@ -10355,12 +10361,10 @@ const VTextField = genericComponent()({
10355
10361
  }]]);
10356
10362
  return createVNode(Fragment, null, [props.prefix && createVNode("span", {
10357
10363
  "class": "v-text-field__prefix"
10358
- }, [props.prefix]), slots.default ? createVNode("div", {
10364
+ }, [props.prefix]), createVNode("div", {
10359
10365
  "class": fieldClass,
10360
10366
  "data-no-activator": ""
10361
- }, [slots.default(), inputNode]) : cloneVNode(inputNode, {
10362
- class: fieldClass
10363
- }), props.suffix && createVNode("span", {
10367
+ }, [slots.default ? createVNode(Fragment, null, [slots.default(), inputNode]) : cloneVNode(inputNode)]), props.suffix && createVNode("span", {
10364
10368
  "class": "v-text-field__suffix"
10365
10369
  }, [props.suffix])]);
10366
10370
  }
@@ -11596,20 +11600,21 @@ const VBreadcrumbsItem = genericComponent()({
11596
11600
  textColorStyles
11597
11601
  } = useTextColor(color);
11598
11602
  useRender(() => {
11599
- const Tag = link.isLink.value ? 'a' : props.tag;
11600
- return createVNode(Tag, {
11603
+ return createVNode(props.tag, {
11601
11604
  "class": ['v-breadcrumbs-item', {
11602
11605
  'v-breadcrumbs-item--active': isActive.value,
11603
11606
  'v-breadcrumbs-item--disabled': props.disabled,
11604
- 'v-breadcrumbs-item--link': link.isLink.value,
11605
11607
  [`${props.activeClass}`]: isActive.value && props.activeClass
11606
11608
  }, textColorClasses.value, props.class],
11607
11609
  "style": [textColorStyles.value, props.style],
11608
- "href": link.href.value,
11609
- "aria-current": isActive.value ? 'page' : undefined,
11610
- "onClick": link.navigate
11610
+ "aria-current": isActive.value ? 'page' : undefined
11611
11611
  }, {
11612
- default: () => [slots.default?.() ?? props.title]
11612
+ default: () => [!link.isLink.value ? slots.default?.() ?? props.title : createVNode("a", {
11613
+ "class": "v-breadcrumbs-item--link",
11614
+ "href": link.href.value,
11615
+ "aria-current": isActive.value ? 'page' : undefined,
11616
+ "onClick": link.navigate
11617
+ }, [slots.default?.() ?? props.title])]
11613
11618
  });
11614
11619
  });
11615
11620
  return {};
@@ -11685,7 +11690,7 @@ const VBreadcrumbs = genericComponent()({
11685
11690
  "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class],
11686
11691
  "style": [backgroundColorStyles.value, props.style]
11687
11692
  }, {
11688
- default: () => [hasPrepend && createVNode("div", {
11693
+ default: () => [hasPrepend && createVNode("li", {
11689
11694
  "key": "prepend",
11690
11695
  "class": "v-breadcrumbs__prepend"
11691
11696
  }, [!slots.prepend ? createVNode(VIcon, {
@@ -13297,6 +13302,9 @@ const VSliderThumb = genericComponent()({
13297
13302
  emit
13298
13303
  } = _ref;
13299
13304
  const slider = inject$1(VSliderSymbol);
13305
+ const {
13306
+ rtlClasses
13307
+ } = useRtl();
13300
13308
  if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider');
13301
13309
  const {
13302
13310
  thumbColor,
@@ -13364,7 +13372,7 @@ const VSliderThumb = genericComponent()({
13364
13372
  "class": ['v-slider-thumb', {
13365
13373
  'v-slider-thumb--focused': props.focused,
13366
13374
  'v-slider-thumb--pressed': props.focused && mousePressed.value
13367
- }, props.class],
13375
+ }, props.class, rtlClasses.value],
13368
13376
  "style": [{
13369
13377
  '--v-slider-thumb-position': positionPercentage,
13370
13378
  '--v-slider-thumb-size': convertToUnit(thumbSize.value)
@@ -15347,7 +15355,9 @@ const VFooter = genericComponent()({
15347
15355
  useRender(() => createVNode(props.tag, {
15348
15356
  "ref": resizeRef,
15349
15357
  "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
15350
- "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined, props.style]
15358
+ "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : {
15359
+ height: convertToUnit(props.height)
15360
+ }, props.style]
15351
15361
  }, slots));
15352
15362
  return {};
15353
15363
  }
@@ -16310,7 +16320,7 @@ const makeVNavigationDrawerProps = propsFactory({
16310
16320
  default: 56
16311
16321
  },
16312
16322
  scrim: {
16313
- type: [String, Boolean],
16323
+ type: [Boolean, String],
16314
16324
  default: true
16315
16325
  },
16316
16326
  image: String,
@@ -19897,6 +19907,9 @@ function sortItems(items, sortByItems, locale, customSorters) {
19897
19907
  }
19898
19908
  [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s);
19899
19909
  if (sortA !== sortB) {
19910
+ if (isEmpty(sortA) && isEmpty(sortB)) return 0;
19911
+ if (isEmpty(sortA)) return -1;
19912
+ if (isEmpty(sortB)) return 1;
19900
19913
  if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB);
19901
19914
  return stringCollator.compare(sortA, sortB);
19902
19915
  }
@@ -21930,7 +21943,7 @@ const makeVDatePickerControlsProps = propsFactory({
21930
21943
  },
21931
21944
  range: {
21932
21945
  default: false,
21933
- type: [String, Boolean],
21946
+ type: [Boolean, String],
21934
21947
  validator: v => v === false || ['start', 'end'].includes(v)
21935
21948
  },
21936
21949
  ...omit(makeDateProps(), ['modelValue', 'inputMode'])
@@ -22017,11 +22030,6 @@ const makeVDatePickerMonthProps = propsFactory({
22017
22030
  showAdjacentMonths: Boolean,
22018
22031
  hideWeekdays: Boolean,
22019
22032
  showWeek: Boolean,
22020
- range: {
22021
- default: false,
22022
- type: [String, Boolean],
22023
- validator: v => typeof v === 'boolean' || ['start', 'end'].includes(v)
22024
- },
22025
22033
  hoverDate: null,
22026
22034
  multiple: Boolean,
22027
22035
  side: {
@@ -22747,7 +22755,7 @@ const VInfiniteScrollIntersect = defineComponent({
22747
22755
  rootMargin: String
22748
22756
  },
22749
22757
  emits: {
22750
- intersect: side => true
22758
+ intersect: (side, isIntersecting) => true
22751
22759
  },
22752
22760
  setup(props, _ref) {
22753
22761
  let {
@@ -22761,7 +22769,7 @@ const VInfiniteScrollIntersect = defineComponent({
22761
22769
  rootMargin: props.rootMargin
22762
22770
  } : undefined);
22763
22771
  watch(isIntersecting, async val => {
22764
- if (val) emit('intersect', props.side);
22772
+ emit('intersect', props.side, val);
22765
22773
  });
22766
22774
  useRender(() => createVNode("div", {
22767
22775
  "class": "v-infinite-scroll-intersect",
@@ -22785,6 +22793,7 @@ const VInfiniteScroll = genericComponent()({
22785
22793
  const startStatus = ref('ok');
22786
22794
  const endStatus = ref('ok');
22787
22795
  const margin = computed(() => convertToUnit(props.margin));
22796
+ const isIntersecting = ref(false);
22788
22797
  function setScrollAmount(amount) {
22789
22798
  if (!rootEl.value) return;
22790
22799
  const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
@@ -22824,7 +22833,14 @@ const VInfiniteScroll = genericComponent()({
22824
22833
  return side === 'start' ? startStatus.value : endStatus.value;
22825
22834
  }
22826
22835
  let previousScrollSize = 0;
22827
- function handleIntersect(side) {
22836
+ function handleIntersect(side, _isIntersecting) {
22837
+ isIntersecting.value = _isIntersecting;
22838
+ if (isIntersecting.value) {
22839
+ intersecting(side);
22840
+ }
22841
+ }
22842
+ function intersecting(side) {
22843
+ if (props.mode !== 'manual' && !isIntersecting.value) return;
22828
22844
  const status = getStatus(side);
22829
22845
  if (!rootEl.value || status === 'loading') return;
22830
22846
  previousScrollSize = getScrollSize();
@@ -22832,9 +22848,21 @@ const VInfiniteScroll = genericComponent()({
22832
22848
  function done(status) {
22833
22849
  setStatus(side, status);
22834
22850
  nextTick(() => {
22851
+ if (status === 'empty' || status === 'error') return;
22835
22852
  if (status === 'ok' && side === 'start') {
22836
22853
  setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());
22837
22854
  }
22855
+ if (props.mode !== 'manual') {
22856
+ nextTick(() => {
22857
+ window.requestAnimationFrame(() => {
22858
+ window.requestAnimationFrame(() => {
22859
+ window.requestAnimationFrame(() => {
22860
+ intersecting(side);
22861
+ });
22862
+ });
22863
+ });
22864
+ });
22865
+ }
22838
22866
  });
22839
22867
  }
22840
22868
  emit('load', {
@@ -22847,7 +22875,7 @@ const VInfiniteScroll = genericComponent()({
22847
22875
  } = useLocale();
22848
22876
  function renderSide(side, status) {
22849
22877
  if (props.side !== side && props.side !== 'both') return;
22850
- const onClick = () => handleIntersect(side);
22878
+ const onClick = () => intersecting(side);
22851
22879
  const slotProps = {
22852
22880
  side,
22853
22881
  props: {
@@ -23419,7 +23447,7 @@ function createVuetify$1() {
23419
23447
  date
23420
23448
  };
23421
23449
  }
23422
- const version$1 = "3.3.5";
23450
+ const version$1 = "3.3.6";
23423
23451
  createVuetify$1.version = version$1;
23424
23452
 
23425
23453
  // Vue's inject() can only be used in setup
@@ -23433,7 +23461,7 @@ function inject(key) {
23433
23461
 
23434
23462
  /* eslint-disable local-rules/sort-imports */
23435
23463
 
23436
- const version = "3.3.5";
23464
+ const version = "3.3.6";
23437
23465
 
23438
23466
  /* eslint-disable local-rules/sort-imports */
23439
23467