vuetify 3.1.3 → 3.1.4
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/LICENSE.md +1 -1
- package/dist/json/attributes.json +682 -642
- package/dist/json/importMap-labs.json +4 -0
- package/dist/json/importMap.json +34 -34
- package/dist/json/tags.json +18 -3
- package/dist/json/web-types.json +943 -830
- package/dist/vuetify-labs.css +2987 -2985
- package/dist/vuetify-labs.d.ts +211 -50
- package/dist/vuetify-labs.esm.js +97 -79
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +96 -78
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +43 -40
- package/dist/vuetify.d.ts +144 -13
- package/dist/vuetify.esm.js +40 -31
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +40 -31
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +487 -484
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAppBar/VAppBarTitle.mjs +3 -4
- package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
- package/lib/components/VAppBar/index.d.ts +14 -2
- package/lib/components/VBottomSheet/VBottomSheet.mjs +1 -4
- package/lib/components/VBottomSheet/VBottomSheet.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.css +7 -7
- package/lib/components/VBtnGroup/VBtnGroup.mjs +15 -11
- package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
- package/lib/components/VBtnGroup/index.d.ts +2 -1
- package/lib/components/VBtnToggle/VBtnToggle.mjs +9 -5
- package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
- package/lib/components/VBtnToggle/index.d.ts +122 -1
- package/lib/components/VCalendar/VCalendar.mjs +3 -0
- package/lib/components/VCalendar/VCalendar.mjs.map +1 -1
- package/lib/components/VCalendar/VCalendarCategory.sass +9 -3
- package/lib/components/VCalendar/VCalendarDaily.mjs +20 -8
- package/lib/components/VCalendar/VCalendarDaily.mjs.map +1 -1
- package/lib/components/VCalendar/VCalendarWeekly.mjs +25 -5
- package/lib/components/VCalendar/VCalendarWeekly.mjs.map +1 -1
- package/lib/components/VCalendar/mixins/calendar-with-events.mjs +20 -16
- package/lib/components/VCalendar/mixins/calendar-with-events.mjs.map +1 -1
- package/lib/components/VCalendar/mixins/mouse.mjs +16 -30
- package/lib/components/VCalendar/mixins/mouse.mjs.map +1 -1
- package/lib/components/VCard/VCard.css +7 -7
- package/lib/components/VChip/VChip.css +7 -7
- package/lib/components/VChip/VChip.mjs +6 -1
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VData/VData.mjs +2 -4
- package/lib/components/VData/VData.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.mjs +7 -5
- package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.css +7 -7
- package/lib/components/VField/VField.css +2 -2
- package/lib/components/VField/VField.sass +2 -2
- package/lib/components/VList/VListItem.css +7 -7
- package/lib/components/VOtpInput/VOtpInput.mjs +22 -46
- package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
- package/lib/components/VOverflowBtn/VOverflowBtn.mjs +3 -0
- package/lib/components/VOverflowBtn/VOverflowBtn.mjs.map +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.css +2 -2
- package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +1 -1
- package/lib/components/VStepper/VStepper.sass +6 -6
- package/lib/components/VStepper/VStepperStep.mjs +12 -2
- package/lib/components/VStepper/VStepperStep.mjs.map +1 -1
- package/lib/components/VTimePicker/VTimePicker.mjs.map +1 -1
- package/lib/components/VTimeline/_mixins.sass +1 -1
- package/lib/components/VToolbar/VToolbarTitle.mjs +6 -5
- package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
- package/lib/components/VTreeview/VTreeview.mjs +1 -1
- package/lib/components/VTreeview/VTreeview.mjs.map +1 -1
- package/lib/components/index.d.ts +135 -4
- package/lib/composables/nested/nested.mjs +2 -1
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/directives/ripple/VRipple.css +3 -0
- package/lib/directives/ripple/VRipple.sass +3 -0
- package/lib/directives/ripple/_variables.scss +1 -1
- package/lib/directives/ripple/index.mjs +2 -7
- package/lib/directives/ripple/index.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.ts +9 -9
- package/lib/labs/VDataTable/VDataTable.mjs +1 -5
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableFooter.mjs +1 -1
- package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +1 -7
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +0 -3
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/options.mjs +0 -6
- package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/paginate.mjs +1 -1
- package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.ts +60 -1
- package/lib/labs/VDataTable/index.mjs +1 -0
- package/lib/labs/VDataTable/index.mjs.map +1 -1
- package/lib/labs/VVirtualScroll/VVirtualScroll.css +0 -1
- package/lib/labs/VVirtualScroll/VVirtualScroll.mjs +40 -22
- package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
- package/lib/labs/VVirtualScroll/VVirtualScroll.sass +0 -1
- package/lib/labs/VVirtualScroll/VVirtualScrollItem.mjs +20 -8
- package/lib/labs/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
- package/lib/labs/VVirtualScroll/index.d.ts +15 -46
- package/lib/labs/components.d.ts +75 -47
- package/lib/locale/ar.mjs +20 -20
- package/lib/locale/ar.mjs.map +1 -1
- package/lib/locale/es.mjs +3 -3
- package/lib/locale/es.mjs.map +1 -1
- package/lib/locale/fi.mjs +5 -5
- package/lib/locale/fi.mjs.map +1 -1
- package/lib/locale/it.mjs +6 -6
- package/lib/locale/it.mjs.map +1 -1
- package/lib/locale/sv.mjs +7 -7
- package/lib/locale/sv.mjs.map +1 -1
- package/lib/styles/settings/_variables.scss +6 -6
- package/lib/styles/tools/_states.sass +3 -3
- package/lib/util/helpers.mjs +0 -18
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +2 -2
package/dist/vuetify-labs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.1.
|
|
2
|
+
* Vuetify v3.1.4
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -2929,12 +2929,13 @@
|
|
|
2929
2929
|
|
|
2930
2930
|
// Types
|
|
2931
2931
|
|
|
2932
|
+
const makeVToolbarTitleProps = propsFactory({
|
|
2933
|
+
text: String,
|
|
2934
|
+
...makeTagProps()
|
|
2935
|
+
}, 'v-toolbar-title');
|
|
2932
2936
|
const VToolbarTitle = genericComponent()({
|
|
2933
2937
|
name: 'VToolbarTitle',
|
|
2934
|
-
props:
|
|
2935
|
-
text: String,
|
|
2936
|
-
...makeTagProps()
|
|
2937
|
-
},
|
|
2938
|
+
props: makeVToolbarTitleProps(),
|
|
2938
2939
|
setup(props, _ref) {
|
|
2939
2940
|
let {
|
|
2940
2941
|
slots
|
|
@@ -3386,18 +3387,21 @@
|
|
|
3386
3387
|
};
|
|
3387
3388
|
}
|
|
3388
3389
|
|
|
3390
|
+
// Types
|
|
3391
|
+
|
|
3392
|
+
const makeVBtnGroupProps = propsFactory({
|
|
3393
|
+
divided: Boolean,
|
|
3394
|
+
...makeBorderProps(),
|
|
3395
|
+
...makeDensityProps(),
|
|
3396
|
+
...makeElevationProps(),
|
|
3397
|
+
...makeRoundedProps(),
|
|
3398
|
+
...makeTagProps(),
|
|
3399
|
+
...makeThemeProps(),
|
|
3400
|
+
...makeVariantProps()
|
|
3401
|
+
}, 'v-btn-group');
|
|
3389
3402
|
const VBtnGroup = defineComponent({
|
|
3390
3403
|
name: 'VBtnGroup',
|
|
3391
|
-
props:
|
|
3392
|
-
divided: Boolean,
|
|
3393
|
-
...makeBorderProps(),
|
|
3394
|
-
...makeDensityProps(),
|
|
3395
|
-
...makeElevationProps(),
|
|
3396
|
-
...makeRoundedProps(),
|
|
3397
|
-
...makeTagProps(),
|
|
3398
|
-
...makeThemeProps(),
|
|
3399
|
-
...makeVariantProps()
|
|
3400
|
-
},
|
|
3404
|
+
props: makeVBtnGroupProps(),
|
|
3401
3405
|
setup(props, _ref) {
|
|
3402
3406
|
let {
|
|
3403
3407
|
slots
|
|
@@ -3435,6 +3439,9 @@
|
|
|
3435
3439
|
});
|
|
3436
3440
|
}
|
|
3437
3441
|
});
|
|
3442
|
+
function filterVBtnGroupProps(props) {
|
|
3443
|
+
return pick(props, Object.keys(VBtnGroup.props));
|
|
3444
|
+
}
|
|
3438
3445
|
|
|
3439
3446
|
// Composables
|
|
3440
3447
|
|
|
@@ -3642,7 +3649,10 @@
|
|
|
3642
3649
|
const VBtnToggleSymbol = Symbol.for('vuetify:v-btn-toggle');
|
|
3643
3650
|
const VBtnToggle = genericComponent()({
|
|
3644
3651
|
name: 'VBtnToggle',
|
|
3645
|
-
props:
|
|
3652
|
+
props: {
|
|
3653
|
+
...makeVBtnGroupProps(),
|
|
3654
|
+
...makeGroupProps()
|
|
3655
|
+
},
|
|
3646
3656
|
emits: {
|
|
3647
3657
|
'update:modelValue': value => true
|
|
3648
3658
|
},
|
|
@@ -3659,9 +3669,10 @@
|
|
|
3659
3669
|
} = useGroup(props, VBtnToggleSymbol);
|
|
3660
3670
|
useRender(() => {
|
|
3661
3671
|
var _slots$default;
|
|
3662
|
-
|
|
3672
|
+
const [btnGroupProps] = filterVBtnGroupProps(props);
|
|
3673
|
+
return vue.createVNode(VBtnGroup, vue.mergeProps({
|
|
3663
3674
|
"class": "v-btn-toggle"
|
|
3664
|
-
}, {
|
|
3675
|
+
}, btnGroupProps), {
|
|
3665
3676
|
default: () => [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, {
|
|
3666
3677
|
isSelected,
|
|
3667
3678
|
next,
|
|
@@ -4116,9 +4127,6 @@
|
|
|
4116
4127
|
el.style.transform = value;
|
|
4117
4128
|
el.style.webkitTransform = value;
|
|
4118
4129
|
}
|
|
4119
|
-
function opacity(el, value) {
|
|
4120
|
-
el.style.opacity = `calc(${value} * var(--v-theme-overlay-multiplier))`;
|
|
4121
|
-
}
|
|
4122
4130
|
function isTouchEvent(e) {
|
|
4123
4131
|
return e.constructor.name === 'TouchEvent';
|
|
4124
4132
|
}
|
|
@@ -4194,13 +4202,11 @@
|
|
|
4194
4202
|
animation.classList.add('v-ripple__animation--enter');
|
|
4195
4203
|
animation.classList.add('v-ripple__animation--visible');
|
|
4196
4204
|
transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`);
|
|
4197
|
-
opacity(animation, 0);
|
|
4198
4205
|
animation.dataset.activated = String(performance.now());
|
|
4199
4206
|
setTimeout(() => {
|
|
4200
4207
|
animation.classList.remove('v-ripple__animation--enter');
|
|
4201
4208
|
animation.classList.add('v-ripple__animation--in');
|
|
4202
4209
|
transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`);
|
|
4203
|
-
opacity(animation, 0.08);
|
|
4204
4210
|
}, 0);
|
|
4205
4211
|
},
|
|
4206
4212
|
hide(el) {
|
|
@@ -4215,14 +4221,14 @@
|
|
|
4215
4221
|
setTimeout(() => {
|
|
4216
4222
|
animation.classList.remove('v-ripple__animation--in');
|
|
4217
4223
|
animation.classList.add('v-ripple__animation--out');
|
|
4218
|
-
opacity(animation, 0);
|
|
4219
4224
|
setTimeout(() => {
|
|
4225
|
+
var _animation$parentNode;
|
|
4220
4226
|
const ripples = el.getElementsByClassName('v-ripple__animation');
|
|
4221
4227
|
if (ripples.length === 1 && el.dataset.previousPosition) {
|
|
4222
4228
|
el.style.position = el.dataset.previousPosition;
|
|
4223
4229
|
delete el.dataset.previousPosition;
|
|
4224
4230
|
}
|
|
4225
|
-
animation.parentNode
|
|
4231
|
+
if (((_animation$parentNode = animation.parentNode) == null ? void 0 : _animation$parentNode.parentNode) === el) el.removeChild(animation.parentNode);
|
|
4226
4232
|
}, 300);
|
|
4227
4233
|
}, delay);
|
|
4228
4234
|
}
|
|
@@ -5009,9 +5015,7 @@
|
|
|
5009
5015
|
|
|
5010
5016
|
const VAppBarTitle = defineComponent({
|
|
5011
5017
|
name: 'VAppBarTitle',
|
|
5012
|
-
props:
|
|
5013
|
-
...VToolbarTitle.props
|
|
5014
|
-
},
|
|
5018
|
+
props: makeVToolbarTitleProps(),
|
|
5015
5019
|
setup(props, _ref) {
|
|
5016
5020
|
let {
|
|
5017
5021
|
slots
|
|
@@ -6837,6 +6841,9 @@
|
|
|
6837
6841
|
emit,
|
|
6838
6842
|
slots
|
|
6839
6843
|
} = _ref;
|
|
6844
|
+
const {
|
|
6845
|
+
t
|
|
6846
|
+
} = useLocale();
|
|
6840
6847
|
const {
|
|
6841
6848
|
borderClasses
|
|
6842
6849
|
} = useBorder(props);
|
|
@@ -6973,6 +6980,7 @@
|
|
|
6973
6980
|
}, {
|
|
6974
6981
|
default: () => [vue.createVNode("div", {
|
|
6975
6982
|
"class": "v-chip__close",
|
|
6983
|
+
"aria-label": t(props.closeLabel),
|
|
6976
6984
|
"onClick": onCloseClick
|
|
6977
6985
|
}, [slots.close ? slots.close() : vue.createVNode(VIcon, null, null)])]
|
|
6978
6986
|
})]
|
|
@@ -7458,7 +7466,8 @@
|
|
|
7458
7466
|
};
|
|
7459
7467
|
const useNestedItem = (id, isGroup) => {
|
|
7460
7468
|
const parent = vue.inject(VNestedSymbol, emptyNested);
|
|
7461
|
-
const
|
|
7469
|
+
const uidSymbol = Symbol(getUid());
|
|
7470
|
+
const computedId = vue.computed(() => id.value ?? uidSymbol);
|
|
7462
7471
|
const item = {
|
|
7463
7472
|
...parent,
|
|
7464
7473
|
id: computedId,
|
|
@@ -19058,7 +19067,7 @@
|
|
|
19058
19067
|
return Math.min(itemsLength.value, startIndex.value + itemsPerPage.value);
|
|
19059
19068
|
});
|
|
19060
19069
|
const pageCount = vue.computed(() => {
|
|
19061
|
-
if (itemsPerPage.value === -1) return 1;
|
|
19070
|
+
if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1;
|
|
19062
19071
|
return Math.ceil(itemsLength.value / itemsPerPage.value);
|
|
19063
19072
|
});
|
|
19064
19073
|
vue.watchEffect(() => {
|
|
@@ -19161,7 +19170,7 @@
|
|
|
19161
19170
|
"hide-details": true
|
|
19162
19171
|
}, null)]), vue.createVNode("div", {
|
|
19163
19172
|
"class": "v-data-table-footer__info"
|
|
19164
|
-
}, [vue.createVNode("div", null, [
|
|
19173
|
+
}, [vue.createVNode("div", null, [!itemsLength.value ? 0 : startIndex.value + 1, vue.createTextVNode(" - "), stopIndex.value, vue.createTextVNode(" of "), itemsLength.value])]), vue.createVNode("div", {
|
|
19165
19174
|
"class": "v-data-table-footer__pagination"
|
|
19166
19175
|
}, [vue.createVNode(VBtn, {
|
|
19167
19176
|
"icon": props.firstIcon,
|
|
@@ -19229,18 +19238,12 @@
|
|
|
19229
19238
|
page,
|
|
19230
19239
|
itemsPerPage,
|
|
19231
19240
|
sortBy,
|
|
19232
|
-
startIndex,
|
|
19233
|
-
stopIndex,
|
|
19234
|
-
pageCount,
|
|
19235
19241
|
groupBy
|
|
19236
19242
|
} = _ref;
|
|
19237
19243
|
const vm = getCurrentInstance('VDataTable');
|
|
19238
19244
|
const options = vue.computed(() => ({
|
|
19239
19245
|
page: page.value,
|
|
19240
19246
|
itemsPerPage: itemsPerPage.value,
|
|
19241
|
-
startIndex: startIndex.value,
|
|
19242
|
-
stopIndex: stopIndex.value,
|
|
19243
|
-
pageCount: pageCount.value,
|
|
19244
19247
|
sortBy: sortBy.value,
|
|
19245
19248
|
groupBy: groupBy.value
|
|
19246
19249
|
}));
|
|
@@ -19344,8 +19347,7 @@
|
|
|
19344
19347
|
page,
|
|
19345
19348
|
itemsPerPage,
|
|
19346
19349
|
startIndex,
|
|
19347
|
-
stopIndex
|
|
19348
|
-
pageCount
|
|
19350
|
+
stopIndex
|
|
19349
19351
|
} = createPagination(props, flatItems);
|
|
19350
19352
|
const {
|
|
19351
19353
|
paginatedItems
|
|
@@ -19357,9 +19359,6 @@
|
|
|
19357
19359
|
page,
|
|
19358
19360
|
itemsPerPage,
|
|
19359
19361
|
sortBy,
|
|
19360
|
-
pageCount,
|
|
19361
|
-
startIndex,
|
|
19362
|
-
stopIndex,
|
|
19363
19362
|
groupBy
|
|
19364
19363
|
});
|
|
19365
19364
|
provideDefaults({
|
|
@@ -19554,9 +19553,6 @@
|
|
|
19554
19553
|
useOptions({
|
|
19555
19554
|
sortBy,
|
|
19556
19555
|
page: vue.ref(1),
|
|
19557
|
-
startIndex: vue.ref(0),
|
|
19558
|
-
stopIndex: vue.computed(() => flatItems.value.length - 1),
|
|
19559
|
-
pageCount: vue.ref(1),
|
|
19560
19556
|
itemsPerPage: vue.ref(-1),
|
|
19561
19557
|
groupBy
|
|
19562
19558
|
});
|
|
@@ -19673,10 +19669,7 @@
|
|
|
19673
19669
|
} = createGroupBy(props, groupBy, sortBy);
|
|
19674
19670
|
const {
|
|
19675
19671
|
page,
|
|
19676
|
-
itemsPerPage
|
|
19677
|
-
startIndex,
|
|
19678
|
-
stopIndex,
|
|
19679
|
-
pageCount
|
|
19672
|
+
itemsPerPage
|
|
19680
19673
|
} = createPagination(props, items);
|
|
19681
19674
|
const {
|
|
19682
19675
|
flatItems
|
|
@@ -19686,9 +19679,6 @@
|
|
|
19686
19679
|
page,
|
|
19687
19680
|
itemsPerPage,
|
|
19688
19681
|
sortBy,
|
|
19689
|
-
startIndex,
|
|
19690
|
-
stopIndex,
|
|
19691
|
-
pageCount,
|
|
19692
19682
|
groupBy
|
|
19693
19683
|
});
|
|
19694
19684
|
vue.provide('v-data-table', {
|
|
@@ -19750,12 +19740,23 @@
|
|
|
19750
19740
|
slots
|
|
19751
19741
|
} = _ref;
|
|
19752
19742
|
const {
|
|
19753
|
-
resizeRef
|
|
19754
|
-
|
|
19755
|
-
|
|
19756
|
-
|
|
19757
|
-
|
|
19743
|
+
resizeRef,
|
|
19744
|
+
contentRect
|
|
19745
|
+
} = useResizeObserver();
|
|
19746
|
+
useToggleScope(() => props.dynamicHeight, () => {
|
|
19747
|
+
vue.watch(() => {
|
|
19748
|
+
var _contentRect$value;
|
|
19749
|
+
return (_contentRect$value = contentRect.value) == null ? void 0 : _contentRect$value.height;
|
|
19750
|
+
}, height => {
|
|
19751
|
+
if (height != null) emit('update:height', height);
|
|
19752
|
+
});
|
|
19758
19753
|
});
|
|
19754
|
+
function updateHeight() {
|
|
19755
|
+
if (props.dynamicHeight && contentRect.value) {
|
|
19756
|
+
emit('update:height', contentRect.value.height);
|
|
19757
|
+
}
|
|
19758
|
+
}
|
|
19759
|
+
vue.onUpdated(updateHeight);
|
|
19759
19760
|
useRender(() => {
|
|
19760
19761
|
var _slots$default;
|
|
19761
19762
|
return vue.createVNode("div", {
|
|
@@ -19777,15 +19778,8 @@
|
|
|
19777
19778
|
type: Array,
|
|
19778
19779
|
default: () => []
|
|
19779
19780
|
},
|
|
19780
|
-
itemKey: {
|
|
19781
|
-
type: String,
|
|
19782
|
-
default: 'value'
|
|
19783
|
-
},
|
|
19784
19781
|
itemHeight: [Number, String],
|
|
19785
|
-
visibleItems:
|
|
19786
|
-
type: [Number, String],
|
|
19787
|
-
default: 30
|
|
19788
|
-
},
|
|
19782
|
+
visibleItems: [Number, String],
|
|
19789
19783
|
...makeDimensionProps()
|
|
19790
19784
|
},
|
|
19791
19785
|
setup(props, _ref) {
|
|
@@ -19800,15 +19794,23 @@
|
|
|
19800
19794
|
baseItemHeight.value = val;
|
|
19801
19795
|
}
|
|
19802
19796
|
});
|
|
19803
|
-
const visibleItems = vue.computed(() => parseInt(props.visibleItems, 10));
|
|
19804
19797
|
const rootEl = vue.ref();
|
|
19805
|
-
const
|
|
19798
|
+
const {
|
|
19799
|
+
resizeRef,
|
|
19800
|
+
contentRect
|
|
19801
|
+
} = useResizeObserver();
|
|
19802
|
+
vue.watchEffect(() => {
|
|
19803
|
+
resizeRef.value = rootEl.value;
|
|
19804
|
+
});
|
|
19805
|
+
const display = useDisplay();
|
|
19806
19806
|
const sizes = createRange(props.items.length).map(() => itemHeight.value);
|
|
19807
|
-
|
|
19808
|
-
|
|
19809
|
-
|
|
19807
|
+
const visibleItems = vue.computed(() => {
|
|
19808
|
+
var _contentRect$value;
|
|
19809
|
+
return props.visibleItems ? parseInt(props.visibleItems, 10) : Math.max(12, Math.ceil((((_contentRect$value = contentRect.value) == null ? void 0 : _contentRect$value.height) ?? display.height.value) / itemHeight.value * 1.7 + 1));
|
|
19810
|
+
});
|
|
19811
|
+
function handleItemResize(index, height) {
|
|
19812
|
+
itemHeight.value = Math.max(itemHeight.value, height);
|
|
19810
19813
|
sizes[index] = height;
|
|
19811
|
-
if (!itemHeight.value) itemHeight.value = height;
|
|
19812
19814
|
}
|
|
19813
19815
|
function calculateOffset(index) {
|
|
19814
19816
|
return sizes.slice(0, index).reduce((curr, value) => curr + (value || itemHeight.value), 0);
|
|
@@ -19831,18 +19833,24 @@
|
|
|
19831
19833
|
}
|
|
19832
19834
|
let lastScrollTop = 0;
|
|
19833
19835
|
function handleScroll() {
|
|
19834
|
-
if (!rootEl.value) return;
|
|
19836
|
+
if (!rootEl.value || !contentRect.value) return;
|
|
19837
|
+
const height = contentRect.value.height;
|
|
19835
19838
|
const scrollTop = rootEl.value.scrollTop;
|
|
19836
19839
|
const direction = scrollTop < lastScrollTop ? UP : DOWN;
|
|
19837
|
-
const midPointIndex = calculateMidPointIndex(scrollTop);
|
|
19840
|
+
const midPointIndex = calculateMidPointIndex(scrollTop + height / 2);
|
|
19838
19841
|
const buffer = Math.round(visibleItems.value / 3);
|
|
19839
|
-
if (direction === UP && midPointIndex <= first.value) {
|
|
19842
|
+
if (direction === UP && midPointIndex <= first.value + buffer * 2 - 1) {
|
|
19840
19843
|
first.value = Math.max(midPointIndex - buffer, 0);
|
|
19841
|
-
} else if (direction === DOWN && midPointIndex >= first.value + buffer * 2) {
|
|
19844
|
+
} else if (direction === DOWN && midPointIndex >= first.value + buffer * 2 - 1) {
|
|
19842
19845
|
first.value = Math.min(Math.max(0, midPointIndex - buffer), props.items.length - visibleItems.value);
|
|
19843
19846
|
}
|
|
19844
19847
|
lastScrollTop = rootEl.value.scrollTop;
|
|
19845
19848
|
}
|
|
19849
|
+
function scrollToIndex(index) {
|
|
19850
|
+
if (!rootEl.value) return;
|
|
19851
|
+
const offset = calculateOffset(index);
|
|
19852
|
+
rootEl.value.scrollTop = offset;
|
|
19853
|
+
}
|
|
19846
19854
|
const last = vue.computed(() => Math.min(props.items.length, first.value + visibleItems.value));
|
|
19847
19855
|
const computedItems = vue.computed(() => props.items.slice(first.value, last.value));
|
|
19848
19856
|
const paddingTop = vue.computed(() => calculateOffset(first.value));
|
|
@@ -19850,6 +19858,12 @@
|
|
|
19850
19858
|
const {
|
|
19851
19859
|
dimensionStyles
|
|
19852
19860
|
} = useDimension(props);
|
|
19861
|
+
vue.onMounted(() => {
|
|
19862
|
+
if (!itemHeight.value) {
|
|
19863
|
+
// If itemHeight prop is not set, then calculate an estimated height from the average of inital items
|
|
19864
|
+
itemHeight.value = sizes.slice(first.value, last.value).reduce((curr, height) => curr + height, 0) / visibleItems.value;
|
|
19865
|
+
}
|
|
19866
|
+
});
|
|
19853
19867
|
useRender(() => vue.createVNode("div", {
|
|
19854
19868
|
"ref": rootEl,
|
|
19855
19869
|
"class": "v-virtual-scroll",
|
|
@@ -19866,7 +19880,7 @@
|
|
|
19866
19880
|
return vue.createVNode(VVirtualScrollItem, {
|
|
19867
19881
|
"key": index,
|
|
19868
19882
|
"dynamicHeight": !props.itemHeight,
|
|
19869
|
-
"onUpdate:height": height => handleItemResize(
|
|
19883
|
+
"onUpdate:height": height => handleItemResize(index + first.value, height)
|
|
19870
19884
|
}, {
|
|
19871
19885
|
default: () => [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, {
|
|
19872
19886
|
item,
|
|
@@ -19874,6 +19888,9 @@
|
|
|
19874
19888
|
})]
|
|
19875
19889
|
});
|
|
19876
19890
|
})])]));
|
|
19891
|
+
return {
|
|
19892
|
+
scrollToIndex
|
|
19893
|
+
};
|
|
19877
19894
|
}
|
|
19878
19895
|
});
|
|
19879
19896
|
|
|
@@ -20016,6 +20033,7 @@
|
|
|
20016
20033
|
VDataTableRow: VDataTableRow,
|
|
20017
20034
|
VDataTableVirtual: VDataTableVirtual,
|
|
20018
20035
|
VDataTableServer: VDataTableServer,
|
|
20036
|
+
VDataTableFooter: VDataTableFooter,
|
|
20019
20037
|
VVirtualScroll: VVirtualScroll
|
|
20020
20038
|
});
|
|
20021
20039
|
|
|
@@ -20231,7 +20249,7 @@
|
|
|
20231
20249
|
locale
|
|
20232
20250
|
};
|
|
20233
20251
|
}
|
|
20234
|
-
const version$1 = "3.1.
|
|
20252
|
+
const version$1 = "3.1.4";
|
|
20235
20253
|
createVuetify$1.version = version$1;
|
|
20236
20254
|
|
|
20237
20255
|
// Vue's inject() can only be used in setup
|
|
@@ -20244,7 +20262,7 @@
|
|
|
20244
20262
|
}
|
|
20245
20263
|
}
|
|
20246
20264
|
|
|
20247
|
-
const version = "3.1.
|
|
20265
|
+
const version = "3.1.4";
|
|
20248
20266
|
|
|
20249
20267
|
const createVuetify = function () {
|
|
20250
20268
|
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|