vuetify 3.10.2 → 3.10.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/dist/json/attributes.json +3585 -3581
- package/dist/json/importMap-labs.json +22 -22
- package/dist/json/importMap.json +136 -136
- package/dist/json/tags.json +1 -0
- package/dist/json/web-types.json +6506 -6482
- package/dist/vuetify-labs.cjs +124 -92
- package/dist/vuetify-labs.css +4941 -4941
- package/dist/vuetify-labs.d.ts +1375 -1363
- package/dist/vuetify-labs.esm.js +125 -93
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +124 -92
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +116 -87
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +6491 -6491
- package/dist/vuetify.d.ts +1120 -1108
- package/dist/vuetify.esm.js +116 -87
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +116 -87
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1435 -1428
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.d.ts +3 -3
- package/lib/components/VAlert/VAlertTitle.d.ts +3 -3
- package/lib/components/VApp/VApp.d.ts +3 -3
- package/lib/components/VAppBar/VAppBar.d.ts +3 -3
- package/lib/components/VAppBar/VAppBarNavIcon.d.ts +6 -6
- package/lib/components/VAppBar/VAppBarTitle.d.ts +3 -3
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +116 -116
- package/lib/components/VAutocomplete/VAutocomplete.js +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VAvatar/VAvatar.d.ts +3 -3
- package/lib/components/VBadge/VBadge.d.ts +3 -3
- package/lib/components/VBanner/VBanner.d.ts +3 -3
- package/lib/components/VBanner/VBannerActions.d.ts +3 -3
- package/lib/components/VBanner/VBannerText.d.ts +3 -3
- package/lib/components/VBottomNavigation/VBottomNavigation.d.ts +3 -3
- package/lib/components/VBottomSheet/VBottomSheet.d.ts +3 -3
- package/lib/components/VBreadcrumbs/VBreadcrumbs.d.ts +3 -3
- package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.d.ts +3 -3
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.d.ts +3 -3
- package/lib/components/VBtn/VBtn.d.ts +6 -6
- package/lib/components/VBtn/VBtn.js +5 -5
- package/lib/components/VBtn/VBtn.js.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.d.ts +3 -3
- package/lib/components/VBtnToggle/VBtnToggle.d.ts +3 -3
- package/lib/components/VCard/VCard.d.ts +6 -6
- package/lib/components/VCard/VCard.js +2 -2
- package/lib/components/VCard/VCard.js.map +1 -1
- package/lib/components/VCard/VCardActions.d.ts +3 -3
- package/lib/components/VCard/VCardItem.d.ts +3 -3
- package/lib/components/VCard/VCardSubtitle.d.ts +3 -3
- package/lib/components/VCard/VCardText.d.ts +3 -3
- package/lib/components/VCard/VCardTitle.d.ts +3 -3
- package/lib/components/VCarousel/VCarousel.d.ts +3 -3
- package/lib/components/VCarousel/VCarouselItem.d.ts +3 -3
- package/lib/components/VCheckbox/VCheckbox.d.ts +15 -15
- package/lib/components/VCheckbox/VCheckboxBtn.d.ts +6 -6
- package/lib/components/VChip/VChip.d.ts +6 -6
- package/lib/components/VChip/VChip.js +15 -4
- package/lib/components/VChip/VChip.js.map +1 -1
- package/lib/components/VChipGroup/VChipGroup.d.ts +3 -3
- package/lib/components/VCode/index.d.ts +3 -3
- package/lib/components/VCombobox/VCombobox.d.ts +129 -116
- package/lib/components/VCombobox/VCombobox.js +8 -25
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VCounter/VCounter.d.ts +3 -3
- package/lib/components/VDataIterator/VDataIterator.d.ts +9 -9
- package/lib/components/VDataTable/VDataTable.d.ts +3 -3
- package/lib/components/VDataTable/VDataTableServer.d.ts +3 -3
- package/lib/components/VDataTable/VDataTableVirtual.d.ts +6 -6
- package/lib/components/VDataTable/composables/expand.js +8 -8
- package/lib/components/VDataTable/composables/expand.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.d.ts +3 -3
- package/lib/components/VDialog/VDialog.d.ts +12 -12
- package/lib/components/VDialog/VDialog.js +29 -11
- package/lib/components/VDialog/VDialog.js.map +1 -1
- package/lib/components/VDialog/__test__/VDialog.spec.browser.js +41 -0
- package/lib/components/VDialog/__test__/VDialog.spec.browser.js.map +1 -1
- package/lib/components/VDivider/VDivider.d.ts +3 -3
- package/lib/components/VEmptyState/VEmptyState.d.ts +6 -6
- package/lib/components/VExpansionPanel/VExpansionPanel.d.ts +6 -6
- package/lib/components/VExpansionPanel/VExpansionPanelText.d.ts +3 -3
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.d.ts +6 -6
- package/lib/components/VExpansionPanel/VExpansionPanels.d.ts +6 -6
- package/lib/components/VFab/VFab.d.ts +6 -6
- package/lib/components/VField/VField.d.ts +3 -3
- package/lib/components/VField/VFieldLabel.d.ts +3 -3
- package/lib/components/VFileInput/VFileInput.d.ts +12 -12
- package/lib/components/VFileInput/VFileInput.js +2 -1
- package/lib/components/VFileInput/VFileInput.js.map +1 -1
- package/lib/components/VFooter/VFooter.d.ts +3 -3
- package/lib/components/VForm/VForm.d.ts +6 -6
- package/lib/components/VGrid/VCol.d.ts +3 -3
- package/lib/components/VGrid/VContainer.d.ts +3 -3
- package/lib/components/VGrid/VRow.d.ts +3 -3
- package/lib/components/VGrid/VSpacer.d.ts +3 -3
- package/lib/components/VIcon/VIcon.d.ts +3 -3
- package/lib/components/VImg/VImg.d.ts +3 -3
- package/lib/components/VInput/VInput.d.ts +3 -3
- package/lib/components/VItemGroup/VItemGroup.d.ts +3 -3
- package/lib/components/VKbd/VKbd.d.ts +3 -3
- package/lib/components/VLabel/VLabel.d.ts +3 -3
- package/lib/components/VLayout/VLayout.d.ts +3 -3
- package/lib/components/VLayout/VLayoutItem.d.ts +3 -3
- package/lib/components/VLazy/VLazy.d.ts +3 -3
- package/lib/components/VList/VList.d.ts +11 -11
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VList/VListGroup.d.ts +3 -3
- package/lib/components/VList/VListImg.d.ts +3 -3
- package/lib/components/VList/VListItem.d.ts +6 -6
- package/lib/components/VList/VListItem.js +2 -2
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VList/VListItemAction.d.ts +3 -3
- package/lib/components/VList/VListItemMedia.d.ts +3 -3
- package/lib/components/VList/VListItemSubtitle.d.ts +3 -3
- package/lib/components/VList/VListItemTitle.d.ts +3 -3
- package/lib/components/VList/VListSubheader.d.ts +3 -3
- package/lib/components/VLocaleProvider/VLocaleProvider.d.ts +3 -3
- package/lib/components/VMain/VMain.d.ts +3 -3
- package/lib/components/VMenu/VMenu.d.ts +15 -15
- package/lib/components/VMessages/VMessages.d.ts +3 -3
- package/lib/components/VNavigationDrawer/VNavigationDrawer.d.ts +3 -3
- package/lib/components/VNumberInput/VNumberInput.d.ts +66 -66
- package/lib/components/VNumberInput/VNumberInput.js +1 -0
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.d.ts +3 -3
- package/lib/components/VOverlay/VOverlay.d.ts +3 -3
- package/lib/components/VPagination/VPagination.d.ts +3 -3
- package/lib/components/VParallax/VParallax.d.ts +3 -3
- package/lib/components/VProgressCircular/VProgressCircular.d.ts +3 -3
- package/lib/components/VProgressLinear/VProgressLinear.d.ts +3 -3
- package/lib/components/VRadio/VRadio.d.ts +6 -6
- package/lib/components/VRadioGroup/VRadioGroup.d.ts +15 -15
- package/lib/components/VRangeSlider/VRangeSlider.d.ts +12 -12
- package/lib/components/VRating/VRating.d.ts +3 -3
- package/lib/components/VResponsive/VResponsive.d.ts +3 -3
- package/lib/components/VSelect/VSelect.d.ts +140 -140
- package/lib/components/VSelectionControl/VSelectionControl.d.ts +6 -6
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.d.ts +6 -6
- package/lib/components/VSheet/VSheet.d.ts +3 -3
- package/lib/components/VSlideGroup/VSlideGroup.d.ts +3 -3
- package/lib/components/VSlider/VSlider.d.ts +12 -12
- package/lib/components/VSlider/VSliderThumb.d.ts +6 -6
- package/lib/components/VSlider/VSliderTrack.d.ts +3 -3
- package/lib/components/VSnackbar/VSnackbar.d.ts +12 -12
- package/lib/components/VSnackbarQueue/VSnackbarQueue.d.ts +3 -3
- package/lib/components/VSpeedDial/VSpeedDial.d.ts +9 -9
- package/lib/components/VStepper/VStepper.d.ts +3 -3
- package/lib/components/VStepper/VStepperHeader.d.ts +3 -3
- package/lib/components/VStepper/VStepperItem.d.ts +3 -3
- package/lib/components/VStepper/VStepperWindow.d.ts +3 -3
- package/lib/components/VStepper/VStepperWindowItem.d.ts +3 -3
- package/lib/components/VSwitch/VSwitch.d.ts +15 -15
- package/lib/components/VSwitch/VSwitch.js +2 -2
- package/lib/components/VSwitch/VSwitch.js.map +1 -1
- package/lib/components/VSystemBar/VSystemBar.d.ts +3 -3
- package/lib/components/VTable/VTable.d.ts +3 -3
- package/lib/components/VTabs/VTab.d.ts +24 -24
- package/lib/components/VTabs/VTabs.d.ts +3 -3
- package/lib/components/VTabs/VTabsWindow.d.ts +3 -3
- package/lib/components/VTabs/VTabsWindowItem.d.ts +3 -3
- package/lib/components/VTextField/VTextField.d.ts +21 -21
- package/lib/components/VTextarea/VTextarea.d.ts +12 -12
- package/lib/components/VThemeProvider/VThemeProvider.d.ts +3 -3
- package/lib/components/VTimePicker/VTimePicker.d.ts +3 -3
- package/lib/components/VTimeline/VTimeline.d.ts +3 -3
- package/lib/components/VTimeline/VTimelineDivider.d.ts +3 -3
- package/lib/components/VTimeline/VTimelineItem.d.ts +3 -3
- package/lib/components/VToolbar/VToolbar.d.ts +3 -3
- package/lib/components/VToolbar/VToolbarItems.d.ts +3 -3
- package/lib/components/VToolbar/VToolbarTitle.d.ts +3 -3
- package/lib/components/VTooltip/VTooltip.d.ts +15 -15
- package/lib/components/VTreeview/VTreeview.d.ts +26 -26
- package/lib/components/VTreeview/VTreeviewChildren.js +1 -1
- package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
- package/lib/components/VTreeview/VTreeviewGroup.d.ts +3 -3
- package/lib/components/VTreeview/VTreeviewItem.d.ts +24 -24
- package/lib/components/VVirtualScroll/VVirtualScroll.d.ts +6 -6
- package/lib/components/VVirtualScroll/VVirtualScrollItem.d.ts +3 -3
- package/lib/components/VWindow/VWindow.d.ts +3 -3
- package/lib/components/VWindow/VWindowItem.d.ts +3 -3
- package/lib/components/transitions/createTransition.d.ts +6 -6
- package/lib/components/transitions/index.d.ts +78 -78
- package/lib/composables/goto.js +2 -2
- package/lib/composables/goto.js.map +1 -1
- package/lib/composables/group.d.ts +2 -0
- package/lib/composables/group.js +15 -9
- package/lib/composables/group.js.map +1 -1
- package/lib/composables/router.d.ts +2 -0
- package/lib/composables/router.js +6 -1
- package/lib/composables/router.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +63 -63
- package/lib/framework.js +1 -1
- package/lib/labs/VCalendar/VCalendar.js +7 -4
- package/lib/labs/VCalendar/VCalendar.js.map +1 -1
- package/lib/labs/VCalendar/composables/calendarWithEvents.js +7 -4
- package/lib/labs/VCalendar/composables/calendarWithEvents.js.map +1 -1
- package/lib/labs/VColorInput/VColorInput.d.ts +6 -6
- package/lib/labs/VDateInput/VDateInput.d.ts +66 -66
- package/lib/labs/VFileUpload/VFileUpload.d.ts +3 -3
- package/lib/labs/VFileUpload/VFileUpload.js +2 -1
- package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
- package/lib/labs/VFileUpload/VFileUploadItem.d.ts +6 -6
- package/lib/labs/VHotkey/VHotkey.d.ts +3 -3
- package/lib/labs/VIconBtn/VIconBtn.d.ts +3 -3
- package/lib/labs/VMaskInput/VMaskInput.d.ts +66 -66
- package/lib/labs/VPicker/VPicker.d.ts +3 -3
- package/lib/labs/VPicker/VPickerTitle.d.ts +3 -3
- package/lib/labs/VPie/VPieTooltip.d.ts +3 -3
- package/lib/labs/VStepperVertical/VStepperVertical.d.ts +6 -6
- package/lib/labs/VStepperVertical/VStepperVerticalItem.d.ts +6 -6
- package/lib/labs/VVideo/VVideo.d.ts +87 -87
- package/lib/labs/VVideo/VVideoControls.d.ts +40 -40
- package/lib/labs/VVideo/VVideoVolume.d.ts +33 -33
- package/lib/util/animation.js +1 -1
- package/lib/util/animation.js.map +1 -1
- package/lib/util/box.d.ts +1 -1
- package/lib/util/box.js +19 -14
- package/lib/util/box.js.map +1 -1
- package/lib/util/createSimpleFunctional.d.ts +3 -3
- package/lib/util/events.js +2 -2
- package/lib/util/events.js.map +1 -1
- package/package.json +9 -9
|
@@ -5,8 +5,8 @@ export declare const VFabTransition: {
|
|
|
5
5
|
group: boolean;
|
|
6
6
|
hideOnLeave: boolean;
|
|
7
7
|
leaveAbsolute: boolean;
|
|
8
|
-
mode: string
|
|
9
|
-
origin: string
|
|
8
|
+
mode: string;
|
|
9
|
+
origin: string;
|
|
10
10
|
} & {} & {
|
|
11
11
|
$children?: {
|
|
12
12
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -43,8 +43,8 @@ export declare const VFabTransition: {
|
|
|
43
43
|
group: boolean;
|
|
44
44
|
hideOnLeave: boolean;
|
|
45
45
|
leaveAbsolute: boolean;
|
|
46
|
-
mode: string
|
|
47
|
-
origin: string
|
|
46
|
+
mode: string;
|
|
47
|
+
origin: string;
|
|
48
48
|
} & {} & {
|
|
49
49
|
$children?: {
|
|
50
50
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -74,8 +74,8 @@ export declare const VFabTransition: {
|
|
|
74
74
|
group: boolean;
|
|
75
75
|
hideOnLeave: boolean;
|
|
76
76
|
leaveAbsolute: boolean;
|
|
77
|
-
mode: string
|
|
78
|
-
origin: string
|
|
77
|
+
mode: string;
|
|
78
|
+
origin: string;
|
|
79
79
|
} & {} & {
|
|
80
80
|
$children?: {
|
|
81
81
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -134,8 +134,8 @@ export declare const VDialogBottomTransition: {
|
|
|
134
134
|
group: boolean;
|
|
135
135
|
hideOnLeave: boolean;
|
|
136
136
|
leaveAbsolute: boolean;
|
|
137
|
-
mode: string
|
|
138
|
-
origin: string
|
|
137
|
+
mode: string;
|
|
138
|
+
origin: string;
|
|
139
139
|
} & {} & {
|
|
140
140
|
$children?: {
|
|
141
141
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -172,8 +172,8 @@ export declare const VDialogBottomTransition: {
|
|
|
172
172
|
group: boolean;
|
|
173
173
|
hideOnLeave: boolean;
|
|
174
174
|
leaveAbsolute: boolean;
|
|
175
|
-
mode: string
|
|
176
|
-
origin: string
|
|
175
|
+
mode: string;
|
|
176
|
+
origin: string;
|
|
177
177
|
} & {} & {
|
|
178
178
|
$children?: {
|
|
179
179
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -203,8 +203,8 @@ export declare const VDialogBottomTransition: {
|
|
|
203
203
|
group: boolean;
|
|
204
204
|
hideOnLeave: boolean;
|
|
205
205
|
leaveAbsolute: boolean;
|
|
206
|
-
mode: string
|
|
207
|
-
origin: string
|
|
206
|
+
mode: string;
|
|
207
|
+
origin: string;
|
|
208
208
|
} & {} & {
|
|
209
209
|
$children?: {
|
|
210
210
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -262,8 +262,8 @@ export declare const VDialogTopTransition: {
|
|
|
262
262
|
group: boolean;
|
|
263
263
|
hideOnLeave: boolean;
|
|
264
264
|
leaveAbsolute: boolean;
|
|
265
|
-
mode: string
|
|
266
|
-
origin: string
|
|
265
|
+
mode: string;
|
|
266
|
+
origin: string;
|
|
267
267
|
} & {} & {
|
|
268
268
|
$children?: {
|
|
269
269
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -300,8 +300,8 @@ export declare const VDialogTopTransition: {
|
|
|
300
300
|
group: boolean;
|
|
301
301
|
hideOnLeave: boolean;
|
|
302
302
|
leaveAbsolute: boolean;
|
|
303
|
-
mode: string
|
|
304
|
-
origin: string
|
|
303
|
+
mode: string;
|
|
304
|
+
origin: string;
|
|
305
305
|
} & {} & {
|
|
306
306
|
$children?: {
|
|
307
307
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -331,8 +331,8 @@ export declare const VDialogTopTransition: {
|
|
|
331
331
|
group: boolean;
|
|
332
332
|
hideOnLeave: boolean;
|
|
333
333
|
leaveAbsolute: boolean;
|
|
334
|
-
mode: string
|
|
335
|
-
origin: string
|
|
334
|
+
mode: string;
|
|
335
|
+
origin: string;
|
|
336
336
|
} & {} & {
|
|
337
337
|
$children?: {
|
|
338
338
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -390,8 +390,8 @@ export declare const VFadeTransition: {
|
|
|
390
390
|
group: boolean;
|
|
391
391
|
hideOnLeave: boolean;
|
|
392
392
|
leaveAbsolute: boolean;
|
|
393
|
-
mode: string
|
|
394
|
-
origin: string
|
|
393
|
+
mode: string;
|
|
394
|
+
origin: string;
|
|
395
395
|
} & {} & {
|
|
396
396
|
$children?: {
|
|
397
397
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -428,8 +428,8 @@ export declare const VFadeTransition: {
|
|
|
428
428
|
group: boolean;
|
|
429
429
|
hideOnLeave: boolean;
|
|
430
430
|
leaveAbsolute: boolean;
|
|
431
|
-
mode: string
|
|
432
|
-
origin: string
|
|
431
|
+
mode: string;
|
|
432
|
+
origin: string;
|
|
433
433
|
} & {} & {
|
|
434
434
|
$children?: {
|
|
435
435
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -459,8 +459,8 @@ export declare const VFadeTransition: {
|
|
|
459
459
|
group: boolean;
|
|
460
460
|
hideOnLeave: boolean;
|
|
461
461
|
leaveAbsolute: boolean;
|
|
462
|
-
mode: string
|
|
463
|
-
origin: string
|
|
462
|
+
mode: string;
|
|
463
|
+
origin: string;
|
|
464
464
|
} & {} & {
|
|
465
465
|
$children?: {
|
|
466
466
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -518,8 +518,8 @@ export declare const VScaleTransition: {
|
|
|
518
518
|
group: boolean;
|
|
519
519
|
hideOnLeave: boolean;
|
|
520
520
|
leaveAbsolute: boolean;
|
|
521
|
-
mode: string
|
|
522
|
-
origin: string
|
|
521
|
+
mode: string;
|
|
522
|
+
origin: string;
|
|
523
523
|
} & {} & {
|
|
524
524
|
$children?: {
|
|
525
525
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -556,8 +556,8 @@ export declare const VScaleTransition: {
|
|
|
556
556
|
group: boolean;
|
|
557
557
|
hideOnLeave: boolean;
|
|
558
558
|
leaveAbsolute: boolean;
|
|
559
|
-
mode: string
|
|
560
|
-
origin: string
|
|
559
|
+
mode: string;
|
|
560
|
+
origin: string;
|
|
561
561
|
} & {} & {
|
|
562
562
|
$children?: {
|
|
563
563
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -587,8 +587,8 @@ export declare const VScaleTransition: {
|
|
|
587
587
|
group: boolean;
|
|
588
588
|
hideOnLeave: boolean;
|
|
589
589
|
leaveAbsolute: boolean;
|
|
590
|
-
mode: string
|
|
591
|
-
origin: string
|
|
590
|
+
mode: string;
|
|
591
|
+
origin: string;
|
|
592
592
|
} & {} & {
|
|
593
593
|
$children?: {
|
|
594
594
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -646,8 +646,8 @@ export declare const VScrollXTransition: {
|
|
|
646
646
|
group: boolean;
|
|
647
647
|
hideOnLeave: boolean;
|
|
648
648
|
leaveAbsolute: boolean;
|
|
649
|
-
mode: string
|
|
650
|
-
origin: string
|
|
649
|
+
mode: string;
|
|
650
|
+
origin: string;
|
|
651
651
|
} & {} & {
|
|
652
652
|
$children?: {
|
|
653
653
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -684,8 +684,8 @@ export declare const VScrollXTransition: {
|
|
|
684
684
|
group: boolean;
|
|
685
685
|
hideOnLeave: boolean;
|
|
686
686
|
leaveAbsolute: boolean;
|
|
687
|
-
mode: string
|
|
688
|
-
origin: string
|
|
687
|
+
mode: string;
|
|
688
|
+
origin: string;
|
|
689
689
|
} & {} & {
|
|
690
690
|
$children?: {
|
|
691
691
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -715,8 +715,8 @@ export declare const VScrollXTransition: {
|
|
|
715
715
|
group: boolean;
|
|
716
716
|
hideOnLeave: boolean;
|
|
717
717
|
leaveAbsolute: boolean;
|
|
718
|
-
mode: string
|
|
719
|
-
origin: string
|
|
718
|
+
mode: string;
|
|
719
|
+
origin: string;
|
|
720
720
|
} & {} & {
|
|
721
721
|
$children?: {
|
|
722
722
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -774,8 +774,8 @@ export declare const VScrollXReverseTransition: {
|
|
|
774
774
|
group: boolean;
|
|
775
775
|
hideOnLeave: boolean;
|
|
776
776
|
leaveAbsolute: boolean;
|
|
777
|
-
mode: string
|
|
778
|
-
origin: string
|
|
777
|
+
mode: string;
|
|
778
|
+
origin: string;
|
|
779
779
|
} & {} & {
|
|
780
780
|
$children?: {
|
|
781
781
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -812,8 +812,8 @@ export declare const VScrollXReverseTransition: {
|
|
|
812
812
|
group: boolean;
|
|
813
813
|
hideOnLeave: boolean;
|
|
814
814
|
leaveAbsolute: boolean;
|
|
815
|
-
mode: string
|
|
816
|
-
origin: string
|
|
815
|
+
mode: string;
|
|
816
|
+
origin: string;
|
|
817
817
|
} & {} & {
|
|
818
818
|
$children?: {
|
|
819
819
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -843,8 +843,8 @@ export declare const VScrollXReverseTransition: {
|
|
|
843
843
|
group: boolean;
|
|
844
844
|
hideOnLeave: boolean;
|
|
845
845
|
leaveAbsolute: boolean;
|
|
846
|
-
mode: string
|
|
847
|
-
origin: string
|
|
846
|
+
mode: string;
|
|
847
|
+
origin: string;
|
|
848
848
|
} & {} & {
|
|
849
849
|
$children?: {
|
|
850
850
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -902,8 +902,8 @@ export declare const VScrollYTransition: {
|
|
|
902
902
|
group: boolean;
|
|
903
903
|
hideOnLeave: boolean;
|
|
904
904
|
leaveAbsolute: boolean;
|
|
905
|
-
mode: string
|
|
906
|
-
origin: string
|
|
905
|
+
mode: string;
|
|
906
|
+
origin: string;
|
|
907
907
|
} & {} & {
|
|
908
908
|
$children?: {
|
|
909
909
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -940,8 +940,8 @@ export declare const VScrollYTransition: {
|
|
|
940
940
|
group: boolean;
|
|
941
941
|
hideOnLeave: boolean;
|
|
942
942
|
leaveAbsolute: boolean;
|
|
943
|
-
mode: string
|
|
944
|
-
origin: string
|
|
943
|
+
mode: string;
|
|
944
|
+
origin: string;
|
|
945
945
|
} & {} & {
|
|
946
946
|
$children?: {
|
|
947
947
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -971,8 +971,8 @@ export declare const VScrollYTransition: {
|
|
|
971
971
|
group: boolean;
|
|
972
972
|
hideOnLeave: boolean;
|
|
973
973
|
leaveAbsolute: boolean;
|
|
974
|
-
mode: string
|
|
975
|
-
origin: string
|
|
974
|
+
mode: string;
|
|
975
|
+
origin: string;
|
|
976
976
|
} & {} & {
|
|
977
977
|
$children?: {
|
|
978
978
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -1030,8 +1030,8 @@ export declare const VScrollYReverseTransition: {
|
|
|
1030
1030
|
group: boolean;
|
|
1031
1031
|
hideOnLeave: boolean;
|
|
1032
1032
|
leaveAbsolute: boolean;
|
|
1033
|
-
mode: string
|
|
1034
|
-
origin: string
|
|
1033
|
+
mode: string;
|
|
1034
|
+
origin: string;
|
|
1035
1035
|
} & {} & {
|
|
1036
1036
|
$children?: {
|
|
1037
1037
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -1068,8 +1068,8 @@ export declare const VScrollYReverseTransition: {
|
|
|
1068
1068
|
group: boolean;
|
|
1069
1069
|
hideOnLeave: boolean;
|
|
1070
1070
|
leaveAbsolute: boolean;
|
|
1071
|
-
mode: string
|
|
1072
|
-
origin: string
|
|
1071
|
+
mode: string;
|
|
1072
|
+
origin: string;
|
|
1073
1073
|
} & {} & {
|
|
1074
1074
|
$children?: {
|
|
1075
1075
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -1099,8 +1099,8 @@ export declare const VScrollYReverseTransition: {
|
|
|
1099
1099
|
group: boolean;
|
|
1100
1100
|
hideOnLeave: boolean;
|
|
1101
1101
|
leaveAbsolute: boolean;
|
|
1102
|
-
mode: string
|
|
1103
|
-
origin: string
|
|
1102
|
+
mode: string;
|
|
1103
|
+
origin: string;
|
|
1104
1104
|
} & {} & {
|
|
1105
1105
|
$children?: {
|
|
1106
1106
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -1158,8 +1158,8 @@ export declare const VSlideXTransition: {
|
|
|
1158
1158
|
group: boolean;
|
|
1159
1159
|
hideOnLeave: boolean;
|
|
1160
1160
|
leaveAbsolute: boolean;
|
|
1161
|
-
mode: string
|
|
1162
|
-
origin: string
|
|
1161
|
+
mode: string;
|
|
1162
|
+
origin: string;
|
|
1163
1163
|
} & {} & {
|
|
1164
1164
|
$children?: {
|
|
1165
1165
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -1196,8 +1196,8 @@ export declare const VSlideXTransition: {
|
|
|
1196
1196
|
group: boolean;
|
|
1197
1197
|
hideOnLeave: boolean;
|
|
1198
1198
|
leaveAbsolute: boolean;
|
|
1199
|
-
mode: string
|
|
1200
|
-
origin: string
|
|
1199
|
+
mode: string;
|
|
1200
|
+
origin: string;
|
|
1201
1201
|
} & {} & {
|
|
1202
1202
|
$children?: {
|
|
1203
1203
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -1227,8 +1227,8 @@ export declare const VSlideXTransition: {
|
|
|
1227
1227
|
group: boolean;
|
|
1228
1228
|
hideOnLeave: boolean;
|
|
1229
1229
|
leaveAbsolute: boolean;
|
|
1230
|
-
mode: string
|
|
1231
|
-
origin: string
|
|
1230
|
+
mode: string;
|
|
1231
|
+
origin: string;
|
|
1232
1232
|
} & {} & {
|
|
1233
1233
|
$children?: {
|
|
1234
1234
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -1286,8 +1286,8 @@ export declare const VSlideXReverseTransition: {
|
|
|
1286
1286
|
group: boolean;
|
|
1287
1287
|
hideOnLeave: boolean;
|
|
1288
1288
|
leaveAbsolute: boolean;
|
|
1289
|
-
mode: string
|
|
1290
|
-
origin: string
|
|
1289
|
+
mode: string;
|
|
1290
|
+
origin: string;
|
|
1291
1291
|
} & {} & {
|
|
1292
1292
|
$children?: {
|
|
1293
1293
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -1324,8 +1324,8 @@ export declare const VSlideXReverseTransition: {
|
|
|
1324
1324
|
group: boolean;
|
|
1325
1325
|
hideOnLeave: boolean;
|
|
1326
1326
|
leaveAbsolute: boolean;
|
|
1327
|
-
mode: string
|
|
1328
|
-
origin: string
|
|
1327
|
+
mode: string;
|
|
1328
|
+
origin: string;
|
|
1329
1329
|
} & {} & {
|
|
1330
1330
|
$children?: {
|
|
1331
1331
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -1355,8 +1355,8 @@ export declare const VSlideXReverseTransition: {
|
|
|
1355
1355
|
group: boolean;
|
|
1356
1356
|
hideOnLeave: boolean;
|
|
1357
1357
|
leaveAbsolute: boolean;
|
|
1358
|
-
mode: string
|
|
1359
|
-
origin: string
|
|
1358
|
+
mode: string;
|
|
1359
|
+
origin: string;
|
|
1360
1360
|
} & {} & {
|
|
1361
1361
|
$children?: {
|
|
1362
1362
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -1414,8 +1414,8 @@ export declare const VSlideYTransition: {
|
|
|
1414
1414
|
group: boolean;
|
|
1415
1415
|
hideOnLeave: boolean;
|
|
1416
1416
|
leaveAbsolute: boolean;
|
|
1417
|
-
mode: string
|
|
1418
|
-
origin: string
|
|
1417
|
+
mode: string;
|
|
1418
|
+
origin: string;
|
|
1419
1419
|
} & {} & {
|
|
1420
1420
|
$children?: {
|
|
1421
1421
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -1452,8 +1452,8 @@ export declare const VSlideYTransition: {
|
|
|
1452
1452
|
group: boolean;
|
|
1453
1453
|
hideOnLeave: boolean;
|
|
1454
1454
|
leaveAbsolute: boolean;
|
|
1455
|
-
mode: string
|
|
1456
|
-
origin: string
|
|
1455
|
+
mode: string;
|
|
1456
|
+
origin: string;
|
|
1457
1457
|
} & {} & {
|
|
1458
1458
|
$children?: {
|
|
1459
1459
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -1483,8 +1483,8 @@ export declare const VSlideYTransition: {
|
|
|
1483
1483
|
group: boolean;
|
|
1484
1484
|
hideOnLeave: boolean;
|
|
1485
1485
|
leaveAbsolute: boolean;
|
|
1486
|
-
mode: string
|
|
1487
|
-
origin: string
|
|
1486
|
+
mode: string;
|
|
1487
|
+
origin: string;
|
|
1488
1488
|
} & {} & {
|
|
1489
1489
|
$children?: {
|
|
1490
1490
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -1542,8 +1542,8 @@ export declare const VSlideYReverseTransition: {
|
|
|
1542
1542
|
group: boolean;
|
|
1543
1543
|
hideOnLeave: boolean;
|
|
1544
1544
|
leaveAbsolute: boolean;
|
|
1545
|
-
mode: string
|
|
1546
|
-
origin: string
|
|
1545
|
+
mode: string;
|
|
1546
|
+
origin: string;
|
|
1547
1547
|
} & {} & {
|
|
1548
1548
|
$children?: {
|
|
1549
1549
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -1580,8 +1580,8 @@ export declare const VSlideYReverseTransition: {
|
|
|
1580
1580
|
group: boolean;
|
|
1581
1581
|
hideOnLeave: boolean;
|
|
1582
1582
|
leaveAbsolute: boolean;
|
|
1583
|
-
mode: string
|
|
1584
|
-
origin: string
|
|
1583
|
+
mode: string;
|
|
1584
|
+
origin: string;
|
|
1585
1585
|
} & {} & {
|
|
1586
1586
|
$children?: {
|
|
1587
1587
|
default?: (() => import("vue").VNodeChild) | undefined;
|
|
@@ -1611,8 +1611,8 @@ export declare const VSlideYReverseTransition: {
|
|
|
1611
1611
|
group: boolean;
|
|
1612
1612
|
hideOnLeave: boolean;
|
|
1613
1613
|
leaveAbsolute: boolean;
|
|
1614
|
-
mode: string
|
|
1615
|
-
origin: string
|
|
1614
|
+
mode: string;
|
|
1615
|
+
origin: string;
|
|
1616
1616
|
} & {} & {
|
|
1617
1617
|
$children?: {
|
|
1618
1618
|
default?: (() => import("vue").VNodeChild) | undefined;
|
package/lib/composables/goto.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Utilities
|
|
2
2
|
import { inject, toRef } from 'vue';
|
|
3
3
|
import { useRtl } from "./locale.js";
|
|
4
|
-
import { clamp, consoleWarn, easingPatterns, mergeDeep, refElement } from "../util/index.js"; // Types
|
|
4
|
+
import { clamp, consoleWarn, easingPatterns, mergeDeep, PREFERS_REDUCED_MOTION, refElement } from "../util/index.js"; // Types
|
|
5
5
|
export const GoToSymbol = Symbol.for('vuetify:goto');
|
|
6
6
|
function genDefaults() {
|
|
7
7
|
return {
|
|
@@ -41,7 +41,7 @@ export async function scrollTo(_target, _options, horizontal, goTo) {
|
|
|
41
41
|
const rtl = goTo?.rtl.value;
|
|
42
42
|
const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0;
|
|
43
43
|
const container = options.container === 'parent' && target instanceof HTMLElement ? target.parentElement : getContainer(options.container);
|
|
44
|
-
const ease =
|
|
44
|
+
const ease = PREFERS_REDUCED_MOTION() ? options.patterns.instant : typeof options.easing === 'function' ? options.easing : options.patterns[options.easing];
|
|
45
45
|
if (!ease) throw new TypeError(`Easing function "${options.easing}" not found.`);
|
|
46
46
|
let targetLocation;
|
|
47
47
|
if (typeof target === 'number') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goto.js","names":["inject","toRef","useRtl","clamp","consoleWarn","easingPatterns","mergeDeep","refElement","GoToSymbol","Symbol","for","genDefaults","container","undefined","duration","layout","offset","easing","patterns","getContainer","el","getTarget","document","scrollingElement","body","querySelector","getOffset","target","horizontal","rtl","totalOffset","offsetLeft","offsetTop","offsetParent","createGoTo","options","locale","isRtl","scrollTo","_target","_options","goTo","property","value","HTMLElement","parentElement","ease","window","matchMedia","matches","instant","TypeError","targetLocation","styles","getComputedStyle","layoutOffset","getPropertyValue","parseInt","clampTarget","startLocation","Promise","resolve","startTime","performance","now","requestAnimationFrame","step","currentTime","timeElapsed","progress","location","Math","floor","abs","useGoTo","arguments","length","goToInstance","Error","go","scrollWidth","scrollHeight","containerWidth","containerHeight","innerWidth","innerHeight","offsetWidth","offsetHeight","min","max"],"sources":["../../src/composables/goto.ts"],"sourcesContent":["// Utilities\nimport { inject, toRef } from 'vue'\nimport { useRtl } from './locale'\nimport { clamp, consoleWarn, easingPatterns, mergeDeep, refElement } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance, InjectionKey, Ref } from 'vue'\nimport type { LocaleInstance, RtlInstance } from './locale'\nimport type { EasingFunction } from '@/util'\n\nexport interface GoToInstance {\n rtl: Ref<boolean>\n options: InternalGoToOptions\n}\n\nexport interface InternalGoToOptions {\n container: ComponentPublicInstance | HTMLElement | string\n duration: number\n layout: boolean\n offset: number\n easing: string | EasingFunction\n patterns: Record<string, EasingFunction>\n}\n\nexport type GoToOptions = Partial<InternalGoToOptions>\n\nexport const GoToSymbol: InjectionKey<GoToInstance> = Symbol.for('vuetify:goto')\n\nfunction genDefaults () {\n return {\n container: undefined,\n duration: 300,\n layout: false,\n offset: 0,\n easing: 'easeInOutCubic' satisfies keyof typeof easingPatterns,\n patterns: easingPatterns,\n }\n}\n\nfunction getContainer (el?: ComponentPublicInstance | HTMLElement | string) {\n return getTarget(el) ?? (document.scrollingElement || document.body) as HTMLElement\n}\n\nfunction getTarget (el: ComponentPublicInstance | HTMLElement | string | undefined) {\n return (typeof el === 'string') ? document.querySelector<HTMLElement>(el) : refElement(el)\n}\n\nfunction getOffset (target: any, horizontal?: boolean, rtl?: boolean): number {\n if (typeof target === 'number') return horizontal && rtl ? -target : target\n\n let el = getTarget(target)\n let totalOffset = 0\n while (el) {\n totalOffset += horizontal ? el.offsetLeft : el.offsetTop\n el = el.offsetParent as HTMLElement\n }\n\n return totalOffset\n}\n\nexport function createGoTo (\n options: GoToOptions| undefined,\n locale: LocaleInstance & RtlInstance\n): GoToInstance {\n return {\n rtl: locale.isRtl,\n options: mergeDeep(genDefaults(), options) as InternalGoToOptions,\n }\n}\n\nexport async function scrollTo (\n _target: ComponentPublicInstance | HTMLElement | number | string,\n _options: GoToOptions,\n horizontal?: boolean,\n goTo?: GoToInstance,\n) {\n const property = horizontal ? 'scrollLeft' : 'scrollTop'\n const options = mergeDeep(goTo?.options ?? genDefaults(), _options)\n const rtl = goTo?.rtl.value\n const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0\n const container = options.container === 'parent' && target instanceof HTMLElement\n ? target.parentElement!\n : getContainer(options.container)\n const ease = window.matchMedia('(prefers-reduced-motion: reduce)').matches ? options.patterns.instant\n : typeof options.easing === 'function' ? options.easing\n : options.patterns[options.easing]\n\n if (!ease) throw new TypeError(`Easing function \"${options.easing}\" not found.`)\n\n let targetLocation: number\n if (typeof target === 'number') {\n targetLocation = getOffset(target, horizontal, rtl)\n } else {\n targetLocation = getOffset(target, horizontal, rtl) - getOffset(container, horizontal, rtl)\n\n if (options.layout) {\n const styles = window.getComputedStyle(target)\n const layoutOffset = styles.getPropertyValue('--v-layout-top')\n\n if (layoutOffset) targetLocation -= parseInt(layoutOffset, 10)\n }\n }\n\n targetLocation += options.offset\n targetLocation = clampTarget(container, targetLocation, !!rtl, !!horizontal)\n\n const startLocation = container[property] ?? 0\n\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const startTime = performance.now()\n\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = timeElapsed / options.duration\n const location = Math.floor(\n startLocation +\n (targetLocation - startLocation) *\n ease(clamp(progress, 0, 1))\n )\n\n container[property] = location\n\n // Allow for some jitter if target time has elapsed\n if (progress >= 1 && Math.abs(location - container[property]) < 10) {\n return resolve(targetLocation)\n } else if (progress > 2) {\n // The target might not be reachable\n consoleWarn('Scroll target is not reachable')\n return resolve(container[property])\n }\n\n requestAnimationFrame(step)\n }))\n}\n\nexport function useGoTo (_options: GoToOptions = {}) {\n const goToInstance = inject(GoToSymbol)\n const { isRtl } = useRtl()\n\n if (!goToInstance) throw new Error('[Vuetify] Could not find injected goto instance')\n\n const goTo = {\n ...goToInstance,\n // can be set via VLocaleProvider\n rtl: toRef(() => goToInstance.rtl.value || isRtl.value),\n }\n\n async function go (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) {\n return scrollTo(target, mergeDeep(_options, options), false, goTo)\n }\n\n go.horizontal = async (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) => {\n return scrollTo(target, mergeDeep(_options, options), true, goTo)\n }\n\n return go\n}\n\n/**\n * Clamp target value to achieve a smooth scroll animation\n * when the value goes outside the scroll container size\n */\nfunction clampTarget (\n container: HTMLElement,\n value: number,\n rtl: boolean,\n horizontal: boolean,\n) {\n const { scrollWidth, scrollHeight } = container\n const [containerWidth, containerHeight] = container === document.scrollingElement\n ? [window.innerWidth, window.innerHeight]\n : [container.offsetWidth, container.offsetHeight]\n\n let min: number\n let max: number\n\n if (horizontal) {\n if (rtl) {\n min = -(scrollWidth - containerWidth)\n max = 0\n } else {\n min = 0\n max = scrollWidth - containerWidth\n }\n } else {\n min = 0\n max = scrollHeight + -containerHeight\n }\n\n return clamp(value, min, max)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"goto.js","names":["inject","toRef","useRtl","clamp","consoleWarn","easingPatterns","mergeDeep","PREFERS_REDUCED_MOTION","refElement","GoToSymbol","Symbol","for","genDefaults","container","undefined","duration","layout","offset","easing","patterns","getContainer","el","getTarget","document","scrollingElement","body","querySelector","getOffset","target","horizontal","rtl","totalOffset","offsetLeft","offsetTop","offsetParent","createGoTo","options","locale","isRtl","scrollTo","_target","_options","goTo","property","value","HTMLElement","parentElement","ease","instant","TypeError","targetLocation","styles","window","getComputedStyle","layoutOffset","getPropertyValue","parseInt","clampTarget","startLocation","Promise","resolve","startTime","performance","now","requestAnimationFrame","step","currentTime","timeElapsed","progress","location","Math","floor","abs","useGoTo","arguments","length","goToInstance","Error","go","scrollWidth","scrollHeight","containerWidth","containerHeight","innerWidth","innerHeight","offsetWidth","offsetHeight","min","max"],"sources":["../../src/composables/goto.ts"],"sourcesContent":["// Utilities\nimport { inject, toRef } from 'vue'\nimport { useRtl } from './locale'\nimport { clamp, consoleWarn, easingPatterns, mergeDeep, PREFERS_REDUCED_MOTION, refElement } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance, InjectionKey, Ref } from 'vue'\nimport type { LocaleInstance, RtlInstance } from './locale'\nimport type { EasingFunction } from '@/util'\n\nexport interface GoToInstance {\n rtl: Ref<boolean>\n options: InternalGoToOptions\n}\n\nexport interface InternalGoToOptions {\n container: ComponentPublicInstance | HTMLElement | string\n duration: number\n layout: boolean\n offset: number\n easing: string | EasingFunction\n patterns: Record<string, EasingFunction>\n}\n\nexport type GoToOptions = Partial<InternalGoToOptions>\n\nexport const GoToSymbol: InjectionKey<GoToInstance> = Symbol.for('vuetify:goto')\n\nfunction genDefaults () {\n return {\n container: undefined,\n duration: 300,\n layout: false,\n offset: 0,\n easing: 'easeInOutCubic' satisfies keyof typeof easingPatterns,\n patterns: easingPatterns,\n }\n}\n\nfunction getContainer (el?: ComponentPublicInstance | HTMLElement | string) {\n return getTarget(el) ?? (document.scrollingElement || document.body) as HTMLElement\n}\n\nfunction getTarget (el: ComponentPublicInstance | HTMLElement | string | undefined) {\n return (typeof el === 'string') ? document.querySelector<HTMLElement>(el) : refElement(el)\n}\n\nfunction getOffset (target: any, horizontal?: boolean, rtl?: boolean): number {\n if (typeof target === 'number') return horizontal && rtl ? -target : target\n\n let el = getTarget(target)\n let totalOffset = 0\n while (el) {\n totalOffset += horizontal ? el.offsetLeft : el.offsetTop\n el = el.offsetParent as HTMLElement\n }\n\n return totalOffset\n}\n\nexport function createGoTo (\n options: GoToOptions| undefined,\n locale: LocaleInstance & RtlInstance\n): GoToInstance {\n return {\n rtl: locale.isRtl,\n options: mergeDeep(genDefaults(), options) as InternalGoToOptions,\n }\n}\n\nexport async function scrollTo (\n _target: ComponentPublicInstance | HTMLElement | number | string,\n _options: GoToOptions,\n horizontal?: boolean,\n goTo?: GoToInstance,\n) {\n const property = horizontal ? 'scrollLeft' : 'scrollTop'\n const options = mergeDeep(goTo?.options ?? genDefaults(), _options)\n const rtl = goTo?.rtl.value\n const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0\n const container = options.container === 'parent' && target instanceof HTMLElement\n ? target.parentElement!\n : getContainer(options.container)\n const ease = PREFERS_REDUCED_MOTION() ? options.patterns.instant\n : typeof options.easing === 'function' ? options.easing\n : options.patterns[options.easing]\n\n if (!ease) throw new TypeError(`Easing function \"${options.easing}\" not found.`)\n\n let targetLocation: number\n if (typeof target === 'number') {\n targetLocation = getOffset(target, horizontal, rtl)\n } else {\n targetLocation = getOffset(target, horizontal, rtl) - getOffset(container, horizontal, rtl)\n\n if (options.layout) {\n const styles = window.getComputedStyle(target)\n const layoutOffset = styles.getPropertyValue('--v-layout-top')\n\n if (layoutOffset) targetLocation -= parseInt(layoutOffset, 10)\n }\n }\n\n targetLocation += options.offset\n targetLocation = clampTarget(container, targetLocation, !!rtl, !!horizontal)\n\n const startLocation = container[property] ?? 0\n\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const startTime = performance.now()\n\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = timeElapsed / options.duration\n const location = Math.floor(\n startLocation +\n (targetLocation - startLocation) *\n ease(clamp(progress, 0, 1))\n )\n\n container[property] = location\n\n // Allow for some jitter if target time has elapsed\n if (progress >= 1 && Math.abs(location - container[property]) < 10) {\n return resolve(targetLocation)\n } else if (progress > 2) {\n // The target might not be reachable\n consoleWarn('Scroll target is not reachable')\n return resolve(container[property])\n }\n\n requestAnimationFrame(step)\n }))\n}\n\nexport function useGoTo (_options: GoToOptions = {}) {\n const goToInstance = inject(GoToSymbol)\n const { isRtl } = useRtl()\n\n if (!goToInstance) throw new Error('[Vuetify] Could not find injected goto instance')\n\n const goTo = {\n ...goToInstance,\n // can be set via VLocaleProvider\n rtl: toRef(() => goToInstance.rtl.value || isRtl.value),\n }\n\n async function go (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) {\n return scrollTo(target, mergeDeep(_options, options), false, goTo)\n }\n\n go.horizontal = async (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) => {\n return scrollTo(target, mergeDeep(_options, options), true, goTo)\n }\n\n return go\n}\n\n/**\n * Clamp target value to achieve a smooth scroll animation\n * when the value goes outside the scroll container size\n */\nfunction clampTarget (\n container: HTMLElement,\n value: number,\n rtl: boolean,\n horizontal: boolean,\n) {\n const { scrollWidth, scrollHeight } = container\n const [containerWidth, containerHeight] = container === document.scrollingElement\n ? [window.innerWidth, window.innerHeight]\n : [container.offsetWidth, container.offsetHeight]\n\n let min: number\n let max: number\n\n if (horizontal) {\n if (rtl) {\n min = -(scrollWidth - containerWidth)\n max = 0\n } else {\n min = 0\n max = scrollWidth - containerWidth\n }\n } else {\n min = 0\n max = scrollHeight + -containerHeight\n }\n\n return clamp(value, min, max)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -44,6 +44,8 @@ export interface GroupItemProvide {
|
|
|
44
44
|
value: Ref<unknown>;
|
|
45
45
|
disabled: Ref<boolean | undefined>;
|
|
46
46
|
group: GroupProvide;
|
|
47
|
+
register: () => void;
|
|
48
|
+
unregister: () => void;
|
|
47
49
|
}
|
|
48
50
|
export declare const makeGroupProps: <Defaults extends {
|
|
49
51
|
modelValue?: unknown;
|
package/lib/composables/group.js
CHANGED
|
@@ -36,14 +36,18 @@ export function useGroupItem(props, injectKey) {
|
|
|
36
36
|
}
|
|
37
37
|
const value = toRef(() => props.value);
|
|
38
38
|
const disabled = computed(() => !!(group.disabled.value || props.disabled));
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
function register() {
|
|
40
|
+
group?.register({
|
|
41
|
+
id,
|
|
42
|
+
value,
|
|
43
|
+
disabled
|
|
44
|
+
}, vm);
|
|
45
|
+
}
|
|
46
|
+
function unregister() {
|
|
47
|
+
group?.unregister(id);
|
|
48
|
+
}
|
|
49
|
+
onMounted(() => register());
|
|
50
|
+
onBeforeUnmount(() => unregister());
|
|
47
51
|
const isSelected = computed(() => {
|
|
48
52
|
return group.isSelected(id);
|
|
49
53
|
});
|
|
@@ -71,7 +75,9 @@ export function useGroupItem(props, injectKey) {
|
|
|
71
75
|
selectedClass,
|
|
72
76
|
value,
|
|
73
77
|
disabled,
|
|
74
|
-
group
|
|
78
|
+
group,
|
|
79
|
+
register,
|
|
80
|
+
unregister
|
|
75
81
|
};
|
|
76
82
|
}
|
|
77
83
|
export function useGroup(props, injectKey) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.js","names":["useProxiedModel","computed","inject","onBeforeUnmount","onMounted","onUpdated","provide","reactive","toRef","unref","useId","watch","consoleWarn","deepEqual","findChildrenWithProvide","getCurrentInstance","propsFactory","wrapInArray","makeGroupProps","modelValue","type","default","undefined","multiple","Boolean","mandatory","String","max","Number","selectedClass","disabled","makeGroupItemProps","value","useGroupItem","props","injectKey","required","arguments","length","vm","Error","id","Symbol","for","description","group","register","unregister","isSelected","isFirst","items","isLast","emit","flush","toggle","select","useGroup","isUnmounted","selected","v","getIds","arr","getValues","groupVm","item","unwrapped","key","children","vnode","index","indexOf","useIndexAsValue","splice","push","forceMandatoryValue","findIndex","find","i","internalValue","slice","includes","step","offset","currentId","currentIndex","newIndex","newItem","state","prev","next","getItemIndex","ids","forEach","itemByIndex","values","itemIndex"],"sources":["../../src/composables/group.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from './proxiedModel'\n\n// Utilities\nimport { computed, inject, onBeforeUnmount, onMounted, onUpdated, provide, reactive, toRef, unref, useId, watch } from 'vue'\nimport { consoleWarn, deepEqual, findChildrenWithProvide, getCurrentInstance, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, ExtractPropTypes, InjectionKey, PropType, Ref, UnwrapRef } from 'vue'\nimport type { EventProp } from '@/util'\n\nexport interface GroupItem {\n id: string\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n useIndexAsValue?: boolean\n}\n\nexport interface GroupProps {\n disabled: boolean\n modelValue: unknown\n multiple?: boolean\n mandatory?: boolean | 'force' | undefined\n max?: number | undefined\n selectedClass: string | undefined\n 'onUpdate:modelValue': EventProp<[unknown]> | undefined\n}\n\nexport interface GroupProvide {\n register: (item: GroupItem, cmp: ComponentInternalInstance) => void\n unregister: (id: string) => void\n select: (id: string, value: boolean) => void\n selected: Ref<Readonly<string[]>>\n isSelected: (id: string) => boolean\n prev: () => void\n next: () => void\n selectedClass: Ref<string | undefined>\n items: Readonly<Ref<{\n id: string\n value: unknown\n disabled: boolean | undefined\n }[]>>\n disabled: Ref<boolean | undefined>\n getItemIndex: (value: unknown) => number\n}\n\nexport interface GroupItemProvide {\n id: string\n isSelected: Ref<boolean>\n isFirst: Ref<boolean>\n isLast: Ref<boolean>\n toggle: () => void\n select: (value: boolean) => void\n selectedClass: Ref<(string | undefined)[] | false>\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n group: GroupProvide\n}\n\nexport const makeGroupProps = propsFactory({\n modelValue: {\n type: null,\n default: undefined,\n },\n multiple: Boolean,\n mandatory: [Boolean, String] as PropType<boolean | 'force'>,\n max: Number,\n selectedClass: String,\n disabled: Boolean,\n}, 'group')\n\nexport const makeGroupItemProps = propsFactory({\n value: null,\n disabled: Boolean,\n selectedClass: String,\n}, 'group-item')\n\nexport interface GroupItemProps extends ExtractPropTypes<ReturnType<typeof makeGroupItemProps>> {\n 'onGroup:selected': EventProp<[{ value: boolean }]> | undefined\n}\n\n// Composables\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required?: true,\n): GroupItemProvide\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required: false,\n): GroupItemProvide | null\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required = true,\n): GroupItemProvide | null {\n const vm = getCurrentInstance('useGroupItem')\n\n if (!vm) {\n throw new Error(\n '[Vuetify] useGroupItem composable must be used inside a component setup function'\n )\n }\n\n const id = useId()\n\n provide(Symbol.for(`${injectKey.description}:id`), id)\n\n const group = inject(injectKey, null)\n\n if (!group) {\n if (!required) return group\n\n throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`)\n }\n\n const value = toRef(() => props.value)\n const disabled = computed(() => !!(group.disabled.value || props.disabled))\n\n group.register({\n id,\n value,\n disabled,\n }, vm)\n\n onBeforeUnmount(() => {\n group.unregister(id)\n })\n\n const isSelected = computed(() => {\n return group.isSelected(id)\n })\n const isFirst = computed(() => {\n return group.items.value[0].id === id\n })\n const isLast = computed(() => {\n return group.items.value[group.items.value.length - 1].id === id\n })\n\n const selectedClass = computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass])\n\n watch(isSelected, value => {\n vm.emit('group:selected', { value })\n }, { flush: 'sync' })\n\n return {\n id,\n isSelected,\n isFirst,\n isLast,\n toggle: () => group.select(id, !isSelected.value),\n select: (value: boolean) => group.select(id, value),\n selectedClass,\n value,\n disabled,\n group,\n }\n}\n\nexport function useGroup (\n props: GroupProps,\n injectKey: InjectionKey<GroupProvide>\n) {\n let isUnmounted = false\n const items = reactive<GroupItem[]>([])\n const selected = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => {\n if (v === undefined) return []\n\n return getIds(items, v === null ? [null] : wrapInArray(v))\n },\n v => {\n const arr = getValues(items, v)\n\n return props.multiple ? arr : arr[0]\n }\n )\n\n const groupVm = getCurrentInstance('useGroup')\n\n function register (item: GroupItem, vm: ComponentInternalInstance) {\n // Is there a better way to fix this typing?\n const unwrapped = item as unknown as UnwrapRef<GroupItem>\n\n const key = Symbol.for(`${injectKey.description}:id`)\n const children = findChildrenWithProvide(key, groupVm?.vnode)\n const index = children.indexOf(vm)\n\n if (unref(unwrapped.value) === undefined) {\n unwrapped.value = index\n unwrapped.useIndexAsValue = true\n }\n\n if (index > -1) {\n items.splice(index, 0, unwrapped)\n } else {\n items.push(unwrapped)\n }\n }\n\n function unregister (id: string) {\n if (isUnmounted) return\n\n // TODO: re-evaluate this line's importance in the future\n // should we only modify the model if mandatory is set.\n // selected.value = selected.value.filter(v => v !== id)\n\n forceMandatoryValue()\n\n const index = items.findIndex(item => item.id === id)\n items.splice(index, 1)\n }\n\n // If mandatory and nothing is selected, then select first non-disabled item\n function forceMandatoryValue () {\n const item = items.find(item => !item.disabled)\n if (item && props.mandatory === 'force' && !selected.value.length) {\n selected.value = [item.id]\n }\n }\n\n onMounted(() => {\n forceMandatoryValue()\n })\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n onUpdated(() => {\n // #19655 update the items that use the index as the value.\n for (let i = 0; i < items.length; i++) {\n if (items[i].useIndexAsValue) {\n items[i].value = i\n }\n }\n })\n\n function select (id: string, value?: boolean) {\n const item = items.find(item => item.id === id)\n if (value && item?.disabled) return\n\n if (props.multiple) {\n const internalValue = selected.value.slice()\n const index = internalValue.findIndex(v => v === id)\n const isSelected = ~index\n value = value ?? !isSelected\n\n // We can't remove value if group is\n // mandatory, value already exists,\n // and it is the only value\n if (\n isSelected &&\n props.mandatory &&\n internalValue.length <= 1\n ) return\n\n // We can't add value if it would\n // cause max limit to be exceeded\n if (\n !isSelected &&\n props.max != null &&\n internalValue.length + 1 > props.max\n ) return\n\n if (index < 0 && value) internalValue.push(id)\n else if (index >= 0 && !value) internalValue.splice(index, 1)\n\n selected.value = internalValue\n } else {\n const isSelected = selected.value.includes(id)\n if (props.mandatory && isSelected) return\n if (!isSelected && !value) return\n\n selected.value = (value ?? !isSelected) ? [id] : []\n }\n }\n\n function step (offset: number) {\n // getting an offset from selected value obviously won't work with multiple values\n if (props.multiple) consoleWarn('This method is not supported when using \"multiple\" prop')\n\n if (!selected.value.length) {\n const item = items.find(item => !item.disabled)\n item && (selected.value = [item.id])\n } else {\n const currentId = selected.value[0]\n const currentIndex = items.findIndex(i => i.id === currentId)\n\n let newIndex = (currentIndex + offset) % items.length\n let newItem = items[newIndex]\n\n while (newItem.disabled && newIndex !== currentIndex) {\n newIndex = (newIndex + offset) % items.length\n newItem = items[newIndex]\n }\n\n if (newItem.disabled) return\n\n selected.value = [items[newIndex].id]\n }\n }\n\n const state: GroupProvide = {\n register,\n unregister,\n selected,\n select,\n disabled: toRef(() => props.disabled),\n prev: () => step(items.length - 1),\n next: () => step(1),\n isSelected: (id: string) => selected.value.includes(id),\n selectedClass: toRef(() => props.selectedClass),\n items: toRef(() => items),\n getItemIndex: (value: unknown) => getItemIndex(items, value),\n }\n\n provide(injectKey, state)\n\n return state\n}\n\nfunction getItemIndex (items: UnwrapRef<GroupItem[]>, value: unknown) {\n const ids = getIds(items, [value])\n\n if (!ids.length) return -1\n\n return items.findIndex(item => item.id === ids[0])\n}\n\nfunction getIds (items: UnwrapRef<GroupItem[]>, modelValue: any[]) {\n const ids: string[] = []\n\n modelValue.forEach(value => {\n const item = items.find(item => deepEqual(value, item.value))\n const itemByIndex = items[value]\n\n if (item?.value !== undefined) {\n ids.push(item.id)\n } else if (itemByIndex?.useIndexAsValue) {\n ids.push(itemByIndex.id)\n }\n })\n\n return ids\n}\n\nfunction getValues (items: UnwrapRef<GroupItem[]>, ids: any[]) {\n const values: unknown[] = []\n\n ids.forEach(id => {\n const itemIndex = items.findIndex(item => item.id === id)\n if (~itemIndex) {\n const item = items[itemIndex]\n values.push(item.value !== undefined ? item.value : itemIndex)\n }\n })\n\n return values\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"group.js","names":["useProxiedModel","computed","inject","onBeforeUnmount","onMounted","onUpdated","provide","reactive","toRef","unref","useId","watch","consoleWarn","deepEqual","findChildrenWithProvide","getCurrentInstance","propsFactory","wrapInArray","makeGroupProps","modelValue","type","default","undefined","multiple","Boolean","mandatory","String","max","Number","selectedClass","disabled","makeGroupItemProps","value","useGroupItem","props","injectKey","required","arguments","length","vm","Error","id","Symbol","for","description","group","register","unregister","isSelected","isFirst","items","isLast","emit","flush","toggle","select","useGroup","isUnmounted","selected","v","getIds","arr","getValues","groupVm","item","unwrapped","key","children","vnode","index","indexOf","useIndexAsValue","splice","push","forceMandatoryValue","findIndex","find","i","internalValue","slice","includes","step","offset","currentId","currentIndex","newIndex","newItem","state","prev","next","getItemIndex","ids","forEach","itemByIndex","values","itemIndex"],"sources":["../../src/composables/group.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from './proxiedModel'\n\n// Utilities\nimport { computed, inject, onBeforeUnmount, onMounted, onUpdated, provide, reactive, toRef, unref, useId, watch } from 'vue'\nimport { consoleWarn, deepEqual, findChildrenWithProvide, getCurrentInstance, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { ComponentInternalInstance, ExtractPropTypes, InjectionKey, PropType, Ref, UnwrapRef } from 'vue'\nimport type { EventProp } from '@/util'\n\nexport interface GroupItem {\n id: string\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n useIndexAsValue?: boolean\n}\n\nexport interface GroupProps {\n disabled: boolean\n modelValue: unknown\n multiple?: boolean\n mandatory?: boolean | 'force' | undefined\n max?: number | undefined\n selectedClass: string | undefined\n 'onUpdate:modelValue': EventProp<[unknown]> | undefined\n}\n\nexport interface GroupProvide {\n register: (item: GroupItem, cmp: ComponentInternalInstance) => void\n unregister: (id: string) => void\n select: (id: string, value: boolean) => void\n selected: Ref<Readonly<string[]>>\n isSelected: (id: string) => boolean\n prev: () => void\n next: () => void\n selectedClass: Ref<string | undefined>\n items: Readonly<Ref<{\n id: string\n value: unknown\n disabled: boolean | undefined\n }[]>>\n disabled: Ref<boolean | undefined>\n getItemIndex: (value: unknown) => number\n}\n\nexport interface GroupItemProvide {\n id: string\n isSelected: Ref<boolean>\n isFirst: Ref<boolean>\n isLast: Ref<boolean>\n toggle: () => void\n select: (value: boolean) => void\n selectedClass: Ref<(string | undefined)[] | false>\n value: Ref<unknown>\n disabled: Ref<boolean | undefined>\n group: GroupProvide\n register: () => void\n unregister: () => void\n}\n\nexport const makeGroupProps = propsFactory({\n modelValue: {\n type: null,\n default: undefined,\n },\n multiple: Boolean,\n mandatory: [Boolean, String] as PropType<boolean | 'force'>,\n max: Number,\n selectedClass: String,\n disabled: Boolean,\n}, 'group')\n\nexport const makeGroupItemProps = propsFactory({\n value: null,\n disabled: Boolean,\n selectedClass: String,\n}, 'group-item')\n\nexport interface GroupItemProps extends ExtractPropTypes<ReturnType<typeof makeGroupItemProps>> {\n 'onGroup:selected': EventProp<[{ value: boolean }]> | undefined\n}\n\n// Composables\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required?: true,\n): GroupItemProvide\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required: false,\n): GroupItemProvide | null\nexport function useGroupItem (\n props: GroupItemProps,\n injectKey: InjectionKey<GroupProvide>,\n required = true,\n): GroupItemProvide | null {\n const vm = getCurrentInstance('useGroupItem')\n\n if (!vm) {\n throw new Error(\n '[Vuetify] useGroupItem composable must be used inside a component setup function'\n )\n }\n\n const id = useId()\n\n provide(Symbol.for(`${injectKey.description}:id`), id)\n\n const group = inject(injectKey, null)\n\n if (!group) {\n if (!required) return group\n\n throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`)\n }\n\n const value = toRef(() => props.value)\n const disabled = computed(() => !!(group.disabled.value || props.disabled))\n\n function register () {\n group?.register({ id, value, disabled }, vm)\n }\n\n function unregister () {\n group?.unregister(id)\n }\n\n onMounted(() => register())\n onBeforeUnmount(() => unregister())\n\n const isSelected = computed(() => {\n return group.isSelected(id)\n })\n const isFirst = computed(() => {\n return group.items.value[0].id === id\n })\n const isLast = computed(() => {\n return group.items.value[group.items.value.length - 1].id === id\n })\n\n const selectedClass = computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass])\n\n watch(isSelected, value => {\n vm.emit('group:selected', { value })\n }, { flush: 'sync' })\n\n return {\n id,\n isSelected,\n isFirst,\n isLast,\n toggle: () => group.select(id, !isSelected.value),\n select: (value: boolean) => group.select(id, value),\n selectedClass,\n value,\n disabled,\n group,\n register,\n unregister,\n }\n}\n\nexport function useGroup (\n props: GroupProps,\n injectKey: InjectionKey<GroupProvide>\n) {\n let isUnmounted = false\n const items = reactive<GroupItem[]>([])\n const selected = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => {\n if (v === undefined) return []\n\n return getIds(items, v === null ? [null] : wrapInArray(v))\n },\n v => {\n const arr = getValues(items, v)\n\n return props.multiple ? arr : arr[0]\n }\n )\n\n const groupVm = getCurrentInstance('useGroup')\n\n function register (item: GroupItem, vm: ComponentInternalInstance) {\n // Is there a better way to fix this typing?\n const unwrapped = item as unknown as UnwrapRef<GroupItem>\n\n const key = Symbol.for(`${injectKey.description}:id`)\n const children = findChildrenWithProvide(key, groupVm?.vnode)\n const index = children.indexOf(vm)\n\n if (unref(unwrapped.value) === undefined) {\n unwrapped.value = index\n unwrapped.useIndexAsValue = true\n }\n\n if (index > -1) {\n items.splice(index, 0, unwrapped)\n } else {\n items.push(unwrapped)\n }\n }\n\n function unregister (id: string) {\n if (isUnmounted) return\n\n // TODO: re-evaluate this line's importance in the future\n // should we only modify the model if mandatory is set.\n // selected.value = selected.value.filter(v => v !== id)\n\n forceMandatoryValue()\n\n const index = items.findIndex(item => item.id === id)\n items.splice(index, 1)\n }\n\n // If mandatory and nothing is selected, then select first non-disabled item\n function forceMandatoryValue () {\n const item = items.find(item => !item.disabled)\n if (item && props.mandatory === 'force' && !selected.value.length) {\n selected.value = [item.id]\n }\n }\n\n onMounted(() => {\n forceMandatoryValue()\n })\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n onUpdated(() => {\n // #19655 update the items that use the index as the value.\n for (let i = 0; i < items.length; i++) {\n if (items[i].useIndexAsValue) {\n items[i].value = i\n }\n }\n })\n\n function select (id: string, value?: boolean) {\n const item = items.find(item => item.id === id)\n if (value && item?.disabled) return\n\n if (props.multiple) {\n const internalValue = selected.value.slice()\n const index = internalValue.findIndex(v => v === id)\n const isSelected = ~index\n value = value ?? !isSelected\n\n // We can't remove value if group is\n // mandatory, value already exists,\n // and it is the only value\n if (\n isSelected &&\n props.mandatory &&\n internalValue.length <= 1\n ) return\n\n // We can't add value if it would\n // cause max limit to be exceeded\n if (\n !isSelected &&\n props.max != null &&\n internalValue.length + 1 > props.max\n ) return\n\n if (index < 0 && value) internalValue.push(id)\n else if (index >= 0 && !value) internalValue.splice(index, 1)\n\n selected.value = internalValue\n } else {\n const isSelected = selected.value.includes(id)\n if (props.mandatory && isSelected) return\n if (!isSelected && !value) return\n\n selected.value = (value ?? !isSelected) ? [id] : []\n }\n }\n\n function step (offset: number) {\n // getting an offset from selected value obviously won't work with multiple values\n if (props.multiple) consoleWarn('This method is not supported when using \"multiple\" prop')\n\n if (!selected.value.length) {\n const item = items.find(item => !item.disabled)\n item && (selected.value = [item.id])\n } else {\n const currentId = selected.value[0]\n const currentIndex = items.findIndex(i => i.id === currentId)\n\n let newIndex = (currentIndex + offset) % items.length\n let newItem = items[newIndex]\n\n while (newItem.disabled && newIndex !== currentIndex) {\n newIndex = (newIndex + offset) % items.length\n newItem = items[newIndex]\n }\n\n if (newItem.disabled) return\n\n selected.value = [items[newIndex].id]\n }\n }\n\n const state: GroupProvide = {\n register,\n unregister,\n selected,\n select,\n disabled: toRef(() => props.disabled),\n prev: () => step(items.length - 1),\n next: () => step(1),\n isSelected: (id: string) => selected.value.includes(id),\n selectedClass: toRef(() => props.selectedClass),\n items: toRef(() => items),\n getItemIndex: (value: unknown) => getItemIndex(items, value),\n }\n\n provide(injectKey, state)\n\n return state\n}\n\nfunction getItemIndex (items: UnwrapRef<GroupItem[]>, value: unknown) {\n const ids = getIds(items, [value])\n\n if (!ids.length) return -1\n\n return items.findIndex(item => item.id === ids[0])\n}\n\nfunction getIds (items: UnwrapRef<GroupItem[]>, modelValue: any[]) {\n const ids: string[] = []\n\n modelValue.forEach(value => {\n const item = items.find(item => deepEqual(value, item.value))\n const itemByIndex = items[value]\n\n if (item?.value !== undefined) {\n ids.push(item.id)\n } else if (itemByIndex?.useIndexAsValue) {\n ids.push(itemByIndex.id)\n }\n })\n\n return ids\n}\n\nfunction getValues (items: UnwrapRef<GroupItem[]>, ids: any[]) {\n const values: unknown[] = []\n\n ids.forEach(id => {\n const itemIndex = items.findIndex(item => item.id === id)\n if (~itemIndex) {\n const item = items[itemIndex]\n values.push(item.value !== undefined ? item.value : itemIndex)\n }\n })\n\n return values\n}\n"],"mappings":"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","ignoreList":[]}
|