vant-fork
Version:
Lightweight Mobile UI Components built on Vue
76 lines (66 loc) • 1.86 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _create = _interopRequireDefault(require("../utils/create"));
var _findParent = _interopRequireDefault(require("../mixins/find-parent"));
var _default = (0, _create.default)({
render: function render() {
var _vm = this;
var _h = _vm.$createElement;
var _c = _vm._self._c || _h;
return _c('div', {
directives: [{
name: "show",
rawName: "v-show",
value: _vm.isSelected,
expression: "isSelected"
}],
class: _vm.b('pane')
}, [_vm.inited ? _vm._t("default") : _vm._e(), _vm.$slots.title ? _c('div', {
ref: "title"
}, [_vm._t("title")], 2) : _vm._e()], 2);
},
name: 'tab',
mixins: [_findParent.default],
props: {
title: String,
disabled: Boolean
},
data: function data() {
return {
inited: false
};
},
computed: {
index: function index() {
return this.parent.tabs.indexOf(this);
},
isSelected: function isSelected() {
return this.index === this.parent.curActive;
}
},
watch: {
'parent.curActive': function parentCurActive() {
this.inited = this.inited || this.isSelected;
},
title: function title() {
this.parent.setLine();
}
},
created: function created() {
this.findParent('van-tabs');
},
mounted: function mounted() {
var tabs = this.parent.tabs;
var index = this.parent.$slots.default.indexOf(this.$vnode);
tabs.splice(index === -1 ? tabs.length : index, 0, this);
if (this.$slots.title) {
this.parent.renderTitle(this.$refs.title, this.index);
}
},
beforeDestroy: function beforeDestroy() {
this.parent.tabs.splice(this.index, 1);
}
});
exports.default = _default;