vuetify 3.3.1 → 3.3.2
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 +40 -44
- package/dist/json/importMap.json +4 -4
- package/dist/json/tags.json +0 -1
- package/dist/json/web-types.json +605 -748
- package/dist/vuetify-labs.css +53 -32
- package/dist/vuetify-labs.d.ts +1591 -1494
- package/dist/vuetify-labs.esm.js +8140 -8073
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +8139 -8072
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +21 -1
- package/dist/vuetify.d.ts +1187 -1187
- package/dist/vuetify.esm.js +6685 -6547
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +6684 -6546
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +979 -975
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/index.d.mts +31 -31
- package/lib/blueprints/md1.d.mts +31 -31
- package/lib/blueprints/md2.d.mts +31 -31
- package/lib/blueprints/md3.d.mts +31 -31
- package/lib/components/VAlert/VAlert.mjs +6 -6
- package/lib/components/VAlert/VAlert.mjs.map +1 -1
- package/lib/components/VAlert/index.d.mts +1 -1
- package/lib/components/VApp/VApp.mjs +4 -4
- package/lib/components/VApp/VApp.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBar.mjs +9 -6
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/VAppBarNavIcon.mjs +1 -1
- package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
- package/lib/components/VAppBar/index.d.mts +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +11 -11
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.mts +88 -88
- package/lib/components/VAvatar/VAvatar.mjs +4 -4
- package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
- package/lib/components/VBadge/VBadge.mjs +6 -6
- package/lib/components/VBadge/VBadge.mjs.map +1 -1
- package/lib/components/VBanner/VBanner.mjs +7 -10
- package/lib/components/VBanner/VBanner.mjs.map +1 -1
- package/lib/components/VBanner/VBannerActions.mjs +2 -2
- package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
- package/lib/components/VBanner/VBannerText.mjs +1 -0
- package/lib/components/VBanner/VBannerText.mjs.map +1 -1
- package/lib/components/VBanner/index.d.mts +1 -1
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs +8 -8
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +6 -9
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs +2 -2
- package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +3 -3
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.mjs +6 -6
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.mjs +4 -4
- package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
- package/lib/components/VBtnToggle/VBtnToggle.mjs +2 -2
- package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
- package/lib/components/VCard/VCard.mjs +7 -7
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/VCardItem.mjs +4 -4
- package/lib/components/VCard/VCardItem.mjs.map +1 -1
- package/lib/components/VCard/VCardSubtitle.mjs +1 -0
- package/lib/components/VCard/VCardSubtitle.mjs.map +1 -1
- package/lib/components/VCard/VCardText.mjs +1 -0
- package/lib/components/VCard/VCardText.mjs.map +1 -1
- package/lib/components/VCard/VCardTitle.mjs +1 -0
- package/lib/components/VCard/VCardTitle.mjs.map +1 -1
- package/lib/components/VCard/index.d.mts +1 -1
- package/lib/components/VCarousel/VCarousel.mjs +4 -7
- package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
- package/lib/components/VCarousel/VCarouselItem.mjs +1 -1
- package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
- package/lib/components/VCheckbox/VCheckbox.mjs +3 -3
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VCheckbox/VCheckboxBtn.mjs +4 -4
- package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
- package/lib/components/VCheckbox/index.d.mts +50 -50
- package/lib/components/VChip/VChip.mjs +7 -7
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChipGroup/VChipGroup.mjs +4 -7
- package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
- package/lib/components/VCode/index.mjs +3 -0
- package/lib/components/VCode/index.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPicker.mjs +10 -12
- package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs +2 -5
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.mjs +3 -3
- package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerPreview.mjs +3 -3
- package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +13 -12
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.mts +88 -88
- package/lib/components/VCounter/VCounter.mjs +2 -2
- package/lib/components/VCounter/VCounter.mjs.map +1 -1
- package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +4 -4
- package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
- package/lib/components/VDefaultsProvider/index.d.mts +7 -9
- package/lib/components/VDialog/VDialog.mjs +7 -7
- package/lib/components/VDialog/VDialog.mjs.map +1 -1
- package/lib/components/VDialog/index.d.mts +66 -66
- package/lib/components/VDivider/VDivider.mjs +3 -3
- package/lib/components/VDivider/VDivider.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs +5 -5
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +3 -3
- package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +5 -5
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs +3 -3
- package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
- package/lib/components/VExpansionPanel/index.d.mts +1 -1
- package/lib/components/VField/VField.mjs +8 -8
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VField/VFieldLabel.mjs +1 -1
- package/lib/components/VField/VFieldLabel.mjs.map +1 -1
- package/lib/components/VField/index.d.mts +5 -5
- package/lib/components/VFileInput/VFileInput.mjs +5 -5
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/index.d.mts +60 -60
- package/lib/components/VFooter/VFooter.mjs +4 -4
- package/lib/components/VFooter/VFooter.mjs.map +1 -1
- package/lib/components/VForm/VForm.mjs +3 -3
- package/lib/components/VForm/VForm.mjs.map +1 -1
- package/lib/components/VGrid/VCol.mjs +2 -2
- package/lib/components/VGrid/VCol.mjs.map +1 -1
- package/lib/components/VGrid/VContainer.mjs +3 -3
- package/lib/components/VGrid/VContainer.mjs.map +1 -1
- package/lib/components/VGrid/VRow.mjs +2 -2
- package/lib/components/VGrid/VRow.mjs.map +1 -1
- package/lib/components/VGrid/VSpacer.mjs +1 -0
- package/lib/components/VGrid/VSpacer.mjs.map +1 -1
- package/lib/components/VHover/VHover.mjs +1 -1
- package/lib/components/VHover/VHover.mjs.map +1 -1
- package/lib/components/VIcon/VIcon.mjs +4 -4
- package/lib/components/VIcon/VIcon.mjs.map +1 -1
- package/lib/components/VImg/VImg.mjs +5 -4
- package/lib/components/VImg/VImg.mjs.map +1 -1
- package/lib/components/VInput/InputIcon.mjs +3 -2
- package/lib/components/VInput/InputIcon.mjs.map +1 -1
- package/lib/components/VInput/VInput.mjs +8 -4
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VInput/index.d.mts +10 -10
- package/lib/components/VItemGroup/VItem.mjs +2 -2
- package/lib/components/VItemGroup/VItem.mjs.map +1 -1
- package/lib/components/VItemGroup/VItemGroup.mjs +1 -1
- package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
- package/lib/components/VKbd/index.mjs +3 -0
- package/lib/components/VKbd/index.mjs.map +1 -1
- package/lib/components/VLabel/VLabel.mjs +1 -1
- package/lib/components/VLabel/VLabel.mjs.map +1 -1
- package/lib/components/VLayout/VLayout.mjs +3 -3
- package/lib/components/VLayout/VLayout.mjs.map +1 -1
- package/lib/components/VLayout/VLayoutItem.mjs +1 -1
- package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
- package/lib/components/VLazy/VLazy.mjs +3 -3
- package/lib/components/VLazy/VLazy.mjs.map +1 -1
- package/lib/components/VList/VList.css +1 -0
- package/lib/components/VList/VList.mjs +5 -4
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VList.sass +1 -0
- package/lib/components/VList/VListChildren.mjs +3 -3
- package/lib/components/VList/VListChildren.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs +8 -8
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListImg.mjs +1 -0
- package/lib/components/VList/VListImg.mjs.map +1 -1
- package/lib/components/VList/VListItem.css +18 -0
- package/lib/components/VList/VListItem.mjs +9 -9
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListItem.sass +12 -0
- package/lib/components/VList/VListItemAction.mjs +1 -1
- package/lib/components/VList/VListItemAction.mjs.map +1 -1
- package/lib/components/VList/VListItemMedia.mjs +1 -1
- package/lib/components/VList/VListItemMedia.mjs.map +1 -1
- package/lib/components/VList/VListItemSubtitle.mjs +1 -0
- package/lib/components/VList/VListItemSubtitle.mjs.map +1 -1
- package/lib/components/VList/VListItemTitle.mjs +1 -0
- package/lib/components/VList/VListItemTitle.mjs.map +1 -1
- package/lib/components/VList/VListSubheader.mjs +3 -3
- package/lib/components/VList/VListSubheader.mjs.map +1 -1
- package/lib/components/VList/index.d.mts +24 -24
- package/lib/components/VLocaleProvider/VLocaleProvider.mjs +1 -1
- package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
- package/lib/components/VMain/VMain.mjs +3 -3
- package/lib/components/VMain/VMain.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.mjs +7 -7
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/index.d.mts +113 -113
- package/lib/components/VMenu/shared.mjs +2 -0
- package/lib/components/VMenu/shared.mjs.map +1 -1
- package/lib/components/VMessages/VMessages.mjs +3 -3
- package/lib/components/VMessages/VMessages.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +17 -13
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.mjs +11 -14
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/index.d.mts +21 -21
- package/lib/components/VOverlay/locationStrategies.mjs +5 -5
- package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
- package/lib/components/VOverlay/scrollStrategies.mjs +3 -3
- package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
- package/lib/components/VOverlay/useActivator.mjs +6 -10
- package/lib/components/VOverlay/useActivator.mjs.map +1 -1
- package/lib/components/VOverlay/util/point.mjs +2 -0
- package/lib/components/VOverlay/util/point.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs +9 -9
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VParallax/VParallax.mjs +3 -6
- package/lib/components/VParallax/VParallax.mjs.map +1 -1
- package/lib/components/VProgressCircular/VProgressCircular.mjs +5 -5
- package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.mjs +6 -6
- package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
- package/lib/components/VRadio/VRadio.mjs +3 -3
- package/lib/components/VRadio/VRadio.mjs.map +1 -1
- package/lib/components/VRadio/index.d.mts +4 -4
- package/lib/components/VRadioGroup/VRadioGroup.mjs +4 -4
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRadioGroup/index.d.mts +32 -32
- package/lib/components/VRangeSlider/VRangeSlider.mjs +4 -4
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VRangeSlider/index.d.mts +8 -8
- package/lib/components/VRating/VRating.mjs +6 -9
- package/lib/components/VRating/VRating.mjs.map +1 -1
- package/lib/components/VResponsive/VResponsive.css +1 -0
- package/lib/components/VResponsive/VResponsive.mjs +1 -1
- package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
- package/lib/components/VResponsive/VResponsive.sass +1 -0
- package/lib/components/VSelect/VSelect.mjs +9 -9
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.mts +88 -88
- package/lib/components/VSelectionControl/VSelectionControl.mjs +7 -7
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSelectionControl/index.d.mts +2 -2
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +6 -6
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
- package/lib/components/VSheet/VSheet.mjs +4 -4
- package/lib/components/VSheet/VSheet.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.mjs +7 -7
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroupItem.mjs +2 -2
- package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
- package/lib/components/VSlider/VSlider.mjs +6 -6
- package/lib/components/VSlider/VSlider.mjs.map +1 -1
- package/lib/components/VSlider/VSliderThumb.mjs +6 -6
- package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
- package/lib/components/VSlider/VSliderTrack.mjs +3 -3
- package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
- package/lib/components/VSlider/index.d.mts +8 -8
- package/lib/components/VSlider/slider.mjs +4 -7
- package/lib/components/VSlider/slider.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.mjs +7 -7
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSnackbar/index.d.mts +77 -77
- package/lib/components/VStepper/index.mjs +3 -2
- package/lib/components/VStepper/index.mjs.map +1 -1
- package/lib/components/VSwitch/VSwitch.mjs +6 -6
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VSwitch/index.d.mts +41 -41
- package/lib/components/VSystemBar/VSystemBar.mjs +4 -4
- package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
- package/lib/components/VTable/VTable.mjs +1 -1
- package/lib/components/VTable/VTable.mjs.map +1 -1
- package/lib/components/VTabs/VTab.mjs +3 -3
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTabs/VTabs.mjs +7 -7
- package/lib/components/VTabs/VTabs.mjs.map +1 -1
- package/lib/components/VTabs/shared.mjs +2 -0
- package/lib/components/VTabs/shared.mjs.map +1 -1
- package/lib/components/VTextField/VTextField.mjs +6 -6
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/index.d.mts +72 -72
- package/lib/components/VTextarea/VTextarea.mjs +8 -11
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTextarea/index.d.mts +60 -60
- package/lib/components/VThemeProvider/VThemeProvider.mjs +1 -1
- package/lib/components/VThemeProvider/VThemeProvider.mjs.map +1 -1
- package/lib/components/VTimeline/VTimeline.mjs +4 -4
- package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
- package/lib/components/VTimeline/VTimelineDivider.mjs +5 -5
- package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
- package/lib/components/VTimeline/VTimelineItem.mjs +4 -7
- package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbar.mjs +8 -8
- package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbarItems.mjs +4 -4
- package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbarTitle.mjs +1 -1
- package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
- package/lib/components/VToolbar/index.d.mts +1 -1
- package/lib/components/VTooltip/VTooltip.mjs +6 -6
- package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
- package/lib/components/VTooltip/index.d.mts +113 -113
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs +15 -93
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
- package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs +9 -4
- package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
- package/lib/components/VVirtualScroll/index.d.mts +9 -9
- package/lib/components/VWindow/VWindow.mjs +6 -6
- package/lib/components/VWindow/VWindow.mjs.map +1 -1
- package/lib/components/VWindow/VWindowItem.mjs +5 -5
- package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
- package/lib/components/index.d.mts +1481 -1483
- package/lib/components/transitions/createTransition.mjs +5 -8
- package/lib/components/transitions/createTransition.mjs.map +1 -1
- package/lib/components/transitions/dialog-transition.mjs +1 -3
- package/lib/components/transitions/dialog-transition.mjs.map +1 -1
- package/lib/components/transitions/index.d.mts +117 -117
- package/lib/composables/defaults.mjs +5 -0
- package/lib/composables/defaults.mjs.map +1 -1
- package/lib/composables/display.mjs +1 -1
- package/lib/composables/display.mjs.map +1 -1
- package/lib/composables/filter.mjs +2 -4
- package/lib/composables/filter.mjs.map +1 -1
- package/lib/composables/focus.mjs +1 -1
- package/lib/composables/focus.mjs.map +1 -1
- package/lib/composables/forwardRefs.mjs +2 -0
- package/lib/composables/forwardRefs.mjs.map +1 -1
- package/lib/composables/hydration.mjs +1 -1
- package/lib/composables/hydration.mjs.map +1 -1
- package/lib/composables/icons.mjs +7 -1
- package/lib/composables/icons.mjs.map +1 -1
- package/lib/composables/lazy.mjs +1 -3
- package/lib/composables/lazy.mjs.map +1 -1
- package/lib/composables/locale.mjs +2 -1
- package/lib/composables/locale.mjs.map +1 -1
- package/lib/composables/mutationObserver.mjs +2 -5
- package/lib/composables/mutationObserver.mjs.map +1 -1
- package/lib/composables/nested/nested.mjs +2 -2
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/nested/selectStrategies.mjs +1 -0
- package/lib/composables/nested/selectStrategies.mjs.map +1 -1
- package/lib/composables/proxiedModel.mjs +3 -3
- package/lib/composables/proxiedModel.mjs.map +1 -1
- package/lib/composables/refs.mjs +4 -1
- package/lib/composables/refs.mjs.map +1 -1
- package/lib/composables/resizeObserver.mjs +4 -4
- package/lib/composables/resizeObserver.mjs.map +1 -1
- package/lib/composables/router.mjs +1 -4
- package/lib/composables/router.mjs.map +1 -1
- package/lib/composables/scopeId.mjs +1 -0
- package/lib/composables/scopeId.mjs.map +1 -1
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/composables/toggleScope.mjs +4 -0
- package/lib/composables/toggleScope.mjs.map +1 -1
- package/lib/composables/touch.mjs +1 -0
- package/lib/composables/touch.mjs.map +1 -1
- package/lib/composables/validation.mjs +2 -2
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/composables/virtual.mjs +108 -0
- package/lib/composables/virtual.mjs.map +1 -0
- package/lib/directives/click-outside/index.mjs +2 -1
- package/lib/directives/click-outside/index.mjs.map +1 -1
- package/lib/directives/intersect/index.mjs +1 -1
- package/lib/directives/intersect/index.mjs.map +1 -1
- package/lib/directives/resize/index.mjs +2 -0
- package/lib/directives/resize/index.mjs.map +1 -1
- package/lib/directives/scroll/index.mjs +2 -0
- package/lib/directives/scroll/index.mjs.map +1 -1
- package/lib/directives/touch/index.mjs +1 -2
- package/lib/directives/touch/index.mjs.map +1 -1
- package/lib/entry-bundler.mjs +7 -2
- package/lib/entry-bundler.mjs.map +1 -1
- package/lib/framework.mjs +4 -6
- package/lib/framework.mjs.map +1 -1
- package/lib/iconsets/fa.mjs +1 -1
- package/lib/iconsets/fa.mjs.map +1 -1
- package/lib/iconsets/fa4.mjs +4 -3
- package/lib/iconsets/fa4.mjs.map +1 -1
- package/lib/iconsets/md.mjs +4 -3
- package/lib/iconsets/md.mjs.map +1 -1
- package/lib/iconsets/mdi-svg.mjs +1 -1
- package/lib/iconsets/mdi-svg.mjs.map +1 -1
- package/lib/iconsets/mdi.mjs +4 -3
- package/lib/iconsets/mdi.mjs.map +1 -1
- package/lib/index.d.mts +34 -32
- package/lib/labs/VBottomSheet/VBottomSheet.mjs +1 -1
- package/lib/labs/VBottomSheet/VBottomSheet.mjs.map +1 -1
- package/lib/labs/VBottomSheet/index.d.mts +21 -21
- package/lib/labs/VDataIterator/VDataIterator.mjs +7 -7
- package/lib/labs/VDataIterator/VDataIterator.mjs.map +1 -1
- package/lib/labs/VDataIterator/composables/items.mjs +2 -2
- package/lib/labs/VDataIterator/composables/items.mjs.map +1 -1
- package/lib/labs/VDataIterator/index.d.mts +28 -27
- package/lib/labs/VDataTable/VDataTable.css +1 -0
- package/lib/labs/VDataTable/VDataTable.mjs +8 -8
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTable.sass +1 -0
- package/lib/labs/VDataTable/VDataTableColumn.mjs +2 -1
- package/lib/labs/VDataTable/VDataTableColumn.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableFooter.mjs +3 -3
- package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs +5 -5
- package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableHeaders.mjs +6 -6
- package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRow.mjs +1 -1
- package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs +20 -16
- package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +7 -7
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +34 -22
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/expand.mjs +4 -4
- package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/group.mjs +1 -1
- package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/headers.mjs +2 -2
- package/lib/labs/VDataTable/composables/headers.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/items.mjs +5 -8
- package/lib/labs/VDataTable/composables/items.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/paginate.mjs +1 -1
- package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/select.mjs +1 -1
- package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/sort.mjs +4 -9
- package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.mts +182 -83
- package/lib/labs/VDataTable/types.mjs.map +1 -1
- package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs +1 -1
- package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -1
- package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs +4 -4
- package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
- package/lib/labs/components.d.mts +213 -114
- package/lib/labs/date/date.mjs.map +1 -1
- package/lib/labs/entry-bundler.mjs +3 -1
- package/lib/labs/entry-bundler.mjs.map +1 -1
- package/lib/locale/adapters/vue-i18n.d.mts +1 -1
- package/lib/locale/adapters/vue-i18n.mjs +5 -1
- package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
- package/lib/locale/adapters/vuetify.mjs +1 -3
- package/lib/locale/adapters/vuetify.mjs.map +1 -1
- package/lib/util/anchor.mjs +1 -0
- package/lib/util/anchor.mjs.map +1 -1
- package/lib/util/animation.mjs +1 -0
- package/lib/util/animation.mjs.map +1 -1
- package/lib/util/color/APCA.mjs +1 -0
- package/lib/util/color/APCA.mjs.map +1 -1
- package/lib/util/color/transformCIELAB.mjs +2 -0
- package/lib/util/color/transformCIELAB.mjs.map +1 -1
- package/lib/util/color/transformSRGB.mjs +3 -1
- package/lib/util/color/transformSRGB.mjs.map +1 -1
- package/lib/util/colorUtils.mjs +2 -2
- package/lib/util/colorUtils.mjs.map +1 -1
- package/lib/util/console.mjs +1 -0
- package/lib/util/console.mjs.map +1 -1
- package/lib/util/createSimpleFunctional.mjs +2 -1
- package/lib/util/createSimpleFunctional.mjs.map +1 -1
- package/lib/util/defineComponent.mjs +5 -5
- package/lib/util/defineComponent.mjs.map +1 -1
- package/lib/util/getCurrentInstance.mjs +1 -2
- package/lib/util/getCurrentInstance.mjs.map +1 -1
- package/lib/util/helpers.mjs +3 -3
- package/lib/util/helpers.mjs.map +1 -1
- package/lib/util/injectSelf.mjs +2 -1
- package/lib/util/injectSelf.mjs.map +1 -1
- package/lib/util/propsFactory.mjs +1 -0
- package/lib/util/propsFactory.mjs.map +1 -1
- package/package.json +4 -4
- package/lib/labs/VDataTable/composables/virtual.mjs +0 -77
- package/lib/labs/VDataTable/composables/virtual.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableServer.mjs","names":["makeVDataTableFooterProps","VDataTableFooter","VDataTableHeaders","VDataTableRows","VTable","createGroupBy","provideGroupBy","useGroupedItems","createHeaders","createPagination","makeDataTablePaginateProps","providePagination","createSort","provideSort","makeDataTableProps","provideDefaults","provideExpanded","provideSelection","useDataTableItems","useOptions","computed","provide","toRef","genericComponent","propsFactory","useRender","makeVDataTableServerProps","itemsLength","type","Number","String","required","VDataTableServer","name","props","emits","value","page","sortBy","options","click:row","e","setup","_ref","emit","slots","groupBy","multiSort","mustSort","itemsPerPage","parseInt","columns","headers","showSelect","showExpand","items","toggleSort","opened","isGroupOpen","toggleGroup","extractRows","pageCount","setItemsPerPage","flatItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","currentPage","isExpanded","toggleExpand","itemsWithoutGroups","search","hideNoData","noDataText","loading","loadingText","slotProps","groupedItems","dataTableFooterProps","filterProps","dataTableHeadersProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","top","default","_Fragment","colgroup","fixedHeader","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTableServer.tsx"],"sourcesContent":["// Components\nimport { makeVDataTableFooterProps, VDataTableFooter } from './VDataTableFooter'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\n\n// Composables\nimport { createGroupBy, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { createPagination, makeDataTablePaginateProps, providePagination } from './composables/paginate'\nimport { createSort, provideSort } from './composables/sort'\nimport { makeDataTableProps } from './VDataTable'\nimport { provideDefaults } from '@/composables/defaults'\nimport { provideExpanded } from './composables/expand'\nimport { provideSelection } from './composables/select'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\n\n// Utilities\nimport { computed, provide, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableSlotProps, VDataTableSlots } from './VDataTable'\n\nexport const makeVDataTableServerProps = propsFactory({\n itemsLength: {\n type: [Number, String],\n required: true,\n },\n\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeVDataTableFooterProps(),\n}, 'v-data-table-server')\n\nexport const VDataTableServer = genericComponent<VDataTableSlots>()({\n name: 'VDataTableServer',\n\n props: makeVDataTableServerProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:itemsPerPage': (page: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'update:expanded': (options: any) => true,\n 'update:groupBy': (value: any) => true,\n 'click:row': (e: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { page, itemsPerPage } = createPagination(props)\n const itemsLength = computed(() => parseInt(props.itemsLength, 10))\n\n const { columns, headers } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n\n const { items } = useDataTableItems(props, columns)\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n\n const { opened, isGroupOpen, toggleGroup, extractRows } = provideGroupBy({ groupBy, sortBy })\n\n const { pageCount, setItemsPerPage } = providePagination({ page, itemsPerPage, itemsLength })\n\n const { flatItems } = useGroupedItems(items, groupBy, opened)\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, {\n allItems: items,\n currentPage: items,\n })\n\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n const itemsWithoutGroups = computed(() => extractRows(items.value))\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search: toRef(props, 'search'),\n })\n\n provide('v-data-table', {\n toggleSort,\n sortBy,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n const slotProps = computed<VDataTableSlotProps>(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n setItemsPerPage,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: itemsWithoutGroups.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const [dataTableFooterProps] = VDataTableFooter.filterProps(props)\n const [dataTableHeadersProps] = VDataTableHeaders.filterProps(props)\n const [dataTableRowsProps] = VDataTableRows.filterProps(props)\n const [tableProps] = VTable.filterProps(props)\n\n return (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\n },\n props.class,\n ]}\n style={ props.style }\n { ...tableProps }\n >\n {{\n top: () => slots.top?.(slotProps.value),\n default: () => slots.default ? slots.default(slotProps.value) : (\n <>\n { slots.colgroup?.(slotProps.value) }\n <thead class=\"v-data-table__thead\" role=\"rowgroup\">\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n sticky={ props.fixedHeader }\n v-slots={ slots }\n />\n </thead>\n { slots.thead?.(slotProps.value) }\n <tbody class=\"v-data-table__tbody\" role=\"rowgroup\">\n { slots.body ? slots.body(slotProps.value) : (\n <VDataTableRows\n { ...dataTableRowsProps }\n items={ flatItems.value }\n v-slots={ slots }\n />\n )}\n </tbody>\n { slots.tbody?.(slotProps.value) }\n { slots.tfoot?.(slotProps.value) }\n </>\n ),\n bottom: () => slots.bottom ? slots.bottom(slotProps.value) : (\n <VDataTableFooter\n { ...dataTableFooterProps }\n v-slots={{\n prepend: slots['footer.prepend'],\n }}\n />\n ),\n }}\n </VTable>\n )\n })\n },\n})\n\nexport type VDataTableServer = InstanceType<typeof VDataTableServer>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDataTableServer.mjs","names":["makeDataTableProps","makeVDataTableFooterProps","VDataTableFooter","VDataTableHeaders","VDataTableRows","VTable","provideExpanded","createGroupBy","provideGroupBy","useGroupedItems","createHeaders","useDataTableItems","useOptions","createPagination","makeDataTablePaginateProps","providePagination","provideSelection","createSort","provideSort","provideDefaults","computed","provide","toRef","genericComponent","propsFactory","useRender","makeVDataTableServerProps","itemsLength","type","Number","String","required","VDataTableServer","name","props","emits","value","page","sortBy","options","click:row","e","setup","_ref","emit","slots","groupBy","multiSort","mustSort","itemsPerPage","parseInt","columns","headers","showSelect","showExpand","items","toggleSort","opened","isGroupOpen","toggleGroup","extractRows","pageCount","setItemsPerPage","flatItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","currentPage","isExpanded","toggleExpand","itemsWithoutGroups","search","hideNoData","noDataText","loading","loadingText","slotProps","groupedItems","dataTableFooterProps","filterProps","dataTableHeadersProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","top","default","_Fragment","colgroup","fixedHeader","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTableServer.tsx"],"sourcesContent":["// Components\nimport { makeDataTableProps } from './VDataTable'\nimport { makeVDataTableFooterProps, VDataTableFooter } from './VDataTableFooter'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\n\n// Composables\nimport { provideExpanded } from './composables/expand'\nimport { createGroupBy, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { createPagination, makeDataTablePaginateProps, providePagination } from './composables/paginate'\nimport { provideSelection } from './composables/select'\nimport { createSort, provideSort } from './composables/sort'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { computed, provide, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableSlotProps, VDataTableSlots } from './VDataTable'\n\nexport const makeVDataTableServerProps = propsFactory({\n itemsLength: {\n type: [Number, String],\n required: true,\n },\n\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeVDataTableFooterProps(),\n}, 'VDataTableServer')\n\nexport const VDataTableServer = genericComponent<VDataTableSlots>()({\n name: 'VDataTableServer',\n\n props: makeVDataTableServerProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:itemsPerPage': (page: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'update:expanded': (options: any) => true,\n 'update:groupBy': (value: any) => true,\n 'click:row': (e: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { page, itemsPerPage } = createPagination(props)\n const itemsLength = computed(() => parseInt(props.itemsLength, 10))\n\n const { columns, headers } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n\n const { items } = useDataTableItems(props, columns)\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n\n const { opened, isGroupOpen, toggleGroup, extractRows } = provideGroupBy({ groupBy, sortBy })\n\n const { pageCount, setItemsPerPage } = providePagination({ page, itemsPerPage, itemsLength })\n\n const { flatItems } = useGroupedItems(items, groupBy, opened)\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, {\n allItems: items,\n currentPage: items,\n })\n\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n const itemsWithoutGroups = computed(() => extractRows(items.value))\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search: toRef(props, 'search'),\n })\n\n provide('v-data-table', {\n toggleSort,\n sortBy,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n const slotProps = computed<VDataTableSlotProps>(() => ({\n page: page.value,\n itemsPerPage: itemsPerPage.value,\n sortBy: sortBy.value,\n pageCount: pageCount.value,\n toggleSort,\n setItemsPerPage,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: itemsWithoutGroups.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const [dataTableFooterProps] = VDataTableFooter.filterProps(props)\n const [dataTableHeadersProps] = VDataTableHeaders.filterProps(props)\n const [dataTableRowsProps] = VDataTableRows.filterProps(props)\n const [tableProps] = VTable.filterProps(props)\n\n return (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\n },\n props.class,\n ]}\n style={ props.style }\n { ...tableProps }\n >\n {{\n top: () => slots.top?.(slotProps.value),\n default: () => slots.default ? slots.default(slotProps.value) : (\n <>\n { slots.colgroup?.(slotProps.value) }\n <thead class=\"v-data-table__thead\" role=\"rowgroup\">\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n sticky={ props.fixedHeader }\n v-slots={ slots }\n />\n </thead>\n { slots.thead?.(slotProps.value) }\n <tbody class=\"v-data-table__tbody\" role=\"rowgroup\">\n { slots.body ? slots.body(slotProps.value) : (\n <VDataTableRows\n { ...dataTableRowsProps }\n items={ flatItems.value }\n v-slots={ slots }\n />\n )}\n </tbody>\n { slots.tbody?.(slotProps.value) }\n { slots.tfoot?.(slotProps.value) }\n </>\n ),\n bottom: () => slots.bottom ? slots.bottom(slotProps.value) : (\n <VDataTableFooter\n { ...dataTableFooterProps }\n v-slots={{\n prepend: slots['footer.prepend'],\n }}\n />\n ),\n }}\n </VTable>\n )\n })\n },\n})\n\nexport type VDataTableServer = InstanceType<typeof VDataTableServer>\n"],"mappings":"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"}
|
|
@@ -1,27 +1,29 @@
|
|
|
1
1
|
import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from "vue";
|
|
2
2
|
// Components
|
|
3
|
+
import { makeDataTableProps } from "./VDataTable.mjs";
|
|
3
4
|
import { VDataTableHeaders } from "./VDataTableHeaders.mjs";
|
|
5
|
+
import { VDataTableRow } from "./VDataTableRow.mjs";
|
|
4
6
|
import { VDataTableRows } from "./VDataTableRows.mjs";
|
|
5
|
-
import { VTable } from "../../components/VTable/index.mjs";
|
|
7
|
+
import { VTable } from "../../components/VTable/index.mjs";
|
|
8
|
+
import { VVirtualScrollItem } from "../../components/VVirtualScroll/VVirtualScrollItem.mjs"; // Composables
|
|
9
|
+
import { provideExpanded } from "./composables/expand.mjs";
|
|
6
10
|
import { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from "./composables/group.mjs";
|
|
7
11
|
import { createHeaders } from "./composables/headers.mjs";
|
|
12
|
+
import { useDataTableItems } from "./composables/items.mjs";
|
|
13
|
+
import { useOptions } from "./composables/options.mjs";
|
|
14
|
+
import { provideSelection } from "./composables/select.mjs";
|
|
8
15
|
import { createSort, provideSort, useSortedItems } from "./composables/sort.mjs";
|
|
9
|
-
import { makeDataTableProps } from "./VDataTable.mjs";
|
|
10
|
-
import { makeDataTableVirtualProps, useVirtual } from "./composables/virtual.mjs";
|
|
11
|
-
import { makeFilterProps, useFilter } from "../../composables/filter.mjs";
|
|
12
16
|
import { provideDefaults } from "../../composables/defaults.mjs";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { useDataTableItems } from "./composables/items.mjs";
|
|
16
|
-
import { useOptions } from "./composables/options.mjs"; // Utlities
|
|
17
|
+
import { makeFilterProps, useFilter } from "../../composables/filter.mjs";
|
|
18
|
+
import { makeVirtualProps, useVirtual } from "../../composables/virtual.mjs"; // Utilities
|
|
17
19
|
import { computed, shallowRef, toRef } from 'vue';
|
|
18
20
|
import { convertToUnit, genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
|
19
21
|
export const makeVDataTableVirtualProps = propsFactory({
|
|
20
22
|
...makeDataTableProps(),
|
|
21
23
|
...makeDataTableGroupProps(),
|
|
22
|
-
...
|
|
24
|
+
...makeVirtualProps(),
|
|
23
25
|
...makeFilterProps()
|
|
24
|
-
}, '
|
|
26
|
+
}, 'VDataTableVirtual');
|
|
25
27
|
export const VDataTableVirtual = genericComponent()({
|
|
26
28
|
name: 'VDataTableVirtual',
|
|
27
29
|
props: makeVDataTableVirtualProps(),
|
|
@@ -102,18 +104,16 @@ export const VDataTableVirtual = genericComponent()({
|
|
|
102
104
|
isExpanded,
|
|
103
105
|
toggleExpand
|
|
104
106
|
} = provideExpanded(props);
|
|
107
|
+
const headerHeight = computed(() => headers.value.length * 56);
|
|
105
108
|
const {
|
|
106
109
|
containerRef,
|
|
107
110
|
paddingTop,
|
|
108
111
|
paddingBottom,
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
itemHeight,
|
|
112
|
+
computedItems,
|
|
113
|
+
handleItemResize,
|
|
112
114
|
handleScroll
|
|
113
|
-
} = useVirtual(props, flatItems);
|
|
114
|
-
const
|
|
115
|
-
return flatItems.value.slice(startIndex.value, stopIndex.value);
|
|
116
|
-
});
|
|
115
|
+
} = useVirtual(props, flatItems, headerHeight);
|
|
116
|
+
const displayItems = computed(() => computedItems.value.map(item => item.raw));
|
|
117
117
|
useOptions({
|
|
118
118
|
sortBy,
|
|
119
119
|
page: shallowRef(1),
|
|
@@ -155,9 +155,7 @@ export const VDataTableVirtual = genericComponent()({
|
|
|
155
155
|
"class": ['v-data-table', {
|
|
156
156
|
'v-data-table--loading': props.loading
|
|
157
157
|
}, props.class],
|
|
158
|
-
"style":
|
|
159
|
-
'--v-table-row-height': convertToUnit(itemHeight.value)
|
|
160
|
-
}, props.style]
|
|
158
|
+
"style": props.style
|
|
161
159
|
}, tableProps), {
|
|
162
160
|
top: () => slots.top?.(slotProps.value),
|
|
163
161
|
wrapper: () => _createVNode("div", {
|
|
@@ -181,8 +179,22 @@ export const VDataTableVirtual = genericComponent()({
|
|
|
181
179
|
border: 0
|
|
182
180
|
}
|
|
183
181
|
}, null)]), _createVNode(VDataTableRows, _mergeProps(dataTableRowsProps, {
|
|
184
|
-
"items":
|
|
185
|
-
}),
|
|
182
|
+
"items": displayItems.value
|
|
183
|
+
}), {
|
|
184
|
+
...slots,
|
|
185
|
+
item: itemSlotProps => {
|
|
186
|
+
return slots.item?.(itemSlotProps) ?? _createVNode(VVirtualScrollItem, {
|
|
187
|
+
"key": itemSlotProps.item.index,
|
|
188
|
+
"dynamicHeight": true,
|
|
189
|
+
"renderless": true,
|
|
190
|
+
"onUpdate:height": height => handleItemResize(itemSlotProps.item.index, height)
|
|
191
|
+
}, {
|
|
192
|
+
default: slotProps => _createVNode(VDataTableRow, _mergeProps(itemSlotProps.props, slotProps?.props, {
|
|
193
|
+
"key": itemSlotProps.item.index
|
|
194
|
+
}), slots)
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}), _createVNode("tr", {
|
|
186
198
|
"style": {
|
|
187
199
|
height: convertToUnit(paddingBottom.value),
|
|
188
200
|
border: 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableVirtual.mjs","names":["VDataTableHeaders","VDataTableRows","VTable","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createHeaders","createSort","provideSort","useSortedItems","makeDataTableProps","makeDataTableVirtualProps","useVirtual","makeFilterProps","useFilter","provideDefaults","provideExpanded","provideSelection","useDataTableItems","useOptions","computed","shallowRef","toRef","convertToUnit","genericComponent","propsFactory","useRender","makeVDataTableVirtualProps","VDataTableVirtual","name","props","emits","value","click:row","e","setup","_ref","emit","slots","groupBy","sortBy","multiSort","mustSort","columns","headers","showSelect","showExpand","items","search","filteredItems","transform","item","toggleSort","sortByWithGroups","opened","extractRows","isGroupOpen","toggleGroup","sortedItems","flatItems","allItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","currentPage","isExpanded","toggleExpand","containerRef","paddingTop","paddingBottom","startIndex","stopIndex","itemHeight","handleScroll","visibleItems","slice","page","itemsPerPage","hideNoData","noDataText","loading","loadingText","slotProps","groupedItems","dataTableHeadersProps","filterProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","top","wrapper","height","fixedHeader","border","length","bottom"],"sources":["../../../src/labs/VDataTable/VDataTableVirtual.tsx"],"sourcesContent":["// Components\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\n\n// Composables\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { createSort, provideSort, useSortedItems } from './composables/sort'\nimport { makeDataTableProps } from './VDataTable'\nimport { makeDataTableVirtualProps, useVirtual } from './composables/virtual'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { provideDefaults } from '@/composables/defaults'\nimport { provideExpanded } from './composables/expand'\nimport { provideSelection } from './composables/select'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\n\n// Utlities\nimport { computed, shallowRef, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableSlotProps } from './VDataTable'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\nimport type { VDataTableHeadersSlots } from './VDataTableHeaders'\n\ntype VDataTableVirtualSlotProps = Omit<VDataTableSlotProps, 'setItemsPerPage' | 'page' | 'pageCount' | 'itemsPerPage'>\n\nexport type VDataTableVirtualSlots = VDataTableRowsSlots & VDataTableHeadersSlots & {\n top: VDataTableVirtualSlotProps\n headers: VDataTableHeadersSlots['headers']\n bottom: VDataTableVirtualSlotProps\n}\n\nexport const makeVDataTableVirtualProps = propsFactory({\n ...makeDataTableProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableVirtualProps(),\n ...makeFilterProps(),\n}, 'v-data-table-virtual')\n\nexport const VDataTableVirtual = genericComponent<VDataTableVirtualSlots>()({\n name: 'VDataTableVirtual',\n\n props: makeVDataTableVirtualProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'click:row': (e: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n\n const { columns, headers } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n const { items } = useDataTableItems(props, columns)\n\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter<DataTableItem>(props, items, search, { transform: item => item.columns })\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups)\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const allItems = computed(() => extractRows(flatItems.value))\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, {\n allItems,\n currentPage: allItems,\n })\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n const {\n containerRef,\n paddingTop,\n paddingBottom,\n startIndex,\n stopIndex,\n itemHeight,\n handleScroll,\n } = useVirtual(props, flatItems)\n\n const visibleItems = computed(() => {\n return flatItems.value.slice(startIndex.value, stopIndex.value)\n })\n\n useOptions({\n sortBy,\n page: shallowRef(1),\n itemsPerPage: shallowRef(-1),\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n const slotProps = computed<VDataTableVirtualSlotProps>(() => ({\n sortBy: sortBy.value,\n toggleSort,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: allItems.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const [dataTableHeadersProps] = VDataTableHeaders.filterProps(props)\n const [dataTableRowsProps] = VDataTableRows.filterProps(props)\n const [tableProps] = VTable.filterProps(props)\n\n return (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\n },\n props.class,\n ]}\n style={[\n { '--v-table-row-height': convertToUnit(itemHeight.value) },\n props.style,\n ]}\n { ...tableProps }\n >\n {{\n top: () => slots.top?.(slotProps.value),\n wrapper: () => (\n <div\n ref={ containerRef }\n onScroll={ handleScroll }\n class=\"v-table__wrapper\"\n style={{\n height: convertToUnit(props.height),\n }}\n >\n <table>\n <thead>\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n sticky={ props.fixedHeader }\n v-slots={ slots }\n />\n </thead>\n <tbody>\n <tr style={{ height: convertToUnit(paddingTop.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: convertToUnit(paddingTop.value), border: 0 }}></td>\n </tr>\n\n <VDataTableRows\n { ...dataTableRowsProps }\n items={ visibleItems.value }\n v-slots={ slots }\n />\n\n <tr style={{ height: convertToUnit(paddingBottom.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: convertToUnit(paddingBottom.value), border: 0 }}></td>\n </tr>\n </tbody>\n </table>\n </div>\n ),\n bottom: () => slots.bottom?.(slotProps.value),\n }}\n </VTable>\n )\n })\n },\n})\n\nexport type VDataTableVirtual = InstanceType<typeof VDataTableVirtual>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDataTableVirtual.mjs","names":["makeDataTableProps","VDataTableHeaders","VDataTableRow","VDataTableRows","VTable","VVirtualScrollItem","provideExpanded","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createHeaders","useDataTableItems","useOptions","provideSelection","createSort","provideSort","useSortedItems","provideDefaults","makeFilterProps","useFilter","makeVirtualProps","useVirtual","computed","shallowRef","toRef","convertToUnit","genericComponent","propsFactory","useRender","makeVDataTableVirtualProps","VDataTableVirtual","name","props","emits","value","click:row","e","setup","_ref","emit","slots","groupBy","sortBy","multiSort","mustSort","columns","headers","showSelect","showExpand","items","search","filteredItems","transform","item","toggleSort","sortByWithGroups","opened","extractRows","isGroupOpen","toggleGroup","sortedItems","flatItems","allItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","currentPage","isExpanded","toggleExpand","headerHeight","length","containerRef","paddingTop","paddingBottom","computedItems","handleItemResize","handleScroll","displayItems","map","raw","page","itemsPerPage","hideNoData","noDataText","loading","loadingText","slotProps","groupedItems","dataTableHeadersProps","filterProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","top","wrapper","height","fixedHeader","border","itemSlotProps","index","default","bottom"],"sources":["../../../src/labs/VDataTable/VDataTableVirtual.tsx"],"sourcesContent":["// Components\nimport { makeDataTableProps } from './VDataTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRow } from './VDataTableRow'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\nimport { VVirtualScrollItem } from '@/components/VVirtualScroll/VVirtualScrollItem'\n\n// Composables\nimport { provideExpanded } from './composables/expand'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { provideSelection } from './composables/select'\nimport { createSort, provideSort, useSortedItems } from './composables/sort'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeVirtualProps, useVirtual } from '@/composables/virtual'\n\n// Utilities\nimport { computed, shallowRef, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableSlotProps } from './VDataTable'\nimport type { VDataTableHeadersSlots } from './VDataTableHeaders'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\n\ntype VDataTableVirtualSlotProps = Omit<VDataTableSlotProps, 'setItemsPerPage' | 'page' | 'pageCount' | 'itemsPerPage'>\n\nexport type VDataTableVirtualSlots = VDataTableRowsSlots & VDataTableHeadersSlots & {\n top: VDataTableVirtualSlotProps\n headers: VDataTableHeadersSlots['headers']\n bottom: VDataTableVirtualSlotProps\n}\n\nexport const makeVDataTableVirtualProps = propsFactory({\n ...makeDataTableProps(),\n ...makeDataTableGroupProps(),\n ...makeVirtualProps(),\n ...makeFilterProps(),\n}, 'VDataTableVirtual')\n\nexport const VDataTableVirtual = genericComponent<VDataTableVirtualSlots>()({\n name: 'VDataTableVirtual',\n\n props: makeVDataTableVirtualProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'click:row': (e: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n\n const { columns, headers } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n const { items } = useDataTableItems(props, columns)\n\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter<DataTableItem>(props, items, search, { transform: item => item.columns })\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups)\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const allItems = computed(() => extractRows(flatItems.value))\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, {\n allItems,\n currentPage: allItems,\n })\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n const headerHeight = computed(() => headers.value.length * 56)\n\n const {\n containerRef,\n paddingTop,\n paddingBottom,\n computedItems,\n handleItemResize,\n handleScroll,\n } = useVirtual(props, flatItems, headerHeight)\n const displayItems = computed(() => computedItems.value.map(item => item.raw))\n\n useOptions({\n sortBy,\n page: shallowRef(1),\n itemsPerPage: shallowRef(-1),\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n const slotProps = computed<VDataTableVirtualSlotProps>(() => ({\n sortBy: sortBy.value,\n toggleSort,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: allItems.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const [dataTableHeadersProps] = VDataTableHeaders.filterProps(props)\n const [dataTableRowsProps] = VDataTableRows.filterProps(props)\n const [tableProps] = VTable.filterProps(props)\n\n return (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\n },\n props.class,\n ]}\n style={ props.style }\n { ...tableProps }\n >\n {{\n top: () => slots.top?.(slotProps.value),\n wrapper: () => (\n <div\n ref={ containerRef }\n onScroll={ handleScroll }\n class=\"v-table__wrapper\"\n style={{\n height: convertToUnit(props.height),\n }}\n >\n <table>\n <thead>\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n sticky={ props.fixedHeader }\n v-slots={ slots }\n />\n </thead>\n <tbody>\n <tr style={{ height: convertToUnit(paddingTop.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: convertToUnit(paddingTop.value), border: 0 }}></td>\n </tr>\n\n <VDataTableRows\n { ...dataTableRowsProps }\n items={ displayItems.value }\n >\n {{\n ...slots,\n item: itemSlotProps => {\n return slots.item?.(itemSlotProps) ?? (\n <VVirtualScrollItem\n key={ itemSlotProps.item.index }\n dynamicHeight\n renderless\n onUpdate:height={ height => handleItemResize(itemSlotProps.item.index, height) }\n >\n { slotProps => (\n <VDataTableRow\n { ...itemSlotProps.props }\n { ...slotProps?.props }\n key={ itemSlotProps.item.index }\n v-slots={ slots }\n />\n )}\n </VVirtualScrollItem>\n )\n },\n }}\n </VDataTableRows>\n\n <tr style={{ height: convertToUnit(paddingBottom.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: convertToUnit(paddingBottom.value), border: 0 }}></td>\n </tr>\n </tbody>\n </table>\n </div>\n ),\n bottom: () => slots.bottom?.(slotProps.value),\n }}\n </VTable>\n )\n })\n },\n})\n\nexport type VDataTableVirtual = InstanceType<typeof VDataTableVirtual>\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Composables
|
|
2
|
+
import { useProxiedModel } from "../../../composables/proxiedModel.mjs"; // Utilities
|
|
2
3
|
import { inject, provide, toRef } from 'vue';
|
|
3
|
-
import { propsFactory } from "../../../util/index.mjs"; //
|
|
4
|
-
import { useProxiedModel } from "../../../composables/proxiedModel.mjs"; // Types
|
|
4
|
+
import { propsFactory } from "../../../util/index.mjs"; // Types
|
|
5
5
|
export const makeDataTableExpandProps = propsFactory({
|
|
6
6
|
expandOnClick: Boolean,
|
|
7
7
|
showExpand: Boolean,
|
|
@@ -9,7 +9,7 @@ export const makeDataTableExpandProps = propsFactory({
|
|
|
9
9
|
type: Array,
|
|
10
10
|
default: () => []
|
|
11
11
|
}
|
|
12
|
-
}, '
|
|
12
|
+
}, 'DataTable-expand');
|
|
13
13
|
export const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');
|
|
14
14
|
export function provideExpanded(props) {
|
|
15
15
|
const expandOnClick = toRef(props, 'expandOnClick');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expand.mjs","names":["inject","provide","toRef","propsFactory","
|
|
1
|
+
{"version":3,"file":"expand.mjs","names":["useProxiedModel","inject","provide","toRef","propsFactory","makeDataTableExpandProps","expandOnClick","Boolean","showExpand","expanded","type","Array","default","VDataTableExpandedKey","Symbol","for","provideExpanded","props","v","Set","values","expand","item","value","newExpanded","delete","add","isExpanded","has","toggleExpand","data","useExpanded","Error"],"sources":["../../../../src/labs/VDataTable/composables/expand.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { inject, provide, toRef } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableItem } from '../types'\n\nexport const makeDataTableExpandProps = propsFactory({\n expandOnClick: Boolean,\n showExpand: Boolean,\n expanded: {\n type: Array as PropType<readonly string[]>,\n default: () => ([]),\n },\n}, 'DataTable-expand')\n\nexport const VDataTableExpandedKey: InjectionKey<{\n expand: (item: DataTableItem, value: boolean) => void\n expanded: Ref<Set<string>>\n expandOnClick: Ref<boolean | undefined>\n isExpanded: (item: DataTableItem) => boolean\n toggleExpand: (item: DataTableItem) => void\n}> = Symbol.for('vuetify:datatable:expanded')\n\ntype ExpandProps = {\n expandOnClick: boolean\n expanded: readonly string[]\n 'onUpdate:expanded': ((value: any[]) => void) | undefined\n}\n\nexport function provideExpanded (props: ExpandProps) {\n const expandOnClick = toRef(props, 'expandOnClick')\n const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {\n return new Set(v)\n }, v => {\n return [...v.values()]\n })\n\n function expand (item: DataTableItem, value: boolean) {\n const newExpanded = new Set(expanded.value)\n\n if (!value) {\n newExpanded.delete(item.value)\n } else {\n newExpanded.add(item.value)\n }\n\n expanded.value = newExpanded\n }\n\n function isExpanded (item: DataTableItem) {\n return expanded.value.has(item.value)\n }\n\n function toggleExpand (item: DataTableItem) {\n expand(item, !isExpanded(item))\n }\n\n const data = { expand, expanded, expandOnClick, isExpanded, toggleExpand }\n\n provide(VDataTableExpandedKey, data)\n\n return data\n}\n\nexport function useExpanded () {\n const data = inject(VDataTableExpandedKey)\n\n if (!data) throw new Error('foo')\n\n return data\n}\n"],"mappings":"AAAA;AAAA,SACSA,eAAe,iDAExB;AACA,SAASC,MAAM,EAAEC,OAAO,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACnCC,YAAY,mCAErB;AAIA,OAAO,MAAMC,wBAAwB,GAAGD,YAAY,CAAC;EACnDE,aAAa,EAAEC,OAAO;EACtBC,UAAU,EAAED,OAAO;EACnBE,QAAQ,EAAE;IACRC,IAAI,EAAEC,KAAoC;IAC1CC,OAAO,EAAEA,CAAA,KAAO;EAClB;AACF,CAAC,EAAE,kBAAkB,CAAC;AAEtB,OAAO,MAAMC,qBAMX,GAAGC,MAAM,CAACC,GAAG,CAAC,4BAA4B,CAAC;AAQ7C,OAAO,SAASC,eAAeA,CAAEC,KAAkB,EAAE;EACnD,MAAMX,aAAa,GAAGH,KAAK,CAACc,KAAK,EAAE,eAAe,CAAC;EACnD,MAAMR,QAAQ,GAAGT,eAAe,CAACiB,KAAK,EAAE,UAAU,EAAEA,KAAK,CAACR,QAAQ,EAAES,CAAC,IAAI;IACvE,OAAO,IAAIC,GAAG,CAACD,CAAC,CAAC;EACnB,CAAC,EAAEA,CAAC,IAAI;IACN,OAAO,CAAC,GAAGA,CAAC,CAACE,MAAM,EAAE,CAAC;EACxB,CAAC,CAAC;EAEF,SAASC,MAAMA,CAAEC,IAAmB,EAAEC,KAAc,EAAE;IACpD,MAAMC,WAAW,GAAG,IAAIL,GAAG,CAACV,QAAQ,CAACc,KAAK,CAAC;IAE3C,IAAI,CAACA,KAAK,EAAE;MACVC,WAAW,CAACC,MAAM,CAACH,IAAI,CAACC,KAAK,CAAC;IAChC,CAAC,MAAM;MACLC,WAAW,CAACE,GAAG,CAACJ,IAAI,CAACC,KAAK,CAAC;IAC7B;IAEAd,QAAQ,CAACc,KAAK,GAAGC,WAAW;EAC9B;EAEA,SAASG,UAAUA,CAAEL,IAAmB,EAAE;IACxC,OAAOb,QAAQ,CAACc,KAAK,CAACK,GAAG,CAACN,IAAI,CAACC,KAAK,CAAC;EACvC;EAEA,SAASM,YAAYA,CAAEP,IAAmB,EAAE;IAC1CD,MAAM,CAACC,IAAI,EAAE,CAACK,UAAU,CAACL,IAAI,CAAC,CAAC;EACjC;EAEA,MAAMQ,IAAI,GAAG;IAAET,MAAM;IAAEZ,QAAQ;IAAEH,aAAa;IAAEqB,UAAU;IAAEE;EAAa,CAAC;EAE1E3B,OAAO,CAACW,qBAAqB,EAAEiB,IAAI,CAAC;EAEpC,OAAOA,IAAI;AACb;AAEA,OAAO,SAASC,WAAWA,CAAA,EAAI;EAC7B,MAAMD,IAAI,GAAG7B,MAAM,CAACY,qBAAqB,CAAC;EAE1C,IAAI,CAACiB,IAAI,EAAE,MAAM,IAAIE,KAAK,CAAC,KAAK,CAAC;EAEjC,OAAOF,IAAI;AACb"}
|
|
@@ -7,7 +7,7 @@ export const makeDataTableGroupProps = propsFactory({
|
|
|
7
7
|
type: Array,
|
|
8
8
|
default: () => []
|
|
9
9
|
}
|
|
10
|
-
}, '
|
|
10
|
+
}, 'DataTable-group');
|
|
11
11
|
const VDataTableGroupSymbol = Symbol.for('vuetify:data-table-group');
|
|
12
12
|
export function createGroupBy(props) {
|
|
13
13
|
const groupBy = useProxiedModel(props, 'groupBy');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.mjs","names":["useProxiedModel","computed","inject","provide","ref","getObjectValueByPath","propsFactory","makeDataTableGroupProps","groupBy","type","Array","default","VDataTableGroupSymbol","Symbol","for","createGroupBy","props","provideGroupBy","options","sortBy","opened","Set","sortByWithGroups","value","map","val","order","concat","isGroupOpen","group","has","id","toggleGroup","newOpened","add","delete","extractRows","items","dive","arr","item","push","key","depth","data","useGroupBy","Error","groupItemsByProperty","length","groups","Map","raw","set","get","groupItems","arguments","undefined","prefix","groupedItems","rest","slice","forEach","flattenItems","flatItems","useGroupedItems"],"sources":["../../../../src/labs/VDataTable/composables/group.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, ref } from 'vue'\nimport { getObjectValueByPath, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableItem } from '../types'\nimport type { SortItem } from './sort'\n\nexport interface GroupableItem<T = any> {\n type: 'item'\n raw: T\n}\n\nexport interface Group<T = any> {\n type: 'group'\n depth: number\n id: string\n key: string\n value: any\n items: readonly (T | Group<T>)[]\n}\n\nexport const makeDataTableGroupProps = propsFactory({\n groupBy: {\n type: Array as PropType<readonly SortItem[]>,\n default: () => ([]),\n },\n}, 'data-table-group')\n\nconst VDataTableGroupSymbol: InjectionKey<{\n opened: Ref<Set<string>>\n toggleGroup: (group: Group) => void\n isGroupOpen: (group: Group) => boolean\n sortByWithGroups: Ref<SortItem[]>\n groupBy: Ref<readonly SortItem[]>\n extractRows: (items: (DataTableItem | Group<DataTableItem>)[]) => DataTableItem[]\n}> = Symbol.for('vuetify:data-table-group')\n\ntype GroupProps = {\n groupBy: readonly SortItem[]\n 'onUpdate:groupBy': ((value: SortItem[]) => void) | undefined\n}\n\nexport function createGroupBy (props: GroupProps) {\n const groupBy = useProxiedModel(props, 'groupBy')\n\n return { groupBy }\n}\n\nexport function provideGroupBy (options: { groupBy: Ref<readonly SortItem[]>, sortBy: Ref<readonly SortItem[]> }) {\n const { groupBy, sortBy } = options\n const opened = ref(new Set<string>())\n\n const sortByWithGroups = computed(() => {\n return groupBy.value.map<SortItem>(val => ({\n ...val,\n order: val.order ?? false,\n })).concat(sortBy.value)\n })\n\n function isGroupOpen (group: Group) {\n return opened.value.has(group.id)\n }\n\n function toggleGroup (group: Group) {\n const newOpened = new Set(opened.value)\n if (!isGroupOpen(group)) newOpened.add(group.id)\n else newOpened.delete(group.id)\n\n opened.value = newOpened\n }\n\n function extractRows <T extends GroupableItem> (items: readonly (T | Group<T>)[]) {\n function dive (group: Group<T>): T[] {\n const arr = []\n\n for (const item of group.items) {\n if ('type' in item && item.type === 'group') {\n arr.push(...dive(item))\n } else {\n arr.push(item as T)\n }\n }\n\n return arr\n }\n return dive({ type: 'group', items, id: 'dummy', key: 'dummy', value: 'dummy', depth: 0 })\n }\n\n // onBeforeMount(() => {\n // for (const key of groupedItems.value.keys()) {\n // opened.value.add(key)\n // }\n // })\n\n const data = { sortByWithGroups, toggleGroup, opened, groupBy, extractRows, isGroupOpen }\n\n provide(VDataTableGroupSymbol, data)\n\n return data\n}\n\nexport function useGroupBy () {\n const data = inject(VDataTableGroupSymbol)\n\n if (!data) throw new Error('Missing group!')\n\n return data\n}\n\nfunction groupItemsByProperty <T extends GroupableItem> (items: readonly T[], groupBy: string) {\n if (!items.length) return []\n\n const groups = new Map<any, T[]>()\n for (const item of items) {\n const value = getObjectValueByPath(item.raw, groupBy)\n\n if (!groups.has(value)) {\n groups.set(value, [])\n }\n groups.get(value)!.push(item)\n }\n\n return groups\n}\n\nfunction groupItems <T extends GroupableItem> (items: readonly T[], groupBy: readonly string[], depth = 0, prefix = 'root') {\n if (!groupBy.length) return []\n\n const groupedItems = groupItemsByProperty(items, groupBy[0])\n const groups: Group<T>[] = []\n\n const rest = groupBy.slice(1)\n groupedItems.forEach((items, value) => {\n const key = groupBy[0]\n const id = `${prefix}_${key}_${value}`\n groups.push({\n depth,\n id,\n key,\n value,\n items: rest.length ? groupItems(items, rest, depth + 1, id) : items,\n type: 'group',\n })\n })\n\n return groups\n}\n\nfunction flattenItems <T extends GroupableItem> (items: readonly (T | Group<T>)[], opened: Set<string>): readonly (T | Group<T>)[] {\n const flatItems: (T | Group<T>)[] = []\n\n for (const item of items) {\n // TODO: make this better\n if ('type' in item && item.type === 'group') {\n if (item.value != null) {\n flatItems.push(item)\n }\n\n if (opened.has(item.id) || item.value == null) {\n flatItems.push(...flattenItems(item.items, opened))\n }\n } else {\n flatItems.push(item)\n }\n }\n\n return flatItems\n}\n\nexport function useGroupedItems <T extends GroupableItem> (\n items: Ref<T[]>,\n groupBy: Ref<readonly SortItem[]>,\n opened: Ref<Set<string>>\n) {\n const flatItems = computed(() => {\n if (!groupBy.value.length) return items.value\n\n const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key))\n\n return flattenItems(groupedItems, opened.value)\n })\n\n return { flatItems }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"group.mjs","names":["useProxiedModel","computed","inject","provide","ref","getObjectValueByPath","propsFactory","makeDataTableGroupProps","groupBy","type","Array","default","VDataTableGroupSymbol","Symbol","for","createGroupBy","props","provideGroupBy","options","sortBy","opened","Set","sortByWithGroups","value","map","val","order","concat","isGroupOpen","group","has","id","toggleGroup","newOpened","add","delete","extractRows","items","dive","arr","item","push","key","depth","data","useGroupBy","Error","groupItemsByProperty","length","groups","Map","raw","set","get","groupItems","arguments","undefined","prefix","groupedItems","rest","slice","forEach","flattenItems","flatItems","useGroupedItems"],"sources":["../../../../src/labs/VDataTable/composables/group.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, ref } from 'vue'\nimport { getObjectValueByPath, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { SortItem } from './sort'\nimport type { DataTableItem } from '../types'\n\nexport interface GroupableItem<T = any> {\n type: 'item'\n raw: T\n}\n\nexport interface Group<T = any> {\n type: 'group'\n depth: number\n id: string\n key: string\n value: any\n items: readonly (T | Group<T>)[]\n}\n\nexport const makeDataTableGroupProps = propsFactory({\n groupBy: {\n type: Array as PropType<readonly SortItem[]>,\n default: () => ([]),\n },\n}, 'DataTable-group')\n\nconst VDataTableGroupSymbol: InjectionKey<{\n opened: Ref<Set<string>>\n toggleGroup: (group: Group) => void\n isGroupOpen: (group: Group) => boolean\n sortByWithGroups: Ref<SortItem[]>\n groupBy: Ref<readonly SortItem[]>\n extractRows: (items: (DataTableItem | Group<DataTableItem>)[]) => DataTableItem[]\n}> = Symbol.for('vuetify:data-table-group')\n\ntype GroupProps = {\n groupBy: readonly SortItem[]\n 'onUpdate:groupBy': ((value: SortItem[]) => void) | undefined\n}\n\nexport function createGroupBy (props: GroupProps) {\n const groupBy = useProxiedModel(props, 'groupBy')\n\n return { groupBy }\n}\n\nexport function provideGroupBy (options: { groupBy: Ref<readonly SortItem[]>, sortBy: Ref<readonly SortItem[]> }) {\n const { groupBy, sortBy } = options\n const opened = ref(new Set<string>())\n\n const sortByWithGroups = computed(() => {\n return groupBy.value.map<SortItem>(val => ({\n ...val,\n order: val.order ?? false,\n })).concat(sortBy.value)\n })\n\n function isGroupOpen (group: Group) {\n return opened.value.has(group.id)\n }\n\n function toggleGroup (group: Group) {\n const newOpened = new Set(opened.value)\n if (!isGroupOpen(group)) newOpened.add(group.id)\n else newOpened.delete(group.id)\n\n opened.value = newOpened\n }\n\n function extractRows <T extends GroupableItem> (items: readonly (T | Group<T>)[]) {\n function dive (group: Group<T>): T[] {\n const arr = []\n\n for (const item of group.items) {\n if ('type' in item && item.type === 'group') {\n arr.push(...dive(item))\n } else {\n arr.push(item as T)\n }\n }\n\n return arr\n }\n return dive({ type: 'group', items, id: 'dummy', key: 'dummy', value: 'dummy', depth: 0 })\n }\n\n // onBeforeMount(() => {\n // for (const key of groupedItems.value.keys()) {\n // opened.value.add(key)\n // }\n // })\n\n const data = { sortByWithGroups, toggleGroup, opened, groupBy, extractRows, isGroupOpen }\n\n provide(VDataTableGroupSymbol, data)\n\n return data\n}\n\nexport function useGroupBy () {\n const data = inject(VDataTableGroupSymbol)\n\n if (!data) throw new Error('Missing group!')\n\n return data\n}\n\nfunction groupItemsByProperty <T extends GroupableItem> (items: readonly T[], groupBy: string) {\n if (!items.length) return []\n\n const groups = new Map<any, T[]>()\n for (const item of items) {\n const value = getObjectValueByPath(item.raw, groupBy)\n\n if (!groups.has(value)) {\n groups.set(value, [])\n }\n groups.get(value)!.push(item)\n }\n\n return groups\n}\n\nfunction groupItems <T extends GroupableItem> (items: readonly T[], groupBy: readonly string[], depth = 0, prefix = 'root') {\n if (!groupBy.length) return []\n\n const groupedItems = groupItemsByProperty(items, groupBy[0])\n const groups: Group<T>[] = []\n\n const rest = groupBy.slice(1)\n groupedItems.forEach((items, value) => {\n const key = groupBy[0]\n const id = `${prefix}_${key}_${value}`\n groups.push({\n depth,\n id,\n key,\n value,\n items: rest.length ? groupItems(items, rest, depth + 1, id) : items,\n type: 'group',\n })\n })\n\n return groups\n}\n\nfunction flattenItems <T extends GroupableItem> (items: readonly (T | Group<T>)[], opened: Set<string>): readonly (T | Group<T>)[] {\n const flatItems: (T | Group<T>)[] = []\n\n for (const item of items) {\n // TODO: make this better\n if ('type' in item && item.type === 'group') {\n if (item.value != null) {\n flatItems.push(item)\n }\n\n if (opened.has(item.id) || item.value == null) {\n flatItems.push(...flattenItems(item.items, opened))\n }\n } else {\n flatItems.push(item)\n }\n }\n\n return flatItems\n}\n\nexport function useGroupedItems <T extends GroupableItem> (\n items: Ref<T[]>,\n groupBy: Ref<readonly SortItem[]>,\n opened: Ref<Set<string>>\n) {\n const flatItems = computed(() => {\n if (!groupBy.value.length) return items.value\n\n const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key))\n\n return flattenItems(groupedItems, opened.value)\n })\n\n return { flatItems }\n}\n"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export const makeDataTableHeaderProps = propsFactory({
|
|
|
6
6
|
type: Array,
|
|
7
7
|
default: () => []
|
|
8
8
|
}
|
|
9
|
-
}, '
|
|
9
|
+
}, 'DataTable-header');
|
|
10
10
|
export const VDataTableHeadersSymbol = Symbol.for('vuetify:data-table-headers');
|
|
11
11
|
export function createHeaders(props, options) {
|
|
12
12
|
const headers = ref([]);
|
|
@@ -108,7 +108,7 @@ export function createHeaders(props, options) {
|
|
|
108
108
|
fixedOffset: fixedOffsets[i],
|
|
109
109
|
sortable: column.sortable ?? !!column.key
|
|
110
110
|
});
|
|
111
|
-
fixedOffsets[i] += column.width ?? 0;
|
|
111
|
+
fixedOffsets[i] += Number(column.width ?? 0);
|
|
112
112
|
}
|
|
113
113
|
});
|
|
114
114
|
fixedRows.forEach(row => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headers.mjs","names":["inject","provide","ref","watch","createRange","propsFactory","makeDataTableHeaderProps","headers","type","Array","default","VDataTableHeadersSymbol","Symbol","for","createHeaders","props","options","columns","wrapped","length","isArray","flat","flatMap","row","index","map","column","rowCount","defaultHeader","title","sortable","defaultActionHeader","width","groupBy","value","findIndex","_ref","key","unshift","rowspan","splice","showSelect","_ref2","showExpand","_ref3","push","fixedRows","fixedOffsets","fill","forEach","_ref4","i","fixedOffset","fixed","lastFixed","seen","Set","filtered","has","add","at","deep","immediate","data","useHeaders","Error"],"sources":["../../../../src/labs/VDataTable/composables/headers.ts"],"sourcesContent":["// Utilities\nimport { inject, provide, ref, watch } from 'vue'\nimport { createRange, propsFactory } from '@/util'\n\n// Types\nimport type { DeepReadonly, InjectionKey, PropType, Ref } from 'vue'\nimport type {
|
|
1
|
+
{"version":3,"file":"headers.mjs","names":["inject","provide","ref","watch","createRange","propsFactory","makeDataTableHeaderProps","headers","type","Array","default","VDataTableHeadersSymbol","Symbol","for","createHeaders","props","options","columns","wrapped","length","isArray","flat","flatMap","row","index","map","column","rowCount","defaultHeader","title","sortable","defaultActionHeader","width","groupBy","value","findIndex","_ref","key","unshift","rowspan","splice","showSelect","_ref2","showExpand","_ref3","push","fixedRows","fixedOffsets","fill","forEach","_ref4","i","fixedOffset","Number","fixed","lastFixed","seen","Set","filtered","has","add","at","deep","immediate","data","useHeaders","Error"],"sources":["../../../../src/labs/VDataTable/composables/headers.ts"],"sourcesContent":["// Utilities\nimport { inject, provide, ref, watch } from 'vue'\nimport { createRange, propsFactory } from '@/util'\n\n// Types\nimport type { DeepReadonly, InjectionKey, PropType, Ref } from 'vue'\nimport type { SortItem } from './sort'\nimport type { DataTableHeader, InternalDataTableHeader } from '../types'\n\nexport const makeDataTableHeaderProps = propsFactory({\n headers: {\n type: Array as PropType<DeepReadonly<DataTableHeader[] | DataTableHeader[][]>>,\n default: () => ([]),\n },\n}, 'DataTable-header')\n\nexport const VDataTableHeadersSymbol: InjectionKey<{\n headers: Ref<InternalDataTableHeader[][]>\n columns: Ref<InternalDataTableHeader[]>\n}> = Symbol.for('vuetify:data-table-headers')\n\ntype HeaderProps = {\n headers: DeepReadonly<DataTableHeader[] | DataTableHeader[][]>\n}\n\nexport function createHeaders (\n props: HeaderProps,\n options?: {\n groupBy?: Ref<readonly SortItem[]>\n showSelect?: Ref<boolean>\n showExpand?: Ref<boolean>\n }\n) {\n const headers = ref<InternalDataTableHeader[][]>([])\n const columns = ref<InternalDataTableHeader[]>([])\n\n watch(() => props.headers, () => {\n const wrapped = !props.headers.length\n ? []\n : Array.isArray(props.headers[0])\n ? props.headers as DataTableHeader[][]\n : [props.headers as DataTableHeader[]]\n const flat = wrapped.flatMap((row, index) => row.map(column => ({ column, row: index })))\n\n const rowCount = wrapped.length\n const defaultHeader = { title: '', sortable: false }\n const defaultActionHeader = { ...defaultHeader, width: 48 }\n\n if (options?.groupBy?.value.length) {\n const index = flat.findIndex(({ column }) => column.key === 'data-table-group')\n if (index < 0) flat.unshift({ column: { ...defaultHeader, key: 'data-table-group', title: 'Group', rowspan: rowCount }, row: 0 })\n else flat.splice(index, 1, { column: { ...defaultHeader, ...flat[index].column }, row: flat[index].row })\n }\n\n if (options?.showSelect?.value) {\n const index = flat.findIndex(({ column }) => column.key === 'data-table-select')\n if (index < 0) flat.unshift({ column: { ...defaultActionHeader, key: 'data-table-select', rowspan: rowCount }, row: 0 })\n else flat.splice(index, 1, { column: { ...defaultActionHeader, ...flat[index].column }, row: flat[index].row })\n }\n\n if (options?.showExpand?.value) {\n const index = flat.findIndex(({ column }) => column.key === 'data-table-expand')\n if (index < 0) flat.push({ column: { ...defaultActionHeader, key: 'data-table-expand', rowspan: rowCount }, row: 0 })\n else flat.splice(index, 1, { column: { ...defaultActionHeader, ...flat[index].column }, row: flat[index].row })\n }\n\n const fixedRows: InternalDataTableHeader[][] = createRange(rowCount).map(() => [])\n const fixedOffsets = createRange(rowCount).fill(0)\n\n flat.forEach(({ column, row }) => {\n const key = column.key\n for (let i = row; i <= row + (column.rowspan ?? 1) - 1; i++) {\n fixedRows[i].push({\n ...column,\n key,\n fixedOffset: fixedOffsets[i],\n sortable: column.sortable ?? !!column.key,\n })\n\n fixedOffsets[i] += Number(column.width ?? 0)\n }\n })\n\n fixedRows.forEach(row => {\n for (let i = row.length; i--; i >= 0) {\n if (row[i].fixed) {\n row[i].lastFixed = true\n return\n }\n }\n })\n\n const seen = new Set()\n headers.value = fixedRows.map(row => {\n const filtered = []\n for (const column of row) {\n if (!seen.has(column.key)) {\n seen.add(column.key)\n filtered.push(column)\n }\n }\n\n return filtered\n })\n\n columns.value = fixedRows.at(-1) ?? []\n }, {\n deep: true,\n immediate: true,\n })\n\n const data = { headers, columns }\n\n provide(VDataTableHeadersSymbol, data)\n\n return data\n}\n\nexport function useHeaders () {\n const data = inject(VDataTableHeadersSymbol)\n\n if (!data) throw new Error('Missing headers!')\n\n return data\n}\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { computed } from 'vue';
|
|
3
3
|
import { getPropertyFromItem, propsFactory } from "../../../util/index.mjs"; // Types
|
|
4
4
|
// Composables
|
|
5
|
-
export const
|
|
5
|
+
export const makeDataTableItemsProps = propsFactory({
|
|
6
6
|
items: {
|
|
7
7
|
type: Array,
|
|
8
8
|
default: () => []
|
|
@@ -16,8 +16,8 @@ export const makeDataTableItemProps = propsFactory({
|
|
|
16
16
|
default: null
|
|
17
17
|
},
|
|
18
18
|
returnObject: Boolean
|
|
19
|
-
}, '
|
|
20
|
-
export function transformItem(props, item, columns) {
|
|
19
|
+
}, 'DataTable-items');
|
|
20
|
+
export function transformItem(props, item, index, columns) {
|
|
21
21
|
const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue);
|
|
22
22
|
const selectable = getPropertyFromItem(item, props.itemSelectable, true);
|
|
23
23
|
const itemColumns = columns.reduce((obj, column) => {
|
|
@@ -26,6 +26,7 @@ export function transformItem(props, item, columns) {
|
|
|
26
26
|
}, {});
|
|
27
27
|
return {
|
|
28
28
|
type: 'item',
|
|
29
|
+
index,
|
|
29
30
|
value,
|
|
30
31
|
selectable,
|
|
31
32
|
columns: itemColumns,
|
|
@@ -33,11 +34,7 @@ export function transformItem(props, item, columns) {
|
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
36
|
export function transformItems(props, items, columns) {
|
|
36
|
-
|
|
37
|
-
for (const item of items) {
|
|
38
|
-
array.push(transformItem(props, item, columns));
|
|
39
|
-
}
|
|
40
|
-
return array;
|
|
37
|
+
return items.map((item, index) => transformItem(props, item, index, columns));
|
|
41
38
|
}
|
|
42
39
|
export function useDataTableItems(props, columns) {
|
|
43
40
|
const items = computed(() => transformItems(props, props.items, columns.value));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"items.mjs","names":["computed","getPropertyFromItem","propsFactory","
|
|
1
|
+
{"version":3,"file":"items.mjs","names":["computed","getPropertyFromItem","propsFactory","makeDataTableItemsProps","items","type","Array","default","itemValue","String","Function","itemSelectable","returnObject","Boolean","transformItem","props","item","index","columns","value","selectable","itemColumns","reduce","obj","column","key","raw","transformItems","map","useDataTableItems"],"sources":["../../../../src/labs/VDataTable/composables/items.ts"],"sourcesContent":["// Utilities\nimport { computed } from 'vue'\nimport { getPropertyFromItem, propsFactory } from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { DataTableItem, InternalDataTableHeader } from '../types'\nimport type { SelectItemKey } from '@/util'\n\nexport interface DataTableItemProps {\n items: any[]\n itemValue: SelectItemKey\n itemSelectable: SelectItemKey\n returnObject: boolean\n}\n\n// Composables\nexport const makeDataTableItemsProps = propsFactory({\n items: {\n type: Array as PropType<DataTableItemProps['items']>,\n default: () => ([]),\n },\n itemValue: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'id',\n },\n itemSelectable: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: null,\n },\n returnObject: Boolean,\n}, 'DataTable-items')\n\nexport function transformItem (\n props: Omit<DataTableItemProps, 'items'>,\n item: any,\n index: number,\n columns: InternalDataTableHeader[]\n): DataTableItem {\n const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue)\n const selectable = getPropertyFromItem(item, props.itemSelectable, true)\n const itemColumns = columns.reduce((obj, column) => {\n obj[column.key] = getPropertyFromItem(item, column.value ?? column.key)\n return obj\n }, {} as Record<string, unknown>)\n\n return {\n type: 'item',\n index,\n value,\n selectable,\n columns: itemColumns,\n raw: item,\n }\n}\n\nexport function transformItems (\n props: Omit<DataTableItemProps, 'items'>,\n items: DataTableItemProps['items'],\n columns: InternalDataTableHeader[]\n): DataTableItem[] {\n return items.map((item, index) => transformItem(props, item, index, columns))\n}\n\nexport function useDataTableItems (props: DataTableItemProps, columns: Ref<InternalDataTableHeader[]>) {\n const items = computed(() => transformItems(props, props.items, columns.value))\n\n return { items }\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,QAAQ,KAAK;AAAA,SACrBC,mBAAmB,EAAEC,YAAY,mCAE1C;AAYA;AACA,OAAO,MAAMC,uBAAuB,GAAGD,YAAY,CAAC;EAClDE,KAAK,EAAE;IACLC,IAAI,EAAEC,KAA8C;IACpDC,OAAO,EAAEA,CAAA,KAAO;EAClB,CAAC;EACDC,SAAS,EAAE;IACTH,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAA4B;IAC1DH,OAAO,EAAE;EACX,CAAC;EACDI,cAAc,EAAE;IACdN,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAA4B;IAC1DH,OAAO,EAAE;EACX,CAAC;EACDK,YAAY,EAAEC;AAChB,CAAC,EAAE,iBAAiB,CAAC;AAErB,OAAO,SAASC,aAAaA,CAC3BC,KAAwC,EACxCC,IAAS,EACTC,KAAa,EACbC,OAAkC,EACnB;EACf,MAAMC,KAAK,GAAGJ,KAAK,CAACH,YAAY,GAAGI,IAAI,GAAGf,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACP,SAAS,CAAC;EACpF,MAAMY,UAAU,GAAGnB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACJ,cAAc,EAAE,IAAI,CAAC;EACxE,MAAMU,WAAW,GAAGH,OAAO,CAACI,MAAM,CAAC,CAACC,GAAG,EAAEC,MAAM,KAAK;IAClDD,GAAG,CAACC,MAAM,CAACC,GAAG,CAAC,GAAGxB,mBAAmB,CAACe,IAAI,EAAEQ,MAAM,CAACL,KAAK,IAAIK,MAAM,CAACC,GAAG,CAAC;IACvE,OAAOF,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAA4B;EAEjC,OAAO;IACLlB,IAAI,EAAE,MAAM;IACZY,KAAK;IACLE,KAAK;IACLC,UAAU;IACVF,OAAO,EAAEG,WAAW;IACpBK,GAAG,EAAEV;EACP,CAAC;AACH;AAEA,OAAO,SAASW,cAAcA,CAC5BZ,KAAwC,EACxCX,KAAkC,EAClCc,OAAkC,EACjB;EACjB,OAAOd,KAAK,CAACwB,GAAG,CAAC,CAACZ,IAAI,EAAEC,KAAK,KAAKH,aAAa,CAACC,KAAK,EAAEC,IAAI,EAAEC,KAAK,EAAEC,OAAO,CAAC,CAAC;AAC/E;AAEA,OAAO,SAASW,iBAAiBA,CAAEd,KAAyB,EAAEG,OAAuC,EAAE;EACrG,MAAMd,KAAK,GAAGJ,QAAQ,CAAC,MAAM2B,cAAc,CAACZ,KAAK,EAAEA,KAAK,CAACX,KAAK,EAAEc,OAAO,CAACC,KAAK,CAAC,CAAC;EAE/E,OAAO;IAAEf;EAAM,CAAC;AAClB"}
|
|
@@ -11,7 +11,7 @@ export const makeDataTablePaginateProps = propsFactory({
|
|
|
11
11
|
type: [Number, String],
|
|
12
12
|
default: 10
|
|
13
13
|
}
|
|
14
|
-
}, '
|
|
14
|
+
}, 'DataTable-paginate');
|
|
15
15
|
const VDataTablePaginationSymbol = Symbol.for('vuetify:data-table-pagination');
|
|
16
16
|
export function createPagination(props) {
|
|
17
17
|
const page = useProxiedModel(props, 'page', undefined, value => +(value ?? 1));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paginate.mjs","names":["useProxiedModel","computed","inject","provide","watchEffect","clamp","propsFactory","makeDataTablePaginateProps","page","type","Number","String","default","itemsPerPage","VDataTablePaginationSymbol","Symbol","for","createPagination","props","undefined","value","providePagination","options","itemsLength","startIndex","stopIndex","Math","min","pageCount","ceil","setItemsPerPage","nextPage","prevPage","setPage","data","usePagination","Error","usePaginatedItems","items","paginatedItems","slice"],"sources":["../../../../src/labs/VDataTable/composables/paginate.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, watchEffect } from 'vue'\nimport { clamp, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\nimport type { Group } from './group'\n\nexport const makeDataTablePaginateProps = propsFactory({\n page: {\n type: [Number, String],\n default: 1,\n },\n itemsPerPage: {\n type: [Number, String],\n default: 10,\n },\n}, '
|
|
1
|
+
{"version":3,"file":"paginate.mjs","names":["useProxiedModel","computed","inject","provide","watchEffect","clamp","propsFactory","makeDataTablePaginateProps","page","type","Number","String","default","itemsPerPage","VDataTablePaginationSymbol","Symbol","for","createPagination","props","undefined","value","providePagination","options","itemsLength","startIndex","stopIndex","Math","min","pageCount","ceil","setItemsPerPage","nextPage","prevPage","setPage","data","usePagination","Error","usePaginatedItems","items","paginatedItems","slice"],"sources":["../../../../src/labs/VDataTable/composables/paginate.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, watchEffect } from 'vue'\nimport { clamp, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\nimport type { Group } from './group'\n\nexport const makeDataTablePaginateProps = propsFactory({\n page: {\n type: [Number, String],\n default: 1,\n },\n itemsPerPage: {\n type: [Number, String],\n default: 10,\n },\n}, 'DataTable-paginate')\n\nconst VDataTablePaginationSymbol: InjectionKey<{\n page: Ref<number>\n itemsPerPage: Ref<number>\n startIndex: Ref<number>\n stopIndex: Ref<number>\n pageCount: Ref<number>\n itemsLength: Ref<number>\n prevPage: () => void\n nextPage: () => void\n setPage: (value: number) => void\n setItemsPerPage: (value: number) => void\n}> = Symbol.for('vuetify:data-table-pagination')\n\ntype PaginationProps = {\n page: number | string\n 'onUpdate:page': ((val: any) => void) | undefined\n itemsPerPage: number | string\n 'onUpdate:itemsPerPage': ((val: any) => void) | undefined\n itemsLength?: number | string\n}\n\nexport function createPagination (props: PaginationProps) {\n const page = useProxiedModel(props, 'page', undefined, value => +(value ?? 1))\n const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => +(value ?? 10))\n\n return { page, itemsPerPage }\n}\n\nexport function providePagination (options: {\n page: Ref<number>\n itemsPerPage: Ref<number>\n itemsLength: Ref<number>\n}) {\n const { page, itemsPerPage, itemsLength } = options\n\n const startIndex = computed(() => {\n if (itemsPerPage.value === -1) return 0\n\n return itemsPerPage.value * (page.value - 1)\n })\n const stopIndex = computed(() => {\n if (itemsPerPage.value === -1) return itemsLength.value\n\n return Math.min(itemsLength.value, startIndex.value + itemsPerPage.value)\n })\n\n const pageCount = computed(() => {\n if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1\n\n return Math.ceil(itemsLength.value / itemsPerPage.value)\n })\n\n watchEffect(() => {\n if (page.value > pageCount.value) {\n page.value = pageCount.value\n }\n })\n\n function setItemsPerPage (value: number) {\n itemsPerPage.value = value\n page.value = 1\n }\n\n function nextPage () {\n page.value = clamp(page.value + 1, 1, pageCount.value)\n }\n\n function prevPage () {\n page.value = clamp(page.value - 1, 1, pageCount.value)\n }\n\n function setPage (value: number) {\n page.value = clamp(value, 1, pageCount.value)\n }\n\n const data = { page, itemsPerPage, startIndex, stopIndex, pageCount, itemsLength, nextPage, prevPage, setPage, setItemsPerPage }\n\n provide(VDataTablePaginationSymbol, data)\n\n return data\n}\n\nexport function usePagination () {\n const data = inject(VDataTablePaginationSymbol)\n\n if (!data) throw new Error('Missing pagination!')\n\n return data\n}\n\nexport function usePaginatedItems <T> (options: {\n items: Ref<readonly (T | Group<T>)[]>\n startIndex: Ref<number>\n stopIndex: Ref<number>\n itemsPerPage: Ref<number>\n}) {\n const { items, startIndex, stopIndex, itemsPerPage } = options\n const paginatedItems = computed(() => {\n if (itemsPerPage.value <= 0) return items.value\n\n return items.value.slice(startIndex.value, stopIndex.value)\n })\n\n return { paginatedItems }\n}\n"],"mappings":"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"}
|
|
@@ -92,7 +92,7 @@ export const makeDataTableSelectProps = propsFactory({
|
|
|
92
92
|
type: Array,
|
|
93
93
|
default: () => []
|
|
94
94
|
}
|
|
95
|
-
}, '
|
|
95
|
+
}, 'DataTable-select');
|
|
96
96
|
export const VDataTableSelectionSymbol = Symbol.for('vuetify:data-table-selection');
|
|
97
97
|
export function provideSelection(props, _ref9) {
|
|
98
98
|
let {
|