vuetify
Version:
Vue Material Component Framework
109 lines • 3.2 kB
JavaScript
import { resolveDirective as _resolveDirective, createVNode as _createVNode, Fragment as _Fragment } from "vue";
// Components
import { VDataTableGroupHeaderRow } from "./VDataTableGroupHeaderRow.mjs";
import { VDataTableRow } from "./VDataTableRow.mjs"; // Composables
import { useLocale } from "../../composables/locale.mjs";
import { useExpanded } from "./composables/expand.mjs";
import { useHeaders } from "./composables/headers.mjs";
import { useSelection } from "./composables/select.mjs";
import { useGroupBy } from "./composables/group.mjs"; // Utilities
import { genericComponent, useRender } from "../../util/index.mjs"; // Types
export const VDataTableRows = genericComponent()({
name: 'VDataTableRows',
props: {
loading: [Boolean, String],
loadingText: {
type: String,
default: '$vuetify.dataIterator.loadingText'
},
hideNoData: Boolean,
items: {
type: Array,
default: () => []
},
noDataText: {
type: String,
default: '$vuetify.noDataText'
},
rowHeight: Number
},
emits: {
'click:row': (event, value) => true
},
setup(props, _ref) {
let {
emit,
slots
} = _ref;
const {
columns
} = useHeaders();
const {
expandOnClick,
toggleExpand,
isExpanded
} = useExpanded();
const {
isSelected,
toggleSelect
} = useSelection();
const {
toggleGroup,
isGroupOpen
} = useGroupBy();
const {
t
} = useLocale();
useRender(() => _createVNode(_Fragment, null, [props.loading ? slots.loading?.() ?? _createVNode(VDataTableRow, {
"class": "v-data-table-rows-no-data",
"key": "loading"
}, {
default: () => [t(props.loadingText)]
}) : undefined, !props.loading && !props.items.length && !props.hideNoData && (slots['no-data']?.() ?? _createVNode(VDataTableRow, {
"class": "v-data-table-rows-no-data",
"key": "no-data"
}, {
default: () => [t(props.noDataText)]
})), props.items.map((item, index) => {
if (item.type === 'group-header') {
return slots['group-header'] ? slots['group-header']({
index,
item,
columns: columns.value,
isExpanded,
toggleExpand,
isSelected,
toggleSelect,
toggleGroup,
isGroupOpen
}) : _createVNode(VDataTableGroupHeaderRow, {
"key": `group-header_${item.id}`,
"item": item
}, slots);
}
const slotProps = {
index,
item,
columns: columns.value,
isExpanded,
toggleExpand,
isSelected,
toggleSelect
};
return _createVNode(_Fragment, null, [slots.item ? slots.item(slotProps) : _createVNode(VDataTableRow, {
"key": `item_${item.value}`,
"onClick": event => {
if (expandOnClick.value) {
toggleExpand(item.value);
}
emit('click:row', event, {
item
});
},
"item": item
}, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);
})]));
return {};
}
});
//# sourceMappingURL=VDataTableRows.mjs.map