@vuetify/nightly 4.0.0-dev-20230422.0 → 4.0.0-dev-20230426.0

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 (124) hide show
  1. package/CHANGELOG.md +3 -2
  2. package/dist/_component-variables-labs.sass +1 -0
  3. package/dist/json/attributes.json +56 -4
  4. package/dist/json/importMap-labs.json +4 -0
  5. package/dist/json/importMap.json +64 -64
  6. package/dist/json/tags.json +18 -0
  7. package/dist/json/web-types.json +237 -10
  8. package/dist/vuetify-labs.css +1379 -1354
  9. package/dist/vuetify-labs.d.ts +343 -0
  10. package/dist/vuetify-labs.esm.js +216 -6
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +216 -6
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.css +9 -9
  15. package/dist/vuetify.d.ts +18 -18
  16. package/dist/vuetify.esm.js +10 -6
  17. package/dist/vuetify.esm.js.map +1 -1
  18. package/dist/vuetify.js +10 -6
  19. package/dist/vuetify.js.map +1 -1
  20. package/dist/vuetify.min.css +2 -2
  21. package/dist/vuetify.min.js +7 -7
  22. package/dist/vuetify.min.js.map +1 -1
  23. package/lib/composables/intersectionObserver.mjs +2 -2
  24. package/lib/composables/intersectionObserver.mjs.map +1 -1
  25. package/lib/entry-bundler.mjs +1 -1
  26. package/lib/framework.mjs +1 -1
  27. package/lib/index.d.ts +18 -18
  28. package/lib/labs/VInfiniteScroll/VInfiniteScroll.css +26 -0
  29. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs +215 -0
  30. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -0
  31. package/lib/labs/VInfiniteScroll/VInfiniteScroll.sass +25 -0
  32. package/lib/labs/VInfiniteScroll/_variables.scss +3 -0
  33. package/lib/labs/VInfiniteScroll/index.d.ts +349 -0
  34. package/lib/labs/VInfiniteScroll/index.mjs +2 -0
  35. package/lib/labs/VInfiniteScroll/index.mjs.map +1 -0
  36. package/lib/labs/components.d.ts +343 -2
  37. package/lib/labs/components.mjs +1 -0
  38. package/lib/labs/components.mjs.map +1 -1
  39. package/lib/locale/af.mjs +5 -1
  40. package/lib/locale/af.mjs.map +1 -1
  41. package/lib/locale/ar.mjs +5 -1
  42. package/lib/locale/ar.mjs.map +1 -1
  43. package/lib/locale/az.mjs +5 -1
  44. package/lib/locale/az.mjs.map +1 -1
  45. package/lib/locale/bg.mjs +5 -1
  46. package/lib/locale/bg.mjs.map +1 -1
  47. package/lib/locale/ca.mjs +5 -1
  48. package/lib/locale/ca.mjs.map +1 -1
  49. package/lib/locale/ckb.mjs +5 -1
  50. package/lib/locale/ckb.mjs.map +1 -1
  51. package/lib/locale/cs.mjs +5 -1
  52. package/lib/locale/cs.mjs.map +1 -1
  53. package/lib/locale/da.mjs +5 -1
  54. package/lib/locale/da.mjs.map +1 -1
  55. package/lib/locale/de.mjs +5 -1
  56. package/lib/locale/de.mjs.map +1 -1
  57. package/lib/locale/el.mjs +5 -1
  58. package/lib/locale/el.mjs.map +1 -1
  59. package/lib/locale/en.mjs +5 -1
  60. package/lib/locale/en.mjs.map +1 -1
  61. package/lib/locale/es.mjs +5 -1
  62. package/lib/locale/es.mjs.map +1 -1
  63. package/lib/locale/et.mjs +5 -1
  64. package/lib/locale/et.mjs.map +1 -1
  65. package/lib/locale/fa.mjs +5 -1
  66. package/lib/locale/fa.mjs.map +1 -1
  67. package/lib/locale/fi.mjs +5 -1
  68. package/lib/locale/fi.mjs.map +1 -1
  69. package/lib/locale/fr.mjs +5 -1
  70. package/lib/locale/fr.mjs.map +1 -1
  71. package/lib/locale/he.mjs +5 -1
  72. package/lib/locale/he.mjs.map +1 -1
  73. package/lib/locale/hr.mjs +5 -1
  74. package/lib/locale/hr.mjs.map +1 -1
  75. package/lib/locale/hu.mjs +5 -1
  76. package/lib/locale/hu.mjs.map +1 -1
  77. package/lib/locale/id.mjs +5 -1
  78. package/lib/locale/id.mjs.map +1 -1
  79. package/lib/locale/index.d.ts +168 -0
  80. package/lib/locale/it.mjs +5 -1
  81. package/lib/locale/it.mjs.map +1 -1
  82. package/lib/locale/ja.mjs +5 -1
  83. package/lib/locale/ja.mjs.map +1 -1
  84. package/lib/locale/ko.mjs +5 -1
  85. package/lib/locale/ko.mjs.map +1 -1
  86. package/lib/locale/lt.mjs +5 -1
  87. package/lib/locale/lt.mjs.map +1 -1
  88. package/lib/locale/lv.mjs +5 -1
  89. package/lib/locale/lv.mjs.map +1 -1
  90. package/lib/locale/nl.mjs +5 -1
  91. package/lib/locale/nl.mjs.map +1 -1
  92. package/lib/locale/no.mjs +5 -1
  93. package/lib/locale/no.mjs.map +1 -1
  94. package/lib/locale/pl.mjs +5 -1
  95. package/lib/locale/pl.mjs.map +1 -1
  96. package/lib/locale/pt.mjs +5 -1
  97. package/lib/locale/pt.mjs.map +1 -1
  98. package/lib/locale/ro.mjs +5 -1
  99. package/lib/locale/ro.mjs.map +1 -1
  100. package/lib/locale/ru.mjs +5 -1
  101. package/lib/locale/ru.mjs.map +1 -1
  102. package/lib/locale/sk.mjs +5 -1
  103. package/lib/locale/sk.mjs.map +1 -1
  104. package/lib/locale/sl.mjs +5 -1
  105. package/lib/locale/sl.mjs.map +1 -1
  106. package/lib/locale/sr-Cyrl.mjs +5 -1
  107. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  108. package/lib/locale/sr-Latn.mjs +5 -1
  109. package/lib/locale/sr-Latn.mjs.map +1 -1
  110. package/lib/locale/sv.mjs +5 -1
  111. package/lib/locale/sv.mjs.map +1 -1
  112. package/lib/locale/th.mjs +5 -1
  113. package/lib/locale/th.mjs.map +1 -1
  114. package/lib/locale/tr.mjs +5 -1
  115. package/lib/locale/tr.mjs.map +1 -1
  116. package/lib/locale/uk.mjs +5 -1
  117. package/lib/locale/uk.mjs.map +1 -1
  118. package/lib/locale/vi.mjs +5 -1
  119. package/lib/locale/vi.mjs.map +1 -1
  120. package/lib/locale/zh-Hans.mjs +5 -1
  121. package/lib/locale/zh-Hans.mjs.map +1 -1
  122. package/lib/locale/zh-Hant.mjs +5 -1
  123. package/lib/locale/zh-Hant.mjs.map +1 -1
  124. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v4.0.0-dev-20230422.0
2
+ * Vuetify v4.0.0-dev-20230426.0
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -1939,7 +1939,11 @@
1939
1939
  item: 'Rating {0} of {1}'
1940
1940
  }
1941
1941
  },
1942
- loading: 'Loading...'
1942
+ loading: 'Loading...',
1943
+ infiniteScroll: {
1944
+ loadMore: 'Load more',
1945
+ empty: 'No more'
1946
+ }
1943
1947
  };
1944
1948
 
1945
1949
  const LANG_PREFIX = '$vuetify.';
@@ -4139,14 +4143,14 @@
4139
4143
  });
4140
4144
 
4141
4145
  // Utilities
4142
- function useIntersectionObserver(callback) {
4146
+ function useIntersectionObserver(callback, options) {
4143
4147
  const intersectionRef = vue.ref();
4144
4148
  const isIntersecting = vue.ref(false);
4145
4149
  if (SUPPORTS_INTERSECTION) {
4146
4150
  const observer = new IntersectionObserver(entries => {
4147
4151
  callback?.(entries, observer);
4148
4152
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
4149
- });
4153
+ }, options);
4150
4154
  vue.onBeforeUnmount(() => {
4151
4155
  observer.disconnect();
4152
4156
  });
@@ -20641,6 +20645,211 @@
20641
20645
 
20642
20646
  // Types
20643
20647
 
20648
+ const VInfiniteScrollIntersect = defineComponent({
20649
+ name: 'VInfiniteScrollIntersect',
20650
+ props: {
20651
+ side: {
20652
+ type: String,
20653
+ required: true
20654
+ },
20655
+ rootRef: null,
20656
+ rootMargin: String
20657
+ },
20658
+ emits: {
20659
+ intersect: side => true
20660
+ },
20661
+ setup(props, _ref) {
20662
+ let {
20663
+ emit
20664
+ } = _ref;
20665
+ const {
20666
+ intersectionRef,
20667
+ isIntersecting
20668
+ } = useIntersectionObserver(entries => {}, props.rootMargin ? {
20669
+ root: props.rootRef,
20670
+ rootMargin: props.rootMargin
20671
+ } : undefined);
20672
+ vue.watch(isIntersecting, async val => {
20673
+ if (val) emit('intersect', props.side);
20674
+ });
20675
+ useRender(() => vue.createVNode("div", {
20676
+ "class": "v-infinite-scroll-intersect",
20677
+ "ref": intersectionRef
20678
+ }, [vue.createTextVNode("\xA0")]));
20679
+ return {};
20680
+ }
20681
+ });
20682
+ const VInfiniteScroll = genericComponent()({
20683
+ name: 'VInfiniteScroll',
20684
+ props: {
20685
+ color: String,
20686
+ direction: {
20687
+ type: String,
20688
+ default: 'vertical',
20689
+ validator: v => ['vertical', 'horizontal'].includes(v)
20690
+ },
20691
+ side: {
20692
+ type: String,
20693
+ default: 'end',
20694
+ validator: v => ['start', 'end', 'both'].includes(v)
20695
+ },
20696
+ mode: {
20697
+ type: String,
20698
+ default: 'intersect',
20699
+ validator: v => ['intersect', 'manual'].includes(v)
20700
+ },
20701
+ margin: [Number, String],
20702
+ loadMoreText: {
20703
+ type: String,
20704
+ default: '$vuetify.infiniteScroll.loadMore'
20705
+ },
20706
+ emptyText: {
20707
+ type: String,
20708
+ default: '$vuetify.infiniteScroll.empty'
20709
+ },
20710
+ ...makeDimensionProps()
20711
+ },
20712
+ emits: {
20713
+ load: options => true
20714
+ },
20715
+ setup(props, _ref2) {
20716
+ let {
20717
+ slots,
20718
+ emit
20719
+ } = _ref2;
20720
+ const rootEl = vue.ref();
20721
+ const startStatus = vue.ref('ok');
20722
+ const endStatus = vue.ref('ok');
20723
+ const margin = vue.computed(() => convertToUnit(props.margin));
20724
+ function setScrollAmount(amount) {
20725
+ if (!rootEl.value) return;
20726
+ const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
20727
+ rootEl.value[property] = amount;
20728
+ }
20729
+ function getScrollAmount() {
20730
+ if (!rootEl.value) return 0;
20731
+ const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
20732
+ return rootEl.value[property];
20733
+ }
20734
+ function getScrollSize() {
20735
+ if (!rootEl.value) return 0;
20736
+ const property = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth';
20737
+ return rootEl.value[property];
20738
+ }
20739
+ function getContainerSize() {
20740
+ if (!rootEl.value) return 0;
20741
+ const property = props.direction === 'vertical' ? 'clientHeight' : 'clientWidth';
20742
+ return rootEl.value[property];
20743
+ }
20744
+ vue.onMounted(() => {
20745
+ if (!rootEl.value) return;
20746
+ if (props.side === 'start') {
20747
+ setScrollAmount(getScrollSize());
20748
+ } else if (props.side === 'both') {
20749
+ setScrollAmount(getScrollSize() / 2 - getContainerSize() / 2);
20750
+ }
20751
+ });
20752
+ function setStatus(side, status) {
20753
+ if (side === 'start') {
20754
+ startStatus.value = status;
20755
+ } else if (side === 'end') {
20756
+ endStatus.value = status;
20757
+ }
20758
+ }
20759
+ function getStatus(side) {
20760
+ return side === 'start' ? startStatus.value : endStatus.value;
20761
+ }
20762
+ let previousScrollSize = 0;
20763
+ function handleIntersect(side) {
20764
+ const status = getStatus(side);
20765
+ if (!rootEl.value || status === 'loading') return;
20766
+ previousScrollSize = getScrollSize();
20767
+ setStatus(side, 'loading');
20768
+ function done(status) {
20769
+ setStatus(side, status);
20770
+ vue.nextTick(() => {
20771
+ if (status === 'ok' && side === 'start') {
20772
+ setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());
20773
+ }
20774
+ });
20775
+ }
20776
+ emit('load', {
20777
+ side,
20778
+ done
20779
+ });
20780
+ }
20781
+ const {
20782
+ t
20783
+ } = useLocale();
20784
+ function renderSide(side, status) {
20785
+ if (props.side !== side && props.side !== 'both') return;
20786
+ const onClick = () => handleIntersect(side);
20787
+ const slotProps = {
20788
+ side,
20789
+ props: {
20790
+ onClick,
20791
+ color: props.color
20792
+ }
20793
+ };
20794
+ if (status === 'error') return slots.error?.(slotProps);
20795
+ if (status === 'empty') return slots.empty?.(slotProps) ?? vue.createVNode("div", null, [t(props.emptyText)]);
20796
+ if (props.mode === 'manual') {
20797
+ if (status === 'loading') {
20798
+ return slots.loading?.(slotProps) ?? vue.createVNode(VProgressCircular, {
20799
+ "indeterminate": true,
20800
+ "color": props.color
20801
+ }, null);
20802
+ }
20803
+ return slots['load-more']?.(slotProps) ?? vue.createVNode(VBtn, {
20804
+ "variant": "outlined",
20805
+ "color": props.color,
20806
+ "onClick": onClick
20807
+ }, {
20808
+ default: () => [t(props.loadMoreText)]
20809
+ });
20810
+ }
20811
+ return slots.loading?.(slotProps) ?? vue.createVNode(VProgressCircular, {
20812
+ "indeterminate": true,
20813
+ "color": props.color
20814
+ }, null);
20815
+ }
20816
+ const {
20817
+ dimensionStyles
20818
+ } = useDimension(props);
20819
+ useRender(() => {
20820
+ const hasStartIntersect = props.side === 'start' || props.side === 'both';
20821
+ const hasEndIntersect = props.side === 'end' || props.side === 'both';
20822
+ const intersectMode = props.mode === 'intersect';
20823
+ return vue.createVNode("div", {
20824
+ "ref": rootEl,
20825
+ "class": ['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {
20826
+ 'v-infinite-scroll--start': hasStartIntersect,
20827
+ 'v-infinite-scroll--end': hasEndIntersect
20828
+ }],
20829
+ "style": dimensionStyles.value
20830
+ }, [vue.createVNode("div", {
20831
+ "class": "v-infinite-scroll__side"
20832
+ }, [renderSide('start', startStatus.value)]), rootEl.value && hasStartIntersect && intersectMode && vue.createVNode(VInfiniteScrollIntersect, {
20833
+ "key": "start",
20834
+ "side": "start",
20835
+ "onIntersect": handleIntersect,
20836
+ "rootRef": rootEl.value,
20837
+ "rootMargin": margin.value
20838
+ }, null), slots.default?.(), rootEl.value && hasEndIntersect && intersectMode && vue.createVNode(VInfiniteScrollIntersect, {
20839
+ "key": "end",
20840
+ "side": "end",
20841
+ "onIntersect": handleIntersect,
20842
+ "rootRef": rootEl.value,
20843
+ "rootMargin": margin.value
20844
+ }, null), vue.createVNode("div", {
20845
+ "class": "v-infinite-scroll__side"
20846
+ }, [renderSide('end', endStatus.value)])]);
20847
+ });
20848
+ }
20849
+ });
20850
+
20851
+ // Types
20852
+
20644
20853
  const rootTypes = {
20645
20854
  actions: 'button@2',
20646
20855
  article: 'heading, paragraph',
@@ -20840,6 +21049,7 @@
20840
21049
  VHover: VHover,
20841
21050
  VIcon: VIcon,
20842
21051
  VImg: VImg,
21052
+ VInfiniteScroll: VInfiniteScroll,
20843
21053
  VInput: VInput,
20844
21054
  VItem: VItem,
20845
21055
  VItemGroup: VItemGroup,
@@ -21127,7 +21337,7 @@
21127
21337
  date
21128
21338
  };
21129
21339
  }
21130
- const version$1 = "4.0.0-dev-20230422.0";
21340
+ const version$1 = "4.0.0-dev-20230426.0";
21131
21341
  createVuetify$1.version = version$1;
21132
21342
 
21133
21343
  // Vue's inject() can only be used in setup
@@ -21139,7 +21349,7 @@
21139
21349
  }
21140
21350
  }
21141
21351
 
21142
- const version = "4.0.0-dev-20230422.0";
21352
+ const version = "4.0.0-dev-20230426.0";
21143
21353
 
21144
21354
  const createVuetify = function () {
21145
21355
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};