@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.
- package/CHANGELOG.md +3 -2
- package/dist/_component-variables-labs.sass +1 -0
- package/dist/json/attributes.json +56 -4
- package/dist/json/importMap-labs.json +4 -0
- package/dist/json/importMap.json +64 -64
- package/dist/json/tags.json +18 -0
- package/dist/json/web-types.json +237 -10
- package/dist/vuetify-labs.css +1379 -1354
- package/dist/vuetify-labs.d.ts +343 -0
- package/dist/vuetify-labs.esm.js +216 -6
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +216 -6
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +9 -9
- package/dist/vuetify.d.ts +18 -18
- package/dist/vuetify.esm.js +10 -6
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +10 -6
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +7 -7
- package/dist/vuetify.min.js.map +1 -1
- package/lib/composables/intersectionObserver.mjs +2 -2
- package/lib/composables/intersectionObserver.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.ts +18 -18
- package/lib/labs/VInfiniteScroll/VInfiniteScroll.css +26 -0
- package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs +215 -0
- package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -0
- package/lib/labs/VInfiniteScroll/VInfiniteScroll.sass +25 -0
- package/lib/labs/VInfiniteScroll/_variables.scss +3 -0
- package/lib/labs/VInfiniteScroll/index.d.ts +349 -0
- package/lib/labs/VInfiniteScroll/index.mjs +2 -0
- package/lib/labs/VInfiniteScroll/index.mjs.map +1 -0
- package/lib/labs/components.d.ts +343 -2
- package/lib/labs/components.mjs +1 -0
- package/lib/labs/components.mjs.map +1 -1
- package/lib/locale/af.mjs +5 -1
- package/lib/locale/af.mjs.map +1 -1
- package/lib/locale/ar.mjs +5 -1
- package/lib/locale/ar.mjs.map +1 -1
- package/lib/locale/az.mjs +5 -1
- package/lib/locale/az.mjs.map +1 -1
- package/lib/locale/bg.mjs +5 -1
- package/lib/locale/bg.mjs.map +1 -1
- package/lib/locale/ca.mjs +5 -1
- package/lib/locale/ca.mjs.map +1 -1
- package/lib/locale/ckb.mjs +5 -1
- package/lib/locale/ckb.mjs.map +1 -1
- package/lib/locale/cs.mjs +5 -1
- package/lib/locale/cs.mjs.map +1 -1
- package/lib/locale/da.mjs +5 -1
- package/lib/locale/da.mjs.map +1 -1
- package/lib/locale/de.mjs +5 -1
- package/lib/locale/de.mjs.map +1 -1
- package/lib/locale/el.mjs +5 -1
- package/lib/locale/el.mjs.map +1 -1
- package/lib/locale/en.mjs +5 -1
- package/lib/locale/en.mjs.map +1 -1
- package/lib/locale/es.mjs +5 -1
- package/lib/locale/es.mjs.map +1 -1
- package/lib/locale/et.mjs +5 -1
- package/lib/locale/et.mjs.map +1 -1
- package/lib/locale/fa.mjs +5 -1
- package/lib/locale/fa.mjs.map +1 -1
- package/lib/locale/fi.mjs +5 -1
- package/lib/locale/fi.mjs.map +1 -1
- package/lib/locale/fr.mjs +5 -1
- package/lib/locale/fr.mjs.map +1 -1
- package/lib/locale/he.mjs +5 -1
- package/lib/locale/he.mjs.map +1 -1
- package/lib/locale/hr.mjs +5 -1
- package/lib/locale/hr.mjs.map +1 -1
- package/lib/locale/hu.mjs +5 -1
- package/lib/locale/hu.mjs.map +1 -1
- package/lib/locale/id.mjs +5 -1
- package/lib/locale/id.mjs.map +1 -1
- package/lib/locale/index.d.ts +168 -0
- package/lib/locale/it.mjs +5 -1
- package/lib/locale/it.mjs.map +1 -1
- package/lib/locale/ja.mjs +5 -1
- package/lib/locale/ja.mjs.map +1 -1
- package/lib/locale/ko.mjs +5 -1
- package/lib/locale/ko.mjs.map +1 -1
- package/lib/locale/lt.mjs +5 -1
- package/lib/locale/lt.mjs.map +1 -1
- package/lib/locale/lv.mjs +5 -1
- package/lib/locale/lv.mjs.map +1 -1
- package/lib/locale/nl.mjs +5 -1
- package/lib/locale/nl.mjs.map +1 -1
- package/lib/locale/no.mjs +5 -1
- package/lib/locale/no.mjs.map +1 -1
- package/lib/locale/pl.mjs +5 -1
- package/lib/locale/pl.mjs.map +1 -1
- package/lib/locale/pt.mjs +5 -1
- package/lib/locale/pt.mjs.map +1 -1
- package/lib/locale/ro.mjs +5 -1
- package/lib/locale/ro.mjs.map +1 -1
- package/lib/locale/ru.mjs +5 -1
- package/lib/locale/ru.mjs.map +1 -1
- package/lib/locale/sk.mjs +5 -1
- package/lib/locale/sk.mjs.map +1 -1
- package/lib/locale/sl.mjs +5 -1
- package/lib/locale/sl.mjs.map +1 -1
- package/lib/locale/sr-Cyrl.mjs +5 -1
- package/lib/locale/sr-Cyrl.mjs.map +1 -1
- package/lib/locale/sr-Latn.mjs +5 -1
- package/lib/locale/sr-Latn.mjs.map +1 -1
- package/lib/locale/sv.mjs +5 -1
- package/lib/locale/sv.mjs.map +1 -1
- package/lib/locale/th.mjs +5 -1
- package/lib/locale/th.mjs.map +1 -1
- package/lib/locale/tr.mjs +5 -1
- package/lib/locale/tr.mjs.map +1 -1
- package/lib/locale/uk.mjs +5 -1
- package/lib/locale/uk.mjs.map +1 -1
- package/lib/locale/vi.mjs +5 -1
- package/lib/locale/vi.mjs.map +1 -1
- package/lib/locale/zh-Hans.mjs +5 -1
- package/lib/locale/zh-Hans.mjs.map +1 -1
- package/lib/locale/zh-Hant.mjs +5 -1
- package/lib/locale/zh-Hant.mjs.map +1 -1
- package/package.json +1 -1
package/dist/vuetify-labs.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Vuetify v4.0.0-dev-
|
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-
|
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-
|
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] : {};
|