vant
Version:
A Vue.js 2.0 Mobile UI at YouZan
68 lines (52 loc) • 2.1 kB
JavaScript
'use strict';
exports.__esModule = true;
var _findParent = require('../mixins/find-parent');
var _findParent2 = _interopRequireDefault(_findParent);
var _utils = require('../utils');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = (0, _utils.create)({
render: function render() {
var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('div', { staticClass: "van-collapse-item", class: {
'van-hairline--top': _vm.index,
'van-collapse-item--expanded': _vm.expanded
} }, [_c('cell', { staticClass: "van-collapse-item__title", attrs: { "is-link": "" }, on: { "click": _vm.onClick } }, [_vm._t("title", [_vm._v(_vm._s(_vm.title))])], 2), _c('div', { directives: [{ name: "show", rawName: "v-show", value: _vm.expanded, expression: "expanded" }], staticClass: "van-collapse-item__content" }, [_vm._t("default")], 2)], 1);
},
name: 'collapse-item',
mixins: [_findParent2.default],
props: {
name: [String, Number],
title: String
},
computed: {
items: function items() {
return this.parentGroup.items;
},
index: function index() {
return this.items.indexOf(this);
},
currentName: function currentName() {
return (0, _utils.isDef)(this.name) ? this.name : this.index;
},
expanded: function expanded() {
var _this = this;
var activeNames = this.parentGroup.activeNames;
return this.parentGroup.accordion ? activeNames === this.currentName : activeNames.some(function (name) {
return name === _this.currentName;
});
}
},
created: function created() {
this.findParentByName('van-collapse');
this.items.push(this);
},
destroyed: function destroyed() {
this.items.splice(this.index, 1);
},
methods: {
onClick: function onClick() {
var parentGroup = this.parentGroup;
var name = parentGroup.accordion && this.currentName === parentGroup.activeNames ? '' : this.currentName;
this.parentGroup.switch(name, !this.expanded);
}
}
});