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