@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
@@ -1,14 +1,14 @@
|
|
1
1
|
// Utilities
|
2
2
|
import { onBeforeUnmount, ref, watch } from 'vue';
|
3
3
|
import { SUPPORTS_INTERSECTION } from "../util/index.mjs";
|
4
|
-
export function useIntersectionObserver(callback) {
|
4
|
+
export function useIntersectionObserver(callback, options) {
|
5
5
|
const intersectionRef = ref();
|
6
6
|
const isIntersecting = ref(false);
|
7
7
|
if (SUPPORTS_INTERSECTION) {
|
8
8
|
const observer = new IntersectionObserver(entries => {
|
9
9
|
callback?.(entries, observer);
|
10
10
|
isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
|
11
|
-
});
|
11
|
+
}, options);
|
12
12
|
onBeforeUnmount(() => {
|
13
13
|
observer.disconnect();
|
14
14
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"intersectionObserver.mjs","names":["onBeforeUnmount","ref","watch","SUPPORTS_INTERSECTION","useIntersectionObserver","callback","intersectionRef","isIntersecting","observer","IntersectionObserver","entries","value","find","entry","disconnect","newValue","oldValue","unobserve","observe","flush"],"sources":["../../src/composables/intersectionObserver.ts"],"sourcesContent":["// Utilities\nimport { onBeforeUnmount, ref, watch } from 'vue'\nimport { SUPPORTS_INTERSECTION } from '@/util'\n\nexport function useIntersectionObserver (callback?: IntersectionObserverCallback) {\n const intersectionRef = ref<HTMLElement>()\n const isIntersecting = ref(false)\n\n if (SUPPORTS_INTERSECTION) {\n const observer = new IntersectionObserver((entries: IntersectionObserverEntry[]) => {\n callback?.(entries, observer)\n\n isIntersecting.value = !!entries.find(entry => entry.isIntersecting)\n })\n\n onBeforeUnmount(() => {\n observer.disconnect()\n })\n\n watch(intersectionRef, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(oldValue)\n isIntersecting.value = false\n }\n\n if (newValue) observer.observe(newValue)\n }, {\n flush: 'post',\n })\n }\n\n return { intersectionRef, isIntersecting }\n}\n"],"mappings":"AAAA;AACA,SAASA,eAAe,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACxCC,qBAAqB;AAE9B,OAAO,SAASC,uBAAuBA,CAAEC,QAAuC,EAAE;
|
1
|
+
{"version":3,"file":"intersectionObserver.mjs","names":["onBeforeUnmount","ref","watch","SUPPORTS_INTERSECTION","useIntersectionObserver","callback","options","intersectionRef","isIntersecting","observer","IntersectionObserver","entries","value","find","entry","disconnect","newValue","oldValue","unobserve","observe","flush"],"sources":["../../src/composables/intersectionObserver.ts"],"sourcesContent":["// Utilities\nimport { onBeforeUnmount, ref, watch } from 'vue'\nimport { SUPPORTS_INTERSECTION } from '@/util'\n\nexport function useIntersectionObserver (callback?: IntersectionObserverCallback, options?: IntersectionObserverInit) {\n const intersectionRef = ref<HTMLElement>()\n const isIntersecting = ref(false)\n\n if (SUPPORTS_INTERSECTION) {\n const observer = new IntersectionObserver((entries: IntersectionObserverEntry[]) => {\n callback?.(entries, observer)\n\n isIntersecting.value = !!entries.find(entry => entry.isIntersecting)\n }, options)\n\n onBeforeUnmount(() => {\n observer.disconnect()\n })\n\n watch(intersectionRef, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(oldValue)\n isIntersecting.value = false\n }\n\n if (newValue) observer.observe(newValue)\n }, {\n flush: 'post',\n })\n }\n\n return { intersectionRef, isIntersecting }\n}\n"],"mappings":"AAAA;AACA,SAASA,eAAe,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACxCC,qBAAqB;AAE9B,OAAO,SAASC,uBAAuBA,CAAEC,QAAuC,EAAEC,OAAkC,EAAE;EACpH,MAAMC,eAAe,GAAGN,GAAG,EAAe;EAC1C,MAAMO,cAAc,GAAGP,GAAG,CAAC,KAAK,CAAC;EAEjC,IAAIE,qBAAqB,EAAE;IACzB,MAAMM,QAAQ,GAAG,IAAIC,oBAAoB,CAAEC,OAAoC,IAAK;MAClFN,QAAQ,GAAGM,OAAO,EAAEF,QAAQ,CAAC;MAE7BD,cAAc,CAACI,KAAK,GAAG,CAAC,CAACD,OAAO,CAACE,IAAI,CAACC,KAAK,IAAIA,KAAK,CAACN,cAAc,CAAC;IACtE,CAAC,EAAEF,OAAO,CAAC;IAEXN,eAAe,CAAC,MAAM;MACpBS,QAAQ,CAACM,UAAU,EAAE;IACvB,CAAC,CAAC;IAEFb,KAAK,CAACK,eAAe,EAAE,CAACS,QAAQ,EAAEC,QAAQ,KAAK;MAC7C,IAAIA,QAAQ,EAAE;QACZR,QAAQ,CAACS,SAAS,CAACD,QAAQ,CAAC;QAC5BT,cAAc,CAACI,KAAK,GAAG,KAAK;MAC9B;MAEA,IAAII,QAAQ,EAAEP,QAAQ,CAACU,OAAO,CAACH,QAAQ,CAAC;IAC1C,CAAC,EAAE;MACDI,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;EAEA,OAAO;IAAEb,eAAe;IAAEC;EAAe,CAAC;AAC5C"}
|
package/lib/entry-bundler.mjs
CHANGED
@@ -10,7 +10,7 @@ export const createVuetify = function () {
|
|
10
10
|
...options
|
11
11
|
});
|
12
12
|
};
|
13
|
-
export const version = "4.0.0-dev-
|
13
|
+
export const version = "4.0.0-dev-20230426.0";
|
14
14
|
createVuetify.version = version;
|
15
15
|
export { components, directives };
|
16
16
|
export * from "./composables/index.mjs";
|
package/lib/framework.mjs
CHANGED
package/lib/index.d.ts
CHANGED
@@ -362,16 +362,16 @@ declare module '@vue/runtime-core' {
|
|
362
362
|
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
363
363
|
VAvatar: typeof import('vuetify/components')['VAvatar']
|
364
364
|
VBadge: typeof import('vuetify/components')['VBadge']
|
365
|
-
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
366
365
|
VBanner: typeof import('vuetify/components')['VBanner']
|
367
366
|
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
368
367
|
VBannerText: typeof import('vuetify/components')['VBannerText']
|
369
|
-
|
368
|
+
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
370
369
|
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
|
371
370
|
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
|
372
371
|
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
|
373
|
-
|
372
|
+
VBtn: typeof import('vuetify/components')['VBtn']
|
374
373
|
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
374
|
+
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
|
375
375
|
VCard: typeof import('vuetify/components')['VCard']
|
376
376
|
VCardActions: typeof import('vuetify/components')['VCardActions']
|
377
377
|
VCardItem: typeof import('vuetify/components')['VCardItem']
|
@@ -380,22 +380,22 @@ declare module '@vue/runtime-core' {
|
|
380
380
|
VCardTitle: typeof import('vuetify/components')['VCardTitle']
|
381
381
|
VCarousel: typeof import('vuetify/components')['VCarousel']
|
382
382
|
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
383
|
-
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
384
383
|
VCheckbox: typeof import('vuetify/components')['VCheckbox']
|
385
384
|
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
|
385
|
+
VChip: typeof import('vuetify/components')['VChip']
|
386
|
+
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
386
387
|
VCode: typeof import('vuetify/components')['VCode']
|
387
388
|
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
388
|
-
VChip: typeof import('vuetify/components')['VChip']
|
389
389
|
VCombobox: typeof import('vuetify/components')['VCombobox']
|
390
390
|
VCounter: typeof import('vuetify/components')['VCounter']
|
391
391
|
VDialog: typeof import('vuetify/components')['VDialog']
|
392
392
|
VDivider: typeof import('vuetify/components')['VDivider']
|
393
|
-
VField: typeof import('vuetify/components')['VField']
|
394
|
-
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
395
393
|
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
|
396
394
|
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
|
397
395
|
VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
|
398
396
|
VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
|
397
|
+
VField: typeof import('vuetify/components')['VField']
|
398
|
+
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
399
399
|
VFileInput: typeof import('vuetify/components')['VFileInput']
|
400
400
|
VFooter: typeof import('vuetify/components')['VFooter']
|
401
401
|
VIcon: typeof import('vuetify/components')['VIcon']
|
@@ -409,7 +409,6 @@ declare module '@vue/runtime-core' {
|
|
409
409
|
VItem: typeof import('vuetify/components')['VItem']
|
410
410
|
VKbd: typeof import('vuetify/components')['VKbd']
|
411
411
|
VLabel: typeof import('vuetify/components')['VLabel']
|
412
|
-
VMain: typeof import('vuetify/components')['VMain']
|
413
412
|
VList: typeof import('vuetify/components')['VList']
|
414
413
|
VListGroup: typeof import('vuetify/components')['VListGroup']
|
415
414
|
VListImg: typeof import('vuetify/components')['VListImg']
|
@@ -419,25 +418,24 @@ declare module '@vue/runtime-core' {
|
|
419
418
|
VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
|
420
419
|
VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
|
421
420
|
VListSubheader: typeof import('vuetify/components')['VListSubheader']
|
421
|
+
VMain: typeof import('vuetify/components')['VMain']
|
422
422
|
VMenu: typeof import('vuetify/components')['VMenu']
|
423
|
-
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
424
423
|
VMessages: typeof import('vuetify/components')['VMessages']
|
424
|
+
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
425
425
|
VOverlay: typeof import('vuetify/components')['VOverlay']
|
426
|
-
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
427
426
|
VPagination: typeof import('vuetify/components')['VPagination']
|
427
|
+
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
428
428
|
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
429
429
|
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
430
430
|
VRating: typeof import('vuetify/components')['VRating']
|
431
431
|
VSelect: typeof import('vuetify/components')['VSelect']
|
432
|
-
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
433
|
-
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
434
|
-
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
435
432
|
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
433
|
+
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
436
434
|
VSheet: typeof import('vuetify/components')['VSheet']
|
437
435
|
VSlider: typeof import('vuetify/components')['VSlider']
|
438
436
|
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
439
|
-
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
440
437
|
VSwitch: typeof import('vuetify/components')['VSwitch']
|
438
|
+
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
441
439
|
VTabs: typeof import('vuetify/components')['VTabs']
|
442
440
|
VTab: typeof import('vuetify/components')['VTab']
|
443
441
|
VTable: typeof import('vuetify/components')['VTable']
|
@@ -452,22 +450,23 @@ declare module '@vue/runtime-core' {
|
|
452
450
|
VWindow: typeof import('vuetify/components')['VWindow']
|
453
451
|
VWindowItem: typeof import('vuetify/components')['VWindowItem']
|
454
452
|
VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
|
455
|
-
VHover: typeof import('vuetify/components')['VHover']
|
456
453
|
VForm: typeof import('vuetify/components')['VForm']
|
457
454
|
VContainer: typeof import('vuetify/components')['VContainer']
|
458
455
|
VCol: typeof import('vuetify/components')['VCol']
|
459
456
|
VRow: typeof import('vuetify/components')['VRow']
|
460
457
|
VSpacer: typeof import('vuetify/components')['VSpacer']
|
461
|
-
|
458
|
+
VHover: typeof import('vuetify/components')['VHover']
|
462
459
|
VLayout: typeof import('vuetify/components')['VLayout']
|
463
460
|
VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
|
461
|
+
VLazy: typeof import('vuetify/components')['VLazy']
|
464
462
|
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
465
463
|
VNoSsr: typeof import('vuetify/components')['VNoSsr']
|
466
464
|
VParallax: typeof import('vuetify/components')['VParallax']
|
467
465
|
VRadio: typeof import('vuetify/components')['VRadio']
|
468
|
-
VResponsive: typeof import('vuetify/components')['VResponsive']
|
469
466
|
VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
|
467
|
+
VResponsive: typeof import('vuetify/components')['VResponsive']
|
470
468
|
VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
|
469
|
+
VValidation: typeof import('vuetify/components')['VValidation']
|
471
470
|
VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
|
472
471
|
VFabTransition: typeof import('vuetify/components')['VFabTransition']
|
473
472
|
VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
|
@@ -485,6 +484,7 @@ declare module '@vue/runtime-core' {
|
|
485
484
|
VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
|
486
485
|
VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
|
487
486
|
VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
|
488
|
-
|
487
|
+
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
488
|
+
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
489
489
|
}
|
490
490
|
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
.v-infinite-scroll--horizontal {
|
2
|
+
display: flex;
|
3
|
+
flex-direction: row;
|
4
|
+
overflow-x: auto;
|
5
|
+
}
|
6
|
+
.v-infinite-scroll--horizontal .v-infinite-scroll-intersect {
|
7
|
+
height: 100%;
|
8
|
+
width: 1px;
|
9
|
+
}
|
10
|
+
|
11
|
+
.v-infinite-scroll--vertical {
|
12
|
+
display: flex;
|
13
|
+
flex-direction: column;
|
14
|
+
overflow-y: auto;
|
15
|
+
}
|
16
|
+
.v-infinite-scroll--vertical .v-infinite-scroll-intersect {
|
17
|
+
height: 1px;
|
18
|
+
width: 100%;
|
19
|
+
}
|
20
|
+
|
21
|
+
.v-infinite-scroll__side {
|
22
|
+
align-items: center;
|
23
|
+
display: flex;
|
24
|
+
justify-content: center;
|
25
|
+
padding: 8px;
|
26
|
+
}
|
@@ -0,0 +1,215 @@
|
|
1
|
+
import { createVNode as _createVNode, createTextVNode as _createTextVNode } from "vue";
|
2
|
+
// Styles
|
3
|
+
import "./VInfiniteScroll.css";
|
4
|
+
|
5
|
+
// Components
|
6
|
+
import { VBtn } from "../../components/VBtn/index.mjs";
|
7
|
+
import { VProgressCircular } from "../../components/VProgressCircular/index.mjs"; // Composables
|
8
|
+
import { makeDimensionProps, useDimension } from "../../composables/dimensions.mjs";
|
9
|
+
import { useIntersectionObserver } from "../../composables/intersectionObserver.mjs";
|
10
|
+
import { useLocale } from "../../composables/locale.mjs"; // Utilities
|
11
|
+
import { computed, nextTick, onMounted, ref, watch } from 'vue';
|
12
|
+
import { convertToUnit, defineComponent, genericComponent, useRender } from "../../util/index.mjs"; // Types
|
13
|
+
export const VInfiniteScrollIntersect = defineComponent({
|
14
|
+
name: 'VInfiniteScrollIntersect',
|
15
|
+
props: {
|
16
|
+
side: {
|
17
|
+
type: String,
|
18
|
+
required: true
|
19
|
+
},
|
20
|
+
rootRef: null,
|
21
|
+
rootMargin: String
|
22
|
+
},
|
23
|
+
emits: {
|
24
|
+
intersect: side => true
|
25
|
+
},
|
26
|
+
setup(props, _ref) {
|
27
|
+
let {
|
28
|
+
emit
|
29
|
+
} = _ref;
|
30
|
+
const {
|
31
|
+
intersectionRef,
|
32
|
+
isIntersecting
|
33
|
+
} = useIntersectionObserver(entries => {}, props.rootMargin ? {
|
34
|
+
root: props.rootRef,
|
35
|
+
rootMargin: props.rootMargin
|
36
|
+
} : undefined);
|
37
|
+
watch(isIntersecting, async val => {
|
38
|
+
if (val) emit('intersect', props.side);
|
39
|
+
});
|
40
|
+
useRender(() => _createVNode("div", {
|
41
|
+
"class": "v-infinite-scroll-intersect",
|
42
|
+
"ref": intersectionRef
|
43
|
+
}, [_createTextVNode("\xA0")]));
|
44
|
+
return {};
|
45
|
+
}
|
46
|
+
});
|
47
|
+
export const VInfiniteScroll = genericComponent()({
|
48
|
+
name: 'VInfiniteScroll',
|
49
|
+
props: {
|
50
|
+
color: String,
|
51
|
+
direction: {
|
52
|
+
type: String,
|
53
|
+
default: 'vertical',
|
54
|
+
validator: v => ['vertical', 'horizontal'].includes(v)
|
55
|
+
},
|
56
|
+
side: {
|
57
|
+
type: String,
|
58
|
+
default: 'end',
|
59
|
+
validator: v => ['start', 'end', 'both'].includes(v)
|
60
|
+
},
|
61
|
+
mode: {
|
62
|
+
type: String,
|
63
|
+
default: 'intersect',
|
64
|
+
validator: v => ['intersect', 'manual'].includes(v)
|
65
|
+
},
|
66
|
+
margin: [Number, String],
|
67
|
+
loadMoreText: {
|
68
|
+
type: String,
|
69
|
+
default: '$vuetify.infiniteScroll.loadMore'
|
70
|
+
},
|
71
|
+
emptyText: {
|
72
|
+
type: String,
|
73
|
+
default: '$vuetify.infiniteScroll.empty'
|
74
|
+
},
|
75
|
+
...makeDimensionProps()
|
76
|
+
},
|
77
|
+
emits: {
|
78
|
+
load: options => true
|
79
|
+
},
|
80
|
+
setup(props, _ref2) {
|
81
|
+
let {
|
82
|
+
slots,
|
83
|
+
emit
|
84
|
+
} = _ref2;
|
85
|
+
const rootEl = ref();
|
86
|
+
const startStatus = ref('ok');
|
87
|
+
const endStatus = ref('ok');
|
88
|
+
const margin = computed(() => convertToUnit(props.margin));
|
89
|
+
function setScrollAmount(amount) {
|
90
|
+
if (!rootEl.value) return;
|
91
|
+
const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
|
92
|
+
rootEl.value[property] = amount;
|
93
|
+
}
|
94
|
+
function getScrollAmount() {
|
95
|
+
if (!rootEl.value) return 0;
|
96
|
+
const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
|
97
|
+
return rootEl.value[property];
|
98
|
+
}
|
99
|
+
function getScrollSize() {
|
100
|
+
if (!rootEl.value) return 0;
|
101
|
+
const property = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth';
|
102
|
+
return rootEl.value[property];
|
103
|
+
}
|
104
|
+
function getContainerSize() {
|
105
|
+
if (!rootEl.value) return 0;
|
106
|
+
const property = props.direction === 'vertical' ? 'clientHeight' : 'clientWidth';
|
107
|
+
return rootEl.value[property];
|
108
|
+
}
|
109
|
+
onMounted(() => {
|
110
|
+
if (!rootEl.value) return;
|
111
|
+
if (props.side === 'start') {
|
112
|
+
setScrollAmount(getScrollSize());
|
113
|
+
} else if (props.side === 'both') {
|
114
|
+
setScrollAmount(getScrollSize() / 2 - getContainerSize() / 2);
|
115
|
+
}
|
116
|
+
});
|
117
|
+
function setStatus(side, status) {
|
118
|
+
if (side === 'start') {
|
119
|
+
startStatus.value = status;
|
120
|
+
} else if (side === 'end') {
|
121
|
+
endStatus.value = status;
|
122
|
+
}
|
123
|
+
}
|
124
|
+
function getStatus(side) {
|
125
|
+
return side === 'start' ? startStatus.value : endStatus.value;
|
126
|
+
}
|
127
|
+
let previousScrollSize = 0;
|
128
|
+
function handleIntersect(side) {
|
129
|
+
const status = getStatus(side);
|
130
|
+
if (!rootEl.value || status === 'loading') return;
|
131
|
+
previousScrollSize = getScrollSize();
|
132
|
+
setStatus(side, 'loading');
|
133
|
+
function done(status) {
|
134
|
+
setStatus(side, status);
|
135
|
+
nextTick(() => {
|
136
|
+
if (status === 'ok' && side === 'start') {
|
137
|
+
setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount());
|
138
|
+
}
|
139
|
+
});
|
140
|
+
}
|
141
|
+
emit('load', {
|
142
|
+
side,
|
143
|
+
done
|
144
|
+
});
|
145
|
+
}
|
146
|
+
const {
|
147
|
+
t
|
148
|
+
} = useLocale();
|
149
|
+
function renderSide(side, status) {
|
150
|
+
if (props.side !== side && props.side !== 'both') return;
|
151
|
+
const onClick = () => handleIntersect(side);
|
152
|
+
const slotProps = {
|
153
|
+
side,
|
154
|
+
props: {
|
155
|
+
onClick,
|
156
|
+
color: props.color
|
157
|
+
}
|
158
|
+
};
|
159
|
+
if (status === 'error') return slots.error?.(slotProps);
|
160
|
+
if (status === 'empty') return slots.empty?.(slotProps) ?? _createVNode("div", null, [t(props.emptyText)]);
|
161
|
+
if (props.mode === 'manual') {
|
162
|
+
if (status === 'loading') {
|
163
|
+
return slots.loading?.(slotProps) ?? _createVNode(VProgressCircular, {
|
164
|
+
"indeterminate": true,
|
165
|
+
"color": props.color
|
166
|
+
}, null);
|
167
|
+
}
|
168
|
+
return slots['load-more']?.(slotProps) ?? _createVNode(VBtn, {
|
169
|
+
"variant": "outlined",
|
170
|
+
"color": props.color,
|
171
|
+
"onClick": onClick
|
172
|
+
}, {
|
173
|
+
default: () => [t(props.loadMoreText)]
|
174
|
+
});
|
175
|
+
}
|
176
|
+
return slots.loading?.(slotProps) ?? _createVNode(VProgressCircular, {
|
177
|
+
"indeterminate": true,
|
178
|
+
"color": props.color
|
179
|
+
}, null);
|
180
|
+
}
|
181
|
+
const {
|
182
|
+
dimensionStyles
|
183
|
+
} = useDimension(props);
|
184
|
+
useRender(() => {
|
185
|
+
const hasStartIntersect = props.side === 'start' || props.side === 'both';
|
186
|
+
const hasEndIntersect = props.side === 'end' || props.side === 'both';
|
187
|
+
const intersectMode = props.mode === 'intersect';
|
188
|
+
return _createVNode("div", {
|
189
|
+
"ref": rootEl,
|
190
|
+
"class": ['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {
|
191
|
+
'v-infinite-scroll--start': hasStartIntersect,
|
192
|
+
'v-infinite-scroll--end': hasEndIntersect
|
193
|
+
}],
|
194
|
+
"style": dimensionStyles.value
|
195
|
+
}, [_createVNode("div", {
|
196
|
+
"class": "v-infinite-scroll__side"
|
197
|
+
}, [renderSide('start', startStatus.value)]), rootEl.value && hasStartIntersect && intersectMode && _createVNode(VInfiniteScrollIntersect, {
|
198
|
+
"key": "start",
|
199
|
+
"side": "start",
|
200
|
+
"onIntersect": handleIntersect,
|
201
|
+
"rootRef": rootEl.value,
|
202
|
+
"rootMargin": margin.value
|
203
|
+
}, null), slots.default?.(), rootEl.value && hasEndIntersect && intersectMode && _createVNode(VInfiniteScrollIntersect, {
|
204
|
+
"key": "end",
|
205
|
+
"side": "end",
|
206
|
+
"onIntersect": handleIntersect,
|
207
|
+
"rootRef": rootEl.value,
|
208
|
+
"rootMargin": margin.value
|
209
|
+
}, null), _createVNode("div", {
|
210
|
+
"class": "v-infinite-scroll__side"
|
211
|
+
}, [renderSide('end', endStatus.value)])]);
|
212
|
+
});
|
213
|
+
}
|
214
|
+
});
|
215
|
+
//# sourceMappingURL=VInfiniteScroll.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"VInfiniteScroll.mjs","names":["VBtn","VProgressCircular","makeDimensionProps","useDimension","useIntersectionObserver","useLocale","computed","nextTick","onMounted","ref","watch","convertToUnit","defineComponent","genericComponent","useRender","VInfiniteScrollIntersect","name","props","side","type","String","required","rootRef","rootMargin","emits","intersect","setup","_ref","emit","intersectionRef","isIntersecting","entries","root","undefined","val","_createVNode","_createTextVNode","VInfiniteScroll","color","direction","default","validator","v","includes","mode","margin","Number","loadMoreText","emptyText","load","options","_ref2","slots","rootEl","startStatus","endStatus","setScrollAmount","amount","value","property","getScrollAmount","getScrollSize","getContainerSize","setStatus","status","getStatus","previousScrollSize","handleIntersect","done","t","renderSide","onClick","slotProps","error","empty","loading","dimensionStyles","hasStartIntersect","hasEndIntersect","intersectMode"],"sources":["../../../src/labs/VInfiniteScroll/VInfiniteScroll.tsx"],"sourcesContent":["// Styles\nimport './VInfiniteScroll.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, watch } from 'vue'\nimport { convertToUnit, defineComponent, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type InfiniteScrollSide = 'start' | 'end' | 'both'\nexport type InfiniteScrollStatus = 'ok' | 'empty' | 'loading' | 'error'\n\ntype InfiniteScrollSlot = {\n side: InfiniteScrollSide\n props: {\n onClick: () => (side: InfiniteScrollSide) => void\n color: string | undefined\n }\n}\n\ntype VInfiniteScrollSlots = {\n default: [InfiniteScrollSlot]\n loading: [InfiniteScrollSlot]\n error: [InfiniteScrollSlot]\n empty: [InfiniteScrollSlot]\n 'load-more': [InfiniteScrollSlot]\n}\n\nexport const VInfiniteScrollIntersect = defineComponent({\n name: 'VInfiniteScrollIntersect',\n\n props: {\n side: {\n type: String as PropType<InfiniteScrollSide>,\n required: true,\n },\n rootRef: null,\n rootMargin: String,\n },\n\n emits: {\n intersect: (side: InfiniteScrollSide) => true,\n },\n\n setup (props, { emit }) {\n const { intersectionRef, isIntersecting } = useIntersectionObserver(entries => {\n }, props.rootMargin ? {\n root: props.rootRef,\n rootMargin: props.rootMargin,\n } : undefined)\n\n watch(isIntersecting, async val => {\n if (val) emit('intersect', props.side)\n })\n\n useRender(() => (\n <div class=\"v-infinite-scroll-intersect\" ref={ intersectionRef }> </div>\n ))\n\n return {}\n },\n})\n\nexport const VInfiniteScroll = genericComponent<VInfiniteScrollSlots>()({\n name: 'VInfiniteScroll',\n\n props: {\n color: String,\n direction: {\n type: String as PropType<'vertical' | 'horizontal'>,\n default: 'vertical',\n validator: (v: any) => ['vertical', 'horizontal'].includes(v),\n },\n side: {\n type: String as PropType<InfiniteScrollSide>,\n default: 'end',\n validator: (v: any) => ['start', 'end', 'both'].includes(v),\n },\n mode: {\n type: String as PropType<'intersect' | 'manual'>,\n default: 'intersect',\n validator: (v: any) => ['intersect', 'manual'].includes(v),\n },\n margin: [Number, String],\n loadMoreText: {\n type: String,\n default: '$vuetify.infiniteScroll.loadMore',\n },\n emptyText: {\n type: String,\n default: '$vuetify.infiniteScroll.empty',\n },\n\n ...makeDimensionProps(),\n },\n\n emits: {\n load: (options: { side: InfiniteScrollSide, done: (status: InfiniteScrollStatus) => void }) => true,\n },\n\n setup (props, { slots, emit }) {\n const rootEl = ref<HTMLDivElement>()\n const startStatus = ref<InfiniteScrollStatus>('ok')\n const endStatus = ref<InfiniteScrollStatus>('ok')\n const margin = computed(() => convertToUnit(props.margin))\n\n function setScrollAmount (amount: number) {\n if (!rootEl.value) return\n\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft'\n rootEl.value[property] = amount\n }\n\n function getScrollAmount () {\n if (!rootEl.value) return 0\n\n const property = props.direction === 'vertical' ? 'scrollTop' : 'scrollLeft'\n return rootEl.value[property]\n }\n\n function getScrollSize () {\n if (!rootEl.value) return 0\n\n const property = props.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth'\n return rootEl.value[property]\n }\n\n function getContainerSize () {\n if (!rootEl.value) return 0\n\n const property = props.direction === 'vertical' ? 'clientHeight' : 'clientWidth'\n return rootEl.value[property]\n }\n\n onMounted(() => {\n if (!rootEl.value) return\n\n if (props.side === 'start') {\n setScrollAmount(getScrollSize())\n } else if (props.side === 'both') {\n setScrollAmount(getScrollSize() / 2 - getContainerSize() / 2)\n }\n })\n\n function setStatus (side: InfiniteScrollSide, status: InfiniteScrollStatus) {\n if (side === 'start') {\n startStatus.value = status\n } else if (side === 'end') {\n endStatus.value = status\n }\n }\n\n function getStatus (side: string) {\n return side === 'start' ? startStatus.value : endStatus.value\n }\n\n let previousScrollSize = 0\n function handleIntersect (side: InfiniteScrollSide) {\n const status = getStatus(side)\n if (!rootEl.value || status === 'loading') return\n\n previousScrollSize = getScrollSize()\n setStatus(side, 'loading')\n\n function done (status: InfiniteScrollStatus) {\n setStatus(side, status)\n\n nextTick(() => {\n if (status === 'ok' && side === 'start') {\n setScrollAmount(getScrollSize() - previousScrollSize + getScrollAmount())\n }\n })\n }\n\n emit('load', { side, done })\n }\n\n const { t } = useLocale()\n\n function renderSide (side: InfiniteScrollSide, status: InfiniteScrollStatus) {\n if (props.side !== side && props.side !== 'both') return\n\n const onClick = () => handleIntersect(side)\n const slotProps = { side, props: { onClick, color: props.color } }\n\n if (status === 'error') return slots.error?.(slotProps)\n\n if (status === 'empty') return slots.empty?.(slotProps) ?? <div>{ t(props.emptyText) }</div>\n\n if (props.mode === 'manual') {\n if (status === 'loading') {\n return slots.loading?.(slotProps) ?? (\n <VProgressCircular indeterminate color={ props.color } />\n )\n }\n\n return slots['load-more']?.(slotProps) ?? (\n <VBtn variant=\"outlined\" color={ props.color } onClick={ onClick }>\n { t(props.loadMoreText) }\n </VBtn>\n )\n }\n\n return slots.loading?.(slotProps) ?? (\n <VProgressCircular indeterminate color={ props.color } />\n )\n }\n\n const { dimensionStyles } = useDimension(props)\n\n useRender(() => {\n const hasStartIntersect = props.side === 'start' || props.side === 'both'\n const hasEndIntersect = props.side === 'end' || props.side === 'both'\n const intersectMode = props.mode === 'intersect'\n\n return (\n <div\n ref={ rootEl }\n class={[\n 'v-infinite-scroll',\n `v-infinite-scroll--${props.direction}`,\n {\n 'v-infinite-scroll--start': hasStartIntersect,\n 'v-infinite-scroll--end': hasEndIntersect,\n },\n ]}\n style={ dimensionStyles.value }\n >\n <div class=\"v-infinite-scroll__side\">\n { renderSide('start', startStatus.value) }\n </div>\n\n { rootEl.value && hasStartIntersect && intersectMode && (\n <VInfiniteScrollIntersect\n key=\"start\"\n side=\"start\"\n onIntersect={ handleIntersect }\n rootRef={ rootEl.value }\n rootMargin={ margin.value }\n />\n )}\n\n { slots.default?.() }\n\n { rootEl.value && hasEndIntersect && intersectMode && (\n <VInfiniteScrollIntersect\n key=\"end\"\n side=\"end\"\n onIntersect={ handleIntersect }\n rootRef={ rootEl.value }\n rootMargin={ margin.value }\n />\n )}\n\n <div class=\"v-infinite-scroll__side\">\n { renderSide('end', endStatus.value) }\n </div>\n </div>\n )\n })\n },\n})\n\nexport type VInfiniteScroll = InstanceType<typeof VInfiniteScroll>\n"],"mappings":"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"}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
@use './variables' as *
|
2
|
+
|
3
|
+
.v-infinite-scroll--horizontal
|
4
|
+
display: flex
|
5
|
+
flex-direction: row
|
6
|
+
overflow-x: auto
|
7
|
+
|
8
|
+
.v-infinite-scroll-intersect
|
9
|
+
height: 100%
|
10
|
+
width: 1px
|
11
|
+
|
12
|
+
.v-infinite-scroll--vertical
|
13
|
+
display: flex
|
14
|
+
flex-direction: column
|
15
|
+
overflow-y: auto
|
16
|
+
|
17
|
+
.v-infinite-scroll-intersect
|
18
|
+
height: 1px
|
19
|
+
width: 100%
|
20
|
+
|
21
|
+
.v-infinite-scroll__side
|
22
|
+
align-items: center
|
23
|
+
display: flex
|
24
|
+
justify-content: center
|
25
|
+
padding: $infinite-scroll-side-padding
|