@coreui/vue
Version:
UI Components Library for Vue.js
72 lines (68 loc) • 2.04 kB
JavaScript
var vue = require('vue');
var transition = require('../../utils/transition.js');
const CTabPane = vue.defineComponent({
name: 'CTabPane',
props: {
/**
* Enable fade in and fade out transition.
*
* @since 5.1.0
*/
transition: {
type: Boolean,
default: true,
},
/**
* Toggle the visibility of component.
*/
visible: {
type: Boolean,
default: false,
},
},
emits: [
/**
* Callback fired when the component requests to be hidden.
*/
'hide',
/**
* Callback fired when the component requests to be shown.
*/
'show',
],
setup(props, { slots, emit }) {
const tabPaneRef = vue.ref();
const firstRender = vue.ref(true);
const handleEnter = (el, done) => {
firstRender.value = false;
emit('show');
setTimeout(() => {
transition.executeAfterTransition(() => done(), el);
el.classList.add('show');
}, 1);
};
const handleLeave = (el, done) => {
firstRender.value = false;
emit('hide');
el.classList.remove('show');
transition.executeAfterTransition(() => done(), el);
};
return () => vue.h(vue.Transition, {
onEnter: (el, done) => handleEnter(el, done),
onLeave: (el, done) => handleLeave(el, done),
}, () => vue.withDirectives(vue.h('div', {
class: [
'tab-pane',
{
active: props.visible,
fade: props.transition,
show: firstRender.value && props.visible,
},
],
ref: tabPaneRef,
}, slots.default && slots.default()), [[vue.vShow, props.visible]]));
},
});
exports.CTabPane = CTabPane;
//# sourceMappingURL=CTabPane.js.map
;