@coreui/vue
Version:
UI Components Library for Vue.js
32 lines (28 loc) • 1.17 kB
JavaScript
var vue = require('vue');
const CAccordionItem = vue.defineComponent({
name: 'CAccordionItem',
props: {
/**
* The item key.
*/
itemKey: [Number, String],
},
setup(props, { slots }) {
const activeItemKey = vue.inject('activeItemKey');
const alwaysOpen = vue.inject('alwaysOpen');
const setActiveItemKey = vue.inject('setActiveItemKey');
const itemKey = vue.ref(props.itemKey ?? Math.random().toString(36).slice(2, 11));
const visible = vue.ref(Boolean(activeItemKey.value === itemKey.value));
vue.watch(activeItemKey, () => (visible.value = Boolean(activeItemKey.value === itemKey.value)));
const toggleVisibility = () => {
visible.value = !visible.value;
!alwaysOpen && visible && setActiveItemKey(itemKey.value);
};
vue.provide('visible', visible);
vue.provide('toggleVisibility', toggleVisibility);
return () => vue.h('div', { class: ['accordion-item'] }, slots.default && slots.default());
},
});
exports.CAccordionItem = CAccordionItem;
//# sourceMappingURL=CAccordionItem.js.map
;