123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode } from "vue";
- // Components
- import { VDataTableGroupHeaderRow } from "./VDataTableGroupHeaderRow.mjs";
- import { VDataTableRow } from "./VDataTableRow.mjs"; // Composables
- import { useExpanded } from "./composables/expand.mjs";
- import { useGroupBy } from "./composables/group.mjs";
- import { useHeaders } from "./composables/headers.mjs";
- import { useSelection } from "./composables/select.mjs";
- import { makeDisplayProps, useDisplay } from "../../composables/display.mjs";
- import { useLocale } from "../../composables/locale.mjs"; // Utilities
- import { Fragment, mergeProps } from 'vue';
- import { genericComponent, getPrefixedEventHandlers, propsFactory, useRender } from "../../util/index.mjs"; // Types
- export const makeVDataTableRowsProps = propsFactory({
- loading: [Boolean, String],
- loadingText: {
- type: String,
- default: '$vuetify.dataIterator.loadingText'
- },
- hideNoData: Boolean,
- items: {
- type: Array,
- default: () => []
- },
- noDataText: {
- type: String,
- default: '$vuetify.noDataText'
- },
- rowProps: [Object, Function],
- cellProps: [Object, Function],
- ...makeDisplayProps()
- }, 'VDataTableRows');
- export const VDataTableRows = genericComponent()({
- name: 'VDataTableRows',
- inheritAttrs: false,
- props: makeVDataTableRowsProps(),
- setup(props, _ref) {
- let {
- attrs,
- slots
- } = _ref;
- const {
- columns
- } = useHeaders();
- const {
- expandOnClick,
- toggleExpand,
- isExpanded
- } = useExpanded();
- const {
- isSelected,
- toggleSelect
- } = useSelection();
- const {
- toggleGroup,
- isGroupOpen
- } = useGroupBy();
- const {
- t
- } = useLocale();
- const {
- mobile
- } = useDisplay(props);
- useRender(() => {
- if (props.loading && (!props.items.length || slots.loading)) {
- return _createVNode("tr", {
- "class": "v-data-table-rows-loading",
- "key": "loading"
- }, [_createVNode("td", {
- "colspan": columns.value.length
- }, [slots.loading?.() ?? t(props.loadingText)])]);
- }
- if (!props.loading && !props.items.length && !props.hideNoData) {
- return _createVNode("tr", {
- "class": "v-data-table-rows-no-data",
- "key": "no-data"
- }, [_createVNode("td", {
- "colspan": columns.value.length
- }, [slots['no-data']?.() ?? t(props.noDataText)])]);
- }
- return _createVNode(_Fragment, null, [props.items.map((item, index) => {
- if (item.type === 'group') {
- const slotProps = {
- index,
- item,
- columns: columns.value,
- isExpanded,
- toggleExpand,
- isSelected,
- toggleSelect,
- toggleGroup,
- isGroupOpen
- };
- return slots['group-header'] ? slots['group-header'](slotProps) : _createVNode(VDataTableGroupHeaderRow, _mergeProps({
- "key": `group-header_${item.id}`,
- "item": item
- }, getPrefixedEventHandlers(attrs, ':group-header', () => slotProps)), slots);
- }
- const slotProps = {
- index,
- item: item.raw,
- internalItem: item,
- columns: columns.value,
- isExpanded,
- toggleExpand,
- isSelected,
- toggleSelect
- };
- const itemSlotProps = {
- ...slotProps,
- props: mergeProps({
- key: `item_${item.key ?? item.index}`,
- onClick: expandOnClick.value ? () => {
- toggleExpand(item);
- } : undefined,
- index,
- item,
- cellProps: props.cellProps,
- mobile: mobile.value
- }, getPrefixedEventHandlers(attrs, ':row', () => slotProps), typeof props.rowProps === 'function' ? props.rowProps({
- item: slotProps.item,
- index: slotProps.index,
- internalItem: slotProps.internalItem
- }) : props.rowProps)
- };
- return _createVNode(_Fragment, {
- "key": itemSlotProps.props.key
- }, [slots.item ? slots.item(itemSlotProps) : _createVNode(VDataTableRow, itemSlotProps.props, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);
- })]);
- });
- return {};
- }
- });
- //# sourceMappingURL=VDataTableRows.mjs.map
|