vuetify 3.8.6 → 3.8.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/json/attributes.json +3281 -3257
- package/dist/json/importMap-labs.json +28 -28
- package/dist/json/importMap.json +162 -162
- package/dist/json/tags.json +6 -0
- package/dist/json/web-types.json +5914 -5860
- package/dist/vuetify-labs.cjs +1059 -881
- package/dist/vuetify-labs.css +3481 -3475
- package/dist/vuetify-labs.d.ts +94 -60
- package/dist/vuetify-labs.esm.js +1060 -882
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +1059 -881
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +946 -764
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3916 -3910
- package/dist/vuetify.d.ts +84 -60
- package/dist/vuetify.esm.js +947 -765
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +946 -764
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1180 -1159
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.js +11 -11
- package/lib/components/VAlert/VAlert.js.map +1 -1
- package/lib/components/VApp/VApp.js +5 -5
- package/lib/components/VApp/VApp.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.css +6 -6
- package/lib/components/VAutocomplete/VAutocomplete.js +9 -9
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +3 -9
- package/lib/components/VAvatar/VAvatar.js +4 -4
- package/lib/components/VAvatar/VAvatar.js.map +1 -1
- package/lib/components/VBadge/VBadge.js +3 -3
- package/lib/components/VBadge/VBadge.js.map +1 -1
- package/lib/components/VBanner/VBanner.js +6 -6
- package/lib/components/VBanner/VBanner.js.map +1 -1
- package/lib/components/VBanner/VBannerActions.js +4 -4
- package/lib/components/VBanner/VBannerActions.js.map +1 -1
- package/lib/components/VBottomNavigation/VBottomNavigation.js +6 -6
- package/lib/components/VBottomNavigation/VBottomNavigation.js.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.js +5 -5
- package/lib/components/VBreadcrumbs/VBreadcrumbs.js.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.js +4 -4
- package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.js.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js +5 -5
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js.map +1 -1
- package/lib/components/VBtn/VBtn.js +7 -7
- package/lib/components/VBtn/VBtn.js.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.js +4 -4
- package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
- package/lib/components/VCard/VCard.js +5 -5
- package/lib/components/VCard/VCard.js.map +1 -1
- package/lib/components/VCard/VCardActions.js +4 -4
- package/lib/components/VCard/VCardActions.js.map +1 -1
- package/lib/components/VCard/VCardItem.js +9 -9
- package/lib/components/VCard/VCardItem.js.map +1 -1
- package/lib/components/VCard/VCardSubtitle.js +4 -4
- package/lib/components/VCard/VCardSubtitle.js.map +1 -1
- package/lib/components/VCard/VCardText.js +4 -4
- package/lib/components/VCard/VCardText.js.map +1 -1
- package/lib/components/VCarousel/VCarousel.js +2 -2
- package/lib/components/VCarousel/VCarousel.js.map +1 -1
- package/lib/components/VChip/VChip.js +12 -11
- package/lib/components/VChip/VChip.js.map +1 -1
- package/lib/components/VColorPicker/VColorPicker.js +3 -3
- package/lib/components/VColorPicker/VColorPicker.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.js +9 -9
- package/lib/components/VColorPicker/VColorPickerCanvas.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.js +6 -6
- package/lib/components/VColorPicker/VColorPickerEdit.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerPreview.js +9 -9
- package/lib/components/VColorPicker/VColorPickerPreview.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.js +8 -8
- package/lib/components/VColorPicker/VColorPickerSwatches.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.css +6 -6
- package/lib/components/VCombobox/VCombobox.js +9 -9
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +3 -9
- package/lib/components/VConfirmEdit/VConfirmEdit.js +3 -3
- package/lib/components/VConfirmEdit/VConfirmEdit.js.map +1 -1
- package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.js +3 -3
- package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.js.map +1 -1
- package/lib/components/VCounter/VCounter.js +5 -5
- package/lib/components/VCounter/VCounter.js.map +1 -1
- package/lib/components/VDataIterator/VDataIterator.js +5 -5
- package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.js +4 -4
- package/lib/components/VDataTable/VDataTable.js.map +1 -1
- package/lib/components/VDataTable/VDataTableColumn.js +3 -3
- package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
- package/lib/components/VDataTable/VDataTableFooter.js +6 -6
- package/lib/components/VDataTable/VDataTableFooter.js.map +1 -1
- package/lib/components/VDataTable/VDataTableGroupHeaderRow.js +5 -5
- package/lib/components/VDataTable/VDataTableGroupHeaderRow.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.js +11 -11
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableRow.js +6 -6
- package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
- package/lib/components/VDataTable/VDataTableRows.js +7 -7
- package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
- package/lib/components/VDataTable/VDataTableServer.js +4 -4
- package/lib/components/VDataTable/VDataTableServer.js.map +1 -1
- package/lib/components/VDataTable/VDataTableVirtual.js +8 -8
- package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.d.ts +20 -0
- package/lib/components/VDatePicker/VDatePicker.js +42 -5
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerControls.js +4 -4
- package/lib/components/VDatePicker/VDatePickerControls.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerHeader.js +8 -8
- package/lib/components/VDatePicker/VDatePickerHeader.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.js +13 -20
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonths.d.ts +10 -0
- package/lib/components/VDatePicker/VDatePickerMonths.js +15 -5
- package/lib/components/VDatePicker/VDatePickerMonths.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerYears.d.ts +10 -0
- package/lib/components/VDatePicker/VDatePickerYears.js +17 -5
- package/lib/components/VDatePicker/VDatePickerYears.js.map +1 -1
- package/lib/components/VDialog/__test__/VDialog.spec.browser.js +5 -5
- package/lib/components/VDialog/__test__/VDialog.spec.browser.js.map +1 -1
- package/lib/components/VDivider/VDivider.js +10 -10
- package/lib/components/VDivider/VDivider.js.map +1 -1
- package/lib/components/VEmptyState/VEmptyState.js +12 -12
- package/lib/components/VEmptyState/VEmptyState.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.js +6 -6
- package/lib/components/VExpansionPanel/VExpansionPanel.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelText.js +5 -5
- package/lib/components/VExpansionPanel/VExpansionPanelText.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.js +10 -10
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanels.js +4 -4
- package/lib/components/VExpansionPanel/VExpansionPanels.js.map +1 -1
- package/lib/components/VFab/VFab.js +7 -7
- package/lib/components/VFab/VFab.js.map +1 -1
- package/lib/components/VField/VField.js +20 -18
- package/lib/components/VField/VField.js.map +1 -1
- package/lib/components/VField/VFieldLabel.js +4 -4
- package/lib/components/VField/VFieldLabel.js.map +1 -1
- package/lib/components/VFileInput/VFileInput.js +5 -5
- package/lib/components/VFileInput/VFileInput.js.map +1 -1
- package/lib/components/VFooter/VFooter.js +4 -4
- package/lib/components/VFooter/VFooter.js.map +1 -1
- package/lib/components/VForm/VForm.js +4 -4
- package/lib/components/VForm/VForm.js.map +1 -1
- package/lib/components/VGrid/VContainer.js +4 -4
- package/lib/components/VGrid/VContainer.js.map +1 -1
- package/lib/components/VIcon/VIcon.js +5 -5
- package/lib/components/VIcon/VIcon.js.map +1 -1
- package/lib/components/VImg/VImg.js +13 -13
- package/lib/components/VImg/VImg.js.map +1 -1
- package/lib/components/VInfiniteScroll/VInfiniteScroll.js +8 -8
- package/lib/components/VInfiniteScroll/VInfiniteScroll.js.map +1 -1
- package/lib/components/VInput/InputIcon.d.ts +1 -1
- package/lib/components/VInput/InputIcon.js +5 -4
- package/lib/components/VInput/InputIcon.js.map +1 -1
- package/lib/components/VInput/VInput.js +9 -9
- package/lib/components/VInput/VInput.js.map +1 -1
- package/lib/components/VItemGroup/VItemGroup.js +3 -3
- package/lib/components/VItemGroup/VItemGroup.js.map +1 -1
- package/lib/components/VLabel/VLabel.js +5 -5
- package/lib/components/VLabel/VLabel.js.map +1 -1
- package/lib/components/VLayout/VLayout.js +4 -4
- package/lib/components/VLayout/VLayout.js.map +1 -1
- package/lib/components/VLayout/VLayoutItem.js +4 -4
- package/lib/components/VLayout/VLayoutItem.js.map +1 -1
- package/lib/components/VLazy/VLazy.js +6 -6
- package/lib/components/VLazy/VLazy.js.map +1 -1
- package/lib/components/VList/VList.js +4 -4
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VList/VListGroup.js +5 -5
- package/lib/components/VList/VListGroup.js.map +1 -1
- package/lib/components/VList/VListItem.js +11 -11
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VList/VListItemAction.js +4 -4
- package/lib/components/VList/VListItemAction.js.map +1 -1
- package/lib/components/VList/VListItemMedia.js +4 -4
- package/lib/components/VList/VListItemMedia.js.map +1 -1
- package/lib/components/VList/VListItemSubtitle.js +4 -4
- package/lib/components/VList/VListItemSubtitle.js.map +1 -1
- package/lib/components/VList/VListSubheader.js +6 -6
- package/lib/components/VList/VListSubheader.js.map +1 -1
- package/lib/components/VLocaleProvider/VLocaleProvider.js +4 -4
- package/lib/components/VLocaleProvider/VLocaleProvider.js.map +1 -1
- package/lib/components/VMain/VMain.js +5 -5
- package/lib/components/VMain/VMain.js.map +1 -1
- package/lib/components/VMessages/VMessages.js +4 -4
- package/lib/components/VMessages/VMessages.js.map +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.js +7 -7
- package/lib/components/VNavigationDrawer/VNavigationDrawer.js.map +1 -1
- package/lib/components/VNavigationDrawer/touch.js +2 -4
- package/lib/components/VNavigationDrawer/touch.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.js +41 -24
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.js +8 -8
- package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
- package/lib/components/VOverlay/VOverlay.js +8 -8
- package/lib/components/VOverlay/VOverlay.js.map +1 -1
- package/lib/components/VOverlay/locationStrategies.js +16 -8
- package/lib/components/VOverlay/locationStrategies.js.map +1 -1
- package/lib/components/VPagination/VPagination.js +11 -11
- package/lib/components/VPagination/VPagination.js.map +1 -1
- package/lib/components/VParallax/VParallax.js +4 -4
- package/lib/components/VParallax/VParallax.js.map +1 -1
- package/lib/components/VProgressCircular/VProgressCircular.js +12 -12
- package/lib/components/VProgressCircular/VProgressCircular.js.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.js +24 -24
- package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.js +2 -2
- package/lib/components/VRadioGroup/VRadioGroup.js.map +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.js +5 -5
- package/lib/components/VRangeSlider/VRangeSlider.js.map +1 -1
- package/lib/components/VRating/VRating.js +14 -14
- package/lib/components/VRating/VRating.js.map +1 -1
- package/lib/components/VResponsive/VResponsive.js +9 -9
- package/lib/components/VResponsive/VResponsive.js.map +1 -1
- package/lib/components/VSelect/VSelect.css +6 -0
- package/lib/components/VSelect/VSelect.js +43 -14
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSelect/VSelect.sass +3 -0
- package/lib/components/VSelect/_mixins.scss +14 -0
- package/lib/components/VSelectionControl/VSelectionControl.js +12 -12
- package/lib/components/VSelectionControl/VSelectionControl.js.map +1 -1
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js +5 -5
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js.map +1 -1
- package/lib/components/VSheet/VSheet.js +3 -3
- package/lib/components/VSheet/VSheet.js.map +1 -1
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js +4 -4
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.js +12 -12
- package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/lib/components/VSlider/VSlider.js +4 -4
- package/lib/components/VSlider/VSlider.js.map +1 -1
- package/lib/components/VSlider/VSliderThumb.js +30 -24
- package/lib/components/VSlider/VSliderThumb.js.map +1 -1
- package/lib/components/VSlider/VSliderTrack.js +17 -17
- package/lib/components/VSlider/VSliderTrack.js.map +1 -1
- package/lib/components/VSlider/slider.js +5 -2
- package/lib/components/VSlider/slider.js.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.js +4 -4
- package/lib/components/VSnackbar/VSnackbar.js.map +1 -1
- package/lib/components/VSnackbarQueue/VSnackbarQueue.js +3 -3
- package/lib/components/VSnackbarQueue/VSnackbarQueue.js.map +1 -1
- package/lib/components/VSparkline/VBarline.js +12 -12
- package/lib/components/VSparkline/VBarline.js.map +1 -1
- package/lib/components/VSparkline/VTrendline.js +8 -8
- package/lib/components/VSparkline/VTrendline.js.map +1 -1
- package/lib/components/VStepper/VStepper.js +2 -2
- package/lib/components/VStepper/VStepper.js.map +1 -1
- package/lib/components/VStepper/VStepperActions.js +2 -2
- package/lib/components/VStepper/VStepperActions.js.map +1 -1
- package/lib/components/VStepper/VStepperItem.js +10 -10
- package/lib/components/VStepper/VStepperItem.js.map +1 -1
- package/lib/components/VSwitch/VSwitch.js +10 -10
- package/lib/components/VSwitch/VSwitch.js.map +1 -1
- package/lib/components/VSystemBar/VSystemBar.js +4 -4
- package/lib/components/VSystemBar/VSystemBar.js.map +1 -1
- package/lib/components/VTable/VTable.js +6 -6
- package/lib/components/VTable/VTable.js.map +1 -1
- package/lib/components/VTabs/VTab.js +4 -4
- package/lib/components/VTabs/VTab.js.map +1 -1
- package/lib/components/VTabs/VTabs.js +2 -2
- package/lib/components/VTabs/VTabs.js.map +1 -1
- package/lib/components/VTextField/VTextField.js +12 -12
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/components/VTextarea/VTextarea.js +10 -10
- package/lib/components/VTextarea/VTextarea.js.map +1 -1
- package/lib/components/VThemeProvider/VThemeProvider.js +3 -3
- package/lib/components/VThemeProvider/VThemeProvider.js.map +1 -1
- package/lib/components/VTimeline/VTimeline.js +5 -5
- package/lib/components/VTimeline/VTimeline.js.map +1 -1
- package/lib/components/VTimeline/VTimelineDivider.js +17 -17
- package/lib/components/VTimeline/VTimelineDivider.js.map +1 -1
- package/lib/components/VTimeline/VTimelineItem.js +9 -9
- package/lib/components/VTimeline/VTimelineItem.js.map +1 -1
- package/lib/components/VToolbar/VToolbar.js +9 -9
- package/lib/components/VToolbar/VToolbar.js.map +1 -1
- package/lib/components/VToolbar/VToolbarItems.js +4 -4
- package/lib/components/VToolbar/VToolbarItems.js.map +1 -1
- package/lib/components/VToolbar/VToolbarTitle.js +4 -4
- package/lib/components/VToolbar/VToolbarTitle.js.map +1 -1
- package/lib/components/VVirtualScroll/VVirtualScroll.js +7 -7
- package/lib/components/VVirtualScroll/VVirtualScroll.js.map +1 -1
- package/lib/components/VVirtualScroll/VVirtualScrollItem.js +3 -3
- package/lib/components/VVirtualScroll/VVirtualScrollItem.js.map +1 -1
- package/lib/components/VWindow/VWindow.js +11 -11
- package/lib/components/VWindow/VWindow.js.map +1 -1
- package/lib/components/VWindow/VWindowItem.js +6 -6
- package/lib/components/VWindow/VWindowItem.js.map +1 -1
- package/lib/composables/date/date.d.ts +4 -0
- package/lib/composables/date/date.js +14 -1
- package/lib/composables/date/date.js.map +1 -1
- package/lib/composables/filter.js +8 -8
- package/lib/composables/filter.js.map +1 -1
- package/lib/composables/goto.js +1 -1
- package/lib/composables/goto.js.map +1 -1
- package/lib/composables/icons.js +6 -6
- package/lib/composables/icons.js.map +1 -1
- package/lib/composables/list-items.js +2 -2
- package/lib/composables/list-items.js.map +1 -1
- package/lib/composables/loader.js +3 -3
- package/lib/composables/loader.js.map +1 -1
- package/lib/composables/variant.js +5 -5
- package/lib/composables/variant.js.map +1 -1
- package/lib/entry-bundler.d.ts +3 -0
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +64 -60
- package/lib/framework.js +1 -1
- package/lib/labs/VCalendar/VCalendar.js +15 -15
- package/lib/labs/VCalendar/VCalendar.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarDay.js +4 -4
- package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarHeader.js +4 -4
- package/lib/labs/VCalendar/VCalendarHeader.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarInterval.js +10 -10
- package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarIntervalEvent.js +2 -2
- package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarMonthDay.js +6 -6
- package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
- package/lib/labs/VColorInput/VColorInput.js +3 -3
- package/lib/labs/VColorInput/VColorInput.js.map +1 -1
- package/lib/labs/VDateInput/VDateInput.d.ts +20 -0
- package/lib/labs/VDateInput/VDateInput.js +5 -9
- package/lib/labs/VDateInput/VDateInput.js.map +1 -1
- package/lib/labs/VFileUpload/VFileUpload.js +9 -9
- package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
- package/lib/labs/VFileUpload/VFileUploadItem.js +3 -3
- package/lib/labs/VFileUpload/VFileUploadItem.js.map +1 -1
- package/lib/labs/VIconBtn/VIconBtn.js +7 -7
- package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
- package/lib/labs/VPicker/VPicker.js +7 -7
- package/lib/labs/VPicker/VPicker.js.map +1 -1
- package/lib/labs/VPullToRefresh/VPullToRefresh.js +11 -11
- package/lib/labs/VPullToRefresh/VPullToRefresh.js.map +1 -1
- package/lib/labs/VStepperVertical/VStepperVertical.js +2 -2
- package/lib/labs/VStepperVertical/VStepperVertical.js.map +1 -1
- package/lib/labs/VStepperVertical/VStepperVerticalItem.js +5 -5
- package/lib/labs/VStepperVertical/VStepperVerticalItem.js.map +1 -1
- package/lib/labs/VTimePicker/VTimePicker.js +2 -2
- package/lib/labs/VTimePicker/VTimePicker.js.map +1 -1
- package/lib/labs/VTimePicker/VTimePickerClock.js +15 -15
- package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
- package/lib/labs/VTimePicker/VTimePickerControls.js +24 -24
- package/lib/labs/VTimePicker/VTimePickerControls.js.map +1 -1
- package/lib/labs/VTreeview/VTreeviewChildren.js +2 -2
- package/lib/labs/VTreeview/VTreeviewChildren.js.map +1 -1
- package/lib/labs/VTreeview/VTreeviewGroup.js +2 -2
- package/lib/labs/VTreeview/VTreeviewGroup.js.map +1 -1
- package/lib/labs/VTreeview/VTreeviewItem.js +3 -3
- package/lib/labs/VTreeview/VTreeviewItem.js.map +1 -1
- package/lib/labs/entry-bundler.d.ts +3 -0
- package/lib/util/box.d.ts +1 -0
- package/lib/util/box.js +27 -0
- package/lib/util/box.js.map +1 -1
- package/lib/util/helpers.d.ts +2 -0
- package/lib/util/helpers.js +24 -1
- package/lib/util/helpers.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VMain.js","names":["makeComponentProps","makeDimensionProps","useDimension","useLayout","useSsrBoot","makeTagProps","genericComponent","propsFactory","useRender","makeVMainProps","scrollable","Boolean","tag","VMain","name","props","setup","_ref","slots","dimensionStyles","mainStyles","ssrBootStyles","_createVNode","class","value","style","default"],"sources":["../../../src/components/VMain/VMain.tsx"],"sourcesContent":["// Styles\nimport './VMain.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useLayout } from '@/composables/layout'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVMainProps = propsFactory({\n scrollable: Boolean,\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps({ tag: 'main' }),\n}, 'VMain')\n\nexport const VMain = genericComponent()({\n name: 'VMain',\n\n props: makeVMainProps(),\n\n setup (props, { slots }) {\n const { dimensionStyles } = useDimension(props)\n const { mainStyles } = useLayout()\n const { ssrBootStyles } = useSsrBoot()\n\n useRender(() => (\n <props.tag\n class={[\n 'v-main',\n { 'v-main--scrollable': props.scrollable },\n props.class,\n ]}\n style={[\n mainStyles.value,\n ssrBootStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n >\n { props.scrollable\n ? (\n <div class=\"v-main__scroller\">\n { slots.default?.() }\n </div>\n )\n : slots.default?.()\n }\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VMain = InstanceType<typeof VMain>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,SAAS;AAAA,SACTC,UAAU;AAAA,SACVC,YAAY,oCAErB;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AAElD,OAAO,MAAMC,cAAc,GAAGF,YAAY,CAAC;EACzCG,UAAU,EAAEC,OAAO;EAEnB,GAAGX,kBAAkB,CAAC,CAAC;EACvB,GAAGC,kBAAkB,CAAC,CAAC;EACvB,GAAGI,YAAY,CAAC;IAAEO,GAAG,EAAE;EAAO,CAAC;AACjC,CAAC,EAAE,OAAO,CAAC;AAEX,OAAO,MAAMC,KAAK,GAAGP,gBAAgB,CAAC,CAAC,CAAC;EACtCQ,IAAI,EAAE,OAAO;EAEbC,KAAK,EAAEN,cAAc,CAAC,CAAC;EAEvBO,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAgB,CAAC,GAAGjB,YAAY,CAACa,KAAK,CAAC;IAC/C,MAAM;MAAEK;IAAW,CAAC,GAAGjB,SAAS,CAAC,CAAC;IAClC,MAAM;MAAEkB;IAAc,CAAC,GAAGjB,UAAU,CAAC,CAAC;IAEtCI,SAAS,CAAC,MAAAc,YAAA,CAAAP,KAAA,CAAAH,GAAA;MAAA,
|
|
1
|
+
{"version":3,"file":"VMain.js","names":["makeComponentProps","makeDimensionProps","useDimension","useLayout","useSsrBoot","makeTagProps","genericComponent","propsFactory","useRender","makeVMainProps","scrollable","Boolean","tag","VMain","name","props","setup","_ref","slots","dimensionStyles","mainStyles","ssrBootStyles","_createVNode","_normalizeClass","class","_normalizeStyle","value","style","default","_createElementVNode"],"sources":["../../../src/components/VMain/VMain.tsx"],"sourcesContent":["// Styles\nimport './VMain.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useLayout } from '@/composables/layout'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVMainProps = propsFactory({\n scrollable: Boolean,\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps({ tag: 'main' }),\n}, 'VMain')\n\nexport const VMain = genericComponent()({\n name: 'VMain',\n\n props: makeVMainProps(),\n\n setup (props, { slots }) {\n const { dimensionStyles } = useDimension(props)\n const { mainStyles } = useLayout()\n const { ssrBootStyles } = useSsrBoot()\n\n useRender(() => (\n <props.tag\n class={[\n 'v-main',\n { 'v-main--scrollable': props.scrollable },\n props.class,\n ]}\n style={[\n mainStyles.value,\n ssrBootStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n >\n { props.scrollable\n ? (\n <div class=\"v-main__scroller\">\n { slots.default?.() }\n </div>\n )\n : slots.default?.()\n }\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VMain = InstanceType<typeof VMain>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,SAAS;AAAA,SACTC,UAAU;AAAA,SACVC,YAAY,oCAErB;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AAElD,OAAO,MAAMC,cAAc,GAAGF,YAAY,CAAC;EACzCG,UAAU,EAAEC,OAAO;EAEnB,GAAGX,kBAAkB,CAAC,CAAC;EACvB,GAAGC,kBAAkB,CAAC,CAAC;EACvB,GAAGI,YAAY,CAAC;IAAEO,GAAG,EAAE;EAAO,CAAC;AACjC,CAAC,EAAE,OAAO,CAAC;AAEX,OAAO,MAAMC,KAAK,GAAGP,gBAAgB,CAAC,CAAC,CAAC;EACtCQ,IAAI,EAAE,OAAO;EAEbC,KAAK,EAAEN,cAAc,CAAC,CAAC;EAEvBO,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAgB,CAAC,GAAGjB,YAAY,CAACa,KAAK,CAAC;IAC/C,MAAM;MAAEK;IAAW,CAAC,GAAGjB,SAAS,CAAC,CAAC;IAClC,MAAM;MAAEkB;IAAc,CAAC,GAAGjB,UAAU,CAAC,CAAC;IAEtCI,SAAS,CAAC,MAAAc,YAAA,CAAAP,KAAA,CAAAH,GAAA;MAAA,SAAAW,eAAA,CAEC,CACL,QAAQ,EACR;QAAE,oBAAoB,EAAER,KAAK,CAACL;MAAW,CAAC,EAC1CK,KAAK,CAACS,KAAK,CACZ;MAAA,SAAAC,eAAA,CACM,CACLL,UAAU,CAACM,KAAK,EAChBL,aAAa,CAACK,KAAK,EACnBP,eAAe,CAACO,KAAK,EACrBX,KAAK,CAACY,KAAK,CACZ;IAAA;MAAAC,OAAA,EAAAA,CAAA,MAECb,KAAK,CAACL,UAAU,GAAAmB,mBAAA;QAAA;MAAA,IAGVX,KAAK,CAACU,OAAO,GAAG,CAAC,KAGrBV,KAAK,CAACU,OAAO,GAAG,CAAC;IAAA,EAGxB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createVNode as _createVNode } from "vue";
|
|
1
|
+
import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createVNode as _createVNode } from "vue";
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VMessages.css";
|
|
4
4
|
|
|
@@ -40,10 +40,10 @@ export const VMessages = genericComponent()({
|
|
|
40
40
|
useRender(() => _createVNode(MaybeTransition, {
|
|
41
41
|
"transition": props.transition,
|
|
42
42
|
"tag": "div",
|
|
43
|
-
"class": ['v-messages', textColorClasses.value, props.class],
|
|
44
|
-
"style": [textColorStyles.value, props.style]
|
|
43
|
+
"class": _normalizeClass(['v-messages', textColorClasses.value, props.class]),
|
|
44
|
+
"style": _normalizeStyle([textColorStyles.value, props.style])
|
|
45
45
|
}, {
|
|
46
|
-
default: () => [props.active && messages.value.map((message, i) =>
|
|
46
|
+
default: () => [props.active && messages.value.map((message, i) => _createElementVNode("div", {
|
|
47
47
|
"class": "v-messages__message",
|
|
48
48
|
"key": `${i}-${messages.value}`
|
|
49
49
|
}, [slots.message ? slots.message({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VMessages.js","names":["VSlideYTransition","useTextColor","makeComponentProps","makeTransitionProps","MaybeTransition","computed","genericComponent","propsFactory","useRender","wrapInArray","makeVMessagesProps","active","Boolean","color","String","messages","type","Array","default","transition","component","leaveAbsolute","group","VMessages","name","props","setup","_ref","slots","textColorClasses","textColorStyles","_createVNode","value","class","style","map","message","i"],"sources":["../../../src/components/VMessages/VMessages.tsx"],"sourcesContent":["// Styles\nimport './VMessages.sass'\n\n// Components\nimport { VSlideYTransition } from '@/components/transitions'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { Component, PropType } from 'vue'\n\nexport type VMessageSlot = {\n message: string\n}\n\nexport type VMessagesSlots = {\n message: VMessageSlot\n}\n\nexport const makeVMessagesProps = propsFactory({\n active: Boolean,\n color: String,\n messages: {\n type: [Array, String] as PropType<string | readonly string[]>,\n default: () => ([]),\n },\n\n ...makeComponentProps(),\n ...makeTransitionProps({\n transition: {\n component: VSlideYTransition as Component,\n leaveAbsolute: true,\n group: true,\n },\n }),\n}, 'VMessages')\n\nexport const VMessages = genericComponent<VMessagesSlots>()({\n name: 'VMessages',\n\n props: makeVMessagesProps(),\n\n setup (props, { slots }) {\n const messages = computed(() => wrapInArray(props.messages))\n const { textColorClasses, textColorStyles } = useTextColor(() => props.color)\n\n useRender(() => (\n <MaybeTransition\n transition={ props.transition }\n tag=\"div\"\n class={[\n 'v-messages',\n textColorClasses.value,\n props.class,\n ]}\n style={[\n textColorStyles.value,\n props.style,\n ]}\n >\n { props.active && (\n messages.value.map((message, i) => (\n <div\n class=\"v-messages__message\"\n key={ `${i}-${messages.value}` }\n >\n { slots.message ? slots.message({ message }) : message }\n </div>\n ))\n )}\n </MaybeTransition>\n ))\n\n return {}\n },\n})\n\nexport type VMessages = InstanceType<typeof VMessages>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB,mCAE1B;AAAA,SACSC,YAAY;AAAA,SACZC,kBAAkB;AAAA,SAClBC,mBAAmB,EAAEC,eAAe,2CAE7C;AACA,SAASC,QAAQ,QAAQ,KAAK;AAAA,SACrBC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,EAAEC,WAAW,+BAE/D;AAWA,OAAO,MAAMC,kBAAkB,GAAGH,YAAY,CAAC;EAC7CI,MAAM,EAAEC,OAAO;EACfC,KAAK,EAAEC,MAAM;EACbC,QAAQ,EAAE;IACRC,IAAI,EAAE,CAACC,KAAK,EAAEH,MAAM,CAAyC;IAC7DI,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EAED,GAAGhB,kBAAkB,CAAC,CAAC;EACvB,GAAGC,mBAAmB,CAAC;IACrBgB,UAAU,EAAE;MACVC,SAAS,EAAEpB,iBAA8B;MACzCqB,aAAa,EAAE,IAAI;MACnBC,KAAK,EAAE;IACT;EACF,CAAC;AACH,CAAC,EAAE,WAAW,CAAC;AAEf,OAAO,MAAMC,SAAS,GAAGjB,gBAAgB,CAAiB,CAAC,CAAC;EAC1DkB,IAAI,EAAE,WAAW;EAEjBC,KAAK,EAAEf,kBAAkB,CAAC,CAAC;EAE3BgB,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAMZ,QAAQ,GAAGV,QAAQ,CAAC,MAAMI,WAAW,CAACgB,KAAK,CAACV,QAAQ,CAAC,CAAC;IAC5D,MAAM;MAAEc,gBAAgB;MAAEC;IAAgB,CAAC,GAAG7B,YAAY,CAAC,MAAMwB,KAAK,CAACZ,KAAK,CAAC;IAE7EL,SAAS,CAAC,MAAAuB,YAAA,CAAA3B,eAAA;MAAA,cAEOqB,KAAK,CAACN,UAAU;MAAA;MAAA,
|
|
1
|
+
{"version":3,"file":"VMessages.js","names":["VSlideYTransition","useTextColor","makeComponentProps","makeTransitionProps","MaybeTransition","computed","genericComponent","propsFactory","useRender","wrapInArray","makeVMessagesProps","active","Boolean","color","String","messages","type","Array","default","transition","component","leaveAbsolute","group","VMessages","name","props","setup","_ref","slots","textColorClasses","textColorStyles","_createVNode","_normalizeClass","value","class","_normalizeStyle","style","map","message","i","_createElementVNode"],"sources":["../../../src/components/VMessages/VMessages.tsx"],"sourcesContent":["// Styles\nimport './VMessages.sass'\n\n// Components\nimport { VSlideYTransition } from '@/components/transitions'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { Component, PropType } from 'vue'\n\nexport type VMessageSlot = {\n message: string\n}\n\nexport type VMessagesSlots = {\n message: VMessageSlot\n}\n\nexport const makeVMessagesProps = propsFactory({\n active: Boolean,\n color: String,\n messages: {\n type: [Array, String] as PropType<string | readonly string[]>,\n default: () => ([]),\n },\n\n ...makeComponentProps(),\n ...makeTransitionProps({\n transition: {\n component: VSlideYTransition as Component,\n leaveAbsolute: true,\n group: true,\n },\n }),\n}, 'VMessages')\n\nexport const VMessages = genericComponent<VMessagesSlots>()({\n name: 'VMessages',\n\n props: makeVMessagesProps(),\n\n setup (props, { slots }) {\n const messages = computed(() => wrapInArray(props.messages))\n const { textColorClasses, textColorStyles } = useTextColor(() => props.color)\n\n useRender(() => (\n <MaybeTransition\n transition={ props.transition }\n tag=\"div\"\n class={[\n 'v-messages',\n textColorClasses.value,\n props.class,\n ]}\n style={[\n textColorStyles.value,\n props.style,\n ]}\n >\n { props.active && (\n messages.value.map((message, i) => (\n <div\n class=\"v-messages__message\"\n key={ `${i}-${messages.value}` }\n >\n { slots.message ? slots.message({ message }) : message }\n </div>\n ))\n )}\n </MaybeTransition>\n ))\n\n return {}\n },\n})\n\nexport type VMessages = InstanceType<typeof VMessages>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB,mCAE1B;AAAA,SACSC,YAAY;AAAA,SACZC,kBAAkB;AAAA,SAClBC,mBAAmB,EAAEC,eAAe,2CAE7C;AACA,SAASC,QAAQ,QAAQ,KAAK;AAAA,SACrBC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,EAAEC,WAAW,+BAE/D;AAWA,OAAO,MAAMC,kBAAkB,GAAGH,YAAY,CAAC;EAC7CI,MAAM,EAAEC,OAAO;EACfC,KAAK,EAAEC,MAAM;EACbC,QAAQ,EAAE;IACRC,IAAI,EAAE,CAACC,KAAK,EAAEH,MAAM,CAAyC;IAC7DI,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EAED,GAAGhB,kBAAkB,CAAC,CAAC;EACvB,GAAGC,mBAAmB,CAAC;IACrBgB,UAAU,EAAE;MACVC,SAAS,EAAEpB,iBAA8B;MACzCqB,aAAa,EAAE,IAAI;MACnBC,KAAK,EAAE;IACT;EACF,CAAC;AACH,CAAC,EAAE,WAAW,CAAC;AAEf,OAAO,MAAMC,SAAS,GAAGjB,gBAAgB,CAAiB,CAAC,CAAC;EAC1DkB,IAAI,EAAE,WAAW;EAEjBC,KAAK,EAAEf,kBAAkB,CAAC,CAAC;EAE3BgB,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAMZ,QAAQ,GAAGV,QAAQ,CAAC,MAAMI,WAAW,CAACgB,KAAK,CAACV,QAAQ,CAAC,CAAC;IAC5D,MAAM;MAAEc,gBAAgB;MAAEC;IAAgB,CAAC,GAAG7B,YAAY,CAAC,MAAMwB,KAAK,CAACZ,KAAK,CAAC;IAE7EL,SAAS,CAAC,MAAAuB,YAAA,CAAA3B,eAAA;MAAA,cAEOqB,KAAK,CAACN,UAAU;MAAA;MAAA,SAAAa,eAAA,CAEtB,CACL,YAAY,EACZH,gBAAgB,CAACI,KAAK,EACtBR,KAAK,CAACS,KAAK,CACZ;MAAA,SAAAC,eAAA,CACM,CACLL,eAAe,CAACG,KAAK,EACrBR,KAAK,CAACW,KAAK,CACZ;IAAA;MAAAlB,OAAA,EAAAA,CAAA,MAECO,KAAK,CAACd,MAAM,IACZI,QAAQ,CAACkB,KAAK,CAACI,GAAG,CAAC,CAACC,OAAO,EAAEC,CAAC,KAAAC,mBAAA;QAAA;QAAA,OAGpB,GAAGD,CAAC,IAAIxB,QAAQ,CAACkB,KAAK;MAAE,IAE5BL,KAAK,CAACU,OAAO,GAAGV,KAAK,CAACU,OAAO,CAAC;QAAEA;MAAQ,CAAC,CAAC,GAAGA,OAAO,EAEzD,CACF;IAAA,EAEJ,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
|
|
1
|
+
import { Fragment as _Fragment, createVNode as _createVNode, createElementVNode as _createElementVNode, mergeProps as _mergeProps } from "vue";
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VNavigationDrawer.css";
|
|
4
4
|
|
|
@@ -209,7 +209,7 @@ export const VNavigationDrawer = genericComponent()({
|
|
|
209
209
|
});
|
|
210
210
|
useRender(() => {
|
|
211
211
|
const hasImage = slots.image || props.image;
|
|
212
|
-
return
|
|
212
|
+
return _createElementVNode(_Fragment, null, [_createVNode(props.tag, _mergeProps({
|
|
213
213
|
"ref": rootEl,
|
|
214
214
|
"onMouseenter": runOpenDelay,
|
|
215
215
|
"onMouseleave": runCloseDelay,
|
|
@@ -225,7 +225,7 @@ export const VNavigationDrawer = genericComponent()({
|
|
|
225
225
|
}, themeClasses.value, backgroundColorClasses.value, borderClasses.value, displayClasses.value, elevationClasses.value, roundedClasses.value, props.class],
|
|
226
226
|
"style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
|
|
227
227
|
}, scopeId, attrs), {
|
|
228
|
-
default: () => [hasImage &&
|
|
228
|
+
default: () => [hasImage && _createElementVNode("div", {
|
|
229
229
|
"key": "image",
|
|
230
230
|
"class": "v-navigation-drawer__img"
|
|
231
231
|
}, [!slots.image ? _createVNode(VImg, {
|
|
@@ -245,17 +245,17 @@ export const VNavigationDrawer = genericComponent()({
|
|
|
245
245
|
src: props.image
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
|
-
}, slots.image)]), slots.prepend &&
|
|
248
|
+
}, slots.image)]), slots.prepend && _createElementVNode("div", {
|
|
249
249
|
"class": "v-navigation-drawer__prepend"
|
|
250
|
-
}, [slots.prepend?.()]),
|
|
250
|
+
}, [slots.prepend?.()]), _createElementVNode("div", {
|
|
251
251
|
"class": "v-navigation-drawer__content"
|
|
252
|
-
}, [slots.default?.()]), slots.append &&
|
|
252
|
+
}, [slots.default?.()]), slots.append && _createElementVNode("div", {
|
|
253
253
|
"class": "v-navigation-drawer__append"
|
|
254
254
|
}, [slots.append?.()])]
|
|
255
255
|
}), _createVNode(Transition, {
|
|
256
256
|
"name": "fade-transition"
|
|
257
257
|
}, {
|
|
258
|
-
default: () => [isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim &&
|
|
258
|
+
default: () => [isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && _createElementVNode("div", _mergeProps({
|
|
259
259
|
"class": ['v-navigation-drawer__scrim', scrimColor.backgroundColorClasses.value],
|
|
260
260
|
"style": [scrimStyles.value, scrimColor.backgroundColorStyles.value],
|
|
261
261
|
"onClick": () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VNavigationDrawer.js","names":["VDefaultsProvider","VImg","useSticky","useTouch","useRtl","makeBorderProps","useBorder","useBackgroundColor","makeComponentProps","provideDefaults","makeDelayProps","useDelay","makeDisplayProps","useDisplay","makeElevationProps","useElevation","makeLayoutItemProps","useLayoutItem","useProxiedModel","makeRoundedProps","useRounded","useRouter","useScopeId","useSsrBoot","makeTagProps","makeThemeProps","provideTheme","useToggleScope","computed","nextTick","readonly","ref","shallowRef","toRef","Transition","watch","genericComponent","propsFactory","toPhysical","useRender","locations","makeVNavigationDrawerProps","color","String","disableResizeWatcher","Boolean","disableRouteWatcher","expandOnHover","floating","modelValue","type","default","permanent","rail","railWidth","Number","scrim","image","temporary","persistent","touchless","width","location","validator","value","includes","sticky","mobile","tag","VNavigationDrawer","name","props","emits","val","setup","_ref","attrs","emit","slots","isRtl","themeClasses","borderClasses","backgroundColorClasses","backgroundColorStyles","elevationClasses","displayClasses","roundedClasses","router","isActive","v","ssrBootStyles","scopeId","rootEl","isHovering","runOpenDelay","runCloseDelay","isPersistent","isTemporary","isSticky","currentRoute","isDragging","dragProgress","el","position","layoutSize","size","layoutItemStyles","layoutItemScrimStyles","id","order","parseInt","elementSize","active","disableTransitions","absolute","isStuck","stickyStyles","scrimColor","scrimStyles","opacity","transition","undefined","VList","bgColor","hasImage","_createVNode","_Fragment","_mergeProps","class","style","alt","cover","height","src","prepend","append","onClick"],"sources":["../../../src/components/VNavigationDrawer/VNavigationDrawer.tsx"],"sourcesContent":["// Styles\nimport './VNavigationDrawer.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { useSticky } from './sticky'\nimport { useTouch } from './touch'\nimport { useRtl } from '@/composables'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDelayProps, useDelay } from '@/composables/delay'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, nextTick, readonly, ref, shallowRef, toRef, Transition, watch } from 'vue'\nimport { genericComponent, propsFactory, toPhysical, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VNavigationDrawerImageSlot = {\n image: string | undefined\n}\n\nexport type VNavigationDrawerSlots = {\n default: never\n prepend: never\n append: never\n image: VNavigationDrawerImageSlot\n}\n\nconst locations = ['start', 'end', 'left', 'right', 'top', 'bottom'] as const\n\nexport const makeVNavigationDrawerProps = propsFactory({\n color: String,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n modelValue: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n permanent: Boolean,\n rail: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n railWidth: {\n type: [Number, String],\n default: 56,\n },\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n image: String,\n temporary: Boolean,\n persistent: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n location: {\n type: String as PropType<typeof locations[number]>,\n default: 'start',\n validator: (value: any) => locations.includes(value),\n },\n sticky: Boolean,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDelayProps(),\n ...makeDisplayProps({ mobile: null }),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n}, 'VNavigationDrawer')\n\nexport const VNavigationDrawer = genericComponent<VNavigationDrawerSlots>()({\n name: 'VNavigationDrawer',\n\n props: makeVNavigationDrawerProps(),\n\n emits: {\n 'update:modelValue': (val: boolean) => true,\n 'update:rail': (val: boolean) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color)\n const { elevationClasses } = useElevation(props)\n const { displayClasses, mobile } = useDisplay(props)\n const { roundedClasses } = useRounded(props)\n const router = useRouter()\n const isActive = useProxiedModel(props, 'modelValue', null, v => !!v)\n const { ssrBootStyles } = useSsrBoot()\n const { scopeId } = useScopeId()\n\n const rootEl = ref<HTMLElement>()\n const isHovering = shallowRef(false)\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n isHovering.value = value\n })\n\n const width = computed(() => {\n return (props.rail && props.expandOnHover && isHovering.value)\n ? Number(props.width)\n : Number(props.rail ? props.railWidth : props.width)\n })\n const location = computed(() => {\n return toPhysical(props.location, isRtl.value) as 'left' | 'right' | 'bottom'\n })\n const isPersistent = toRef(() => props.persistent)\n const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary))\n const isSticky = computed(() =>\n props.sticky &&\n !isTemporary.value &&\n location.value !== 'bottom'\n )\n\n useToggleScope(() => props.expandOnHover && props.rail != null, () => {\n watch(isHovering, val => emit('update:rail', !val))\n })\n\n useToggleScope(() => !props.disableResizeWatcher, () => {\n watch(isTemporary, val => !props.permanent && (nextTick(() => isActive.value = !val)))\n })\n\n useToggleScope(() => !props.disableRouteWatcher && !!router, () => {\n watch(router!.currentRoute, () => isTemporary.value && (isActive.value = false))\n })\n\n watch(() => props.permanent, val => {\n if (val) isActive.value = true\n })\n\n if (props.modelValue == null && !isTemporary.value) {\n isActive.value = props.permanent || !mobile.value\n }\n\n const { isDragging, dragProgress } = useTouch({\n el: rootEl,\n isActive,\n isTemporary,\n width,\n touchless: toRef(() => props.touchless),\n position: location,\n })\n\n const layoutSize = computed(() => {\n const size = isTemporary.value ? 0\n : props.rail && props.expandOnHover ? Number(props.railWidth)\n : width.value\n\n return isDragging.value ? size * dragProgress.value : size\n })\n const { layoutItemStyles, layoutItemScrimStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: location,\n layoutSize,\n elementSize: width,\n active: readonly(isActive),\n disableTransitions: toRef(() => isDragging.value),\n absolute: computed(() =>\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n props.absolute || (isSticky.value && typeof isStuck.value !== 'string')\n ),\n })\n\n const { isStuck, stickyStyles } = useSticky({ rootEl, isSticky, layoutItemStyles })\n\n const scrimColor = useBackgroundColor(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n })\n const scrimStyles = computed(() => ({\n ...isDragging.value ? {\n opacity: dragProgress.value * 0.2,\n transition: 'none',\n } : undefined,\n ...layoutItemScrimStyles.value,\n }))\n\n provideDefaults({\n VList: {\n bgColor: 'transparent',\n },\n })\n\n useRender(() => {\n const hasImage = (slots.image || props.image)\n\n return (\n <>\n <props.tag\n ref={ rootEl }\n onMouseenter={ runOpenDelay }\n onMouseleave={ runCloseDelay }\n class={[\n 'v-navigation-drawer',\n `v-navigation-drawer--${location.value}`,\n {\n 'v-navigation-drawer--expand-on-hover': props.expandOnHover,\n 'v-navigation-drawer--floating': props.floating,\n 'v-navigation-drawer--is-hovering': isHovering.value,\n 'v-navigation-drawer--rail': props.rail,\n 'v-navigation-drawer--temporary': isTemporary.value,\n 'v-navigation-drawer--persistent': isPersistent.value,\n 'v-navigation-drawer--active': isActive.value,\n 'v-navigation-drawer--sticky': isSticky.value,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n displayClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n layoutItemStyles.value,\n ssrBootStyles.value,\n stickyStyles.value,\n props.style,\n ]}\n { ...scopeId }\n { ...attrs }\n >\n { hasImage && (\n <div key=\"image\" class=\"v-navigation-drawer__img\">\n { !slots.image ? (\n <VImg\n key=\"image-img\"\n alt=\"\"\n cover\n height=\"inherit\"\n src={ props.image }\n />\n ) : (\n <VDefaultsProvider\n key=\"image-defaults\"\n disabled={ !props.image }\n defaults={{\n VImg: {\n alt: '',\n cover: true,\n height: 'inherit',\n src: props.image,\n },\n }}\n v-slots:default={ slots.image }\n />\n )}\n </div>\n )}\n\n { slots.prepend && (\n <div class=\"v-navigation-drawer__prepend\">\n { slots.prepend?.() }\n </div>\n )}\n\n <div class=\"v-navigation-drawer__content\">\n { slots.default?.() }\n </div>\n\n { slots.append && (\n <div class=\"v-navigation-drawer__append\">\n { slots.append?.() }\n </div>\n )}\n </props.tag>\n\n <Transition name=\"fade-transition\">\n { isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && (\n <div\n class={['v-navigation-drawer__scrim', scrimColor.backgroundColorClasses.value]}\n style={[scrimStyles.value, scrimColor.backgroundColorStyles.value]}\n onClick={ () => {\n if (isPersistent.value) return\n isActive.value = false\n }}\n { ...scopeId }\n />\n )}\n </Transition>\n </>\n )\n })\n\n return {\n isStuck,\n }\n },\n})\n\nexport type VNavigationDrawer = InstanceType<typeof VNavigationDrawer>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VNavigationDrawer.js","names":["VDefaultsProvider","VImg","useSticky","useTouch","useRtl","makeBorderProps","useBorder","useBackgroundColor","makeComponentProps","provideDefaults","makeDelayProps","useDelay","makeDisplayProps","useDisplay","makeElevationProps","useElevation","makeLayoutItemProps","useLayoutItem","useProxiedModel","makeRoundedProps","useRounded","useRouter","useScopeId","useSsrBoot","makeTagProps","makeThemeProps","provideTheme","useToggleScope","computed","nextTick","readonly","ref","shallowRef","toRef","Transition","watch","genericComponent","propsFactory","toPhysical","useRender","locations","makeVNavigationDrawerProps","color","String","disableResizeWatcher","Boolean","disableRouteWatcher","expandOnHover","floating","modelValue","type","default","permanent","rail","railWidth","Number","scrim","image","temporary","persistent","touchless","width","location","validator","value","includes","sticky","mobile","tag","VNavigationDrawer","name","props","emits","val","setup","_ref","attrs","emit","slots","isRtl","themeClasses","borderClasses","backgroundColorClasses","backgroundColorStyles","elevationClasses","displayClasses","roundedClasses","router","isActive","v","ssrBootStyles","scopeId","rootEl","isHovering","runOpenDelay","runCloseDelay","isPersistent","isTemporary","isSticky","currentRoute","isDragging","dragProgress","el","position","layoutSize","size","layoutItemStyles","layoutItemScrimStyles","id","order","parseInt","elementSize","active","disableTransitions","absolute","isStuck","stickyStyles","scrimColor","scrimStyles","opacity","transition","undefined","VList","bgColor","hasImage","_createElementVNode","_Fragment","_createVNode","_mergeProps","class","style","alt","cover","height","src","prepend","append","onClick"],"sources":["../../../src/components/VNavigationDrawer/VNavigationDrawer.tsx"],"sourcesContent":["// Styles\nimport './VNavigationDrawer.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { useSticky } from './sticky'\nimport { useTouch } from './touch'\nimport { useRtl } from '@/composables'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDelayProps, useDelay } from '@/composables/delay'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useSsrBoot } from '@/composables/ssrBoot'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, nextTick, readonly, ref, shallowRef, toRef, Transition, watch } from 'vue'\nimport { genericComponent, propsFactory, toPhysical, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VNavigationDrawerImageSlot = {\n image: string | undefined\n}\n\nexport type VNavigationDrawerSlots = {\n default: never\n prepend: never\n append: never\n image: VNavigationDrawerImageSlot\n}\n\nconst locations = ['start', 'end', 'left', 'right', 'top', 'bottom'] as const\n\nexport const makeVNavigationDrawerProps = propsFactory({\n color: String,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n modelValue: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n permanent: Boolean,\n rail: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n railWidth: {\n type: [Number, String],\n default: 56,\n },\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n image: String,\n temporary: Boolean,\n persistent: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n location: {\n type: String as PropType<typeof locations[number]>,\n default: 'start',\n validator: (value: any) => locations.includes(value),\n },\n sticky: Boolean,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDelayProps(),\n ...makeDisplayProps({ mobile: null }),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n}, 'VNavigationDrawer')\n\nexport const VNavigationDrawer = genericComponent<VNavigationDrawerSlots>()({\n name: 'VNavigationDrawer',\n\n props: makeVNavigationDrawerProps(),\n\n emits: {\n 'update:modelValue': (val: boolean) => true,\n 'update:rail': (val: boolean) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color)\n const { elevationClasses } = useElevation(props)\n const { displayClasses, mobile } = useDisplay(props)\n const { roundedClasses } = useRounded(props)\n const router = useRouter()\n const isActive = useProxiedModel(props, 'modelValue', null, v => !!v)\n const { ssrBootStyles } = useSsrBoot()\n const { scopeId } = useScopeId()\n\n const rootEl = ref<HTMLElement>()\n const isHovering = shallowRef(false)\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n isHovering.value = value\n })\n\n const width = computed(() => {\n return (props.rail && props.expandOnHover && isHovering.value)\n ? Number(props.width)\n : Number(props.rail ? props.railWidth : props.width)\n })\n const location = computed(() => {\n return toPhysical(props.location, isRtl.value) as 'left' | 'right' | 'bottom'\n })\n const isPersistent = toRef(() => props.persistent)\n const isTemporary = computed(() => !props.permanent && (mobile.value || props.temporary))\n const isSticky = computed(() =>\n props.sticky &&\n !isTemporary.value &&\n location.value !== 'bottom'\n )\n\n useToggleScope(() => props.expandOnHover && props.rail != null, () => {\n watch(isHovering, val => emit('update:rail', !val))\n })\n\n useToggleScope(() => !props.disableResizeWatcher, () => {\n watch(isTemporary, val => !props.permanent && (nextTick(() => isActive.value = !val)))\n })\n\n useToggleScope(() => !props.disableRouteWatcher && !!router, () => {\n watch(router!.currentRoute, () => isTemporary.value && (isActive.value = false))\n })\n\n watch(() => props.permanent, val => {\n if (val) isActive.value = true\n })\n\n if (props.modelValue == null && !isTemporary.value) {\n isActive.value = props.permanent || !mobile.value\n }\n\n const { isDragging, dragProgress } = useTouch({\n el: rootEl,\n isActive,\n isTemporary,\n width,\n touchless: toRef(() => props.touchless),\n position: location,\n })\n\n const layoutSize = computed(() => {\n const size = isTemporary.value ? 0\n : props.rail && props.expandOnHover ? Number(props.railWidth)\n : width.value\n\n return isDragging.value ? size * dragProgress.value : size\n })\n const { layoutItemStyles, layoutItemScrimStyles } = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: location,\n layoutSize,\n elementSize: width,\n active: readonly(isActive),\n disableTransitions: toRef(() => isDragging.value),\n absolute: computed(() =>\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n props.absolute || (isSticky.value && typeof isStuck.value !== 'string')\n ),\n })\n\n const { isStuck, stickyStyles } = useSticky({ rootEl, isSticky, layoutItemStyles })\n\n const scrimColor = useBackgroundColor(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n })\n const scrimStyles = computed(() => ({\n ...isDragging.value ? {\n opacity: dragProgress.value * 0.2,\n transition: 'none',\n } : undefined,\n ...layoutItemScrimStyles.value,\n }))\n\n provideDefaults({\n VList: {\n bgColor: 'transparent',\n },\n })\n\n useRender(() => {\n const hasImage = (slots.image || props.image)\n\n return (\n <>\n <props.tag\n ref={ rootEl }\n onMouseenter={ runOpenDelay }\n onMouseleave={ runCloseDelay }\n class={[\n 'v-navigation-drawer',\n `v-navigation-drawer--${location.value}`,\n {\n 'v-navigation-drawer--expand-on-hover': props.expandOnHover,\n 'v-navigation-drawer--floating': props.floating,\n 'v-navigation-drawer--is-hovering': isHovering.value,\n 'v-navigation-drawer--rail': props.rail,\n 'v-navigation-drawer--temporary': isTemporary.value,\n 'v-navigation-drawer--persistent': isPersistent.value,\n 'v-navigation-drawer--active': isActive.value,\n 'v-navigation-drawer--sticky': isSticky.value,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n displayClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n layoutItemStyles.value,\n ssrBootStyles.value,\n stickyStyles.value,\n props.style,\n ]}\n { ...scopeId }\n { ...attrs }\n >\n { hasImage && (\n <div key=\"image\" class=\"v-navigation-drawer__img\">\n { !slots.image ? (\n <VImg\n key=\"image-img\"\n alt=\"\"\n cover\n height=\"inherit\"\n src={ props.image }\n />\n ) : (\n <VDefaultsProvider\n key=\"image-defaults\"\n disabled={ !props.image }\n defaults={{\n VImg: {\n alt: '',\n cover: true,\n height: 'inherit',\n src: props.image,\n },\n }}\n v-slots:default={ slots.image }\n />\n )}\n </div>\n )}\n\n { slots.prepend && (\n <div class=\"v-navigation-drawer__prepend\">\n { slots.prepend?.() }\n </div>\n )}\n\n <div class=\"v-navigation-drawer__content\">\n { slots.default?.() }\n </div>\n\n { slots.append && (\n <div class=\"v-navigation-drawer__append\">\n { slots.append?.() }\n </div>\n )}\n </props.tag>\n\n <Transition name=\"fade-transition\">\n { isTemporary.value && (isDragging.value || isActive.value) && !!props.scrim && (\n <div\n class={['v-navigation-drawer__scrim', scrimColor.backgroundColorClasses.value]}\n style={[scrimStyles.value, scrimColor.backgroundColorStyles.value]}\n onClick={ () => {\n if (isPersistent.value) return\n isActive.value = false\n }}\n { ...scopeId }\n />\n )}\n </Transition>\n </>\n )\n })\n\n return {\n isStuck,\n }\n },\n})\n\nexport type VNavigationDrawer = InstanceType<typeof VNavigationDrawer>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB;AAAA,SACjBC,IAAI,4BAEb;AAAA,SACSC,SAAS;AAAA,SACTC,QAAQ;AAAA,SACRC,MAAM;AAAA,SACNC,eAAe,EAAEC,SAAS;AAAA,SAC1BC,kBAAkB;AAAA,SAClBC,kBAAkB;AAAA,SAClBC,eAAe;AAAA,SACfC,cAAc,EAAEC,QAAQ;AAAA,SACxBC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,mBAAmB,EAAEC,aAAa;AAAA,SAClCC,eAAe;AAAA,SACfC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,SAAS;AAAA,SACTC,UAAU;AAAA,SACVC,UAAU;AAAA,SACVC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY;AAAA,SAC5BC,cAAc,4CAEvB;AACA,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,UAAU,EAAEC,KAAK,EAAEC,UAAU,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACpFC,gBAAgB,EAAEC,YAAY,EAAEC,UAAU,EAAEC,SAAS,+BAE9D;AAcA,MAAMC,SAAS,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAU;AAE7E,OAAO,MAAMC,0BAA0B,GAAGJ,YAAY,CAAC;EACrDK,KAAK,EAAEC,MAAM;EACbC,oBAAoB,EAAEC,OAAO;EAC7BC,mBAAmB,EAAED,OAAO;EAC5BE,aAAa,EAAEF,OAAO;EACtBG,QAAQ,EAAEH,OAAO;EACjBI,UAAU,EAAE;IACVC,IAAI,EAAEL,OAAmC;IACzCM,OAAO,EAAE;EACX,CAAC;EACDC,SAAS,EAAEP,OAAO;EAClBQ,IAAI,EAAE;IACJH,IAAI,EAAEL,OAAmC;IACzCM,OAAO,EAAE;EACX,CAAC;EACDG,SAAS,EAAE;IACTJ,IAAI,EAAE,CAACK,MAAM,EAAEZ,MAAM,CAAC;IACtBQ,OAAO,EAAE;EACX,CAAC;EACDK,KAAK,EAAE;IACLN,IAAI,EAAE,CAACL,OAAO,EAAEF,MAAM,CAAC;IACvBQ,OAAO,EAAE;EACX,CAAC;EACDM,KAAK,EAAEd,MAAM;EACbe,SAAS,EAAEb,OAAO;EAClBc,UAAU,EAAEd,OAAO;EACnBe,SAAS,EAAEf,OAAO;EAClBgB,KAAK,EAAE;IACLX,IAAI,EAAE,CAACK,MAAM,EAAEZ,MAAM,CAAC;IACtBQ,OAAO,EAAE;EACX,CAAC;EACDW,QAAQ,EAAE;IACRZ,IAAI,EAAEP,MAA4C;IAClDQ,OAAO,EAAE,OAAO;IAChBY,SAAS,EAAGC,KAAU,IAAKxB,SAAS,CAACyB,QAAQ,CAACD,KAAK;EACrD,CAAC;EACDE,MAAM,EAAErB,OAAO;EAEf,GAAGxC,eAAe,CAAC,CAAC;EACpB,GAAGG,kBAAkB,CAAC,CAAC;EACvB,GAAGE,cAAc,CAAC,CAAC;EACnB,GAAGE,gBAAgB,CAAC;IAAEuD,MAAM,EAAE;EAAK,CAAC,CAAC;EACrC,GAAGrD,kBAAkB,CAAC,CAAC;EACvB,GAAGE,mBAAmB,CAAC,CAAC;EACxB,GAAGG,gBAAgB,CAAC,CAAC;EACrB,GAAGK,YAAY,CAAC;IAAE4C,GAAG,EAAE;EAAM,CAAC,CAAC;EAC/B,GAAG3C,cAAc,CAAC;AACpB,CAAC,EAAE,mBAAmB,CAAC;AAEvB,OAAO,MAAM4C,iBAAiB,GAAGjC,gBAAgB,CAAyB,CAAC,CAAC;EAC1EkC,IAAI,EAAE,mBAAmB;EAEzBC,KAAK,EAAE9B,0BAA0B,CAAC,CAAC;EAEnC+B,KAAK,EAAE;IACL,mBAAmB,EAAGC,GAAY,IAAK,IAAI;IAC3C,aAAa,EAAGA,GAAY,IAAK;EACnC,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAA0B;IAAA,IAAxB;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAH,IAAA;IAClC,MAAM;MAAEI;IAAM,CAAC,GAAG3E,MAAM,CAAC,CAAC;IAC1B,MAAM;MAAE4E;IAAa,CAAC,GAAGtD,YAAY,CAAC6C,KAAK,CAAC;IAC5C,MAAM;MAAEU;IAAc,CAAC,GAAG3E,SAAS,CAACiE,KAAK,CAAC;IAC1C,MAAM;MAAEW,sBAAsB;MAAEC;IAAsB,CAAC,GAAG5E,kBAAkB,CAAC,MAAMgE,KAAK,CAAC7B,KAAK,CAAC;IAC/F,MAAM;MAAE0C;IAAiB,CAAC,GAAGrE,YAAY,CAACwD,KAAK,CAAC;IAChD,MAAM;MAAEc,cAAc;MAAElB;IAAO,CAAC,GAAGtD,UAAU,CAAC0D,KAAK,CAAC;IACpD,MAAM;MAAEe;IAAe,CAAC,GAAGlE,UAAU,CAACmD,KAAK,CAAC;IAC5C,MAAMgB,MAAM,GAAGlE,SAAS,CAAC,CAAC;IAC1B,MAAMmE,QAAQ,GAAGtE,eAAe,CAACqD,KAAK,EAAE,YAAY,EAAE,IAAI,EAAEkB,CAAC,IAAI,CAAC,CAACA,CAAC,CAAC;IACrE,MAAM;MAAEC;IAAc,CAAC,GAAGnE,UAAU,CAAC,CAAC;IACtC,MAAM;MAAEoE;IAAQ,CAAC,GAAGrE,UAAU,CAAC,CAAC;IAEhC,MAAMsE,MAAM,GAAG7D,GAAG,CAAc,CAAC;IACjC,MAAM8D,UAAU,GAAG7D,UAAU,CAAC,KAAK,CAAC;IAEpC,MAAM;MAAE8D,YAAY;MAAEC;IAAc,CAAC,GAAGpF,QAAQ,CAAC4D,KAAK,EAAEP,KAAK,IAAI;MAC/D6B,UAAU,CAAC7B,KAAK,GAAGA,KAAK;IAC1B,CAAC,CAAC;IAEF,MAAMH,KAAK,GAAGjC,QAAQ,CAAC,MAAM;MAC3B,OAAQ2C,KAAK,CAAClB,IAAI,IAAIkB,KAAK,CAACxB,aAAa,IAAI8C,UAAU,CAAC7B,KAAK,GACzDT,MAAM,CAACgB,KAAK,CAACV,KAAK,CAAC,GACnBN,MAAM,CAACgB,KAAK,CAAClB,IAAI,GAAGkB,KAAK,CAACjB,SAAS,GAAGiB,KAAK,CAACV,KAAK,CAAC;IACxD,CAAC,CAAC;IACF,MAAMC,QAAQ,GAAGlC,QAAQ,CAAC,MAAM;MAC9B,OAAOU,UAAU,CAACiC,KAAK,CAACT,QAAQ,EAAEiB,KAAK,CAACf,KAAK,CAAC;IAChD,CAAC,CAAC;IACF,MAAMgC,YAAY,GAAG/D,KAAK,CAAC,MAAMsC,KAAK,CAACZ,UAAU,CAAC;IAClD,MAAMsC,WAAW,GAAGrE,QAAQ,CAAC,MAAM,CAAC2C,KAAK,CAACnB,SAAS,KAAKe,MAAM,CAACH,KAAK,IAAIO,KAAK,CAACb,SAAS,CAAC,CAAC;IACzF,MAAMwC,QAAQ,GAAGtE,QAAQ,CAAC,MACxB2C,KAAK,CAACL,MAAM,IACZ,CAAC+B,WAAW,CAACjC,KAAK,IAClBF,QAAQ,CAACE,KAAK,KAAK,QACrB,CAAC;IAEDrC,cAAc,CAAC,MAAM4C,KAAK,CAACxB,aAAa,IAAIwB,KAAK,CAAClB,IAAI,IAAI,IAAI,EAAE,MAAM;MACpElB,KAAK,CAAC0D,UAAU,EAAEpB,GAAG,IAAII,IAAI,CAAC,aAAa,EAAE,CAACJ,GAAG,CAAC,CAAC;IACrD,CAAC,CAAC;IAEF9C,cAAc,CAAC,MAAM,CAAC4C,KAAK,CAAC3B,oBAAoB,EAAE,MAAM;MACtDT,KAAK,CAAC8D,WAAW,EAAExB,GAAG,IAAI,CAACF,KAAK,CAACnB,SAAS,IAAKvB,QAAQ,CAAC,MAAM2D,QAAQ,CAACxB,KAAK,GAAG,CAACS,GAAG,CAAE,CAAC;IACxF,CAAC,CAAC;IAEF9C,cAAc,CAAC,MAAM,CAAC4C,KAAK,CAACzB,mBAAmB,IAAI,CAAC,CAACyC,MAAM,EAAE,MAAM;MACjEpD,KAAK,CAACoD,MAAM,CAAEY,YAAY,EAAE,MAAMF,WAAW,CAACjC,KAAK,KAAKwB,QAAQ,CAACxB,KAAK,GAAG,KAAK,CAAC,CAAC;IAClF,CAAC,CAAC;IAEF7B,KAAK,CAAC,MAAMoC,KAAK,CAACnB,SAAS,EAAEqB,GAAG,IAAI;MAClC,IAAIA,GAAG,EAAEe,QAAQ,CAACxB,KAAK,GAAG,IAAI;IAChC,CAAC,CAAC;IAEF,IAAIO,KAAK,CAACtB,UAAU,IAAI,IAAI,IAAI,CAACgD,WAAW,CAACjC,KAAK,EAAE;MAClDwB,QAAQ,CAACxB,KAAK,GAAGO,KAAK,CAACnB,SAAS,IAAI,CAACe,MAAM,CAACH,KAAK;IACnD;IAEA,MAAM;MAAEoC,UAAU;MAAEC;IAAa,CAAC,GAAGlG,QAAQ,CAAC;MAC5CmG,EAAE,EAAEV,MAAM;MACVJ,QAAQ;MACRS,WAAW;MACXpC,KAAK;MACLD,SAAS,EAAE3B,KAAK,CAAC,MAAMsC,KAAK,CAACX,SAAS,CAAC;MACvC2C,QAAQ,EAAEzC;IACZ,CAAC,CAAC;IAEF,MAAM0C,UAAU,GAAG5E,QAAQ,CAAC,MAAM;MAChC,MAAM6E,IAAI,GAAGR,WAAW,CAACjC,KAAK,GAAG,CAAC,GAC9BO,KAAK,CAAClB,IAAI,IAAIkB,KAAK,CAACxB,aAAa,GAAGQ,MAAM,CAACgB,KAAK,CAACjB,SAAS,CAAC,GAC3DO,KAAK,CAACG,KAAK;MAEf,OAAOoC,UAAU,CAACpC,KAAK,GAAGyC,IAAI,GAAGJ,YAAY,CAACrC,KAAK,GAAGyC,IAAI;IAC5D,CAAC,CAAC;IACF,MAAM;MAAEC,gBAAgB;MAAEC;IAAsB,CAAC,GAAG1F,aAAa,CAAC;MAChE2F,EAAE,EAAErC,KAAK,CAACD,IAAI;MACduC,KAAK,EAAEjF,QAAQ,CAAC,MAAMkF,QAAQ,CAACvC,KAAK,CAACsC,KAAK,EAAE,EAAE,CAAC,CAAC;MAChDN,QAAQ,EAAEzC,QAAQ;MAClB0C,UAAU;MACVO,WAAW,EAAElD,KAAK;MAClBmD,MAAM,EAAElF,QAAQ,CAAC0D,QAAQ,CAAC;MAC1ByB,kBAAkB,EAAEhF,KAAK,CAAC,MAAMmE,UAAU,CAACpC,KAAK,CAAC;MACjDkD,QAAQ,EAAEtF,QAAQ,CAAC;MACjB;MACA2C,KAAK,CAAC2C,QAAQ,IAAKhB,QAAQ,CAAClC,KAAK,IAAI,OAAOmD,OAAO,CAACnD,KAAK,KAAK,QAChE;IACF,CAAC,CAAC;IAEF,MAAM;MAAEmD,OAAO;MAAEC;IAAa,CAAC,GAAGlH,SAAS,CAAC;MAAE0F,MAAM;MAAEM,QAAQ;MAAEQ;IAAiB,CAAC,CAAC;IAEnF,MAAMW,UAAU,GAAG9G,kBAAkB,CAAC,MAAM;MAC1C,OAAO,OAAOgE,KAAK,CAACf,KAAK,KAAK,QAAQ,GAAGe,KAAK,CAACf,KAAK,GAAG,IAAI;IAC7D,CAAC,CAAC;IACF,MAAM8D,WAAW,GAAG1F,QAAQ,CAAC,OAAO;MAClC,IAAGwE,UAAU,CAACpC,KAAK,GAAG;QACpBuD,OAAO,EAAElB,YAAY,CAACrC,KAAK,GAAG,GAAG;QACjCwD,UAAU,EAAE;MACd,CAAC,GAAGC,SAAS;MACb,GAAGd,qBAAqB,CAAC3C;IAC3B,CAAC,CAAC,CAAC;IAEHvD,eAAe,CAAC;MACdiH,KAAK,EAAE;QACLC,OAAO,EAAE;MACX;IACF,CAAC,CAAC;IAEFpF,SAAS,CAAC,MAAM;MACd,MAAMqF,QAAQ,GAAI9C,KAAK,CAACrB,KAAK,IAAIc,KAAK,CAACd,KAAM;MAE7C,OAAAoE,mBAAA,CAAAC,SAAA,SAAAC,YAAA,CAAAxD,KAAA,CAAAH,GAAA,EAAA4D,WAAA;QAAA,OAGYpC,MAAM;QAAA,gBACGE,YAAY;QAAA,gBACZC,aAAa;QAAA,SACrB,CACL,qBAAqB,EACrB,wBAAwBjC,QAAQ,CAACE,KAAK,EAAE,EACxC;UACE,sCAAsC,EAAEO,KAAK,CAACxB,aAAa;UAC3D,+BAA+B,EAAEwB,KAAK,CAACvB,QAAQ;UAC/C,kCAAkC,EAAE6C,UAAU,CAAC7B,KAAK;UACpD,2BAA2B,EAAEO,KAAK,CAAClB,IAAI;UACvC,gCAAgC,EAAE4C,WAAW,CAACjC,KAAK;UACnD,iCAAiC,EAAEgC,YAAY,CAAChC,KAAK;UACrD,6BAA6B,EAAEwB,QAAQ,CAACxB,KAAK;UAC7C,6BAA6B,EAAEkC,QAAQ,CAAClC;QAC1C,CAAC,EACDgB,YAAY,CAAChB,KAAK,EAClBkB,sBAAsB,CAAClB,KAAK,EAC5BiB,aAAa,CAACjB,KAAK,EACnBqB,cAAc,CAACrB,KAAK,EACpBoB,gBAAgB,CAACpB,KAAK,EACtBsB,cAAc,CAACtB,KAAK,EACpBO,KAAK,CAAC0D,KAAK,CACZ;QAAA,SACM,CACL9C,qBAAqB,CAACnB,KAAK,EAC3B0C,gBAAgB,CAAC1C,KAAK,EACtB0B,aAAa,CAAC1B,KAAK,EACnBoD,YAAY,CAACpD,KAAK,EAClBO,KAAK,CAAC2D,KAAK;MACZ,GACIvC,OAAO,EACPf,KAAK;QAAAzB,OAAA,EAAAA,CAAA,MAERyE,QAAQ,IAAAC,mBAAA;UAAA;UAAA;QAAA,IAEJ,CAAC/C,KAAK,CAACrB,KAAK,GAAAsE,YAAA,CAAA9H,IAAA;UAAA;UAAA;UAAA;UAAA;UAAA,OAMJsE,KAAK,CAACd;QAAK,WAAAsE,YAAA,CAAA/H,iBAAA;UAAA;UAAA,YAKN,CAACuE,KAAK,CAACd,KAAK;UAAA,YACb;YACRxD,IAAI,EAAE;cACJkI,GAAG,EAAE,EAAE;cACPC,KAAK,EAAE,IAAI;cACXC,MAAM,EAAE,SAAS;cACjBC,GAAG,EAAE/D,KAAK,CAACd;YACb;UACF;QAAC,GACiBqB,KAAK,CAACrB,KAAK,CAEhC,EAEJ,EAECqB,KAAK,CAACyD,OAAO,IAAAV,mBAAA;UAAA;QAAA,IAET/C,KAAK,CAACyD,OAAO,GAAG,CAAC,EAEtB,EAAAV,mBAAA;UAAA;QAAA,IAGG/C,KAAK,CAAC3B,OAAO,GAAG,CAAC,IAGnB2B,KAAK,CAAC0D,MAAM,IAAAX,mBAAA;UAAA;QAAA,IAER/C,KAAK,CAAC0D,MAAM,GAAG,CAAC,EAErB;MAAA,IAAAT,YAAA,CAAA7F,UAAA;QAAA;MAAA;QAAAiB,OAAA,EAAAA,CAAA,MAIC8C,WAAW,CAACjC,KAAK,KAAKoC,UAAU,CAACpC,KAAK,IAAIwB,QAAQ,CAACxB,KAAK,CAAC,IAAI,CAAC,CAACO,KAAK,CAACf,KAAK,IAAAqE,mBAAA,QAAAG,WAAA;UAAA,SAEjE,CAAC,4BAA4B,EAAEX,UAAU,CAACnC,sBAAsB,CAAClB,KAAK,CAAC;UAAA,SACvE,CAACsD,WAAW,CAACtD,KAAK,EAAEqD,UAAU,CAAClC,qBAAqB,CAACnB,KAAK,CAAC;UAAA,WACxDyE,CAAA,KAAM;YACd,IAAIzC,YAAY,CAAChC,KAAK,EAAE;YACxBwB,QAAQ,CAACxB,KAAK,GAAG,KAAK;UACxB;QAAC,GACI2B,OAAO,QAEf;MAAA;IAIT,CAAC,CAAC;IAEF,OAAO;MACLwB;IACF,CAAC;EACH;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
import { useToggleScope } from "../../composables/toggleScope.js";
|
|
3
3
|
import { useVelocity } from "../../composables/touch.js"; // Utilities
|
|
4
4
|
import { computed, onBeforeUnmount, onMounted, onScopeDispose, shallowRef, watchEffect } from 'vue';
|
|
5
|
-
|
|
6
|
-
// Types
|
|
7
|
-
|
|
5
|
+
import { clamp } from "../../util/index.js"; // Types
|
|
8
6
|
export function useTouch(_ref) {
|
|
9
7
|
let {
|
|
10
8
|
el,
|
|
@@ -47,7 +45,7 @@ export function useTouch(_ref) {
|
|
|
47
45
|
function getProgress(pos) {
|
|
48
46
|
let limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
49
47
|
const progress = position.value === 'left' ? (pos - offset.value) / width.value : position.value === 'right' ? (document.documentElement.clientWidth - pos - offset.value) / width.value : position.value === 'top' ? (pos - offset.value) / width.value : position.value === 'bottom' ? (document.documentElement.clientHeight - pos - offset.value) / width.value : oops();
|
|
50
|
-
return limit ?
|
|
48
|
+
return limit ? clamp(progress) : progress;
|
|
51
49
|
}
|
|
52
50
|
function onTouchstart(e) {
|
|
53
51
|
if (touchless.value) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"touch.js","names":["useToggleScope","useVelocity","computed","onBeforeUnmount","onMounted","onScopeDispose","shallowRef","watchEffect","useTouch","_ref","el","isActive","isTemporary","width","touchless","position","window","addEventListener","onTouchstart","passive","onTouchmove","onTouchend","removeEventListener","isHorizontal","includes","value","addMovement","endTouch","getVelocity","maybeDragging","isDragging","dragProgress","offset","start","getOffset","pos","active","document","documentElement","clientWidth","clientHeight","oops","getProgress","limit","arguments","length","undefined","progress","Math","max","min","e","touchX","changedTouches","clientX","touchY","clientY","touchZone","inTouchZone","inElement","cancelable","dx","abs","dy","thresholdMet","preventDefault","velocity","identifier","vx","x","vy","y","direction","left","right","top","bottom","dragStyles","transform","transition","style","setProperty","Error"],"sources":["../../../src/components/VNavigationDrawer/touch.ts"],"sourcesContent":["// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { useVelocity } from '@/composables/touch'\n\n// Utilities\nimport { computed, onBeforeUnmount, onMounted, onScopeDispose, shallowRef, watchEffect } from 'vue'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport function useTouch ({\n el,\n isActive,\n isTemporary,\n width,\n touchless,\n position,\n}: {\n el: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n isTemporary: Ref<boolean>\n width: Ref<number>\n touchless: Ref<boolean>\n position: Ref<'left' | 'right' | 'top' | 'bottom'>\n}) {\n onMounted(() => {\n window.addEventListener('touchstart', onTouchstart, { passive: true })\n window.addEventListener('touchmove', onTouchmove, { passive: false })\n window.addEventListener('touchend', onTouchend, { passive: true })\n })\n\n onBeforeUnmount(() => {\n window.removeEventListener('touchstart', onTouchstart)\n window.removeEventListener('touchmove', onTouchmove)\n window.removeEventListener('touchend', onTouchend)\n })\n\n const isHorizontal = computed(() => ['left', 'right'].includes(position.value))\n\n const { addMovement, endTouch, getVelocity } = useVelocity()\n let maybeDragging = false\n const isDragging = shallowRef(false)\n const dragProgress = shallowRef(0)\n const offset = shallowRef(0)\n let start: [number, number] | undefined\n\n function getOffset (pos: number, active: boolean): number {\n return (\n position.value === 'left' ? pos\n : position.value === 'right' ? document.documentElement.clientWidth - pos\n : position.value === 'top' ? pos\n : position.value === 'bottom' ? document.documentElement.clientHeight - pos\n : oops()\n ) - (active ? width.value : 0)\n }\n\n function getProgress (pos: number, limit = true): number {\n const progress = (\n position.value === 'left' ? (pos - offset.value) / width.value\n : position.value === 'right' ? (document.documentElement.clientWidth - pos - offset.value) / width.value\n : position.value === 'top' ? (pos - offset.value) / width.value\n : position.value === 'bottom' ? (document.documentElement.clientHeight - pos - offset.value) / width.value\n : oops()\n )\n return limit ? Math.max(0, Math.min(1, progress)) : progress\n }\n\n function onTouchstart (e: TouchEvent) {\n if (touchless.value) return\n\n const touchX = e.changedTouches[0].clientX\n const touchY = e.changedTouches[0].clientY\n\n const touchZone = 25\n const inTouchZone: boolean =\n position.value === 'left' ? touchX < touchZone\n : position.value === 'right' ? touchX > document.documentElement.clientWidth - touchZone\n : position.value === 'top' ? touchY < touchZone\n : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - touchZone\n : oops()\n\n const inElement: boolean = isActive.value && (\n position.value === 'left' ? touchX < width.value\n : position.value === 'right' ? touchX > document.documentElement.clientWidth - width.value\n : position.value === 'top' ? touchY < width.value\n : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - width.value\n : oops()\n )\n\n if (\n inTouchZone ||\n inElement ||\n (isActive.value && isTemporary.value)\n ) {\n start = [touchX, touchY]\n\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, isActive.value)\n dragProgress.value = getProgress(isHorizontal.value ? touchX : touchY)\n\n maybeDragging = offset.value > -20 && offset.value < 80\n endTouch(e)\n addMovement(e)\n }\n }\n\n function onTouchmove (e: TouchEvent) {\n const touchX = e.changedTouches[0].clientX\n const touchY = e.changedTouches[0].clientY\n\n if (maybeDragging) {\n if (!e.cancelable) {\n maybeDragging = false\n return\n }\n\n const dx = Math.abs(touchX - start![0])\n const dy = Math.abs(touchY - start![1])\n\n const thresholdMet = isHorizontal.value\n ? dx > dy && dx > 3\n : dy > dx && dy > 3\n\n if (thresholdMet) {\n isDragging.value = true\n maybeDragging = false\n } else if ((isHorizontal.value ? dy : dx) > 3) {\n maybeDragging = false\n }\n }\n\n if (!isDragging.value) return\n\n e.preventDefault()\n addMovement(e)\n\n const progress = getProgress(isHorizontal.value ? touchX : touchY, false)\n dragProgress.value = Math.max(0, Math.min(1, progress))\n\n if (progress > 1) {\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, true)\n } else if (progress < 0) {\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, false)\n }\n }\n\n function onTouchend (e: TouchEvent) {\n maybeDragging = false\n\n if (!isDragging.value) return\n\n addMovement(e)\n\n isDragging.value = false\n\n const velocity = getVelocity(e.changedTouches[0].identifier)\n const vx = Math.abs(velocity.x)\n const vy = Math.abs(velocity.y)\n const thresholdMet = isHorizontal.value\n ? vx > vy && vx > 400\n : vy > vx && vy > 3\n\n if (thresholdMet) {\n isActive.value = velocity.direction === ({\n left: 'right',\n right: 'left',\n top: 'down',\n bottom: 'up',\n }[position.value] || oops())\n } else {\n isActive.value = dragProgress.value > 0.5\n }\n }\n\n const dragStyles = computed(() => {\n return isDragging.value ? {\n transform:\n position.value === 'left' ? `translateX(calc(-100% + ${dragProgress.value * width.value}px))`\n : position.value === 'right' ? `translateX(calc(100% - ${dragProgress.value * width.value}px))`\n : position.value === 'top' ? `translateY(calc(-100% + ${dragProgress.value * width.value}px))`\n : position.value === 'bottom' ? `translateY(calc(100% - ${dragProgress.value * width.value}px))`\n : oops(),\n transition: 'none',\n } : undefined\n })\n\n useToggleScope(isDragging, () => {\n const transform = el.value?.style.transform ?? null\n const transition = el.value?.style.transition ?? null\n\n watchEffect(() => {\n el.value?.style.setProperty('transform', dragStyles.value?.transform || 'none')\n el.value?.style.setProperty('transition', dragStyles.value?.transition || null)\n })\n\n onScopeDispose(() => {\n el.value?.style.setProperty('transform', transform)\n el.value?.style.setProperty('transition', transition)\n })\n })\n\n return {\n isDragging,\n dragProgress,\n dragStyles,\n }\n}\n\nfunction oops (): never {\n throw new Error()\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"touch.js","names":["useToggleScope","useVelocity","computed","onBeforeUnmount","onMounted","onScopeDispose","shallowRef","watchEffect","clamp","useTouch","_ref","el","isActive","isTemporary","width","touchless","position","window","addEventListener","onTouchstart","passive","onTouchmove","onTouchend","removeEventListener","isHorizontal","includes","value","addMovement","endTouch","getVelocity","maybeDragging","isDragging","dragProgress","offset","start","getOffset","pos","active","document","documentElement","clientWidth","clientHeight","oops","getProgress","limit","arguments","length","undefined","progress","e","touchX","changedTouches","clientX","touchY","clientY","touchZone","inTouchZone","inElement","cancelable","dx","Math","abs","dy","thresholdMet","preventDefault","max","min","velocity","identifier","vx","x","vy","y","direction","left","right","top","bottom","dragStyles","transform","transition","style","setProperty","Error"],"sources":["../../../src/components/VNavigationDrawer/touch.ts"],"sourcesContent":["// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { useVelocity } from '@/composables/touch'\n\n// Utilities\nimport { computed, onBeforeUnmount, onMounted, onScopeDispose, shallowRef, watchEffect } from 'vue'\nimport { clamp } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nexport function useTouch ({\n el,\n isActive,\n isTemporary,\n width,\n touchless,\n position,\n}: {\n el: Ref<HTMLElement | undefined>\n isActive: Ref<boolean>\n isTemporary: Ref<boolean>\n width: Ref<number>\n touchless: Ref<boolean>\n position: Ref<'left' | 'right' | 'top' | 'bottom'>\n}) {\n onMounted(() => {\n window.addEventListener('touchstart', onTouchstart, { passive: true })\n window.addEventListener('touchmove', onTouchmove, { passive: false })\n window.addEventListener('touchend', onTouchend, { passive: true })\n })\n\n onBeforeUnmount(() => {\n window.removeEventListener('touchstart', onTouchstart)\n window.removeEventListener('touchmove', onTouchmove)\n window.removeEventListener('touchend', onTouchend)\n })\n\n const isHorizontal = computed(() => ['left', 'right'].includes(position.value))\n\n const { addMovement, endTouch, getVelocity } = useVelocity()\n let maybeDragging = false\n const isDragging = shallowRef(false)\n const dragProgress = shallowRef(0)\n const offset = shallowRef(0)\n let start: [number, number] | undefined\n\n function getOffset (pos: number, active: boolean): number {\n return (\n position.value === 'left' ? pos\n : position.value === 'right' ? document.documentElement.clientWidth - pos\n : position.value === 'top' ? pos\n : position.value === 'bottom' ? document.documentElement.clientHeight - pos\n : oops()\n ) - (active ? width.value : 0)\n }\n\n function getProgress (pos: number, limit = true): number {\n const progress = (\n position.value === 'left' ? (pos - offset.value) / width.value\n : position.value === 'right' ? (document.documentElement.clientWidth - pos - offset.value) / width.value\n : position.value === 'top' ? (pos - offset.value) / width.value\n : position.value === 'bottom' ? (document.documentElement.clientHeight - pos - offset.value) / width.value\n : oops()\n )\n return limit ? clamp(progress) : progress\n }\n\n function onTouchstart (e: TouchEvent) {\n if (touchless.value) return\n\n const touchX = e.changedTouches[0].clientX\n const touchY = e.changedTouches[0].clientY\n\n const touchZone = 25\n const inTouchZone: boolean =\n position.value === 'left' ? touchX < touchZone\n : position.value === 'right' ? touchX > document.documentElement.clientWidth - touchZone\n : position.value === 'top' ? touchY < touchZone\n : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - touchZone\n : oops()\n\n const inElement: boolean = isActive.value && (\n position.value === 'left' ? touchX < width.value\n : position.value === 'right' ? touchX > document.documentElement.clientWidth - width.value\n : position.value === 'top' ? touchY < width.value\n : position.value === 'bottom' ? touchY > document.documentElement.clientHeight - width.value\n : oops()\n )\n\n if (\n inTouchZone ||\n inElement ||\n (isActive.value && isTemporary.value)\n ) {\n start = [touchX, touchY]\n\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, isActive.value)\n dragProgress.value = getProgress(isHorizontal.value ? touchX : touchY)\n\n maybeDragging = offset.value > -20 && offset.value < 80\n endTouch(e)\n addMovement(e)\n }\n }\n\n function onTouchmove (e: TouchEvent) {\n const touchX = e.changedTouches[0].clientX\n const touchY = e.changedTouches[0].clientY\n\n if (maybeDragging) {\n if (!e.cancelable) {\n maybeDragging = false\n return\n }\n\n const dx = Math.abs(touchX - start![0])\n const dy = Math.abs(touchY - start![1])\n\n const thresholdMet = isHorizontal.value\n ? dx > dy && dx > 3\n : dy > dx && dy > 3\n\n if (thresholdMet) {\n isDragging.value = true\n maybeDragging = false\n } else if ((isHorizontal.value ? dy : dx) > 3) {\n maybeDragging = false\n }\n }\n\n if (!isDragging.value) return\n\n e.preventDefault()\n addMovement(e)\n\n const progress = getProgress(isHorizontal.value ? touchX : touchY, false)\n dragProgress.value = Math.max(0, Math.min(1, progress))\n\n if (progress > 1) {\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, true)\n } else if (progress < 0) {\n offset.value = getOffset(isHorizontal.value ? touchX : touchY, false)\n }\n }\n\n function onTouchend (e: TouchEvent) {\n maybeDragging = false\n\n if (!isDragging.value) return\n\n addMovement(e)\n\n isDragging.value = false\n\n const velocity = getVelocity(e.changedTouches[0].identifier)\n const vx = Math.abs(velocity.x)\n const vy = Math.abs(velocity.y)\n const thresholdMet = isHorizontal.value\n ? vx > vy && vx > 400\n : vy > vx && vy > 3\n\n if (thresholdMet) {\n isActive.value = velocity.direction === ({\n left: 'right',\n right: 'left',\n top: 'down',\n bottom: 'up',\n }[position.value] || oops())\n } else {\n isActive.value = dragProgress.value > 0.5\n }\n }\n\n const dragStyles = computed(() => {\n return isDragging.value ? {\n transform:\n position.value === 'left' ? `translateX(calc(-100% + ${dragProgress.value * width.value}px))`\n : position.value === 'right' ? `translateX(calc(100% - ${dragProgress.value * width.value}px))`\n : position.value === 'top' ? `translateY(calc(-100% + ${dragProgress.value * width.value}px))`\n : position.value === 'bottom' ? `translateY(calc(100% - ${dragProgress.value * width.value}px))`\n : oops(),\n transition: 'none',\n } : undefined\n })\n\n useToggleScope(isDragging, () => {\n const transform = el.value?.style.transform ?? null\n const transition = el.value?.style.transition ?? null\n\n watchEffect(() => {\n el.value?.style.setProperty('transform', dragStyles.value?.transform || 'none')\n el.value?.style.setProperty('transition', dragStyles.value?.transition || null)\n })\n\n onScopeDispose(() => {\n el.value?.style.setProperty('transform', transform)\n el.value?.style.setProperty('transition', transition)\n })\n })\n\n return {\n isDragging,\n dragProgress,\n dragStyles,\n }\n}\n\nfunction oops (): never {\n throw new Error()\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createVNode as _createVNode, Fragment as _Fragment, mergeProps as _mergeProps } from "vue";
|
|
1
|
+
import { createVNode as _createVNode, createElementVNode as _createElementVNode, Fragment as _Fragment, mergeProps as _mergeProps } from "vue";
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VNumberInput.css";
|
|
4
4
|
|
|
@@ -13,7 +13,7 @@ import { useForm } from "../../composables/form.js";
|
|
|
13
13
|
import { forwardRefs } from "../../composables/forwardRefs.js";
|
|
14
14
|
import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
|
|
15
15
|
import { computed, nextTick, onMounted, ref, shallowRef, toRef, watch, watchEffect } from 'vue';
|
|
16
|
-
import { clamp, genericComponent, omit, propsFactory, useRender } from "../../util/index.js"; // Types
|
|
16
|
+
import { clamp, extractNumber, genericComponent, omit, propsFactory, useRender } from "../../util/index.js"; // Types
|
|
17
17
|
const makeVNumberInputProps = propsFactory({
|
|
18
18
|
controlVariant: {
|
|
19
19
|
type: String,
|
|
@@ -117,14 +117,16 @@ export const VNumberInput = genericComponent()({
|
|
|
117
117
|
props: {
|
|
118
118
|
onClick: onControlClick,
|
|
119
119
|
onPointerup: onControlMouseup,
|
|
120
|
-
onPointerdown: onUpControlMousedown
|
|
120
|
+
onPointerdown: onUpControlMousedown,
|
|
121
|
+
onPointercancel: onControlPointerCancel
|
|
121
122
|
}
|
|
122
123
|
};
|
|
123
124
|
const decrementSlotProps = {
|
|
124
125
|
props: {
|
|
125
126
|
onClick: onControlClick,
|
|
126
127
|
onPointerup: onControlMouseup,
|
|
127
|
-
onPointerdown: onDownControlMousedown
|
|
128
|
+
onPointerdown: onDownControlMousedown,
|
|
129
|
+
onPointercancel: onControlPointerCancel
|
|
128
130
|
}
|
|
129
131
|
};
|
|
130
132
|
watch(() => props.precision, () => formatInputValue());
|
|
@@ -154,25 +156,33 @@ export const VNumberInput = genericComponent()({
|
|
|
154
156
|
}
|
|
155
157
|
function onBeforeinput(e) {
|
|
156
158
|
if (!e.data) return;
|
|
157
|
-
const
|
|
158
|
-
const
|
|
159
|
-
|
|
159
|
+
const inputElement = e.target;
|
|
160
|
+
const {
|
|
161
|
+
value: existingTxt,
|
|
162
|
+
selectionStart,
|
|
163
|
+
selectionEnd
|
|
164
|
+
} = inputElement ?? {};
|
|
160
165
|
const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;
|
|
166
|
+
const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision);
|
|
167
|
+
|
|
161
168
|
// Only numbers, "-", "." are allowed
|
|
162
169
|
// AND "-", "." are allowed only once
|
|
163
170
|
// AND "-" is only allowed at the start
|
|
164
171
|
if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
|
|
165
172
|
e.preventDefault();
|
|
173
|
+
inputElement.value = potentialNewNumber;
|
|
166
174
|
}
|
|
167
175
|
if (props.precision == null) return;
|
|
168
176
|
|
|
169
177
|
// Ignore decimal digits above precision limit
|
|
170
178
|
if (potentialNewInputVal.split('.')[1]?.length > props.precision) {
|
|
171
179
|
e.preventDefault();
|
|
180
|
+
inputElement.value = potentialNewNumber;
|
|
172
181
|
}
|
|
173
182
|
// Ignore decimal separator when precision = 0
|
|
174
183
|
if (props.precision === 0 && potentialNewInputVal.includes('.')) {
|
|
175
184
|
e.preventDefault();
|
|
185
|
+
inputElement.value = potentialNewNumber;
|
|
176
186
|
}
|
|
177
187
|
}
|
|
178
188
|
async function onKeydown(e) {
|
|
@@ -213,6 +223,11 @@ export const VNumberInput = genericComponent()({
|
|
|
213
223
|
e.stopPropagation();
|
|
214
224
|
holdStart('down');
|
|
215
225
|
}
|
|
226
|
+
function onControlPointerCancel(e) {
|
|
227
|
+
const el = e.currentTarget;
|
|
228
|
+
el?.releasePointerCapture(e.pointerId);
|
|
229
|
+
holdStop();
|
|
230
|
+
}
|
|
216
231
|
function clampModel() {
|
|
217
232
|
if (controlsDisabled.value) return;
|
|
218
233
|
if (!vTextFieldRef.value) return;
|
|
@@ -254,16 +269,17 @@ export const VNumberInput = genericComponent()({
|
|
|
254
269
|
} = VTextField.filterProps(props);
|
|
255
270
|
function incrementControlNode() {
|
|
256
271
|
return !slots.increment ? _createVNode(VBtn, {
|
|
272
|
+
"aria-hidden": "true",
|
|
273
|
+
"data-testid": "increment",
|
|
257
274
|
"disabled": !canIncrease.value,
|
|
258
275
|
"flat": true,
|
|
259
|
-
"key": "increment-btn",
|
|
260
276
|
"height": controlNodeDefaultHeight.value,
|
|
261
|
-
"data-testid": "increment",
|
|
262
|
-
"aria-hidden": "true",
|
|
263
277
|
"icon": incrementIcon.value,
|
|
278
|
+
"key": "increment-btn",
|
|
264
279
|
"onClick": onControlClick,
|
|
265
|
-
"onPointerup": onControlMouseup,
|
|
266
280
|
"onPointerdown": onUpControlMousedown,
|
|
281
|
+
"onPointerup": onControlMouseup,
|
|
282
|
+
"onPointercancel": onControlPointerCancel,
|
|
267
283
|
"size": controlNodeSize.value,
|
|
268
284
|
"tabindex": "-1"
|
|
269
285
|
}, null) : _createVNode(VDefaultsProvider, {
|
|
@@ -283,18 +299,19 @@ export const VNumberInput = genericComponent()({
|
|
|
283
299
|
}
|
|
284
300
|
function decrementControlNode() {
|
|
285
301
|
return !slots.decrement ? _createVNode(VBtn, {
|
|
302
|
+
"aria-hidden": "true",
|
|
303
|
+
"data-testid": "decrement",
|
|
286
304
|
"disabled": !canDecrease.value,
|
|
287
305
|
"flat": true,
|
|
288
|
-
"key": "decrement-btn",
|
|
289
306
|
"height": controlNodeDefaultHeight.value,
|
|
290
|
-
"data-testid": "decrement",
|
|
291
|
-
"aria-hidden": "true",
|
|
292
307
|
"icon": decrementIcon.value,
|
|
293
|
-
"
|
|
294
|
-
"tabindex": "-1",
|
|
308
|
+
"key": "decrement-btn",
|
|
295
309
|
"onClick": onControlClick,
|
|
310
|
+
"onPointerdown": onDownControlMousedown,
|
|
296
311
|
"onPointerup": onControlMouseup,
|
|
297
|
-
"
|
|
312
|
+
"onPointercancel": onControlPointerCancel,
|
|
313
|
+
"size": controlNodeSize.value,
|
|
314
|
+
"tabindex": "-1"
|
|
298
315
|
}, null) : _createVNode(VDefaultsProvider, {
|
|
299
316
|
"key": "decrement-defaults",
|
|
300
317
|
"defaults": {
|
|
@@ -311,7 +328,7 @@ export const VNumberInput = genericComponent()({
|
|
|
311
328
|
});
|
|
312
329
|
}
|
|
313
330
|
function controlNode() {
|
|
314
|
-
return
|
|
331
|
+
return _createElementVNode("div", {
|
|
315
332
|
"class": "v-number-input__control"
|
|
316
333
|
}, [decrementControlNode(), _createVNode(VDivider, {
|
|
317
334
|
"vertical": controlVariant.value !== 'stacked'
|
|
@@ -322,17 +339,17 @@ export const VNumberInput = genericComponent()({
|
|
|
322
339
|
"vertical": true
|
|
323
340
|
}, null) : undefined;
|
|
324
341
|
}
|
|
325
|
-
const appendInnerControl = controlVariant.value === 'split' ?
|
|
342
|
+
const appendInnerControl = controlVariant.value === 'split' ? _createElementVNode("div", {
|
|
326
343
|
"class": "v-number-input__control"
|
|
327
344
|
}, [_createVNode(VDivider, {
|
|
328
345
|
"vertical": true
|
|
329
|
-
}, null), incrementControlNode()]) : props.reverse || controlVariant.value === 'hidden' ? undefined :
|
|
346
|
+
}, null), incrementControlNode()]) : props.reverse || controlVariant.value === 'hidden' ? undefined : _createElementVNode(_Fragment, null, [dividerNode(), controlNode()]);
|
|
330
347
|
const hasAppendInner = slots['append-inner'] || appendInnerControl;
|
|
331
|
-
const prependInnerControl = controlVariant.value === 'split' ?
|
|
348
|
+
const prependInnerControl = controlVariant.value === 'split' ? _createElementVNode("div", {
|
|
332
349
|
"class": "v-number-input__control"
|
|
333
350
|
}, [decrementControlNode(), _createVNode(VDivider, {
|
|
334
351
|
"vertical": true
|
|
335
|
-
}, null)]) : props.reverse && controlVariant.value !== 'hidden' ?
|
|
352
|
+
}, null)]) : props.reverse && controlVariant.value !== 'hidden' ? _createElementVNode(_Fragment, null, [controlNode(), dividerNode()]) : undefined;
|
|
336
353
|
const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
|
|
337
354
|
return _createVNode(VTextField, _mergeProps({
|
|
338
355
|
"ref": vTextFieldRef,
|
|
@@ -360,13 +377,13 @@ export const VNumberInput = genericComponent()({
|
|
|
360
377
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
361
378
|
args[_key] = arguments[_key];
|
|
362
379
|
}
|
|
363
|
-
return
|
|
380
|
+
return _createElementVNode(_Fragment, null, [slots['append-inner']?.(...args), appendInnerControl]);
|
|
364
381
|
} : undefined,
|
|
365
382
|
'prepend-inner': hasPrependInner ? function () {
|
|
366
383
|
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
367
384
|
args[_key2] = arguments[_key2];
|
|
368
385
|
}
|
|
369
|
-
return
|
|
386
|
+
return _createElementVNode(_Fragment, null, [prependInnerControl, slots['prepend-inner']?.(...args)]);
|
|
370
387
|
} : undefined
|
|
371
388
|
});
|
|
372
389
|
});
|