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":"VFileInput.js","names":["VChip","VCounter","VField","makeVFieldProps","makeVInputProps","VInput","useFocus","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","shallowRef","toRef","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","propsFactory","useRender","wrapInArray","makeVFileInputProps","chips","Boolean","counter","counterSizeString","type","String","default","counterString","hideInput","multiple","showSize","Number","validator","v","includes","prependIcon","modelValue","Array","Object","props","val","every","clearable","VFileInput","name","inheritAttrs","emits","e","focused","files","setup","_ref","attrs","emit","slots","t","model","isArray","isFocused","focus","blur","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","counterValue","fileCount","length","vInputRef","vFieldRef","inputRef","isActive","active","isPlainOrUnderlined","variant","isDragging","onFocus","document","activeElement","onClickPrepend","click","onControlMousedown","onControlClick","onClear","stopPropagation","onDragover","preventDefault","stopImmediatePropagation","onDragleave","onDrop","dataTransfer","DataTransfer","items","add","dispatchEvent","Event","bubbles","newValue","hasModelReset","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref4","fieldClass","slotProps","_Fragment","target","selection","text","join","disabled"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\nimport { makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, shallowRef, toRef, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: never\n selection: {\n fileNames: string[]\n totalBytes: number\n totalBytesReadable: string\n }\n}\n\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(Number(v))\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: [Array, Object] as PropType<File[] | File | null>,\n default: (props: any) => props.multiple ? [] : null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeVFieldProps({ clearable: true }),\n}, 'VFileInput')\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: makeVFileInputProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File | File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (!props.multiple && Array.isArray(val)) ? val[0] : val,\n )\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n\n return !props.showSize\n ? name\n : `${name} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = toRef(() => isFocused.value || props.active)\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n const isDragging = shallowRef(false)\n\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n inputRef.value?.click()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onDragover (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = true\n }\n function onDragleave (e: DragEvent) {\n e.preventDefault()\n isDragging.value = false\n }\n function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = false\n\n if (!e.dataTransfer?.files?.length || !inputRef.value) return\n\n const dataTransfer = new DataTransfer()\n\n for (const file of e.dataTransfer.files) {\n dataTransfer.items.add(file)\n }\n\n inputRef.value.files = dataTransfer.files\n inputRef.value.dispatchEvent(new Event('change', { bubbles: true }))\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n const fieldProps = VField.filterProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n modelValue={ props.multiple ? model.value : model.value[0] }\n class={[\n 'v-file-input',\n {\n 'v-file-input--chips': !!props.chips,\n 'v-file-input--dragging': isDragging.value,\n 'v-file-input--hide': props.hideInput,\n 'v-input--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n onClick:prepend={ onClickPrepend }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n prepend-icon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n onDragover={ onDragover }\n onDrop={ onDrop }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n if (isReadonly.value) e.preventDefault()\n\n onFocus()\n }}\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n onDragleave={ onDragleave }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && !props.hideInput && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n text={ text }\n />\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n disabled={ props.disabled }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VFileInput.js","names":["VChip","VCounter","VField","makeVFieldProps","makeVInputProps","VInput","useFocus","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","shallowRef","toRef","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","propsFactory","useRender","wrapInArray","makeVFileInputProps","chips","Boolean","counter","counterSizeString","type","String","default","counterString","hideInput","multiple","showSize","Number","validator","v","includes","prependIcon","modelValue","Array","Object","props","val","every","clearable","VFileInput","name","inheritAttrs","emits","e","focused","files","setup","_ref","attrs","emit","slots","t","model","isArray","isFocused","focus","blur","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","counterValue","fileCount","length","vInputRef","vFieldRef","inputRef","isActive","active","isPlainOrUnderlined","variant","isDragging","onFocus","document","activeElement","onClickPrepend","click","onControlMousedown","onControlClick","onClear","stopPropagation","onDragover","preventDefault","stopImmediatePropagation","onDragleave","onDrop","dataTransfer","DataTransfer","items","add","dispatchEvent","Event","bubbles","newValue","hasModelReset","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref4","fieldClass","slotProps","_createElementVNode","_Fragment","target","_normalizeClass","selection","text","join","disabled"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\nimport { makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, shallowRef, toRef, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: never\n selection: {\n fileNames: string[]\n totalBytes: number\n totalBytesReadable: string\n }\n}\n\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(Number(v))\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: [Array, Object] as PropType<File[] | File | null>,\n default: (props: any) => props.multiple ? [] : null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeVFieldProps({ clearable: true }),\n}, 'VFileInput')\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: makeVFileInputProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File | File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (!props.multiple && Array.isArray(val)) ? val[0] : val,\n )\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n\n return !props.showSize\n ? name\n : `${name} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = toRef(() => isFocused.value || props.active)\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n const isDragging = shallowRef(false)\n\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n inputRef.value?.click()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onDragover (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = true\n }\n function onDragleave (e: DragEvent) {\n e.preventDefault()\n isDragging.value = false\n }\n function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = false\n\n if (!e.dataTransfer?.files?.length || !inputRef.value) return\n\n const dataTransfer = new DataTransfer()\n\n for (const file of e.dataTransfer.files) {\n dataTransfer.items.add(file)\n }\n\n inputRef.value.files = dataTransfer.files\n inputRef.value.dispatchEvent(new Event('change', { bubbles: true }))\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n const fieldProps = VField.filterProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n modelValue={ props.multiple ? model.value : model.value[0] }\n class={[\n 'v-file-input',\n {\n 'v-file-input--chips': !!props.chips,\n 'v-file-input--dragging': isDragging.value,\n 'v-file-input--hide': props.hideInput,\n 'v-input--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n onClick:prepend={ onClickPrepend }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n prepend-icon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n onDragover={ onDragover }\n onDrop={ onDrop }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n if (isReadonly.value) e.preventDefault()\n\n onFocus()\n }}\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n onDragleave={ onDragleave }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && !props.hideInput && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n text={ text }\n />\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n disabled={ props.disabled }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createVNode as _createVNode } from "vue";
|
|
1
|
+
import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createVNode as _createVNode } from "vue";
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VFooter.css";
|
|
4
4
|
|
|
@@ -80,10 +80,10 @@ export const VFooter = genericComponent()({
|
|
|
80
80
|
});
|
|
81
81
|
useRender(() => _createVNode(props.tag, {
|
|
82
82
|
"ref": resizeRef,
|
|
83
|
-
"class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
|
|
84
|
-
"style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : {
|
|
83
|
+
"class": _normalizeClass(['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class]),
|
|
84
|
+
"style": _normalizeStyle([backgroundColorStyles.value, props.app ? layoutItemStyles.value : {
|
|
85
85
|
height: convertToUnit(props.height)
|
|
86
|
-
}, props.style]
|
|
86
|
+
}, props.style])
|
|
87
87
|
}, slots));
|
|
88
88
|
return {};
|
|
89
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VFooter.js","names":["makeBorderProps","useBorder","useBackgroundColor","makeComponentProps","makeElevationProps","useElevation","makeLayoutItemProps","useLayoutItem","useResizeObserver","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","useToggleScope","computed","ref","shallowRef","toRef","watchEffect","convertToUnit","genericComponent","propsFactory","useRender","makeVFooterProps","app","Boolean","color","String","height","type","Number","default","tag","VFooter","name","props","setup","_ref","slots","layoutItemStyles","themeClasses","backgroundColorClasses","backgroundColorStyles","borderClasses","elevationClasses","roundedClasses","autoHeight","resizeRef","entries","length","value","target","clientHeight","parseInt","layout","id","order","position","layoutSize","elementSize","undefined","active","absolute","_createVNode","class","style"],"sources":["../../../src/components/VFooter/VFooter.tsx"],"sourcesContent":["// Styles\nimport './VFooter.sass'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVFooterProps = propsFactory({\n app: Boolean,\n color: String,\n height: {\n type: [Number, String],\n default: 'auto',\n },\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'footer' }),\n ...makeThemeProps(),\n}, 'VFooter')\n\nexport const VFooter = genericComponent()({\n name: 'VFooter',\n\n props: makeVFooterProps(),\n\n setup (props, { slots }) {\n const layoutItemStyles = ref()\n\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color)\n const { borderClasses } = useBorder(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n\n const autoHeight = shallowRef(32)\n const { resizeRef } = useResizeObserver(entries => {\n if (!entries.length) return\n autoHeight.value = entries[0].target.clientHeight\n })\n const height = computed(() => props.height === 'auto' ? autoHeight.value : parseInt(props.height, 10))\n\n useToggleScope(() => props.app, () => {\n const layout = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(() => 'bottom'),\n layoutSize: height,\n elementSize: computed(() => props.height === 'auto' ? undefined : height.value),\n active: toRef(() => props.app),\n absolute: toRef(() => props.absolute),\n })\n\n watchEffect(() => {\n layoutItemStyles.value = layout.layoutItemStyles.value\n })\n })\n\n useRender(() => (\n <props.tag\n ref={ resizeRef }\n class={[\n 'v-footer',\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n props.app ? layoutItemStyles.value : {\n height: convertToUnit(props.height),\n },\n props.style,\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VFooter = InstanceType<typeof VFooter>\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"VFooter.js","names":["makeBorderProps","useBorder","useBackgroundColor","makeComponentProps","makeElevationProps","useElevation","makeLayoutItemProps","useLayoutItem","useResizeObserver","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","useToggleScope","computed","ref","shallowRef","toRef","watchEffect","convertToUnit","genericComponent","propsFactory","useRender","makeVFooterProps","app","Boolean","color","String","height","type","Number","default","tag","VFooter","name","props","setup","_ref","slots","layoutItemStyles","themeClasses","backgroundColorClasses","backgroundColorStyles","borderClasses","elevationClasses","roundedClasses","autoHeight","resizeRef","entries","length","value","target","clientHeight","parseInt","layout","id","order","position","layoutSize","elementSize","undefined","active","absolute","_createVNode","_normalizeClass","class","_normalizeStyle","style"],"sources":["../../../src/components/VFooter/VFooter.tsx"],"sourcesContent":["// Styles\nimport './VFooter.sass'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVFooterProps = propsFactory({\n app: Boolean,\n color: String,\n height: {\n type: [Number, String],\n default: 'auto',\n },\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeLayoutItemProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'footer' }),\n ...makeThemeProps(),\n}, 'VFooter')\n\nexport const VFooter = genericComponent()({\n name: 'VFooter',\n\n props: makeVFooterProps(),\n\n setup (props, { slots }) {\n const layoutItemStyles = ref()\n\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color)\n const { borderClasses } = useBorder(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n\n const autoHeight = shallowRef(32)\n const { resizeRef } = useResizeObserver(entries => {\n if (!entries.length) return\n autoHeight.value = entries[0].target.clientHeight\n })\n const height = computed(() => props.height === 'auto' ? autoHeight.value : parseInt(props.height, 10))\n\n useToggleScope(() => props.app, () => {\n const layout = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position: toRef(() => 'bottom'),\n layoutSize: height,\n elementSize: computed(() => props.height === 'auto' ? undefined : height.value),\n active: toRef(() => props.app),\n absolute: toRef(() => props.absolute),\n })\n\n watchEffect(() => {\n layoutItemStyles.value = layout.layoutItemStyles.value\n })\n })\n\n useRender(() => (\n <props.tag\n ref={ resizeRef }\n class={[\n 'v-footer',\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n props.app ? layoutItemStyles.value : {\n height: convertToUnit(props.height),\n },\n props.style,\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VFooter = InstanceType<typeof VFooter>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode } from "vue";
|
|
2
2
|
// Composables
|
|
3
3
|
import { makeComponentProps } from "../../composables/component.js";
|
|
4
4
|
import { createForm, makeFormProps } from "../../composables/form.js";
|
|
@@ -46,10 +46,10 @@ export const VForm = genericComponent()({
|
|
|
46
46
|
}
|
|
47
47
|
e.preventDefault();
|
|
48
48
|
}
|
|
49
|
-
useRender(() =>
|
|
49
|
+
useRender(() => _createElementVNode("form", {
|
|
50
50
|
"ref": formRef,
|
|
51
|
-
"class": ['v-form', props.class],
|
|
52
|
-
"style": props.style,
|
|
51
|
+
"class": _normalizeClass(['v-form', props.class]),
|
|
52
|
+
"style": _normalizeStyle(props.style),
|
|
53
53
|
"novalidate": true,
|
|
54
54
|
"onReset": onReset,
|
|
55
55
|
"onSubmit": onSubmit
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VForm.js","names":["makeComponentProps","createForm","makeFormProps","forwardRefs","ref","genericComponent","propsFactory","useRender","makeVFormProps","VForm","name","props","emits","val","submit","e","setup","_ref","slots","emit","form","formRef","onReset","preventDefault","reset","onSubmit","_e","ready","validate","then","bind","catch","finally","defaultPrevented","_ref2","valid","value","
|
|
1
|
+
{"version":3,"file":"VForm.js","names":["makeComponentProps","createForm","makeFormProps","forwardRefs","ref","genericComponent","propsFactory","useRender","makeVFormProps","VForm","name","props","emits","val","submit","e","setup","_ref","slots","emit","form","formRef","onReset","preventDefault","reset","onSubmit","_e","ready","validate","then","bind","catch","finally","defaultPrevented","_ref2","valid","value","_createElementVNode","_normalizeClass","class","_normalizeStyle","style","default"],"sources":["../../../src/components/VForm/VForm.tsx"],"sourcesContent":["// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { createForm, makeFormProps } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\n\n// Utilities\nimport { ref } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { SubmitEventPromise } from '@/composables/form'\n\nexport const makeVFormProps = propsFactory({\n ...makeComponentProps(),\n ...makeFormProps(),\n}, 'VForm')\n\ntype VFormSlots = {\n default: ReturnType<typeof createForm>\n}\n\nexport const VForm = genericComponent<VFormSlots>()({\n name: 'VForm',\n\n props: makeVFormProps(),\n\n emits: {\n 'update:modelValue': (val: boolean | null) => true,\n submit: (e: SubmitEventPromise) => true,\n },\n\n setup (props, { slots, emit }) {\n const form = createForm(props)\n const formRef = ref<HTMLFormElement>()\n\n function onReset (e: Event) {\n e.preventDefault()\n form.reset()\n }\n\n function onSubmit (_e: Event) {\n const e = _e as SubmitEventPromise\n\n const ready = form.validate()\n e.then = ready.then.bind(ready)\n e.catch = ready.catch.bind(ready)\n e.finally = ready.finally.bind(ready)\n\n emit('submit', e)\n\n if (!e.defaultPrevented) {\n ready.then(({ valid }) => {\n if (valid) {\n formRef.value?.submit()\n }\n })\n }\n\n e.preventDefault()\n }\n\n useRender(() => ((\n <form\n ref={ formRef }\n class={[\n 'v-form',\n props.class,\n ]}\n style={ props.style }\n novalidate\n onReset={ onReset }\n onSubmit={ onSubmit }\n >\n { slots.default?.(form) }\n </form>\n )))\n\n return forwardRefs(form, formRef)\n },\n})\n\nexport type VForm = InstanceType<typeof VForm>\n"],"mappings":";AAAA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,UAAU,EAAEC,aAAa;AAAA,SACzBC,WAAW,4CAEpB;AACA,SAASC,GAAG,QAAQ,KAAK;AAAA,SAChBC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,+BAElD;AAGA,OAAO,MAAMC,cAAc,GAAGF,YAAY,CAAC;EACzC,GAAGN,kBAAkB,CAAC,CAAC;EACvB,GAAGE,aAAa,CAAC;AACnB,CAAC,EAAE,OAAO,CAAC;AAMX,OAAO,MAAMO,KAAK,GAAGJ,gBAAgB,CAAa,CAAC,CAAC;EAClDK,IAAI,EAAE,OAAO;EAEbC,KAAK,EAAEH,cAAc,CAAC,CAAC;EAEvBI,KAAK,EAAE;IACL,mBAAmB,EAAGC,GAAmB,IAAK,IAAI;IAClDC,MAAM,EAAGC,CAAqB,IAAK;EACrC,CAAC;EAEDC,KAAKA,CAAEL,KAAK,EAAAM,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC3B,MAAMG,IAAI,GAAGnB,UAAU,CAACU,KAAK,CAAC;IAC9B,MAAMU,OAAO,GAAGjB,GAAG,CAAkB,CAAC;IAEtC,SAASkB,OAAOA,CAAEP,CAAQ,EAAE;MAC1BA,CAAC,CAACQ,cAAc,CAAC,CAAC;MAClBH,IAAI,CAACI,KAAK,CAAC,CAAC;IACd;IAEA,SAASC,QAAQA,CAAEC,EAAS,EAAE;MAC5B,MAAMX,CAAC,GAAGW,EAAwB;MAElC,MAAMC,KAAK,GAAGP,IAAI,CAACQ,QAAQ,CAAC,CAAC;MAC7Bb,CAAC,CAACc,IAAI,GAAGF,KAAK,CAACE,IAAI,CAACC,IAAI,CAACH,KAAK,CAAC;MAC/BZ,CAAC,CAACgB,KAAK,GAAGJ,KAAK,CAACI,KAAK,CAACD,IAAI,CAACH,KAAK,CAAC;MACjCZ,CAAC,CAACiB,OAAO,GAAGL,KAAK,CAACK,OAAO,CAACF,IAAI,CAACH,KAAK,CAAC;MAErCR,IAAI,CAAC,QAAQ,EAAEJ,CAAC,CAAC;MAEjB,IAAI,CAACA,CAAC,CAACkB,gBAAgB,EAAE;QACvBN,KAAK,CAACE,IAAI,CAACK,KAAA,IAAe;UAAA,IAAd;YAAEC;UAAM,CAAC,GAAAD,KAAA;UACnB,IAAIC,KAAK,EAAE;YACTd,OAAO,CAACe,KAAK,EAAEtB,MAAM,CAAC,CAAC;UACzB;QACF,CAAC,CAAC;MACJ;MAEAC,CAAC,CAACQ,cAAc,CAAC,CAAC;IACpB;IAEAhB,SAAS,CAAC,MAAA8B,mBAAA;MAAA,OAEAhB,OAAO;MAAA,SAAAiB,eAAA,CACN,CACL,QAAQ,EACR3B,KAAK,CAAC4B,KAAK,CACZ;MAAA,SAAAC,eAAA,CACO7B,KAAK,CAAC8B,KAAK;MAAA;MAAA,WAETnB,OAAO;MAAA,YACNG;IAAQ,IAEjBP,KAAK,CAACwB,OAAO,GAAGtB,IAAI,CAAC,EAEzB,CAAC;IAEH,OAAOjB,WAAW,CAACiB,IAAI,EAAEC,OAAO,CAAC;EACnC;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createVNode as _createVNode } from "vue";
|
|
1
|
+
import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createVNode as _createVNode } from "vue";
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VGrid.css";
|
|
4
4
|
|
|
@@ -31,10 +31,10 @@ export const VContainer = genericComponent()({
|
|
|
31
31
|
dimensionStyles
|
|
32
32
|
} = useDimension(props);
|
|
33
33
|
useRender(() => _createVNode(props.tag, {
|
|
34
|
-
"class": ['v-container', {
|
|
34
|
+
"class": _normalizeClass(['v-container', {
|
|
35
35
|
'v-container--fluid': props.fluid
|
|
36
|
-
}, rtlClasses.value, props.class],
|
|
37
|
-
"style": [dimensionStyles.value, props.style]
|
|
36
|
+
}, rtlClasses.value, props.class]),
|
|
37
|
+
"style": _normalizeStyle([dimensionStyles.value, props.style])
|
|
38
38
|
}, slots));
|
|
39
39
|
return {};
|
|
40
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VContainer.js","names":["makeComponentProps","makeDimensionProps","useDimension","useRtl","makeTagProps","genericComponent","propsFactory","useRender","makeVContainerProps","fluid","type","Boolean","default","VContainer","name","props","setup","_ref","slots","rtlClasses","dimensionStyles","_createVNode","tag","value","class","style"],"sources":["../../../src/components/VGrid/VContainer.tsx"],"sourcesContent":["// Styles\nimport './VGrid.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useRtl } from '@/composables/locale'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVContainerProps = propsFactory({\n fluid: {\n type: Boolean,\n default: false,\n },\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps(),\n}, 'VContainer')\n\nexport const VContainer = genericComponent()({\n name: 'VContainer',\n\n props: makeVContainerProps(),\n\n setup (props, { slots }) {\n const { rtlClasses } = useRtl()\n const { dimensionStyles } = useDimension(props)\n\n useRender(() => (\n <props.tag\n class={[\n 'v-container',\n { 'v-container--fluid': props.fluid },\n rtlClasses.value,\n props.class,\n ]}\n style={[\n dimensionStyles.value,\n props.style,\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VContainer = InstanceType<typeof VContainer>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,MAAM;AAAA,SACNC,YAAY,oCAErB;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AAElD,OAAO,MAAMC,mBAAmB,GAAGF,YAAY,CAAC;EAC9CG,KAAK,EAAE;IACLC,IAAI,EAAEC,OAAO;IACbC,OAAO,EAAE;EACX,CAAC;EAED,GAAGZ,kBAAkB,CAAC,CAAC;EACvB,GAAGC,kBAAkB,CAAC,CAAC;EACvB,GAAGG,YAAY,CAAC;AAClB,CAAC,EAAE,YAAY,CAAC;AAEhB,OAAO,MAAMS,UAAU,GAAGR,gBAAgB,CAAC,CAAC,CAAC;EAC3CS,IAAI,EAAE,YAAY;EAElBC,KAAK,EAAEP,mBAAmB,CAAC,CAAC;EAE5BQ,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAW,CAAC,GAAGhB,MAAM,CAAC,CAAC;IAC/B,MAAM;MAAEiB;IAAgB,CAAC,GAAGlB,YAAY,CAACa,KAAK,CAAC;IAE/CR,SAAS,CAAC,MAAAc,YAAA,CAAAN,KAAA,CAAAO,GAAA;MAAA,
|
|
1
|
+
{"version":3,"file":"VContainer.js","names":["makeComponentProps","makeDimensionProps","useDimension","useRtl","makeTagProps","genericComponent","propsFactory","useRender","makeVContainerProps","fluid","type","Boolean","default","VContainer","name","props","setup","_ref","slots","rtlClasses","dimensionStyles","_createVNode","tag","_normalizeClass","value","class","_normalizeStyle","style"],"sources":["../../../src/components/VGrid/VContainer.tsx"],"sourcesContent":["// Styles\nimport './VGrid.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useRtl } from '@/composables/locale'\nimport { makeTagProps } from '@/composables/tag'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVContainerProps = propsFactory({\n fluid: {\n type: Boolean,\n default: false,\n },\n\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeTagProps(),\n}, 'VContainer')\n\nexport const VContainer = genericComponent()({\n name: 'VContainer',\n\n props: makeVContainerProps(),\n\n setup (props, { slots }) {\n const { rtlClasses } = useRtl()\n const { dimensionStyles } = useDimension(props)\n\n useRender(() => (\n <props.tag\n class={[\n 'v-container',\n { 'v-container--fluid': props.fluid },\n rtlClasses.value,\n props.class,\n ]}\n style={[\n dimensionStyles.value,\n props.style,\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VContainer = InstanceType<typeof VContainer>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,MAAM;AAAA,SACNC,YAAY,oCAErB;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AAElD,OAAO,MAAMC,mBAAmB,GAAGF,YAAY,CAAC;EAC9CG,KAAK,EAAE;IACLC,IAAI,EAAEC,OAAO;IACbC,OAAO,EAAE;EACX,CAAC;EAED,GAAGZ,kBAAkB,CAAC,CAAC;EACvB,GAAGC,kBAAkB,CAAC,CAAC;EACvB,GAAGG,YAAY,CAAC;AAClB,CAAC,EAAE,YAAY,CAAC;AAEhB,OAAO,MAAMS,UAAU,GAAGR,gBAAgB,CAAC,CAAC,CAAC;EAC3CS,IAAI,EAAE,YAAY;EAElBC,KAAK,EAAEP,mBAAmB,CAAC,CAAC;EAE5BQ,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEE;IAAW,CAAC,GAAGhB,MAAM,CAAC,CAAC;IAC/B,MAAM;MAAEiB;IAAgB,CAAC,GAAGlB,YAAY,CAACa,KAAK,CAAC;IAE/CR,SAAS,CAAC,MAAAc,YAAA,CAAAN,KAAA,CAAAO,GAAA;MAAA,SAAAC,eAAA,CAEC,CACL,aAAa,EACb;QAAE,oBAAoB,EAAER,KAAK,CAACN;MAAM,CAAC,EACrCU,UAAU,CAACK,KAAK,EAChBT,KAAK,CAACU,KAAK,CACZ;MAAA,SAAAC,eAAA,CACM,CACLN,eAAe,CAACI,KAAK,EACrBT,KAAK,CAACY,KAAK,CACZ;IAAA,GACST,KAAK,CAElB,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createVNode as _createVNode } from "vue";
|
|
1
|
+
import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createVNode as _createVNode } from "vue";
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VIcon.css";
|
|
4
4
|
|
|
@@ -56,19 +56,19 @@ export const VIcon = genericComponent()({
|
|
|
56
56
|
return _createVNode(iconData.value.component, {
|
|
57
57
|
"tag": props.tag,
|
|
58
58
|
"icon": iconData.value.icon,
|
|
59
|
-
"class": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
|
|
59
|
+
"class": _normalizeClass(['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {
|
|
60
60
|
'v-icon--clickable': hasClick,
|
|
61
61
|
'v-icon--disabled': props.disabled,
|
|
62
62
|
'v-icon--start': props.start,
|
|
63
63
|
'v-icon--end': props.end
|
|
64
|
-
}, props.class],
|
|
65
|
-
"style": [{
|
|
64
|
+
}, props.class]),
|
|
65
|
+
"style": _normalizeStyle([{
|
|
66
66
|
'--v-icon-opacity': props.opacity
|
|
67
67
|
}, !sizeClasses.value ? {
|
|
68
68
|
fontSize: convertToUnit(props.size),
|
|
69
69
|
height: convertToUnit(props.size),
|
|
70
70
|
width: convertToUnit(props.size)
|
|
71
|
-
} : undefined, textColorStyles.value, props.style],
|
|
71
|
+
} : undefined, textColorStyles.value, props.style]),
|
|
72
72
|
"role": hasClick ? 'button' : undefined,
|
|
73
73
|
"aria-hidden": !hasClick,
|
|
74
74
|
"tabindex": hasClick ? props.disabled ? -1 : 0 : undefined
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VIcon.js","names":["useTextColor","makeComponentProps","IconValue","useIcon","makeSizeProps","useSize","makeTagProps","makeThemeProps","useTheme","shallowRef","Text","convertToUnit","flattenFragments","genericComponent","propsFactory","useRender","makeVIconProps","color","String","disabled","Boolean","start","end","icon","opacity","Number","tag","VIcon","name","props","setup","_ref","attrs","slots","slotIcon","themeClasses","iconData","value","sizeClasses","textColorClasses","textColorStyles","slotValue","default","filter","node","type","children","hasClick","onClick","onClickOnce","_createVNode","component","class","fontSize","size","height","width","undefined","style"],"sources":["../../../src/components/VIcon/VIcon.tsx"],"sourcesContent":["// Styles\nimport './VIcon.sass'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue, useIcon } from '@/composables/icons'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, useTheme } from '@/composables/theme'\n\n// Utilities\nimport { shallowRef, Text } from 'vue'\nimport { convertToUnit, flattenFragments, genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVIconProps = propsFactory({\n color: String,\n disabled: Boolean,\n start: Boolean,\n end: Boolean,\n icon: IconValue,\n opacity: [String, Number],\n\n ...makeComponentProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'i' }),\n ...makeThemeProps(),\n}, 'VIcon')\n\nexport const VIcon = genericComponent()({\n name: 'VIcon',\n\n props: makeVIconProps(),\n\n setup (props, { attrs, slots }) {\n const slotIcon = shallowRef<string>()\n\n const { themeClasses } = useTheme()\n const { iconData } = useIcon(() => slotIcon.value || props.icon)\n const { sizeClasses } = useSize(props)\n const { textColorClasses, textColorStyles } = useTextColor(() => props.color)\n\n useRender(() => {\n const slotValue = slots.default?.()\n if (slotValue) {\n slotIcon.value = flattenFragments(slotValue).filter(node =>\n node.type === Text && node.children && typeof node.children === 'string'\n )[0]?.children as string\n }\n const hasClick = !!(attrs.onClick || attrs.onClickOnce)\n\n return (\n <iconData.value.component\n tag={ props.tag }\n icon={ iconData.value.icon }\n class={[\n 'v-icon',\n 'notranslate',\n themeClasses.value,\n sizeClasses.value,\n textColorClasses.value,\n {\n 'v-icon--clickable': hasClick,\n 'v-icon--disabled': props.disabled,\n 'v-icon--start': props.start,\n 'v-icon--end': props.end,\n },\n props.class,\n ]}\n style={[\n {\n '--v-icon-opacity': props.opacity,\n },\n !sizeClasses.value ? ({\n fontSize: convertToUnit(props.size),\n height: convertToUnit(props.size),\n width: convertToUnit(props.size),\n }) : undefined,\n textColorStyles.value,\n props.style,\n ]}\n role={ hasClick ? 'button' : undefined }\n aria-hidden={ !hasClick }\n tabindex={ hasClick ? props.disabled ? -1 : 0 : undefined }\n >\n { slotValue }\n </iconData.value.component>\n )\n })\n\n return {}\n },\n})\n\nexport type VIcon = InstanceType<typeof VIcon>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,YAAY;AAAA,SACZC,kBAAkB;AAAA,SAClBC,SAAS,EAAEC,OAAO;AAAA,SAClBC,aAAa,EAAEC,OAAO;AAAA,SACtBC,YAAY;AAAA,SACZC,cAAc,EAAEC,QAAQ,sCAEjC;AACA,SAASC,UAAU,EAAEC,IAAI,QAAQ,KAAK;AAAA,SAC7BC,aAAa,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AAEnF,OAAO,MAAMC,cAAc,GAAGF,YAAY,CAAC;EACzCG,KAAK,EAAEC,MAAM;EACbC,QAAQ,EAAEC,OAAO;EACjBC,KAAK,EAAED,OAAO;EACdE,GAAG,EAAEF,OAAO;EACZG,IAAI,EAAErB,SAAS;EACfsB,OAAO,EAAE,CAACN,MAAM,EAAEO,MAAM,CAAC;EAEzB,GAAGxB,kBAAkB,CAAC,CAAC;EACvB,GAAGG,aAAa,CAAC,CAAC;EAClB,GAAGE,YAAY,CAAC;IAAEoB,GAAG,EAAE;EAAI,CAAC,CAAC;EAC7B,GAAGnB,cAAc,CAAC;AACpB,CAAC,EAAE,OAAO,CAAC;AAEX,OAAO,MAAMoB,KAAK,GAAGd,gBAAgB,CAAC,CAAC,CAAC;EACtCe,IAAI,EAAE,OAAO;EAEbC,KAAK,EAAEb,cAAc,CAAC,CAAC;EAEvBc,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAoB;IAAA,IAAlB;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC5B,MAAMG,QAAQ,GAAGzB,UAAU,CAAS,CAAC;IAErC,MAAM;MAAE0B;IAAa,CAAC,GAAG3B,QAAQ,CAAC,CAAC;IACnC,MAAM;MAAE4B;IAAS,CAAC,GAAGjC,OAAO,CAAC,MAAM+B,QAAQ,CAACG,KAAK,IAAIR,KAAK,CAACN,IAAI,CAAC;IAChE,MAAM;MAAEe;IAAY,CAAC,GAAGjC,OAAO,CAACwB,KAAK,CAAC;IACtC,MAAM;MAAEU,gBAAgB;MAAEC;IAAgB,CAAC,GAAGxC,YAAY,CAAC,MAAM6B,KAAK,CAACZ,KAAK,CAAC;IAE7EF,SAAS,CAAC,MAAM;MACd,MAAM0B,SAAS,GAAGR,KAAK,CAACS,OAAO,GAAG,CAAC;MACnC,IAAID,SAAS,EAAE;QACbP,QAAQ,CAACG,KAAK,GAAGzB,gBAAgB,CAAC6B,SAAS,CAAC,CAACE,MAAM,CAACC,IAAI,IACtDA,IAAI,CAACC,IAAI,KAAKnC,IAAI,IAAIkC,IAAI,CAACE,QAAQ,IAAI,OAAOF,IAAI,CAACE,QAAQ,KAAK,QAClE,CAAC,CAAC,CAAC,CAAC,EAAEA,QAAkB;MAC1B;MACA,MAAMC,QAAQ,GAAG,CAAC,EAAEf,KAAK,CAACgB,OAAO,IAAIhB,KAAK,CAACiB,WAAW,CAAC;MAEvD,OAAAC,YAAA,CAAAd,QAAA,CAAAC,KAAA,CAAAc,SAAA;QAAA,OAEUtB,KAAK,CAACH,GAAG;QAAA,QACRU,QAAQ,CAACC,KAAK,CAACd,IAAI;QAAA,
|
|
1
|
+
{"version":3,"file":"VIcon.js","names":["useTextColor","makeComponentProps","IconValue","useIcon","makeSizeProps","useSize","makeTagProps","makeThemeProps","useTheme","shallowRef","Text","convertToUnit","flattenFragments","genericComponent","propsFactory","useRender","makeVIconProps","color","String","disabled","Boolean","start","end","icon","opacity","Number","tag","VIcon","name","props","setup","_ref","attrs","slots","slotIcon","themeClasses","iconData","value","sizeClasses","textColorClasses","textColorStyles","slotValue","default","filter","node","type","children","hasClick","onClick","onClickOnce","_createVNode","component","_normalizeClass","class","_normalizeStyle","fontSize","size","height","width","undefined","style"],"sources":["../../../src/components/VIcon/VIcon.tsx"],"sourcesContent":["// Styles\nimport './VIcon.sass'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue, useIcon } from '@/composables/icons'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, useTheme } from '@/composables/theme'\n\n// Utilities\nimport { shallowRef, Text } from 'vue'\nimport { convertToUnit, flattenFragments, genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVIconProps = propsFactory({\n color: String,\n disabled: Boolean,\n start: Boolean,\n end: Boolean,\n icon: IconValue,\n opacity: [String, Number],\n\n ...makeComponentProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'i' }),\n ...makeThemeProps(),\n}, 'VIcon')\n\nexport const VIcon = genericComponent()({\n name: 'VIcon',\n\n props: makeVIconProps(),\n\n setup (props, { attrs, slots }) {\n const slotIcon = shallowRef<string>()\n\n const { themeClasses } = useTheme()\n const { iconData } = useIcon(() => slotIcon.value || props.icon)\n const { sizeClasses } = useSize(props)\n const { textColorClasses, textColorStyles } = useTextColor(() => props.color)\n\n useRender(() => {\n const slotValue = slots.default?.()\n if (slotValue) {\n slotIcon.value = flattenFragments(slotValue).filter(node =>\n node.type === Text && node.children && typeof node.children === 'string'\n )[0]?.children as string\n }\n const hasClick = !!(attrs.onClick || attrs.onClickOnce)\n\n return (\n <iconData.value.component\n tag={ props.tag }\n icon={ iconData.value.icon }\n class={[\n 'v-icon',\n 'notranslate',\n themeClasses.value,\n sizeClasses.value,\n textColorClasses.value,\n {\n 'v-icon--clickable': hasClick,\n 'v-icon--disabled': props.disabled,\n 'v-icon--start': props.start,\n 'v-icon--end': props.end,\n },\n props.class,\n ]}\n style={[\n {\n '--v-icon-opacity': props.opacity,\n },\n !sizeClasses.value ? ({\n fontSize: convertToUnit(props.size),\n height: convertToUnit(props.size),\n width: convertToUnit(props.size),\n }) : undefined,\n textColorStyles.value,\n props.style,\n ]}\n role={ hasClick ? 'button' : undefined }\n aria-hidden={ !hasClick }\n tabindex={ hasClick ? props.disabled ? -1 : 0 : undefined }\n >\n { slotValue }\n </iconData.value.component>\n )\n })\n\n return {}\n },\n})\n\nexport type VIcon = InstanceType<typeof VIcon>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createVNode as _createVNode, Fragment as _Fragment, mergeProps as _mergeProps, withDirectives as _withDirectives } from "vue";
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VImg.css";
|
|
4
4
|
|
|
@@ -8,7 +8,7 @@ import { useBackgroundColor } from "../../composables/color.js";
|
|
|
8
8
|
import { makeComponentProps } from "../../composables/component.js";
|
|
9
9
|
import { makeRoundedProps, useRounded } from "../../composables/rounded.js";
|
|
10
10
|
import { makeTransitionProps, MaybeTransition } from "../../composables/transition.js"; // Directives
|
|
11
|
-
import
|
|
11
|
+
import vIntersect from "../../directives/intersect/index.js"; // Utilities
|
|
12
12
|
import { computed, nextTick, onBeforeMount, onBeforeUnmount, ref, shallowRef, toRef, vShow, watch, withDirectives } from 'vue';
|
|
13
13
|
import { convertToUnit, genericComponent, getCurrentInstance, propsFactory, SUPPORTS_INTERSECTION, useRender } from "../../util/index.js"; // Types
|
|
14
14
|
// not intended for public use, this is passed in by vuetify-loader
|
|
@@ -51,7 +51,7 @@ export const makeVImgProps = propsFactory({
|
|
|
51
51
|
export const VImg = genericComponent()({
|
|
52
52
|
name: 'VImg',
|
|
53
53
|
directives: {
|
|
54
|
-
|
|
54
|
+
vIntersect
|
|
55
55
|
},
|
|
56
56
|
props: makeVImgProps(),
|
|
57
57
|
emits: {
|
|
@@ -180,8 +180,8 @@ export const VImg = genericComponent()({
|
|
|
180
180
|
}));
|
|
181
181
|
const __image = () => {
|
|
182
182
|
if (!normalisedSrc.value.src || state.value === 'idle') return null;
|
|
183
|
-
const img =
|
|
184
|
-
"class": ['v-img__img', containClasses.value],
|
|
183
|
+
const img = _createElementVNode("img", {
|
|
184
|
+
"class": _normalizeClass(['v-img__img', containClasses.value]),
|
|
185
185
|
"style": {
|
|
186
186
|
objectPosition: props.position
|
|
187
187
|
},
|
|
@@ -201,7 +201,7 @@ export const VImg = genericComponent()({
|
|
|
201
201
|
"transition": props.transition,
|
|
202
202
|
"appear": true
|
|
203
203
|
}, {
|
|
204
|
-
default: () => [withDirectives(sources ?
|
|
204
|
+
default: () => [withDirectives(sources ? _createElementVNode("picture", {
|
|
205
205
|
"class": "v-img__picture"
|
|
206
206
|
}, [sources, img]) : img, [[vShow, state.value === 'loaded']])]
|
|
207
207
|
});
|
|
@@ -209,8 +209,8 @@ export const VImg = genericComponent()({
|
|
|
209
209
|
const __preloadImage = () => _createVNode(MaybeTransition, {
|
|
210
210
|
"transition": props.transition
|
|
211
211
|
}, {
|
|
212
|
-
default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' &&
|
|
213
|
-
"class": ['v-img__img', 'v-img__img--preload', containClasses.value],
|
|
212
|
+
default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && _createElementVNode("img", {
|
|
213
|
+
"class": _normalizeClass(['v-img__img', 'v-img__img--preload', containClasses.value]),
|
|
214
214
|
"style": {
|
|
215
215
|
objectPosition: props.position
|
|
216
216
|
},
|
|
@@ -227,7 +227,7 @@ export const VImg = genericComponent()({
|
|
|
227
227
|
"transition": props.transition,
|
|
228
228
|
"appear": true
|
|
229
229
|
}, {
|
|
230
|
-
default: () => [(state.value === 'loading' || state.value === 'error' && !slots.error) &&
|
|
230
|
+
default: () => [(state.value === 'loading' || state.value === 'error' && !slots.error) && _createElementVNode("div", {
|
|
231
231
|
"class": "v-img__placeholder"
|
|
232
232
|
}, [slots.placeholder()])]
|
|
233
233
|
});
|
|
@@ -238,14 +238,14 @@ export const VImg = genericComponent()({
|
|
|
238
238
|
"transition": props.transition,
|
|
239
239
|
"appear": true
|
|
240
240
|
}, {
|
|
241
|
-
default: () => [state.value === 'error' &&
|
|
241
|
+
default: () => [state.value === 'error' && _createElementVNode("div", {
|
|
242
242
|
"class": "v-img__error"
|
|
243
243
|
}, [slots.error()])]
|
|
244
244
|
});
|
|
245
245
|
};
|
|
246
246
|
const __gradient = () => {
|
|
247
247
|
if (!props.gradient) return null;
|
|
248
|
-
return
|
|
248
|
+
return _createElementVNode("div", {
|
|
249
249
|
"class": "v-img__gradient",
|
|
250
250
|
"style": {
|
|
251
251
|
backgroundImage: `linear-gradient(${props.gradient})`
|
|
@@ -281,9 +281,9 @@ export const VImg = genericComponent()({
|
|
|
281
281
|
"aria-label": props.alt,
|
|
282
282
|
"role": props.alt ? 'img' : undefined
|
|
283
283
|
}), {
|
|
284
|
-
additional: () =>
|
|
284
|
+
additional: () => _createElementVNode(_Fragment, null, [_createVNode(__image, null, null), _createVNode(__preloadImage, null, null), _createVNode(__gradient, null, null), _createVNode(__placeholder, null, null), _createVNode(__error, null, null)]),
|
|
285
285
|
default: slots.default
|
|
286
|
-
}), [[
|
|
286
|
+
}), [[vIntersect, {
|
|
287
287
|
handler: init,
|
|
288
288
|
options: props.options
|
|
289
289
|
}, null, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VImg.js","names":["makeVResponsiveProps","VResponsive","useBackgroundColor","makeComponentProps","makeRoundedProps","useRounded","makeTransitionProps","MaybeTransition","intersect","computed","nextTick","onBeforeMount","onBeforeUnmount","ref","shallowRef","toRef","vShow","watch","withDirectives","convertToUnit","genericComponent","getCurrentInstance","propsFactory","SUPPORTS_INTERSECTION","useRender","makeVImgProps","absolute","Boolean","alt","String","cover","color","draggable","type","default","undefined","eager","gradient","lazySrc","options","Object","root","rootMargin","threshold","sizes","src","crossorigin","referrerpolicy","srcset","position","VImg","name","directives","props","emits","loadstart","value","load","error","setup","_ref","emit","slots","backgroundColorClasses","backgroundColorStyles","roundedClasses","vm","currentSrc","image","state","naturalWidth","naturalHeight","normalisedSrc","aspect","Number","aspectRatio","init","val","oldVal","pollForSize","isIntersecting","lazyImg","Image","setTimeout","isUnmounted","complete","onError","onLoad","getSrc","img","timer","clearTimeout","timeout","arguments","length","poll","imgHeight","imgWidth","window","endsWith","startsWith","containClasses","__image","_createVNode","objectPosition","sources","transition","__preloadImage","__placeholder","placeholder","__error","__gradient","backgroundImage","isBooted","stop","requestAnimationFrame","responsiveProps","filterProps","_withDirectives","_mergeProps","class","width","style","additional","_Fragment","_resolveDirective","handler","once"],"sources":["../../../src/components/VImg/VImg.tsx"],"sourcesContent":["// Styles\nimport './VImg.sass'\n\n// Components\nimport { makeVResponsiveProps, VResponsive } from '@/components/VResponsive/VResponsive'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport intersect from '@/directives/intersect'\n\n// Utilities\nimport {\n computed,\n nextTick,\n onBeforeMount,\n onBeforeUnmount,\n ref,\n shallowRef,\n toRef,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n getCurrentInstance,\n propsFactory,\n SUPPORTS_INTERSECTION,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src?: string\n srcset?: string\n lazySrc?: string\n aspect: number\n}\n\nexport type VImgSlots = {\n default: never\n placeholder: never\n error: never\n sources: never\n}\n\nexport const makeVImgProps = propsFactory({\n absolute: Boolean,\n alt: String,\n cover: Boolean,\n color: String,\n draggable: {\n type: [Boolean, String] as PropType<boolean | 'true' | 'false'>,\n default: undefined,\n },\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object as PropType<IntersectionObserverInit>,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n },\n sizes: String,\n src: {\n type: [String, Object] as PropType<string | srcObject>,\n default: '',\n },\n crossorigin: String as PropType<'' | 'anonymous' | 'use-credentials'>,\n referrerpolicy: String as PropType<\n | 'no-referrer'\n | 'no-referrer-when-downgrade'\n | 'origin'\n | 'origin-when-cross-origin'\n | 'same-origin'\n | 'strict-origin'\n | 'strict-origin-when-cross-origin'\n | 'unsafe-url'\n >,\n srcset: String,\n position: String,\n\n ...makeVResponsiveProps(),\n ...makeComponentProps(),\n ...makeRoundedProps(),\n ...makeTransitionProps(),\n}, 'VImg')\n\nexport const VImg = genericComponent<VImgSlots>()({\n name: 'VImg',\n\n directives: { intersect },\n\n props: makeVImgProps(),\n\n emits: {\n loadstart: (value: string | undefined) => true,\n load: (value: string | undefined) => true,\n error: (value: string | undefined) => true,\n },\n\n setup (props, { emit, slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color)\n const { roundedClasses } = useRounded(props)\n const vm = getCurrentInstance('VImg')\n\n const currentSrc = shallowRef('') // Set from srcset\n const image = ref<HTMLImageElement>()\n const state = shallowRef<'idle' | 'loading' | 'loaded' | 'error'>(props.eager ? 'loading' : 'idle')\n const naturalWidth = shallowRef<number>()\n const naturalHeight = shallowRef<number>()\n\n const normalisedSrc = computed<srcObject>(() => {\n return props.src && typeof props.src === 'object'\n ? {\n src: props.src.src,\n srcset: props.srcset || props.src.srcset,\n lazySrc: props.lazySrc || props.src.lazySrc,\n aspect: Number(props.aspectRatio || props.src.aspect || 0),\n } : {\n src: props.src,\n srcset: props.srcset,\n lazySrc: props.lazySrc,\n aspect: Number(props.aspectRatio || 0),\n }\n })\n const aspectRatio = computed(() => {\n return normalisedSrc.value.aspect || naturalWidth.value! / naturalHeight.value! || 0\n })\n\n watch(() => props.src, () => {\n init(state.value !== 'idle')\n })\n watch(aspectRatio, (val, oldVal) => {\n if (!val && oldVal && image.value) {\n pollForSize(image.value)\n }\n })\n\n // TODO: getSrc when window width changes\n\n onBeforeMount(() => init())\n\n function init (isIntersecting?: boolean) {\n if (props.eager && isIntersecting) return\n if (\n SUPPORTS_INTERSECTION &&\n !isIntersecting &&\n !props.eager\n ) return\n\n state.value = 'loading'\n\n if (normalisedSrc.value.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = normalisedSrc.value.lazySrc\n pollForSize(lazyImg, null)\n }\n\n if (!normalisedSrc.value.src) return\n\n nextTick(() => {\n emit('loadstart', image.value?.currentSrc || normalisedSrc.value.src)\n\n setTimeout(() => {\n if (vm.isUnmounted) return\n\n if (image.value?.complete) {\n if (!image.value.naturalWidth) {\n onError()\n }\n\n if (state.value === 'error') return\n\n if (!aspectRatio.value) pollForSize(image.value, null)\n if (state.value === 'loading') onLoad()\n } else {\n if (!aspectRatio.value) pollForSize(image.value!)\n getSrc()\n }\n })\n })\n }\n\n function onLoad () {\n if (vm.isUnmounted) return\n\n getSrc()\n pollForSize(image.value!)\n state.value = 'loaded'\n emit('load', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function onError () {\n if (vm.isUnmounted) return\n\n state.value = 'error'\n emit('error', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function getSrc () {\n const img = image.value\n if (img) currentSrc.value = img.currentSrc || img.src\n }\n\n let timer = -1\n\n onBeforeUnmount(() => {\n clearTimeout(timer)\n })\n\n function pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n clearTimeout(timer)\n if (vm.isUnmounted) return\n\n const { naturalHeight: imgHeight, naturalWidth: imgWidth } = img\n\n if (imgHeight || imgWidth) {\n naturalWidth.value = imgWidth\n naturalHeight.value = imgHeight\n } else if (!img.complete && state.value === 'loading' && timeout != null) {\n timer = window.setTimeout(poll, timeout)\n } else if (img.currentSrc.endsWith('.svg') || img.currentSrc.startsWith('data:image/svg+xml')) {\n naturalWidth.value = 1\n naturalHeight.value = 1\n }\n }\n\n poll()\n }\n\n const containClasses = toRef(() => ({\n 'v-img__img--cover': props.cover,\n 'v-img__img--contain': !props.cover,\n }))\n\n const __image = () => {\n if (!normalisedSrc.value.src || state.value === 'idle') return null\n\n const img = (\n <img\n class={['v-img__img', containClasses.value]}\n style={{ objectPosition: props.position }}\n crossorigin={ props.crossorigin }\n src={ normalisedSrc.value.src }\n srcset={ normalisedSrc.value.srcset }\n alt={ props.alt }\n referrerpolicy={ props.referrerpolicy }\n draggable={ props.draggable }\n sizes={ props.sizes }\n ref={ image }\n onLoad={ onLoad }\n onError={ onError }\n />\n )\n\n const sources = slots.sources?.()\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n {\n withDirectives(\n sources\n ? <picture class=\"v-img__picture\">{ sources }{ img }</picture>\n : img,\n [[vShow, state.value === 'loaded']]\n )\n }\n </MaybeTransition>\n )\n }\n\n const __preloadImage = () => (\n <MaybeTransition transition={ props.transition }>\n { normalisedSrc.value.lazySrc && state.value !== 'loaded' && (\n <img\n class={['v-img__img', 'v-img__img--preload', containClasses.value]}\n style={{ objectPosition: props.position }}\n crossorigin={ props.crossorigin }\n src={ normalisedSrc.value.lazySrc }\n alt={ props.alt }\n referrerpolicy={ props.referrerpolicy }\n draggable={ props.draggable }\n />\n )}\n </MaybeTransition>\n )\n\n const __placeholder = () => {\n if (!slots.placeholder) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { (state.value === 'loading' || (state.value === 'error' && !slots.error)) &&\n <div class=\"v-img__placeholder\">{ slots.placeholder() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __error = () => {\n if (!slots.error) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { state.value === 'error' &&\n <div class=\"v-img__error\">{ slots.error() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __gradient = () => {\n if (!props.gradient) return null\n\n return <div class=\"v-img__gradient\" style={{ backgroundImage: `linear-gradient(${props.gradient})` }} />\n }\n\n const isBooted = shallowRef(false)\n {\n const stop = watch(aspectRatio, val => {\n if (val) {\n // Doesn't work with nextTick, idk why\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n isBooted.value = true\n })\n })\n stop()\n }\n })\n }\n\n useRender(() => {\n const responsiveProps = VResponsive.filterProps(props)\n return (\n <VResponsive\n class={[\n 'v-img',\n {\n 'v-img--absolute': props.absolute,\n 'v-img--booting': !isBooted.value,\n },\n backgroundColorClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n { width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width) },\n backgroundColorStyles.value,\n props.style,\n ]}\n { ...responsiveProps }\n aspectRatio={ aspectRatio.value }\n aria-label={ props.alt }\n role={ props.alt ? 'img' : undefined }\n v-intersect={[{\n handler: init,\n options: props.options,\n }, null, ['once']]}\n >{{\n additional: () => (\n <>\n <__image />\n <__preloadImage />\n <__gradient />\n <__placeholder />\n <__error />\n </>\n ),\n default: slots.default,\n }}</VResponsive>\n )\n })\n\n return {\n currentSrc,\n image,\n state,\n naturalWidth,\n naturalHeight,\n }\n },\n})\n\nexport type VImg = InstanceType<typeof VImg>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VImg.js","names":["makeVResponsiveProps","VResponsive","useBackgroundColor","makeComponentProps","makeRoundedProps","useRounded","makeTransitionProps","MaybeTransition","vIntersect","computed","nextTick","onBeforeMount","onBeforeUnmount","ref","shallowRef","toRef","vShow","watch","withDirectives","convertToUnit","genericComponent","getCurrentInstance","propsFactory","SUPPORTS_INTERSECTION","useRender","makeVImgProps","absolute","Boolean","alt","String","cover","color","draggable","type","default","undefined","eager","gradient","lazySrc","options","Object","root","rootMargin","threshold","sizes","src","crossorigin","referrerpolicy","srcset","position","VImg","name","directives","props","emits","loadstart","value","load","error","setup","_ref","emit","slots","backgroundColorClasses","backgroundColorStyles","roundedClasses","vm","currentSrc","image","state","naturalWidth","naturalHeight","normalisedSrc","aspect","Number","aspectRatio","init","val","oldVal","pollForSize","isIntersecting","lazyImg","Image","setTimeout","isUnmounted","complete","onError","onLoad","getSrc","img","timer","clearTimeout","timeout","arguments","length","poll","imgHeight","imgWidth","window","endsWith","startsWith","containClasses","__image","_createElementVNode","_normalizeClass","objectPosition","sources","_createVNode","transition","__preloadImage","__placeholder","placeholder","__error","__gradient","backgroundImage","isBooted","stop","requestAnimationFrame","responsiveProps","filterProps","_withDirectives","_mergeProps","class","width","style","additional","_Fragment","handler","once"],"sources":["../../../src/components/VImg/VImg.tsx"],"sourcesContent":["// Styles\nimport './VImg.sass'\n\n// Components\nimport { makeVResponsiveProps, VResponsive } from '@/components/VResponsive/VResponsive'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport vIntersect from '@/directives/intersect'\n\n// Utilities\nimport {\n computed,\n nextTick,\n onBeforeMount,\n onBeforeUnmount,\n ref,\n shallowRef,\n toRef,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport {\n convertToUnit,\n genericComponent,\n getCurrentInstance,\n propsFactory,\n SUPPORTS_INTERSECTION,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src?: string\n srcset?: string\n lazySrc?: string\n aspect: number\n}\n\nexport type VImgSlots = {\n default: never\n placeholder: never\n error: never\n sources: never\n}\n\nexport const makeVImgProps = propsFactory({\n absolute: Boolean,\n alt: String,\n cover: Boolean,\n color: String,\n draggable: {\n type: [Boolean, String] as PropType<boolean | 'true' | 'false'>,\n default: undefined,\n },\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object as PropType<IntersectionObserverInit>,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n },\n sizes: String,\n src: {\n type: [String, Object] as PropType<string | srcObject>,\n default: '',\n },\n crossorigin: String as PropType<'' | 'anonymous' | 'use-credentials'>,\n referrerpolicy: String as PropType<\n | 'no-referrer'\n | 'no-referrer-when-downgrade'\n | 'origin'\n | 'origin-when-cross-origin'\n | 'same-origin'\n | 'strict-origin'\n | 'strict-origin-when-cross-origin'\n | 'unsafe-url'\n >,\n srcset: String,\n position: String,\n\n ...makeVResponsiveProps(),\n ...makeComponentProps(),\n ...makeRoundedProps(),\n ...makeTransitionProps(),\n}, 'VImg')\n\nexport const VImg = genericComponent<VImgSlots>()({\n name: 'VImg',\n\n directives: { vIntersect },\n\n props: makeVImgProps(),\n\n emits: {\n loadstart: (value: string | undefined) => true,\n load: (value: string | undefined) => true,\n error: (value: string | undefined) => true,\n },\n\n setup (props, { emit, slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color)\n const { roundedClasses } = useRounded(props)\n const vm = getCurrentInstance('VImg')\n\n const currentSrc = shallowRef('') // Set from srcset\n const image = ref<HTMLImageElement>()\n const state = shallowRef<'idle' | 'loading' | 'loaded' | 'error'>(props.eager ? 'loading' : 'idle')\n const naturalWidth = shallowRef<number>()\n const naturalHeight = shallowRef<number>()\n\n const normalisedSrc = computed<srcObject>(() => {\n return props.src && typeof props.src === 'object'\n ? {\n src: props.src.src,\n srcset: props.srcset || props.src.srcset,\n lazySrc: props.lazySrc || props.src.lazySrc,\n aspect: Number(props.aspectRatio || props.src.aspect || 0),\n } : {\n src: props.src,\n srcset: props.srcset,\n lazySrc: props.lazySrc,\n aspect: Number(props.aspectRatio || 0),\n }\n })\n const aspectRatio = computed(() => {\n return normalisedSrc.value.aspect || naturalWidth.value! / naturalHeight.value! || 0\n })\n\n watch(() => props.src, () => {\n init(state.value !== 'idle')\n })\n watch(aspectRatio, (val, oldVal) => {\n if (!val && oldVal && image.value) {\n pollForSize(image.value)\n }\n })\n\n // TODO: getSrc when window width changes\n\n onBeforeMount(() => init())\n\n function init (isIntersecting?: boolean) {\n if (props.eager && isIntersecting) return\n if (\n SUPPORTS_INTERSECTION &&\n !isIntersecting &&\n !props.eager\n ) return\n\n state.value = 'loading'\n\n if (normalisedSrc.value.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = normalisedSrc.value.lazySrc\n pollForSize(lazyImg, null)\n }\n\n if (!normalisedSrc.value.src) return\n\n nextTick(() => {\n emit('loadstart', image.value?.currentSrc || normalisedSrc.value.src)\n\n setTimeout(() => {\n if (vm.isUnmounted) return\n\n if (image.value?.complete) {\n if (!image.value.naturalWidth) {\n onError()\n }\n\n if (state.value === 'error') return\n\n if (!aspectRatio.value) pollForSize(image.value, null)\n if (state.value === 'loading') onLoad()\n } else {\n if (!aspectRatio.value) pollForSize(image.value!)\n getSrc()\n }\n })\n })\n }\n\n function onLoad () {\n if (vm.isUnmounted) return\n\n getSrc()\n pollForSize(image.value!)\n state.value = 'loaded'\n emit('load', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function onError () {\n if (vm.isUnmounted) return\n\n state.value = 'error'\n emit('error', image.value?.currentSrc || normalisedSrc.value.src)\n }\n\n function getSrc () {\n const img = image.value\n if (img) currentSrc.value = img.currentSrc || img.src\n }\n\n let timer = -1\n\n onBeforeUnmount(() => {\n clearTimeout(timer)\n })\n\n function pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n clearTimeout(timer)\n if (vm.isUnmounted) return\n\n const { naturalHeight: imgHeight, naturalWidth: imgWidth } = img\n\n if (imgHeight || imgWidth) {\n naturalWidth.value = imgWidth\n naturalHeight.value = imgHeight\n } else if (!img.complete && state.value === 'loading' && timeout != null) {\n timer = window.setTimeout(poll, timeout)\n } else if (img.currentSrc.endsWith('.svg') || img.currentSrc.startsWith('data:image/svg+xml')) {\n naturalWidth.value = 1\n naturalHeight.value = 1\n }\n }\n\n poll()\n }\n\n const containClasses = toRef(() => ({\n 'v-img__img--cover': props.cover,\n 'v-img__img--contain': !props.cover,\n }))\n\n const __image = () => {\n if (!normalisedSrc.value.src || state.value === 'idle') return null\n\n const img = (\n <img\n class={['v-img__img', containClasses.value]}\n style={{ objectPosition: props.position }}\n crossorigin={ props.crossorigin }\n src={ normalisedSrc.value.src }\n srcset={ normalisedSrc.value.srcset }\n alt={ props.alt }\n referrerpolicy={ props.referrerpolicy }\n draggable={ props.draggable }\n sizes={ props.sizes }\n ref={ image }\n onLoad={ onLoad }\n onError={ onError }\n />\n )\n\n const sources = slots.sources?.()\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n {\n withDirectives(\n sources\n ? <picture class=\"v-img__picture\">{ sources }{ img }</picture>\n : img,\n [[vShow, state.value === 'loaded']]\n )\n }\n </MaybeTransition>\n )\n }\n\n const __preloadImage = () => (\n <MaybeTransition transition={ props.transition }>\n { normalisedSrc.value.lazySrc && state.value !== 'loaded' && (\n <img\n class={['v-img__img', 'v-img__img--preload', containClasses.value]}\n style={{ objectPosition: props.position }}\n crossorigin={ props.crossorigin }\n src={ normalisedSrc.value.lazySrc }\n alt={ props.alt }\n referrerpolicy={ props.referrerpolicy }\n draggable={ props.draggable }\n />\n )}\n </MaybeTransition>\n )\n\n const __placeholder = () => {\n if (!slots.placeholder) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { (state.value === 'loading' || (state.value === 'error' && !slots.error)) &&\n <div class=\"v-img__placeholder\">{ slots.placeholder() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __error = () => {\n if (!slots.error) return null\n\n return (\n <MaybeTransition transition={ props.transition } appear>\n { state.value === 'error' &&\n <div class=\"v-img__error\">{ slots.error() }</div>\n }\n </MaybeTransition>\n )\n }\n\n const __gradient = () => {\n if (!props.gradient) return null\n\n return <div class=\"v-img__gradient\" style={{ backgroundImage: `linear-gradient(${props.gradient})` }} />\n }\n\n const isBooted = shallowRef(false)\n {\n const stop = watch(aspectRatio, val => {\n if (val) {\n // Doesn't work with nextTick, idk why\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n isBooted.value = true\n })\n })\n stop()\n }\n })\n }\n\n useRender(() => {\n const responsiveProps = VResponsive.filterProps(props)\n return (\n <VResponsive\n class={[\n 'v-img',\n {\n 'v-img--absolute': props.absolute,\n 'v-img--booting': !isBooted.value,\n },\n backgroundColorClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n { width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width) },\n backgroundColorStyles.value,\n props.style,\n ]}\n { ...responsiveProps }\n aspectRatio={ aspectRatio.value }\n aria-label={ props.alt }\n role={ props.alt ? 'img' : undefined }\n v-intersect={[{\n handler: init,\n options: props.options,\n }, null, ['once']]}\n >{{\n additional: () => (\n <>\n <__image />\n <__preloadImage />\n <__gradient />\n <__placeholder />\n <__error />\n </>\n ),\n default: slots.default,\n }}</VResponsive>\n )\n })\n\n return {\n currentSrc,\n image,\n state,\n naturalWidth,\n naturalHeight,\n }\n },\n})\n\nexport type VImg = InstanceType<typeof VImg>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,oBAAoB,EAAEC,WAAW,yCAE1C;AAAA,SACSC,kBAAkB;AAAA,SAClBC,kBAAkB;AAAA,SAClBC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,mBAAmB,EAAEC,eAAe,2CAE7C;AAAA,OACOC,UAAU,6CAEjB;AACA,SACEC,QAAQ,EACRC,QAAQ,EACRC,aAAa,EACbC,eAAe,EACfC,GAAG,EACHC,UAAU,EACVC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,cAAc,QACT,KAAK;AAAA,SAEVC,aAAa,EACbC,gBAAgB,EAChBC,kBAAkB,EAClBC,YAAY,EACZC,qBAAqB,EACrBC,SAAS,+BAGX;AAGA;AAeA,OAAO,MAAMC,aAAa,GAAGH,YAAY,CAAC;EACxCI,QAAQ,EAAEC,OAAO;EACjBC,GAAG,EAAEC,MAAM;EACXC,KAAK,EAAEH,OAAO;EACdI,KAAK,EAAEF,MAAM;EACbG,SAAS,EAAE;IACTC,IAAI,EAAE,CAACN,OAAO,EAAEE,MAAM,CAAyC;IAC/DK,OAAO,EAAEC;EACX,CAAC;EACDC,KAAK,EAAET,OAAO;EACdU,QAAQ,EAAER,MAAM;EAChBS,OAAO,EAAET,MAAM;EACfU,OAAO,EAAE;IACPN,IAAI,EAAEO,MAA4C;IAClD;IACA;IACAN,OAAO,EAAEA,CAAA,MAAO;MACdO,IAAI,EAAEN,SAAS;MACfO,UAAU,EAAEP,SAAS;MACrBQ,SAAS,EAAER;IACb,CAAC;EACH,CAAC;EACDS,KAAK,EAAEf,MAAM;EACbgB,GAAG,EAAE;IACHZ,IAAI,EAAE,CAACJ,MAAM,EAAEW,MAAM,CAAiC;IACtDN,OAAO,EAAE;EACX,CAAC;EACDY,WAAW,EAAEjB,MAAwD;EACrEkB,cAAc,EAAElB,MASf;EACDmB,MAAM,EAAEnB,MAAM;EACdoB,QAAQ,EAAEpB,MAAM;EAEhB,GAAG7B,oBAAoB,CAAC,CAAC;EACzB,GAAGG,kBAAkB,CAAC,CAAC;EACvB,GAAGC,gBAAgB,CAAC,CAAC;EACrB,GAAGE,mBAAmB,CAAC;AACzB,CAAC,EAAE,MAAM,CAAC;AAEV,OAAO,MAAM4C,IAAI,GAAG9B,gBAAgB,CAAY,CAAC,CAAC;EAChD+B,IAAI,EAAE,MAAM;EAEZC,UAAU,EAAE;IAAE5C;EAAW,CAAC;EAE1B6C,KAAK,EAAE5B,aAAa,CAAC,CAAC;EAEtB6B,KAAK,EAAE;IACLC,SAAS,EAAGC,KAAyB,IAAK,IAAI;IAC9CC,IAAI,EAAGD,KAAyB,IAAK,IAAI;IACzCE,KAAK,EAAGF,KAAyB,IAAK;EACxC,CAAC;EAEDG,KAAKA,CAAEN,KAAK,EAAAO,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAM;MAAEG,sBAAsB;MAAEC;IAAsB,CAAC,GAAG9D,kBAAkB,CAAC,MAAMmD,KAAK,CAACtB,KAAK,CAAC;IAC/F,MAAM;MAAEkC;IAAe,CAAC,GAAG5D,UAAU,CAACgD,KAAK,CAAC;IAC5C,MAAMa,EAAE,GAAG7C,kBAAkB,CAAC,MAAM,CAAC;IAErC,MAAM8C,UAAU,GAAGrD,UAAU,CAAC,EAAE,CAAC,EAAC;IAClC,MAAMsD,KAAK,GAAGvD,GAAG,CAAmB,CAAC;IACrC,MAAMwD,KAAK,GAAGvD,UAAU,CAA0CuC,KAAK,CAACjB,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;IACnG,MAAMkC,YAAY,GAAGxD,UAAU,CAAS,CAAC;IACzC,MAAMyD,aAAa,GAAGzD,UAAU,CAAS,CAAC;IAE1C,MAAM0D,aAAa,GAAG/D,QAAQ,CAAY,MAAM;MAC9C,OAAO4C,KAAK,CAACR,GAAG,IAAI,OAAOQ,KAAK,CAACR,GAAG,KAAK,QAAQ,GAC7C;QACAA,GAAG,EAAEQ,KAAK,CAACR,GAAG,CAACA,GAAG;QAClBG,MAAM,EAAEK,KAAK,CAACL,MAAM,IAAIK,KAAK,CAACR,GAAG,CAACG,MAAM;QACxCV,OAAO,EAAEe,KAAK,CAACf,OAAO,IAAIe,KAAK,CAACR,GAAG,CAACP,OAAO;QAC3CmC,MAAM,EAAEC,MAAM,CAACrB,KAAK,CAACsB,WAAW,IAAItB,KAAK,CAACR,GAAG,CAAC4B,MAAM,IAAI,CAAC;MAC3D,CAAC,GAAG;QACF5B,GAAG,EAAEQ,KAAK,CAACR,GAAG;QACdG,MAAM,EAAEK,KAAK,CAACL,MAAM;QACpBV,OAAO,EAAEe,KAAK,CAACf,OAAO;QACtBmC,MAAM,EAAEC,MAAM,CAACrB,KAAK,CAACsB,WAAW,IAAI,CAAC;MACvC,CAAC;IACL,CAAC,CAAC;IACF,MAAMA,WAAW,GAAGlE,QAAQ,CAAC,MAAM;MACjC,OAAO+D,aAAa,CAAChB,KAAK,CAACiB,MAAM,IAAIH,YAAY,CAACd,KAAK,GAAIe,aAAa,CAACf,KAAM,IAAI,CAAC;IACtF,CAAC,CAAC;IAEFvC,KAAK,CAAC,MAAMoC,KAAK,CAACR,GAAG,EAAE,MAAM;MAC3B+B,IAAI,CAACP,KAAK,CAACb,KAAK,KAAK,MAAM,CAAC;IAC9B,CAAC,CAAC;IACFvC,KAAK,CAAC0D,WAAW,EAAE,CAACE,GAAG,EAAEC,MAAM,KAAK;MAClC,IAAI,CAACD,GAAG,IAAIC,MAAM,IAAIV,KAAK,CAACZ,KAAK,EAAE;QACjCuB,WAAW,CAACX,KAAK,CAACZ,KAAK,CAAC;MAC1B;IACF,CAAC,CAAC;;IAEF;;IAEA7C,aAAa,CAAC,MAAMiE,IAAI,CAAC,CAAC,CAAC;IAE3B,SAASA,IAAIA,CAAEI,cAAwB,EAAE;MACvC,IAAI3B,KAAK,CAACjB,KAAK,IAAI4C,cAAc,EAAE;MACnC,IACEzD,qBAAqB,IACrB,CAACyD,cAAc,IACf,CAAC3B,KAAK,CAACjB,KAAK,EACZ;MAEFiC,KAAK,CAACb,KAAK,GAAG,SAAS;MAEvB,IAAIgB,aAAa,CAAChB,KAAK,CAAClB,OAAO,EAAE;QAC/B,MAAM2C,OAAO,GAAG,IAAIC,KAAK,CAAC,CAAC;QAC3BD,OAAO,CAACpC,GAAG,GAAG2B,aAAa,CAAChB,KAAK,CAAClB,OAAO;QACzCyC,WAAW,CAACE,OAAO,EAAE,IAAI,CAAC;MAC5B;MAEA,IAAI,CAACT,aAAa,CAAChB,KAAK,CAACX,GAAG,EAAE;MAE9BnC,QAAQ,CAAC,MAAM;QACbmD,IAAI,CAAC,WAAW,EAAEO,KAAK,CAACZ,KAAK,EAAEW,UAAU,IAAIK,aAAa,CAAChB,KAAK,CAACX,GAAG,CAAC;QAErEsC,UAAU,CAAC,MAAM;UACf,IAAIjB,EAAE,CAACkB,WAAW,EAAE;UAEpB,IAAIhB,KAAK,CAACZ,KAAK,EAAE6B,QAAQ,EAAE;YACzB,IAAI,CAACjB,KAAK,CAACZ,KAAK,CAACc,YAAY,EAAE;cAC7BgB,OAAO,CAAC,CAAC;YACX;YAEA,IAAIjB,KAAK,CAACb,KAAK,KAAK,OAAO,EAAE;YAE7B,IAAI,CAACmB,WAAW,CAACnB,KAAK,EAAEuB,WAAW,CAACX,KAAK,CAACZ,KAAK,EAAE,IAAI,CAAC;YACtD,IAAIa,KAAK,CAACb,KAAK,KAAK,SAAS,EAAE+B,MAAM,CAAC,CAAC;UACzC,CAAC,MAAM;YACL,IAAI,CAACZ,WAAW,CAACnB,KAAK,EAAEuB,WAAW,CAACX,KAAK,CAACZ,KAAM,CAAC;YACjDgC,MAAM,CAAC,CAAC;UACV;QACF,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;IAEA,SAASD,MAAMA,CAAA,EAAI;MACjB,IAAIrB,EAAE,CAACkB,WAAW,EAAE;MAEpBI,MAAM,CAAC,CAAC;MACRT,WAAW,CAACX,KAAK,CAACZ,KAAM,CAAC;MACzBa,KAAK,CAACb,KAAK,GAAG,QAAQ;MACtBK,IAAI,CAAC,MAAM,EAAEO,KAAK,CAACZ,KAAK,EAAEW,UAAU,IAAIK,aAAa,CAAChB,KAAK,CAACX,GAAG,CAAC;IAClE;IAEA,SAASyC,OAAOA,CAAA,EAAI;MAClB,IAAIpB,EAAE,CAACkB,WAAW,EAAE;MAEpBf,KAAK,CAACb,KAAK,GAAG,OAAO;MACrBK,IAAI,CAAC,OAAO,EAAEO,KAAK,CAACZ,KAAK,EAAEW,UAAU,IAAIK,aAAa,CAAChB,KAAK,CAACX,GAAG,CAAC;IACnE;IAEA,SAAS2C,MAAMA,CAAA,EAAI;MACjB,MAAMC,GAAG,GAAGrB,KAAK,CAACZ,KAAK;MACvB,IAAIiC,GAAG,EAAEtB,UAAU,CAACX,KAAK,GAAGiC,GAAG,CAACtB,UAAU,IAAIsB,GAAG,CAAC5C,GAAG;IACvD;IAEA,IAAI6C,KAAK,GAAG,CAAC,CAAC;IAEd9E,eAAe,CAAC,MAAM;MACpB+E,YAAY,CAACD,KAAK,CAAC;IACrB,CAAC,CAAC;IAEF,SAASX,WAAWA,CAAEU,GAAqB,EAAgC;MAAA,IAA9BG,OAAsB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA1D,SAAA,GAAA0D,SAAA,MAAG,GAAG;MACvE,MAAME,IAAI,GAAGA,CAAA,KAAM;QACjBJ,YAAY,CAACD,KAAK,CAAC;QACnB,IAAIxB,EAAE,CAACkB,WAAW,EAAE;QAEpB,MAAM;UAAEb,aAAa,EAAEyB,SAAS;UAAE1B,YAAY,EAAE2B;QAAS,CAAC,GAAGR,GAAG;QAEhE,IAAIO,SAAS,IAAIC,QAAQ,EAAE;UACzB3B,YAAY,CAACd,KAAK,GAAGyC,QAAQ;UAC7B1B,aAAa,CAACf,KAAK,GAAGwC,SAAS;QACjC,CAAC,MAAM,IAAI,CAACP,GAAG,CAACJ,QAAQ,IAAIhB,KAAK,CAACb,KAAK,KAAK,SAAS,IAAIoC,OAAO,IAAI,IAAI,EAAE;UACxEF,KAAK,GAAGQ,MAAM,CAACf,UAAU,CAACY,IAAI,EAAEH,OAAO,CAAC;QAC1C,CAAC,MAAM,IAAIH,GAAG,CAACtB,UAAU,CAACgC,QAAQ,CAAC,MAAM,CAAC,IAAIV,GAAG,CAACtB,UAAU,CAACiC,UAAU,CAAC,oBAAoB,CAAC,EAAE;UAC7F9B,YAAY,CAACd,KAAK,GAAG,CAAC;UACtBe,aAAa,CAACf,KAAK,GAAG,CAAC;QACzB;MACF,CAAC;MAEDuC,IAAI,CAAC,CAAC;IACR;IAEA,MAAMM,cAAc,GAAGtF,KAAK,CAAC,OAAO;MAClC,mBAAmB,EAAEsC,KAAK,CAACvB,KAAK;MAChC,qBAAqB,EAAE,CAACuB,KAAK,CAACvB;IAChC,CAAC,CAAC,CAAC;IAEH,MAAMwE,OAAO,GAAGA,CAAA,KAAM;MACpB,IAAI,CAAC9B,aAAa,CAAChB,KAAK,CAACX,GAAG,IAAIwB,KAAK,CAACb,KAAK,KAAK,MAAM,EAAE,OAAO,IAAI;MAEnE,MAAMiC,GAAG,GAAAc,mBAAA;QAAA,SAAAC,eAAA,CAEE,CAAC,YAAY,EAAEH,cAAc,CAAC7C,KAAK,CAAC;QAAA,SACpC;UAAEiD,cAAc,EAAEpD,KAAK,CAACJ;QAAS,CAAC;QAAA,eAC3BI,KAAK,CAACP,WAAW;QAAA,OACzB0B,aAAa,CAAChB,KAAK,CAACX,GAAG;QAAA,UACpB2B,aAAa,CAAChB,KAAK,CAACR,MAAM;QAAA,OAC7BK,KAAK,CAACzB,GAAG;QAAA,kBACEyB,KAAK,CAACN,cAAc;QAAA,aACzBM,KAAK,CAACrB,SAAS;QAAA,SACnBqB,KAAK,CAACT,KAAK;QAAA,OACbwB,KAAK;QAAA,UACFmB,MAAM;QAAA,WACLD;MAAO,QAEpB;MAED,MAAMoB,OAAO,GAAG5C,KAAK,CAAC4C,OAAO,GAAG,CAAC;MAEjC,OAAAC,YAAA,CAAApG,eAAA;QAAA,cACgC8C,KAAK,CAACuD,UAAU;QAAA;MAAA;QAAA1E,OAAA,EAAAA,CAAA,MAE1ChB,cAAc,CACZwF,OAAO,GAAAH,mBAAA;UAAA;QAAA,IAC+BG,OAAO,EAAIjB,GAAG,KAChDA,GAAG,EACP,CAAC,CAACzE,KAAK,EAAEqD,KAAK,CAACb,KAAK,KAAK,QAAQ,CAAC,CACpC,CAAC;MAAA;IAIT,CAAC;IAED,MAAMqD,cAAc,GAAGA,CAAA,KAAAF,YAAA,CAAApG,eAAA;MAAA,cACS8C,KAAK,CAACuD;IAAU;MAAA1E,OAAA,EAAAA,CAAA,MAC1CsC,aAAa,CAAChB,KAAK,CAAClB,OAAO,IAAI+B,KAAK,CAACb,KAAK,KAAK,QAAQ,IAAA+C,mBAAA;QAAA,SAAAC,eAAA,CAE9C,CAAC,YAAY,EAAE,qBAAqB,EAAEH,cAAc,CAAC7C,KAAK,CAAC;QAAA,SAC3D;UAAEiD,cAAc,EAAEpD,KAAK,CAACJ;QAAS,CAAC;QAAA,eAC3BI,KAAK,CAACP,WAAW;QAAA,OACzB0B,aAAa,CAAChB,KAAK,CAAClB,OAAO;QAAA,OAC3Be,KAAK,CAACzB,GAAG;QAAA,kBACEyB,KAAK,CAACN,cAAc;QAAA,aACzBM,KAAK,CAACrB;MAAS,QAE9B;IAAA,EAEJ;IAED,MAAM8E,aAAa,GAAGA,CAAA,KAAM;MAC1B,IAAI,CAAChD,KAAK,CAACiD,WAAW,EAAE,OAAO,IAAI;MAEnC,OAAAJ,YAAA,CAAApG,eAAA;QAAA,cACgC8C,KAAK,CAACuD,UAAU;QAAA;MAAA;QAAA1E,OAAA,EAAAA,CAAA,MAC1C,CAACmC,KAAK,CAACb,KAAK,KAAK,SAAS,IAAKa,KAAK,CAACb,KAAK,KAAK,OAAO,IAAI,CAACM,KAAK,CAACJ,KAAM,KAAA6C,mBAAA;UAAA;QAAA,IACvCzC,KAAK,CAACiD,WAAW,CAAC,CAAC,EAAQ;MAAA;IAInE,CAAC;IAED,MAAMC,OAAO,GAAGA,CAAA,KAAM;MACpB,IAAI,CAAClD,KAAK,CAACJ,KAAK,EAAE,OAAO,IAAI;MAE7B,OAAAiD,YAAA,CAAApG,eAAA;QAAA,cACgC8C,KAAK,CAACuD,UAAU;QAAA;MAAA;QAAA1E,OAAA,EAAAA,CAAA,MAC1CmC,KAAK,CAACb,KAAK,KAAK,OAAO,IAAA+C,mBAAA;UAAA;QAAA,IACKzC,KAAK,CAACJ,KAAK,CAAC,CAAC,EAAQ;MAAA;IAIzD,CAAC;IAED,MAAMuD,UAAU,GAAGA,CAAA,KAAM;MACvB,IAAI,CAAC5D,KAAK,CAAChB,QAAQ,EAAE,OAAO,IAAI;MAEhC,OAAAkE,mBAAA;QAAA;QAAA,SAA2C;UAAEW,eAAe,EAAE,mBAAmB7D,KAAK,CAAChB,QAAQ;QAAI;MAAC;IACtG,CAAC;IAED,MAAM8E,QAAQ,GAAGrG,UAAU,CAAC,KAAK,CAAC;IAClC;MACE,MAAMsG,IAAI,GAAGnG,KAAK,CAAC0D,WAAW,EAAEE,GAAG,IAAI;QACrC,IAAIA,GAAG,EAAE;UACP;UACAwC,qBAAqB,CAAC,MAAM;YAC1BA,qBAAqB,CAAC,MAAM;cAC1BF,QAAQ,CAAC3D,KAAK,GAAG,IAAI;YACvB,CAAC,CAAC;UACJ,CAAC,CAAC;UACF4D,IAAI,CAAC,CAAC;QACR;MACF,CAAC,CAAC;IACJ;IAEA5F,SAAS,CAAC,MAAM;MACd,MAAM8F,eAAe,GAAGrH,WAAW,CAACsH,WAAW,CAAClE,KAAK,CAAC;MACtD,OAAAmE,eAAA,CAAAb,YAAA,CAAA1G,WAAA,EAAAwH,WAAA;QAAA,SAEW,CACL,OAAO,EACP;UACE,iBAAiB,EAAEpE,KAAK,CAAC3B,QAAQ;UACjC,gBAAgB,EAAE,CAACyF,QAAQ,CAAC3D;QAC9B,CAAC,EACDO,sBAAsB,CAACP,KAAK,EAC5BS,cAAc,CAACT,KAAK,EACpBH,KAAK,CAACqE,KAAK,CACZ;QAAA,SACM,CACL;UAAEC,KAAK,EAAExG,aAAa,CAACkC,KAAK,CAACsE,KAAK,KAAK,MAAM,GAAGrD,YAAY,CAACd,KAAK,GAAGH,KAAK,CAACsE,KAAK;QAAE,CAAC,EACnF3D,qBAAqB,CAACR,KAAK,EAC3BH,KAAK,CAACuE,KAAK;MACZ,GACIN,eAAe;QAAA,eACN3C,WAAW,CAACnB,KAAK;QAAA,cAClBH,KAAK,CAACzB,GAAG;QAAA,QACfyB,KAAK,CAACzB,GAAG,GAAG,KAAK,GAAGO;MAAS;QAMpC0F,UAAU,EAAEA,CAAA,KAAAtB,mBAAA,CAAAuB,SAAA,SAAAnB,YAAA,CAAAL,OAAA,eAAAK,YAAA,CAAAE,cAAA,eAAAF,YAAA,CAAAM,UAAA,eAAAN,YAAA,CAAAG,aAAA,eAAAH,YAAA,CAAAK,OAAA,eAQX;QACD9E,OAAO,EAAE4B,KAAK,CAAC5B;MAAO,MAAA1B,UAAA,EAdR;QACZuH,OAAO,EAAEnD,IAAI;QACbrC,OAAO,EAAEc,KAAK,CAACd;MACjB,CAAC,EAAE,IAAI;QAAAyF,IAAA;MAAA;IAcb,CAAC,CAAC;IAEF,OAAO;MACL7D,UAAU;MACVC,KAAK;MACLC,KAAK;MACLC,YAAY;MACZC;IACF,CAAC;EACH;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createTextVNode as _createTextVNode, createVNode as _createVNode } from "vue";
|
|
1
|
+
import { createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, createVNode as _createVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from "vue";
|
|
2
2
|
// Styles
|
|
3
3
|
import "./VInfiniteScroll.css";
|
|
4
4
|
|
|
@@ -63,7 +63,7 @@ export const VInfiniteScrollIntersect = defineComponent({
|
|
|
63
63
|
watch(isIntersecting, async val => {
|
|
64
64
|
emit('intersect', props.side, val);
|
|
65
65
|
});
|
|
66
|
-
useRender(() =>
|
|
66
|
+
useRender(() => _createElementVNode("div", {
|
|
67
67
|
"class": "v-infinite-scroll-intersect",
|
|
68
68
|
"style": {
|
|
69
69
|
'--v-infinite-margin-size': props.rootMargin
|
|
@@ -179,7 +179,7 @@ export const VInfiniteScroll = genericComponent()({
|
|
|
179
179
|
}
|
|
180
180
|
};
|
|
181
181
|
if (status === 'error') return slots.error?.(slotProps);
|
|
182
|
-
if (status === 'empty') return slots.empty?.(slotProps) ??
|
|
182
|
+
if (status === 'empty') return slots.empty?.(slotProps) ?? _createElementVNode("div", null, [t(props.emptyText)]);
|
|
183
183
|
if (props.mode === 'manual') {
|
|
184
184
|
if (status === 'loading') {
|
|
185
185
|
return slots.loading?.(slotProps) ?? _createVNode(VProgressCircular, {
|
|
@@ -210,13 +210,13 @@ export const VInfiniteScroll = genericComponent()({
|
|
|
210
210
|
const intersectMode = props.mode === 'intersect';
|
|
211
211
|
return _createVNode(Tag, {
|
|
212
212
|
"ref": rootEl,
|
|
213
|
-
"class": ['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {
|
|
213
|
+
"class": _normalizeClass(['v-infinite-scroll', `v-infinite-scroll--${props.direction}`, {
|
|
214
214
|
'v-infinite-scroll--start': hasStartIntersect,
|
|
215
215
|
'v-infinite-scroll--end': hasEndIntersect
|
|
216
|
-
}],
|
|
217
|
-
"style": dimensionStyles.value
|
|
216
|
+
}]),
|
|
217
|
+
"style": _normalizeStyle(dimensionStyles.value)
|
|
218
218
|
}, {
|
|
219
|
-
default: () => [
|
|
219
|
+
default: () => [_createElementVNode("div", {
|
|
220
220
|
"class": "v-infinite-scroll__side"
|
|
221
221
|
}, [renderSide('start', startStatus.value)]), hasStartIntersect && intersectMode && _createVNode(VInfiniteScrollIntersect, {
|
|
222
222
|
"key": "start",
|
|
@@ -228,7 +228,7 @@ export const VInfiniteScroll = genericComponent()({
|
|
|
228
228
|
"side": "end",
|
|
229
229
|
"onIntersect": handleIntersect,
|
|
230
230
|
"rootMargin": margin.value
|
|
231
|
-
}, null),
|
|
231
|
+
}, null), _createElementVNode("div", {
|
|
232
232
|
"class": "v-infinite-scroll__side"
|
|
233
233
|
}, [renderSide('end', endStatus.value)])]
|
|
234
234
|
});
|