vuetify 3.2.5 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_component-variables-labs.sass +1 -0
- package/dist/json/attributes.json +2503 -2151
- package/dist/json/importMap-labs.json +12 -4
- package/dist/json/importMap.json +22 -22
- package/dist/json/tags.json +107 -9
- package/dist/json/web-types.json +10785 -7110
- package/dist/vuetify-labs.css +676 -570
- package/dist/vuetify-labs.d.ts +33308 -18176
- package/dist/vuetify-labs.esm.js +1466 -934
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +1465 -933
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +237 -163
- package/dist/vuetify.d.ts +23935 -13654
- package/dist/vuetify.esm.js +477 -300
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +476 -299
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +811 -806
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/{index.d.ts → index.d.mts} +5 -1
- package/lib/blueprints/{md1.d.ts → md1.d.mts} +5 -1
- package/lib/blueprints/{md2.d.ts → md2.d.mts} +5 -1
- package/lib/blueprints/{md3.d.ts → md3.d.mts} +5 -1
- package/lib/components/VAlert/VAlert.mjs.map +1 -1
- package/lib/components/VAlert/{index.d.ts → index.d.mts} +240 -77
- package/lib/components/VApp/{index.d.ts → index.d.mts} +65 -20
- package/lib/components/VAppBar/{index.d.ts → index.d.mts} +316 -128
- package/lib/components/VAutocomplete/VAutocomplete.css +15 -9
- package/lib/components/VAutocomplete/VAutocomplete.mjs +82 -34
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +15 -11
- package/lib/components/VAutocomplete/index.d.mts +2048 -0
- package/lib/components/VAvatar/{index.d.ts → index.d.mts} +70 -31
- package/lib/components/VBadge/_variables.scss +1 -1
- package/lib/components/VBadge/{index.d.ts → index.d.mts} +87 -44
- package/lib/components/VBanner/{index.d.ts → index.d.mts} +227 -68
- package/lib/components/VBottomNavigation/{index.d.ts → index.d.mts} +78 -46
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/{index.d.ts → index.d.mts} +312 -212
- package/lib/components/VBtn/{index.d.ts → index.d.mts} +113 -55
- package/lib/components/VBtnGroup/{index.d.ts → index.d.mts} +69 -28
- package/lib/components/VBtnToggle/{index.d.ts → index.d.mts} +73 -36
- package/lib/components/VCalendar/util/props.mjs.map +1 -1
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/{index.d.ts → index.d.mts} +902 -508
- package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
- package/lib/components/VCarousel/{index.d.ts → index.d.mts} +503 -126
- package/lib/components/VCheckbox/VCheckboxBtn.mjs +3 -3
- package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
- package/lib/components/VCheckbox/{index.d.ts → index.d.mts} +336 -153
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChip/{index.d.ts → index.d.mts} +354 -91
- package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
- package/lib/components/VChipGroup/index.d.mts +470 -0
- package/lib/components/VCode/{index.d.ts → index.d.mts} +63 -18
- package/lib/components/VColorPicker/VColorPicker.mjs +9 -4
- package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs +5 -4
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
- package/lib/components/VColorPicker/{index.d.ts → index.d.mts} +241 -109
- package/lib/components/VColorPicker/util/index.mjs +2 -22
- package/lib/components/VColorPicker/util/index.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.css +15 -9
- package/lib/components/VCombobox/VCombobox.mjs +82 -37
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +15 -11
- package/lib/components/VCombobox/index.d.mts +2060 -0
- package/lib/components/VCounter/VCounter.mjs.map +1 -1
- package/lib/components/VCounter/{index.d.ts → index.d.mts} +94 -50
- package/lib/components/VDefaultsProvider/{index.d.ts → index.d.mts} +67 -21
- package/lib/components/VDialog/{index.d.ts → index.d.mts} +457 -321
- package/lib/components/VDivider/{index.d.ts → index.d.mts} +66 -22
- package/lib/components/VExpansionPanel/{index.d.ts → index.d.mts} +304 -116
- package/lib/components/VField/VField.css +49 -16
- package/lib/components/VField/VField.mjs +12 -2
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VField/VField.sass +40 -11
- package/lib/components/VField/_variables.scss +8 -2
- package/lib/components/VField/index.d.mts +682 -0
- package/lib/components/VFileInput/VFileInput.css +3 -0
- package/lib/components/VFileInput/VFileInput.mjs +7 -1
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.sass +6 -1
- package/lib/components/VFileInput/{index.d.ts → index.d.mts} +938 -419
- package/lib/components/VFooter/{index.d.ts → index.d.mts} +70 -30
- package/lib/components/VForm/VForm.mjs.map +1 -1
- package/lib/components/VForm/index.d.mts +993 -0
- package/lib/components/VGrid/{index.d.ts → index.d.mts} +280 -110
- package/lib/components/VHover/VHover.mjs.map +1 -1
- package/lib/components/VHover/{index.d.ts → index.d.mts} +97 -42
- package/lib/components/VIcon/{index.d.ts → index.d.mts} +292 -83
- package/lib/components/VImg/VImg.css +2 -4
- package/lib/components/VImg/VImg.mjs +25 -24
- package/lib/components/VImg/VImg.mjs.map +1 -1
- package/lib/components/VImg/VImg.sass +4 -3
- package/lib/components/VImg/{index.d.ts → index.d.mts} +150 -41
- package/lib/components/VInput/VInput.css +10 -4
- package/lib/components/VInput/VInput.mjs +9 -3
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VInput/VInput.sass +7 -2
- package/lib/components/VInput/_variables.scss +1 -0
- package/lib/components/VInput/{index.d.ts → index.d.mts} +211 -95
- package/lib/components/VItemGroup/VItem.mjs +1 -1
- package/lib/components/VItemGroup/VItem.mjs.map +1 -1
- package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
- package/lib/components/VItemGroup/index.d.mts +781 -0
- package/lib/components/VKbd/{index.d.ts → index.d.mts} +63 -18
- package/lib/components/VLabel/{index.d.ts → index.d.mts} +64 -19
- package/lib/components/VLayout/{index.d.ts → index.d.mts} +131 -44
- package/lib/components/VLazy/{index.d.ts → index.d.mts} +67 -28
- package/lib/components/VList/VList.mjs +6 -1
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VListChildren.mjs +4 -8
- package/lib/components/VList/VListChildren.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs +3 -0
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListItem.mjs +11 -6
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/{index.d.ts → index.d.mts} +1148 -686
- package/lib/components/VLocaleProvider/{index.d.ts → index.d.mts} +65 -20
- package/lib/components/VMain/{index.d.ts → index.d.mts} +64 -20
- package/lib/components/VMenu/{index.d.ts → index.d.mts} +453 -315
- package/lib/components/VMessages/VMessages.mjs.map +1 -1
- package/lib/components/VMessages/{index.d.ts → index.d.mts} +73 -36
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/{index.d.ts → index.d.mts} +113 -59
- package/lib/components/VOverlay/{index.d.ts → index.d.mts} +123 -79
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VPagination/{index.d.ts → index.d.mts} +218 -146
- package/lib/components/VParallax/{index.d.ts → index.d.mts} +91 -19
- package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
- package/lib/components/VProgressCircular/{index.d.ts → index.d.mts} +137 -50
- package/lib/components/VProgressLinear/{index.d.ts → index.d.mts} +92 -53
- package/lib/components/VRadio/{index.d.ts → index.d.mts} +109 -46
- package/lib/components/VRadioGroup/{index.d.ts → index.d.mts} +223 -99
- package/lib/components/VRangeSlider/VRangeSlider.mjs +4 -4
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VRangeSlider/{index.d.ts → index.d.mts} +281 -136
- package/lib/components/VRating/{index.d.ts → index.d.mts} +90 -51
- package/lib/components/VResponsive/VResponsive.css +13 -5
- package/lib/components/VResponsive/VResponsive.mjs +4 -1
- package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
- package/lib/components/VResponsive/VResponsive.sass +12 -4
- package/lib/components/VResponsive/{index.d.ts → index.d.mts} +80 -17
- package/lib/components/VSelect/VSelect.css +15 -9
- package/lib/components/VSelect/VSelect.mjs +23 -18
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.sass +14 -11
- package/lib/components/VSelect/index.d.mts +1986 -0
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSelectionControl/{index.d.ts → index.d.mts} +195 -183
- package/lib/components/VSelectionControlGroup/{index.d.ts → index.d.mts} +75 -39
- package/lib/components/VSheet/{index.d.ts → index.d.mts} +66 -22
- package/lib/components/VSlideGroup/{index.d.ts → index.d.mts} +178 -63
- package/lib/components/VSlider/VSlider.mjs +2 -2
- package/lib/components/VSlider/VSlider.mjs.map +1 -1
- package/lib/components/VSlider/VSliderThumb.mjs +1 -1
- package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
- package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
- package/lib/components/VSlider/{index.d.ts → index.d.mts} +276 -130
- package/lib/components/VSlider/slider.mjs +8 -2
- package/lib/components/VSlider/slider.mjs.map +1 -1
- package/lib/components/VSnackbar/{index.d.ts → index.d.mts} +457 -314
- package/lib/components/VSwitch/{index.d.ts → index.d.mts} +238 -107
- package/lib/components/VSystemBar/{index.d.ts → index.d.mts} +69 -28
- package/lib/components/VTable/{index.d.ts → index.d.mts} +98 -30
- package/lib/components/VTabs/VTabs.mjs.map +1 -1
- package/lib/components/VTabs/{index.d.ts → index.d.mts} +173 -115
- package/lib/components/VTextField/VTextField.css +9 -1
- package/lib/components/VTextField/VTextField.mjs +4 -2
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/VTextField.sass +8 -1
- package/lib/components/VTextField/{index.d.ts → index.d.mts} +1430 -871
- package/lib/components/VTextarea/VTextarea.mjs +13 -4
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTextarea/{index.d.ts → index.d.mts} +849 -416
- package/lib/components/VThemeProvider/{index.d.ts → index.d.mts} +65 -21
- package/lib/components/VTimeline/{index.d.ts → index.d.mts} +165 -66
- package/lib/components/VToolbar/{index.d.ts → index.d.mts} +260 -80
- package/lib/components/VTooltip/{index.d.ts → index.d.mts} +454 -313
- package/lib/components/VValidation/VValidation.mjs.map +1 -1
- package/lib/components/VValidation/index.d.mts +634 -0
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
- package/lib/components/VVirtualScroll/index.d.mts +229 -0
- package/lib/components/VWindow/{index.d.ts → index.d.mts} +200 -73
- package/lib/components/{index.d.ts → index.d.mts} +24064 -13789
- package/lib/components/index.mjs +2 -3
- package/lib/components/index.mjs.map +1 -1
- package/lib/components/transitions/{index.d.ts → index.d.mts} +1090 -371
- package/lib/composables/display.mjs +6 -6
- package/lib/composables/display.mjs.map +1 -1
- package/lib/composables/filter.mjs +5 -4
- package/lib/composables/filter.mjs.map +1 -1
- package/lib/composables/form.mjs +2 -3
- package/lib/composables/form.mjs.map +1 -1
- package/lib/composables/forwardRefs.mjs.map +1 -1
- package/lib/composables/group.mjs +13 -13
- package/lib/composables/group.mjs.map +1 -1
- package/lib/composables/icons.mjs.map +1 -1
- package/lib/composables/{items.mjs → list-items.mjs} +9 -6
- package/lib/composables/list-items.mjs.map +1 -0
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/nested/selectStrategies.mjs.map +1 -1
- package/lib/composables/scroll.mjs +2 -2
- package/lib/composables/scroll.mjs.map +1 -1
- package/lib/composables/validation.mjs +44 -16
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/framework.mjs.map +1 -1
- package/lib/{index.d.ts → index.d.mts} +14 -8
- package/lib/labs/VBottomSheet/VBottomSheet.css +33 -0
- package/lib/labs/VBottomSheet/VBottomSheet.mjs +40 -0
- package/lib/labs/VBottomSheet/VBottomSheet.mjs.map +1 -0
- package/lib/labs/VBottomSheet/VBottomSheet.sass +37 -0
- package/lib/labs/VBottomSheet/_variables.scss +5 -0
- package/lib/labs/VBottomSheet/index.d.mts +871 -0
- package/lib/labs/VBottomSheet/index.mjs +2 -0
- package/lib/labs/VBottomSheet/index.mjs.map +1 -0
- package/lib/labs/VDataIterator/VDataIterator.mjs +160 -0
- package/lib/labs/VDataIterator/VDataIterator.mjs.map +1 -0
- package/lib/labs/VDataIterator/composables/items.mjs +37 -0
- package/lib/labs/VDataIterator/composables/items.mjs.map +1 -0
- package/lib/labs/VDataIterator/index.d.mts +704 -0
- package/lib/labs/VDataIterator/index.mjs +2 -0
- package/lib/labs/VDataIterator/index.mjs.map +1 -0
- package/lib/labs/VDataTable/VDataTable.mjs +58 -20
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableHeaders.mjs +17 -10
- package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +50 -14
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +50 -13
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/group.mjs +8 -6
- package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/headers.mjs +2 -3
- package/lib/labs/VDataTable/composables/headers.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/items.mjs +31 -32
- package/lib/labs/VDataTable/composables/items.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/paginate.mjs +14 -2
- package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/select.mjs +3 -3
- package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/sort.mjs +17 -17
- package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/virtual.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.mts +9681 -0
- package/lib/labs/VDataTable/index.mjs +1 -1
- package/lib/labs/VDataTable/index.mjs.map +1 -1
- package/lib/labs/VDataTable/types.mjs.map +1 -1
- package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -1
- package/lib/labs/VInfiniteScroll/{index.d.ts → index.d.mts} +136 -61
- package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
- package/lib/labs/VSkeletonLoader/{index.d.ts → index.d.mts} +77 -32
- package/lib/labs/components.d.mts +11806 -0
- package/lib/labs/components.mjs +2 -0
- package/lib/labs/components.mjs.map +1 -1
- package/lib/labs/date/date.mjs.map +1 -1
- package/lib/labs/date/index.d.mts +70 -0
- package/lib/labs/date/index.mjs +1 -1
- package/lib/labs/date/index.mjs.map +1 -1
- package/lib/util/colorUtils.mjs +68 -3
- package/lib/util/colorUtils.mjs.map +1 -1
- package/lib/util/console.mjs +12 -81
- package/lib/util/console.mjs.map +1 -1
- package/lib/util/defineComponent.mjs.map +1 -1
- package/lib/util/helpers.mjs +4 -18
- package/lib/util/helpers.mjs.map +1 -1
- package/lib/util/propsFactory.mjs +2 -0
- package/lib/util/propsFactory.mjs.map +1 -1
- package/package.json +13 -9
- package/lib/components/VAutocomplete/index.d.ts +0 -2114
- package/lib/components/VBottomSheet/VBottomSheet.mjs +0 -29
- package/lib/components/VBottomSheet/VBottomSheet.mjs.map +0 -1
- package/lib/components/VBottomSheet/VBottomSheet.sass +0 -23
- package/lib/components/VBottomSheet/_variables.scss +0 -3
- package/lib/components/VBottomSheet/index.mjs +0 -4
- package/lib/components/VBottomSheet/index.mjs.map +0 -1
- package/lib/components/VChipGroup/index.d.ts +0 -296
- package/lib/components/VCombobox/index.d.ts +0 -2150
- package/lib/components/VData/VData.mjs +0 -374
- package/lib/components/VData/VData.mjs.map +0 -1
- package/lib/components/VData/index.mjs +0 -4
- package/lib/components/VData/index.mjs.map +0 -1
- package/lib/components/VDataIterator/VDataFooter.mjs +0 -194
- package/lib/components/VDataIterator/VDataFooter.mjs.map +0 -1
- package/lib/components/VDataIterator/VDataFooter.sass +0 -71
- package/lib/components/VDataIterator/VDataIterator.mjs +0 -316
- package/lib/components/VDataIterator/VDataIterator.mjs.map +0 -1
- package/lib/components/VDataIterator/_variables.scss +0 -13
- package/lib/components/VDataIterator/index.mjs +0 -10
- package/lib/components/VDataIterator/index.mjs.map +0 -1
- package/lib/components/VField/index.d.ts +0 -583
- package/lib/components/VForm/index.d.ts +0 -300
- package/lib/components/VItemGroup/index.d.ts +0 -428
- package/lib/components/VSelect/index.d.ts +0 -2045
- package/lib/components/VValidation/index.d.ts +0 -259
- package/lib/components/VVirtualScroll/index.d.ts +0 -201
- package/lib/composables/items.mjs.map +0 -1
- package/lib/labs/VDataTable/index.d.ts +0 -6307
- package/lib/labs/components.d.ts +0 -6885
- package/lib/labs/date/index.d.ts +0 -38
- /package/lib/components/VNoSsr/{index.d.ts → index.d.mts} +0 -0
- /package/lib/directives/{index.d.ts → index.d.mts} +0 -0
- /package/lib/iconsets/{fa-svg.d.ts → fa-svg.d.mts} +0 -0
- /package/lib/iconsets/{fa.d.ts → fa.d.mts} +0 -0
- /package/lib/iconsets/{fa4.d.ts → fa4.d.mts} +0 -0
- /package/lib/iconsets/{md.d.ts → md.d.mts} +0 -0
- /package/lib/iconsets/{mdi-svg.d.ts → mdi-svg.d.mts} +0 -0
- /package/lib/iconsets/{mdi.d.ts → mdi.d.mts} +0 -0
- /package/lib/labs/date/adapters/{vuetify.d.ts → vuetify.d.mts} +0 -0
- /package/lib/locale/adapters/{vue-i18n.d.ts → vue-i18n.d.mts} +0 -0
- /package/lib/locale/adapters/{vuetify.d.ts → vuetify.d.mts} +0 -0
- /package/lib/locale/{index.d.ts → index.d.mts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["VDataIterator"],"sources":["../../../src/labs/VDataIterator/index.ts"],"sourcesContent":["export { VDataIterator } from './VDataIterator'\n"],"mappings":"SAASA,aAAa"}
|
|
@@ -6,7 +6,7 @@ import "./VDataTable.css";
|
|
|
6
6
|
import { makeVDataTableFooterProps, VDataTableFooter } from "./VDataTableFooter.mjs";
|
|
7
7
|
import { makeVDataTableHeadersProps, VDataTableHeaders } from "./VDataTableHeaders.mjs";
|
|
8
8
|
import { makeVDataTableRowsProps, VDataTableRows } from "./VDataTableRows.mjs";
|
|
9
|
-
import { VTable } from "../../components/VTable/
|
|
9
|
+
import { makeVTableProps, VTable } from "../../components/VTable/VTable.mjs"; // Composables
|
|
10
10
|
import { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from "./composables/group.mjs";
|
|
11
11
|
import { createHeaders, makeDataTableHeaderProps } from "./composables/headers.mjs";
|
|
12
12
|
import { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from "./composables/paginate.mjs";
|
|
@@ -15,7 +15,6 @@ import { makeDataTableExpandProps, provideExpanded } from "./composables/expand.
|
|
|
15
15
|
import { makeDataTableItemProps, useDataTableItems } from "./composables/items.mjs";
|
|
16
16
|
import { makeDataTableSelectProps, provideSelection } from "./composables/select.mjs";
|
|
17
17
|
import { makeFilterProps, useFilter } from "../../composables/filter.mjs";
|
|
18
|
-
import { makeVTableProps } from "../../components/VTable/VTable.mjs";
|
|
19
18
|
import { provideDefaults } from "../../composables/defaults.mjs";
|
|
20
19
|
import { useOptions } from "./composables/options.mjs"; // Utilities
|
|
21
20
|
import { computed, toRef } from 'vue';
|
|
@@ -69,7 +68,8 @@ export const VDataTable = genericComponent()({
|
|
|
69
68
|
itemsPerPage
|
|
70
69
|
} = createPagination(props);
|
|
71
70
|
const {
|
|
72
|
-
columns
|
|
71
|
+
columns,
|
|
72
|
+
headers
|
|
73
73
|
} = createHeaders(props, {
|
|
74
74
|
groupBy,
|
|
75
75
|
showSelect: toRef(props, 'showSelect'),
|
|
@@ -78,14 +78,15 @@ export const VDataTable = genericComponent()({
|
|
|
78
78
|
const {
|
|
79
79
|
items
|
|
80
80
|
} = useDataTableItems(props, columns);
|
|
81
|
-
const filterKeys = computed(() => columns.value.map(c => 'columns.' + c.key));
|
|
82
81
|
const search = toRef(props, 'search');
|
|
83
82
|
const {
|
|
84
83
|
filteredItems
|
|
85
84
|
} = useFilter(props, items, search, {
|
|
86
|
-
|
|
85
|
+
transform: item => item.columns
|
|
87
86
|
});
|
|
88
|
-
|
|
87
|
+
const {
|
|
88
|
+
toggleSort
|
|
89
|
+
} = provideSort({
|
|
89
90
|
sortBy,
|
|
90
91
|
multiSort,
|
|
91
92
|
mustSort,
|
|
@@ -94,21 +95,25 @@ export const VDataTable = genericComponent()({
|
|
|
94
95
|
const {
|
|
95
96
|
sortByWithGroups,
|
|
96
97
|
opened,
|
|
97
|
-
extractRows
|
|
98
|
+
extractRows,
|
|
99
|
+
isGroupOpen,
|
|
100
|
+
toggleGroup
|
|
98
101
|
} = provideGroupBy({
|
|
99
102
|
groupBy,
|
|
100
103
|
sortBy
|
|
101
104
|
});
|
|
102
105
|
const {
|
|
103
106
|
sortedItems
|
|
104
|
-
} = useSortedItems(filteredItems, sortByWithGroups
|
|
107
|
+
} = useSortedItems(props, filteredItems, sortByWithGroups);
|
|
105
108
|
const {
|
|
106
109
|
flatItems
|
|
107
110
|
} = useGroupedItems(sortedItems, groupBy, opened);
|
|
108
111
|
const itemsLength = computed(() => flatItems.value.length);
|
|
109
112
|
const {
|
|
110
113
|
startIndex,
|
|
111
|
-
stopIndex
|
|
114
|
+
stopIndex,
|
|
115
|
+
pageCount,
|
|
116
|
+
setItemsPerPage
|
|
112
117
|
} = providePagination({
|
|
113
118
|
page,
|
|
114
119
|
itemsPerPage,
|
|
@@ -123,8 +128,18 @@ export const VDataTable = genericComponent()({
|
|
|
123
128
|
itemsPerPage
|
|
124
129
|
});
|
|
125
130
|
const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value));
|
|
126
|
-
|
|
127
|
-
|
|
131
|
+
const {
|
|
132
|
+
isSelected,
|
|
133
|
+
select,
|
|
134
|
+
selectAll,
|
|
135
|
+
toggleSelect,
|
|
136
|
+
someSelected,
|
|
137
|
+
allSelected
|
|
138
|
+
} = provideSelection(props, paginatedItemsWithoutGroups);
|
|
139
|
+
const {
|
|
140
|
+
isExpanded,
|
|
141
|
+
toggleExpand
|
|
142
|
+
} = provideExpanded(props);
|
|
128
143
|
useOptions({
|
|
129
144
|
page,
|
|
130
145
|
itemsPerPage,
|
|
@@ -135,9 +150,33 @@ export const VDataTable = genericComponent()({
|
|
|
135
150
|
provideDefaults({
|
|
136
151
|
VDataTableRows: {
|
|
137
152
|
hideNoData: toRef(props, 'hideNoData'),
|
|
138
|
-
noDataText: toRef(props, 'noDataText')
|
|
153
|
+
noDataText: toRef(props, 'noDataText'),
|
|
154
|
+
loading: toRef(props, 'loading'),
|
|
155
|
+
loadingText: toRef(props, 'loadingText')
|
|
139
156
|
}
|
|
140
157
|
});
|
|
158
|
+
const slotProps = computed(() => ({
|
|
159
|
+
page: page.value,
|
|
160
|
+
itemsPerPage: itemsPerPage.value,
|
|
161
|
+
sortBy: sortBy.value,
|
|
162
|
+
pageCount: pageCount.value,
|
|
163
|
+
toggleSort,
|
|
164
|
+
setItemsPerPage,
|
|
165
|
+
someSelected: someSelected.value,
|
|
166
|
+
allSelected: allSelected.value,
|
|
167
|
+
isSelected,
|
|
168
|
+
select,
|
|
169
|
+
selectAll,
|
|
170
|
+
toggleSelect,
|
|
171
|
+
isExpanded,
|
|
172
|
+
toggleExpand,
|
|
173
|
+
isGroupOpen,
|
|
174
|
+
toggleGroup,
|
|
175
|
+
items: paginatedItems.value,
|
|
176
|
+
groupedItems: flatItems.value,
|
|
177
|
+
columns: columns.value,
|
|
178
|
+
headers: headers.value
|
|
179
|
+
}));
|
|
141
180
|
useRender(() => {
|
|
142
181
|
const [dataTableFooterProps] = VDataTableFooter.filterProps(props);
|
|
143
182
|
const [dataTableHeadersProps] = VDataTableHeaders.filterProps(props);
|
|
@@ -145,19 +184,18 @@ export const VDataTable = genericComponent()({
|
|
|
145
184
|
const [tableProps] = VTable.filterProps(props);
|
|
146
185
|
return _createVNode(VTable, _mergeProps({
|
|
147
186
|
"class": ['v-data-table', {
|
|
148
|
-
'v-data-table--show-select': props.showSelect
|
|
187
|
+
'v-data-table--show-select': props.showSelect,
|
|
188
|
+
'v-data-table--loading': props.loading
|
|
149
189
|
}, props.class],
|
|
150
190
|
"style": props.style
|
|
151
191
|
}, tableProps), {
|
|
152
|
-
top: slots.top,
|
|
153
|
-
default: slots.default
|
|
154
|
-
columns
|
|
155
|
-
}), _createVNode("thead", null, [_createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(), _createVNode("tbody", null, [slots.body ? slots.body() : _createVNode(VDataTableRows, _mergeProps(dataTableRowsProps, {
|
|
192
|
+
top: () => slots.top?.(slotProps.value),
|
|
193
|
+
default: () => slots.default ? slots.default(slotProps.value) : _createVNode(_Fragment, null, [slots.colgroup?.(slotProps.value), _createVNode("thead", null, [_createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), _createVNode("tbody", null, [slots.body ? slots.body(slotProps.value) : _createVNode(VDataTableRows, _mergeProps(dataTableRowsProps, {
|
|
156
194
|
"items": paginatedItems.value
|
|
157
|
-
}), slots)]), slots.tbody?.(), slots.tfoot?.()])
|
|
158
|
-
bottom: slots.bottom
|
|
195
|
+
}), slots)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
|
|
196
|
+
bottom: () => slots.bottom ? slots.bottom(slotProps.value) : _createVNode(_Fragment, null, [_createVNode(VDataTableFooter, dataTableFooterProps, {
|
|
159
197
|
prepend: slots['footer.prepend']
|
|
160
|
-
}))
|
|
198
|
+
})])
|
|
161
199
|
});
|
|
162
200
|
});
|
|
163
201
|
return {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTable.mjs","names":["makeVDataTableFooterProps","VDataTableFooter","makeVDataTableHeadersProps","VDataTableHeaders","makeVDataTableRowsProps","VDataTableRows","VTable","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createHeaders","makeDataTableHeaderProps","createPagination","makeDataTablePaginateProps","providePagination","usePaginatedItems","createSort","makeDataTableSortProps","provideSort","useSortedItems","makeDataTableExpandProps","provideExpanded","makeDataTableItemProps","useDataTableItems","makeDataTableSelectProps","provideSelection","makeFilterProps","useFilter","makeVTableProps","provideDefaults","useOptions","computed","toRef","genericComponent","propsFactory","useRender","makeDataTableProps","width","String","Number","search","makeVDataTableProps","VDataTable","name","props","emits","value","setup","_ref","emit","slots","groupBy","sortBy","multiSort","mustSort","page","itemsPerPage","columns","showSelect","showExpand","items","filterKeys","map","c","key","filteredItems","sortByWithGroups","opened","extractRows","sortedItems","flatItems","itemsLength","length","startIndex","stopIndex","paginatedItems","paginatedItemsWithoutGroups","hideNoData","noDataText","dataTableFooterProps","filterProps","dataTableHeadersProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","top","default","_Fragment","colgroup","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTable.tsx"],"sourcesContent":["// Styles\nimport './VDataTable.sass'\n\n// Components\nimport { makeVDataTableFooterProps, VDataTableFooter } from './VDataTableFooter'\nimport { makeVDataTableHeadersProps, VDataTableHeaders } from './VDataTableHeaders'\nimport { makeVDataTableRowsProps, VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\n\n// Composables\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from './composables/paginate'\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from './composables/sort'\nimport { makeDataTableExpandProps, provideExpanded } from './composables/expand'\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { makeDataTableSelectProps, provideSelection } from './composables/select'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeVTableProps } from '@/components/VTable/VTable'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useOptions } from './composables/options'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem, InternalDataTableHeader } from './types'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\n\nexport type VDataTableSlots = VDataTableRowsSlots & {\n colgroup: [InternalDataTableHeader]\n default: []\n top: []\n headers: []\n body: []\n tbody: []\n thead: []\n tfoot: []\n bottom: []\n 'footer.prepend': []\n}\n\nexport const makeDataTableProps = propsFactory({\n ...makeVDataTableRowsProps(),\n\n width: [String, Number],\n search: String,\n\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeVDataTableHeadersProps(),\n ...makeVTableProps(),\n}, 'data-table')\n\nexport const makeVDataTableProps = propsFactory({\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeFilterProps(),\n ...makeVDataTableFooterProps(),\n}, 'v-data-table')\n\nexport const VDataTable = genericComponent<VDataTableSlots>()({\n name: 'VDataTable',\n\n props: makeVDataTableProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (value: number) => true,\n 'update:itemsPerPage': (value: number) => 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 },\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\n const { columns } = 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 filterKeys = computed(() => columns.value.map(c => 'columns.' + c.key))\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter<DataTableItem>(props, items, search, { filterKeys })\n\n provideSort({ sortBy, multiSort, mustSort, page })\n const { sortByWithGroups, opened, extractRows } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(filteredItems, sortByWithGroups, columns)\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n const itemsLength = computed(() => flatItems.value.length)\n\n const { startIndex, stopIndex } = providePagination({ page, itemsPerPage, itemsLength })\n const { paginatedItems } = usePaginatedItems({ items: flatItems, startIndex, stopIndex, itemsPerPage })\n\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value))\n\n provideSelection(props, paginatedItemsWithoutGroups)\n\n provideExpanded(props)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n },\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--show-select': props.showSelect,\n },\n props.class,\n ]}\n style={ props.style }\n { ...tableProps }\n >\n {{\n top: slots.top,\n default: slots.default ?? (() => (\n <>\n { slots.colgroup?.({ columns }) }\n <thead>\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n v-slots={ slots }\n />\n </thead>\n { slots.thead?.() }\n <tbody>\n { slots.body ? slots.body() : (\n <VDataTableRows\n { ...dataTableRowsProps }\n items={ paginatedItems.value }\n v-slots={ slots }\n />\n )}\n </tbody>\n { slots.tbody?.() }\n { slots.tfoot?.() }\n </>\n )),\n bottom: slots.bottom ?? (() => (\n <VDataTableFooter\n { ...dataTableFooterProps }\n v-slots={{\n prepend: slots['footer.prepend'],\n }}\n />\n )),\n }}\n </VTable>\n )\n })\n\n return {}\n },\n})\n\nexport type VDataTable = InstanceType<typeof VDataTable>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDataTable.mjs","names":["makeVDataTableFooterProps","VDataTableFooter","makeVDataTableHeadersProps","VDataTableHeaders","makeVDataTableRowsProps","VDataTableRows","makeVTableProps","VTable","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createHeaders","makeDataTableHeaderProps","createPagination","makeDataTablePaginateProps","providePagination","usePaginatedItems","createSort","makeDataTableSortProps","provideSort","useSortedItems","makeDataTableExpandProps","provideExpanded","makeDataTableItemProps","useDataTableItems","makeDataTableSelectProps","provideSelection","makeFilterProps","useFilter","provideDefaults","useOptions","computed","toRef","genericComponent","propsFactory","useRender","makeDataTableProps","width","String","Number","search","makeVDataTableProps","VDataTable","name","props","emits","value","setup","_ref","emit","slots","groupBy","sortBy","multiSort","mustSort","page","itemsPerPage","columns","headers","showSelect","showExpand","items","filteredItems","transform","item","toggleSort","sortByWithGroups","opened","extractRows","isGroupOpen","toggleGroup","sortedItems","flatItems","itemsLength","length","startIndex","stopIndex","pageCount","setItemsPerPage","paginatedItems","paginatedItemsWithoutGroups","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","isExpanded","toggleExpand","hideNoData","noDataText","loading","loadingText","slotProps","groupedItems","dataTableFooterProps","filterProps","dataTableHeadersProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","top","default","_Fragment","colgroup","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTable.tsx"],"sourcesContent":["// Styles\nimport './VDataTable.sass'\n\n// Components\nimport { makeVDataTableFooterProps, VDataTableFooter } from './VDataTableFooter'\nimport { makeVDataTableHeadersProps, VDataTableHeaders } from './VDataTableHeaders'\nimport { makeVDataTableRowsProps, VDataTableRows } from './VDataTableRows'\nimport { makeVTableProps, VTable } from '@/components/VTable/VTable'\n\n// Composables\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from './composables/paginate'\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from './composables/sort'\nimport { makeDataTableExpandProps, provideExpanded } from './composables/expand'\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { makeDataTableSelectProps, provideSelection } from './composables/select'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useOptions } from './composables/options'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { UnwrapRef } from 'vue'\nimport type { Group } from './composables/group'\nimport type { DataTableItem, InternalDataTableHeader } from './types'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\nimport type { VDataTableHeadersSlots } from './VDataTableHeaders'\n\nexport type VDataTableSlotProps = {\n page: number\n itemsPerPage: number\n sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>\n pageCount: number\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n setItemsPerPage: ReturnType<typeof providePagination>['setItemsPerPage']\n someSelected: boolean\n allSelected: boolean\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n select: ReturnType<typeof provideSelection>['select']\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen']\n toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n items: readonly DataTableItem[]\n groupedItems: readonly (DataTableItem | Group<DataTableItem>)[]\n columns: InternalDataTableHeader[]\n headers: InternalDataTableHeader[][]\n}\n\nexport type VDataTableSlots = VDataTableRowsSlots & VDataTableHeadersSlots & {\n default: [VDataTableSlotProps]\n colgroup: [VDataTableSlotProps]\n top: [VDataTableSlotProps]\n body: [VDataTableSlotProps]\n tbody: [VDataTableSlotProps]\n thead: [VDataTableSlotProps]\n tfoot: [VDataTableSlotProps]\n bottom: [VDataTableSlotProps]\n 'footer.prepend': []\n}\n\nexport const makeDataTableProps = propsFactory({\n ...makeVDataTableRowsProps(),\n\n width: [String, Number],\n search: String,\n\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeVDataTableHeadersProps(),\n ...makeVTableProps(),\n}, 'data-table')\n\nexport const makeVDataTableProps = propsFactory({\n ...makeDataTablePaginateProps(),\n ...makeDataTableProps(),\n ...makeFilterProps(),\n ...makeVDataTableFooterProps(),\n}, 'v-data-table')\n\nexport const VDataTable = genericComponent<VDataTableSlots>()({\n name: 'VDataTable',\n\n props: makeVDataTableProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (value: number) => true,\n 'update:itemsPerPage': (value: number) => 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 },\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\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 search = toRef(props, 'search')\n const { filteredItems } = useFilter(props, items, search, { transform: item => item.columns })\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\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 const itemsLength = computed(() => flatItems.value.length)\n\n const { startIndex, stopIndex, pageCount, setItemsPerPage } = providePagination({ page, itemsPerPage, itemsLength })\n const { paginatedItems } = usePaginatedItems({ items: flatItems, startIndex, stopIndex, itemsPerPage })\n\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value))\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, paginatedItemsWithoutGroups)\n\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\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<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: paginatedItems.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--show-select': props.showSelect,\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>\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n v-slots={ slots }\n />\n </thead>\n { slots.thead?.(slotProps.value) }\n <tbody>\n { slots.body ? slots.body(slotProps.value) : (\n <VDataTableRows\n { ...dataTableRowsProps }\n items={ paginatedItems.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 <>\n <VDataTableFooter\n { ...dataTableFooterProps }\n v-slots={{\n prepend: slots['footer.prepend'],\n }}\n />\n </>\n ),\n }}\n </VTable>\n )\n })\n\n return {}\n },\n})\n\nexport type VDataTable = InstanceType<typeof VDataTable>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableFooter.mjs","names":["VBtn","VSelect","useLocale","usePagination","computed","genericComponent","propsFactory","makeVDataTableFooterProps","prevIcon","type","String","default","nextIcon","firstIcon","lastIcon","itemsPerPageText","pageText","firstPageLabel","prevPageLabel","nextPageLabel","lastPageLabel","itemsPerPageOptions","Array","value","title","showCurrentPage","Boolean","VDataTableFooter","name","props","setup","_ref","slots","t","page","pageCount","startIndex","stopIndex","itemsLength","itemsPerPage","setItemsPerPage","map","option","_createVNode","prepend","v","Number","onClick","Math","max","min"],"sources":["../../../src/labs/VDataTable/VDataTableFooter.tsx"],"sourcesContent":["// Styles\nimport './VDataTableFooter.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\nimport { usePagination } from './composables/paginate'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDataTableFooterProps = propsFactory({\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n firstPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.firstPage',\n },\n prevPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.prevPage',\n },\n nextPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.nextPage',\n },\n lastPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.lastPage',\n },\n itemsPerPageOptions: {\n type: Array as PropType<{ title: string, value: number }[]>,\n default: () => ([\n { value: 10, title: '10' },\n { value: 25, title: '25' },\n { value: 50, title: '50' },\n { value: 100, title: '100' },\n { value: -1, title: '$vuetify.dataFooter.itemsPerPageAll' },\n ]),\n },\n showCurrentPage: Boolean,\n}, 'v-data-table-footer')\n\nexport const VDataTableFooter = genericComponent<{ prepend: [] }>()({\n name: 'VDataTableFooter',\n\n props: makeVDataTableFooterProps(),\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { page, pageCount, startIndex, stopIndex, itemsLength, itemsPerPage, setItemsPerPage } = usePagination()\n\n const itemsPerPageOptions = computed(() => (\n props.itemsPerPageOptions.map(option => ({\n ...option,\n title: t(option.title),\n }))\n ))\n\n return () => (\n <div\n class=\"v-data-table-footer\"\n >\n { slots.prepend?.() }\n <div class=\"v-data-table-footer__items-per-page\">\n <span>{ t(props.itemsPerPageText) }</span>\n <VSelect\n items={ itemsPerPageOptions.value }\n modelValue={ itemsPerPage.value }\n onUpdate:modelValue={ v => setItemsPerPage(Number(v)) }\n density=\"compact\"\n variant=\"outlined\"\n hide-details\n />\n </div>\n <div class=\"v-data-table-footer__info\">\n <div>\n { t(props.pageText, !itemsLength.value ? 0 : startIndex.value + 1, stopIndex.value, itemsLength.value) }\n </div>\n </div>\n <div class=\"v-data-table-footer__pagination\">\n <VBtn\n icon={ props.firstIcon }\n variant=\"plain\"\n onClick={ () => page.value = 1 }\n disabled={ page.value === 1 }\n aria-label={ t(props.firstPageLabel) }\n />\n <VBtn\n icon={ props.prevIcon }\n variant=\"plain\"\n onClick={ () => page.value = Math.max(1, page.value - 1) }\n disabled={ page.value === 1 }\n aria-label={ t(props.prevPageLabel) }\n />\n { props.showCurrentPage && (\n <span key=\"page\" class=\"v-data-table-footer__page\">{ page.value }</span>\n )}\n <VBtn\n icon={ props.nextIcon }\n variant=\"plain\"\n onClick={ () => page.value = Math.min(pageCount.value, page.value + 1) }\n disabled={ page.value === pageCount.value }\n aria-label={ t(props.nextPageLabel) }\n />\n <VBtn\n icon={ props.lastIcon }\n variant=\"plain\"\n onClick={ () => page.value = pageCount.value }\n disabled={ page.value === pageCount.value }\n aria-label={ t(props.lastPageLabel) }\n />\n </div>\n </div>\n )\n },\n})\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,IAAI;AAAA,SACJC,OAAO,8CAEhB;AAAA,SACSC,SAAS;AAAA,SACTC,aAAa,sCAEtB;AACA,SAASC,QAAQ,QAAQ,KAAK;AAAA,SACrBC,gBAAgB,EAAEC,YAAY,gCAEvC;AAGA,OAAO,MAAMC,yBAAyB,GAAGD,YAAY,CAAC;EACpDE,QAAQ,EAAE;IACRC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACRH,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDE,SAAS,EAAE;IACTJ,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDG,QAAQ,EAAE;IACRL,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDI,gBAAgB,EAAE;IAChBN,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDK,QAAQ,EAAE;IACRP,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDM,cAAc,EAAE;IACdR,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDO,aAAa,EAAE;IACbT,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDQ,aAAa,EAAE;IACbV,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDS,aAAa,EAAE;IACbX,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDU,mBAAmB,EAAE;IACnBZ,IAAI,EAAEa,
|
|
1
|
+
{"version":3,"file":"VDataTableFooter.mjs","names":["VBtn","VSelect","useLocale","usePagination","computed","genericComponent","propsFactory","makeVDataTableFooterProps","prevIcon","type","String","default","nextIcon","firstIcon","lastIcon","itemsPerPageText","pageText","firstPageLabel","prevPageLabel","nextPageLabel","lastPageLabel","itemsPerPageOptions","Array","value","title","showCurrentPage","Boolean","VDataTableFooter","name","props","setup","_ref","slots","t","page","pageCount","startIndex","stopIndex","itemsLength","itemsPerPage","setItemsPerPage","map","option","_createVNode","prepend","v","Number","onClick","Math","max","min"],"sources":["../../../src/labs/VDataTable/VDataTableFooter.tsx"],"sourcesContent":["// Styles\nimport './VDataTableFooter.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\nimport { usePagination } from './composables/paginate'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDataTableFooterProps = propsFactory({\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n firstPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.firstPage',\n },\n prevPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.prevPage',\n },\n nextPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.nextPage',\n },\n lastPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.lastPage',\n },\n itemsPerPageOptions: {\n type: Array as PropType<readonly { title: string, value: number }[]>,\n default: () => ([\n { value: 10, title: '10' },\n { value: 25, title: '25' },\n { value: 50, title: '50' },\n { value: 100, title: '100' },\n { value: -1, title: '$vuetify.dataFooter.itemsPerPageAll' },\n ]),\n },\n showCurrentPage: Boolean,\n}, 'v-data-table-footer')\n\nexport const VDataTableFooter = genericComponent<{ prepend: [] }>()({\n name: 'VDataTableFooter',\n\n props: makeVDataTableFooterProps(),\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { page, pageCount, startIndex, stopIndex, itemsLength, itemsPerPage, setItemsPerPage } = usePagination()\n\n const itemsPerPageOptions = computed(() => (\n props.itemsPerPageOptions.map(option => ({\n ...option,\n title: t(option.title),\n }))\n ))\n\n return () => (\n <div\n class=\"v-data-table-footer\"\n >\n { slots.prepend?.() }\n <div class=\"v-data-table-footer__items-per-page\">\n <span>{ t(props.itemsPerPageText) }</span>\n <VSelect\n items={ itemsPerPageOptions.value }\n modelValue={ itemsPerPage.value }\n onUpdate:modelValue={ v => setItemsPerPage(Number(v)) }\n density=\"compact\"\n variant=\"outlined\"\n hide-details\n />\n </div>\n <div class=\"v-data-table-footer__info\">\n <div>\n { t(props.pageText, !itemsLength.value ? 0 : startIndex.value + 1, stopIndex.value, itemsLength.value) }\n </div>\n </div>\n <div class=\"v-data-table-footer__pagination\">\n <VBtn\n icon={ props.firstIcon }\n variant=\"plain\"\n onClick={ () => page.value = 1 }\n disabled={ page.value === 1 }\n aria-label={ t(props.firstPageLabel) }\n />\n <VBtn\n icon={ props.prevIcon }\n variant=\"plain\"\n onClick={ () => page.value = Math.max(1, page.value - 1) }\n disabled={ page.value === 1 }\n aria-label={ t(props.prevPageLabel) }\n />\n { props.showCurrentPage && (\n <span key=\"page\" class=\"v-data-table-footer__page\">{ page.value }</span>\n )}\n <VBtn\n icon={ props.nextIcon }\n variant=\"plain\"\n onClick={ () => page.value = Math.min(pageCount.value, page.value + 1) }\n disabled={ page.value === pageCount.value }\n aria-label={ t(props.nextPageLabel) }\n />\n <VBtn\n icon={ props.lastIcon }\n variant=\"plain\"\n onClick={ () => page.value = pageCount.value }\n disabled={ page.value === pageCount.value }\n aria-label={ t(props.lastPageLabel) }\n />\n </div>\n </div>\n )\n },\n})\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableGroupHeaderRow.mjs","names":["VBtn","VCheckboxBtn","VDataTableColumn","useHeaders","useSelection","useGroupBy","computed","genericComponent","propsFactory","makeVDataTableGroupHeaderRowProps","item","type","Object","required","VDataTableGroupHeaderRow","name","props","setup","_ref","slots","isGroupOpen","toggleGroup","extractRows","isSelected","isSomeSelected","select","columns","rows","_createVNode","depth","value","map","column","key","icon","onClick","count","length","default","_createTextVNode","modelValue","indeterminate","selectGroup","v"],"sources":["../../../src/labs/VDataTable/VDataTableGroupHeaderRow.tsx"],"sourcesContent":["// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VDataTableColumn } from './VDataTableColumn'\n\n// Composables\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useGroupBy } from './composables/group'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type {
|
|
1
|
+
{"version":3,"file":"VDataTableGroupHeaderRow.mjs","names":["VBtn","VCheckboxBtn","VDataTableColumn","useHeaders","useSelection","useGroupBy","computed","genericComponent","propsFactory","makeVDataTableGroupHeaderRowProps","item","type","Object","required","VDataTableGroupHeaderRow","name","props","setup","_ref","slots","isGroupOpen","toggleGroup","extractRows","isSelected","isSomeSelected","select","columns","rows","_createVNode","depth","value","map","column","key","icon","onClick","count","length","default","_createTextVNode","modelValue","indeterminate","selectGroup","v"],"sources":["../../../src/labs/VDataTable/VDataTableGroupHeaderRow.tsx"],"sourcesContent":["// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VDataTableColumn } from './VDataTableColumn'\n\n// Composables\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useGroupBy } from './composables/group'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { Group } from './composables/group'\n\nexport type VDataTableGroupHeaderRowSlots = {\n 'data-table-group': [{ item: Group, count: number, props: Record<string, unknown> }]\n 'data-table-select': [{ props: Record<string, unknown> }]\n}\n\nexport const makeVDataTableGroupHeaderRowProps = propsFactory({\n item: {\n type: Object as PropType<Group>,\n required: true,\n },\n}, 'v-data-table-group-header-row')\n\nexport const VDataTableGroupHeaderRow = genericComponent<VDataTableGroupHeaderRowSlots>()({\n name: 'VDataTableGroupHeaderRow',\n\n props: makeVDataTableGroupHeaderRowProps(),\n\n setup (props, { slots }) {\n const { isGroupOpen, toggleGroup, extractRows } = useGroupBy()\n const { isSelected, isSomeSelected, select } = useSelection()\n const { columns } = useHeaders()\n\n const rows = computed(() => {\n return extractRows([props.item])\n })\n\n return () => (\n <tr\n class=\"v-data-table-group-header-row\"\n style={{\n '--v-data-table-group-header-row-depth': props.item.depth,\n }}\n >\n { columns.value.map(column => {\n if (column.key === 'data-table-group') {\n const icon = isGroupOpen(props.item) ? '$expand' : '$next'\n const onClick = () => toggleGroup(props.item)\n\n return slots['data-table-group']?.({ item: props.item, count: rows.value.length, props: { icon, onClick } }) ?? (\n <VDataTableColumn class=\"v-data-table-group-header-row__column\">\n <VBtn\n size=\"small\"\n variant=\"text\"\n icon={ icon }\n onClick={ onClick }\n />\n <span>{ props.item.value }</span>\n <span>({ rows.value.length })</span>\n </VDataTableColumn>\n )\n }\n\n if (column.key === 'data-table-select') {\n const modelValue = isSelected(rows.value)\n const indeterminate = isSomeSelected(rows.value) && !modelValue\n const selectGroup = (v: boolean) => select(rows.value, v)\n return slots['data-table-select']?.({ props: { modelValue, indeterminate, 'onUpdate:modelValue': selectGroup } }) ?? (\n <td>\n <VCheckboxBtn\n modelValue={ modelValue }\n indeterminate={ indeterminate }\n onUpdate:modelValue={ selectGroup }\n />\n </td>\n )\n }\n\n return <td />\n })}\n </tr>\n )\n },\n})\n"],"mappings":"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"}
|
|
@@ -35,7 +35,8 @@ export const VDataTableHeaders = genericComponent()({
|
|
|
35
35
|
} = _ref;
|
|
36
36
|
const {
|
|
37
37
|
toggleSort,
|
|
38
|
-
sortBy
|
|
38
|
+
sortBy,
|
|
39
|
+
isSorted
|
|
39
40
|
} = useSort();
|
|
40
41
|
const {
|
|
41
42
|
someSelected,
|
|
@@ -50,7 +51,7 @@ export const VDataTableHeaders = genericComponent()({
|
|
|
50
51
|
loaderClasses
|
|
51
52
|
} = useLoader(props);
|
|
52
53
|
const getFixedStyles = (column, y) => {
|
|
53
|
-
if (!props.sticky && !column.fixed) return
|
|
54
|
+
if (!props.sticky && !column.fixed) return undefined;
|
|
54
55
|
return {
|
|
55
56
|
position: 'sticky',
|
|
56
57
|
zIndex: column.fixed ? 4 : props.sticky ? 3 : undefined,
|
|
@@ -60,8 +61,8 @@ export const VDataTableHeaders = genericComponent()({
|
|
|
60
61
|
top: props.sticky ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
|
61
62
|
};
|
|
62
63
|
};
|
|
63
|
-
function getSortIcon(
|
|
64
|
-
const item = sortBy.value.find(item => item.key ===
|
|
64
|
+
function getSortIcon(column) {
|
|
65
|
+
const item = sortBy.value.find(item => item.key === column.key);
|
|
65
66
|
if (!item) return props.sortAscIcon;
|
|
66
67
|
return item.order === 'asc' ? props.sortAscIcon : props.sortDescIcon;
|
|
67
68
|
}
|
|
@@ -73,6 +74,7 @@ export const VDataTableHeaders = genericComponent()({
|
|
|
73
74
|
headers: headers.value,
|
|
74
75
|
columns: columns.value,
|
|
75
76
|
toggleSort,
|
|
77
|
+
isSorted,
|
|
76
78
|
sortBy: sortBy.value,
|
|
77
79
|
someSelected: someSelected.value,
|
|
78
80
|
allSelected: allSelected.value,
|
|
@@ -86,14 +88,13 @@ export const VDataTableHeaders = genericComponent()({
|
|
|
86
88
|
x,
|
|
87
89
|
y
|
|
88
90
|
} = _ref2;
|
|
89
|
-
const isSorted = !!sortBy.value.find(x => x.key === column.key);
|
|
90
91
|
const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand';
|
|
91
92
|
return _createVNode(VDataTableColumn, {
|
|
92
93
|
"tag": "th",
|
|
93
94
|
"align": column.align,
|
|
94
95
|
"class": ['v-data-table__th', {
|
|
95
96
|
'v-data-table__th--sortable': column.sortable,
|
|
96
|
-
'v-data-table__th--sorted': isSorted
|
|
97
|
+
'v-data-table__th--sorted': isSorted(column)
|
|
97
98
|
}, loaderClasses.value],
|
|
98
99
|
"style": {
|
|
99
100
|
width: convertToUnit(column.width),
|
|
@@ -102,7 +103,7 @@ export const VDataTableHeaders = genericComponent()({
|
|
|
102
103
|
},
|
|
103
104
|
"colspan": column.colspan,
|
|
104
105
|
"rowspan": column.rowspan,
|
|
105
|
-
"onClick": column.sortable ? () => toggleSort(column
|
|
106
|
+
"onClick": column.sortable ? () => toggleSort(column) : undefined,
|
|
106
107
|
"lastFixed": column.lastFixed,
|
|
107
108
|
"noPadding": noPadding
|
|
108
109
|
}, {
|
|
@@ -110,7 +111,13 @@ export const VDataTableHeaders = genericComponent()({
|
|
|
110
111
|
const columnSlotName = `column.${column.key}`;
|
|
111
112
|
const columnSlotProps = {
|
|
112
113
|
column,
|
|
113
|
-
selectAll
|
|
114
|
+
selectAll,
|
|
115
|
+
isSorted,
|
|
116
|
+
toggleSort,
|
|
117
|
+
sortBy: sortBy.value,
|
|
118
|
+
someSelected: someSelected.value,
|
|
119
|
+
allSelected: allSelected.value,
|
|
120
|
+
getSortIcon
|
|
114
121
|
};
|
|
115
122
|
if (slots[columnSlotName]) return slots[columnSlotName](columnSlotProps);
|
|
116
123
|
if (column.key === 'data-table-select') {
|
|
@@ -125,8 +132,8 @@ export const VDataTableHeaders = genericComponent()({
|
|
|
125
132
|
}, [_createVNode("span", null, [column.title]), column.sortable && _createVNode(VIcon, {
|
|
126
133
|
"key": "icon",
|
|
127
134
|
"class": "v-data-table-header__sort-icon",
|
|
128
|
-
"icon": getSortIcon(column
|
|
129
|
-
}, null), props.multiSort && isSorted && _createVNode("div", {
|
|
135
|
+
"icon": getSortIcon(column)
|
|
136
|
+
}, null), props.multiSort && isSorted(column) && _createVNode("div", {
|
|
130
137
|
"key": "badge",
|
|
131
138
|
"class": ['v-data-table-header__sort-badge', ...backgroundColorClasses.value],
|
|
132
139
|
"style": backgroundColorStyles.value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableHeaders.mjs","names":["VCheckboxBtn","VDataTableColumn","VIcon","IconValue","LoaderSlot","makeLoaderProps","useLoader","useBackgroundColor","useHeaders","useSelection","useSort","computed","convertToUnit","genericComponent","propsFactory","useRender","makeVDataTableHeadersProps","color","String","sticky","Boolean","multiSort","sortAscIcon","type","default","sortDescIcon","VDataTableHeaders","name","props","setup","_ref","slots","emit","toggleSort","sortBy","someSelected","allSelected","selectAll","columns","headers","loaderClasses","getFixedStyles","column","y","fixed","position","zIndex","undefined","left","fixedOffset","top","getSortIcon","id","item","value","find","key","order","backgroundColorClasses","backgroundColorStyles","slotProps","VDataTableHeaderCell","_ref2","x","isSorted","noPadding","_createVNode","align","sortable","width","minWidth","colspan","rowspan","lastFixed","columnSlotName","columnSlotProps","title","findIndex","_Fragment","map","row","loading","length","loader"],"sources":["../../../src/labs/VDataTable/VDataTableHeaders.tsx"],"sourcesContent":["// Components\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VDataTableColumn } from './VDataTableColumn'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useSort } from './composables/sort'\n\n// Utilities\nimport { computed } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InternalDataTableHeader } from './types'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { SortItem } from './composables/sort'\n\ntype HeadersSlotProps = {\n headers: InternalDataTableHeader[][]\n columns: InternalDataTableHeader[]\n sortBy: SortItem[]\n someSelected: boolean\n allSelected: boolean\n toggleSort: (key: string) => void\n selectAll: (value: boolean) => void\n getSortIcon: (key: string) => IconValue\n getFixedStyles: (column: InternalDataTableHeader) => Record<string, string>\n}\n\nexport const makeVDataTableHeadersProps = propsFactory({\n color: String,\n sticky: Boolean,\n multiSort: Boolean,\n sortAscIcon: {\n type: IconValue,\n default: '$sortAsc',\n },\n sortDescIcon: {\n type: IconValue,\n default: '$sortDesc',\n },\n\n ...makeLoaderProps(),\n}, 'v-data-table-headers')\n\nexport type VDataTableHeadersSlots = {\n default: []\n headers: [HeadersSlotProps]\n loader: [LoaderSlotProps]\n 'column.data-table-select': [InternalDataTableHeader, (value: boolean) => void]\n}\n\nexport const VDataTableHeaders = genericComponent<VDataTableHeadersSlots>()({\n name: 'VDataTableHeaders',\n\n props: makeVDataTableHeadersProps(),\n\n setup (props, { slots, emit }) {\n const { toggleSort, sortBy } = useSort()\n const { someSelected, allSelected, selectAll } = useSelection()\n const { columns, headers } = useHeaders()\n const { loaderClasses } = useLoader(props)\n\n const getFixedStyles = (column: InternalDataTableHeader, y: number) => {\n if (!props.sticky && !column.fixed) return null\n\n return {\n position: 'sticky',\n zIndex: column.fixed ? 4 : props.sticky ? 3 : undefined, // TODO: This needs to account for possible previous fixed columns.\n left: column.fixed ? convertToUnit(column.fixedOffset) : undefined, // TODO: This needs to account for possible row/colspan of previous columns\n top: props.sticky ? `calc(var(--v-table-header-height) * ${y})` : undefined,\n }\n }\n\n function getSortIcon (id: string) {\n const item = sortBy.value.find(item => item.key === id)\n\n if (!item) return props.sortAscIcon\n\n return item.order === 'asc' ? props.sortAscIcon : props.sortDescIcon\n }\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n const slotProps = computed(() => ({\n headers: headers.value,\n columns: columns.value,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectAll,\n getSortIcon,\n getFixedStyles,\n }))\n\n const VDataTableHeaderCell = ({ column, x, y }: { column: InternalDataTableHeader, x: number, y: number }) => {\n const isSorted = !!sortBy.value.find(x => x.key === column.key)\n const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand'\n\n return (\n <VDataTableColumn\n tag=\"th\"\n align={ column.align }\n class={[\n 'v-data-table__th',\n {\n 'v-data-table__th--sortable': column.sortable,\n 'v-data-table__th--sorted': isSorted,\n },\n loaderClasses.value,\n ]}\n style={{\n width: convertToUnit(column.width),\n minWidth: convertToUnit(column.width),\n ...getFixedStyles(column, y),\n }}\n colspan={ column.colspan }\n rowspan={ column.rowspan }\n onClick={ column.sortable ? () => toggleSort(column.key) : undefined }\n lastFixed={ column.lastFixed }\n noPadding={ noPadding }\n >\n {{\n default: () => {\n const columnSlotName = `column.${column.key}`\n const columnSlotProps = {\n column,\n selectAll,\n }\n\n if (slots[columnSlotName]) return slots[columnSlotName]!(columnSlotProps)\n\n if (column.key === 'data-table-select') {\n return slots['column.data-table-select']?.(columnSlotProps) ?? (\n <VCheckboxBtn\n modelValue={ allSelected.value }\n indeterminate={ someSelected.value && !allSelected.value }\n onUpdate:modelValue={ selectAll }\n />\n )\n }\n\n return (\n <div class=\"v-data-table-header__content\">\n <span>{ column.title }</span>\n { column.sortable && (\n <VIcon\n key=\"icon\"\n class=\"v-data-table-header__sort-icon\"\n icon={ getSortIcon(column.key) }\n />\n )}\n { props.multiSort && isSorted && (\n <div\n key=\"badge\"\n class={[\n 'v-data-table-header__sort-badge',\n ...backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n >\n { sortBy.value.findIndex(x => x.key === column.key) + 1 }\n </div>\n )}\n </div>\n )\n },\n }}\n </VDataTableColumn>\n )\n }\n\n useRender(() => {\n return (\n <>\n { slots.headers\n ? slots.headers(slotProps.value)\n : headers.value.map((row, y) => (\n <tr>\n { row.map((column, x) => (\n <VDataTableHeaderCell column={ column } x={ x } y={ y } />\n ))}\n </tr>\n ))}\n\n { props.loading && (\n <tr class=\"v-data-table__progress\">\n <th colspan={ columns.value.length }>\n\n <LoaderSlot\n name=\"v-data-table-headers\"\n active\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n v-slots={{ default: slots.loader }}\n />\n </th>\n </tr>\n )}\n </>\n )\n })\n },\n})\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDataTableHeaders.mjs","names":["VCheckboxBtn","VDataTableColumn","VIcon","IconValue","LoaderSlot","makeLoaderProps","useLoader","useBackgroundColor","useHeaders","useSelection","useSort","computed","convertToUnit","genericComponent","propsFactory","useRender","makeVDataTableHeadersProps","color","String","sticky","Boolean","multiSort","sortAscIcon","type","default","sortDescIcon","VDataTableHeaders","name","props","setup","_ref","slots","emit","toggleSort","sortBy","isSorted","someSelected","allSelected","selectAll","columns","headers","loaderClasses","getFixedStyles","column","y","fixed","undefined","position","zIndex","left","fixedOffset","top","getSortIcon","item","value","find","key","order","backgroundColorClasses","backgroundColorStyles","slotProps","VDataTableHeaderCell","_ref2","x","noPadding","_createVNode","align","sortable","width","minWidth","colspan","rowspan","lastFixed","columnSlotName","columnSlotProps","title","findIndex","_Fragment","map","row","loading","length","loader"],"sources":["../../../src/labs/VDataTable/VDataTableHeaders.tsx"],"sourcesContent":["// Components\nimport { VCheckboxBtn } from '@/components/VCheckbox'\nimport { VDataTableColumn } from './VDataTableColumn'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useHeaders } from './composables/headers'\nimport type { provideSelection } from './composables/select'\nimport { useSelection } from './composables/select'\nimport { useSort } from './composables/sort'\n\n// Utilities\nimport { computed } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { CSSProperties, UnwrapRef } from 'vue'\nimport type { InternalDataTableHeader } from './types'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { provideSort } from './composables/sort'\n\nexport type HeadersSlotProps = {\n headers: InternalDataTableHeader[][]\n columns: InternalDataTableHeader[]\n sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>\n someSelected: UnwrapRef<ReturnType<typeof provideSelection>['someSelected']>\n allSelected: UnwrapRef<ReturnType<typeof provideSelection>['allSelected']>\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n getFixedStyles: (column: InternalDataTableHeader, y: number) => CSSProperties | undefined\n isSorted: ReturnType<typeof provideSort>['isSorted']\n}\n\ntype VDataTableHeaderCellColumnSlotProps = {\n column: InternalDataTableHeader\n selectAll: ReturnType<typeof provideSelection>['selectAll']\n isSorted: ReturnType<typeof provideSort>['isSorted']\n toggleSort: ReturnType<typeof provideSort>['toggleSort']\n sortBy: UnwrapRef<ReturnType<typeof provideSort>['sortBy']>\n someSelected: UnwrapRef<ReturnType<typeof provideSelection>['someSelected']>\n allSelected: UnwrapRef<ReturnType<typeof provideSelection>['allSelected']>\n getSortIcon: (column: InternalDataTableHeader) => IconValue\n}\n\nexport type VDataTableHeadersSlots = {\n headers: [HeadersSlotProps]\n loader: [LoaderSlotProps]\n 'column.data-table-select': [VDataTableHeaderCellColumnSlotProps]\n 'column.data-table-expand': [VDataTableHeaderCellColumnSlotProps]\n} & { [key: `column.${string}`]: [VDataTableHeaderCellColumnSlotProps] }\n\nexport const makeVDataTableHeadersProps = propsFactory({\n color: String,\n sticky: Boolean,\n multiSort: Boolean,\n sortAscIcon: {\n type: IconValue,\n default: '$sortAsc',\n },\n sortDescIcon: {\n type: IconValue,\n default: '$sortDesc',\n },\n\n ...makeLoaderProps(),\n}, 'v-data-table-headers')\n\nexport const VDataTableHeaders = genericComponent<VDataTableHeadersSlots>()({\n name: 'VDataTableHeaders',\n\n props: makeVDataTableHeadersProps(),\n\n setup (props, { slots, emit }) {\n const { toggleSort, sortBy, isSorted } = useSort()\n const { someSelected, allSelected, selectAll } = useSelection()\n const { columns, headers } = useHeaders()\n const { loaderClasses } = useLoader(props)\n\n const getFixedStyles = (column: InternalDataTableHeader, y: number): CSSProperties | undefined => {\n if (!props.sticky && !column.fixed) return undefined\n\n return {\n position: 'sticky',\n zIndex: column.fixed ? 4 : props.sticky ? 3 : undefined, // TODO: This needs to account for possible previous fixed columns.\n left: column.fixed ? convertToUnit(column.fixedOffset) : undefined, // TODO: This needs to account for possible row/colspan of previous columns\n top: props.sticky ? `calc(var(--v-table-header-height) * ${y})` : undefined,\n }\n }\n\n function getSortIcon (column: InternalDataTableHeader) {\n const item = sortBy.value.find(item => item.key === column.key)\n\n if (!item) return props.sortAscIcon\n\n return item.order === 'asc' ? props.sortAscIcon : props.sortDescIcon\n }\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n const slotProps = computed(() => ({\n headers: headers.value,\n columns: columns.value,\n toggleSort,\n isSorted,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectAll,\n getSortIcon,\n getFixedStyles,\n } satisfies HeadersSlotProps))\n\n const VDataTableHeaderCell = ({ column, x, y }: { column: InternalDataTableHeader, x: number, y: number }) => {\n const noPadding = column.key === 'data-table-select' || column.key === 'data-table-expand'\n\n return (\n <VDataTableColumn\n tag=\"th\"\n align={ column.align }\n class={[\n 'v-data-table__th',\n {\n 'v-data-table__th--sortable': column.sortable,\n 'v-data-table__th--sorted': isSorted(column),\n },\n loaderClasses.value,\n ]}\n style={{\n width: convertToUnit(column.width),\n minWidth: convertToUnit(column.width),\n ...getFixedStyles(column, y),\n }}\n colspan={ column.colspan }\n rowspan={ column.rowspan }\n onClick={ column.sortable ? () => toggleSort(column) : undefined }\n lastFixed={ column.lastFixed }\n noPadding={ noPadding }\n >\n {{\n default: () => {\n const columnSlotName = `column.${column.key}` as const\n const columnSlotProps: VDataTableHeaderCellColumnSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n getSortIcon,\n }\n\n if (slots[columnSlotName]) return slots[columnSlotName]!(columnSlotProps)\n\n if (column.key === 'data-table-select') {\n return slots['column.data-table-select']?.(columnSlotProps) ?? (\n <VCheckboxBtn\n modelValue={ allSelected.value }\n indeterminate={ someSelected.value && !allSelected.value }\n onUpdate:modelValue={ selectAll }\n />\n )\n }\n\n return (\n <div class=\"v-data-table-header__content\">\n <span>{ column.title }</span>\n { column.sortable && (\n <VIcon\n key=\"icon\"\n class=\"v-data-table-header__sort-icon\"\n icon={ getSortIcon(column) }\n />\n )}\n { props.multiSort && isSorted(column) && (\n <div\n key=\"badge\"\n class={[\n 'v-data-table-header__sort-badge',\n ...backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n >\n { sortBy.value.findIndex(x => x.key === column.key) + 1 }\n </div>\n )}\n </div>\n )\n },\n }}\n </VDataTableColumn>\n )\n }\n\n useRender(() => {\n return (\n <>\n { slots.headers\n ? slots.headers(slotProps.value)\n : headers.value.map((row, y) => (\n <tr>\n { row.map((column, x) => (\n <VDataTableHeaderCell column={ column } x={ x } y={ y } />\n ))}\n </tr>\n ))}\n\n { props.loading && (\n <tr class=\"v-data-table__progress\">\n <th colspan={ columns.value.length }>\n <LoaderSlot\n name=\"v-data-table-headers\"\n active\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n v-slots={{ default: slots.loader }}\n />\n </th>\n </tr>\n )}\n </>\n )\n })\n },\n})\n"],"mappings":";AAAA;AAAA,SACSA,YAAY;AAAA,SACZC,gBAAgB;AAAA,SAChBC,KAAK,4CAEd;AAAA,SACSC,SAAS;AAAA,SACTC,UAAU,EAAEC,eAAe,EAAEC,SAAS;AAAA,SACtCC,kBAAkB;AAAA,SAClBC,UAAU;AAAA,SAEVC,YAAY;AAAA,SACZC,OAAO,kCAEhB;AACA,SAASC,QAAQ,QAAQ,KAAK;AAAA,SACrBC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAEjE;AAqCA,OAAO,MAAMC,0BAA0B,GAAGF,YAAY,CAAC;EACrDG,KAAK,EAAEC,MAAM;EACbC,MAAM,EAAEC,OAAO;EACfC,SAAS,EAAED,OAAO;EAClBE,WAAW,EAAE;IACXC,IAAI,EAAEpB,SAAS;IACfqB,OAAO,EAAE;EACX,CAAC;EACDC,YAAY,EAAE;IACZF,IAAI,EAAEpB,SAAS;IACfqB,OAAO,EAAE;EACX,CAAC;EAED,GAAGnB,eAAe;AACpB,CAAC,EAAE,sBAAsB,CAAC;AAE1B,OAAO,MAAMqB,iBAAiB,GAAGb,gBAAgB,EAA0B,CAAC;EAC1Ec,IAAI,EAAE,mBAAmB;EAEzBC,KAAK,EAAEZ,0BAA0B,EAAE;EAEnCa,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC3B,MAAM;MAAEG,UAAU;MAAEC,MAAM;MAAEC;IAAS,CAAC,GAAGzB,OAAO,EAAE;IAClD,MAAM;MAAE0B,YAAY;MAAEC,WAAW;MAAEC;IAAU,CAAC,GAAG7B,YAAY,EAAE;IAC/D,MAAM;MAAE8B,OAAO;MAAEC;IAAQ,CAAC,GAAGhC,UAAU,EAAE;IACzC,MAAM;MAAEiC;IAAc,CAAC,GAAGnC,SAAS,CAACsB,KAAK,CAAC;IAE1C,MAAMc,cAAc,GAAGA,CAACC,MAA+B,EAAEC,CAAS,KAAgC;MAChG,IAAI,CAAChB,KAAK,CAACT,MAAM,IAAI,CAACwB,MAAM,CAACE,KAAK,EAAE,OAAOC,SAAS;MAEpD,OAAO;QACLC,QAAQ,EAAE,QAAQ;QAClBC,MAAM,EAAEL,MAAM,CAACE,KAAK,GAAG,CAAC,GAAGjB,KAAK,CAACT,MAAM,GAAG,CAAC,GAAG2B,SAAS;QAAE;QACzDG,IAAI,EAAEN,MAAM,CAACE,KAAK,GAAGjC,aAAa,CAAC+B,MAAM,CAACO,WAAW,CAAC,GAAGJ,SAAS;QAAE;QACpEK,GAAG,EAAEvB,KAAK,CAACT,MAAM,GAAI,uCAAsCyB,CAAE,GAAE,GAAGE;MACpE,CAAC;IACH,CAAC;IAED,SAASM,WAAWA,CAAET,MAA+B,EAAE;MACrD,MAAMU,IAAI,GAAGnB,MAAM,CAACoB,KAAK,CAACC,IAAI,CAACF,IAAI,IAAIA,IAAI,CAACG,GAAG,KAAKb,MAAM,CAACa,GAAG,CAAC;MAE/D,IAAI,CAACH,IAAI,EAAE,OAAOzB,KAAK,CAACN,WAAW;MAEnC,OAAO+B,IAAI,CAACI,KAAK,KAAK,KAAK,GAAG7B,KAAK,CAACN,WAAW,GAAGM,KAAK,CAACH,YAAY;IACtE;IAEA,MAAM;MAAEiC,sBAAsB;MAAEC;IAAsB,CAAC,GAAGpD,kBAAkB,CAACqB,KAAK,EAAE,OAAO,CAAC;IAE5F,MAAMgC,SAAS,GAAGjD,QAAQ,CAAC,OAAO;MAChC6B,OAAO,EAAEA,OAAO,CAACc,KAAK;MACtBf,OAAO,EAAEA,OAAO,CAACe,KAAK;MACtBrB,UAAU;MACVE,QAAQ;MACRD,MAAM,EAAEA,MAAM,CAACoB,KAAK;MACpBlB,YAAY,EAAEA,YAAY,CAACkB,KAAK;MAChCjB,WAAW,EAAEA,WAAW,CAACiB,KAAK;MAC9BhB,SAAS;MACTc,WAAW;MACXV;IACF,CAAC,CAA4B,CAAC;IAE9B,MAAMmB,oBAAoB,GAAGC,KAAA,IAAiF;MAAA,IAAhF;QAAEnB,MAAM;QAAEoB,CAAC;QAAEnB;MAA6D,CAAC,GAAAkB,KAAA;MACvG,MAAME,SAAS,GAAGrB,MAAM,CAACa,GAAG,KAAK,mBAAmB,IAAIb,MAAM,CAACa,GAAG,KAAK,mBAAmB;MAE1F,OAAAS,YAAA,CAAAhE,gBAAA;QAAA,OAEQ,IAAI;QAAA,SACA0C,MAAM,CAACuB,KAAK;QAAA,SACb,CACL,kBAAkB,EAClB;UACE,4BAA4B,EAAEvB,MAAM,CAACwB,QAAQ;UAC7C,0BAA0B,EAAEhC,QAAQ,CAACQ,MAAM;QAC7C,CAAC,EACDF,aAAa,CAACa,KAAK,CACpB;QAAA,SACM;UACLc,KAAK,EAAExD,aAAa,CAAC+B,MAAM,CAACyB,KAAK,CAAC;UAClCC,QAAQ,EAAEzD,aAAa,CAAC+B,MAAM,CAACyB,KAAK,CAAC;UACrC,GAAG1B,cAAc,CAACC,MAAM,EAAEC,CAAC;QAC7B,CAAC;QAAA,WACSD,MAAM,CAAC2B,OAAO;QAAA,WACd3B,MAAM,CAAC4B,OAAO;QAAA,WACd5B,MAAM,CAACwB,QAAQ,GAAG,MAAMlC,UAAU,CAACU,MAAM,CAAC,GAAGG,SAAS;QAAA,aACpDH,MAAM,CAAC6B,SAAS;QAAA,aAChBR;MAAS;QAGnBxC,OAAO,EAAEA,CAAA,KAAM;UACb,MAAMiD,cAAc,GAAI,UAAS9B,MAAM,CAACa,GAAI,EAAU;UACtD,MAAMkB,eAAoD,GAAG;YAC3D/B,MAAM;YACNL,SAAS;YACTH,QAAQ;YACRF,UAAU;YACVC,MAAM,EAAEA,MAAM,CAACoB,KAAK;YACpBlB,YAAY,EAAEA,YAAY,CAACkB,KAAK;YAChCjB,WAAW,EAAEA,WAAW,CAACiB,KAAK;YAC9BF;UACF,CAAC;UAED,IAAIrB,KAAK,CAAC0C,cAAc,CAAC,EAAE,OAAO1C,KAAK,CAAC0C,cAAc,CAAC,CAAEC,eAAe,CAAC;UAEzE,IAAI/B,MAAM,CAACa,GAAG,KAAK,mBAAmB,EAAE;YACtC,OAAOzB,KAAK,CAAC,0BAA0B,CAAC,GAAG2C,eAAe,CAAC,IAAAT,YAAA,CAAAjE,YAAA;cAAA,cAE1CqC,WAAW,CAACiB,KAAK;cAAA,iBACdlB,YAAY,CAACkB,KAAK,IAAI,CAACjB,WAAW,CAACiB,KAAK;cAAA,uBAClChB;YAAS,QAElC;UACH;UAEA,OAAA2B,YAAA;YAAA,SACa;UAA8B,IAAAA,YAAA,gBAC/BtB,MAAM,CAACgC,KAAK,IAClBhC,MAAM,CAACwB,QAAQ,IAAAF,YAAA,CAAA/D,KAAA;YAAA,OAET,MAAM;YAAA,SACJ,gCAAgC;YAAA,QAC/BkD,WAAW,CAACT,MAAM;UAAC,QAE7B,EACCf,KAAK,CAACP,SAAS,IAAIc,QAAQ,CAACQ,MAAM,CAAC,IAAAsB,YAAA;YAAA,OAE7B,OAAO;YAAA,SACJ,CACL,iCAAiC,EACjC,GAAGP,sBAAsB,CAACJ,KAAK,CAChC;YAAA,SACOK,qBAAqB,CAACL;UAAK,IAEjCpB,MAAM,CAACoB,KAAK,CAACsB,SAAS,CAACb,CAAC,IAAIA,CAAC,CAACP,GAAG,KAAKb,MAAM,CAACa,GAAG,CAAC,GAAG,CAAC,EAE1D;QAGP;MAAC;IAIT,CAAC;IAEDzC,SAAS,CAAC,MAAM;MACd,OAAAkD,YAAA,CAAAY,SAAA,SAEM9C,KAAK,CAACS,OAAO,GACXT,KAAK,CAACS,OAAO,CAACoB,SAAS,CAACN,KAAK,CAAC,GAC9Bd,OAAO,CAACc,KAAK,CAACwB,GAAG,CAAC,CAACC,GAAG,EAAEnC,CAAC,KAAAqB,YAAA,cAEvBc,GAAG,CAACD,GAAG,CAAC,CAACnC,MAAM,EAAEoB,CAAC,KAAAE,YAAA,CAAAJ,oBAAA;QAAA,UACalB,MAAM;QAAA,KAAOoB,CAAC;QAAA,KAAOnB;MAAC,QACtD,CAAC,EAEH,CAAC,EAEFhB,KAAK,CAACoD,OAAO,IAAAf,YAAA;QAAA,SACH;MAAwB,IAAAA,YAAA;QAAA,WAClB1B,OAAO,CAACe,KAAK,CAAC2B;MAAM,IAAAhB,YAAA,CAAA7D,UAAA;QAAA,QAEzB,sBAAsB;QAAA;QAAA,SAEnB,OAAOwB,KAAK,CAACoD,OAAO,KAAK,SAAS,GAAGlC,SAAS,GAAGlB,KAAK,CAACoD,OAAO;QAAA;MAAA,GAE7D;QAAExD,OAAO,EAAEO,KAAK,CAACmD;MAAO,CAAC,KAIzC;IAGP,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
|
|
@@ -71,7 +71,7 @@ export const VDataTableRows = genericComponent()({
|
|
|
71
71
|
}, [slots['no-data']?.() ?? t(props.noDataText)])]);
|
|
72
72
|
}
|
|
73
73
|
return _createVNode(_Fragment, null, [props.items.map((item, index) => {
|
|
74
|
-
if (item.type === 'group
|
|
74
|
+
if (item.type === 'group') {
|
|
75
75
|
return slots['group-header'] ? slots['group-header']({
|
|
76
76
|
index,
|
|
77
77
|
item,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableRows.mjs","names":["VDataTableGroupHeaderRow","VDataTableRow","useLocale","useExpanded","useHeaders","useSelection","useGroupBy","genericComponent","propsFactory","useRender","makeVDataTableRowsProps","loading","Boolean","String","loadingText","type","default","hideNoData","items","Array","noDataText","rowHeight","Number","Function","VDataTableRows","name","props","setup","_ref","emit","slots","columns","expandOnClick","toggleExpand","isExpanded","isSelected","toggleSelect","toggleGroup","isGroupOpen","t","_createVNode","value","length","_Fragment","map","item","index","id","slotProps","event","undefined"],"sources":["../../../src/labs/VDataTable/VDataTableRows.tsx"],"sourcesContent":["// Components\nimport { VDataTableGroupHeaderRow } from './VDataTableGroupHeaderRow'\nimport { VDataTableRow } from './VDataTableRow'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\nimport { useExpanded } from './composables/expand'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useGroupBy } from './composables/group'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type {
|
|
1
|
+
{"version":3,"file":"VDataTableRows.mjs","names":["VDataTableGroupHeaderRow","VDataTableRow","useLocale","useExpanded","useHeaders","useSelection","useGroupBy","genericComponent","propsFactory","useRender","makeVDataTableRowsProps","loading","Boolean","String","loadingText","type","default","hideNoData","items","Array","noDataText","rowHeight","Number","Function","VDataTableRows","name","props","setup","_ref","emit","slots","columns","expandOnClick","toggleExpand","isExpanded","isSelected","toggleSelect","toggleGroup","isGroupOpen","t","_createVNode","value","length","_Fragment","map","item","index","id","slotProps","event","undefined"],"sources":["../../../src/labs/VDataTable/VDataTableRows.tsx"],"sourcesContent":["// Components\nimport { VDataTableGroupHeaderRow, type VDataTableGroupHeaderRowSlots } from './VDataTableGroupHeaderRow'\nimport { VDataTableRow } from './VDataTableRow'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\nimport { useExpanded } from './composables/expand'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useGroupBy } from './composables/group'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { Group, provideGroupBy } from './composables/group'\nimport type { provideExpanded } from './composables/expand'\nimport type { provideSelection } from './composables/select'\nimport type { DataTableItem, InternalDataTableHeader } from './types'\n\ntype GroupHeaderSlot = {\n index: number\n item: Group\n columns: InternalDataTableHeader[]\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n isGroupOpen: ReturnType<typeof provideGroupBy>['toggleGroup']\n}\n\ntype ItemSlot = {\n index: number\n item: DataTableItem\n columns: InternalDataTableHeader[]\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n}\n\nexport type VDataTableRowsSlots = VDataTableGroupHeaderRowSlots & {\n item: [ItemSlot]\n loading: []\n 'group-header': [GroupHeaderSlot]\n 'no-data': []\n 'expanded-row': [ItemSlot]\n 'item.data-table-select': [ItemSlot]\n 'item.data-table-expand': [ItemSlot]\n} & { [key: `item.${string}`]: [ItemSlot] }\n\nexport const makeVDataTableRowsProps = propsFactory({\n loading: [Boolean, String],\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideNoData: Boolean,\n items: {\n type: Array as PropType<readonly (DataTableItem | Group)[]>,\n default: () => ([]),\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n rowHeight: Number,\n 'onClick:row': Function as PropType<(e: Event, value: { item: DataTableItem }) => void>,\n}, 'v-data-table-rows')\n\nexport const VDataTableRows = genericComponent<VDataTableRowsSlots>()({\n name: 'VDataTableRows',\n\n props: makeVDataTableRowsProps(),\n\n setup (props, { emit, slots }) {\n const { columns } = useHeaders()\n const { expandOnClick, toggleExpand, isExpanded } = useExpanded()\n const { isSelected, toggleSelect } = useSelection()\n const { toggleGroup, isGroupOpen } = useGroupBy()\n const { t } = useLocale()\n\n useRender(() => {\n if (props.loading && slots.loading) {\n return (\n <tr\n class=\"v-data-table-rows-loading\"\n key=\"loading\"\n >\n <td colspan={ columns.value.length }>\n { slots.loading() }\n </td>\n </tr>\n )\n }\n\n if (!props.loading && !props.items.length && !props.hideNoData) {\n return (\n <tr\n class=\"v-data-table-rows-no-data\"\n key=\"no-data\"\n >\n <td colspan={ columns.value.length }>\n { slots['no-data']?.() ?? t(props.noDataText) }\n </td>\n </tr>\n )\n }\n\n return (\n <>\n { props.items.map((item, index) => {\n if (item.type === 'group') {\n return slots['group-header'] ? slots['group-header']({\n index,\n item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect,\n toggleGroup,\n isGroupOpen,\n } as GroupHeaderSlot) : (\n <VDataTableGroupHeaderRow\n key={ `group-header_${item.id}` }\n item={ item }\n v-slots={ slots }\n />\n )\n }\n\n const slotProps = {\n index,\n item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect,\n } as ItemSlot\n\n return (\n <>\n { slots.item ? slots.item(slotProps) : (\n <VDataTableRow\n key={ `item_${item.value}` }\n onClick={ expandOnClick.value || props['onClick:row'] ? (event: Event) => {\n if (expandOnClick.value) {\n toggleExpand(item)\n }\n props['onClick:row']?.(event, { item })\n } : undefined }\n index={ index }\n item={ item }\n v-slots={ slots }\n />\n )}\n\n { isExpanded(item) && slots['expanded-row']?.(slotProps) }\n </>\n )\n })}\n </>\n )\n })\n\n return {}\n },\n})\n\nexport type VDataTableRows = InstanceType<typeof VDataTableRows>\n"],"mappings":"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"}
|