@vuetify/nightly 3.0.0-alpha.11 → 3.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -28
- package/dist/json/attributes.json +2472 -520
- package/dist/json/importMap.json +134 -14
- package/dist/json/tags.json +753 -112
- package/dist/json/web-types.json +11494 -5089
- package/dist/vuetify.css +4937 -2974
- package/dist/vuetify.d.ts +11788 -3139
- package/dist/vuetify.esm.js +12489 -5014
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +12486 -5010
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +3 -3
- package/dist/vuetify.min.js +1393 -2
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.css +80 -92
- package/lib/components/VAlert/VAlert.mjs +55 -65
- package/lib/components/VAlert/VAlert.mjs.map +1 -1
- package/lib/components/VAlert/VAlert.sass +56 -76
- package/lib/components/VAlert/VAlertTitle.mjs +3 -0
- package/lib/components/VAlert/VAlertTitle.mjs.map +1 -0
- package/lib/components/VAlert/_variables.scss +18 -30
- package/lib/components/VAlert/index.mjs +2 -1
- package/lib/components/VAlert/index.mjs.map +1 -1
- package/lib/components/VApp/VApp.css +1 -2
- package/lib/components/VApp/VApp.mjs +23 -13
- package/lib/components/VApp/VApp.mjs.map +1 -1
- package/lib/components/VApp/VApp.sass +1 -2
- package/lib/components/VApp/index.mjs +1 -1
- package/lib/components/VApp/index.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBar.css +4 -94
- package/lib/components/VAppBar/VAppBar.mjs +39 -100
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBar.sass +4 -87
- package/lib/components/VAppBar/VAppBarNavIcon.mjs +6 -5
- package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBarTitle.mjs +10 -19
- package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
- package/lib/components/VAppBar/_variables.scss +1 -1
- package/lib/components/VAppBar/index.mjs +3 -3
- package/lib/components/VAppBar/index.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.css +57 -0
- package/lib/components/VAutocomplete/VAutocomplete.mjs +229 -359
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +69 -33
- package/lib/components/VAutocomplete/_variables.scss +7 -4
- package/lib/components/VAutocomplete/index.mjs +1 -3
- package/lib/components/VAutocomplete/index.mjs.map +1 -1
- package/lib/components/VAvatar/VAvatar.css +3 -16
- package/lib/components/VAvatar/VAvatar.mjs +16 -15
- package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
- package/lib/components/VAvatar/VAvatar.sass +2 -17
- package/lib/components/VAvatar/_variables.scss +9 -2
- package/lib/components/VAvatar/index.mjs +1 -1
- package/lib/components/VAvatar/index.mjs.map +1 -1
- package/lib/components/VBadge/VBadge.css +2 -2
- package/lib/components/VBadge/VBadge.mjs +29 -19
- package/lib/components/VBadge/VBadge.mjs.map +1 -1
- package/lib/components/VBadge/VBadge.sass +2 -2
- package/lib/components/VBadge/_variables.scss +3 -2
- package/lib/components/VBadge/index.mjs +1 -1
- package/lib/components/VBadge/index.mjs.map +1 -1
- package/lib/components/VBanner/VBanner.css +16 -28
- package/lib/components/VBanner/VBanner.mjs +53 -46
- package/lib/components/VBanner/VBanner.mjs.map +1 -1
- package/lib/components/VBanner/VBanner.sass +8 -20
- package/lib/components/VBanner/VBannerActions.mjs +1 -1
- package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
- package/lib/components/VBanner/VBannerText.mjs +1 -1
- package/lib/components/VBanner/VBannerText.mjs.map +1 -1
- package/lib/components/VBanner/_variables.scss +2 -6
- package/lib/components/VBanner/index.mjs +3 -5
- package/lib/components/VBanner/index.mjs.map +1 -1
- package/lib/components/VBottomNavigation/VBottomNavigation.css +38 -7
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs +50 -30
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
- package/lib/components/VBottomNavigation/VBottomNavigation.sass +43 -7
- package/lib/components/VBottomNavigation/_variables.scss +19 -2
- package/lib/components/VBottomNavigation/index.mjs +1 -1
- package/lib/components/VBottomNavigation/index.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.css +7 -7
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +52 -47
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +30 -34
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/_variables.scss +1 -1
- package/lib/components/VBreadcrumbs/index.mjs +3 -3
- package/lib/components/VBreadcrumbs/index.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.css +25 -91
- package/lib/components/VBtn/VBtn.mjs +31 -25
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.sass +17 -68
- package/lib/components/VBtn/_variables.scss +6 -22
- package/lib/components/VBtn/index.mjs +1 -1
- package/lib/components/VBtn/index.mjs.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.css +49 -0
- package/lib/components/VBtnGroup/VBtnGroup.mjs +67 -0
- package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -0
- package/lib/components/VBtnGroup/VBtnGroup.sass +44 -0
- package/lib/components/VBtnGroup/_variables.scss +25 -0
- package/lib/components/VBtnGroup/index.mjs +2 -0
- package/lib/components/VBtnGroup/index.mjs.map +1 -0
- package/lib/components/VBtnToggle/VBtnToggle.css +3 -0
- package/lib/components/VBtnToggle/VBtnToggle.mjs +45 -39
- package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
- package/lib/components/VBtnToggle/VBtnToggle.sass +5 -97
- package/lib/components/VBtnToggle/_variables.scss +3 -10
- package/lib/components/VBtnToggle/index.mjs +1 -3
- package/lib/components/VBtnToggle/index.mjs.map +1 -1
- package/lib/components/VCalendar/VCalendar.mjs +8 -4
- package/lib/components/VCalendar/VCalendar.mjs.map +1 -1
- package/lib/components/VCalendar/VCalendarCategory.sass +67 -0
- package/lib/components/VCalendar/_variables.scss +4 -0
- package/lib/components/VCalendar/mixins/calendar-base.mjs +5 -4
- package/lib/components/VCalendar/mixins/calendar-base.mjs.map +1 -1
- package/lib/components/VCalendar/mixins/calendar-with-events.mjs +17 -11
- package/lib/components/VCalendar/mixins/calendar-with-events.mjs.map +1 -1
- package/lib/components/VCalendar/mixins/calendar-with-events.sass +7 -1
- package/lib/components/VCalendar/mixins/calendar-with-intervals.mjs +2 -1
- package/lib/components/VCalendar/mixins/calendar-with-intervals.mjs.map +1 -1
- package/lib/components/VCalendar/mixins/mouse.mjs +19 -0
- package/lib/components/VCalendar/mixins/mouse.mjs.map +1 -1
- package/lib/components/VCalendar/modes/common.mjs +7 -3
- package/lib/components/VCalendar/modes/common.mjs.map +1 -1
- package/lib/components/VCalendar/modes/stack.mjs +2 -1
- package/lib/components/VCalendar/modes/stack.mjs.map +1 -1
- package/lib/components/VCalendar/util/events.mjs +3 -1
- package/lib/components/VCalendar/util/events.mjs.map +1 -1
- package/lib/components/VCalendar/util/timestamp.mjs +19 -7
- package/lib/components/VCalendar/util/timestamp.mjs.map +1 -1
- package/lib/components/VCard/VCard.css +18 -17
- package/lib/components/VCard/VCard.mjs +67 -49
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/VCard.sass +9 -2
- package/lib/components/VCard/VCardActions.mjs +29 -2
- package/lib/components/VCard/VCardActions.mjs.map +1 -1
- package/lib/components/VCard/VCardAvatar.mjs +1 -1
- package/lib/components/VCard/VCardAvatar.mjs.map +1 -1
- package/lib/components/VCard/VCardHeader.mjs +1 -1
- package/lib/components/VCard/VCardHeader.mjs.map +1 -1
- package/lib/components/VCard/VCardHeaderText.mjs +1 -1
- package/lib/components/VCard/VCardHeaderText.mjs.map +1 -1
- package/lib/components/VCard/VCardImg.mjs +1 -1
- package/lib/components/VCard/VCardImg.mjs.map +1 -1
- package/lib/components/VCard/VCardSubtitle.mjs +1 -1
- package/lib/components/VCard/VCardSubtitle.mjs.map +1 -1
- package/lib/components/VCard/VCardText.mjs +1 -1
- package/lib/components/VCard/VCardText.mjs.map +1 -1
- package/lib/components/VCard/VCardTitle.mjs +1 -1
- package/lib/components/VCard/VCardTitle.mjs.map +1 -1
- package/lib/components/VCard/_variables.scss +5 -5
- package/lib/components/VCard/index.mjs +9 -10
- package/lib/components/VCard/index.mjs.map +1 -1
- package/lib/components/VCarousel/VCarousel.css +63 -0
- package/lib/components/VCarousel/VCarousel.mjs +100 -179
- package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
- package/lib/components/VCarousel/VCarousel.sass +7 -2
- package/lib/components/VCarousel/VCarouselItem.mjs +23 -58
- package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
- package/lib/components/VCarousel/_variables.scss +1 -3
- package/lib/components/VCarousel/index.mjs +2 -9
- package/lib/components/VCarousel/index.mjs.map +1 -1
- package/lib/components/VCheckbox/VCheckbox.css +3 -0
- package/lib/components/VCheckbox/VCheckbox.mjs +56 -83
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VCheckbox/VCheckbox.sass +8 -8
- package/lib/components/VCheckbox/_variables.scss +2 -4
- package/lib/components/VCheckbox/index.mjs +1 -9
- package/lib/components/VCheckbox/index.mjs.map +1 -1
- package/lib/components/VChip/VChip.css +101 -81
- package/lib/components/VChip/VChip.mjs +48 -27
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChip/VChip.sass +16 -15
- package/lib/components/VChip/_mixins.scss +5 -3
- package/lib/components/VChip/_variables.scss +6 -15
- package/lib/components/VChip/index.mjs +1 -1
- package/lib/components/VChip/index.mjs.map +1 -1
- package/lib/components/VChipGroup/VChipGroup.css +18 -0
- package/lib/components/VChipGroup/VChipGroup.mjs +66 -38
- package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
- package/lib/components/VChipGroup/VChipGroup.sass +11 -17
- package/lib/components/VChipGroup/_variables.scss +3 -5
- package/lib/components/VChipGroup/index.mjs +1 -3
- package/lib/components/VChipGroup/index.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPicker.css +21 -0
- package/lib/components/VColorPicker/VColorPicker.mjs +98 -128
- package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPicker.sass +10 -17
- package/lib/components/VColorPicker/VColorPickerCanvas.css +21 -0
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs +139 -121
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.sass +5 -3
- package/lib/components/VColorPicker/VColorPickerEdit.css +31 -0
- package/lib/components/VColorPicker/VColorPickerEdit.mjs +70 -130
- package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.sass +9 -6
- package/lib/components/VColorPicker/VColorPickerPreview.css +67 -0
- package/lib/components/VColorPicker/VColorPickerPreview.mjs +64 -82
- package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerPreview.sass +42 -39
- package/lib/components/VColorPicker/VColorPickerSwatches.css +35 -0
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs +33 -53
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.sass +6 -4
- package/lib/components/VColorPicker/_variables.scss +5 -9
- package/lib/components/VColorPicker/index.mjs +1 -5
- package/lib/components/VColorPicker/index.mjs.map +1 -1
- package/lib/components/VColorPicker/util/index.mjs +141 -97
- package/lib/components/VColorPicker/util/index.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.css +66 -0
- package/lib/components/VCombobox/VCombobox.mjs +317 -213
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +91 -0
- package/lib/components/VCombobox/_variables.scss +8 -0
- package/lib/components/VCombobox/index.mjs +1 -3
- package/lib/components/VCombobox/index.mjs.map +1 -1
- package/lib/components/VCounter/VCounter.css +2 -0
- package/lib/components/VCounter/VCounter.mjs +29 -14
- package/lib/components/VCounter/VCounter.mjs.map +1 -1
- package/lib/components/VCounter/VCounter.sass +3 -0
- package/lib/components/VCounter/_variables.scss +2 -0
- package/lib/components/VDataIterator/VDataIterator.mjs +14 -6
- package/lib/components/VDataIterator/VDataIterator.mjs.map +1 -1
- package/lib/components/VDataTable/MobileRow.mjs +6 -5
- package/lib/components/VDataTable/MobileRow.mjs.map +1 -1
- package/lib/components/VDataTable/Row.mjs +19 -11
- package/lib/components/VDataTable/Row.mjs.map +1 -1
- package/lib/components/VDataTable/RowGroup.mjs +5 -4
- package/lib/components/VDataTable/RowGroup.mjs.map +1 -1
- package/lib/components/VDataTable/VDataTable.mjs +5 -3
- package/lib/components/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/components/VDataTable/VDataTableHeader.mjs +6 -5
- package/lib/components/VDataTable/VDataTableHeader.mjs.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaderMobile.mjs +2 -2
- package/lib/components/VDataTable/VDataTableHeaderMobile.mjs.map +1 -1
- package/lib/components/VDataTable/VEditDialog.mjs +6 -5
- package/lib/components/VDataTable/VEditDialog.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.mjs +2 -2
- package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerHeader.mjs +3 -3
- package/lib/components/VDatePicker/VDatePickerHeader.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerTitle.mjs +1 -1
- package/lib/components/VDatePicker/VDatePickerTitle.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerYears.mjs +2 -2
- package/lib/components/VDatePicker/VDatePickerYears.mjs.map +1 -1
- package/lib/components/VDatePicker/mixins/date-picker-table.mjs +5 -4
- package/lib/components/VDatePicker/mixins/date-picker-table.mjs.map +1 -1
- package/lib/components/VDatePicker/util/createNativeLocaleFormatter.mjs +6 -4
- package/lib/components/VDatePicker/util/createNativeLocaleFormatter.mjs.map +1 -1
- package/lib/components/VDatePicker/util/pad.mjs +4 -1
- package/lib/components/VDatePicker/util/pad.mjs.map +1 -1
- package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +26 -8
- package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
- package/lib/components/VDefaultsProvider/index.mjs +1 -1
- package/lib/components/VDefaultsProvider/index.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.css +8 -1
- package/lib/components/VDialog/VDialog.mjs +9 -7
- package/lib/components/VDialog/VDialog.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.sass +7 -0
- package/lib/components/VDialog/index.mjs +1 -2
- package/lib/components/VDialog/index.mjs.map +1 -1
- package/lib/components/VDivider/VDivider.mjs +17 -10
- package/lib/components/VDivider/VDivider.mjs.map +1 -1
- package/lib/components/VDivider/index.mjs +1 -1
- package/lib/components/VDivider/index.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.css +5 -3
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs +32 -28
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.sass +5 -1
- package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +12 -10
- package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +17 -15
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs +26 -20
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
- package/lib/components/VExpansionPanel/_variables.scss +1 -1
- package/lib/components/VExpansionPanel/index.mjs +4 -4
- package/lib/components/VExpansionPanel/index.mjs.map +1 -1
- package/lib/components/VField/VField.css +182 -160
- package/lib/components/VField/VField.mjs +124 -158
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VField/VField.sass +173 -151
- package/lib/components/VField/VFieldLabel.mjs +12 -14
- package/lib/components/VField/VFieldLabel.mjs.map +1 -1
- package/lib/components/VField/_variables.scss +14 -6
- package/lib/components/VField/index.mjs +1 -1
- package/lib/components/VField/index.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.css +0 -33
- package/lib/components/VFileInput/VFileInput.mjs +144 -99
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.sass +0 -37
- package/lib/components/VFileInput/index.mjs +1 -1
- package/lib/components/VFileInput/index.mjs.map +1 -1
- package/lib/components/VFooter/VFooter.css +2 -2
- package/lib/components/VFooter/VFooter.mjs +22 -14
- package/lib/components/VFooter/VFooter.mjs.map +1 -1
- package/lib/components/VFooter/_variables.scss +2 -2
- package/lib/components/VFooter/index.mjs +1 -1
- package/lib/components/VFooter/index.mjs.map +1 -1
- package/lib/components/VForm/VForm.mjs +46 -127
- package/lib/components/VForm/VForm.mjs.map +1 -1
- package/lib/components/VForm/index.mjs +1 -3
- package/lib/components/VForm/index.mjs.map +1 -1
- package/lib/components/VGrid/VCol.mjs +5 -4
- package/lib/components/VGrid/VCol.mjs.map +1 -1
- package/lib/components/VGrid/VContainer.mjs +6 -5
- package/lib/components/VGrid/VContainer.mjs.map +1 -1
- package/lib/components/VGrid/VGrid.css +1 -1
- package/lib/components/VGrid/VRow.mjs +5 -4
- package/lib/components/VGrid/VRow.mjs.map +1 -1
- package/lib/components/VGrid/VSpacer.mjs +1 -1
- package/lib/components/VGrid/VSpacer.mjs.map +1 -1
- package/lib/components/VGrid/index.mjs +4 -4
- package/lib/components/VGrid/index.mjs.map +1 -1
- package/lib/components/VHover/VHover.mjs +8 -7
- package/lib/components/VHover/VHover.mjs.map +1 -1
- package/lib/components/VHover/index.mjs +1 -1
- package/lib/components/VHover/index.mjs.map +1 -1
- package/lib/components/VIcon/VIcon.css +2 -6
- package/lib/components/VIcon/VIcon.mjs +15 -9
- package/lib/components/VIcon/VIcon.mjs.map +1 -1
- package/lib/components/VIcon/VIcon.sass +2 -8
- package/lib/components/VIcon/_variables.scss +0 -1
- package/lib/components/VIcon/index.mjs +1 -1
- package/lib/components/VIcon/index.mjs.map +1 -1
- package/lib/components/VImg/VImg.css +8 -0
- package/lib/components/VImg/VImg.mjs +58 -27
- package/lib/components/VImg/VImg.mjs.map +1 -1
- package/lib/components/VImg/VImg.sass +10 -5
- package/lib/components/VImg/index.mjs +1 -1
- package/lib/components/VImg/index.mjs.map +1 -1
- package/lib/components/VInput/VInput.css +68 -11
- package/lib/components/VInput/VInput.mjs +95 -29
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VInput/VInput.sass +51 -12
- package/lib/components/VInput/_variables.scss +1 -1
- package/lib/components/VItemGroup/VItem.mjs +7 -5
- package/lib/components/VItemGroup/VItem.mjs.map +1 -1
- package/lib/components/VItemGroup/VItemGroup.mjs +8 -7
- package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
- package/lib/components/VItemGroup/index.mjs +2 -2
- package/lib/components/VItemGroup/index.mjs.map +1 -1
- package/lib/components/VLabel/VLabel.css +12 -0
- package/lib/components/VLabel/VLabel.mjs +18 -56
- package/lib/components/VLabel/VLabel.mjs.map +1 -1
- package/lib/components/VLabel/VLabel.sass +13 -11
- package/lib/components/VLabel/_variables.scss +7 -4
- package/lib/components/VLabel/index.mjs +1 -3
- package/lib/components/VLabel/index.mjs.map +1 -1
- package/lib/components/VLayout/VLayout.css +1 -0
- package/lib/components/VLayout/VLayout.mjs +12 -7
- package/lib/components/VLayout/VLayout.mjs.map +1 -1
- package/lib/components/VLayout/VLayout.sass +1 -0
- package/lib/components/VLayout/VLayoutItem.css +1 -1
- package/lib/components/VLayout/VLayoutItem.mjs +20 -11
- package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
- package/lib/components/VLayout/VLayoutItem.sass +1 -1
- package/lib/components/VLayout/index.mjs +2 -2
- package/lib/components/VLayout/index.mjs.map +1 -1
- package/lib/components/VLazy/VLazy.mjs +7 -6
- package/lib/components/VLazy/VLazy.mjs.map +1 -1
- package/lib/components/VLazy/index.mjs +1 -1
- package/lib/components/VLazy/index.mjs.map +1 -1
- package/lib/components/VList/VList.css +6 -2
- package/lib/components/VList/VList.mjs +77 -28
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VList.sass +6 -2
- package/lib/components/VList/VListChildren.mjs +53 -0
- package/lib/components/VList/VListChildren.mjs.map +1 -0
- package/lib/components/VList/VListGroup.mjs +84 -0
- package/lib/components/VList/VListGroup.mjs.map +1 -0
- package/lib/components/VList/VListImg.mjs +1 -1
- package/lib/components/VList/VListImg.mjs.map +1 -1
- package/lib/components/VList/VListItem.css +37 -18
- package/lib/components/VList/VListItem.mjs +95 -46
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListItem.sass +26 -6
- package/lib/components/VList/VListItemAvatar.mjs +6 -5
- package/lib/components/VList/VListItemAvatar.mjs.map +1 -1
- package/lib/components/VList/VListItemHeader.mjs +1 -1
- package/lib/components/VList/VListItemHeader.mjs.map +1 -1
- package/lib/components/VList/VListItemMedia.mjs +6 -5
- package/lib/components/VList/VListItemMedia.mjs.map +1 -1
- package/lib/components/VList/VListItemSubtitle.mjs +1 -1
- package/lib/components/VList/VListItemSubtitle.mjs.map +1 -1
- package/lib/components/VList/VListItemTitle.mjs +1 -1
- package/lib/components/VList/VListItemTitle.mjs.map +1 -1
- package/lib/components/VList/VListSubheader.mjs +25 -16
- package/lib/components/VList/VListSubheader.mjs.map +1 -1
- package/lib/components/VList/_variables.scss +4 -4
- package/lib/components/VList/index.mjs +10 -9
- package/lib/components/VList/index.mjs.map +1 -1
- package/lib/components/VList/list.mjs +31 -0
- package/lib/components/VList/list.mjs.map +1 -0
- package/lib/components/VLocaleProvider/VLocaleProvider.mjs +6 -5
- package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
- package/lib/components/VLocaleProvider/index.mjs +1 -1
- package/lib/components/VLocaleProvider/index.mjs.map +1 -1
- package/lib/components/VMain/VMain.mjs +8 -7
- package/lib/components/VMain/VMain.mjs.map +1 -1
- package/lib/components/VMain/index.mjs +1 -1
- package/lib/components/VMain/index.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.css +0 -3
- package/lib/components/VMenu/VMenu.mjs +9 -7
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.sass +1 -3
- package/lib/components/VMenu/_variables.scss +0 -1
- package/lib/components/VMenu/index.mjs +1 -2
- package/lib/components/VMenu/index.mjs.map +1 -1
- package/lib/components/VMessages/VMessages.css +16 -0
- package/lib/components/VMessages/VMessages.mjs +42 -41
- package/lib/components/VMessages/VMessages.mjs.map +1 -1
- package/lib/components/VMessages/VMessages.sass +5 -10
- package/lib/components/VMessages/_variables.scss +3 -2
- package/lib/components/VMessages/index.mjs +1 -3
- package/lib/components/VMessages/index.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.css +21 -9
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +89 -26
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +19 -8
- package/lib/components/VNavigationDrawer/_variables.scss +1 -1
- package/lib/components/VNavigationDrawer/index.mjs +1 -1
- package/lib/components/VNavigationDrawer/index.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/touch.mjs +139 -0
- package/lib/components/VNavigationDrawer/touch.mjs.map +1 -0
- package/lib/components/VNoSsr/VNoSsr.mjs +10 -18
- package/lib/components/VNoSsr/VNoSsr.mjs.map +1 -1
- package/lib/components/VNoSsr/index.mjs +1 -1
- package/lib/components/VNoSsr/index.mjs.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.mjs +345 -0
- package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -0
- package/lib/components/VOtpInput/VOtpInput.sass +37 -0
- package/lib/components/VOtpInput/_variables.scss +4 -0
- package/lib/components/VOtpInput/index.mjs +4 -0
- package/lib/components/VOtpInput/index.mjs.map +1 -0
- package/lib/components/VOverlay/VOverlay.css +8 -2
- package/lib/components/VOverlay/VOverlay.mjs +69 -40
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.sass +6 -2
- package/lib/components/VOverlay/_variables.scss +0 -1
- package/lib/components/VOverlay/index.mjs +1 -2
- package/lib/components/VOverlay/index.mjs.map +1 -1
- package/lib/components/VOverlay/positionStrategies.mjs +18 -11
- package/lib/components/VOverlay/positionStrategies.mjs.map +1 -1
- package/lib/components/VOverlay/scrollStrategies.mjs +14 -1
- package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
- package/lib/components/VOverlay/useActivator.mjs +38 -22
- package/lib/components/VOverlay/useActivator.mjs.map +1 -1
- package/lib/components/VOverlay/util/anchor.mjs.map +1 -1
- package/lib/components/VOverlay/util/point.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs +44 -47
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VPagination/index.mjs +1 -2
- package/lib/components/VPagination/index.mjs.map +1 -1
- package/lib/components/VParallax/VParallax.css +7 -0
- package/lib/components/VParallax/VParallax.mjs +71 -77
- package/lib/components/VParallax/VParallax.mjs.map +1 -1
- package/lib/components/VParallax/VParallax.sass +1 -32
- package/lib/components/VParallax/index.mjs +1 -3
- package/lib/components/VParallax/index.mjs.map +1 -1
- package/lib/components/VPicker/VPicker.mjs +3 -3
- package/lib/components/VPicker/VPicker.mjs.map +1 -1
- package/lib/components/VProgressCircular/VProgressCircular.css +1 -1
- package/lib/components/VProgressCircular/VProgressCircular.mjs +26 -16
- package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
- package/lib/components/VProgressCircular/_variables.scss +1 -1
- package/lib/components/VProgressCircular/index.mjs +1 -1
- package/lib/components/VProgressCircular/index.mjs.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.css +0 -1
- package/lib/components/VProgressLinear/VProgressLinear.mjs +17 -19
- package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.sass +0 -1
- package/lib/components/VProgressLinear/index.mjs +1 -1
- package/lib/components/VProgressLinear/index.mjs.map +1 -1
- package/lib/components/VRadio/VRadio.mjs +34 -0
- package/lib/components/VRadio/VRadio.mjs.map +1 -0
- package/lib/components/VRadio/index.mjs +2 -0
- package/lib/components/VRadio/index.mjs.map +1 -0
- package/lib/components/VRadioGroup/VRadioGroup.css +10 -0
- package/lib/components/VRadioGroup/VRadioGroup.mjs +66 -69
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.sass +7 -37
- package/lib/components/VRadioGroup/_variables.scss +3 -3
- package/lib/components/VRadioGroup/index.mjs +1 -9
- package/lib/components/VRadioGroup/index.mjs.map +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.mjs +192 -211
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VRangeSlider/index.mjs +1 -3
- package/lib/components/VRangeSlider/index.mjs.map +1 -1
- package/lib/components/VRating/VRating.css +1 -1
- package/lib/components/VRating/VRating.mjs +30 -24
- package/lib/components/VRating/VRating.mjs.map +1 -1
- package/lib/components/VRating/VRating.sass +3 -2
- package/lib/components/VRating/index.mjs +1 -1
- package/lib/components/VRating/index.mjs.map +1 -1
- package/lib/components/VResponsive/VResponsive.css +1 -0
- package/lib/components/VResponsive/VResponsive.mjs +7 -6
- package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
- package/lib/components/VResponsive/VResponsive.sass +1 -0
- package/lib/components/VResponsive/index.mjs +1 -1
- package/lib/components/VResponsive/index.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.css +34 -0
- package/lib/components/VSelect/VSelect.mjs +185 -772
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.sass +44 -153
- package/lib/components/VSelect/_variables.scss +7 -21
- package/lib/components/VSelect/index.mjs +1 -3
- package/lib/components/VSelect/index.mjs.map +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.css +97 -0
- package/lib/components/VSelectionControl/VSelectionControl.mjs +209 -0
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -0
- package/lib/components/VSelectionControl/VSelectionControl.sass +96 -0
- package/lib/components/VSelectionControl/_variables.scss +9 -0
- package/lib/components/VSelectionControl/index.mjs +2 -0
- package/lib/components/VSelectionControl/index.mjs.map +1 -0
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.css +3 -0
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +64 -0
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -0
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.sass +9 -0
- package/lib/components/VSelectionControlGroup/_variables.scss +4 -0
- package/lib/components/VSelectionControlGroup/index.mjs +2 -0
- package/lib/components/VSelectionControlGroup/index.mjs.map +1 -0
- package/lib/components/VSheet/VSheet.css +2 -1
- package/lib/components/VSheet/VSheet.mjs +12 -14
- package/lib/components/VSheet/VSheet.mjs.map +1 -1
- package/lib/components/VSheet/VSheet.sass +2 -0
- package/lib/components/VSheet/_variables.scss +1 -1
- package/lib/components/VSheet/index.mjs +1 -1
- package/lib/components/VSheet/index.mjs.map +1 -1
- package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs +2 -2
- package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.css +47 -0
- package/lib/components/VSlideGroup/VSlideGroup.mjs +275 -357
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.sass +21 -21
- package/lib/components/VSlideGroup/VSlideGroupItem.mjs +27 -0
- package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -0
- package/lib/components/VSlideGroup/_variables.scss +4 -1
- package/lib/components/VSlideGroup/helpers.mjs +54 -0
- package/lib/components/VSlideGroup/helpers.mjs.map +1 -0
- package/lib/components/VSlideGroup/index.mjs +2 -9
- package/lib/components/VSlideGroup/index.mjs.map +1 -1
- package/lib/components/VSlider/VSlider.css +48 -0
- package/lib/components/VSlider/VSlider.mjs +108 -537
- package/lib/components/VSlider/VSlider.mjs.map +1 -1
- package/lib/components/VSlider/VSlider.sass +29 -280
- package/lib/components/VSlider/VSliderThumb.css +142 -0
- package/lib/components/VSlider/VSliderThumb.mjs +165 -0
- package/lib/components/VSlider/VSliderThumb.mjs.map +1 -0
- package/lib/components/VSlider/VSliderThumb.sass +147 -0
- package/lib/components/VSlider/VSliderTrack.css +150 -0
- package/lib/components/VSlider/VSliderTrack.mjs +121 -0
- package/lib/components/VSlider/VSliderTrack.mjs.map +1 -0
- package/lib/components/VSlider/VSliderTrack.sass +159 -0
- package/lib/components/VSlider/_variables.scss +18 -13
- package/lib/components/VSlider/index.mjs +1 -3
- package/lib/components/VSlider/index.mjs.map +1 -1
- package/lib/components/VSlider/slider.mjs +300 -0
- package/lib/components/VSlider/slider.mjs.map +1 -0
- package/lib/components/VSnackbar/VSnackbar.css +136 -0
- package/lib/components/VSnackbar/VSnackbar.mjs +88 -167
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.sass +34 -69
- package/lib/components/VSnackbar/_variables.scss +20 -21
- package/lib/components/VSnackbar/index.mjs +1 -3
- package/lib/components/VSnackbar/index.mjs.map +1 -1
- package/lib/components/VSparkline/VSparkline.mjs +1 -1
- package/lib/components/VSparkline/VSparkline.mjs.map +1 -1
- package/lib/components/VSparkline/helpers/path.mjs +3 -1
- package/lib/components/VSparkline/helpers/path.mjs.map +1 -1
- package/lib/components/VSpeedDial/VSpeedDial.mjs +1 -1
- package/lib/components/VStepper/VStepper.mjs +1 -1
- package/lib/components/VStepper/VStepper.mjs.map +1 -1
- package/lib/components/VStepper/VStepper.sass +5 -1
- package/lib/components/VStepper/VStepperStep.mjs +1 -1
- package/lib/components/VStepper/_variables.scss +2 -1
- package/lib/components/VSwitch/VSwitch.css +69 -0
- package/lib/components/VSwitch/VSwitch.mjs +100 -111
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VSwitch/VSwitch.sass +71 -129
- package/lib/components/VSwitch/_variables.scss +10 -23
- package/lib/components/VSwitch/index.mjs +1 -3
- package/lib/components/VSwitch/index.mjs.map +1 -1
- package/lib/components/VSystemBar/VSystemBar.css +16 -13
- package/lib/components/VSystemBar/VSystemBar.mjs +19 -19
- package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
- package/lib/components/VSystemBar/VSystemBar.sass +11 -15
- package/lib/components/VSystemBar/_variables.scss +25 -16
- package/lib/components/VSystemBar/index.mjs +1 -1
- package/lib/components/VSystemBar/index.mjs.map +1 -1
- package/lib/components/VTable/VTable.css +143 -0
- package/lib/components/VTable/VTable.mjs +54 -0
- package/lib/components/VTable/VTable.mjs.map +1 -0
- package/lib/components/VTable/VTable.sass +156 -0
- package/lib/components/VTable/_mixins.scss +25 -0
- package/lib/components/VTable/_variables.scss +21 -0
- package/lib/components/VTable/index.mjs +2 -0
- package/lib/components/VTable/index.mjs.map +1 -0
- package/lib/components/VTabs/VTab.css +29 -0
- package/lib/components/VTabs/VTab.mjs +114 -70
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTabs/VTab.sass +30 -0
- package/lib/components/VTabs/VTabs.css +67 -0
- package/lib/components/VTabs/VTabs.mjs +81 -277
- package/lib/components/VTabs/VTabs.mjs.map +1 -1
- package/lib/components/VTabs/VTabs.sass +37 -207
- package/lib/components/VTabs/_variables.scss +10 -16
- package/lib/components/VTabs/index.mjs +2 -15
- package/lib/components/VTabs/index.mjs.map +1 -1
- package/lib/components/VTextField/VTextField.css +55 -33
- package/lib/components/VTextField/VTextField.mjs +138 -82
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/VTextField.sass +62 -38
- package/lib/components/VTextField/_variables.scss +7 -48
- package/lib/components/VTextarea/VTextarea.css +34 -0
- package/lib/components/VTextarea/VTextarea.mjs +210 -74
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTextarea/VTextarea.sass +32 -76
- package/lib/components/VTextarea/_variables.scss +2 -4
- package/lib/components/VTextarea/index.mjs +1 -3
- package/lib/components/VTextarea/index.mjs.map +1 -1
- package/lib/components/VThemeProvider/VThemeProvider.mjs +8 -7
- package/lib/components/VThemeProvider/VThemeProvider.mjs.map +1 -1
- package/lib/components/VThemeProvider/index.mjs +1 -1
- package/lib/components/VThemeProvider/index.mjs.map +1 -1
- package/lib/components/VTimePicker/VTimePicker.mjs +2 -2
- package/lib/components/VTimePicker/VTimePicker.mjs.map +1 -1
- package/lib/components/VTimePicker/VTimePickerClock.mjs +2 -2
- package/lib/components/VTimePicker/VTimePickerClock.mjs.map +1 -1
- package/lib/components/VTimePicker/VTimePickerTitle.mjs +1 -1
- package/lib/components/VTimePicker/VTimePickerTitle.mjs.map +1 -1
- package/lib/components/VTimeline/VTimeline.css +3 -3
- package/lib/components/VTimeline/VTimeline.mjs +12 -12
- package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
- package/lib/components/VTimeline/VTimelineDivider.mjs +7 -6
- package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
- package/lib/components/VTimeline/VTimelineItem.mjs +9 -10
- package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
- package/lib/components/VTimeline/index.mjs +2 -2
- package/lib/components/VTimeline/index.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbar.css +138 -0
- package/lib/components/VToolbar/VToolbar.mjs +138 -141
- package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbar.sass +74 -123
- package/lib/components/VToolbar/VToolbarItems.mjs +33 -0
- package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -0
- package/lib/components/VToolbar/VToolbarTitle.mjs +34 -0
- package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -0
- package/lib/components/VToolbar/_variables.scss +53 -15
- package/lib/components/VToolbar/index.mjs +3 -14
- package/lib/components/VToolbar/index.mjs.map +1 -1
- package/lib/components/VTooltip/VTooltip.css +3 -2
- package/lib/components/VTooltip/VTooltip.mjs +18 -12
- package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
- package/lib/components/VTooltip/VTooltip.sass +1 -0
- package/lib/components/VTooltip/_variables.scss +2 -2
- package/lib/components/VTooltip/index.mjs +1 -1
- package/lib/components/VTooltip/index.mjs.map +1 -1
- package/lib/components/VTreeview/VTreeview.mjs +14 -7
- package/lib/components/VTreeview/VTreeview.mjs.map +1 -1
- package/lib/components/VTreeview/VTreeviewNode.mjs +4 -2
- package/lib/components/VTreeview/VTreeviewNode.mjs.map +1 -1
- package/lib/components/VValidation/VValidation.mjs +26 -0
- package/lib/components/VValidation/VValidation.mjs.map +1 -0
- package/lib/components/VValidation/index.mjs +2 -0
- package/lib/components/VValidation/index.mjs.map +1 -0
- package/lib/components/VWindow/VWindow.css +70 -0
- package/lib/components/VWindow/VWindow.mjs +166 -233
- package/lib/components/VWindow/VWindow.mjs.map +1 -1
- package/lib/components/VWindow/VWindow.sass +26 -50
- package/lib/components/VWindow/VWindowItem.mjs +72 -98
- package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
- package/lib/components/VWindow/_variables.scss +2 -3
- package/lib/components/VWindow/index.mjs +2 -9
- package/lib/components/VWindow/index.mjs.map +1 -1
- package/lib/components/index.d.ts +11597 -3077
- package/lib/components/index.mjs +46 -39
- package/lib/components/index.mjs.map +1 -1
- package/lib/components/transitions/createTransition.mjs +14 -14
- package/lib/components/transitions/createTransition.mjs.map +1 -1
- package/lib/components/transitions/dialog-transition.mjs +6 -5
- package/lib/components/transitions/dialog-transition.mjs.map +1 -1
- package/lib/components/transitions/expand-transition.mjs +3 -1
- package/lib/components/transitions/expand-transition.mjs.map +1 -1
- package/lib/components/transitions/index.mjs +1 -1
- package/lib/components/transitions/index.mjs.map +1 -1
- package/lib/composables/border.mjs +3 -2
- package/lib/composables/border.mjs.map +1 -1
- package/lib/composables/defaults.mjs +29 -5
- package/lib/composables/defaults.mjs.map +1 -1
- package/lib/composables/density.mjs +3 -2
- package/lib/composables/density.mjs.map +1 -1
- package/lib/composables/display.mjs +2 -1
- package/lib/composables/display.mjs.map +1 -1
- package/lib/composables/elevation.mjs +4 -3
- package/lib/composables/elevation.mjs.map +1 -1
- package/lib/composables/filter.mjs +87 -0
- package/lib/composables/filter.mjs.map +1 -0
- package/lib/composables/focus.mjs +35 -0
- package/lib/composables/focus.mjs.map +1 -0
- package/lib/composables/form.mjs +103 -0
- package/lib/composables/form.mjs.map +1 -0
- package/lib/composables/forwardRef.mjs +42 -0
- package/lib/composables/forwardRef.mjs.map +1 -0
- package/lib/composables/group.mjs +51 -37
- package/lib/composables/group.mjs.map +1 -1
- package/lib/composables/hydration.mjs +12 -0
- package/lib/composables/hydration.mjs.map +1 -0
- package/lib/composables/icons.mjs +7 -6
- package/lib/composables/icons.mjs.map +1 -1
- package/lib/composables/index.mjs +1 -0
- package/lib/composables/index.mjs.map +1 -1
- package/lib/composables/intersectionObserver.mjs +21 -16
- package/lib/composables/intersectionObserver.mjs.map +1 -1
- package/lib/composables/layout.mjs +126 -41
- package/lib/composables/layout.mjs.map +1 -1
- package/lib/composables/loader.mjs +39 -0
- package/lib/composables/loader.mjs.map +1 -0
- package/lib/composables/locale.mjs +10 -6
- package/lib/composables/locale.mjs.map +1 -1
- package/lib/composables/nested/nested.mjs +194 -0
- package/lib/composables/nested/nested.mjs.map +1 -0
- package/lib/composables/nested/openStrategies.mjs +49 -0
- package/lib/composables/nested/openStrategies.mjs.map +1 -0
- package/lib/composables/nested/selectStrategies.mjs +157 -0
- package/lib/composables/nested/selectStrategies.mjs.map +1 -0
- package/lib/composables/overlay.mjs +30 -0
- package/lib/composables/overlay.mjs.map +1 -0
- package/lib/composables/position.mjs +3 -2
- package/lib/composables/position.mjs.map +1 -1
- package/lib/composables/proxiedModel.mjs +10 -5
- package/lib/composables/proxiedModel.mjs.map +1 -1
- package/lib/composables/refs.mjs.map +1 -1
- package/lib/composables/resizeObserver.mjs +27 -21
- package/lib/composables/resizeObserver.mjs.map +1 -1
- package/lib/composables/rounded.mjs +9 -10
- package/lib/composables/rounded.mjs.map +1 -1
- package/lib/composables/router.mjs +7 -5
- package/lib/composables/router.mjs.map +1 -1
- package/lib/composables/scroll.mjs +2 -1
- package/lib/composables/scroll.mjs.map +1 -1
- package/lib/composables/size.mjs +3 -2
- package/lib/composables/size.mjs.map +1 -1
- package/lib/composables/stack.mjs +33 -0
- package/lib/composables/stack.mjs.map +1 -0
- package/lib/composables/theme.mjs +100 -64
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/composables/touch.mjs +129 -0
- package/lib/composables/touch.mjs.map +1 -0
- package/lib/composables/transition.mjs +4 -3
- package/lib/composables/transition.mjs.map +1 -1
- package/lib/composables/validation.mjs +116 -0
- package/lib/composables/validation.mjs.map +1 -0
- package/lib/composables/variant.mjs +5 -4
- package/lib/composables/variant.mjs.map +1 -1
- package/lib/directives/click-outside/index.mjs +23 -11
- package/lib/directives/click-outside/index.mjs.map +1 -1
- package/lib/directives/index.d.ts +3 -3
- package/lib/directives/intersect/index.mjs +19 -12
- package/lib/directives/intersect/index.mjs.map +1 -1
- package/lib/directives/mutate/index.mjs +13 -7
- package/lib/directives/mutate/index.mjs.map +1 -1
- package/lib/directives/resize/index.mjs +8 -5
- package/lib/directives/resize/index.mjs.map +1 -1
- package/lib/directives/ripple/index.mjs +5 -2
- package/lib/directives/ripple/index.mjs.map +1 -1
- package/lib/directives/scroll/index.mjs +9 -6
- package/lib/directives/scroll/index.mjs.map +1 -1
- package/lib/directives/touch/index.mjs +8 -4
- package/lib/directives/touch/index.mjs.map +1 -1
- package/lib/entry-bundler.mjs +3 -2
- package/lib/entry-bundler.mjs.map +1 -1
- package/lib/framework.mjs +5 -2
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.ts +282 -6
- package/lib/locale/adapters/vue-i18n.mjs +64 -0
- package/lib/locale/adapters/vue-i18n.mjs.map +1 -0
- package/lib/locale/adapters/vue-intl.mjs +67 -0
- package/lib/locale/adapters/vue-intl.mjs.map +1 -0
- package/lib/locale/cs.mjs +3 -3
- package/lib/locale/cs.mjs.map +1 -1
- package/lib/locale/es.mjs +2 -2
- package/lib/locale/es.mjs.map +1 -1
- package/lib/locale/fr.mjs +1 -1
- package/lib/locale/fr.mjs.map +1 -1
- package/lib/services/goto/easing-patterns.mjs +0 -3
- package/lib/services/goto/easing-patterns.mjs.map +1 -1
- package/lib/services/goto/index.mjs +16 -18
- package/lib/services/goto/index.mjs.map +1 -1
- package/lib/styles/generic/_colors.scss +19 -0
- package/lib/styles/main.css +297 -10
- package/lib/styles/settings/_colors.scss +430 -6
- package/lib/styles/settings/_utilities.scss +8 -0
- package/lib/styles/settings/_variables.scss +15 -13
- package/lib/styles/tools/_absolute.sass +3 -2
- package/lib/styles/tools/_variant.sass +9 -9
- package/lib/util/animation.mjs +7 -9
- package/lib/util/animation.mjs.map +1 -1
- package/lib/util/box.mjs +32 -0
- package/lib/util/box.mjs.map +1 -0
- package/lib/util/colorUtils.mjs +3 -0
- package/lib/util/colorUtils.mjs.map +1 -1
- package/lib/util/console.mjs +2 -1
- package/lib/util/console.mjs.map +1 -1
- package/lib/util/createSimpleFunctional.mjs +7 -4
- package/lib/util/createSimpleFunctional.mjs.map +1 -1
- package/lib/util/dateTimeUtils.mjs +3 -1
- package/lib/util/dateTimeUtils.mjs.map +1 -1
- package/lib/util/defineComponent.mjs +5 -1
- package/lib/util/defineComponent.mjs.map +1 -1
- package/lib/util/getCurrentInstance.mjs +19 -0
- package/lib/util/getCurrentInstance.mjs.map +1 -0
- package/lib/util/getScrollParent.mjs +1 -2
- package/lib/util/getScrollParent.mjs.map +1 -1
- package/lib/util/globals.mjs +1 -0
- package/lib/util/globals.mjs.map +1 -1
- package/lib/util/helpers.mjs +124 -17
- package/lib/util/helpers.mjs.map +1 -1
- package/lib/util/index.mjs +1 -0
- package/lib/util/propsFactory.mjs.map +1 -1
- package/lib/util/useRender.mjs +4 -2
- package/lib/util/useRender.mjs.map +1 -1
- package/package.json +57 -53
- package/lib/components/VAppBar/VAppBarTitle.css +0 -10
- package/lib/components/VAppBar/VAppBarTitle.sass +0 -10
- package/lib/components/VBanner/VBannerAvatar.mjs +0 -28
- package/lib/components/VBanner/VBannerAvatar.mjs.map +0 -1
- package/lib/components/VBanner/VBannerContent.mjs +0 -3
- package/lib/components/VBanner/VBannerContent.mjs.map +0 -1
- package/lib/components/VCheckbox/VSimpleCheckbox.mjs +0 -92
- package/lib/components/VCheckbox/VSimpleCheckbox.mjs.map +0 -1
- package/lib/components/VCheckbox/VSimpleCheckbox.sass +0 -16
- package/lib/components/VDataTable/VSimpleTable.mjs +0 -48
- package/lib/components/VDataTable/VSimpleTable.mjs.map +0 -1
- package/lib/components/VDataTable/VSimpleTable.sass +0 -179
- package/lib/components/VPagination/VPaginationBtn.mjs +0 -8
- package/lib/components/VPagination/VPaginationBtn.mjs.map +0 -1
- package/lib/components/VParallax/_variables.scss +0 -4
- package/lib/components/VRadioGroup/VRadio.mjs +0 -179
- package/lib/components/VRadioGroup/VRadio.mjs.map +0 -1
- package/lib/components/VRadioGroup/VRadio.sass +0 -25
- package/lib/components/VRangeSlider/VRangeSlider.sass +0 -19
- package/lib/components/VSelect/VSelectList.mjs +0 -251
- package/lib/components/VSelect/VSelectList.mjs.map +0 -1
- package/lib/components/VSlideGroup/VSlideItem.mjs +0 -14
- package/lib/components/VSlideGroup/VSlideItem.mjs.map +0 -1
- package/lib/components/VTabs/VTabItem.mjs +0 -23
- package/lib/components/VTabs/VTabItem.mjs.map +0 -1
- package/lib/components/VTabs/VTabsBar.mjs +0 -86
- package/lib/components/VTabs/VTabsBar.mjs.map +0 -1
- package/lib/components/VTabs/VTabsItems.mjs +0 -37
- package/lib/components/VTabs/VTabsItems.mjs.map +0 -1
- package/lib/components/VTabs/VTabsSlider.mjs +0 -20
- package/lib/components/VTabs/VTabsSlider.mjs.map +0 -1
- package/lib/components/VToolbar/_index.scss +0 -2
- package/lib/composables/index.d.ts +0 -173
- package/lib/globals.d.mjs +0 -2
- package/lib/globals.d.mjs.map +0 -1
- package/lib/mixins/activatable/index.mjs +0 -199
- package/lib/mixins/activatable/index.mjs.map +0 -1
- package/lib/mixins/applicationable/index.mjs +0 -72
- package/lib/mixins/applicationable/index.mjs.map +0 -1
- package/lib/mixins/binds-attrs/index.mjs +0 -42
- package/lib/mixins/binds-attrs/index.mjs.map +0 -1
- package/lib/mixins/button-group/index.mjs +0 -28
- package/lib/mixins/button-group/index.mjs.map +0 -1
- package/lib/mixins/colorable/index.mjs +0 -78
- package/lib/mixins/colorable/index.mjs.map +0 -1
- package/lib/mixins/comparable/index.mjs +0 -15
- package/lib/mixins/comparable/index.mjs.map +0 -1
- package/lib/mixins/dependent/index.mjs +0 -73
- package/lib/mixins/dependent/index.mjs.map +0 -1
- package/lib/mixins/elevatable/index.mjs +0 -26
- package/lib/mixins/elevatable/index.mjs.map +0 -1
- package/lib/mixins/filterable/index.mjs +0 -16
- package/lib/mixins/filterable/index.mjs.map +0 -1
- package/lib/mixins/loadable/index.mjs +0 -45
- package/lib/mixins/loadable/index.mjs.map +0 -1
- package/lib/mixins/localable/index.mjs +0 -17
- package/lib/mixins/localable/index.mjs.map +0 -1
- package/lib/mixins/mobile/index.mjs +0 -50
- package/lib/mixins/mobile/index.mjs.map +0 -1
- package/lib/mixins/overlayable/index.mjs +0 -212
- package/lib/mixins/overlayable/index.mjs.map +0 -1
- package/lib/mixins/picker/index.mjs +0 -75
- package/lib/mixins/picker/index.mjs.map +0 -1
- package/lib/mixins/picker-button/index.mjs +0 -35
- package/lib/mixins/picker-button/index.mjs.map +0 -1
- package/lib/mixins/proxyable/index.mjs +0 -50
- package/lib/mixins/proxyable/index.mjs.map +0 -1
- package/lib/mixins/returnable/index.mjs +0 -36
- package/lib/mixins/returnable/index.mjs.map +0 -1
- package/lib/mixins/rippleable/index.mjs +0 -35
- package/lib/mixins/rippleable/index.mjs.map +0 -1
- package/lib/mixins/roundable/index.mjs +0 -37
- package/lib/mixins/roundable/index.mjs.map +0 -1
- package/lib/mixins/routable/index.mjs +0 -148
- package/lib/mixins/routable/index.mjs.map +0 -1
- package/lib/mixins/selectable/index.mjs +0 -167
- package/lib/mixins/selectable/index.mjs.map +0 -1
- package/lib/mixins/stackable/index.mjs +0 -55
- package/lib/mixins/stackable/index.mjs.map +0 -1
- package/lib/mixins/themeable/index.mjs +0 -111
- package/lib/mixins/themeable/index.mjs.map +0 -1
- package/lib/mixins/toggleable/index.mjs +0 -40
- package/lib/mixins/toggleable/index.mjs.map +0 -1
- package/lib/mixins/translatable/index.mjs +0 -59
- package/lib/mixins/translatable/index.mjs.map +0 -1
- package/lib/mixins/validatable/index.mjs +0 -263
- package/lib/mixins/validatable/index.mjs.map +0 -1
- package/lib/services/application/index.mjs +0 -58
- package/lib/services/application/index.mjs.map +0 -1
- package/lib/services/breakpoint/index.mjs +0 -175
- package/lib/services/breakpoint/index.mjs.map +0 -1
- package/lib/services/index.mjs +0 -10
- package/lib/services/index.mjs.map +0 -1
- package/lib/services/lang/index.mjs +0 -73
- package/lib/services/lang/index.mjs.map +0 -1
- package/lib/services/service/index.mjs +0 -13
- package/lib/services/service/index.mjs.map +0 -1
|
@@ -5,7 +5,7 @@ import "./VOverlay.css"; // Composables
|
|
|
5
5
|
import { makeActivatorProps, useActivator } from "./useActivator.mjs";
|
|
6
6
|
import { makePositionStrategyProps, usePositionStrategies } from "./positionStrategies.mjs";
|
|
7
7
|
import { makeScrollStrategyProps, useScrollStrategies } from "./scrollStrategies.mjs";
|
|
8
|
-
import { makeThemeProps,
|
|
8
|
+
import { makeThemeProps, provideTheme } from "../../composables/theme.mjs";
|
|
9
9
|
import { makeTransitionProps, MaybeTransition } from "../../composables/transition.mjs";
|
|
10
10
|
import { useBackButton } from "../../composables/router.mjs";
|
|
11
11
|
import { useBackgroundColor } from "../../composables/color.mjs";
|
|
@@ -13,12 +13,14 @@ import { useProxiedModel } from "../../composables/proxiedModel.mjs";
|
|
|
13
13
|
import { useRtl } from "../../composables/rtl.mjs";
|
|
14
14
|
import { useTeleport } from "../../composables/teleport.mjs";
|
|
15
15
|
import { makeDimensionProps, useDimension } from "../../composables/dimensions.mjs";
|
|
16
|
-
import { makeLazyProps, useLazy } from "../../composables/lazy.mjs";
|
|
16
|
+
import { makeLazyProps, useLazy } from "../../composables/lazy.mjs";
|
|
17
|
+
import { useStack } from "../../composables/stack.mjs";
|
|
18
|
+
import { useOverlay } from "../../composables/overlay.mjs"; // Directives
|
|
17
19
|
|
|
18
20
|
import { ClickOutside } from "../../directives/click-outside/index.mjs"; // Utilities
|
|
19
21
|
|
|
20
|
-
import { convertToUnit,
|
|
21
|
-
import { computed, mergeProps, ref, Teleport, toHandlers,
|
|
22
|
+
import { convertToUnit, genericComponent, getScrollParent, IN_BROWSER, standardEasing, useRender } from "../../util/index.mjs";
|
|
23
|
+
import { computed, mergeProps, ref, Teleport, toHandlers, Transition, watch } from 'vue'; // Types
|
|
22
24
|
|
|
23
25
|
function Scrim(props) {
|
|
24
26
|
const {
|
|
@@ -33,11 +35,11 @@ function Scrim(props) {
|
|
|
33
35
|
default: () => [props.modelValue && _createVNode("div", _mergeProps({
|
|
34
36
|
"class": ['v-overlay__scrim', props.color.backgroundColorClasses.value],
|
|
35
37
|
"style": props.color.backgroundColorStyles.value
|
|
36
|
-
}, rest), null
|
|
37
|
-
}
|
|
38
|
+
}, rest), null)]
|
|
39
|
+
});
|
|
38
40
|
}
|
|
39
41
|
|
|
40
|
-
export
|
|
42
|
+
export const VOverlay = genericComponent()({
|
|
41
43
|
name: 'VOverlay',
|
|
42
44
|
directives: {
|
|
43
45
|
ClickOutside
|
|
@@ -45,10 +47,8 @@ export default defineComponent({
|
|
|
45
47
|
inheritAttrs: false,
|
|
46
48
|
props: {
|
|
47
49
|
absolute: Boolean,
|
|
48
|
-
attach:
|
|
49
|
-
|
|
50
|
-
default: 'body'
|
|
51
|
-
},
|
|
50
|
+
attach: [Boolean, String, Object],
|
|
51
|
+
contained: Boolean,
|
|
52
52
|
contentClass: null,
|
|
53
53
|
noClickAnimation: Boolean,
|
|
54
54
|
modelValue: Boolean,
|
|
@@ -67,21 +67,23 @@ export default defineComponent({
|
|
|
67
67
|
},
|
|
68
68
|
emits: {
|
|
69
69
|
'click:outside': e => true,
|
|
70
|
-
'update:modelValue': value => true
|
|
70
|
+
'update:modelValue': value => true,
|
|
71
|
+
afterLeave: () => true
|
|
71
72
|
},
|
|
72
73
|
|
|
73
|
-
setup(props, {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
setup(props, _ref) {
|
|
75
|
+
let {
|
|
76
|
+
slots,
|
|
77
|
+
attrs,
|
|
78
|
+
emit
|
|
79
|
+
} = _ref;
|
|
78
80
|
const isActive = useProxiedModel(props, 'modelValue');
|
|
79
81
|
const {
|
|
80
82
|
teleportTarget
|
|
81
|
-
} = useTeleport(
|
|
83
|
+
} = useTeleport(computed(() => props.attach || props.contained));
|
|
82
84
|
const {
|
|
83
85
|
themeClasses
|
|
84
|
-
} =
|
|
86
|
+
} = provideTheme(props);
|
|
85
87
|
const {
|
|
86
88
|
rtlClasses
|
|
87
89
|
} = useRtl();
|
|
@@ -94,11 +96,16 @@ export default defineComponent({
|
|
|
94
96
|
}));
|
|
95
97
|
const {
|
|
96
98
|
activatorEl,
|
|
99
|
+
activatorRef,
|
|
97
100
|
activatorEvents
|
|
98
101
|
} = useActivator(props, isActive);
|
|
99
102
|
const {
|
|
100
103
|
dimensionStyles
|
|
101
104
|
} = useDimension(props);
|
|
105
|
+
const {
|
|
106
|
+
isTop
|
|
107
|
+
} = useStack(isActive);
|
|
108
|
+
const root = ref();
|
|
102
109
|
const contentEl = ref();
|
|
103
110
|
const {
|
|
104
111
|
contentStyles,
|
|
@@ -109,6 +116,7 @@ export default defineComponent({
|
|
|
109
116
|
isActive
|
|
110
117
|
});
|
|
111
118
|
useScrollStrategies(props, {
|
|
119
|
+
root,
|
|
112
120
|
contentEl,
|
|
113
121
|
activatorEl,
|
|
114
122
|
isActive,
|
|
@@ -121,11 +129,21 @@ export default defineComponent({
|
|
|
121
129
|
}
|
|
122
130
|
|
|
123
131
|
function closeConditional() {
|
|
124
|
-
return isActive.value;
|
|
132
|
+
return isActive.value && isTop.value;
|
|
125
133
|
}
|
|
126
134
|
|
|
135
|
+
IN_BROWSER && watch(isActive, val => {
|
|
136
|
+
if (val) {
|
|
137
|
+
window.addEventListener('keydown', onKeydown);
|
|
138
|
+
} else {
|
|
139
|
+
window.removeEventListener('keydown', onKeydown);
|
|
140
|
+
}
|
|
141
|
+
}, {
|
|
142
|
+
immediate: true
|
|
143
|
+
});
|
|
144
|
+
|
|
127
145
|
function onKeydown(e) {
|
|
128
|
-
if (e.key === 'Escape') {
|
|
146
|
+
if (e.key === 'Escape' && isTop.value) {
|
|
129
147
|
if (!props.persistent) {
|
|
130
148
|
isActive.value = false;
|
|
131
149
|
} else animateClick();
|
|
@@ -133,12 +151,15 @@ export default defineComponent({
|
|
|
133
151
|
}
|
|
134
152
|
|
|
135
153
|
useBackButton(next => {
|
|
136
|
-
|
|
137
|
-
|
|
154
|
+
if (isTop.value && isActive.value) {
|
|
155
|
+
next(false);
|
|
156
|
+
if (!props.persistent) isActive.value = false;else animateClick();
|
|
157
|
+
} else {
|
|
158
|
+
next();
|
|
159
|
+
}
|
|
138
160
|
});
|
|
139
|
-
const root = ref();
|
|
140
161
|
const top = ref();
|
|
141
|
-
watch(() => isActive.value && props.absolute && teleportTarget.value == null, val => {
|
|
162
|
+
watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {
|
|
142
163
|
if (val) {
|
|
143
164
|
const scrollParent = getScrollParent(root.value);
|
|
144
165
|
|
|
@@ -164,50 +185,58 @@ export default defineComponent({
|
|
|
164
185
|
});
|
|
165
186
|
}
|
|
166
187
|
|
|
188
|
+
const {
|
|
189
|
+
overlayZIndex
|
|
190
|
+
} = useOverlay(isActive);
|
|
167
191
|
useRender(() => {
|
|
168
192
|
var _slots$activator, _slots$default;
|
|
169
193
|
|
|
170
194
|
return _createVNode(_Fragment, null, [(_slots$activator = slots.activator) == null ? void 0 : _slots$activator.call(slots, {
|
|
171
195
|
isActive: isActive.value,
|
|
172
196
|
props: mergeProps({
|
|
173
|
-
|
|
174
|
-
'onUpdate:modelValue': val => isActive.value = val
|
|
197
|
+
ref: activatorRef
|
|
175
198
|
}, toHandlers(activatorEvents.value), props.activatorProps)
|
|
176
|
-
}), _createVNode(Teleport, {
|
|
199
|
+
}), IN_BROWSER && _createVNode(Teleport, {
|
|
177
200
|
"disabled": !teleportTarget.value,
|
|
178
|
-
"ref": root,
|
|
179
201
|
"to": teleportTarget.value
|
|
180
202
|
}, {
|
|
181
203
|
default: () => [hasContent.value && _createVNode("div", _mergeProps({
|
|
182
204
|
"class": ['v-overlay', {
|
|
183
|
-
'v-overlay--absolute': props.absolute,
|
|
184
|
-
'v-overlay--active': isActive.value
|
|
205
|
+
'v-overlay--absolute': props.absolute || props.contained,
|
|
206
|
+
'v-overlay--active': isActive.value,
|
|
207
|
+
'v-overlay--contained': props.contained
|
|
185
208
|
}, themeClasses.value, rtlClasses.value],
|
|
186
|
-
"style":
|
|
209
|
+
"style": {
|
|
210
|
+
top: convertToUnit(top.value),
|
|
211
|
+
zIndex: overlayZIndex.value
|
|
212
|
+
},
|
|
213
|
+
"ref": root
|
|
187
214
|
}, attrs), [_createVNode(Scrim, {
|
|
188
215
|
"color": scrimColor,
|
|
189
216
|
"modelValue": isActive.value && !!props.scrim
|
|
190
|
-
}, null
|
|
217
|
+
}, null), _createVNode(MaybeTransition, {
|
|
191
218
|
"appear": true,
|
|
192
|
-
"onAfterLeave": onAfterLeave,
|
|
193
219
|
"persisted": true,
|
|
194
220
|
"transition": props.transition,
|
|
195
|
-
"target": activatorEl.value
|
|
221
|
+
"target": activatorEl.value,
|
|
222
|
+
"onAfterLeave": () => {
|
|
223
|
+
onAfterLeave();
|
|
224
|
+
emit('afterLeave');
|
|
225
|
+
}
|
|
196
226
|
}, {
|
|
197
227
|
default: () => [_withDirectives(_createVNode("div", {
|
|
198
228
|
"ref": contentEl,
|
|
199
229
|
"class": ['v-overlay__content', props.contentClass],
|
|
200
|
-
"style": [dimensionStyles.value, contentStyles.value]
|
|
201
|
-
"onKeydown": onKeydown
|
|
230
|
+
"style": [dimensionStyles.value, contentStyles.value]
|
|
202
231
|
}, [(_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, {
|
|
203
232
|
isActive
|
|
204
|
-
})]
|
|
233
|
+
})]), [[_vShow, isActive.value], [_resolveDirective("click-outside"), {
|
|
205
234
|
handler: onClickOutside,
|
|
206
235
|
closeConditional,
|
|
207
236
|
include: () => [activatorEl.value]
|
|
208
237
|
}]])]
|
|
209
|
-
}
|
|
210
|
-
}
|
|
238
|
+
})])]
|
|
239
|
+
})]);
|
|
211
240
|
});
|
|
212
241
|
return {
|
|
213
242
|
animateClick,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"names":["makeActivatorProps","useActivator","makePositionStrategyProps","usePositionStrategies","makeScrollStrategyProps","useScrollStrategies","makeThemeProps","useTheme","makeTransitionProps","MaybeTransition","useBackButton","useBackgroundColor","useProxiedModel","useRtl","useTeleport","makeDimensionProps","useDimension","makeLazyProps","useLazy","ClickOutside","convertToUnit","defineComponent","getScrollParent","standardEasing","useRender","computed","mergeProps","ref","Teleport","toHandlers","toRef","Transition","watch","Scrim","props","modelValue","color","rest","backgroundColorClasses","value","backgroundColorStyles","name","directives","inheritAttrs","absolute","Boolean","attach","type","String","Object","default","contentClass","noClickAnimation","persistent","scrim","emits","e","setup","slots","attrs","emit","isActive","teleportTarget","themeClasses","rtlClasses","hasContent","onAfterLeave","scrimColor","activatorEl","activatorEvents","dimensionStyles","contentEl","contentStyles","updatePosition","onClickOutside","animateClick","closeConditional","onKeydown","key","next","root","top","val","scrollParent","document","scrollingElement","scrollTop","animate","transformOrigin","transform","duration","easing","activator","activatorProps","undefined","transition","handler","include"],"mappings":";AAAA;AACA,wB,CAEA;;SACSA,kB,EAAoBC,Y;SACpBC,yB,EAA2BC,qB;SAC3BC,uB,EAAyBC,mB;SACzBC,c,EAAgBC,Q;SAChBC,mB,EAAqBC,e;SACrBC,a;SACAC,kB;SACAC,e;SACAC,M;SACAC,W;SACAC,kB,EAAoBC,Y;SACpBC,a,EAAeC,O,sCAExB;;SACSC,Y,oDAET;;SAEEC,a,EACAC,e,EACAC,e,EACAC,c,EACAC,S;AAEF,SACEC,QADF,EAEEC,UAFF,EAGEC,GAHF,EAIEC,QAJF,EAKEC,UALF,EAMEC,KANF,EAOEC,UAPF,EAQEC,KARF,QASO,KATP,C,CAWA;;AASA,SAASC,KAAT,CAAgBC,KAAhB,EAAmC;AACjC,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,KAAd;AAAqB,OAAGC;AAAxB,MAAiCH,KAAvC;AACA;AAAA,YACmB,iBADnB;AAAA;AAAA;AAAA,oBAEMA,KAAK,CAACC,UAAN;AAAA,eAES,CACL,kBADK,EAELD,KAAK,CAACE,KAAN,CAAYE,sBAAZ,CAAmCC,KAF9B,CAFT;AAAA,eAMUL,KAAK,CAACE,KAAN,CAAYI,qBAAZ,CAAkCD;AAN5C,OAOOF,IAPP,YAFN;AAAA;AAcD;;AAED,eAAehB,eAAe,CAAC;AAC7BoB,EAAAA,IAAI,EAAE,UADuB;AAG7BC,EAAAA,UAAU,EAAE;AAAEvB,IAAAA;AAAF,GAHiB;AAK7BwB,EAAAA,YAAY,EAAE,KALe;AAO7BT,EAAAA,KAAK,EAAE;AACLU,IAAAA,QAAQ,EAAEC,OADL;AAELC,IAAAA,MAAM,EAAE;AACNC,MAAAA,IAAI,EAAE,CAACF,OAAD,EAAUG,MAAV,EAAkBC,MAAlB,CADA;AAENC,MAAAA,OAAO,EAAE;AAFH,KAFH;AAMLC,IAAAA,YAAY,EAAE,IANT;AAOLC,IAAAA,gBAAgB,EAAEP,OAPb;AAQLV,IAAAA,UAAU,EAAEU,OARP;AASLQ,IAAAA,UAAU,EAAER,OATP;AAULS,IAAAA,KAAK,EAAE;AACLP,MAAAA,IAAI,EAAE,CAACC,MAAD,EAASH,OAAT,CADD;AAELK,MAAAA,OAAO,EAAE;AAFJ,KAVF;AAeL,OAAGlD,kBAAkB,EAfhB;AAgBL,OAAGe,kBAAkB,EAhBhB;AAiBL,OAAGb,yBAAyB,EAjBvB;AAkBL,OAAGE,uBAAuB,EAlBrB;AAmBL,OAAGE,cAAc,EAnBZ;AAoBL,OAAGE,mBAAmB,EApBjB;AAqBL,OAAGS,aAAa;AArBX,GAPsB;AA+B7BsC,EAAAA,KAAK,EAAE;AACL,qBAAkBC,CAAD,IAAmB,IAD/B;AAEL,yBAAsBjB,KAAD,IAAoB;AAFpC,GA/BsB;;AAoC7BkB,EAAAA,KAAK,CAAEvB,KAAF,EAAS;AAAEwB,IAAAA,KAAF;AAASC,IAAAA,KAAT;AAAgBC,IAAAA;AAAhB,GAAT,EAAiC;AACpC,UAAMC,QAAQ,GAAGjD,eAAe,CAACsB,KAAD,EAAQ,YAAR,CAAhC;AACA,UAAM;AAAE4B,MAAAA;AAAF,QAAqBhD,WAAW,CAACgB,KAAK,CAACI,KAAD,EAAQ,QAAR,CAAN,CAAtC;AACA,UAAM;AAAE6B,MAAAA;AAAF,QAAmBxD,QAAQ,CAAC2B,KAAD,CAAjC;AACA,UAAM;AAAE8B,MAAAA;AAAF,QAAiBnD,MAAM,EAA7B;AACA,UAAM;AAAEoD,MAAAA,UAAF;AAAcC,MAAAA;AAAd,QAA+BhD,OAAO,CAACgB,KAAD,EAAQ2B,QAAR,CAA5C;AACA,UAAMM,UAAU,GAAGxD,kBAAkB,CAACc,QAAQ,CAAC,MAAM;AACnD,aAAO,OAAOS,KAAK,CAACoB,KAAb,KAAuB,QAAvB,GAAkCpB,KAAK,CAACoB,KAAxC,GAAgD,IAAvD;AACD,KAF6C,CAAT,CAArC;AAGA,UAAM;AAAEc,MAAAA,WAAF;AAAeC,MAAAA;AAAf,QAAmCpE,YAAY,CAACiC,KAAD,EAAQ2B,QAAR,CAArD;AACA,UAAM;AAAES,MAAAA;AAAF,QAAsBtD,YAAY,CAACkB,KAAD,CAAxC;AAEA,UAAMqC,SAAS,GAAG5C,GAAG,EAArB;AACA,UAAM;AAAE6C,MAAAA,aAAF;AAAiBC,MAAAA;AAAjB,QAAoCtE,qBAAqB,CAAC+B,KAAD,EAAQ;AACrEqC,MAAAA,SADqE;AAErEH,MAAAA,WAFqE;AAGrEP,MAAAA;AAHqE,KAAR,CAA/D;AAKAxD,IAAAA,mBAAmB,CAAC6B,KAAD,EAAQ;AACzBqC,MAAAA,SADyB;AAEzBH,MAAAA,WAFyB;AAGzBP,MAAAA,QAHyB;AAIzBY,MAAAA;AAJyB,KAAR,CAAnB;;AAOA,aAASC,cAAT,CAAyBlB,CAAzB,EAAwC;AACtCI,MAAAA,IAAI,CAAC,eAAD,EAAkBJ,CAAlB,CAAJ;AAEA,UAAI,CAACtB,KAAK,CAACmB,UAAX,EAAuBQ,QAAQ,CAACtB,KAAT,GAAiB,KAAjB,CAAvB,KACKoC,YAAY;AAClB;;AAED,aAASC,gBAAT,GAA6B;AAC3B,aAAOf,QAAQ,CAACtB,KAAhB;AACD;;AAED,aAASsC,SAAT,CAAoBrB,CAApB,EAAsC;AACpC,UAAIA,CAAC,CAACsB,GAAF,KAAU,QAAd,EAAwB;AACtB,YAAI,CAAC5C,KAAK,CAACmB,UAAX,EAAuB;AACrBQ,UAAAA,QAAQ,CAACtB,KAAT,GAAiB,KAAjB;AACD,SAFD,MAEOoC,YAAY;AACpB;AACF;;AAEDjE,IAAAA,aAAa,CAACqE,IAAI,IAAI;AACpBA,MAAAA,IAAI,CAAC,CAAClB,QAAQ,CAACtB,KAAX,CAAJ;AAEA,UAAI,CAACL,KAAK,CAACmB,UAAX,EAAuBQ,QAAQ,CAACtB,KAAT,GAAiB,KAAjB,CAAvB,KACKoC,YAAY;AAClB,KALY,CAAb;AAOA,UAAMK,IAAI,GAAGrD,GAAG,EAAhB;AACA,UAAMsD,GAAG,GAAGtD,GAAG,EAAf;AACAK,IAAAA,KAAK,CAAC,MAAM6B,QAAQ,CAACtB,KAAT,IAAkBL,KAAK,CAACU,QAAxB,IAAoCkB,cAAc,CAACvB,KAAf,IAAwB,IAAnE,EAAyE2C,GAAG,IAAI;AACnF,UAAIA,GAAJ,EAAS;AACP,cAAMC,YAAY,GAAG7D,eAAe,CAAC0D,IAAI,CAACzC,KAAN,CAApC;;AACA,YAAI4C,YAAY,IAAIA,YAAY,KAAKC,QAAQ,CAACC,gBAA9C,EAAgE;AAC9DJ,UAAAA,GAAG,CAAC1C,KAAJ,GAAY4C,YAAY,CAACG,SAAzB;AACD;AACF;AACF,KAPI,CAAL,CArDoC,CA8DpC;;AACA,aAASX,YAAT,GAAyB;AAAA;;AACvB,UAAIzC,KAAK,CAACkB,gBAAV,EAA4B;AAE5B,0BAAAmB,SAAS,CAAChC,KAAV,sCAAiBgD,OAAjB,CAAyB,CACvB;AAAEC,QAAAA,eAAe,EAAE;AAAnB,OADuB,EAEvB;AAAEC,QAAAA,SAAS,EAAE;AAAb,OAFuB,EAGvB;AAAED,QAAAA,eAAe,EAAE;AAAnB,OAHuB,CAAzB,EAIG;AACDE,QAAAA,QAAQ,EAAE,GADT;AAEDC,QAAAA,MAAM,EAAEpE;AAFP,OAJH;AAQD;;AAEDC,IAAAA,SAAS,CAAC;AAAA;;AAAA,gEAEJkC,KAAK,CAACkC,SAFF,qBAEJ,sBAAAlC,KAAK,EAAa;AAClBG,QAAAA,QAAQ,EAAEA,QAAQ,CAACtB,KADD;AAElBL,QAAAA,KAAK,EAAER,UAAU,CAAC;AAChBS,UAAAA,UAAU,EAAE0B,QAAQ,CAACtB,KADL;AAEhB,iCAAwB2C,GAAD,IAAkBrB,QAAQ,CAACtB,KAAT,GAAiB2C;AAF1C,SAAD,EAGdrD,UAAU,CAACwC,eAAe,CAAC9B,KAAjB,CAHI,EAGqBL,KAAK,CAAC2D,cAH3B;AAFC,OAAb,CAFD;AAAA,oBAUO,CAAC/B,cAAc,CAACvB,KAVvB;AAAA,eAWEyC,IAXF;AAAA,cAYClB,cAAc,CAACvB;AAZhB;AAAA,wBAcF0B,UAAU,CAAC1B,KAAX;AAAA,mBAES,CACL,WADK,EAEL;AACE,mCAAuBL,KAAK,CAACU,QAD/B;AAEE,iCAAqBiB,QAAQ,CAACtB;AAFhC,WAFK,EAMLwB,YAAY,CAACxB,KANR,EAOLyB,UAAU,CAACzB,KAPN,CAFT;AAAA,mBAWU0C,GAAG,CAAC1C,KAAJ,IAAa,IAAb,GAAqB,QAAOnB,aAAa,CAAC6D,GAAG,CAAC1C,KAAL,CAAY,EAArD,GAAyDuD;AAXnE,WAYMnC,KAZN;AAAA,mBAeYQ,UAfZ;AAAA,wBAgBiBN,QAAQ,CAACtB,KAAT,IAAkB,CAAC,CAACL,KAAK,CAACoB;AAhB3C;AAAA;AAAA,0BAoBmBY,YApBnB;AAAA;AAAA,wBAsBiBhC,KAAK,CAAC6D,UAtBvB;AAAA,oBAuBa3B,WAAW,CAAC7B;AAvBzB;AAAA;AAAA,mBA0BYgC,SA1BZ;AAAA,qBA6Ba,CACL,oBADK,EAELrC,KAAK,CAACiB,YAFD,CA7Bb;AAAA,qBAiCa,CACLmB,eAAe,CAAC/B,KADX,EAELiC,aAAa,CAACjC,KAFT,CAjCb;AAAA,yBAqCkBsC;AArClB,gCAuCQnB,KAAK,CAACR,OAvCd,qBAuCQ,oBAAAQ,KAAK,EAAW;AAAEG,YAAAA;AAAF,WAAX,CAvCb,iCA2BeA,QAAQ,CAACtB,KA3BxB,wCA4BuB;AAAEyD,YAAAA,OAAO,EAAEtB,cAAX;AAA2BE,YAAAA,gBAA3B;AAA6CqB,YAAAA,OAAO,EAAE,MAAM,CAAC7B,WAAW,CAAC7B,KAAb;AAA5D,WA5BvB;AAAA,oFAdE;AAAA;AAAA,KAAD,CAAT;AA8DA,WAAO;AACLoC,MAAAA,YADK;AAELJ,MAAAA,SAFK;AAGLH,MAAAA;AAHK,KAAP;AAKD;;AAnL4B,CAAD,CAA9B","sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { makePositionStrategyProps, usePositionStrategies } from './positionStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeThemeProps, useTheme } from '@/composables/theme'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\nimport { useBackButton } from '@/composables/router'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRtl } from '@/composables/rtl'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\n\n// Directives\nimport { ClickOutside } from '@/directives/click-outside'\n\n// Utilities\nimport {\n convertToUnit,\n defineComponent,\n getScrollParent,\n standardEasing,\n useRender,\n} from '@/util'\nimport {\n computed,\n mergeProps,\n ref,\n Teleport,\n toHandlers,\n toRef,\n Transition,\n watch,\n} from 'vue'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { BackgroundColorData } from '@/composables/color'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n <Transition name=\"fade-transition\" appear>\n { props.modelValue && (\n <div\n class={[\n 'v-overlay__scrim',\n props.color.backgroundColorClasses.value,\n ]}\n style={ props.color.backgroundColorStyles.value }\n { ...rest }\n />\n )}\n </Transition>\n )\n}\n\nexport default defineComponent({\n name: 'VOverlay',\n\n directives: { ClickOutside },\n\n inheritAttrs: false,\n\n props: {\n absolute: Boolean,\n attach: {\n type: [Boolean, String, Object] as PropType<boolean | string | Element>,\n default: 'body',\n },\n contentClass: null,\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [String, Boolean],\n default: true,\n },\n\n ...makeActivatorProps(),\n ...makeDimensionProps(),\n ...makePositionStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n ...makeLazyProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { teleportTarget } = useTeleport(toRef(props, 'attach'))\n const { themeClasses } = useTheme(props)\n const { rtlClasses } = useRtl()\n const { hasContent, onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const { activatorEl, activatorEvents } = useActivator(props, isActive)\n const { dimensionStyles } = useDimension(props)\n\n const contentEl = ref<HTMLElement>()\n const { contentStyles, updatePosition } = usePositionStrategies(props, {\n contentEl,\n activatorEl,\n isActive,\n })\n useScrollStrategies(props, {\n contentEl,\n activatorEl,\n isActive,\n updatePosition,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional () {\n return isActive.value\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape') {\n if (!props.persistent) {\n isActive.value = false\n } else animateClick()\n }\n }\n\n useBackButton(next => {\n next(!isActive.value)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n })\n\n const root = ref()\n const top = ref<number>()\n watch(() => isActive.value && props.absolute && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value?.animate([\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n props: mergeProps({\n modelValue: isActive.value,\n 'onUpdate:modelValue': (val: boolean) => isActive.value = val,\n }, toHandlers(activatorEvents.value), props.activatorProps),\n }) }\n <Teleport\n disabled={ !teleportTarget.value }\n ref={ root }\n to={ teleportTarget.value }\n >\n { hasContent.value && (\n <div\n class={[\n 'v-overlay',\n {\n 'v-overlay--absolute': props.absolute,\n 'v-overlay--active': isActive.value,\n },\n themeClasses.value,\n rtlClasses.value,\n ]}\n style={ top.value != null ? `top: ${convertToUnit(top.value)}` : undefined }\n {...attrs}\n >\n <Scrim\n color={ scrimColor }\n modelValue={ isActive.value && !!props.scrim }\n />\n <MaybeTransition\n appear\n onAfterLeave={ onAfterLeave }\n persisted\n transition={ props.transition }\n target={ activatorEl.value }\n >\n <div\n ref={ contentEl }\n v-show={ isActive.value }\n v-click-outside={{ handler: onClickOutside, closeConditional, include: () => [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n onKeydown={ onKeydown }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n )}\n </Teleport>\n </>\n ))\n\n return {\n animateClick,\n contentEl,\n activatorEl,\n }\n },\n})\n"],"file":"VOverlay.mjs"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"names":["makeActivatorProps","useActivator","makePositionStrategyProps","usePositionStrategies","makeScrollStrategyProps","useScrollStrategies","makeThemeProps","provideTheme","makeTransitionProps","MaybeTransition","useBackButton","useBackgroundColor","useProxiedModel","useRtl","useTeleport","makeDimensionProps","useDimension","makeLazyProps","useLazy","useStack","useOverlay","ClickOutside","convertToUnit","genericComponent","getScrollParent","IN_BROWSER","standardEasing","useRender","computed","mergeProps","ref","Teleport","toHandlers","Transition","watch","Scrim","props","modelValue","color","rest","backgroundColorClasses","value","backgroundColorStyles","VOverlay","name","directives","inheritAttrs","absolute","Boolean","attach","String","Object","contained","contentClass","noClickAnimation","persistent","scrim","type","default","emits","e","afterLeave","setup","slots","attrs","emit","isActive","teleportTarget","themeClasses","rtlClasses","hasContent","onAfterLeave","scrimColor","activatorEl","activatorRef","activatorEvents","dimensionStyles","isTop","root","contentEl","contentStyles","updatePosition","onClickOutside","animateClick","closeConditional","val","window","addEventListener","onKeydown","removeEventListener","immediate","key","next","top","scrollParent","document","scrollingElement","scrollTop","animate","transformOrigin","transform","duration","easing","overlayZIndex","activator","activatorProps","zIndex","transition","handler","include"],"mappings":"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","sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { makePositionStrategyProps, usePositionStrategies } from './positionStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\nimport { useBackButton } from '@/composables/router'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRtl } from '@/composables/rtl'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useStack } from '@/composables/stack'\nimport { useOverlay } from '@/composables/overlay'\n\n// Directives\nimport { ClickOutside } from '@/directives/click-outside'\n\n// Utilities\nimport {\n convertToUnit,\n genericComponent,\n getScrollParent,\n IN_BROWSER,\n standardEasing,\n useRender,\n} from '@/util'\nimport {\n computed,\n mergeProps,\n ref,\n Teleport,\n toHandlers,\n Transition,\n watch,\n} from 'vue'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { MakeSlots } from '@/util'\nimport type { BackgroundColorData } from '@/composables/color'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n <Transition name=\"fade-transition\" appear>\n { props.modelValue && (\n <div\n class={[\n 'v-overlay__scrim',\n props.color.backgroundColorClasses.value,\n ]}\n style={ props.color.backgroundColorStyles.value }\n { ...rest }\n />\n )}\n </Transition>\n )\n}\n\nexport type OverlaySlots = MakeSlots<{\n default: [{ isActive: Ref<boolean> }]\n activator: [{ isActive: boolean, props: Record<string, any> }]\n}>\n\nexport const VOverlay = genericComponent<new () => {\n $slots: OverlaySlots\n}>()({\n name: 'VOverlay',\n\n directives: { ClickOutside },\n\n inheritAttrs: false,\n\n props: {\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType<boolean | string | Element>,\n contained: Boolean,\n contentClass: null,\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [String, Boolean],\n default: true,\n },\n\n ...makeActivatorProps(),\n ...makeDimensionProps(),\n ...makePositionStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n ...makeLazyProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { teleportTarget } = useTeleport(computed(() => props.attach || props.contained))\n const { themeClasses } = provideTheme(props)\n const { rtlClasses } = useRtl()\n const { hasContent, onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const { activatorEl, activatorRef, activatorEvents } = useActivator(props, isActive)\n const { dimensionStyles } = useDimension(props)\n const { isTop } = useStack(isActive)\n\n const root = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\n const { contentStyles, updatePosition } = usePositionStrategies(props, {\n contentEl,\n activatorEl,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n activatorEl,\n isActive,\n updatePosition,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional () {\n return isActive.value && isTop.value\n }\n\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown)\n } else {\n window.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && isTop.value) {\n if (!props.persistent) {\n isActive.value = false\n } else animateClick()\n }\n }\n\n useBackButton(next => {\n if (isTop.value && isActive.value) {\n next(false)\n if (!props.persistent) isActive.value = false\n else animateClick()\n } else {\n next()\n }\n })\n\n const top = ref<number>()\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value?.animate([\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n const { overlayZIndex } = useOverlay(isActive)\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n props: mergeProps({\n ref: activatorRef,\n }, toHandlers(activatorEvents.value), props.activatorProps),\n }) }\n\n { IN_BROWSER && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\n { hasContent.value && (\n <div\n class={[\n 'v-overlay',\n {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained,\n },\n themeClasses.value,\n rtlClasses.value,\n ]}\n style={{\n top: convertToUnit(top.value),\n zIndex: overlayZIndex.value,\n }}\n ref={ root }\n {...attrs}\n >\n <Scrim\n color={ scrimColor }\n modelValue={ isActive.value && !!props.scrim }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ activatorEl.value }\n onAfterLeave={() => { onAfterLeave(); emit('afterLeave') }}\n >\n <div\n ref={ contentEl }\n v-show={ isActive.value }\n v-click-outside={{ handler: onClickOutside, closeConditional, include: () => [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n )}\n </Teleport>\n ) }\n </>\n ))\n\n return {\n animateClick,\n contentEl,\n activatorEl,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n"],"file":"VOverlay.mjs"}
|
|
@@ -21,8 +21,6 @@
|
|
|
21
21
|
pointer-events: none
|
|
22
22
|
position: fixed
|
|
23
23
|
top: 0
|
|
24
|
-
z-index: $overlay-z-index
|
|
25
|
-
padding-inline-end: var(--v-scrollbar-offset)
|
|
26
24
|
bottom: 0
|
|
27
25
|
right: 0
|
|
28
26
|
|
|
@@ -47,3 +45,9 @@
|
|
|
47
45
|
// Modifier
|
|
48
46
|
.v-overlay--absolute
|
|
49
47
|
position: absolute
|
|
48
|
+
|
|
49
|
+
.v-overlay--contained .v-overlay__scrim
|
|
50
|
+
position: absolute
|
|
51
|
+
|
|
52
|
+
.v-overlay--scroll-blocked
|
|
53
|
+
padding-inline-end: var(--v-scrollbar-offset)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VOverlay/index.ts"],"names":["VOverlay"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VOverlay/index.ts"],"names":["VOverlay"],"mappings":"SAASA,Q","sourcesContent":["export { VOverlay } from './VOverlay'\n"],"file":"index.mjs"}
|
|
@@ -4,6 +4,7 @@ import { convertToUnit, getScrollParent, IN_BROWSER, isFixedPosition, nullifyTra
|
|
|
4
4
|
import { oppositeAnchor, parseAnchor, physicalAnchor } from "./util/anchor.mjs";
|
|
5
5
|
import { anchorToPoint, getOffset } from "./util/point.mjs"; // Types
|
|
6
6
|
|
|
7
|
+
import { Box } from "../../util/box.mjs";
|
|
7
8
|
const positionStrategies = {
|
|
8
9
|
static: staticPositionStrategy,
|
|
9
10
|
// specific viewport position, usually centered
|
|
@@ -99,18 +100,24 @@ function connectedPositionStrategy(data, props, contentStyles) {
|
|
|
99
100
|
return isNaN(val) ? Infinity : val;
|
|
100
101
|
});
|
|
101
102
|
let observe = false;
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
observer.
|
|
109
|
-
|
|
103
|
+
|
|
104
|
+
if (IN_BROWSER) {
|
|
105
|
+
const observer = new ResizeObserver(() => {
|
|
106
|
+
if (observe) updatePosition();
|
|
107
|
+
});
|
|
108
|
+
observer.observe(data.activatorEl.value);
|
|
109
|
+
observer.observe(data.contentEl.value);
|
|
110
|
+
onScopeDispose(() => {
|
|
111
|
+
observer.disconnect();
|
|
112
|
+
});
|
|
113
|
+
} // eslint-disable-next-line max-statements
|
|
114
|
+
|
|
110
115
|
|
|
111
116
|
function updatePosition() {
|
|
112
117
|
observe = false;
|
|
113
|
-
requestAnimationFrame(() =>
|
|
118
|
+
requestAnimationFrame(() => {
|
|
119
|
+
requestAnimationFrame(() => observe = true);
|
|
120
|
+
});
|
|
114
121
|
const targetBox = data.activatorEl.value.getBoundingClientRect(); // TODO: offset shouldn't affect width
|
|
115
122
|
|
|
116
123
|
if (props.offset) {
|
|
@@ -163,9 +170,9 @@ function connectedPositionStrategy(data, props, contentStyles) {
|
|
|
163
170
|
const minWidth = Math.min(configuredMinWidth.value, maxWidth, targetBox.width);
|
|
164
171
|
const maxHeight = fitsY ? configuredMaxHeight.value : Math.min(configuredMaxHeight.value, Math.floor(anchor.side === 'top' ? freeSpace.top : freeSpace.bottom));
|
|
165
172
|
const targetPoint = anchorToPoint(anchor, targetBox);
|
|
166
|
-
const contentPoint = anchorToPoint(origin, { ...contentBox,
|
|
173
|
+
const contentPoint = anchorToPoint(origin, new Box({ ...contentBox,
|
|
167
174
|
height: Math.min(contentHeight, maxHeight)
|
|
168
|
-
});
|
|
175
|
+
}));
|
|
169
176
|
const {
|
|
170
177
|
x,
|
|
171
178
|
y
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VOverlay/positionStrategies.ts"],"names":["computed","effectScope","nextTick","onScopeDispose","ref","watch","watchEffect","convertToUnit","getScrollParent","IN_BROWSER","isFixedPosition","nullifyTransforms","propsFactory","oppositeAnchor","parseAnchor","physicalAnchor","anchorToPoint","getOffset","positionStrategies","static","staticPositionStrategy","connected","connectedPositionStrategy","makePositionStrategyProps","positionStrategy","type","String","Function","default","validator","val","anchor","origin","offset","Number","usePositionStrategies","props","data","contentStyles","updatePosition","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","viewportMargin","freeSpace","bottom","right","fitsY","canFill","includes","max","floor","targetPoint","contentPoint","round","transformOrigin","immediate"],"mappings":"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","sourcesContent":["// Utilities\nimport { computed, effectScope, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue'\nimport { convertToUnit, getScrollParent, IN_BROWSER, isFixedPosition, nullifyTransforms, propsFactory } from '@/util'\nimport { oppositeAnchor, parseAnchor, physicalAnchor } from './util/anchor'\nimport { anchorToPoint, getOffset } from './util/point'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\nimport type { Anchor } from './util/anchor'\n\nexport interface PositionStrategyData {\n contentEl: Ref<HTMLElement | undefined>\n activatorEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n}\n\nconst positionStrategies = {\n static: staticPositionStrategy, // specific viewport position, usually centered\n connected: connectedPositionStrategy, // connected to a certain element\n}\n\nexport interface StrategyProps {\n positionStrategy: keyof typeof positionStrategies | (\n (\n data: PositionStrategyData,\n props: StrategyProps,\n contentStyles: Ref<Dictionary<string>>\n ) => undefined | { updatePosition: (e: Event) => void }\n )\n anchor: 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 makePositionStrategyProps = propsFactory({\n positionStrategy: {\n type: [String, Function] as PropType<StrategyProps['positionStrategy']>,\n default: 'static',\n validator: (val: any) => typeof val === 'function' || val in positionStrategies,\n },\n anchor: {\n type: String as PropType<StrategyProps['anchor']>,\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 usePositionStrategies (\n props: StrategyProps,\n data: PositionStrategyData\n) {\n const contentStyles = ref({})\n const updatePosition = ref<(e: Event) => void>()\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n updatePosition.value = undefined\n\n if (!(IN_BROWSER && data.isActive.value && props.positionStrategy)) return\n\n scope = effectScope()\n await nextTick()\n scope.run(() => {\n if (typeof props.positionStrategy === 'function') {\n updatePosition.value = props.positionStrategy(data, props, contentStyles)?.updatePosition\n } else {\n updatePosition.value = positionStrategies[props.positionStrategy](data, props, contentStyles)?.updatePosition\n }\n })\n })\n\n IN_BROWSER && window.addEventListener('resize', onResize, { passive: true })\n\n onScopeDispose(() => {\n IN_BROWSER && window.removeEventListener('resize', onResize)\n updatePosition.value = undefined\n scope?.stop()\n })\n\n function onResize (e: Event) {\n updatePosition.value?.(e)\n }\n\n return {\n contentStyles,\n updatePosition,\n }\n}\n\nfunction staticPositionStrategy () {\n // TODO\n}\n\nfunction connectedPositionStrategy (data: PositionStrategyData, props: StrategyProps, contentStyles: Ref<Dictionary<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.anchor))\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 const observer = new ResizeObserver(() => {\n if (observe) updatePosition()\n })\n observer.observe(data.activatorEl.value!)\n observer.observe(data.contentEl.value!)\n\n onScopeDispose(() => {\n observer.disconnect()\n })\n\n // eslint-disable-next-line max-statements\n function updatePosition () {\n observe = false\n requestAnimationFrame(() => observe = true)\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 const viewportMargin = 12\n const freeSpace = {\n top: targetBox.top - viewportMargin,\n bottom: viewportHeight - targetBox.bottom - viewportMargin,\n left: targetBox.left - viewportMargin,\n right: viewportWidth - targetBox.right - viewportMargin,\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, {\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 () => updatePosition(),\n { immediate: !activatorFixed }\n )\n\n if (activatorFixed) nextTick(() => updatePosition())\n requestAnimationFrame(() => {\n if (contentStyles.value.maxHeight) updatePosition()\n })\n\n return { updatePosition }\n}\n"],"file":"positionStrategies.mjs"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VOverlay/positionStrategies.ts"],"names":["computed","effectScope","nextTick","onScopeDispose","ref","watch","watchEffect","convertToUnit","getScrollParent","IN_BROWSER","isFixedPosition","nullifyTransforms","propsFactory","oppositeAnchor","parseAnchor","physicalAnchor","anchorToPoint","getOffset","Box","positionStrategies","static","staticPositionStrategy","connected","connectedPositionStrategy","makePositionStrategyProps","positionStrategy","type","String","Function","default","validator","val","anchor","origin","offset","Number","usePositionStrategies","props","data","contentStyles","updatePosition","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","viewportMargin","freeSpace","bottom","right","fitsY","canFill","includes","max","floor","targetPoint","contentPoint","round","transformOrigin","immediate"],"mappings":"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","sourcesContent":["// Utilities\nimport { computed, effectScope, nextTick, onScopeDispose, ref, watch, watchEffect } from 'vue'\nimport { convertToUnit, getScrollParent, IN_BROWSER, isFixedPosition, nullifyTransforms, propsFactory } from '@/util'\nimport { oppositeAnchor, parseAnchor, physicalAnchor } from './util/anchor'\nimport { anchorToPoint, getOffset } from './util/point'\n\n// Types\nimport type { EffectScope, PropType, Ref } from 'vue'\nimport type { Anchor } from './util/anchor'\nimport { Box } from '@/util/box'\n\nexport interface PositionStrategyData {\n contentEl: Ref<HTMLElement | undefined>\n activatorEl: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n}\n\nconst positionStrategies = {\n static: staticPositionStrategy, // specific viewport position, usually centered\n connected: connectedPositionStrategy, // connected to a certain element\n}\n\nexport interface StrategyProps {\n positionStrategy: keyof typeof positionStrategies | (\n (\n data: PositionStrategyData,\n props: StrategyProps,\n contentStyles: Ref<Record<string, string>>\n ) => undefined | { updatePosition: (e: Event) => void }\n )\n anchor: 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 makePositionStrategyProps = propsFactory({\n positionStrategy: {\n type: [String, Function] as PropType<StrategyProps['positionStrategy']>,\n default: 'static',\n validator: (val: any) => typeof val === 'function' || val in positionStrategies,\n },\n anchor: {\n type: String as PropType<StrategyProps['anchor']>,\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 usePositionStrategies (\n props: StrategyProps,\n data: PositionStrategyData\n) {\n const contentStyles = ref({})\n const updatePosition = ref<(e: Event) => void>()\n\n let scope: EffectScope | undefined\n watchEffect(async () => {\n scope?.stop()\n updatePosition.value = undefined\n\n if (!(IN_BROWSER && data.isActive.value && props.positionStrategy)) return\n\n scope = effectScope()\n await nextTick()\n scope.run(() => {\n if (typeof props.positionStrategy === 'function') {\n updatePosition.value = props.positionStrategy(data, props, contentStyles)?.updatePosition\n } else {\n updatePosition.value = positionStrategies[props.positionStrategy](data, props, contentStyles)?.updatePosition\n }\n })\n })\n\n IN_BROWSER && window.addEventListener('resize', onResize, { passive: true })\n\n onScopeDispose(() => {\n IN_BROWSER && window.removeEventListener('resize', onResize)\n updatePosition.value = undefined\n scope?.stop()\n })\n\n function onResize (e: Event) {\n updatePosition.value?.(e)\n }\n\n return {\n contentStyles,\n updatePosition,\n }\n}\n\nfunction staticPositionStrategy () {\n // TODO\n}\n\nfunction connectedPositionStrategy (data: PositionStrategyData, 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.anchor))\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) updatePosition()\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 updatePosition () {\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 const viewportMargin = 12\n const freeSpace = {\n top: targetBox.top - viewportMargin,\n bottom: viewportHeight - targetBox.bottom - viewportMargin,\n left: targetBox.left - viewportMargin,\n right: viewportWidth - targetBox.right - viewportMargin,\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 () => updatePosition(),\n { immediate: !activatorFixed }\n )\n\n if (activatorFixed) nextTick(() => updatePosition())\n requestAnimationFrame(() => {\n if (contentStyles.value.maxHeight) updatePosition()\n })\n\n return { updatePosition }\n}\n"],"file":"positionStrategies.mjs"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Utilities
|
|
2
|
-
import { convertToUnit, getScrollParents, IN_BROWSER, propsFactory } from "../../util/index.mjs";
|
|
2
|
+
import { convertToUnit, getScrollParents, hasScrollbar, IN_BROWSER, propsFactory } from "../../util/index.mjs";
|
|
3
3
|
import { effectScope, nextTick, onScopeDispose, watchEffect } from 'vue';
|
|
4
4
|
import { requestNewFrame } from "./requestNewFrame.mjs"; // Types
|
|
5
5
|
|
|
@@ -48,8 +48,17 @@ function closeScrollStrategy(data) {
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
function blockScrollStrategy(data) {
|
|
51
|
+
var _data$root$value;
|
|
52
|
+
|
|
51
53
|
const scrollElements = [...new Set([...getScrollParents(data.activatorEl.value), ...getScrollParents(data.contentEl.value)])].filter(el => !el.classList.contains('v-overlay-scroll-blocked'));
|
|
52
54
|
const scrollbarWidth = window.innerWidth - document.documentElement.offsetWidth;
|
|
55
|
+
|
|
56
|
+
const scrollableParent = (el => hasScrollbar(el) && el)(((_data$root$value = data.root.value) == null ? void 0 : _data$root$value.offsetParent) || document.documentElement);
|
|
57
|
+
|
|
58
|
+
if (scrollableParent) {
|
|
59
|
+
data.root.value.classList.add('v-overlay--scroll-blocked');
|
|
60
|
+
}
|
|
61
|
+
|
|
53
62
|
scrollElements.forEach((el, i) => {
|
|
54
63
|
el.style.setProperty('--v-scrollbar-offset', convertToUnit(scrollbarWidth));
|
|
55
64
|
el.classList.add('v-overlay-scroll-blocked');
|
|
@@ -59,6 +68,10 @@ function blockScrollStrategy(data) {
|
|
|
59
68
|
el.style.removeProperty('--v-scrollbar-offset');
|
|
60
69
|
el.classList.remove('v-overlay-scroll-blocked');
|
|
61
70
|
});
|
|
71
|
+
|
|
72
|
+
if (scrollableParent) {
|
|
73
|
+
data.root.value.classList.remove('v-overlay--scroll-blocked');
|
|
74
|
+
}
|
|
62
75
|
});
|
|
63
76
|
}
|
|
64
77
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VOverlay/scrollStrategies.ts"],"names":["convertToUnit","getScrollParents","IN_BROWSER","propsFactory","effectScope","nextTick","onScopeDispose","watchEffect","requestNewFrame","scrollStrategies","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","forEach","i","style","setProperty","
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VOverlay/scrollStrategies.ts"],"names":["convertToUnit","getScrollParents","hasScrollbar","IN_BROWSER","propsFactory","effectScope","nextTick","onScopeDispose","watchEffect","requestNewFrame","scrollStrategies","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","removeProperty","remove","slow","raf","update","start","performance","now","updatePosition","time","cancelAnimationFrame","requestAnimationFrame","addEventListener","passive","removeEventListener"],"mappings":"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","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 updatePosition: Ref<((e: Event) => void) | undefined>\n}\n\nconst scrollStrategies = {\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-scrollbar-offset', convertToUnit(scrollbarWidth))\n el.classList.add('v-overlay-scroll-blocked')\n })\n\n onScopeDispose(() => {\n scrollElements.forEach((el, i) => {\n el.style.removeProperty('--v-scrollbar-offset')\n el.classList.remove('v-overlay-scroll-blocked')\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.updatePosition.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"],"file":"scrollStrategies.mjs"}
|