@vuetify/nightly 3.0.0-beta.0 → 3.0.0-beta.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/CHANGELOG.md +32 -2
- package/dist/_component-variables.sass +61 -0
- package/dist/json/attributes.json +662 -430
- package/dist/json/importMap.json +222 -198
- package/dist/json/tags.json +184 -96
- package/dist/json/web-types.json +2021 -1152
- package/dist/vuetify.css +1869 -1468
- package/dist/vuetify.d.ts +12840 -9217
- package/dist/vuetify.esm.js +6121 -5104
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +6120 -5103
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +3 -3
- package/dist/vuetify.min.js +1085 -964
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.css +34 -13
- package/lib/components/VAlert/VAlert.mjs +43 -24
- package/lib/components/VAlert/VAlert.mjs.map +1 -1
- package/lib/components/VAlert/VAlert.sass +26 -8
- package/lib/components/VAlert/VAlertTitle.mjs +1 -0
- package/lib/components/VAlert/VAlertTitle.mjs.map +1 -1
- package/lib/components/VAlert/_variables.scss +14 -7
- package/lib/components/VAlert/index.mjs.map +1 -1
- package/lib/components/VApp/VApp.css +1 -0
- package/lib/components/VApp/VApp.mjs.map +1 -1
- package/lib/components/VApp/VApp.sass +1 -0
- package/lib/components/VApp/index.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBar.mjs +11 -7
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBar.sass +0 -1
- package/lib/components/VAppBar/VAppBarNavIcon.mjs +4 -2
- package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBarTitle.mjs +3 -1
- package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
- package/lib/components/VAppBar/index.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +133 -101
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +0 -2
- package/lib/components/VAutocomplete/index.mjs.map +1 -1
- package/lib/components/VAvatar/VAvatar.css +1 -1
- package/lib/components/VAvatar/VAvatar.mjs +17 -15
- package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
- package/lib/components/VAvatar/VAvatar.sass +1 -2
- package/lib/components/VAvatar/_mixins.scss +0 -1
- package/lib/components/VAvatar/index.mjs.map +1 -1
- package/lib/components/VBadge/VBadge.css +3 -6
- package/lib/components/VBadge/VBadge.mjs +16 -44
- package/lib/components/VBadge/VBadge.mjs.map +1 -1
- package/lib/components/VBadge/VBadge.sass +2 -5
- package/lib/components/VBadge/_variables.scss +1 -2
- package/lib/components/VBadge/index.mjs.map +1 -1
- package/lib/components/VBanner/VBanner.css +82 -58
- package/lib/components/VBanner/VBanner.mjs +49 -48
- package/lib/components/VBanner/VBanner.mjs.map +1 -1
- package/lib/components/VBanner/VBanner.sass +61 -55
- package/lib/components/VBanner/VBannerActions.mjs +34 -2
- package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
- package/lib/components/VBanner/VBannerAvatar.mjs +20 -0
- package/lib/components/VBanner/VBannerAvatar.mjs.map +1 -0
- package/lib/components/VBanner/VBannerIcon.mjs +20 -0
- package/lib/components/VBanner/VBannerIcon.mjs.map +1 -0
- package/lib/components/VBanner/VBannerText.mjs.map +1 -1
- package/lib/components/VBanner/_variables.scss +10 -14
- package/lib/components/VBanner/index.mjs +2 -0
- package/lib/components/VBanner/index.mjs.map +1 -1
- package/lib/components/VBottomNavigation/VBottomNavigation.css +1 -1
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs +1 -1
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
- package/lib/components/VBottomNavigation/VBottomNavigation.sass +1 -2
- package/lib/components/VBottomNavigation/index.mjs.map +1 -1
- package/lib/components/VBottomSheet/VBottomSheet.mjs.map +1 -1
- package/lib/components/VBottomSheet/index.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +5 -2
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.sass +0 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +10 -9
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/index.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/shared.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.css +56 -11
- package/lib/components/VBtn/VBtn.mjs +51 -20
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.sass +35 -4
- package/lib/components/VBtn/_variables.scss +2 -0
- package/lib/components/VBtn/index.mjs.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.css +14 -6
- package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.sass +14 -7
- package/lib/components/VBtnGroup/index.mjs.map +1 -1
- package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
- package/lib/components/VBtnToggle/VBtnToggle.sass +0 -1
- package/lib/components/VBtnToggle/index.mjs.map +1 -1
- package/lib/components/VCalendar/VCalendar.mjs.map +1 -1
- package/lib/components/VCalendar/VCalendarCategory.mjs.map +1 -1
- package/lib/components/VCalendar/VCalendarDaily.mjs.map +1 -1
- package/lib/components/VCalendar/VCalendarMonthly.mjs.map +1 -1
- package/lib/components/VCalendar/VCalendarWeekly.mjs.map +1 -1
- package/lib/components/VCalendar/index.mjs.map +1 -1
- package/lib/components/VCalendar/mixins/calendar-base.mjs.map +1 -1
- package/lib/components/VCalendar/mixins/calendar-with-events.mjs.map +1 -1
- package/lib/components/VCalendar/mixins/calendar-with-intervals.mjs.map +1 -1
- package/lib/components/VCalendar/mixins/mouse.mjs.map +1 -1
- package/lib/components/VCalendar/mixins/times.mjs.map +1 -1
- package/lib/components/VCalendar/modes/column.mjs.map +1 -1
- package/lib/components/VCalendar/modes/common.mjs.map +1 -1
- package/lib/components/VCalendar/modes/index.mjs.map +1 -1
- package/lib/components/VCalendar/modes/stack.mjs.map +1 -1
- package/lib/components/VCalendar/util/events.mjs.map +1 -1
- package/lib/components/VCalendar/util/parser.mjs.map +1 -1
- package/lib/components/VCalendar/util/props.mjs.map +1 -1
- package/lib/components/VCalendar/util/timestamp.mjs.map +1 -1
- package/lib/components/VCard/VCard.css +23 -20
- package/lib/components/VCard/VCard.mjs +17 -9
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/VCard.sass +12 -10
- package/lib/components/VCard/VCardActions.mjs +1 -2
- package/lib/components/VCard/VCardActions.mjs.map +1 -1
- package/lib/components/VCard/VCardAvatar.mjs.map +1 -1
- package/lib/components/VCard/VCardContent.mjs +3 -0
- package/lib/components/VCard/VCardContent.mjs.map +1 -0
- package/lib/components/VCard/VCardHeader.mjs.map +1 -1
- package/lib/components/VCard/VCardHeaderText.mjs.map +1 -1
- package/lib/components/VCard/VCardImg.mjs.map +1 -1
- package/lib/components/VCard/VCardSubtitle.mjs.map +1 -1
- package/lib/components/VCard/VCardText.mjs.map +1 -1
- package/lib/components/VCard/VCardTitle.mjs.map +1 -1
- package/lib/components/VCard/_variables.scss +11 -5
- package/lib/components/VCard/index.mjs +1 -0
- package/lib/components/VCard/index.mjs.map +1 -1
- package/lib/components/VCarousel/VCarousel.mjs +4 -3
- package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
- package/lib/components/VCarousel/VCarousel.sass +0 -1
- package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
- package/lib/components/VCarousel/index.mjs.map +1 -1
- package/lib/components/VCheckbox/VCheckbox.mjs +15 -47
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VCheckbox/VCheckbox.sass +0 -1
- package/lib/components/VCheckbox/VCheckboxBtn.mjs +67 -0
- package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -0
- package/lib/components/VCheckbox/index.mjs +1 -0
- package/lib/components/VCheckbox/index.mjs.map +1 -1
- package/lib/components/VChip/VChip.css +8 -5
- package/lib/components/VChip/VChip.mjs +6 -5
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChip/VChip.sass +3 -1
- package/lib/components/VChip/_variables.scss +3 -0
- package/lib/components/VChip/index.mjs.map +1 -1
- package/lib/components/VChipGroup/VChipGroup.mjs +1 -1
- package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
- package/lib/components/VChipGroup/index.mjs.map +1 -1
- package/lib/components/VCode/VCode.sass +1 -2
- package/lib/components/VCode/_variables.scss +1 -1
- package/lib/components/VCode/index.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPicker.sass +0 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.css +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.sass +0 -1
- package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.sass +0 -1
- package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerPreview.sass +0 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.sass +0 -1
- package/lib/components/VColorPicker/index.mjs.map +1 -1
- package/lib/components/VColorPicker/util/index.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +140 -110
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +0 -2
- package/lib/components/VCombobox/index.mjs.map +1 -1
- package/lib/components/VCounter/VCounter.mjs.map +1 -1
- package/lib/components/VCounter/VCounter.sass +0 -1
- package/lib/components/VCounter/index.mjs.map +1 -1
- package/lib/components/VData/VData.mjs.map +1 -1
- package/lib/components/VData/index.mjs.map +1 -1
- package/lib/components/VDataIterator/VDataFooter.mjs.map +1 -1
- package/lib/components/VDataIterator/VDataIterator.mjs.map +1 -1
- package/lib/components/VDataIterator/index.mjs.map +1 -1
- package/lib/components/VDataTable/MobileRow.mjs.map +1 -1
- package/lib/components/VDataTable/Row.mjs.map +1 -1
- package/lib/components/VDataTable/RowGroup.mjs.map +1 -1
- package/lib/components/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/components/VDataTable/VDataTableHeader.mjs.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaderDesktop.mjs.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaderMobile.mjs.map +1 -1
- package/lib/components/VDataTable/VEditDialog.mjs.map +1 -1
- package/lib/components/VDataTable/VVirtualTable.mjs.map +1 -1
- package/lib/components/VDataTable/index.mjs.map +1 -1
- package/lib/components/VDataTable/mixins/header.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerDateTable.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerHeader.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonthTable.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerTitle.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerYears.mjs.map +1 -1
- package/lib/components/VDatePicker/index.mjs.map +1 -1
- package/lib/components/VDatePicker/mixins/date-picker-table.mjs.map +1 -1
- package/lib/components/VDatePicker/util/createNativeLocaleFormatter.mjs.map +1 -1
- package/lib/components/VDatePicker/util/eventHelpers.mjs.map +1 -1
- package/lib/components/VDatePicker/util/index.mjs.map +1 -1
- package/lib/components/VDatePicker/util/isDateAllowed.mjs.map +1 -1
- package/lib/components/VDatePicker/util/monthChange.mjs.map +1 -1
- package/lib/components/VDatePicker/util/pad.mjs.map +1 -1
- package/lib/components/VDatePicker/util/sanitizeDateString.mjs.map +1 -1
- package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
- package/lib/components/VDefaultsProvider/index.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.css +31 -12
- package/lib/components/VDialog/VDialog.mjs +14 -12
- package/lib/components/VDialog/VDialog.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.sass +27 -12
- package/lib/components/VDialog/_variables.scss +3 -7
- package/lib/components/VDialog/index.mjs.map +1 -1
- package/lib/components/VDivider/VDivider.mjs.map +1 -1
- package/lib/components/VDivider/VDivider.sass +0 -1
- package/lib/components/VDivider/index.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.css +8 -6
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs +6 -2
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.sass +0 -1
- package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +9 -6
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs +4 -0
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
- package/lib/components/VExpansionPanel/index.mjs.map +1 -1
- package/lib/components/VField/VField.css +10 -10
- package/lib/components/VField/VField.mjs +12 -11
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VField/VField.sass +7 -9
- package/lib/components/VField/VFieldLabel.mjs.map +1 -1
- package/lib/components/VField/_variables.scss +3 -3
- package/lib/components/VField/index.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.mjs +5 -3
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.sass +0 -1
- package/lib/components/VFileInput/index.mjs.map +1 -1
- package/lib/components/VFooter/VFooter.mjs +32 -15
- package/lib/components/VFooter/VFooter.mjs.map +1 -1
- package/lib/components/VFooter/VFooter.sass +0 -1
- package/lib/components/VFooter/index.mjs.map +1 -1
- package/lib/components/VForm/VForm.mjs +25 -11
- package/lib/components/VForm/VForm.mjs.map +1 -1
- package/lib/components/VForm/index.mjs.map +1 -1
- package/lib/components/VGrid/VCol.mjs.map +1 -1
- package/lib/components/VGrid/VContainer.mjs.map +1 -1
- package/lib/components/VGrid/VRow.mjs.map +1 -1
- package/lib/components/VGrid/VSpacer.mjs.map +1 -1
- package/lib/components/VGrid/index.mjs.map +1 -1
- package/lib/components/VHover/VHover.mjs.map +1 -1
- package/lib/components/VHover/index.mjs.map +1 -1
- package/lib/components/VIcon/VIcon.css +27 -12
- package/lib/components/VIcon/VIcon.mjs +18 -17
- package/lib/components/VIcon/VIcon.mjs.map +1 -1
- package/lib/components/VIcon/VIcon.sass +27 -17
- package/lib/components/VIcon/_variables.scss +1 -0
- package/lib/components/VIcon/index.mjs.map +1 -1
- package/lib/components/VImg/VImg.mjs.map +1 -1
- package/lib/components/VImg/VImg.sass +0 -1
- package/lib/components/VImg/index.mjs.map +1 -1
- package/lib/components/VInput/VInput.css +3 -1
- package/lib/components/VInput/VInput.mjs +10 -10
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VInput/VInput.sass +3 -2
- package/lib/components/VInput/_variables.scss +4 -0
- package/lib/components/VInput/index.mjs.map +1 -1
- package/lib/components/VItemGroup/VItem.mjs.map +1 -1
- package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
- package/lib/components/VItemGroup/VItemGroup.sass +0 -1
- package/lib/components/VItemGroup/index.mjs.map +1 -1
- package/lib/components/VKbd/VKbd.sass +0 -1
- package/lib/components/VKbd/_variables.scss +1 -1
- package/lib/components/VKbd/index.mjs.map +1 -1
- package/lib/components/VLabel/VLabel.mjs.map +1 -1
- package/lib/components/VLabel/VLabel.sass +0 -1
- package/lib/components/VLabel/index.mjs.map +1 -1
- package/lib/components/VLayout/VLayout.mjs.map +1 -1
- package/lib/components/VLayout/VLayoutItem.mjs +1 -1
- package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
- package/lib/components/VLayout/index.mjs.map +1 -1
- package/lib/components/VLazy/VLazy.mjs.map +1 -1
- package/lib/components/VLazy/index.mjs.map +1 -1
- package/lib/components/VList/VList.css +7 -12
- package/lib/components/VList/VList.mjs +83 -48
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VList.sass +3 -4
- package/lib/components/VList/VListChildren.mjs +41 -3
- package/lib/components/VList/VListChildren.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs +43 -15
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListImg.mjs.map +1 -1
- package/lib/components/VList/VListItem.css +129 -51
- package/lib/components/VList/VListItem.mjs +49 -44
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListItem.sass +77 -30
- package/lib/components/VList/VListItemAction.mjs +29 -0
- package/lib/components/VList/VListItemAction.mjs.map +1 -0
- package/lib/components/VList/VListItemAvatar.mjs +10 -16
- package/lib/components/VList/VListItemAvatar.mjs.map +1 -1
- package/lib/components/VList/VListItemHeader.mjs.map +1 -1
- package/lib/components/VList/VListItemIcon.mjs +23 -0
- package/lib/components/VList/VListItemIcon.mjs.map +1 -0
- package/lib/components/VList/VListItemMedia.mjs +4 -4
- package/lib/components/VList/VListItemMedia.mjs.map +1 -1
- package/lib/components/VList/VListItemSubtitle.mjs.map +1 -1
- package/lib/components/VList/VListItemTitle.mjs.map +1 -1
- package/lib/components/VList/VListSubheader.mjs +3 -3
- package/lib/components/VList/VListSubheader.mjs.map +1 -1
- package/lib/components/VList/_variables.scss +12 -4
- package/lib/components/VList/index.mjs +2 -0
- package/lib/components/VList/index.mjs.map +1 -1
- package/lib/components/VList/list.mjs.map +1 -1
- package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
- package/lib/components/VLocaleProvider/index.mjs.map +1 -1
- package/lib/components/VMain/VMain.mjs.map +1 -1
- package/lib/components/VMain/VMain.sass +0 -1
- package/lib/components/VMain/index.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.css +2 -12
- package/lib/components/VMenu/VMenu.mjs +65 -31
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.sass +3 -7
- package/lib/components/VMenu/_variables.scss +0 -1
- package/lib/components/VMenu/index.mjs.map +1 -1
- package/lib/components/VMenu/shared.mjs +2 -0
- package/lib/components/VMenu/shared.mjs.map +1 -0
- package/lib/components/VMessages/VMessages.mjs.map +1 -1
- package/lib/components/VMessages/VMessages.sass +0 -1
- package/lib/components/VMessages/index.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +13 -9
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +0 -1
- package/lib/components/VNavigationDrawer/index.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
- package/lib/components/VNoSsr/VNoSsr.mjs.map +1 -1
- package/lib/components/VNoSsr/index.mjs.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
- package/lib/components/VOtpInput/index.mjs.map +1 -1
- package/lib/components/VOverflowBtn/VOverflowBtn.mjs.map +1 -1
- package/lib/components/VOverflowBtn/index.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.css +7 -0
- package/lib/components/VOverlay/VOverlay.mjs +57 -32
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.sass +8 -1
- package/lib/components/VOverlay/index.mjs.map +1 -1
- package/lib/components/VOverlay/{positionStrategies.mjs → locationStrategies.mjs} +39 -36
- package/lib/components/VOverlay/locationStrategies.mjs.map +1 -0
- package/lib/components/VOverlay/requestNewFrame.mjs.map +1 -1
- package/lib/components/VOverlay/scrollStrategies.mjs +11 -2
- package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
- package/lib/components/VOverlay/useActivator.mjs +57 -15
- package/lib/components/VOverlay/useActivator.mjs.map +1 -1
- package/lib/components/VOverlay/util/point.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs +16 -17
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.sass +0 -1
- package/lib/components/VPagination/index.mjs.map +1 -1
- package/lib/components/VParallax/VParallax.mjs.map +1 -1
- package/lib/components/VParallax/index.mjs.map +1 -1
- package/lib/components/VPicker/VPicker.mjs.map +1 -1
- package/lib/components/VPicker/index.mjs.map +1 -1
- package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
- package/lib/components/VProgressCircular/VProgressCircular.sass +0 -1
- package/lib/components/VProgressCircular/index.mjs.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.css +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.sass +0 -1
- package/lib/components/VProgressLinear/index.mjs.map +1 -1
- package/lib/components/VRadio/VRadio.mjs +6 -5
- package/lib/components/VRadio/VRadio.mjs.map +1 -1
- package/lib/components/VRadio/index.mjs.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.mjs +11 -6
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRadioGroup/index.mjs.map +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.mjs +5 -2
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VRangeSlider/index.mjs.map +1 -1
- package/lib/components/VRating/VRating.css +2 -2
- package/lib/components/VRating/VRating.mjs +17 -6
- package/lib/components/VRating/VRating.mjs.map +1 -1
- package/lib/components/VRating/VRating.sass +2 -3
- package/lib/components/VRating/index.mjs.map +1 -1
- package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
- package/lib/components/VResponsive/index.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.mjs +134 -107
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.sass +0 -2
- package/lib/components/VSelect/index.mjs.map +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.css +1 -0
- package/lib/components/VSelectionControl/VSelectionControl.mjs +15 -12
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.sass +1 -1
- package/lib/components/VSelectionControl/index.mjs.map +1 -1
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +6 -5
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.sass +0 -1
- package/lib/components/VSelectionControlGroup/index.mjs.map +1 -1
- package/lib/components/VSheet/VSheet.mjs +7 -3
- package/lib/components/VSheet/VSheet.mjs.map +1 -1
- package/lib/components/VSheet/VSheet.sass +0 -1
- package/lib/components/VSheet/index.mjs.map +1 -1
- package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
- package/lib/components/VSkeletonLoader/index.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.css +0 -5
- package/lib/components/VSlideGroup/VSlideGroup.mjs +40 -17
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.sass +0 -5
- package/lib/components/VSlideGroup/VSlideGroupItem.mjs +3 -1
- package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
- package/lib/components/VSlideGroup/helpers.mjs.map +1 -1
- package/lib/components/VSlideGroup/index.mjs.map +1 -1
- package/lib/components/VSlider/VSlider.css +7 -2
- package/lib/components/VSlider/VSlider.mjs.map +1 -1
- package/lib/components/VSlider/VSlider.sass +11 -7
- package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
- package/lib/components/VSlider/VSliderThumb.sass +0 -2
- package/lib/components/VSlider/VSliderTrack.css +6 -6
- package/lib/components/VSlider/VSliderTrack.mjs +3 -2
- package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
- package/lib/components/VSlider/VSliderTrack.sass +7 -9
- package/lib/components/VSlider/_variables.scss +5 -2
- package/lib/components/VSlider/index.mjs.map +1 -1
- package/lib/components/VSlider/slider.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.css +19 -36
- package/lib/components/VSnackbar/VSnackbar.mjs +38 -19
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.sass +15 -35
- package/lib/components/VSnackbar/_variables.scss +0 -4
- package/lib/components/VSnackbar/index.mjs.map +1 -1
- package/lib/components/VSparkline/VSparkline.mjs.map +1 -1
- package/lib/components/VSparkline/helpers/core.mjs.map +1 -1
- package/lib/components/VSparkline/helpers/math.mjs.map +1 -1
- package/lib/components/VSparkline/helpers/path.mjs.map +1 -1
- package/lib/components/VSparkline/index.mjs.map +1 -1
- package/lib/components/VSpeedDial/VSpeedDial.mjs.map +1 -1
- package/lib/components/VSpeedDial/index.mjs.map +1 -1
- package/lib/components/VStepper/VStepper.mjs.map +1 -1
- package/lib/components/VStepper/VStepperContent.mjs.map +1 -1
- package/lib/components/VStepper/VStepperStep.mjs.map +1 -1
- package/lib/components/VStepper/index.mjs.map +1 -1
- package/lib/components/VSwitch/VSwitch.mjs +15 -6
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VSwitch/VSwitch.sass +0 -1
- package/lib/components/VSwitch/index.mjs.map +1 -1
- package/lib/components/VSystemBar/VSystemBar.css +0 -5
- package/lib/components/VSystemBar/VSystemBar.mjs +31 -14
- package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
- package/lib/components/VSystemBar/VSystemBar.sass +0 -6
- package/lib/components/VSystemBar/_variables.scss +0 -3
- package/lib/components/VSystemBar/index.mjs.map +1 -1
- package/lib/components/VTable/VTable.mjs.map +1 -1
- package/lib/components/VTable/VTable.sass +0 -1
- package/lib/components/VTable/index.mjs.map +1 -1
- package/lib/components/VTabs/VTab.css +1 -1
- package/lib/components/VTabs/VTab.mjs +33 -36
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTabs/VTab.sass +1 -2
- package/lib/components/VTabs/VTabs.css +14 -11
- package/lib/components/VTabs/VTabs.mjs +7 -8
- package/lib/components/VTabs/VTabs.mjs.map +1 -1
- package/lib/components/VTabs/VTabs.sass +10 -7
- package/lib/components/VTabs/_variables.scss +1 -1
- package/lib/components/VTabs/index.mjs.map +1 -1
- package/lib/components/VTabs/shared.mjs +2 -0
- package/lib/components/VTabs/shared.mjs.map +1 -0
- package/lib/components/VTextField/VTextField.css +4 -4
- package/lib/components/VTextField/VTextField.mjs +9 -10
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/VTextField.sass +5 -6
- package/lib/components/VTextField/index.mjs.map +1 -1
- package/lib/components/VTextarea/VTextarea.css +7 -4
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTextarea/VTextarea.sass +9 -7
- package/lib/components/VTextarea/index.mjs.map +1 -1
- package/lib/components/VThemeProvider/VThemeProvider.mjs.map +1 -1
- package/lib/components/VThemeProvider/index.mjs.map +1 -1
- package/lib/components/VTimePicker/SelectingTimes.mjs.map +1 -1
- package/lib/components/VTimePicker/VTimePicker.mjs.map +1 -1
- package/lib/components/VTimePicker/VTimePickerClock.mjs.map +1 -1
- package/lib/components/VTimePicker/VTimePickerTitle.mjs.map +1 -1
- package/lib/components/VTimePicker/index.mjs.map +1 -1
- package/lib/components/VTimeline/VTimeline.css +187 -48
- package/lib/components/VTimeline/VTimeline.mjs +27 -11
- package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
- package/lib/components/VTimeline/VTimeline.sass +196 -52
- package/lib/components/VTimeline/VTimelineDivider.mjs +5 -3
- package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
- package/lib/components/VTimeline/VTimelineItem.mjs +3 -2
- package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
- package/lib/components/VTimeline/_variables.scss +2 -1
- package/lib/components/VTimeline/index.mjs.map +1 -1
- package/lib/components/VTimeline/shared.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbar.css +8 -1
- package/lib/components/VToolbar/VToolbar.mjs +21 -17
- package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbar.sass +2 -2
- package/lib/components/VToolbar/VToolbarItems.mjs +1 -2
- package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
- package/lib/components/VToolbar/_variables.scss +13 -1
- package/lib/components/VToolbar/index.mjs.map +1 -1
- package/lib/components/VTooltip/VTooltip.mjs +12 -7
- package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
- package/lib/components/VTooltip/VTooltip.sass +0 -1
- package/lib/components/VTooltip/index.mjs.map +1 -1
- package/lib/components/VTreeview/VTreeview.mjs.map +1 -1
- package/lib/components/VTreeview/VTreeviewNode.mjs.map +1 -1
- package/lib/components/VTreeview/index.mjs.map +1 -1
- package/lib/components/VTreeview/util/filterTreeItems.mjs.map +1 -1
- package/lib/components/VValidation/VValidation.mjs.map +1 -1
- package/lib/components/VValidation/index.mjs.map +1 -1
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
- package/lib/components/VVirtualScroll/index.mjs.map +1 -1
- package/lib/components/VWindow/VWindow.mjs +2 -10
- package/lib/components/VWindow/VWindow.mjs.map +1 -1
- package/lib/components/VWindow/VWindow.sass +0 -2
- package/lib/components/VWindow/VWindowItem.mjs +9 -3
- package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
- package/lib/components/VWindow/index.mjs.map +1 -1
- package/lib/components/index.d.ts +13464 -9854
- package/lib/components/index.mjs.map +1 -1
- package/lib/components/transitions/createTransition.mjs.map +1 -1
- package/lib/components/transitions/dialog-transition.mjs +61 -8
- package/lib/components/transitions/dialog-transition.mjs.map +1 -1
- package/lib/components/transitions/expand-transition.mjs.map +1 -1
- package/lib/components/transitions/index.mjs.map +1 -1
- package/lib/composables/border.mjs.map +1 -1
- package/lib/composables/color.mjs.map +1 -1
- package/lib/composables/defaults.mjs +2 -2
- package/lib/composables/defaults.mjs.map +1 -1
- package/lib/composables/delay.mjs.map +1 -1
- package/lib/composables/density.mjs.map +1 -1
- package/lib/composables/dimensions.mjs.map +1 -1
- package/lib/composables/display.mjs +13 -11
- package/lib/composables/display.mjs.map +1 -1
- package/lib/composables/elevation.mjs.map +1 -1
- package/lib/composables/filter.mjs +33 -13
- package/lib/composables/filter.mjs.map +1 -1
- package/lib/composables/focus.mjs.map +1 -1
- package/lib/composables/form.mjs +24 -11
- package/lib/composables/form.mjs.map +1 -1
- package/lib/composables/forwardRef.mjs +10 -6
- package/lib/composables/forwardRef.mjs.map +1 -1
- package/lib/composables/group.mjs +14 -6
- package/lib/composables/group.mjs.map +1 -1
- package/lib/composables/hydration.mjs.map +1 -1
- package/lib/composables/icons.mjs +15 -3
- package/lib/composables/icons.mjs.map +1 -1
- package/lib/composables/index.mjs.map +1 -1
- package/lib/composables/intersectionObserver.mjs.map +1 -1
- package/lib/composables/items.mjs +84 -0
- package/lib/composables/items.mjs.map +1 -0
- package/lib/composables/layout.mjs +10 -6
- package/lib/composables/layout.mjs.map +1 -1
- package/lib/composables/lazy.mjs.map +1 -1
- package/lib/composables/loader.mjs.map +1 -1
- package/lib/composables/locale.mjs +11 -8
- package/lib/composables/locale.mjs.map +1 -1
- package/lib/composables/location.mjs +70 -0
- package/lib/composables/location.mjs.map +1 -0
- package/lib/composables/mutationObserver.mjs.map +1 -1
- package/lib/composables/nested/nested.mjs +27 -14
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/nested/openStrategies.mjs +63 -36
- package/lib/composables/nested/openStrategies.mjs.map +1 -1
- package/lib/composables/nested/selectStrategies.mjs +163 -122
- package/lib/composables/nested/selectStrategies.mjs.map +1 -1
- package/lib/composables/position.mjs +4 -25
- package/lib/composables/position.mjs.map +1 -1
- package/lib/composables/proxiedModel.mjs.map +1 -1
- package/lib/composables/refs.mjs.map +1 -1
- package/lib/composables/resizeObserver.mjs +1 -9
- package/lib/composables/resizeObserver.mjs.map +1 -1
- package/lib/composables/rounded.mjs.map +1 -1
- package/lib/composables/router.mjs +29 -15
- package/lib/composables/router.mjs.map +1 -1
- package/lib/composables/rtl.mjs.map +1 -1
- package/lib/composables/scopeId.mjs +11 -0
- package/lib/composables/scopeId.mjs.map +1 -0
- package/lib/composables/scroll.mjs.map +1 -1
- package/lib/composables/selectLink.mjs +19 -0
- package/lib/composables/selectLink.mjs.map +1 -0
- package/lib/composables/size.mjs.map +1 -1
- package/lib/composables/ssrBoot.mjs +3 -2
- package/lib/composables/ssrBoot.mjs.map +1 -1
- package/lib/composables/stack.mjs +27 -23
- package/lib/composables/stack.mjs.map +1 -1
- package/lib/composables/tag.mjs.map +1 -1
- package/lib/composables/teleport.mjs.map +1 -1
- package/lib/composables/theme.mjs +94 -93
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/composables/toggleScope.mjs +18 -0
- package/lib/composables/toggleScope.mjs.map +1 -0
- package/lib/composables/touch.mjs.map +1 -1
- package/lib/composables/transition.mjs.map +1 -1
- package/lib/composables/validation.mjs +17 -6
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/composables/variant.mjs +3 -6
- package/lib/composables/variant.mjs.map +1 -1
- package/lib/directives/click-outside/index.mjs.map +1 -1
- package/lib/directives/color/index.mjs.map +1 -1
- package/lib/directives/index.mjs.map +1 -1
- package/lib/directives/intersect/index.mjs.map +1 -1
- package/lib/directives/mutate/index.mjs.map +1 -1
- package/lib/directives/resize/index.mjs.map +1 -1
- package/lib/directives/ripple/VRipple.sass +0 -1
- package/lib/directives/ripple/index.mjs +15 -3
- package/lib/directives/ripple/index.mjs.map +1 -1
- package/lib/directives/scroll/index.mjs.map +1 -1
- package/lib/directives/touch/index.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/entry-bundler.mjs.map +1 -1
- package/lib/framework.mjs +39 -29
- package/lib/framework.mjs.map +1 -1
- package/lib/iconsets/fa-svg.d.ts +2 -1
- package/lib/iconsets/fa-svg.mjs.map +1 -1
- package/lib/iconsets/fa.d.ts +2 -1
- package/lib/iconsets/fa.mjs.map +1 -1
- package/lib/iconsets/fa4.d.ts +2 -1
- package/lib/iconsets/fa4.mjs.map +1 -1
- package/lib/iconsets/md.d.ts +2 -1
- package/lib/iconsets/md.mjs.map +1 -1
- package/lib/iconsets/mdi-svg.d.ts +2 -1
- package/lib/iconsets/mdi-svg.mjs.map +1 -1
- package/lib/iconsets/mdi.d.ts +2 -1
- package/lib/iconsets/mdi.mjs.map +1 -1
- package/lib/index.d.ts +161 -138
- package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
- package/lib/locale/adapters/vue-intl.mjs.map +1 -1
- package/lib/locale/af.mjs.map +1 -1
- package/lib/locale/ar.mjs.map +1 -1
- package/lib/locale/az.mjs.map +1 -1
- package/lib/locale/bg.mjs.map +1 -1
- package/lib/locale/ca.mjs +9 -9
- package/lib/locale/ca.mjs.map +1 -1
- package/lib/locale/ckb.mjs.map +1 -1
- package/lib/locale/cs.mjs.map +1 -1
- package/lib/locale/da.mjs.map +1 -1
- package/lib/locale/de.mjs.map +1 -1
- package/lib/locale/el.mjs.map +1 -1
- package/lib/locale/en.mjs.map +1 -1
- package/lib/locale/es.mjs.map +1 -1
- package/lib/locale/et.mjs.map +1 -1
- package/lib/locale/fa.mjs.map +1 -1
- package/lib/locale/fi.mjs.map +1 -1
- package/lib/locale/fr.mjs.map +1 -1
- package/lib/locale/he.mjs.map +1 -1
- package/lib/locale/hr.mjs.map +1 -1
- package/lib/locale/hu.mjs.map +1 -1
- package/lib/locale/id.mjs.map +1 -1
- package/lib/locale/index.mjs.map +1 -1
- package/lib/locale/it.mjs.map +1 -1
- package/lib/locale/ja.mjs.map +1 -1
- package/lib/locale/ko.mjs.map +1 -1
- package/lib/locale/lt.mjs.map +1 -1
- package/lib/locale/lv.mjs.map +1 -1
- package/lib/locale/nl.mjs.map +1 -1
- package/lib/locale/no.mjs.map +1 -1
- package/lib/locale/pl.mjs.map +1 -1
- package/lib/locale/pt.mjs.map +1 -1
- package/lib/locale/ro.mjs.map +1 -1
- package/lib/locale/ru.mjs.map +1 -1
- package/lib/locale/sk.mjs.map +1 -1
- package/lib/locale/sl.mjs.map +1 -1
- package/lib/locale/sr-Cyrl.mjs.map +1 -1
- package/lib/locale/sr-Latn.mjs.map +1 -1
- package/lib/locale/sv.mjs.map +1 -1
- package/lib/locale/th.mjs.map +1 -1
- package/lib/locale/tr.mjs.map +1 -1
- package/lib/locale/uk.mjs.map +1 -1
- package/lib/locale/vi.mjs.map +1 -1
- package/lib/locale/zh-Hans.mjs.map +1 -1
- package/lib/locale/zh-Hant.mjs.map +1 -1
- package/lib/presets/default/index.mjs.map +1 -1
- package/lib/services/goto/easing-patterns.mjs.map +1 -1
- package/lib/services/goto/index.mjs.map +1 -1
- package/lib/services/goto/util.mjs.map +1 -1
- package/lib/styles/generic/_colors.scss +0 -1
- package/lib/styles/main.css +400 -392
- package/lib/styles/settings/_utilities.scss +54 -26
- package/lib/styles/tools/_states.sass +11 -3
- package/lib/styles/tools/_utilities.sass +1 -1
- package/lib/styles/tools/_variant.sass +6 -6
- package/lib/{components/VOverlay/util → util}/anchor.mjs +0 -0
- package/lib/util/anchor.mjs.map +1 -0
- package/lib/util/animation.mjs.map +1 -1
- package/lib/util/box.mjs.map +1 -1
- package/lib/util/color/APCA.mjs.map +1 -1
- package/lib/util/color/transformCIELAB.mjs.map +1 -1
- package/lib/util/color/transformSRGB.mjs.map +1 -1
- package/lib/util/colorUtils.mjs.map +1 -1
- package/lib/util/colors.mjs.map +1 -1
- package/lib/util/console.mjs.map +1 -1
- package/lib/util/createSimpleFunctional.mjs.map +1 -1
- package/lib/util/dateTimeUtils.mjs.map +1 -1
- package/lib/util/defineComponent.mjs +37 -6
- package/lib/util/defineComponent.mjs.map +1 -1
- package/lib/util/dom.mjs.map +1 -1
- package/lib/util/easing.mjs.map +1 -1
- package/lib/util/getCurrentInstance.mjs +20 -1
- package/lib/util/getCurrentInstance.mjs.map +1 -1
- package/lib/util/getScrollParent.mjs.map +1 -1
- package/lib/util/globals.mjs +0 -3
- package/lib/util/globals.mjs.map +1 -1
- package/lib/util/helpers.mjs +1 -5
- package/lib/util/helpers.mjs.map +1 -1
- package/lib/util/index.mjs +1 -0
- package/lib/util/index.mjs.map +1 -1
- package/lib/util/isFixedPosition.mjs.map +1 -1
- package/lib/util/propsFactory.mjs.map +1 -1
- package/lib/util/useRender.mjs.map +1 -1
- package/package.json +41 -31
- package/lib/components/VOverlay/positionStrategies.mjs.map +0 -1
- package/lib/components/VOverlay/util/anchor.mjs.map +0 -1
- package/lib/composables/overlay.mjs +0 -30
- package/lib/composables/overlay.mjs.map +0 -1
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
// Utilities
|
|
2
2
|
import { computed, effectScope, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue';
|
|
3
|
-
import { convertToUnit, getScrollParent, IN_BROWSER, isFixedPosition, nullifyTransforms, propsFactory } from "../../util/index.mjs";
|
|
4
|
-
import {
|
|
3
|
+
import { convertToUnit, getScrollParent, IN_BROWSER, isFixedPosition, nullifyTransforms, oppositeAnchor, parseAnchor, physicalAnchor, propsFactory } from "../../util/index.mjs";
|
|
4
|
+
import { Box } from "../../util/box.mjs";
|
|
5
5
|
import { anchorToPoint, getOffset } from "./util/point.mjs"; // Types
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
static: staticPositionStrategy,
|
|
7
|
+
const locationStrategies = {
|
|
8
|
+
static: staticLocationStrategy,
|
|
10
9
|
// specific viewport position, usually centered
|
|
11
|
-
connected:
|
|
10
|
+
connected: connectedLocationStrategy // connected to a certain element
|
|
12
11
|
|
|
13
12
|
};
|
|
14
|
-
export const
|
|
15
|
-
|
|
13
|
+
export const makeLocationStrategyProps = propsFactory({
|
|
14
|
+
locationStrategy: {
|
|
16
15
|
type: [String, Function],
|
|
17
16
|
default: 'static',
|
|
18
|
-
validator: val => typeof val === 'function' || val in
|
|
17
|
+
validator: val => typeof val === 'function' || val in locationStrategies
|
|
19
18
|
},
|
|
20
|
-
|
|
19
|
+
location: {
|
|
21
20
|
type: String,
|
|
22
21
|
default: 'bottom'
|
|
23
22
|
},
|
|
@@ -27,27 +26,27 @@ export const makePositionStrategyProps = propsFactory({
|
|
|
27
26
|
},
|
|
28
27
|
offset: [Number, String]
|
|
29
28
|
});
|
|
30
|
-
export function
|
|
29
|
+
export function useLocationStrategies(props, data) {
|
|
31
30
|
const contentStyles = ref({});
|
|
32
|
-
const
|
|
31
|
+
const updateLocation = ref();
|
|
33
32
|
let scope;
|
|
34
33
|
watchEffect(async () => {
|
|
35
34
|
var _scope;
|
|
36
35
|
|
|
37
36
|
(_scope = scope) == null ? void 0 : _scope.stop();
|
|
38
|
-
|
|
39
|
-
if (!(IN_BROWSER && data.isActive.value && props.
|
|
37
|
+
updateLocation.value = undefined;
|
|
38
|
+
if (!(IN_BROWSER && data.isActive.value && props.locationStrategy)) return;
|
|
40
39
|
scope = effectScope();
|
|
41
40
|
await nextTick();
|
|
42
41
|
scope.run(() => {
|
|
43
|
-
if (typeof props.
|
|
44
|
-
var _props$
|
|
42
|
+
if (typeof props.locationStrategy === 'function') {
|
|
43
|
+
var _props$locationStrate;
|
|
45
44
|
|
|
46
|
-
|
|
45
|
+
updateLocation.value = (_props$locationStrate = props.locationStrategy(data, props, contentStyles)) == null ? void 0 : _props$locationStrate.updateLocation;
|
|
47
46
|
} else {
|
|
48
|
-
var
|
|
47
|
+
var _locationStrategies$p;
|
|
49
48
|
|
|
50
|
-
|
|
49
|
+
updateLocation.value = (_locationStrategies$p = locationStrategies[props.locationStrategy](data, props, contentStyles)) == null ? void 0 : _locationStrategies$p.updateLocation;
|
|
51
50
|
}
|
|
52
51
|
});
|
|
53
52
|
});
|
|
@@ -58,26 +57,26 @@ export function usePositionStrategies(props, data) {
|
|
|
58
57
|
var _scope2;
|
|
59
58
|
|
|
60
59
|
IN_BROWSER && window.removeEventListener('resize', onResize);
|
|
61
|
-
|
|
60
|
+
updateLocation.value = undefined;
|
|
62
61
|
(_scope2 = scope) == null ? void 0 : _scope2.stop();
|
|
63
62
|
});
|
|
64
63
|
|
|
65
64
|
function onResize(e) {
|
|
66
|
-
var
|
|
65
|
+
var _updateLocation$value;
|
|
67
66
|
|
|
68
|
-
(
|
|
67
|
+
(_updateLocation$value = updateLocation.value) == null ? void 0 : _updateLocation$value.call(updateLocation, e);
|
|
69
68
|
}
|
|
70
69
|
|
|
71
70
|
return {
|
|
72
71
|
contentStyles,
|
|
73
|
-
|
|
72
|
+
updateLocation
|
|
74
73
|
};
|
|
75
74
|
}
|
|
76
75
|
|
|
77
|
-
function
|
|
76
|
+
function staticLocationStrategy() {// TODO
|
|
78
77
|
}
|
|
79
78
|
|
|
80
|
-
function
|
|
79
|
+
function connectedLocationStrategy(data, props, contentStyles) {
|
|
81
80
|
const activatorFixed = isFixedPosition(data.activatorEl.value);
|
|
82
81
|
|
|
83
82
|
if (activatorFixed) {
|
|
@@ -86,7 +85,7 @@ function connectedPositionStrategy(data, props, contentStyles) {
|
|
|
86
85
|
});
|
|
87
86
|
}
|
|
88
87
|
|
|
89
|
-
const preferredAnchor = computed(() => parseAnchor(props.
|
|
88
|
+
const preferredAnchor = computed(() => parseAnchor(props.location));
|
|
90
89
|
const preferredOrigin = computed(() => props.origin === 'overlap' ? preferredAnchor.value : props.origin === 'auto' ? oppositeAnchor(preferredAnchor.value) : parseAnchor(props.origin));
|
|
91
90
|
const doesOverlap = computed(() => {
|
|
92
91
|
return preferredAnchor.value.side === preferredOrigin.value.side;
|
|
@@ -103,7 +102,7 @@ function connectedPositionStrategy(data, props, contentStyles) {
|
|
|
103
102
|
|
|
104
103
|
if (IN_BROWSER) {
|
|
105
104
|
const observer = new ResizeObserver(() => {
|
|
106
|
-
if (observe)
|
|
105
|
+
if (observe) updateLocation();
|
|
107
106
|
});
|
|
108
107
|
observer.observe(data.activatorEl.value);
|
|
109
108
|
observer.observe(data.contentEl.value);
|
|
@@ -113,7 +112,9 @@ function connectedPositionStrategy(data, props, contentStyles) {
|
|
|
113
112
|
} // eslint-disable-next-line max-statements
|
|
114
113
|
|
|
115
114
|
|
|
116
|
-
function
|
|
115
|
+
function updateLocation() {
|
|
116
|
+
var _props$maxWidth;
|
|
117
|
+
|
|
117
118
|
observe = false;
|
|
118
119
|
requestAnimationFrame(() => {
|
|
119
120
|
requestAnimationFrame(() => observe = true);
|
|
@@ -154,13 +155,15 @@ function connectedPositionStrategy(data, props, contentStyles) {
|
|
|
154
155
|
el.scrollTo(...position);
|
|
155
156
|
});
|
|
156
157
|
}
|
|
157
|
-
const contentHeight = Math.min(configuredMaxHeight.value, contentBox.height);
|
|
158
|
+
const contentHeight = Math.min(configuredMaxHeight.value, contentBox.height); // Regard undefined maxWidth as maximally occupying whole remaining space by default
|
|
159
|
+
|
|
160
|
+
const maxFreeSpaceWidth = props.maxWidth === undefined ? Number.MAX_VALUE : parseInt((_props$maxWidth = props.maxWidth) != null ? _props$maxWidth : 0, 10);
|
|
158
161
|
const viewportMargin = 12;
|
|
159
162
|
const freeSpace = {
|
|
160
163
|
top: targetBox.top - viewportMargin,
|
|
161
164
|
bottom: viewportHeight - targetBox.bottom - viewportMargin,
|
|
162
|
-
left: targetBox.left - viewportMargin,
|
|
163
|
-
right: viewportWidth - targetBox.right - viewportMargin
|
|
165
|
+
left: Math.min(targetBox.left - viewportMargin, maxFreeSpaceWidth),
|
|
166
|
+
right: Math.min(viewportWidth - targetBox.right - viewportMargin, maxFreeSpaceWidth)
|
|
164
167
|
};
|
|
165
168
|
const fitsY = preferredAnchor.value.side === 'bottom' && contentHeight <= freeSpace.bottom || preferredAnchor.value.side === 'top' && contentHeight <= freeSpace.top;
|
|
166
169
|
const anchor = fitsY ? preferredAnchor.value : preferredAnchor.value.side === 'bottom' && freeSpace.top > freeSpace.bottom || preferredAnchor.value.side === 'top' && freeSpace.bottom > freeSpace.top ? oppositeAnchor(preferredAnchor.value) : preferredAnchor.value;
|
|
@@ -189,15 +192,15 @@ function connectedPositionStrategy(data, props, contentStyles) {
|
|
|
189
192
|
});
|
|
190
193
|
}
|
|
191
194
|
|
|
192
|
-
watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset], () =>
|
|
195
|
+
watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset], () => updateLocation(), {
|
|
193
196
|
immediate: !activatorFixed
|
|
194
197
|
});
|
|
195
|
-
if (activatorFixed) nextTick(() =>
|
|
198
|
+
if (activatorFixed) nextTick(() => updateLocation());
|
|
196
199
|
requestAnimationFrame(() => {
|
|
197
|
-
if (contentStyles.value.maxHeight)
|
|
200
|
+
if (contentStyles.value.maxHeight) updateLocation();
|
|
198
201
|
});
|
|
199
202
|
return {
|
|
200
|
-
|
|
203
|
+
updateLocation
|
|
201
204
|
};
|
|
202
205
|
}
|
|
203
|
-
//# sourceMappingURL=
|
|
206
|
+
//# sourceMappingURL=locationStrategies.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locationStrategies.mjs","names":["computed","effectScope","nextTick","onScopeDispose","ref","watch","watchEffect","convertToUnit","getScrollParent","IN_BROWSER","isFixedPosition","nullifyTransforms","oppositeAnchor","parseAnchor","physicalAnchor","propsFactory","Box","anchorToPoint","getOffset","locationStrategies","static","staticLocationStrategy","connected","connectedLocationStrategy","makeLocationStrategyProps","locationStrategy","type","String","Function","default","validator","val","location","origin","offset","Number","useLocationStrategies","props","data","contentStyles","updateLocation","scope","stop","value","undefined","isActive","run","window","addEventListener","onResize","passive","removeEventListener","e","activatorFixed","activatorEl","Object","assign","position","preferredAnchor","preferredOrigin","doesOverlap","side","configuredMaxHeight","parseFloat","maxHeight","isNaN","Infinity","configuredMinWidth","minWidth","observe","observer","ResizeObserver","contentEl","disconnect","requestAnimationFrame","targetBox","getBoundingClientRect","x","y","width","height","scrollParent","viewportWidth","clientWidth","viewportHeight","Math","min","clientHeight","innerHeight","contentBox","scrollables","Map","querySelectorAll","forEach","el","scrollLeft","scrollTop","set","initialMaxWidth","style","maxWidth","initialMaxHeight","removeProperty","left","top","scrollTo","contentHeight","maxFreeSpaceWidth","MAX_VALUE","parseInt","viewportMargin","freeSpace","bottom","right","fitsY","anchor","canFill","includes","max","floor","targetPoint","contentPoint","round","transformOrigin","immediate"],"sources":["../../../src/components/VOverlay/locationStrategies.ts"],"sourcesContent":["// Utilities\nimport { computed, effectScope, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue'\nimport {\n convertToUnit,\n getScrollParent,\n IN_BROWSER,\n isFixedPosition,\n nullifyTransforms,\n oppositeAnchor,\n parseAnchor,\n physicalAnchor,\n propsFactory,\n} from '@/util'\nimport { Box } from '@/util/box'\nimport { anchorToPoint, getOffset } from './util/point'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\nimport type { Anchor } from '@/util'\n\nexport interface LocationStrategyData {\n contentEl: Ref<HTMLElement | undefined>\n activatorEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n}\n\nconst locationStrategies = {\n static: staticLocationStrategy, // specific viewport position, usually centered\n connected: connectedLocationStrategy, // connected to a certain element\n}\n\nexport interface StrategyProps {\n locationStrategy: keyof typeof locationStrategies | (\n (\n data: LocationStrategyData,\n props: StrategyProps,\n contentStyles: Ref<Record<string, string>>\n ) => undefined | { updateLocation: (e: Event) => void }\n )\n location: Anchor\n origin: Anchor | 'auto' | 'overlap'\n offset?: number | string\n maxHeight?: number | string\n maxWidth?: number | string\n minHeight?: number | string\n minWidth?: number | string\n}\n\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function] as PropType<StrategyProps['locationStrategy']>,\n default: 'static',\n validator: (val: any) => typeof val === 'function' || val in locationStrategies,\n },\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom',\n },\n origin: {\n type: String as PropType<StrategyProps['origin']>,\n default: 'auto',\n },\n offset: [Number, String],\n})\n\nexport function useLocationStrategies (\n props: StrategyProps,\n data: LocationStrategyData\n) {\n const contentStyles = ref({})\n const updateLocation = ref<(e: Event) => void>()\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n updateLocation.value = undefined\n\n if (!(IN_BROWSER && data.isActive.value && props.locationStrategy)) return\n\n scope = effectScope()\n await nextTick()\n scope.run(() => {\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation\n }\n })\n })\n\n IN_BROWSER && window.addEventListener('resize', onResize, { passive: true })\n\n onScopeDispose(() => {\n IN_BROWSER && window.removeEventListener('resize', onResize)\n updateLocation.value = undefined\n scope?.stop()\n })\n\n function onResize (e: Event) {\n updateLocation.value?.(e)\n }\n\n return {\n contentStyles,\n updateLocation,\n }\n}\n\nfunction staticLocationStrategy () {\n // TODO\n}\n\nfunction connectedLocationStrategy (data: LocationStrategyData, props: StrategyProps, contentStyles: Ref<Record<string, string>>) {\n const activatorFixed = isFixedPosition(data.activatorEl.value)\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n })\n }\n\n const preferredAnchor = computed(() => parseAnchor(props.location))\n const preferredOrigin = computed(() =>\n props.origin === 'overlap' ? preferredAnchor.value\n : props.origin === 'auto' ? oppositeAnchor(preferredAnchor.value)\n : parseAnchor(props.origin)\n )\n const doesOverlap = computed(() => {\n return preferredAnchor.value.side === preferredOrigin.value.side\n })\n\n const configuredMaxHeight = computed(() => {\n const val = parseFloat(props.maxHeight!)\n return isNaN(val) ? Infinity : val\n })\n\n const configuredMinWidth = computed(() => {\n const val = parseFloat(props.minWidth!)\n return isNaN(val) ? Infinity : val\n })\n\n let observe = false\n if (IN_BROWSER) {\n const observer = new ResizeObserver(() => {\n if (observe) updateLocation()\n })\n observer.observe(data.activatorEl.value!)\n observer.observe(data.contentEl.value!)\n\n onScopeDispose(() => {\n observer.disconnect()\n })\n }\n\n // eslint-disable-next-line max-statements\n function updateLocation () {\n observe = false\n requestAnimationFrame(() => {\n requestAnimationFrame(() => observe = true)\n })\n\n const targetBox = data.activatorEl.value!.getBoundingClientRect()\n // TODO: offset shouldn't affect width\n if (props.offset) {\n targetBox.x -= +props.offset\n targetBox.y -= +props.offset\n targetBox.width += +props.offset * 2\n targetBox.height += +props.offset * 2\n }\n\n const scrollParent = getScrollParent(data.contentEl.value)\n const viewportWidth = scrollParent.clientWidth\n const viewportHeight = Math.min(scrollParent.clientHeight, window.innerHeight)\n\n let contentBox\n {\n const scrollables = new Map<Element, [number, number]>()\n data.contentEl.value!.querySelectorAll('*').forEach(el => {\n const x = el.scrollLeft\n const y = el.scrollTop\n if (x || y) {\n scrollables.set(el, [x, y])\n }\n })\n\n const initialMaxWidth = data.contentEl.value!.style.maxWidth\n const initialMaxHeight = data.contentEl.value!.style.maxHeight\n data.contentEl.value!.style.removeProperty('max-width')\n data.contentEl.value!.style.removeProperty('max-height')\n\n contentBox = nullifyTransforms(data.contentEl.value!)\n contentBox.x -= parseFloat(data.contentEl.value!.style.left) || 0\n contentBox.y -= parseFloat(data.contentEl.value!.style.top) || 0\n\n data.contentEl.value!.style.maxWidth = initialMaxWidth\n data.contentEl.value!.style.maxHeight = initialMaxHeight\n scrollables.forEach((position, el) => {\n el.scrollTo(...position)\n })\n }\n\n const contentHeight = Math.min(configuredMaxHeight.value, contentBox.height)\n\n // Regard undefined maxWidth as maximally occupying whole remaining space by default\n const maxFreeSpaceWidth = props.maxWidth === undefined ? Number.MAX_VALUE : parseInt(props.maxWidth ?? 0, 10)\n\n const viewportMargin = 12\n const freeSpace = {\n top: targetBox.top - viewportMargin,\n bottom: viewportHeight - targetBox.bottom - viewportMargin,\n left: Math.min(targetBox.left - viewportMargin, maxFreeSpaceWidth),\n right: Math.min(viewportWidth - targetBox.right - viewportMargin, maxFreeSpaceWidth),\n }\n\n const fitsY = (preferredAnchor.value.side === 'bottom' && contentHeight <= freeSpace.bottom) ||\n (preferredAnchor.value.side === 'top' && contentHeight <= freeSpace.top)\n\n const anchor = fitsY ? preferredAnchor.value\n : (preferredAnchor.value.side === 'bottom' && freeSpace.top > freeSpace.bottom) ||\n (preferredAnchor.value.side === 'top' && freeSpace.bottom > freeSpace.top) ? oppositeAnchor(preferredAnchor.value)\n : preferredAnchor.value\n const origin = fitsY ? preferredOrigin.value : oppositeAnchor(anchor)\n\n const canFill = doesOverlap.value || ['center', 'top', 'bottom'].includes(anchor.side)\n\n const maxWidth = canFill ? Math.min(viewportWidth, Math.max(targetBox.width, viewportWidth - viewportMargin * 2))\n : anchor.side === 'end' ? freeSpace.right\n : anchor.side === 'start' ? freeSpace.left\n : null\n const minWidth = Math.min(configuredMinWidth.value, maxWidth!, targetBox.width)\n const maxHeight = fitsY ? configuredMaxHeight.value : Math.min(\n configuredMaxHeight.value,\n Math.floor(anchor.side === 'top' ? freeSpace.top : freeSpace.bottom)\n )\n\n const targetPoint = anchorToPoint(anchor, targetBox)\n const contentPoint = anchorToPoint(origin, new Box({\n ...contentBox,\n height: Math.min(contentHeight, maxHeight),\n }))\n\n const { x, y } = getOffset(targetPoint, contentPoint)\n\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': physicalAnchor(anchor, data.activatorEl.value!),\n top: convertToUnit(Math.round(y)),\n left: convertToUnit(Math.round(x)), // TODO: right for origin=\"end\", rtl\n transformOrigin: physicalAnchor(origin, data.activatorEl.value!),\n minWidth: convertToUnit(minWidth),\n maxWidth: convertToUnit(maxWidth),\n maxHeight: convertToUnit(maxHeight),\n })\n }\n\n watch(\n () => [preferredAnchor.value, preferredOrigin.value, props.offset],\n () => updateLocation(),\n { immediate: !activatorFixed }\n )\n\n if (activatorFixed) nextTick(() => updateLocation())\n requestAnimationFrame(() => {\n if (contentStyles.value.maxHeight) updateLocation()\n })\n\n return { updateLocation }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"requestNewFrame.mjs","names":["clean","frames","requestNewFrame","cb","length","push","run","raf","cancelAnimationFrame","requestAnimationFrame","frame","shift"],"sources":["../../../src/components/VOverlay/requestNewFrame.ts"],"sourcesContent":["let clean = true\nconst frames = [] as any[]\n\n/**\n * Schedule a task to run in an animation frame on its own\n * This is useful for heavy tasks that may cause jank if all ran together\n */\nexport function requestNewFrame (cb: () => void) {\n if (!clean || frames.length) {\n frames.push(cb)\n run()\n } else {\n clean = false\n cb()\n run()\n }\n}\n\nlet raf = -1\nfunction run () {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n const frame = frames.shift()\n if (frame) frame()\n\n if (frames.length) run()\n else clean = true\n })\n}\n"],"mappings":"AAAA,IAAIA,KAAK,GAAG,IAAZ;AACA,MAAMC,MAAM,GAAG,EAAf;AAEA;AACA;AACA;AACA;;AACA,OAAO,SAASC,eAAT,CAA0BC,EAA1B,EAA0C;EAC/C,IAAI,CAACH,KAAD,IAAUC,MAAM,CAACG,MAArB,EAA6B;IAC3BH,MAAM,CAACI,IAAP,CAAYF,EAAZ;IACAG,GAAG;EACJ,CAHD,MAGO;IACLN,KAAK,GAAG,KAAR;IACAG,EAAE;IACFG,GAAG;EACJ;AACF;AAED,IAAIC,GAAG,GAAG,CAAC,CAAX;;AACA,SAASD,GAAT,GAAgB;EACdE,oBAAoB,CAACD,GAAD,CAApB;EACAA,GAAG,GAAGE,qBAAqB,CAAC,MAAM;IAChC,MAAMC,KAAK,GAAGT,MAAM,CAACU,KAAP,EAAd;IACA,IAAID,KAAJ,EAAWA,KAAK;IAEhB,IAAIT,MAAM,CAACG,MAAX,EAAmBE,GAAG,GAAtB,KACKN,KAAK,GAAG,IAAR;EACN,CAN0B,CAA3B;AAOD"}
|
|
@@ -4,6 +4,7 @@ import { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue';
|
|
|
4
4
|
import { requestNewFrame } from "./requestNewFrame.mjs"; // Types
|
|
5
5
|
|
|
6
6
|
const scrollStrategies = {
|
|
7
|
+
none: null,
|
|
7
8
|
close: closeScrollStrategy,
|
|
8
9
|
block: blockScrollStrategy,
|
|
9
10
|
reposition: repositionScrollStrategy
|
|
@@ -60,13 +61,21 @@ function blockScrollStrategy(data) {
|
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
scrollElements.forEach((el, i) => {
|
|
64
|
+
el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft));
|
|
65
|
+
el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop));
|
|
63
66
|
el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth));
|
|
64
67
|
el.classList.add('v-overlay-scroll-blocked');
|
|
65
68
|
});
|
|
66
69
|
onScopeDispose(() => {
|
|
67
70
|
scrollElements.forEach((el, i) => {
|
|
71
|
+
const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'));
|
|
72
|
+
const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'));
|
|
73
|
+
el.style.removeProperty('--v-body-scroll-x');
|
|
74
|
+
el.style.removeProperty('--v-body-scroll-y');
|
|
68
75
|
el.style.removeProperty('--v-scrollbar-offset');
|
|
69
76
|
el.classList.remove('v-overlay-scroll-blocked');
|
|
77
|
+
el.scrollLeft = -x;
|
|
78
|
+
el.scrollTop = -y;
|
|
70
79
|
});
|
|
71
80
|
|
|
72
81
|
if (scrollableParent) {
|
|
@@ -83,10 +92,10 @@ function repositionScrollStrategy(data) {
|
|
|
83
92
|
|
|
84
93
|
function update(e) {
|
|
85
94
|
requestNewFrame(() => {
|
|
86
|
-
var _data$
|
|
95
|
+
var _data$updateLocation$, _data$updateLocation;
|
|
87
96
|
|
|
88
97
|
const start = performance.now();
|
|
89
|
-
(_data$
|
|
98
|
+
(_data$updateLocation$ = (_data$updateLocation = data.updateLocation).value) == null ? void 0 : _data$updateLocation$.call(_data$updateLocation, e);
|
|
90
99
|
const time = performance.now() - start;
|
|
91
100
|
slow = time / (1000 / 60) > 2;
|
|
92
101
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"scrollStrategies.mjs","names":["convertToUnit","getScrollParents","hasScrollbar","IN_BROWSER","propsFactory","effectScope","nextTick","onScopeDispose","watchEffect","requestNewFrame","scrollStrategies","none","close","closeScrollStrategy","block","blockScrollStrategy","reposition","repositionScrollStrategy","makeScrollStrategyProps","scrollStrategy","type","String","Function","default","validator","val","useScrollStrategies","props","data","scope","stop","isActive","value","run","onScroll","e","bindScroll","activatorEl","contentEl","scrollElements","Set","filter","el","classList","contains","scrollbarWidth","window","innerWidth","document","documentElement","offsetWidth","scrollableParent","root","offsetParent","add","forEach","i","style","setProperty","scrollLeft","scrollTop","x","parseFloat","getPropertyValue","y","removeProperty","remove","slow","raf","update","start","performance","now","updateLocation","time","cancelAnimationFrame","requestAnimationFrame","addEventListener","passive","removeEventListener"],"sources":["../../../src/components/VOverlay/scrollStrategies.ts"],"sourcesContent":["// Utilities\nimport { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from '@/util'\nimport { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue'\nimport { requestNewFrame } from './requestNewFrame'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\n\nexport interface ScrollStrategyData {\n root: Ref<HTMLElement | undefined>\n contentEl: Ref<HTMLElement | undefined>\n activatorEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n updateLocation: Ref<((e: Event) => void) | undefined>\n}\n\nconst scrollStrategies = {\n none: null,\n close: closeScrollStrategy,\n block: blockScrollStrategy,\n reposition: repositionScrollStrategy,\n}\n\ninterface StrategyProps {\n scrollStrategy: keyof typeof scrollStrategies | ((data: ScrollStrategyData) => void)\n}\n\nexport const makeScrollStrategyProps = propsFactory({\n scrollStrategy: {\n type: [String, Function] as PropType<StrategyProps['scrollStrategy']>,\n default: 'block',\n validator: (val: any) => typeof val === 'function' || val in scrollStrategies,\n },\n})\n\nexport function useScrollStrategies (\n props: StrategyProps,\n data: ScrollStrategyData\n) {\n if (!IN_BROWSER) return\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n\n if (!(data.isActive.value && props.scrollStrategy)) return\n\n scope = effectScope()\n await nextTick()\n scope.run(() => {\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(data)\n } else {\n scrollStrategies[props.scrollStrategy]?.(data)\n }\n })\n })\n}\n\nfunction closeScrollStrategy (data: ScrollStrategyData) {\n function onScroll (e: Event) {\n data.isActive.value = false\n }\n\n bindScroll(data.activatorEl.value ?? data.contentEl.value, onScroll)\n}\n\nfunction blockScrollStrategy (data: ScrollStrategyData) {\n const scrollElements = [...new Set([\n ...getScrollParents(data.activatorEl.value),\n ...getScrollParents(data.contentEl.value),\n ])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'))\n const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth\n\n const scrollableParent = (el => hasScrollbar(el) && el)(data.root.value?.offsetParent || document.documentElement)\n if (scrollableParent) {\n data.root.value!.classList.add('v-overlay--scroll-blocked')\n }\n\n scrollElements.forEach((el, i) => {\n el.style.setProperty('--v-body-scroll-x', convertToUnit(-el.scrollLeft))\n el.style.setProperty('--v-body-scroll-y', convertToUnit(-el.scrollTop))\n el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth))\n el.classList.add('v-overlay-scroll-blocked')\n })\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n const x = parseFloat(el.style.getPropertyValue('--v-body-scroll-x'))\n const y = parseFloat(el.style.getPropertyValue('--v-body-scroll-y'))\n\n el.style.removeProperty('--v-body-scroll-x')\n el.style.removeProperty('--v-body-scroll-y')\n el.style.removeProperty('--v-scrollbar-offset')\n el.classList.remove('v-overlay-scroll-blocked')\n\n el.scrollLeft = -x\n el.scrollTop = -y\n })\n if (scrollableParent) {\n data.root.value!.classList.remove('v-overlay--scroll-blocked')\n }\n })\n}\n\nfunction repositionScrollStrategy (data: ScrollStrategyData) {\n let slow = false\n let raf = -1\n\n function update (e: Event) {\n requestNewFrame(() => {\n const start = performance.now()\n data.updateLocation.value?.(e)\n const time = performance.now() - start\n slow = time / (1000 / 60) > 2\n })\n }\n\n bindScroll(data.activatorEl.value ?? data.contentEl.value, e => {\n if (slow) {\n // If the position calculation is slow,\n // defer updates until scrolling is finished.\n // Browsers usually fire one scroll event per frame so\n // we just wait until we've got two frames without an event\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(() => {\n raf = requestAnimationFrame(() => {\n update(e)\n })\n })\n } else {\n update(e)\n }\n })\n}\n\n/** @private */\nfunction bindScroll (el: HTMLElement | undefined, onScroll: (e: Event) => void) {\n const scrollElements = [document, ...getScrollParents(el)]\n scrollElements.forEach(el => {\n el.addEventListener('scroll', onScroll, { passive: true })\n })\n\n onScopeDispose(() => {\n scrollElements.forEach(el => {\n el.removeEventListener('scroll', onScroll)\n })\n })\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// Utilities
|
|
2
2
|
import { getCurrentInstance, IN_BROWSER, isComponentInstance, propsFactory, SUPPORTS_FOCUS_VISIBLE } from "../../util/index.mjs";
|
|
3
3
|
import { makeDelayProps, useDelay } from "../../composables/delay.mjs";
|
|
4
|
-
import {
|
|
4
|
+
import { VMenuSymbol } from "../VMenu/shared.mjs";
|
|
5
|
+
import { computed, effectScope, inject, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue'; // Types
|
|
5
6
|
|
|
6
7
|
export const makeActivatorProps = propsFactory({
|
|
7
8
|
activator: [String, Object],
|
|
@@ -18,9 +19,14 @@ export const makeActivatorProps = propsFactory({
|
|
|
18
19
|
type: Boolean,
|
|
19
20
|
default: undefined
|
|
20
21
|
},
|
|
22
|
+
closeOnContentClick: Boolean,
|
|
21
23
|
...makeDelayProps()
|
|
22
24
|
});
|
|
23
|
-
export function useActivator(props,
|
|
25
|
+
export function useActivator(props, _ref) {
|
|
26
|
+
let {
|
|
27
|
+
isActive,
|
|
28
|
+
isTop
|
|
29
|
+
} = _ref;
|
|
24
30
|
const activatorEl = ref();
|
|
25
31
|
let isHovered = false;
|
|
26
32
|
let isFocused = false;
|
|
@@ -30,7 +36,7 @@ export function useActivator(props, isActive) {
|
|
|
30
36
|
runOpenDelay,
|
|
31
37
|
runCloseDelay
|
|
32
38
|
} = useDelay(props, value => {
|
|
33
|
-
if (value === (props.openOnHover && isHovered || openOnFocus.value && isFocused)) {
|
|
39
|
+
if (value === (props.openOnHover && isHovered || openOnFocus.value && isFocused) && !(props.openOnHover && isActive.value && !isTop.value)) {
|
|
34
40
|
isActive.value = value;
|
|
35
41
|
}
|
|
36
42
|
});
|
|
@@ -81,6 +87,37 @@ export function useActivator(props, isActive) {
|
|
|
81
87
|
|
|
82
88
|
return events;
|
|
83
89
|
});
|
|
90
|
+
const contentEvents = computed(() => {
|
|
91
|
+
const events = {};
|
|
92
|
+
|
|
93
|
+
if (props.openOnHover) {
|
|
94
|
+
events.mouseenter = () => {
|
|
95
|
+
isHovered = true;
|
|
96
|
+
runOpenDelay();
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
events.mouseleave = () => {
|
|
100
|
+
isHovered = false;
|
|
101
|
+
runCloseDelay();
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (props.closeOnContentClick) {
|
|
106
|
+
const menu = inject(VMenuSymbol, null);
|
|
107
|
+
|
|
108
|
+
events.click = () => {
|
|
109
|
+
isActive.value = false;
|
|
110
|
+
menu == null ? void 0 : menu.closeParents();
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return events;
|
|
115
|
+
});
|
|
116
|
+
watch(isTop, val => {
|
|
117
|
+
if (val && props.openOnHover && !isHovered) {
|
|
118
|
+
isActive.value = false;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
84
121
|
const activatorRef = ref();
|
|
85
122
|
watchEffect(() => {
|
|
86
123
|
if (!activatorRef.value) return;
|
|
@@ -89,14 +126,14 @@ export function useActivator(props, isActive) {
|
|
|
89
126
|
activatorEl.value = isComponentInstance(activator) ? activator.$el : activator;
|
|
90
127
|
});
|
|
91
128
|
});
|
|
129
|
+
const vm = getCurrentInstance('useActivator');
|
|
92
130
|
let scope;
|
|
93
131
|
watch(() => !!props.activator, val => {
|
|
94
132
|
if (val && IN_BROWSER) {
|
|
95
133
|
scope = effectScope();
|
|
96
134
|
scope.run(() => {
|
|
97
|
-
_useActivator(props, {
|
|
135
|
+
_useActivator(props, vm, {
|
|
98
136
|
activatorEl,
|
|
99
|
-
activatorRef,
|
|
100
137
|
activatorEvents
|
|
101
138
|
});
|
|
102
139
|
});
|
|
@@ -110,15 +147,16 @@ export function useActivator(props, isActive) {
|
|
|
110
147
|
return {
|
|
111
148
|
activatorEl,
|
|
112
149
|
activatorRef,
|
|
113
|
-
activatorEvents
|
|
150
|
+
activatorEvents,
|
|
151
|
+
contentEvents
|
|
114
152
|
};
|
|
115
153
|
}
|
|
116
154
|
|
|
117
|
-
function _useActivator(props,
|
|
155
|
+
function _useActivator(props, vm, _ref2) {
|
|
118
156
|
let {
|
|
119
157
|
activatorEl,
|
|
120
158
|
activatorEvents
|
|
121
|
-
} =
|
|
159
|
+
} = _ref2;
|
|
122
160
|
watch(() => props.activator, (val, oldVal) => {
|
|
123
161
|
if (oldVal && val !== oldVal) {
|
|
124
162
|
const activator = getActivator(oldVal);
|
|
@@ -144,8 +182,8 @@ function _useActivator(props, _ref) {
|
|
|
144
182
|
let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;
|
|
145
183
|
|
|
146
184
|
if (!el) return;
|
|
147
|
-
Object.entries(activatorEvents.value).forEach(
|
|
148
|
-
let [name, cb] =
|
|
185
|
+
Object.entries(activatorEvents.value).forEach(_ref3 => {
|
|
186
|
+
let [name, cb] = _ref3;
|
|
149
187
|
el.addEventListener(name, cb);
|
|
150
188
|
});
|
|
151
189
|
Object.keys(_props).forEach(k => {
|
|
@@ -163,8 +201,8 @@ function _useActivator(props, _ref) {
|
|
|
163
201
|
let _props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.activatorProps;
|
|
164
202
|
|
|
165
203
|
if (!el) return;
|
|
166
|
-
Object.entries(activatorEvents.value).forEach(
|
|
167
|
-
let [name, cb] =
|
|
204
|
+
Object.entries(activatorEvents.value).forEach(_ref4 => {
|
|
205
|
+
let [name, cb] = _ref4;
|
|
168
206
|
el.removeEventListener(name, cb);
|
|
169
207
|
});
|
|
170
208
|
Object.keys(_props).forEach(k => {
|
|
@@ -172,8 +210,6 @@ function _useActivator(props, _ref) {
|
|
|
172
210
|
});
|
|
173
211
|
}
|
|
174
212
|
|
|
175
|
-
const vm = getCurrentInstance('useActivator');
|
|
176
|
-
|
|
177
213
|
function getActivator() {
|
|
178
214
|
var _activator;
|
|
179
215
|
|
|
@@ -184,7 +220,13 @@ function _useActivator(props, _ref) {
|
|
|
184
220
|
if (selector === 'parent') {
|
|
185
221
|
var _vm$proxy, _vm$proxy$$el;
|
|
186
222
|
|
|
187
|
-
|
|
223
|
+
let el = vm == null ? void 0 : (_vm$proxy = vm.proxy) == null ? void 0 : (_vm$proxy$$el = _vm$proxy.$el) == null ? void 0 : _vm$proxy$$el.parentNode;
|
|
224
|
+
|
|
225
|
+
while (el.hasAttribute('data-no-activator')) {
|
|
226
|
+
el = el.parentNode;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
activator = el;
|
|
188
230
|
} else if (typeof selector === 'string') {
|
|
189
231
|
// Selector
|
|
190
232
|
activator = document.querySelector(selector);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VOverlay/useActivator.tsx"],"names":["getCurrentInstance","IN_BROWSER","isComponentInstance","propsFactory","SUPPORTS_FOCUS_VISIBLE","makeDelayProps","useDelay","computed","effectScope","nextTick","onScopeDispose","ref","watch","watchEffect","makeActivatorProps","activator","String","Object","activatorProps","type","default","openOnClick","Boolean","undefined","openOnHover","openOnFocus","useActivator","props","isActive","activatorEl","isHovered","isFocused","value","runOpenDelay","runCloseDelay","availableEvents","click","e","stopPropagation","currentTarget","target","mouseenter","mouseleave","focus","matches","blur","activatorEvents","events","activatorRef","$el","scope","val","run","_useActivator","stop","flush","immediate","oldVal","getActivator","unbindActivatorProps","bindActivatorProps","el","_props","entries","forEach","name","cb","addEventListener","keys","k","removeAttribute","setAttribute","removeEventListener","vm","selector","proxy","parentNode","document","querySelector","nodeType","Node","ELEMENT_NODE"],"mappings":"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","sourcesContent":["// Utilities\nimport { getCurrentInstance, IN_BROWSER, isComponentInstance, propsFactory, SUPPORTS_FOCUS_VISIBLE } from '@/util'\nimport { makeDelayProps, useDelay } from '@/composables/delay'\nimport {\n computed,\n effectScope,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\n\n// Types\nimport type { DelayProps } from '@/composables/delay'\nimport type {\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\n\ninterface ActivatorProps extends DelayProps {\n activator?: 'parent' | string | Element | ComponentPublicInstance\n activatorProps: Record<string, any>\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n}\n\nexport const makeActivatorProps = propsFactory({\n activator: [String, Object] as PropType<ActivatorProps['activator']>,\n activatorProps: {\n type: Object as PropType<ActivatorProps['activatorProps']>,\n default: () => ({}),\n },\n\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined,\n },\n\n ...makeDelayProps(),\n})\n\nexport function useActivator (\n props: ActivatorProps,\n isActive: Ref<boolean>\n) {\n const activatorEl = ref<HTMLElement>()\n\n let isHovered = false\n let isFocused = false\n\n const openOnFocus = computed(() => props.openOnFocus || (props.openOnFocus == null && props.openOnHover))\n const openOnClick = computed(() => props.openOnClick || (props.openOnClick == null && !props.openOnHover && !openOnFocus.value))\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n if (value === (\n (props.openOnHover && isHovered) ||\n (openOnFocus.value && isFocused)\n )) {\n isActive.value = value\n }\n })\n\n const availableEvents = {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n isActive.value = !isActive.value\n },\n mouseenter: (e: MouseEvent) => {\n isHovered = true\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n runOpenDelay()\n },\n mouseleave: (e: MouseEvent) => {\n isHovered = false\n runCloseDelay()\n },\n focus: (e: FocusEvent) => {\n if (\n SUPPORTS_FOCUS_VISIBLE &&\n !(e.target as HTMLElement).matches(':focus-visible')\n ) return\n\n isFocused = true\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n\n runOpenDelay()\n },\n blur: (e: FocusEvent) => {\n isFocused = false\n e.stopPropagation()\n\n runCloseDelay()\n },\n }\n\n const activatorEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (openOnClick.value) {\n events.click = availableEvents.click\n }\n if (props.openOnHover) {\n events.mouseenter = availableEvents.mouseenter\n events.mouseleave = availableEvents.mouseleave\n }\n if (openOnFocus.value) {\n events.focus = availableEvents.focus\n events.blur = availableEvents.blur\n }\n\n return events\n })\n\n const activatorRef = ref()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n const activator = activatorRef.value\n activatorEl.value = isComponentInstance(activator) ? activator.$el : activator\n })\n })\n\n let scope: EffectScope\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope()\n scope.run(() => {\n _useActivator(props, { activatorEl, activatorRef, activatorEvents })\n })\n } else if (scope) {\n scope.stop()\n }\n }, { flush: 'post', immediate: true })\n\n return { activatorEl, activatorRef, activatorEvents }\n}\n\nfunction _useActivator (props: ActivatorProps, { activatorEl, activatorEvents }: ReturnType<typeof useActivator>) {\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal)\n activator && unbindActivatorProps(activator)\n }\n if (val) {\n nextTick(() => bindActivatorProps())\n }\n }, { immediate: true })\n\n watch(() => props.activatorProps, () => {\n bindActivatorProps()\n })\n\n onScopeDispose(() => {\n unbindActivatorProps()\n })\n\n function bindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.addEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n if (_props[k] == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, _props[k])\n }\n })\n }\n\n function unbindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.removeEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n el.removeAttribute(k)\n })\n }\n\n const vm = getCurrentInstance('useActivator')\n function getActivator (selector = props.activator): HTMLElement | undefined {\n let activator\n if (selector) {\n if (selector === 'parent') {\n activator = vm?.proxy?.$el?.parentNode\n } else if (typeof selector === 'string') {\n // Selector\n activator = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n activator = selector.$el\n } else {\n // HTMLElement | Element\n activator = selector\n }\n }\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : null\n\n return activatorEl.value\n }\n}\n"],"file":"useActivator.mjs"}
|
|
1
|
+
{"version":3,"file":"useActivator.mjs","names":["getCurrentInstance","IN_BROWSER","isComponentInstance","propsFactory","SUPPORTS_FOCUS_VISIBLE","makeDelayProps","useDelay","VMenuSymbol","computed","effectScope","inject","nextTick","onScopeDispose","ref","watch","watchEffect","makeActivatorProps","activator","String","Object","activatorProps","type","default","openOnClick","Boolean","undefined","openOnHover","openOnFocus","closeOnContentClick","useActivator","props","isActive","isTop","activatorEl","isHovered","isFocused","value","runOpenDelay","runCloseDelay","availableEvents","click","e","stopPropagation","currentTarget","target","mouseenter","mouseleave","focus","matches","blur","activatorEvents","events","contentEvents","menu","closeParents","val","activatorRef","$el","vm","scope","run","_useActivator","stop","flush","immediate","oldVal","getActivator","unbindActivatorProps","bindActivatorProps","el","_props","entries","forEach","name","cb","addEventListener","keys","k","removeAttribute","setAttribute","removeEventListener","selector","proxy","parentNode","hasAttribute","document","querySelector","nodeType","Node","ELEMENT_NODE"],"sources":["../../../src/components/VOverlay/useActivator.tsx"],"sourcesContent":["// Utilities\nimport { getCurrentInstance, IN_BROWSER, isComponentInstance, propsFactory, SUPPORTS_FOCUS_VISIBLE } from '@/util'\nimport { makeDelayProps, useDelay } from '@/composables/delay'\nimport { VMenuSymbol } from '@/components/VMenu/shared'\nimport {\n computed,\n effectScope,\n inject,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\n\n// Types\nimport type { DelayProps } from '@/composables/delay'\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\n\ninterface ActivatorProps extends DelayProps {\n activator?: 'parent' | string | Element | ComponentPublicInstance\n activatorProps: Record<string, any>\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n\n closeOnContentClick: boolean\n}\n\nexport const makeActivatorProps = propsFactory({\n activator: [String, Object] as PropType<ActivatorProps['activator']>,\n activatorProps: {\n type: Object as PropType<ActivatorProps['activatorProps']>,\n default: () => ({}),\n },\n\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined,\n },\n\n closeOnContentClick: Boolean,\n\n ...makeDelayProps(),\n})\n\nexport function useActivator (\n props: ActivatorProps,\n { isActive, isTop }: { isActive: Ref<boolean>, isTop: Ref<boolean> }\n) {\n const activatorEl = ref<HTMLElement>()\n\n let isHovered = false\n let isFocused = false\n\n const openOnFocus = computed(() => props.openOnFocus || (props.openOnFocus == null && props.openOnHover))\n const openOnClick = computed(() => props.openOnClick || (props.openOnClick == null && !props.openOnHover && !openOnFocus.value))\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n if (\n value === (\n (props.openOnHover && isHovered) ||\n (openOnFocus.value && isFocused)\n ) && !(props.openOnHover && isActive.value && !isTop.value)\n ) {\n isActive.value = value\n }\n })\n\n const availableEvents = {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n isActive.value = !isActive.value\n },\n mouseenter: (e: MouseEvent) => {\n isHovered = true\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n runOpenDelay()\n },\n mouseleave: (e: MouseEvent) => {\n isHovered = false\n runCloseDelay()\n },\n focus: (e: FocusEvent) => {\n if (\n SUPPORTS_FOCUS_VISIBLE &&\n !(e.target as HTMLElement).matches(':focus-visible')\n ) return\n\n isFocused = true\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n\n runOpenDelay()\n },\n blur: (e: FocusEvent) => {\n isFocused = false\n e.stopPropagation()\n\n runCloseDelay()\n },\n }\n\n const activatorEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (openOnClick.value) {\n events.click = availableEvents.click\n }\n if (props.openOnHover) {\n events.mouseenter = availableEvents.mouseenter\n events.mouseleave = availableEvents.mouseleave\n }\n if (openOnFocus.value) {\n events.focus = availableEvents.focus\n events.blur = availableEvents.blur\n }\n\n return events\n })\n\n const contentEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (props.openOnHover) {\n events.mouseenter = () => {\n isHovered = true\n runOpenDelay()\n }\n events.mouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null)\n events.click = () => {\n isActive.value = false\n menu?.closeParents()\n }\n }\n\n return events\n })\n\n watch(isTop, val => {\n if (val && props.openOnHover && !isHovered) {\n isActive.value = false\n }\n })\n\n const activatorRef = ref()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n const activator = activatorRef.value\n activatorEl.value = isComponentInstance(activator) ? activator.$el : activator\n })\n })\n\n const vm = getCurrentInstance('useActivator')\n let scope: EffectScope\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope()\n scope.run(() => {\n _useActivator(props, vm, { activatorEl, activatorEvents })\n })\n } else if (scope) {\n scope.stop()\n }\n }, { flush: 'post', immediate: true })\n\n return { activatorEl, activatorRef, activatorEvents, contentEvents }\n}\n\nfunction _useActivator (\n props: ActivatorProps,\n vm: ComponentInternalInstance,\n { activatorEl, activatorEvents }: Pick<ReturnType<typeof useActivator>, 'activatorEl' | 'activatorEvents'>\n) {\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal)\n activator && unbindActivatorProps(activator)\n }\n if (val) {\n nextTick(() => bindActivatorProps())\n }\n }, { immediate: true })\n\n watch(() => props.activatorProps, () => {\n bindActivatorProps()\n })\n\n onScopeDispose(() => {\n unbindActivatorProps()\n })\n\n function bindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.addEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n if (_props[k] == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, _props[k])\n }\n })\n }\n\n function unbindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.removeEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n el.removeAttribute(k)\n })\n }\n\n function getActivator (selector = props.activator): HTMLElement | undefined {\n let activator\n if (selector) {\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode\n while (el.hasAttribute('data-no-activator')) {\n el = el.parentNode\n }\n activator = el\n } else if (typeof selector === 'string') {\n // Selector\n activator = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n activator = selector.$el\n } else {\n // HTMLElement | Element\n activator = selector\n }\n }\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : null\n\n return activatorEl.value\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"point.mjs","names":["elementToViewport","point","offset","x","y","viewportToElement","getOffset","a","b","anchorToPoint","anchor","box","side","align","width","height"],"sources":["../../../../src/components/VOverlay/util/point.ts"],"sourcesContent":["import type { ParsedAnchor } from '@/util'\nimport type { Box } from '@/util/box'\n\ntype Point = { x: number, y: number }\ndeclare class As<T extends string> {\n private as: T\n}\ntype ElementPoint = Point & As<'element'>\ntype ViewportPoint = Point & As<'viewport'>\ntype Offset = Point & As<'offset'>\n\n/** Convert a point in local space to viewport space */\nexport function elementToViewport (point: ElementPoint, offset: Offset | Box) {\n return {\n x: point.x + offset.x,\n y: point.y + offset.y,\n } as ViewportPoint\n}\n\n/** Convert a point in viewport space to local space */\nexport function viewportToElement (point: ViewportPoint, offset: Offset | Box) {\n return {\n x: point.x - offset.x,\n y: point.y - offset.y,\n } as ElementPoint\n}\n\n/** Get the difference between two points */\nexport function getOffset<T extends Point> (a: T, b: T) {\n return {\n x: a.x - b.x,\n y: a.y - b.y,\n } as Offset\n}\n\n/** Convert an anchor object to a point in local space */\nexport function anchorToPoint (anchor: ParsedAnchor, box: Box): ViewportPoint {\n if (anchor.side === 'top' || anchor.side === 'bottom') {\n const { side, align } = anchor\n\n const x: number =\n align === 'start' ? 0\n : align === 'center' ? box.width / 2\n : align === 'end' ? box.width\n : align\n const y: number =\n side === 'top' ? 0\n : side === 'bottom' ? box.height\n : side\n\n return elementToViewport({ x, y } as ElementPoint, box)\n } else if (anchor.side === 'start' || anchor.side === 'end') {\n const { side, align } = anchor\n\n const x: number =\n side === 'start' ? 0\n : side === 'end' ? box.width\n : side\n const y: number =\n align === 'top' ? 0\n : align === 'center' ? box.height / 2\n : align === 'bottom' ? box.height\n : align\n\n return elementToViewport({ x, y } as ElementPoint, box)\n }\n\n return elementToViewport({\n x: box.width / 2,\n y: box.height / 2,\n } as ElementPoint, box)\n}\n"],"mappings":"AAWA;AACA,OAAO,SAASA,iBAAT,CAA4BC,KAA5B,EAAiDC,MAAjD,EAAuE;EAC5E,OAAO;IACLC,CAAC,EAAEF,KAAK,CAACE,CAAN,GAAUD,MAAM,CAACC,CADf;IAELC,CAAC,EAAEH,KAAK,CAACG,CAAN,GAAUF,MAAM,CAACE;EAFf,CAAP;AAID;AAED;;AACA,OAAO,SAASC,iBAAT,CAA4BJ,KAA5B,EAAkDC,MAAlD,EAAwE;EAC7E,OAAO;IACLC,CAAC,EAAEF,KAAK,CAACE,CAAN,GAAUD,MAAM,CAACC,CADf;IAELC,CAAC,EAAEH,KAAK,CAACG,CAAN,GAAUF,MAAM,CAACE;EAFf,CAAP;AAID;AAED;;AACA,OAAO,SAASE,SAAT,CAAqCC,CAArC,EAA2CC,CAA3C,EAAiD;EACtD,OAAO;IACLL,CAAC,EAAEI,CAAC,CAACJ,CAAF,GAAMK,CAAC,CAACL,CADN;IAELC,CAAC,EAAEG,CAAC,CAACH,CAAF,GAAMI,CAAC,CAACJ;EAFN,CAAP;AAID;AAED;;AACA,OAAO,SAASK,aAAT,CAAwBC,MAAxB,EAA8CC,GAA9C,EAAuE;EAC5E,IAAID,MAAM,CAACE,IAAP,KAAgB,KAAhB,IAAyBF,MAAM,CAACE,IAAP,KAAgB,QAA7C,EAAuD;IACrD,MAAM;MAAEA,IAAF;MAAQC;IAAR,IAAkBH,MAAxB;IAEA,MAAMP,CAAS,GACbU,KAAK,KAAK,OAAV,GAAoB,CAApB,GACEA,KAAK,KAAK,QAAV,GAAqBF,GAAG,CAACG,KAAJ,GAAY,CAAjC,GACAD,KAAK,KAAK,KAAV,GAAkBF,GAAG,CAACG,KAAtB,GACAD,KAJJ;IAKA,MAAMT,CAAS,GACbQ,IAAI,KAAK,KAAT,GAAiB,CAAjB,GACEA,IAAI,KAAK,QAAT,GAAoBD,GAAG,CAACI,MAAxB,GACAH,IAHJ;IAKA,OAAOZ,iBAAiB,CAAC;MAAEG,CAAF;MAAKC;IAAL,CAAD,EAA2BO,GAA3B,CAAxB;EACD,CAdD,MAcO,IAAID,MAAM,CAACE,IAAP,KAAgB,OAAhB,IAA2BF,MAAM,CAACE,IAAP,KAAgB,KAA/C,EAAsD;IAC3D,MAAM;MAAEA,IAAF;MAAQC;IAAR,IAAkBH,MAAxB;IAEA,MAAMP,CAAS,GACbS,IAAI,KAAK,OAAT,GAAmB,CAAnB,GACEA,IAAI,KAAK,KAAT,GAAiBD,GAAG,CAACG,KAArB,GACAF,IAHJ;IAIA,MAAMR,CAAS,GACbS,KAAK,KAAK,KAAV,GAAkB,CAAlB,GACEA,KAAK,KAAK,QAAV,GAAqBF,GAAG,CAACI,MAAJ,GAAa,CAAlC,GACAF,KAAK,KAAK,QAAV,GAAqBF,GAAG,CAACI,MAAzB,GACAF,KAJJ;IAMA,OAAOb,iBAAiB,CAAC;MAAEG,CAAF;MAAKC;IAAL,CAAD,EAA2BO,GAA3B,CAAxB;EACD;;EAED,OAAOX,iBAAiB,CAAC;IACvBG,CAAC,EAAEQ,GAAG,CAACG,KAAJ,GAAY,CADQ;IAEvBV,CAAC,EAAEO,GAAG,CAACI,MAAJ,GAAa;EAFO,CAAD,EAGLJ,GAHK,CAAxB;AAID"}
|