@coreui/vue-pro
Version:
UI Components Library for Vue.js
40 lines (36 loc) • 1.39 kB
JavaScript
;
var vue = require('vue');
const CAccordionItem = vue.defineComponent({
name: 'CAccordionItem',
props: {
/**
* The id global attribute defines an identifier (ID) that must be unique in the whole document.
*/
id: String,
/**
* 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 id = props.id ?? vue.useId();
const itemKey = vue.ref(props.itemKey ?? id);
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;
if (!alwaysOpen && visible) {
setActiveItemKey(itemKey.value);
}
};
vue.provide('id', id);
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