ant-design-vue
Version:
An enterprise-class UI design language and Vue-based implementation
292 lines (275 loc) • 11.3 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = require("vue");
var _type = require("../_util/type");
var _tabs = _interopRequireDefault(require("../tabs"));
var _row = _interopRequireDefault(require("../row"));
var _col = _interopRequireDefault(require("../col"));
var _vueTypes = _interopRequireDefault(require("../_util/vue-types"));
var _propsUtil = require("../_util/props-util");
var _BaseMixin = _interopRequireDefault(require("../_util/BaseMixin"));
var _configProvider = require("../config-provider");
var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var TabPane = _tabs.default.TabPane;
var Card = (0, _vue.defineComponent)({
name: 'ACard',
mixins: [_BaseMixin.default],
props: {
prefixCls: _vueTypes.default.string,
title: _vueTypes.default.VNodeChild,
extra: _vueTypes.default.VNodeChild,
bordered: _vueTypes.default.looseBool.def(true),
bodyStyle: _vueTypes.default.style,
headStyle: _vueTypes.default.style,
loading: _vueTypes.default.looseBool.def(false),
hoverable: _vueTypes.default.looseBool.def(false),
type: _vueTypes.default.string,
size: _vueTypes.default.oneOf((0, _type.tuple)('default', 'small')),
actions: _vueTypes.default.VNodeChild,
tabList: {
type: Array
},
tabBarExtraContent: _vueTypes.default.VNodeChild,
activeTabKey: _vueTypes.default.string,
defaultActiveTabKey: _vueTypes.default.string,
cover: _vueTypes.default.VNodeChild,
onTabChange: {
type: Function
}
},
setup: function setup() {
return {
configProvider: (0, _vue.inject)('configProvider', _configProvider.defaultConfigProvider)
};
},
data: function data() {
return {
widerPadding: false
};
},
methods: {
getAction: function getAction(actions) {
var actionList = actions.map(function (action, index) {
return (0, _vue.isVNode)(action) && !(0, _propsUtil.isEmptyElement)(action) || !(0, _vue.isVNode)(action) ? (0, _vue.createVNode)("li", {
"style": {
width: "".concat(100 / actions.length, "%")
},
"key": "action-".concat(index)
}, [(0, _vue.createVNode)("span", null, [action])]) : null;
});
return actionList;
},
triggerTabChange: function triggerTabChange(key) {
this.$emit('tabChange', key);
},
isContainGrid: function isContainGrid() {
var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var containGrid;
obj.forEach(function (element) {
if (element && (0, _isPlainObject.default)(element.type) && element.type.__ANT_CARD_GRID) {
containGrid = true;
}
});
return containGrid;
}
},
render: function render() {
var _classString, _tabsProps;
var _this$$props = this.$props,
customizePrefixCls = _this$$props.prefixCls,
_this$$props$headStyl = _this$$props.headStyle,
headStyle = _this$$props$headStyl === void 0 ? {} : _this$$props$headStyl,
_this$$props$bodyStyl = _this$$props.bodyStyle,
bodyStyle = _this$$props$bodyStyl === void 0 ? {} : _this$$props$bodyStyl,
loading = _this$$props.loading,
_this$$props$bordered = _this$$props.bordered,
bordered = _this$$props$bordered === void 0 ? true : _this$$props$bordered,
_this$$props$size = _this$$props.size,
size = _this$$props$size === void 0 ? 'default' : _this$$props$size,
type = _this$$props.type,
tabList = _this$$props.tabList,
hoverable = _this$$props.hoverable,
activeTabKey = _this$$props.activeTabKey,
defaultActiveTabKey = _this$$props.defaultActiveTabKey;
var $slots = this.$slots;
var children = (0, _propsUtil.getSlot)(this);
var getPrefixCls = this.configProvider.getPrefixCls;
var prefixCls = getPrefixCls('card', customizePrefixCls);
var tabBarExtraContent = (0, _propsUtil.getComponent)(this, 'tabBarExtraContent');
var classString = (_classString = {}, _defineProperty(_classString, "".concat(prefixCls), true), _defineProperty(_classString, "".concat(prefixCls, "-loading"), loading), _defineProperty(_classString, "".concat(prefixCls, "-bordered"), bordered), _defineProperty(_classString, "".concat(prefixCls, "-hoverable"), !!hoverable), _defineProperty(_classString, "".concat(prefixCls, "-contain-grid"), this.isContainGrid(children)), _defineProperty(_classString, "".concat(prefixCls, "-contain-tabs"), tabList && tabList.length), _defineProperty(_classString, "".concat(prefixCls, "-").concat(size), size !== 'default'), _defineProperty(_classString, "".concat(prefixCls, "-type-").concat(type), !!type), _classString);
var loadingBlockStyle = bodyStyle.padding === 0 || bodyStyle.padding === '0px' ? {
padding: 24
} : undefined;
var loadingBlock = (0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-loading-content"),
"style": loadingBlockStyle
}, [(0, _vue.createVNode)(_row.default, {
"gutter": 8
}, {
default: function _default() {
return [(0, _vue.createVNode)(_col.default, {
"span": 22
}, {
default: function _default() {
return [(0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-loading-block")
}, null)];
}
})];
}
}), (0, _vue.createVNode)(_row.default, {
"gutter": 8
}, {
default: function _default() {
return [(0, _vue.createVNode)(_col.default, {
"span": 8
}, {
default: function _default() {
return [(0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-loading-block")
}, null)];
}
}), (0, _vue.createVNode)(_col.default, {
"span": 15
}, {
default: function _default() {
return [(0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-loading-block")
}, null)];
}
})];
}
}), (0, _vue.createVNode)(_row.default, {
"gutter": 8
}, {
default: function _default() {
return [(0, _vue.createVNode)(_col.default, {
"span": 6
}, {
default: function _default() {
return [(0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-loading-block")
}, null)];
}
}), (0, _vue.createVNode)(_col.default, {
"span": 18
}, {
default: function _default() {
return [(0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-loading-block")
}, null)];
}
})];
}
}), (0, _vue.createVNode)(_row.default, {
"gutter": 8
}, {
default: function _default() {
return [(0, _vue.createVNode)(_col.default, {
"span": 13
}, {
default: function _default() {
return [(0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-loading-block")
}, null)];
}
}), (0, _vue.createVNode)(_col.default, {
"span": 9
}, {
default: function _default() {
return [(0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-loading-block")
}, null)];
}
})];
}
}), (0, _vue.createVNode)(_row.default, {
"gutter": 8
}, {
default: function _default() {
return [(0, _vue.createVNode)(_col.default, {
"span": 4
}, {
default: function _default() {
return [(0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-loading-block")
}, null)];
}
}), (0, _vue.createVNode)(_col.default, {
"span": 3
}, {
default: function _default() {
return [(0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-loading-block")
}, null)];
}
}), (0, _vue.createVNode)(_col.default, {
"span": 16
}, {
default: function _default() {
return [(0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-loading-block")
}, null)];
}
})];
}
})]);
var hasActiveTabKey = activeTabKey !== undefined;
var tabsProps = (_tabsProps = {
size: 'large'
}, _defineProperty(_tabsProps, hasActiveTabKey ? 'activeKey' : 'defaultActiveKey', hasActiveTabKey ? activeTabKey : defaultActiveTabKey), _defineProperty(_tabsProps, "tabBarExtraContent", tabBarExtraContent), _defineProperty(_tabsProps, "onChange", this.triggerTabChange), _defineProperty(_tabsProps, "class", "".concat(prefixCls, "-head-tabs")), _tabsProps);
var head;
var tabs = tabList && tabList.length ? (0, _vue.createVNode)(_tabs.default, tabsProps, {
default: function _default() {
return [tabList.map(function (item) {
var temp = item.tab,
slots = item.slots;
var name = slots === null || slots === void 0 ? void 0 : slots.tab;
var tab = temp !== undefined ? temp : $slots[name] ? $slots[name](item) : null;
return (0, _vue.createVNode)(TabPane, {
"tab": tab,
"key": item.key,
"disabled": item.disabled
}, null);
})];
}
}) : null;
var titleDom = (0, _propsUtil.getComponent)(this, 'title');
var extraDom = (0, _propsUtil.getComponent)(this, 'extra');
if (titleDom || extraDom || tabs) {
head = (0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-head"),
"style": headStyle
}, [(0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-head-wrapper")
}, [titleDom && (0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-head-title")
}, [titleDom]), extraDom && (0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-extra")
}, [extraDom])]), tabs]);
}
var cover = (0, _propsUtil.getComponent)(this, 'cover');
var coverDom = cover ? (0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-cover")
}, [cover]) : null;
var body = (0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-body"),
"style": bodyStyle
}, [loading ? loadingBlock : children]);
var actions = (0, _propsUtil.getComponent)(this, 'actions');
var actionDom = actions && actions.length ? (0, _vue.createVNode)("ul", {
"class": "".concat(prefixCls, "-actions")
}, [this.getAction(actions)]) : null;
return (0, _vue.createVNode)("div", {
"class": classString,
"ref": "cardContainerRef"
}, [head, coverDom, children ? body : null, actionDom]);
}
});
var _default2 = Card;
exports.default = _default2;
;