123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- 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
|