@vuetify/nightly 3.5.3-dev.2024-02-08 → 3.5.3-dev.2024-02-14

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 (50) hide show
  1. package/CHANGELOG.md +3 -2
  2. package/dist/json/attributes.json +5 -5
  3. package/dist/json/importMap-labs.json +8 -8
  4. package/dist/json/importMap.json +98 -98
  5. package/dist/json/web-types.json +6 -6
  6. package/dist/vuetify-labs.css +2446 -2446
  7. package/dist/vuetify-labs.d.ts +22 -21
  8. package/dist/vuetify-labs.esm.js +58 -62
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +57 -61
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +1218 -1218
  13. package/dist/vuetify.d.ts +53 -52
  14. package/dist/vuetify.esm.js +58 -62
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +57 -61
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +909 -914
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VApp/VApp.mjs +5 -2
  22. package/lib/components/VApp/VApp.mjs.map +1 -1
  23. package/lib/components/VApp/index.d.mts +6 -6
  24. package/lib/components/VAppBar/VAppBar.mjs +5 -5
  25. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  26. package/lib/components/VAppBar/index.d.mts +2 -2
  27. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +5 -3
  28. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  29. package/lib/components/VBottomNavigation/index.d.mts +2 -2
  30. package/lib/components/VFooter/VFooter.mjs +3 -2
  31. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  32. package/lib/components/VLayout/VLayout.mjs +5 -2
  33. package/lib/components/VLayout/VLayout.mjs.map +1 -1
  34. package/lib/components/VLayout/VLayoutItem.mjs +6 -4
  35. package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
  36. package/lib/components/VLayout/index.d.mts +9 -9
  37. package/lib/components/VMain/VMain.mjs +3 -2
  38. package/lib/components/VMain/VMain.mjs.map +1 -1
  39. package/lib/components/VMain/index.d.mts +2 -2
  40. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +7 -7
  41. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  42. package/lib/components/index.d.mts +21 -21
  43. package/lib/composables/layout.mjs +14 -37
  44. package/lib/composables/layout.mjs.map +1 -1
  45. package/lib/entry-bundler.mjs +1 -1
  46. package/lib/framework.mjs +1 -1
  47. package/lib/index.d.mts +32 -31
  48. package/lib/util/helpers.mjs +11 -1
  49. package/lib/util/helpers.mjs.map +1 -1
  50. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.5.3-dev.2024-02-08
2
+ * Vuetify v3.5.3-dev.2024-02-14
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -549,6 +549,16 @@
549
549
  const timeoutId = window.setTimeout(cb, timeout);
550
550
  return () => window.clearTimeout(timeoutId);
551
551
  }
552
+ function eagerComputed(fn, options) {
553
+ const result = vue.shallowRef();
554
+ vue.watchEffect(() => {
555
+ result.value = fn();
556
+ }, {
557
+ flush: 'sync',
558
+ ...options
559
+ });
560
+ return vue.readonly(result);
561
+ }
552
562
 
553
563
  // Utilities
554
564
  const block = ['top', 'bottom'];
@@ -1613,7 +1623,9 @@
1613
1623
  function useLayout() {
1614
1624
  const layout = vue.inject(VuetifyLayoutKey);
1615
1625
  if (!layout) throw new Error('[Vuetify] Could not find injected layout');
1626
+ const layoutIsReady = vue.nextTick();
1616
1627
  return {
1628
+ layoutIsReady,
1617
1629
  getLayoutItem: layout.getLayoutItem,
1618
1630
  mainRect: layout.mainRect,
1619
1631
  mainStyles: layout.mainStyles
@@ -1630,6 +1642,7 @@
1630
1642
  const isKeptAlive = vue.shallowRef(false);
1631
1643
  vue.onDeactivated(() => isKeptAlive.value = true);
1632
1644
  vue.onActivated(() => isKeptAlive.value = false);
1645
+ const layoutIsReady = vue.nextTick();
1633
1646
  const {
1634
1647
  layoutItemStyles,
1635
1648
  layoutItemScrimStyles
@@ -1642,7 +1655,8 @@
1642
1655
  return {
1643
1656
  layoutItemStyles,
1644
1657
  layoutRect: layout.layoutRect,
1645
- layoutItemScrimStyles
1658
+ layoutItemScrimStyles,
1659
+ layoutIsReady
1646
1660
  };
1647
1661
  }
1648
1662
  const generateLayers = (layout, positions, layoutSizes, activeItems) => {
@@ -1688,29 +1702,7 @@
1688
1702
  resizeRef,
1689
1703
  contentRect: layoutRect
1690
1704
  } = useResizeObserver();
1691
- const computedOverlaps = vue.computed(() => {
1692
- const map = new Map();
1693
- const overlaps = props.overlaps ?? [];
1694
- for (const overlap of overlaps.filter(item => item.includes(':'))) {
1695
- const [top, bottom] = overlap.split(':');
1696
- if (!registered.value.includes(top) || !registered.value.includes(bottom)) continue;
1697
- const topPosition = positions.get(top);
1698
- const bottomPosition = positions.get(bottom);
1699
- const topAmount = layoutSizes.get(top);
1700
- const bottomAmount = layoutSizes.get(bottom);
1701
- if (!topPosition || !bottomPosition || !topAmount || !bottomAmount) continue;
1702
- map.set(bottom, {
1703
- position: topPosition.value,
1704
- amount: parseInt(topAmount.value, 10)
1705
- });
1706
- map.set(top, {
1707
- position: bottomPosition.value,
1708
- amount: -parseInt(bottomAmount.value, 10)
1709
- });
1710
- }
1711
- return map;
1712
- });
1713
- const layers = vue.computed(() => {
1705
+ const layers = eagerComputed(() => {
1714
1706
  const uniquePriorities = [...new Set([...priorities.values()].map(p => p.value))].sort((a, b) => a - b);
1715
1707
  const layout = [];
1716
1708
  for (const p of uniquePriorities) {
@@ -1736,7 +1728,7 @@
1736
1728
  })
1737
1729
  };
1738
1730
  });
1739
- const items = vue.computed(() => {
1731
+ const items = eagerComputed(() => {
1740
1732
  return layers.value.slice(1).map((_ref, index) => {
1741
1733
  let {
1742
1734
  id
@@ -1758,10 +1750,7 @@
1758
1750
  return items.value.find(item => item.id === id);
1759
1751
  };
1760
1752
  const rootVm = getCurrentInstance('createLayout');
1761
- const isMounted = vue.shallowRef(false);
1762
- vue.onMounted(() => {
1763
- isMounted.value = true;
1764
- });
1753
+ const layoutIsReady = vue.nextTick();
1765
1754
  vue.provide(VuetifyLayoutKey, {
1766
1755
  register: (vm, _ref2) => {
1767
1756
  let {
@@ -1797,13 +1786,9 @@
1797
1786
  transition: 'none'
1798
1787
  })
1799
1788
  };
1800
- if (!isMounted.value) return styles;
1789
+ if (index.value < 0) throw new Error(`Layout item "${id}" is missing`);
1801
1790
  const item = items.value[index.value];
1802
1791
  if (!item) throw new Error(`[Vuetify] Could not find layout item "${id}"`);
1803
- const overlap = computedOverlaps.value.get(id);
1804
- if (overlap) {
1805
- item[overlap.position] += overlap.amount;
1806
- }
1807
1792
  return {
1808
1793
  ...styles,
1809
1794
  height: isHorizontal ? `calc(100% - ${item.top}px - ${item.bottom}px)` : elementSize.value ? `${elementSize.value}px` : undefined,
@@ -1836,7 +1821,8 @@
1836
1821
  getLayoutItem,
1837
1822
  items,
1838
1823
  layoutRect,
1839
- rootZIndex
1824
+ rootZIndex,
1825
+ layoutIsReady
1840
1826
  });
1841
1827
  const layoutClasses = vue.computed(() => ['v-layout', {
1842
1828
  'v-layout--full-height': props.fullHeight
@@ -1852,6 +1838,7 @@
1852
1838
  getLayoutItem,
1853
1839
  items,
1854
1840
  layoutRect,
1841
+ layoutIsReady,
1855
1842
  layoutRef: resizeRef
1856
1843
  };
1857
1844
  }
@@ -2546,7 +2533,9 @@
2546
2533
  "style": [props.style]
2547
2534
  }, [vue.createVNode("div", {
2548
2535
  "class": "v-application__wrap"
2549
- }, [slots.default?.()])]));
2536
+ }, [vue.createVNode(vue.Suspense, null, {
2537
+ default: () => [vue.createVNode(vue.Fragment, null, [slots.default?.()])]
2538
+ })])]));
2550
2539
  return {
2551
2540
  getLayoutItem,
2552
2541
  items,
@@ -3879,9 +3868,8 @@
3879
3868
  const isFlat = vue.computed(() => props.flat || scrollBehavior.value.elevate && (scrollBehavior.value.inverted ? currentScroll.value > 0 : currentScroll.value === 0));
3880
3869
  const opacity = vue.computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
3881
3870
  const height = vue.computed(() => {
3882
- if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
3883
- const height = vToolbarRef.value?.contentHeight ?? 0;
3884
- const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;
3871
+ const height = Number(vToolbarRef.value?.contentHeight ?? props.height);
3872
+ const extensionHeight = Number(vToolbarRef.value?.extensionHeight ?? 0);
3885
3873
  return height + extensionHeight;
3886
3874
  });
3887
3875
  useToggleScope(vue.computed(() => !!props.scrollBehavior), () => {
@@ -3901,7 +3889,8 @@
3901
3889
  ssrBootStyles
3902
3890
  } = useSsrBoot();
3903
3891
  const {
3904
- layoutItemStyles
3892
+ layoutItemStyles,
3893
+ layoutIsReady
3905
3894
  } = useLayoutItem({
3906
3895
  id: props.name,
3907
3896
  order: vue.computed(() => parseInt(props.order, 10)),
@@ -3929,7 +3918,7 @@
3929
3918
  "flat": isFlat.value
3930
3919
  }), slots);
3931
3920
  });
3932
- return {};
3921
+ return layoutIsReady;
3933
3922
  }
3934
3923
  });
3935
3924
 
@@ -12925,9 +12914,10 @@
12925
12914
  ssrBootStyles
12926
12915
  } = useSsrBoot();
12927
12916
  const height = vue.computed(() => Number(props.height) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0));
12928
- const isActive = vue.toRef(props, 'active');
12917
+ const isActive = useProxiedModel(props, 'modelValue', props.modelValue);
12929
12918
  const {
12930
- layoutItemStyles
12919
+ layoutItemStyles,
12920
+ layoutIsReady
12931
12921
  } = useLayoutItem({
12932
12922
  id: props.name,
12933
12923
  order: vue.computed(() => parseInt(props.order, 10)),
@@ -12965,7 +12955,7 @@
12965
12955
  }, [slots.default()])]
12966
12956
  });
12967
12957
  });
12968
- return {};
12958
+ return layoutIsReady;
12969
12959
  }
12970
12960
  });
12971
12961
 
@@ -21536,7 +21526,8 @@
21536
21526
  });
21537
21527
  const height = vue.computed(() => props.height === 'auto' ? autoHeight.value : parseInt(props.height, 10));
21538
21528
  const {
21539
- layoutItemStyles
21529
+ layoutItemStyles,
21530
+ layoutIsReady
21540
21531
  } = useLayoutItem({
21541
21532
  id: props.name,
21542
21533
  order: vue.computed(() => parseInt(props.order, 10)),
@@ -21553,7 +21544,7 @@
21553
21544
  height: convertToUnit(props.height)
21554
21545
  }, props.style]
21555
21546
  }, slots));
21556
- return {};
21547
+ return props.app ? layoutIsReady : {};
21557
21548
  }
21558
21549
  });
21559
21550
 
@@ -21976,7 +21967,9 @@
21976
21967
  "ref": layoutRef,
21977
21968
  "class": [layoutClasses.value, props.class],
21978
21969
  "style": [layoutStyles.value, props.style]
21979
- }, [slots.default?.()]));
21970
+ }, [vue.createVNode(vue.Suspense, null, {
21971
+ default: () => [vue.createVNode(vue.Fragment, null, [slots.default?.()])]
21972
+ })]));
21980
21973
  return {
21981
21974
  getLayoutItem,
21982
21975
  items
@@ -22007,7 +22000,8 @@
22007
22000
  slots
22008
22001
  } = _ref;
22009
22002
  const {
22010
- layoutItemStyles
22003
+ layoutItemStyles,
22004
+ layoutIsReady
22011
22005
  } = useLayoutItem({
22012
22006
  id: props.name,
22013
22007
  order: vue.computed(() => parseInt(props.order, 10)),
@@ -22017,10 +22011,11 @@
22017
22011
  active: vue.toRef(props, 'modelValue'),
22018
22012
  absolute: vue.toRef(props, 'absolute')
22019
22013
  });
22020
- return () => vue.createVNode("div", {
22014
+ useRender(() => vue.createVNode("div", {
22021
22015
  "class": ['v-layout-item', props.class],
22022
22016
  "style": [layoutItemStyles.value, props.style]
22023
- }, [slots.default?.()]);
22017
+ }, [slots.default?.()]));
22018
+ return layoutIsReady;
22024
22019
  }
22025
22020
  });
22026
22021
 
@@ -22127,7 +22122,8 @@
22127
22122
  slots
22128
22123
  } = _ref;
22129
22124
  const {
22130
- mainStyles
22125
+ mainStyles,
22126
+ layoutIsReady
22131
22127
  } = useLayout();
22132
22128
  const {
22133
22129
  ssrBootStyles
@@ -22142,7 +22138,7 @@
22142
22138
  "class": "v-main__scroller"
22143
22139
  }, [slots.default?.()]) : slots.default?.()]
22144
22140
  }));
22145
- return {};
22141
+ return layoutIsReady;
22146
22142
  }
22147
22143
  });
22148
22144
 
@@ -22567,10 +22563,9 @@
22567
22563
  vue.watch(() => props.permanent, val => {
22568
22564
  if (val) isActive.value = true;
22569
22565
  });
22570
- vue.onBeforeMount(() => {
22571
- if (props.modelValue != null || isTemporary.value) return;
22566
+ if (props.modelValue == null && !isTemporary.value) {
22572
22567
  isActive.value = props.permanent || !mobile.value;
22573
- });
22568
+ }
22574
22569
  const {
22575
22570
  isDragging,
22576
22571
  dragProgress,
@@ -22588,7 +22583,8 @@
22588
22583
  });
22589
22584
  const {
22590
22585
  layoutItemStyles,
22591
- layoutItemScrimStyles
22586
+ layoutItemScrimStyles,
22587
+ layoutIsReady
22592
22588
  } = useLayoutItem({
22593
22589
  id: props.name,
22594
22590
  order: vue.computed(() => parseInt(props.order, 10)),
@@ -22672,9 +22668,9 @@
22672
22668
  }, scopeId), null)]
22673
22669
  })]);
22674
22670
  });
22675
- return {
22671
+ return layoutIsReady.then(() => ({
22676
22672
  isStuck
22677
- };
22673
+ }));
22678
22674
  }
22679
22675
  });
22680
22676
 
@@ -26227,7 +26223,7 @@
26227
26223
  goTo
26228
26224
  };
26229
26225
  }
26230
- const version$1 = "3.5.3-dev.2024-02-08";
26226
+ const version$1 = "3.5.3-dev.2024-02-14";
26231
26227
  createVuetify$1.version = version$1;
26232
26228
 
26233
26229
  // Vue's inject() can only be used in setup
@@ -26241,7 +26237,7 @@
26241
26237
 
26242
26238
  /* eslint-disable local-rules/sort-imports */
26243
26239
 
26244
- const version = "3.5.3-dev.2024-02-08";
26240
+ const version = "3.5.3-dev.2024-02-14";
26245
26241
 
26246
26242
  /* eslint-disable local-rules/sort-imports */
26247
26243