@coreui/vue
Version:
UI Components Library for Vue.js
49 lines (45 loc) • 1.54 kB
JavaScript
var vue = require('vue');
const CSidebarNav = vue.defineComponent({
name: 'CSidebarNav',
props: {
/**
* Component used for the root node. Either a string to use a HTML element or a component.
*/
as: {
type: [Object, String],
default: 'ul',
},
},
setup(props, { slots }) {
const visibleGroup = vue.ref();
const handleVisibleChange = (visible, index) => {
if (visible) {
visibleGroup.value = index;
}
else {
if (visibleGroup.value === index) {
visibleGroup.value = 0;
}
}
};
const isVisible = (index) => Boolean(visibleGroup.value === index);
return () => vue.h(props.as, {
class: 'sidebar-nav',
}, {
default: () => slots.default &&
slots.default().map((vnode, index) => {
// @ts-expect-error name is defined in component
if (vnode.type.name === 'CNavGroup') {
return vue.h(vnode, {
onVisibleChange: (visible) => handleVisibleChange(visible, index + 1),
...(visibleGroup.value && { visible: isVisible(index + 1) }),
});
}
return vnode;
}),
});
},
});
exports.CSidebarNav = CSidebarNav;
//# sourceMappingURL=CSidebarNav.js.map
;