ant-design-vue
Version:
An enterprise-class UI design language and Vue-based implementation
76 lines (75 loc) • 1.83 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = require("vue");
var _TabContext = require("../TabContext");
var _vnode = require("../../../_util/vnode");
var _default = exports.default = (0, _vue.defineComponent)({
compatConfig: {
MODE: 3
},
name: 'TabPanelList',
inheritAttrs: false,
props: {
activeKey: {
type: [String, Number]
},
id: {
type: String
},
rtl: {
type: Boolean
},
animated: {
type: Object,
default: undefined
},
tabPosition: {
type: String
},
destroyInactiveTabPane: {
type: Boolean
}
},
setup(props) {
const {
tabs,
prefixCls
} = (0, _TabContext.useInjectTabs)();
return () => {
const {
id,
activeKey,
animated,
tabPosition,
rtl,
destroyInactiveTabPane
} = props;
const tabPaneAnimated = animated.tabPane;
const pre = prefixCls.value;
const activeIndex = tabs.value.findIndex(tab => tab.key === activeKey);
return (0, _vue.createVNode)("div", {
"class": `${pre}-content-holder`
}, [(0, _vue.createVNode)("div", {
"class": [`${pre}-content`, `${pre}-content-${tabPosition}`, {
[`${pre}-content-animated`]: tabPaneAnimated
}],
"style": activeIndex && tabPaneAnimated ? {
[rtl ? 'marginRight' : 'marginLeft']: `-${activeIndex}00%`
} : null
}, [tabs.value.map(tab => {
return (0, _vnode.cloneElement)(tab.node, {
key: tab.key,
prefixCls: pre,
tabKey: tab.key,
id,
animated: tabPaneAnimated,
active: tab.key === activeKey,
destroyInactiveTabPane
});
})])]);
};
}
});
;