vuetify 3.1.7 → 3.1.9
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 +6 -530
- package/dist/json/importMap.json +36 -36
- package/dist/json/tags.json +3 -136
- package/dist/json/web-types.json +62 -1218
- package/dist/vuetify-labs.css +526 -363
- package/dist/vuetify-labs.d.ts +14 -7
- package/dist/vuetify-labs.esm.js +502 -281
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +502 -281
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +472 -312
- package/dist/vuetify.d.ts +17 -12
- package/dist/vuetify.esm.js +336 -222
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +336 -222
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +503 -501
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.css +1 -1
- package/lib/components/VAlert/VAlert.mjs +29 -15
- package/lib/components/VAlert/VAlert.mjs.map +1 -1
- package/lib/components/VAlert/_variables.scss +1 -1
- package/lib/components/VAlert/index.d.ts +2 -0
- package/lib/components/VAutocomplete/VAutocomplete.mjs +11 -5
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VBanner/VBanner.mjs +19 -12
- package/lib/components/VBanner/VBanner.mjs.map +1 -1
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +11 -7
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.mjs +25 -19
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
- package/lib/components/VCard/VCard.mjs +10 -6
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/VCardItem.mjs +27 -23
- package/lib/components/VCard/VCardItem.mjs.map +1 -1
- package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
- package/lib/components/VChip/VChip.css +110 -90
- package/lib/components/VChip/VChip.mjs +70 -48
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChip/_mixins.scss +27 -23
- package/lib/components/VChip/index.d.ts +2 -2
- package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +11 -5
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +4 -1
- package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
- package/lib/components/VDefaultsProvider/index.d.ts +3 -0
- package/lib/components/VDivider/VDivider.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.mjs +1 -0
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFooter/VFooter.css +2 -0
- package/lib/components/VFooter/VFooter.sass +2 -0
- package/lib/components/VFooter/_variables.scss +2 -0
- package/lib/components/VImg/VImg.mjs +2 -2
- package/lib/components/VImg/VImg.mjs.map +1 -1
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListItem.mjs +23 -19
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListSubheader.mjs.map +1 -1
- package/lib/components/VMessages/VMessages.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VRating/VRating.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.mjs +11 -5
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- package/lib/components/VSlider/VSliderTrack.mjs +1 -0
- package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
- package/lib/components/VSlider/slider.mjs +3 -1
- package/lib/components/VSlider/slider.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.css +2 -9
- package/lib/components/VSnackbar/VSnackbar.mjs +8 -9
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.sass +3 -10
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VTable/VTable.mjs.map +1 -1
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTabs/VTabs.mjs +23 -15
- package/lib/components/VTabs/VTabs.mjs.map +1 -1
- package/lib/components/VTextField/VTextField.mjs +1 -0
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextarea/VTextarea.mjs +1 -0
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTimeline/VTimelineDivider.mjs +18 -10
- package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
- package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbar.mjs +9 -5
- package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
- package/lib/components/index.d.ts +7 -2
- package/lib/components/transitions/createTransition.mjs +1 -1
- package/lib/components/transitions/createTransition.mjs.map +1 -1
- package/lib/composables/defaults.mjs +2 -0
- package/lib/composables/defaults.mjs.map +1 -1
- package/lib/composables/display.mjs +13 -10
- package/lib/composables/display.mjs.map +1 -1
- package/lib/composables/loader.mjs.map +1 -1
- package/lib/composables/theme.mjs +7 -10
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/composables/variant.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.ts +10 -10
- package/lib/labs/VDataTable/VDataTable.css +3 -0
- package/lib/labs/VDataTable/VDataTable.mjs +45 -19
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTable.sass +3 -0
- package/lib/labs/VDataTable/VDataTableFooter.mjs +3 -2
- package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRow.mjs +6 -2
- package/lib/labs/VDataTable/VDataTableRow.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 +39 -17
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +27 -14
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/expand.mjs +1 -1
- package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/group.mjs +12 -1
- package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/options.mjs +4 -10
- package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/paginate.mjs +25 -4
- 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 +19 -3
- package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.ts +7 -5
- package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
- package/lib/labs/components.d.ts +7 -5
- package/lib/locale/adapters/vue-i18n.d.ts +1 -1
- package/lib/locale/adapters/vue-i18n.mjs +1 -1
- package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
- package/lib/locale/index.mjs +1 -1
- package/lib/locale/index.mjs.map +1 -1
- package/lib/styles/elements/_global.sass +0 -4
- package/lib/styles/generic/_index.scss +0 -1
- package/lib/styles/generic/_transitions.scss +111 -9
- package/lib/styles/main.css +312 -167
- package/lib/styles/tools/_sheet.sass +3 -6
- package/lib/styles/utilities/_display.sass +6 -5
- package/lib/styles/utilities/_elevation.scss +13 -0
- package/lib/styles/utilities/_index.sass +3 -2
- package/lib/styles/utilities/_screenreaders.sass +13 -11
- package/lib/util/defineComponent.mjs +3 -2
- package/lib/util/defineComponent.mjs.map +1 -1
- package/package.json +14 -7
- package/lib/styles/generic/_elevation.scss +0 -10
|
@@ -86,7 +86,8 @@ export const VDataTableFooter = genericComponent()({
|
|
|
86
86
|
startIndex,
|
|
87
87
|
stopIndex,
|
|
88
88
|
itemsLength,
|
|
89
|
-
itemsPerPage
|
|
89
|
+
itemsPerPage,
|
|
90
|
+
setItemsPerPage
|
|
90
91
|
} = usePagination();
|
|
91
92
|
const itemsPerPageOptions = computed(() => props.itemsPerPageOptions.map(option => ({
|
|
92
93
|
...option,
|
|
@@ -99,7 +100,7 @@ export const VDataTableFooter = genericComponent()({
|
|
|
99
100
|
}, [_createVNode("span", null, [t(props.itemsPerPageText)]), _createVNode(VSelect, {
|
|
100
101
|
"items": itemsPerPageOptions.value,
|
|
101
102
|
"modelValue": itemsPerPage.value,
|
|
102
|
-
"onUpdate:modelValue": v =>
|
|
103
|
+
"onUpdate:modelValue": v => setItemsPerPage(Number(v)),
|
|
103
104
|
"density": "compact",
|
|
104
105
|
"variant": "outlined",
|
|
105
106
|
"hide-details": true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableFooter.mjs","names":["VBtn","VSelect","useLocale","usePagination","computed","genericComponent","VDataTableFooter","name","props","prevIcon","type","String","default","nextIcon","firstIcon","lastIcon","itemsPerPageText","pageText","firstPageLabel","prevPageLabel","nextPageLabel","lastPageLabel","itemsPerPageOptions","Array","value","title","showCurrentPage","Boolean","setup","slots","t","page","pageCount","startIndex","stopIndex","itemsLength","itemsPerPage","map","option","prepend","v","Number","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 } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalItem } from '@/composables/items'\n\nexport const VDataTableFooter = genericComponent<{ prepend: [] }>()({\n name: 'VDataTableFooter',\n\n props: {\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<InternalItem[]>,\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 },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { page, pageCount, startIndex, stopIndex, itemsLength, itemsPerPage } = 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 =>
|
|
1
|
+
{"version":3,"file":"VDataTableFooter.mjs","names":["VBtn","VSelect","useLocale","usePagination","computed","genericComponent","VDataTableFooter","name","props","prevIcon","type","String","default","nextIcon","firstIcon","lastIcon","itemsPerPageText","pageText","firstPageLabel","prevPageLabel","nextPageLabel","lastPageLabel","itemsPerPageOptions","Array","value","title","showCurrentPage","Boolean","setup","slots","t","page","pageCount","startIndex","stopIndex","itemsLength","itemsPerPage","setItemsPerPage","map","option","prepend","v","Number","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 } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalItem } from '@/composables/items'\n\nexport const VDataTableFooter = genericComponent<{ prepend: [] }>()({\n name: 'VDataTableFooter',\n\n props: {\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<InternalItem[]>,\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 },\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":"VDataTableHeaders.mjs","names":["VCheckboxBtn","VDataTableColumn","VIcon","IconValue","LoaderSlot","makeLoaderProps","useLoader","useBackgroundColor","useHeaders","useSelection","useSort","convertToUnit","genericComponent","useRender","VDataTableHeaders","name","props","color","String","sticky","Boolean","multiSort","sortAscIcon","type","default","sortDescIcon","setup","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","VDataTableHeaderCell","x","isSorted","noPadding","align","sortable","width","minWidth","colspan","rowspan","lastFixed","slotName","slotProps","title","findIndex","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 { convertToUnit, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { InternalDataTableHeader } from './types'\nimport type { LoaderSlotProps } from '@/composables/loader'\n\nexport type VDataTableHeadersSlots = {\n default: []\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: {\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 },\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 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 slotName = `column.${column.key}`\n const slotProps = {\n column,\n selectAll,\n }\n\n if (slots[slotName]) return slots[slotName]!(slotProps)\n\n if (column.key === 'data-table-select') {\n return slots['column.data-table-select']?.(slotProps) ?? (\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 <>\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDataTableHeaders.mjs","names":["VCheckboxBtn","VDataTableColumn","VIcon","IconValue","LoaderSlot","makeLoaderProps","useLoader","useBackgroundColor","useHeaders","useSelection","useSort","convertToUnit","genericComponent","useRender","VDataTableHeaders","name","props","color","String","sticky","Boolean","multiSort","sortAscIcon","type","default","sortDescIcon","setup","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","VDataTableHeaderCell","x","isSorted","noPadding","align","sortable","width","minWidth","colspan","rowspan","lastFixed","slotName","slotProps","title","findIndex","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 { convertToUnit, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { InternalDataTableHeader } from './types'\nimport type { LoaderSlotProps } from '@/composables/loader'\n\nexport type VDataTableHeadersSlots = {\n default: []\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: {\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 },\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 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 slotName = `column.${column.key}`\n const slotProps = {\n column,\n selectAll,\n }\n\n if (slots[slotName]) return slots[slotName]!(slotProps)\n\n if (column.key === 'data-table-select') {\n return slots['column.data-table-select']?.(slotProps) ?? (\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 <>\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"],"mappings":"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"}
|
|
@@ -10,7 +10,8 @@ import { defineComponent, useRender } from "../../util/index.mjs"; // Types
|
|
|
10
10
|
export const VDataTableRow = defineComponent({
|
|
11
11
|
name: 'VDataTableRow',
|
|
12
12
|
props: {
|
|
13
|
-
item: Object
|
|
13
|
+
item: Object,
|
|
14
|
+
onClick: Function
|
|
14
15
|
},
|
|
15
16
|
setup(props, _ref) {
|
|
16
17
|
let {
|
|
@@ -28,7 +29,10 @@ export const VDataTableRow = defineComponent({
|
|
|
28
29
|
columns
|
|
29
30
|
} = useHeaders();
|
|
30
31
|
useRender(() => _createVNode("tr", {
|
|
31
|
-
"class": ['v-data-table__tr'
|
|
32
|
+
"class": ['v-data-table__tr', {
|
|
33
|
+
'v-data-table__tr--clickable': !!props.onClick
|
|
34
|
+
}],
|
|
35
|
+
"onClick": props.onClick
|
|
32
36
|
}, [!columns.value.length && _createVNode(VDataTableColumn, {
|
|
33
37
|
"key": "no-data"
|
|
34
38
|
}, slots), props.item && columns.value.map((column, i) => _createVNode(VDataTableColumn, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableRow.mjs","names":["VBtn","VCheckboxBtn","useExpanded","useHeaders","useSelection","VDataTableColumn","defineComponent","useRender","VDataTableRow","name","props","item","Object","setup","slots","isSelected","toggleSelect","isExpanded","toggleExpand","columns","value","length","map","column","i","align","fixed","fixedOffset","lastFixed","key","width","default","slotName","slotProps"],"sources":["../../../src/labs/VDataTable/VDataTableRow.tsx"],"sourcesContent":["// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Composables\nimport { useExpanded } from './composables/expand'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { VDataTableColumn } from './VDataTableColumn'\n\n// Utilities\nimport { defineComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { DataTableItem } from './types'\n\nexport const VDataTableRow = defineComponent({\n name: 'VDataTableRow',\n\n props: {\n item: Object as PropType<DataTableItem>,\n },\n\n setup (props, { slots }) {\n const { isSelected, toggleSelect } = useSelection()\n const { isExpanded, toggleExpand } = useExpanded()\n const { columns } = useHeaders()\n\n useRender(() => (\n <tr\n class={[\n 'v-data-table__tr',\n ]}\n >\n { !columns.value.length && (\n <VDataTableColumn\n key=\"no-data\"\n v-slots={ slots }\n />\n )
|
|
1
|
+
{"version":3,"file":"VDataTableRow.mjs","names":["VBtn","VCheckboxBtn","useExpanded","useHeaders","useSelection","VDataTableColumn","defineComponent","useRender","VDataTableRow","name","props","item","Object","onClick","Function","setup","slots","isSelected","toggleSelect","isExpanded","toggleExpand","columns","value","length","map","column","i","align","fixed","fixedOffset","lastFixed","key","width","default","slotName","slotProps"],"sources":["../../../src/labs/VDataTable/VDataTableRow.tsx"],"sourcesContent":["// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Composables\nimport { useExpanded } from './composables/expand'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { VDataTableColumn } from './VDataTableColumn'\n\n// Utilities\nimport { defineComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { DataTableItem } from './types'\n\nexport const VDataTableRow = defineComponent({\n name: 'VDataTableRow',\n\n props: {\n item: Object as PropType<DataTableItem>,\n onClick: Function as PropType<(e: MouseEvent) => void>,\n },\n\n setup (props, { slots }) {\n const { isSelected, toggleSelect } = useSelection()\n const { isExpanded, toggleExpand } = useExpanded()\n const { columns } = useHeaders()\n\n useRender(() => (\n <tr\n class={[\n 'v-data-table__tr',\n {\n 'v-data-table__tr--clickable': !!props.onClick,\n },\n ]}\n onClick={ props.onClick }\n >\n { !columns.value.length && (\n <VDataTableColumn\n key=\"no-data\"\n v-slots={ slots }\n />\n )}\n\n { props.item && columns.value.map((column, i) => (\n <VDataTableColumn\n align={ column.align }\n fixed={ column.fixed }\n fixedOffset={ column.fixedOffset }\n lastFixed={ column.lastFixed }\n noPadding={ column.key === 'data-table-select' || column.key === 'data-table-expand' }\n width={ column.width }\n >\n {{\n default: () => {\n const item = props.item!\n const slotName = `item.${column.key}`\n const slotProps = {\n item: props.item,\n columns: columns.value,\n isSelected,\n toggleSelect,\n isExpanded,\n toggleExpand,\n }\n\n if (slots[slotName]) return slots[slotName]!(slotProps)\n\n if (column.key === 'data-table-select') {\n return slots['item.data-table-select']?.(slotProps) ?? (\n <VCheckboxBtn\n modelValue={ isSelected([item]) }\n onClick={ () => toggleSelect(item) }\n />\n )\n }\n\n if (column.key === 'data-table-expand') {\n return slots['item.data-table-expand']?.(slotProps) ?? (\n <VBtn\n icon={ isExpanded(item) ? '$collapse' : '$expand' }\n size=\"small\"\n variant=\"text\"\n onClick={ () => toggleExpand(item) }\n />\n )\n }\n\n return item.columns[column.key]\n },\n }}\n </VDataTableColumn>\n ))}\n </tr>\n ))\n },\n})\n\nexport type VDataTableRow = InstanceType<typeof VDataTableRow>\n"],"mappings":";AAAA;AAAA,SACSA,IAAI;AAAA,SACJC,YAAY,gDAErB;AAAA,SACSC,WAAW;AAAA,SACXC,UAAU;AAAA,SACVC,YAAY;AAAA,SACZC,gBAAgB,kCAEzB;AAAA,SACSC,eAAe,EAAEC,SAAS,gCAEnC;AAIA,OAAO,MAAMC,aAAa,GAAGF,eAAe,CAAC;EAC3CG,IAAI,EAAE,eAAe;EAErBC,KAAK,EAAE;IACLC,IAAI,EAAEC,MAAiC;IACvCC,OAAO,EAAEC;EACX,CAAC;EAEDC,KAAK,CAAEL,KAAK,QAAa;IAAA,IAAX;MAAEM;IAAM,CAAC;IACrB,MAAM;MAAEC,UAAU;MAAEC;IAAa,CAAC,GAAGd,YAAY,EAAE;IACnD,MAAM;MAAEe,UAAU;MAAEC;IAAa,CAAC,GAAGlB,WAAW,EAAE;IAClD,MAAM;MAAEmB;IAAQ,CAAC,GAAGlB,UAAU,EAAE;IAEhCI,SAAS,CAAC;MAAA,SAEC,CACL,kBAAkB,EAClB;QACE,6BAA6B,EAAE,CAAC,CAACG,KAAK,CAACG;MACzC,CAAC,CACF;MAAA,WACSH,KAAK,CAACG;IAAO,IAErB,CAACQ,OAAO,CAACC,KAAK,CAACC,MAAM;MAAA,OAEf;IAAS,GACHP,KAAK,CAElB,EAECN,KAAK,CAACC,IAAI,IAAIU,OAAO,CAACC,KAAK,CAACE,GAAG,CAAC,CAACC,MAAM,EAAEC,CAAC;MAAA,SAEhCD,MAAM,CAACE,KAAK;MAAA,SACZF,MAAM,CAACG,KAAK;MAAA,eACNH,MAAM,CAACI,WAAW;MAAA,aACpBJ,MAAM,CAACK,SAAS;MAAA,aAChBL,MAAM,CAACM,GAAG,KAAK,mBAAmB,IAAIN,MAAM,CAACM,GAAG,KAAK,mBAAmB;MAAA,SAC5EN,MAAM,CAACO;IAAK;MAGlBC,OAAO,EAAE,MAAM;QACb,MAAMtB,IAAI,GAAGD,KAAK,CAACC,IAAK;QACxB,MAAMuB,QAAQ,GAAI,QAAOT,MAAM,CAACM,GAAI,EAAC;QACrC,MAAMI,SAAS,GAAG;UAChBxB,IAAI,EAAED,KAAK,CAACC,IAAI;UAChBU,OAAO,EAAEA,OAAO,CAACC,KAAK;UACtBL,UAAU;UACVC,YAAY;UACZC,UAAU;UACVC;QACF,CAAC;QAED,IAAIJ,KAAK,CAACkB,QAAQ,CAAC,EAAE,OAAOlB,KAAK,CAACkB,QAAQ,CAAC,CAAEC,SAAS,CAAC;QAEvD,IAAIV,MAAM,CAACM,GAAG,KAAK,mBAAmB,EAAE;UACtC,OAAOf,KAAK,CAAC,wBAAwB,CAAC,GAAGmB,SAAS,CAAC;YAAA,cAElClB,UAAU,CAAC,CAACN,IAAI,CAAC,CAAC;YAAA,WACrB,MAAMO,YAAY,CAACP,IAAI;UAAC,QAErC;QACH;QAEA,IAAIc,MAAM,CAACM,GAAG,KAAK,mBAAmB,EAAE;UACtC,OAAOf,KAAK,CAAC,wBAAwB,CAAC,GAAGmB,SAAS,CAAC;YAAA,QAExChB,UAAU,CAACR,IAAI,CAAC,GAAG,WAAW,GAAG,SAAS;YAAA,QAC5C,OAAO;YAAA,WACJ,MAAM;YAAA,WACJ,MAAMS,YAAY,CAACT,IAAI;UAAC,QAErC;QACH;QAEA,OAAOA,IAAI,CAACU,OAAO,CAACI,MAAM,CAACM,GAAG,CAAC;MACjC;IAAC,EAGN,CAAC,EAEL,CAAC;EACJ;AACF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableRows.mjs","names":["VDataTableGroupHeaderRow","VDataTableRow","useLocale","useExpanded","useHeaders","useSelection","useGroupBy","genericComponent","useRender","VDataTableRows","name","props","loading","Boolean","String","loadingText","type","default","hideNoData","items","Array","noDataText","rowHeight","Number","emits","event","value","setup","emit","slots","columns","expandOnClick","toggleExpand","isExpanded","isSelected","toggleSelect","toggleGroup","isGroupOpen","t","undefined","length","map","item","index","id","slotProps"],"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, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem, GroupHeaderItem, InternalDataTableHeader, InternalDataTableItem } from './types'\nimport type { PropType } from 'vue'\n\ntype GroupHeaderSlot = {\n index: number\n item: GroupHeaderItem\n columns: InternalDataTableHeader[]\n isExpanded: (item: DataTableItem) => boolean\n toggleExpand: (item: DataTableItem) => void\n isSelected: (items: DataTableItem[]) => boolean\n toggleSelect: (item: DataTableItem) => void\n toggleGroup: (group: GroupHeaderItem) => void\n isGroupOpen: (group: GroupHeaderItem) => boolean\n}\n\ntype ItemSlot = {\n index: number\n item: InternalDataTableItem\n columns: InternalDataTableHeader[]\n isExpanded: (item: DataTableItem) => boolean\n toggleExpand: (item: DataTableItem) => void\n isSelected: (items: DataTableItem[]) => boolean\n toggleSelect: (item: DataTableItem) => void\n}\n\nexport type VDataTableRowsSlots = {\n default: []\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 VDataTableRows = genericComponent<VDataTableRowsSlots>()({\n name: 'VDataTableRows',\n\n props: {\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<InternalDataTableItem[]>,\n default: () => ([]),\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n rowHeight: Number,\n },\n\n emits: {\n 'click:row': (event: Event, value: { item: DataTableItem }) => true,\n },\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 <>\n { props.loading ? slots.loading?.() ?? (\n <VDataTableRow\n class=\"v-data-table-rows-no-data\"\n key=\"loading\"\n >\n { t(props.loadingText) }\n </VDataTableRow>\n ) : undefined }\n\n { !props.loading && !props.items.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VDataTableRow\n class=\"v-data-table-rows-no-data\"\n key=\"no-data\"\n >\n { t(props.noDataText) }\n </VDataTableRow>\n ))
|
|
1
|
+
{"version":3,"file":"VDataTableRows.mjs","names":["VDataTableGroupHeaderRow","VDataTableRow","useLocale","useExpanded","useHeaders","useSelection","useGroupBy","genericComponent","useRender","VDataTableRows","name","props","loading","Boolean","String","loadingText","type","default","hideNoData","items","Array","noDataText","rowHeight","Number","emits","event","value","setup","emit","slots","columns","expandOnClick","toggleExpand","isExpanded","isSelected","toggleSelect","toggleGroup","isGroupOpen","t","undefined","length","map","item","index","id","slotProps"],"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, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem, GroupHeaderItem, InternalDataTableHeader, InternalDataTableItem } from './types'\nimport type { PropType } from 'vue'\n\ntype GroupHeaderSlot = {\n index: number\n item: GroupHeaderItem\n columns: InternalDataTableHeader[]\n isExpanded: (item: DataTableItem) => boolean\n toggleExpand: (item: DataTableItem) => void\n isSelected: (items: DataTableItem[]) => boolean\n toggleSelect: (item: DataTableItem) => void\n toggleGroup: (group: GroupHeaderItem) => void\n isGroupOpen: (group: GroupHeaderItem) => boolean\n}\n\ntype ItemSlot = {\n index: number\n item: InternalDataTableItem\n columns: InternalDataTableHeader[]\n isExpanded: (item: DataTableItem) => boolean\n toggleExpand: (item: DataTableItem) => void\n isSelected: (items: DataTableItem[]) => boolean\n toggleSelect: (item: DataTableItem) => void\n}\n\nexport type VDataTableRowsSlots = {\n default: []\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 VDataTableRows = genericComponent<VDataTableRowsSlots>()({\n name: 'VDataTableRows',\n\n props: {\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<InternalDataTableItem[]>,\n default: () => ([]),\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n rowHeight: Number,\n },\n\n emits: {\n 'click:row': (event: Event, value: { item: DataTableItem }) => true,\n },\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 <>\n { props.loading ? slots.loading?.() ?? (\n <VDataTableRow\n class=\"v-data-table-rows-no-data\"\n key=\"loading\"\n >\n { t(props.loadingText) }\n </VDataTableRow>\n ) : undefined }\n\n { !props.loading && !props.items.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VDataTableRow\n class=\"v-data-table-rows-no-data\"\n key=\"no-data\"\n >\n { t(props.noDataText) }\n </VDataTableRow>\n ))}\n\n { props.items.map((item, index) => {\n if (item.type === 'group-header') {\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={ (event: Event) => {\n if (expandOnClick.value) {\n toggleExpand(item)\n }\n\n emit('click:row', event, { item })\n }}\n item={ item }\n v-slots={ slots }\n />\n )}\n\n { isExpanded(item) && slots['expanded-row']?.(slotProps) }\n </>\n )\n })}\n </>\n ))\n\n return {}\n },\n})\n\nexport type VDataTableRows = InstanceType<typeof VDataTableRows>\n"],"mappings":"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"}
|
|
@@ -5,16 +5,15 @@ import { VDataTableFooter } from "./VDataTableFooter.mjs";
|
|
|
5
5
|
import { VDataTableHeaders } from "./VDataTableHeaders.mjs";
|
|
6
6
|
import { VDataTableRows } from "./VDataTableRows.mjs"; // Composables
|
|
7
7
|
import { provideDefaults } from "../../composables/defaults.mjs";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { createGroupBy, makeDataTableGroupProps, useGroupedItems } from "./composables/group.mjs";
|
|
8
|
+
import { makeDataTableExpandProps, provideExpanded } from "./composables/expand.mjs";
|
|
9
|
+
import { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from "./composables/group.mjs";
|
|
11
10
|
import { createHeaders, makeDataTableHeaderProps } from "./composables/headers.mjs";
|
|
12
11
|
import { makeDataTableItemProps, useDataTableItems } from "./composables/items.mjs";
|
|
13
12
|
import { useOptions } from "./composables/options.mjs";
|
|
14
|
-
import { createPagination, makeDataTablePaginateProps } from "./composables/paginate.mjs";
|
|
15
|
-
import {
|
|
16
|
-
import { createSort, makeDataTableSortProps } from "./composables/sort.mjs"; // Utilities
|
|
17
|
-
import { provide, toRef } from 'vue';
|
|
13
|
+
import { createPagination, makeDataTablePaginateProps, providePagination } from "./composables/paginate.mjs";
|
|
14
|
+
import { makeDataTableSelectProps, provideSelection } from "./composables/select.mjs";
|
|
15
|
+
import { createSort, makeDataTableSortProps, provideSort } from "./composables/sort.mjs"; // Utilities
|
|
16
|
+
import { computed, provide, toRef } from 'vue';
|
|
18
17
|
import { genericComponent, useRender } from "../../util/index.mjs";
|
|
19
18
|
import { makeVDataTableProps } from "./VDataTable.mjs"; // Types
|
|
20
19
|
export const VDataTableServer = genericComponent()({
|
|
@@ -26,7 +25,10 @@ export const VDataTableServer = genericComponent()({
|
|
|
26
25
|
type: String,
|
|
27
26
|
default: '$vuetify.dataIterator.loadingText'
|
|
28
27
|
},
|
|
29
|
-
itemsLength:
|
|
28
|
+
itemsLength: {
|
|
29
|
+
type: [Number, String],
|
|
30
|
+
required: true
|
|
31
|
+
},
|
|
30
32
|
...makeVDataTableProps(),
|
|
31
33
|
...makeDataTableExpandProps(),
|
|
32
34
|
...makeDataTableHeaderProps(),
|
|
@@ -51,8 +53,20 @@ export const VDataTableServer = genericComponent()({
|
|
|
51
53
|
emit,
|
|
52
54
|
slots
|
|
53
55
|
} = _ref;
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
+
const {
|
|
57
|
+
groupBy
|
|
58
|
+
} = createGroupBy(props);
|
|
59
|
+
const {
|
|
60
|
+
sortBy,
|
|
61
|
+
multiSort,
|
|
62
|
+
mustSort
|
|
63
|
+
} = createSort(props);
|
|
64
|
+
const {
|
|
65
|
+
page,
|
|
66
|
+
itemsPerPage
|
|
67
|
+
} = createPagination(props);
|
|
68
|
+
const itemsLength = computed(() => parseInt(props.itemsLength, 10));
|
|
69
|
+
provideExpanded(props);
|
|
56
70
|
const {
|
|
57
71
|
columns
|
|
58
72
|
} = createHeaders(props, {
|
|
@@ -64,20 +78,28 @@ export const VDataTableServer = genericComponent()({
|
|
|
64
78
|
items
|
|
65
79
|
} = useDataTableItems(props, columns);
|
|
66
80
|
const {
|
|
67
|
-
sortBy,
|
|
68
81
|
toggleSort
|
|
69
|
-
} =
|
|
82
|
+
} = provideSort({
|
|
83
|
+
sortBy,
|
|
84
|
+
multiSort,
|
|
85
|
+
mustSort,
|
|
86
|
+
page
|
|
87
|
+
});
|
|
70
88
|
const {
|
|
71
89
|
opened
|
|
72
|
-
} =
|
|
73
|
-
|
|
90
|
+
} = provideGroupBy({
|
|
91
|
+
groupBy,
|
|
92
|
+
sortBy
|
|
93
|
+
});
|
|
94
|
+
providePagination({
|
|
74
95
|
page,
|
|
75
|
-
itemsPerPage
|
|
76
|
-
|
|
96
|
+
itemsPerPage,
|
|
97
|
+
itemsLength
|
|
98
|
+
});
|
|
77
99
|
const {
|
|
78
100
|
flatItems
|
|
79
101
|
} = useGroupedItems(items, groupBy, opened);
|
|
80
|
-
|
|
102
|
+
provideSelection(props, items);
|
|
81
103
|
useOptions({
|
|
82
104
|
page,
|
|
83
105
|
itemsPerPage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableServer.mjs","names":["VTable","VDataTableFooter","VDataTableHeaders","VDataTableRows","provideDefaults","useProxiedModel","createExpanded","makeDataTableExpandProps","createGroupBy","makeDataTableGroupProps","useGroupedItems","createHeaders","makeDataTableHeaderProps","makeDataTableItemProps","useDataTableItems","useOptions","createPagination","makeDataTablePaginateProps","createSelection","makeDataTableSelectProps","createSort","makeDataTableSortProps","provide","toRef","genericComponent","useRender","makeVDataTableProps","VDataTableServer","name","props","color","String","loading","Boolean","loadingText","type","default","itemsLength","Number","emits","value","page","sortBy","options","event","setup","emit","slots","groupBy","columns","showSelect","showExpand","items","toggleSort","opened","itemsPerPage","flatItems","hideNoData","noDataText","fixedHeader","fixedFooter","height","top","headers","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTableServer.tsx"],"sourcesContent":["// Components\nimport { VTable } from '@/components/VTable'\nimport { VDataTableFooter } from './VDataTableFooter'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { createExpanded, makeDataTableExpandProps } from './composables/expand'\nimport { createGroupBy, makeDataTableGroupProps, useGroupedItems } from './composables/group'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { createPagination, makeDataTablePaginateProps } from './composables/paginate'\nimport { createSelection, makeDataTableSelectProps } from './composables/select'\nimport { createSort, makeDataTableSortProps } from './composables/sort'\n\n// Utilities\nimport { provide, toRef } from 'vue'\nimport { genericComponent, useRender } from '@/util'\nimport { makeVDataTableProps } from './VDataTable'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableSlots } from './VDataTable'\n\nexport const VDataTableServer = genericComponent<VDataTableSlots>()({\n name: 'VDataTableServer',\n\n props: {\n color: String,\n loading: [Boolean, String],\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n itemsLength: [Number, String],\n\n ...makeVDataTableProps(),\n ...makeDataTableExpandProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps(),\n ...makeDataTableGroupProps(),\n },\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': (event: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const groupBy = useProxiedModel(props, 'groupBy')\n\n createExpanded(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 { sortBy, toggleSort } = createSort(props)\n\n const { opened } = createGroupBy(props, groupBy, sortBy)\n\n const { page, itemsPerPage } = createPagination(props, items)\n\n const { flatItems } = useGroupedItems(items, groupBy, opened)\n\n createSelection(props, items)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\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 useRender(() => (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\n },\n ]}\n fixedHeader={ props.fixedHeader }\n fixedFooter={ props.fixedFooter }\n height={ props.height }\n >\n {{\n top: slots.top,\n default: slots.default ?? (() => (\n <>\n <thead class=\"v-data-table__thead\" role=\"rowgroup\">\n { slots.headers ? slots.headers() : (\n <VDataTableHeaders\n sticky={ props.fixedHeader }\n loading={ props.loading }\n color={ props.color }\n v-slots={ slots }\n />\n ) }\n </thead>\n { slots.thead?.() }\n <tbody class=\"v-data-table__tbody\" role=\"rowgroup\">\n { slots.body ? slots.body() : (\n <VDataTableRows\n items={ flatItems.value }\n onClick:row={ (event, value) => emit('click:row', event, value) }\n v-slots={ slots }\n />\n ) }\n </tbody>\n { slots.tbody?.() }\n { slots.tfoot?.() }\n </>\n )),\n bottom: slots.bottom ?? (() => (\n <VDataTableFooter\n v-slots={{\n prepend: slots['footer.prepend'],\n }}\n />\n )),\n }}\n </VTable>\n ))\n },\n})\n\nexport type VDataTableServer = InstanceType<typeof VDataTableServer>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDataTableServer.mjs","names":["VTable","VDataTableFooter","VDataTableHeaders","VDataTableRows","provideDefaults","makeDataTableExpandProps","provideExpanded","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createHeaders","makeDataTableHeaderProps","makeDataTableItemProps","useDataTableItems","useOptions","createPagination","makeDataTablePaginateProps","providePagination","makeDataTableSelectProps","provideSelection","createSort","makeDataTableSortProps","provideSort","computed","provide","toRef","genericComponent","useRender","makeVDataTableProps","VDataTableServer","name","props","color","String","loading","Boolean","loadingText","type","default","itemsLength","Number","required","emits","value","page","sortBy","options","event","setup","emit","slots","groupBy","multiSort","mustSort","itemsPerPage","parseInt","columns","showSelect","showExpand","items","toggleSort","opened","flatItems","hideNoData","noDataText","fixedHeader","fixedFooter","height","top","headers","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTableServer.tsx"],"sourcesContent":["// Components\nimport { VTable } from '@/components/VTable'\nimport { VDataTableFooter } from './VDataTableFooter'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDataTableExpandProps, provideExpanded } from './composables/expand'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { createPagination, makeDataTablePaginateProps, providePagination } from './composables/paginate'\nimport { makeDataTableSelectProps, provideSelection } from './composables/select'\nimport { createSort, makeDataTableSortProps, provideSort } from './composables/sort'\n\n// Utilities\nimport { computed, provide, toRef } from 'vue'\nimport { genericComponent, useRender } from '@/util'\nimport { makeVDataTableProps } from './VDataTable'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableSlots } from './VDataTable'\n\nexport const VDataTableServer = genericComponent<VDataTableSlots>()({\n name: 'VDataTableServer',\n\n props: {\n color: String,\n loading: [Boolean, String],\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n itemsLength: {\n type: [Number, String],\n required: true,\n },\n\n ...makeVDataTableProps(),\n ...makeDataTableExpandProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps(),\n ...makeDataTableGroupProps(),\n },\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': (event: 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 provideExpanded(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 { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n\n const { opened } = provideGroupBy({ groupBy, sortBy })\n\n providePagination({ page, itemsPerPage, itemsLength })\n\n const { flatItems } = useGroupedItems(items, groupBy, opened)\n\n provideSelection(props, items)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\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 useRender(() => (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\n },\n ]}\n fixedHeader={ props.fixedHeader }\n fixedFooter={ props.fixedFooter }\n height={ props.height }\n >\n {{\n top: slots.top,\n default: slots.default ?? (() => (\n <>\n <thead class=\"v-data-table__thead\" role=\"rowgroup\">\n { slots.headers ? slots.headers() : (\n <VDataTableHeaders\n sticky={ props.fixedHeader }\n loading={ props.loading }\n color={ props.color }\n v-slots={ slots }\n />\n )}\n </thead>\n { slots.thead?.() }\n <tbody class=\"v-data-table__tbody\" role=\"rowgroup\">\n { slots.body ? slots.body() : (\n <VDataTableRows\n items={ flatItems.value }\n onClick:row={ (event, value) => emit('click:row', event, value) }\n v-slots={ slots }\n />\n )}\n </tbody>\n { slots.tbody?.() }\n { slots.tfoot?.() }\n </>\n )),\n bottom: slots.bottom ?? (() => (\n <VDataTableFooter\n v-slots={{\n prepend: slots['footer.prepend'],\n }}\n />\n )),\n }}\n </VTable>\n ))\n },\n})\n\nexport type VDataTableServer = InstanceType<typeof VDataTableServer>\n"],"mappings":";AAAA;AAAA,SACSA,MAAM;AAAA,SACNC,gBAAgB;AAAA,SAChBC,iBAAiB;AAAA,SACjBC,cAAc,gCAEvB;AAAA,SACSC,eAAe;AAAA,SACfC,wBAAwB,EAAEC,eAAe;AAAA,SACzCC,aAAa,EAAEC,uBAAuB,EAAEC,cAAc,EAAEC,eAAe;AAAA,SACvEC,aAAa,EAAEC,wBAAwB;AAAA,SACvCC,sBAAsB,EAAEC,iBAAiB;AAAA,SACzCC,UAAU;AAAA,SACVC,gBAAgB,EAAEC,0BAA0B,EAAEC,iBAAiB;AAAA,SAC/DC,wBAAwB,EAAEC,gBAAgB;AAAA,SAC1CC,UAAU,EAAEC,sBAAsB,EAAEC,WAAW,kCAExD;AACA,SAASC,QAAQ,EAAEC,OAAO,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACrCC,gBAAgB,EAAEC,SAAS;AAAA,SAC3BC,mBAAmB,4BAE5B;AAIA,OAAO,MAAMC,gBAAgB,GAAGH,gBAAgB,EAAmB,CAAC;EAClEI,IAAI,EAAE,kBAAkB;EAExBC,KAAK,EAAE;IACLC,KAAK,EAAEC,MAAM;IACbC,OAAO,EAAE,CAACC,OAAO,EAAEF,MAAM,CAAC;IAC1BG,WAAW,EAAE;MACXC,IAAI,EAAEJ,MAAM;MACZK,OAAO,EAAE;IACX,CAAC;IACDC,WAAW,EAAE;MACXF,IAAI,EAAE,CAACG,MAAM,EAAEP,MAAM,CAAC;MACtBQ,QAAQ,EAAE;IACZ,CAAC;IAED,GAAGb,mBAAmB,EAAE;IACxB,GAAGxB,wBAAwB,EAAE;IAC7B,GAAGO,wBAAwB,EAAE;IAC7B,GAAGC,sBAAsB,EAAE;IAC3B,GAAGM,wBAAwB,EAAE;IAC7B,GAAGG,sBAAsB,EAAE;IAC3B,GAAGL,0BAA0B,EAAE;IAC/B,GAAGT,uBAAuB;EAC5B,CAAC;EAEDmC,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAY,IAAK,IAAI;IAC3C,aAAa,EAAGC,IAAY,IAAK,IAAI;IACrC,qBAAqB,EAAGA,IAAY,IAAK,IAAI;IAC7C,eAAe,EAAGC,MAAW,IAAK,IAAI;IACtC,gBAAgB,EAAGC,OAAY,IAAK,IAAI;IACxC,iBAAiB,EAAGA,OAAY,IAAK,IAAI;IACzC,gBAAgB,EAAGH,KAAU,IAAK,IAAI;IACtC,WAAW,EAAE,CAACI,KAAY,EAAEJ,KAA8B,KAAK;EACjE,CAAC;EAEDK,KAAK,CAAEjB,KAAK,QAAmB;IAAA,IAAjB;MAAEkB,IAAI;MAAEC;IAAM,CAAC;IAC3B,MAAM;MAAEC;IAAQ,CAAC,GAAG7C,aAAa,CAACyB,KAAK,CAAC;IACxC,MAAM;MAAEc,MAAM;MAAEO,SAAS;MAAEC;IAAS,CAAC,GAAGjC,UAAU,CAACW,KAAK,CAAC;IACzD,MAAM;MAAEa,IAAI;MAAEU;IAAa,CAAC,GAAGvC,gBAAgB,CAACgB,KAAK,CAAC;IACtD,MAAMQ,WAAW,GAAGhB,QAAQ,CAAC,MAAMgC,QAAQ,CAACxB,KAAK,CAACQ,WAAW,EAAE,EAAE,CAAC,CAAC;IAEnElC,eAAe,CAAC0B,KAAK,CAAC;IAEtB,MAAM;MAAEyB;IAAQ,CAAC,GAAG9C,aAAa,CAACqB,KAAK,EAAE;MACvCoB,OAAO;MACPM,UAAU,EAAEhC,KAAK,CAACM,KAAK,EAAE,YAAY,CAAC;MACtC2B,UAAU,EAAEjC,KAAK,CAACM,KAAK,EAAE,YAAY;IACvC,CAAC,CAAC;IAEF,MAAM;MAAE4B;IAAM,CAAC,GAAG9C,iBAAiB,CAACkB,KAAK,EAAEyB,OAAO,CAAC;IAEnD,MAAM;MAAEI;IAAW,CAAC,GAAGtC,WAAW,CAAC;MAAEuB,MAAM;MAAEO,SAAS;MAAEC,QAAQ;MAAET;IAAK,CAAC,CAAC;IAEzE,MAAM;MAAEiB;IAAO,CAAC,GAAGrD,cAAc,CAAC;MAAE2C,OAAO;MAAEN;IAAO,CAAC,CAAC;IAEtD5B,iBAAiB,CAAC;MAAE2B,IAAI;MAAEU,YAAY;MAAEf;IAAY,CAAC,CAAC;IAEtD,MAAM;MAAEuB;IAAU,CAAC,GAAGrD,eAAe,CAACkD,KAAK,EAAER,OAAO,EAAEU,MAAM,CAAC;IAE7D1C,gBAAgB,CAACY,KAAK,EAAE4B,KAAK,CAAC;IAE9B7C,UAAU,CAAC;MACT8B,IAAI;MACJU,YAAY;MACZT,MAAM;MACNM;IACF,CAAC,CAAC;IAEF3B,OAAO,CAAC,cAAc,EAAE;MACtBoC,UAAU;MACVf;IACF,CAAC,CAAC;IAEF1C,eAAe,CAAC;MACdD,cAAc,EAAE;QACd6D,UAAU,EAAEtC,KAAK,CAACM,KAAK,EAAE,YAAY,CAAC;QACtCiC,UAAU,EAAEvC,KAAK,CAACM,KAAK,EAAE,YAAY,CAAC;QACtCG,OAAO,EAAET,KAAK,CAACM,KAAK,EAAE,SAAS,CAAC;QAChCK,WAAW,EAAEX,KAAK,CAACM,KAAK,EAAE,aAAa;MACzC;IACF,CAAC,CAAC;IAEFJ,SAAS,CAAC;MAAA,SAEC,CACL,cAAc,EACd;QACE,uBAAuB,EAAEI,KAAK,CAACG;MACjC,CAAC,CACF;MAAA,eACaH,KAAK,CAACkC,WAAW;MAAA,eACjBlC,KAAK,CAACmC,WAAW;MAAA,UACtBnC,KAAK,CAACoC;IAAM;MAGnBC,GAAG,EAAElB,KAAK,CAACkB,GAAG;MACd9B,OAAO,EAAEY,KAAK,CAACZ,OAAO,KAAK;QAAA,SAEV,qBAAqB;QAAA,QAAM;MAAU,IAC9CY,KAAK,CAACmB,OAAO,GAAGnB,KAAK,CAACmB,OAAO,EAAE;QAAA,UAEpBtC,KAAK,CAACkC,WAAW;QAAA,WAChBlC,KAAK,CAACG,OAAO;QAAA,SACfH,KAAK,CAACC;MAAK,GACTkB,KAAK,CAElB,IAEDA,KAAK,CAACoB,KAAK,IAAI;QAAA,SACJ,qBAAqB;QAAA,QAAM;MAAU,IAC9CpB,KAAK,CAACqB,IAAI,GAAGrB,KAAK,CAACqB,IAAI,EAAE;QAAA,SAEfT,SAAS,CAACnB,KAAK;QAAA,eACT,CAACI,KAAK,EAAEJ,KAAK,KAAKM,IAAI,CAAC,WAAW,EAAEF,KAAK,EAAEJ,KAAK;MAAC,GACrDO,KAAK,CAElB,IAEDA,KAAK,CAACsB,KAAK,IAAI,EACftB,KAAK,CAACuB,KAAK,IAAI,EAEpB,CAAC;MACFC,MAAM,EAAExB,KAAK,CAACwB,MAAM,KAAK,2CAEZ;QACPC,OAAO,EAAEzB,KAAK,CAAC,gBAAgB;MACjC,CAAC,CAEJ;IAAC,EAGP,CAAC;EACJ;AACF,CAAC,CAAC"}
|
|
@@ -3,13 +3,12 @@ import { createVNode as _createVNode, resolveDirective as _resolveDirective } fr
|
|
|
3
3
|
import { VTable } from "../../components/VTable/index.mjs";
|
|
4
4
|
import { VDataTableHeaders } from "./VDataTableHeaders.mjs";
|
|
5
5
|
import { VDataTableRows } from "./VDataTableRows.mjs"; // Composables
|
|
6
|
-
import { useProxiedModel } from "../../composables/proxiedModel.mjs";
|
|
7
6
|
import { createHeaders, makeDataTableHeaderProps } from "./composables/headers.mjs";
|
|
8
7
|
import { makeDataTableItemProps, useDataTableItems } from "./composables/items.mjs";
|
|
9
|
-
import {
|
|
10
|
-
import { createSort, makeDataTableSortProps, useSortedItems } from "./composables/sort.mjs";
|
|
11
|
-
import { createGroupBy, makeDataTableGroupProps, useGroupedItems } from "./composables/group.mjs";
|
|
12
|
-
import {
|
|
8
|
+
import { makeDataTableExpandProps, provideExpanded } from "./composables/expand.mjs";
|
|
9
|
+
import { createSort, makeDataTableSortProps, provideSort, useSortedItems } from "./composables/sort.mjs";
|
|
10
|
+
import { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from "./composables/group.mjs";
|
|
11
|
+
import { makeDataTableSelectProps, provideSelection } from "./composables/select.mjs";
|
|
13
12
|
import { makeDataTableVirtualProps, useVirtual } from "./composables/virtual.mjs";
|
|
14
13
|
import { useOptions } from "./composables/options.mjs";
|
|
15
14
|
import { makeFilterProps, useFilter } from "../../composables/filter.mjs";
|
|
@@ -45,7 +44,14 @@ export const VDataTableVirtual = genericComponent()({
|
|
|
45
44
|
emit,
|
|
46
45
|
slots
|
|
47
46
|
} = _ref;
|
|
48
|
-
const
|
|
47
|
+
const {
|
|
48
|
+
groupBy
|
|
49
|
+
} = createGroupBy(props);
|
|
50
|
+
const {
|
|
51
|
+
sortBy,
|
|
52
|
+
multiSort,
|
|
53
|
+
mustSort
|
|
54
|
+
} = createSort(props);
|
|
49
55
|
const {
|
|
50
56
|
columns
|
|
51
57
|
} = createHeaders(props, {
|
|
@@ -57,19 +63,25 @@ export const VDataTableVirtual = genericComponent()({
|
|
|
57
63
|
items
|
|
58
64
|
} = useDataTableItems(props, columns);
|
|
59
65
|
const filterKeys = computed(() => columns.value.map(c => 'columns.' + c.key));
|
|
66
|
+
const search = toRef(props, 'search');
|
|
60
67
|
const {
|
|
61
68
|
filteredItems
|
|
62
|
-
} = useFilter(props, items,
|
|
69
|
+
} = useFilter(props, items, search, {
|
|
63
70
|
filterKeys
|
|
64
71
|
});
|
|
65
|
-
|
|
66
|
-
sortBy
|
|
67
|
-
|
|
72
|
+
provideSort({
|
|
73
|
+
sortBy,
|
|
74
|
+
multiSort,
|
|
75
|
+
mustSort
|
|
76
|
+
});
|
|
68
77
|
const {
|
|
69
78
|
sortByWithGroups,
|
|
70
79
|
opened,
|
|
71
80
|
extractRows
|
|
72
|
-
} =
|
|
81
|
+
} = provideGroupBy({
|
|
82
|
+
groupBy,
|
|
83
|
+
sortBy
|
|
84
|
+
});
|
|
73
85
|
const {
|
|
74
86
|
sortedItems
|
|
75
87
|
} = useSortedItems(filteredItems, sortByWithGroups, columns);
|
|
@@ -77,8 +89,8 @@ export const VDataTableVirtual = genericComponent()({
|
|
|
77
89
|
flatItems
|
|
78
90
|
} = useGroupedItems(sortedItems, groupBy, opened);
|
|
79
91
|
const allRows = computed(() => extractRows(flatItems.value));
|
|
80
|
-
|
|
81
|
-
|
|
92
|
+
provideSelection(props, allRows);
|
|
93
|
+
provideExpanded(props);
|
|
82
94
|
const {
|
|
83
95
|
containerRef,
|
|
84
96
|
paddingTop,
|
|
@@ -95,7 +107,8 @@ export const VDataTableVirtual = genericComponent()({
|
|
|
95
107
|
sortBy,
|
|
96
108
|
page: ref(1),
|
|
97
109
|
itemsPerPage: ref(-1),
|
|
98
|
-
groupBy
|
|
110
|
+
groupBy,
|
|
111
|
+
search
|
|
99
112
|
});
|
|
100
113
|
provideDefaults({
|
|
101
114
|
VDataTableRows: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableVirtual.mjs","names":["VTable","VDataTableHeaders","VDataTableRows","useProxiedModel","createHeaders","makeDataTableHeaderProps","makeDataTableItemProps","useDataTableItems","createExpanded","makeDataTableExpandProps","createSort","makeDataTableSortProps","useSortedItems","createGroupBy","makeDataTableGroupProps","useGroupedItems","createSelection","makeDataTableSelectProps","makeDataTableVirtualProps","useVirtual","useOptions","makeFilterProps","useFilter","provideDefaults","computed","ref","toRef","convertToUnit","genericComponent","useRender","makeVDataTableProps","VDataTableVirtual","name","props","search","String","emits","value","event","setup","emit","slots","groupBy","columns","showSelect","showExpand","items","filterKeys","map","c","key","filteredItems","sortBy","sortByWithGroups","opened","extractRows","sortedItems","flatItems","allRows","containerRef","paddingTop","paddingBottom","startIndex","stopIndex","itemHeight","handleScroll","visibleItems","slice","page","itemsPerPage","hideNoData","noDataText","height","fixedHeader","top","wrapper","multiSort","border","length","bottom"],"sources":["../../../src/labs/VDataTable/VDataTableVirtual.tsx"],"sourcesContent":["// Components\nimport { VTable } from '@/components/VTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { createExpanded, makeDataTableExpandProps } from './composables/expand'\nimport { createSort, makeDataTableSortProps, useSortedItems } from './composables/sort'\nimport { createGroupBy, makeDataTableGroupProps, useGroupedItems } from './composables/group'\nimport { createSelection, makeDataTableSelectProps } from './composables/select'\nimport { makeDataTableVirtualProps, useVirtual } from './composables/virtual'\nimport { useOptions } from './composables/options'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utlities\nimport { computed, ref, toRef } from 'vue'\nimport { convertToUnit, genericComponent, useRender } from '@/util'\nimport { makeVDataTableProps } from './VDataTable'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\n\nexport type VDataTableVirtualSlots = VDataTableRowsSlots & {\n top: []\n headers: []\n bottom: []\n}\n\nexport const VDataTableVirtual = genericComponent<VDataTableVirtualSlots>()({\n name: 'VDataTableVirtual',\n\n props: {\n search: String,\n\n ...makeVDataTableProps(),\n ...makeVDataTableProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableExpandProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTableVirtualProps(),\n ...makeFilterProps(),\n },\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': (event: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const groupBy = useProxiedModel(props, 'groupBy')\n const { columns } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n const { items } = useDataTableItems(props, columns)\n\n const filterKeys = computed(() => columns.value.map(c => 'columns.' + c.key))\n const { filteredItems } = useFilter<DataTableItem>(props, items, toRef(props, 'search'), { filterKeys })\n\n const { sortBy } = createSort(props)\n const { sortByWithGroups, opened, extractRows } = createGroupBy(props, groupBy, sortBy)\n\n const { sortedItems } = useSortedItems(filteredItems, sortByWithGroups, columns)\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const allRows = computed(() => extractRows(flatItems.value))\n\n createSelection(props, allRows)\n createExpanded(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: ref(1),\n itemsPerPage: ref(-1),\n groupBy,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n },\n })\n\n useRender(() => (\n <VTable\n class=\"v-data-table\"\n style={{\n '--v-table-row-height': convertToUnit(itemHeight.value),\n }}\n height={ props.height }\n fixedHeader={ props.fixedHeader }\n >\n {{\n top: slots.top,\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 sticky={ props.fixedHeader }\n multiSort={ props.multiSort }\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 items={visibleItems.value}\n onClick:row={ (event, value) => emit('click:row', event, 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,\n }}\n </VTable>\n ))\n },\n})\n\nexport type VDataTableVirtual = InstanceType<typeof VDataTableVirtual>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDataTableVirtual.mjs","names":["VTable","VDataTableHeaders","VDataTableRows","createHeaders","makeDataTableHeaderProps","makeDataTableItemProps","useDataTableItems","makeDataTableExpandProps","provideExpanded","createSort","makeDataTableSortProps","provideSort","useSortedItems","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","makeDataTableSelectProps","provideSelection","makeDataTableVirtualProps","useVirtual","useOptions","makeFilterProps","useFilter","provideDefaults","computed","ref","toRef","convertToUnit","genericComponent","useRender","makeVDataTableProps","VDataTableVirtual","name","props","search","String","emits","value","event","setup","emit","slots","groupBy","sortBy","multiSort","mustSort","columns","showSelect","showExpand","items","filterKeys","map","c","key","filteredItems","sortByWithGroups","opened","extractRows","sortedItems","flatItems","allRows","containerRef","paddingTop","paddingBottom","startIndex","stopIndex","itemHeight","handleScroll","visibleItems","slice","page","itemsPerPage","hideNoData","noDataText","height","fixedHeader","top","wrapper","border","length","bottom"],"sources":["../../../src/labs/VDataTable/VDataTableVirtual.tsx"],"sourcesContent":["// Components\nimport { VTable } from '@/components/VTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\n\n// Composables\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { makeDataTableExpandProps, provideExpanded } from './composables/expand'\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from './composables/sort'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { makeDataTableSelectProps, provideSelection } from './composables/select'\nimport { makeDataTableVirtualProps, useVirtual } from './composables/virtual'\nimport { useOptions } from './composables/options'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utlities\nimport { computed, ref, toRef } from 'vue'\nimport { convertToUnit, genericComponent, useRender } from '@/util'\nimport { makeVDataTableProps } from './VDataTable'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\n\nexport type VDataTableVirtualSlots = VDataTableRowsSlots & {\n top: []\n headers: []\n bottom: []\n}\n\nexport const VDataTableVirtual = genericComponent<VDataTableVirtualSlots>()({\n name: 'VDataTableVirtual',\n\n props: {\n search: String,\n\n ...makeVDataTableProps(),\n ...makeVDataTableProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableExpandProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTableVirtualProps(),\n ...makeFilterProps(),\n },\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': (event: 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 } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\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 })\n const { sortByWithGroups, opened, extractRows } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(filteredItems, sortByWithGroups, columns)\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const allRows = computed(() => extractRows(flatItems.value))\n\n provideSelection(props, allRows)\n 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: ref(1),\n itemsPerPage: ref(-1),\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 <VTable\n class=\"v-data-table\"\n style={{\n '--v-table-row-height': convertToUnit(itemHeight.value),\n }}\n height={ props.height }\n fixedHeader={ props.fixedHeader }\n >\n {{\n top: slots.top,\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 sticky={ props.fixedHeader }\n multiSort={ props.multiSort }\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 items={ visibleItems.value }\n onClick:row={ (event, value) => emit('click:row', event, 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,\n }}\n </VTable>\n ))\n },\n})\n\nexport type VDataTableVirtual = InstanceType<typeof VDataTableVirtual>\n"],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ export const makeDataTableExpandProps = propsFactory({
|
|
|
11
11
|
}
|
|
12
12
|
}, 'v-data-table-expand');
|
|
13
13
|
export const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');
|
|
14
|
-
export function
|
|
14
|
+
export function provideExpanded(props) {
|
|
15
15
|
const expandOnClick = toRef(props, 'expandOnClick');
|
|
16
16
|
const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {
|
|
17
17
|
return new Set(v);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expand.mjs","names":["inject","provide","toRef","propsFactory","useProxiedModel","makeDataTableExpandProps","expandOnClick","Boolean","showExpand","expanded","type","Array","default","VDataTableExpandedKey","Symbol","for","
|
|
1
|
+
{"version":3,"file":"expand.mjs","names":["inject","provide","toRef","propsFactory","useProxiedModel","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":["// Utilities\nimport { inject, provide, toRef } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\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<string[]>,\n default: () => ([]),\n },\n}, 'v-data-table-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: 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;AACA,SAASA,MAAM,EAAEC,OAAO,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACnCC,YAAY,mCAErB;AAAA,SACSC,eAAe,iDAExB;AAIA,OAAO,MAAMC,wBAAwB,GAAGF,YAAY,CAAC;EACnDG,aAAa,EAAEC,OAAO;EACtBC,UAAU,EAAED,OAAO;EACnBE,QAAQ,EAAE;IACRC,IAAI,EAAEC,KAA2B;IACjCC,OAAO,EAAE,MAAO;EAClB;AACF,CAAC,EAAE,qBAAqB,CAAC;AAEzB,OAAO,MAAMC,qBAMX,GAAGC,MAAM,CAACC,GAAG,CAAC,4BAA4B,CAAC;AAQ7C,OAAO,SAASC,eAAe,CAAEC,KAAkB,EAAE;EACnD,MAAMX,aAAa,GAAGJ,KAAK,CAACe,KAAK,EAAE,eAAe,CAAC;EACnD,MAAMR,QAAQ,GAAGL,eAAe,CAACa,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,MAAM,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,UAAU,CAAEL,IAAmB,EAAE;IACxC,OAAOb,QAAQ,CAACc,KAAK,CAACK,GAAG,CAACN,IAAI,CAACC,KAAK,CAAC;EACvC;EAEA,SAASM,YAAY,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;EAE1E5B,OAAO,CAACY,qBAAqB,EAAEiB,IAAI,CAAC;EAEpC,OAAOA,IAAI;AACb;AAEA,OAAO,SAASC,WAAW,GAAI;EAC7B,MAAMD,IAAI,GAAG9B,MAAM,CAACa,qBAAqB,CAAC;EAE1C,IAAI,CAACiB,IAAI,EAAE,MAAM,IAAIE,KAAK,CAAC,KAAK,CAAC;EAEjC,OAAOF,IAAI;AACb"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Utilities
|
|
2
2
|
import { computed, inject, provide, ref } from 'vue';
|
|
3
3
|
import { getObjectValueByPath, propsFactory } from "../../../util/index.mjs"; // Types
|
|
4
|
+
import { useProxiedModel } from "../../../composables/proxiedModel.mjs";
|
|
4
5
|
export const makeDataTableGroupProps = propsFactory({
|
|
5
6
|
groupBy: {
|
|
6
7
|
type: Array,
|
|
@@ -8,7 +9,17 @@ export const makeDataTableGroupProps = propsFactory({
|
|
|
8
9
|
}
|
|
9
10
|
}, 'data-table-group');
|
|
10
11
|
const VDataTableGroupSymbol = Symbol.for('vuetify:data-table-group');
|
|
11
|
-
export function createGroupBy(props
|
|
12
|
+
export function createGroupBy(props) {
|
|
13
|
+
const groupBy = useProxiedModel(props, 'groupBy');
|
|
14
|
+
return {
|
|
15
|
+
groupBy
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export function provideGroupBy(options) {
|
|
19
|
+
const {
|
|
20
|
+
groupBy,
|
|
21
|
+
sortBy
|
|
22
|
+
} = options;
|
|
12
23
|
const opened = ref(new Set());
|
|
13
24
|
const sortByWithGroups = computed(() => {
|
|
14
25
|
return groupBy.value.map(val => ({
|