monolito_djanco_poonto/node_modules/vuetify/lib/labs/VTreeview/VTreeviewGroup.mjs
2025-03-05 19:59:05 -03:00

48 lines
1.8 KiB
JavaScript

import { Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
// Components
import { VDefaultsProvider } from "../../components/VDefaultsProvider/index.mjs";
import { makeVListGroupProps, VListGroup } from "../../components/VList/VListGroup.mjs"; // Utilities
import { computed, ref } from 'vue';
import { genericComponent, omit, propsFactory, useRender } from "../../util/index.mjs"; // Types
export const makeVTreeviewGroupProps = propsFactory({
...omit(makeVListGroupProps({
collapseIcon: '$treeviewCollapse',
expandIcon: '$treeviewExpand'
}), ['subgroup'])
}, 'VTreeviewGroup');
export const VTreeviewGroup = genericComponent()({
name: 'VTreeviewGroup',
props: makeVTreeviewGroupProps(),
setup(props, _ref) {
let {
slots
} = _ref;
const vListGroupRef = ref();
const toggleIcon = computed(() => vListGroupRef.value?.isOpen ? props.collapseIcon : props.expandIcon);
const activatorDefaults = computed(() => ({
VTreeviewItem: {
prependIcon: undefined,
appendIcon: undefined,
active: vListGroupRef.value?.isOpen,
toggleIcon: toggleIcon.value
}
}));
useRender(() => {
const listGroupProps = VListGroup.filterProps(props);
return _createVNode(VListGroup, _mergeProps(listGroupProps, {
"ref": vListGroupRef,
"class": ['v-treeview-group', props.class],
"subgroup": true
}), {
...slots,
activator: slots.activator ? slotProps => _createVNode(_Fragment, null, [_createVNode(VDefaultsProvider, {
"defaults": activatorDefaults.value
}, {
default: () => [slots.activator?.(slotProps)]
})]) : undefined
});
});
return {};
}
});
//# sourceMappingURL=VTreeviewGroup.mjs.map