Vulture/VApp/node_modules/vuetify/lib/components/VDataTable/VDataTableGroupHeaderRow.mjs

87 lines
2.9 KiB
JavaScript
Raw Normal View History

import { createTextVNode as _createTextVNode, createVNode as _createVNode } from "vue";
// Components
import { VDataTableColumn } from "./VDataTableColumn.mjs";
import { VBtn } from "../VBtn/index.mjs";
import { VCheckboxBtn } from "../VCheckbox/index.mjs"; // Composables
import { useGroupBy } from "./composables/group.mjs";
import { useHeaders } from "./composables/headers.mjs";
import { useSelection } from "./composables/select.mjs"; // Utilities
import { computed } from 'vue';
import { genericComponent, propsFactory } from "../../util/index.mjs"; // Types
export const makeVDataTableGroupHeaderRowProps = propsFactory({
item: {
type: Object,
required: true
}
}, 'VDataTableGroupHeaderRow');
export const VDataTableGroupHeaderRow = genericComponent()({
name: 'VDataTableGroupHeaderRow',
props: makeVDataTableGroupHeaderRowProps(),
setup(props, _ref) {
let {
slots
} = _ref;
const {
isGroupOpen,
toggleGroup,
extractRows
} = useGroupBy();
const {
isSelected,
isSomeSelected,
select
} = useSelection();
const {
columns
} = useHeaders();
const rows = computed(() => {
return extractRows([props.item]);
});
return () => _createVNode("tr", {
"class": "v-data-table-group-header-row",
"style": {
'--v-data-table-group-header-row-depth': props.item.depth
}
}, [columns.value.map(column => {
if (column.key === 'data-table-group') {
const icon = isGroupOpen(props.item) ? '$expand' : '$next';
const onClick = () => toggleGroup(props.item);
return slots['data-table-group']?.({
item: props.item,
count: rows.value.length,
props: {
icon,
onClick
}
}) ?? _createVNode(VDataTableColumn, {
"class": "v-data-table-group-header-row__column"
}, {
default: () => [_createVNode(VBtn, {
"size": "small",
"variant": "text",
"icon": icon,
"onClick": onClick
}, null), _createVNode("span", null, [props.item.value]), _createVNode("span", null, [_createTextVNode("("), rows.value.length, _createTextVNode(")")])]
});
}
if (column.key === 'data-table-select') {
const modelValue = isSelected(rows.value);
const indeterminate = isSomeSelected(rows.value) && !modelValue;
const selectGroup = v => select(rows.value, v);
return slots['data-table-select']?.({
props: {
modelValue,
indeterminate,
'onUpdate:modelValue': selectGroup
}
}) ?? _createVNode("td", null, [_createVNode(VCheckboxBtn, {
"modelValue": modelValue,
"indeterminate": indeterminate,
"onUpdate:modelValue": selectGroup
}, null)]);
}
return _createVNode("td", null, null);
})]);
}
});
//# sourceMappingURL=VDataTableGroupHeaderRow.mjs.map