@vuetify/nightly 4.0.0-dev-20230421.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 (126) 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 +40 -40
  6. package/dist/json/tags.json +18 -0
  7. package/dist/json/web-types.json +237 -10
  8. package/dist/vuetify-labs.css +1500 -1475
  9. package/dist/vuetify-labs.d.ts +343 -0
  10. package/dist/vuetify-labs.esm.js +221 -10
  11. package/dist/vuetify-labs.esm.js.map +1 -1
  12. package/dist/vuetify-labs.js +221 -10
  13. package/dist/vuetify-labs.min.css +2 -2
  14. package/dist/vuetify.css +9 -9
  15. package/dist/vuetify.d.ts +10 -10
  16. package/dist/vuetify.esm.js +15 -10
  17. package/dist/vuetify.esm.js.map +1 -1
  18. package/dist/vuetify.js +15 -10
  19. package/dist/vuetify.js.map +1 -1
  20. package/dist/vuetify.min.css +2 -2
  21. package/dist/vuetify.min.js +719 -719
  22. package/dist/vuetify.min.js.map +1 -1
  23. package/lib/components/VSlider/slider.mjs +2 -5
  24. package/lib/components/VSlider/slider.mjs.map +1 -1
  25. package/lib/composables/intersectionObserver.mjs +2 -2
  26. package/lib/composables/intersectionObserver.mjs.map +1 -1
  27. package/lib/entry-bundler.mjs +1 -1
  28. package/lib/framework.mjs +1 -1
  29. package/lib/index.d.ts +10 -10
  30. package/lib/labs/VInfiniteScroll/VInfiniteScroll.css +26 -0
  31. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs +215 -0
  32. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -0
  33. package/lib/labs/VInfiniteScroll/VInfiniteScroll.sass +25 -0
  34. package/lib/labs/VInfiniteScroll/_variables.scss +3 -0
  35. package/lib/labs/VInfiniteScroll/index.d.ts +349 -0
  36. package/lib/labs/VInfiniteScroll/index.mjs +2 -0
  37. package/lib/labs/VInfiniteScroll/index.mjs.map +1 -0
  38. package/lib/labs/components.d.ts +343 -2
  39. package/lib/labs/components.mjs +1 -0
  40. package/lib/labs/components.mjs.map +1 -1
  41. package/lib/locale/af.mjs +5 -1
  42. package/lib/locale/af.mjs.map +1 -1
  43. package/lib/locale/ar.mjs +5 -1
  44. package/lib/locale/ar.mjs.map +1 -1
  45. package/lib/locale/az.mjs +5 -1
  46. package/lib/locale/az.mjs.map +1 -1
  47. package/lib/locale/bg.mjs +5 -1
  48. package/lib/locale/bg.mjs.map +1 -1
  49. package/lib/locale/ca.mjs +5 -1
  50. package/lib/locale/ca.mjs.map +1 -1
  51. package/lib/locale/ckb.mjs +5 -1
  52. package/lib/locale/ckb.mjs.map +1 -1
  53. package/lib/locale/cs.mjs +5 -1
  54. package/lib/locale/cs.mjs.map +1 -1
  55. package/lib/locale/da.mjs +5 -1
  56. package/lib/locale/da.mjs.map +1 -1
  57. package/lib/locale/de.mjs +5 -1
  58. package/lib/locale/de.mjs.map +1 -1
  59. package/lib/locale/el.mjs +5 -1
  60. package/lib/locale/el.mjs.map +1 -1
  61. package/lib/locale/en.mjs +5 -1
  62. package/lib/locale/en.mjs.map +1 -1
  63. package/lib/locale/es.mjs +5 -1
  64. package/lib/locale/es.mjs.map +1 -1
  65. package/lib/locale/et.mjs +5 -1
  66. package/lib/locale/et.mjs.map +1 -1
  67. package/lib/locale/fa.mjs +5 -1
  68. package/lib/locale/fa.mjs.map +1 -1
  69. package/lib/locale/fi.mjs +5 -1
  70. package/lib/locale/fi.mjs.map +1 -1
  71. package/lib/locale/fr.mjs +5 -1
  72. package/lib/locale/fr.mjs.map +1 -1
  73. package/lib/locale/he.mjs +5 -1
  74. package/lib/locale/he.mjs.map +1 -1
  75. package/lib/locale/hr.mjs +5 -1
  76. package/lib/locale/hr.mjs.map +1 -1
  77. package/lib/locale/hu.mjs +5 -1
  78. package/lib/locale/hu.mjs.map +1 -1
  79. package/lib/locale/id.mjs +5 -1
  80. package/lib/locale/id.mjs.map +1 -1
  81. package/lib/locale/index.d.ts +168 -0
  82. package/lib/locale/it.mjs +5 -1
  83. package/lib/locale/it.mjs.map +1 -1
  84. package/lib/locale/ja.mjs +5 -1
  85. package/lib/locale/ja.mjs.map +1 -1
  86. package/lib/locale/ko.mjs +5 -1
  87. package/lib/locale/ko.mjs.map +1 -1
  88. package/lib/locale/lt.mjs +5 -1
  89. package/lib/locale/lt.mjs.map +1 -1
  90. package/lib/locale/lv.mjs +5 -1
  91. package/lib/locale/lv.mjs.map +1 -1
  92. package/lib/locale/nl.mjs +5 -1
  93. package/lib/locale/nl.mjs.map +1 -1
  94. package/lib/locale/no.mjs +5 -1
  95. package/lib/locale/no.mjs.map +1 -1
  96. package/lib/locale/pl.mjs +5 -1
  97. package/lib/locale/pl.mjs.map +1 -1
  98. package/lib/locale/pt.mjs +5 -1
  99. package/lib/locale/pt.mjs.map +1 -1
  100. package/lib/locale/ro.mjs +5 -1
  101. package/lib/locale/ro.mjs.map +1 -1
  102. package/lib/locale/ru.mjs +5 -1
  103. package/lib/locale/ru.mjs.map +1 -1
  104. package/lib/locale/sk.mjs +5 -1
  105. package/lib/locale/sk.mjs.map +1 -1
  106. package/lib/locale/sl.mjs +5 -1
  107. package/lib/locale/sl.mjs.map +1 -1
  108. package/lib/locale/sr-Cyrl.mjs +5 -1
  109. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  110. package/lib/locale/sr-Latn.mjs +5 -1
  111. package/lib/locale/sr-Latn.mjs.map +1 -1
  112. package/lib/locale/sv.mjs +5 -1
  113. package/lib/locale/sv.mjs.map +1 -1
  114. package/lib/locale/th.mjs +5 -1
  115. package/lib/locale/th.mjs.map +1 -1
  116. package/lib/locale/tr.mjs +5 -1
  117. package/lib/locale/tr.mjs.map +1 -1
  118. package/lib/locale/uk.mjs +5 -1
  119. package/lib/locale/uk.mjs.map +1 -1
  120. package/lib/locale/vi.mjs +5 -1
  121. package/lib/locale/vi.mjs.map +1 -1
  122. package/lib/locale/zh-Hans.mjs +5 -1
  123. package/lib/locale/zh-Hans.mjs.map +1 -1
  124. package/lib/locale/zh-Hant.mjs +5 -1
  125. package/lib/locale/zh-Hant.mjs.map +1 -1
  126. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v4.0.0-dev-20230421.0
2
+ * Vuetify v4.0.0-dev-20230426.0
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -207,6 +207,10 @@
207
207
  let max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
208
208
  return Math.max(min, Math.min(max, value));
209
209
  }
210
+ function getDecimals(value) {
211
+ const trimmedStr = value.toString().trim();
212
+ return trimmedStr.includes('.') ? trimmedStr.length - trimmedStr.indexOf('.') - 1 : 0;
213
+ }
210
214
  function padEnd(str, length) {
211
215
  let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
212
216
  return str + char.repeat(Math.max(0, length - str.length));
@@ -1935,7 +1939,11 @@
1935
1939
  item: 'Rating {0} of {1}'
1936
1940
  }
1937
1941
  },
1938
- loading: 'Loading...'
1942
+ loading: 'Loading...',
1943
+ infiniteScroll: {
1944
+ loadMore: 'Load more',
1945
+ empty: 'No more'
1946
+ }
1939
1947
  };
1940
1948
 
1941
1949
  const LANG_PREFIX = '$vuetify.';
@@ -4135,14 +4143,14 @@
4135
4143
  });
4136
4144
 
4137
4145
  // Utilities
4138
- function useIntersectionObserver(callback) {
4146
+ function useIntersectionObserver(callback, options) {
4139
4147
  const intersectionRef = vue.ref();
4140
4148
  const isIntersecting = vue.ref(false);
4141
4149
  if (SUPPORTS_INTERSECTION) {
4142
4150
  const observer = new IntersectionObserver(entries => {
4143
4151
  callback?.(entries, observer);
4144
4152
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
4145
- });
4153
+ }, options);
4146
4154
  vue.onBeforeUnmount(() => {
4147
4155
  observer.disconnect();
4148
4156
  });
@@ -12618,10 +12626,7 @@
12618
12626
  const min = vue.computed(() => parseFloat(props.min));
12619
12627
  const max = vue.computed(() => parseFloat(props.max));
12620
12628
  const step = vue.computed(() => +props.step > 0 ? parseFloat(props.step) : 0);
12621
- const decimals = vue.computed(() => {
12622
- const trimmedStep = step.value.toString().trim();
12623
- return trimmedStep.includes('.') ? trimmedStep.length - trimmedStep.indexOf('.') - 1 : 0;
12624
- });
12629
+ const decimals = vue.computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
12625
12630
  function roundValue(value) {
12626
12631
  if (step.value <= 0) return value;
12627
12632
  const clamped = clamp(value, min.value, max.value);
@@ -20640,6 +20645,211 @@
20640
20645
 
20641
20646
  // Types
20642
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
+
20643
20853
  const rootTypes = {
20644
20854
  actions: 'button@2',
20645
20855
  article: 'heading, paragraph',
@@ -20839,6 +21049,7 @@
20839
21049
  VHover: VHover,
20840
21050
  VIcon: VIcon,
20841
21051
  VImg: VImg,
21052
+ VInfiniteScroll: VInfiniteScroll,
20842
21053
  VInput: VInput,
20843
21054
  VItem: VItem,
20844
21055
  VItemGroup: VItemGroup,
@@ -21126,7 +21337,7 @@
21126
21337
  date
21127
21338
  };
21128
21339
  }
21129
- const version$1 = "4.0.0-dev-20230421.0";
21340
+ const version$1 = "4.0.0-dev-20230426.0";
21130
21341
  createVuetify$1.version = version$1;
21131
21342
 
21132
21343
  // Vue's inject() can only be used in setup
@@ -21138,7 +21349,7 @@
21138
21349
  }
21139
21350
  }
21140
21351
 
21141
- const version = "4.0.0-dev-20230421.0";
21352
+ const version = "4.0.0-dev-20230426.0";
21142
21353
 
21143
21354
  const createVuetify = function () {
21144
21355
  let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};