UNPKG

12.3 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = void 0;
7
8var _vue = require("vue");
9
10var _type = require("../_util/type");
11
12var _tabs = _interopRequireDefault(require("../tabs"));
13
14var _row = _interopRequireDefault(require("../row"));
15
16var _col = _interopRequireDefault(require("../col"));
17
18var _vueTypes = _interopRequireDefault(require("../_util/vue-types"));
19
20var _propsUtil = require("../_util/props-util");
21
22var _BaseMixin = _interopRequireDefault(require("../_util/BaseMixin"));
23
24var _configProvider = require("../config-provider");
25
26var _isPlainObject = _interopRequireDefault(require("lodash-es/isPlainObject"));
27
28function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
30function _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; }
31
32function _isSlot(s) {
33 return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !(0, _vue.isVNode)(s);
34}
35
36var TabPane = _tabs.default.TabPane;
37var Card = (0, _vue.defineComponent)({
38 name: 'ACard',
39 mixins: [_BaseMixin.default],
40 props: {
41 prefixCls: _vueTypes.default.string,
42 title: _vueTypes.default.VNodeChild,
43 extra: _vueTypes.default.VNodeChild,
44 bordered: _vueTypes.default.looseBool.def(true),
45 bodyStyle: _vueTypes.default.style,
46 headStyle: _vueTypes.default.style,
47 loading: _vueTypes.default.looseBool.def(false),
48 hoverable: _vueTypes.default.looseBool.def(false),
49 type: _vueTypes.default.string,
50 size: _vueTypes.default.oneOf((0, _type.tuple)('default', 'small')),
51 actions: _vueTypes.default.VNodeChild,
52 tabList: {
53 type: Array
54 },
55 tabBarExtraContent: _vueTypes.default.VNodeChild,
56 activeTabKey: _vueTypes.default.string,
57 defaultActiveTabKey: _vueTypes.default.string,
58 cover: _vueTypes.default.VNodeChild,
59 onTabChange: {
60 type: Function
61 }
62 },
63 setup: function setup() {
64 return {
65 configProvider: (0, _vue.inject)('configProvider', _configProvider.defaultConfigProvider)
66 };
67 },
68 data: function data() {
69 return {
70 widerPadding: false
71 };
72 },
73 methods: {
74 getAction: function getAction(actions) {
75 var actionList = actions.map(function (action, index) {
76 return (0, _vue.isVNode)(action) && !(0, _propsUtil.isEmptyElement)(action) || !(0, _vue.isVNode)(action) ? (0, _vue.createVNode)("li", {
77 "style": {
78 width: "".concat(100 / actions.length, "%")
79 },
80 "key": "action-".concat(index)
81 }, [(0, _vue.createVNode)("span", null, _isSlot(action) ? action : {
82 default: function _default() {
83 return [action];
84 }
85 })]) : null;
86 });
87 return actionList;
88 },
89 triggerTabChange: function triggerTabChange(key) {
90 this.$emit('tabChange', key);
91 },
92 isContainGrid: function isContainGrid() {
93 var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
94 var containGrid;
95 obj.forEach(function (element) {
96 if (element && (0, _isPlainObject.default)(element.type) && element.type.__ANT_CARD_GRID) {
97 containGrid = true;
98 }
99 });
100 return containGrid;
101 }
102 },
103 render: function render() {
104 var _slot, _slot2, _slot3, _slot4, _slot5, _slot6, _slot7, _slot8, _slot9, _slot10, _slot11, _slot12;
105
106 var _classString, _tabsProps;
107
108 var _this$$props = this.$props,
109 customizePrefixCls = _this$$props.prefixCls,
110 _this$$props$headStyl = _this$$props.headStyle,
111 headStyle = _this$$props$headStyl === void 0 ? {} : _this$$props$headStyl,
112 _this$$props$bodyStyl = _this$$props.bodyStyle,
113 bodyStyle = _this$$props$bodyStyl === void 0 ? {} : _this$$props$bodyStyl,
114 loading = _this$$props.loading,
115 _this$$props$bordered = _this$$props.bordered,
116 bordered = _this$$props$bordered === void 0 ? true : _this$$props$bordered,
117 _this$$props$size = _this$$props.size,
118 size = _this$$props$size === void 0 ? 'default' : _this$$props$size,
119 type = _this$$props.type,
120 tabList = _this$$props.tabList,
121 hoverable = _this$$props.hoverable,
122 activeTabKey = _this$$props.activeTabKey,
123 defaultActiveTabKey = _this$$props.defaultActiveTabKey;
124 var $slots = this.$slots;
125 var children = (0, _propsUtil.getSlot)(this);
126 var getPrefixCls = this.configProvider.getPrefixCls;
127 var prefixCls = getPrefixCls('card', customizePrefixCls);
128 var tabBarExtraContent = (0, _propsUtil.getComponent)(this, 'tabBarExtraContent');
129 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);
130 var loadingBlockStyle = bodyStyle.padding === 0 || bodyStyle.padding === '0px' ? {
131 padding: 24
132 } : undefined;
133 var loadingBlock = (0, _vue.createVNode)("div", {
134 "class": "".concat(prefixCls, "-loading-content"),
135 "style": loadingBlockStyle
136 }, [(0, _vue.createVNode)(_row.default, {
137 "gutter": 8
138 }, _isSlot(_slot2 = (0, _vue.createVNode)(_col.default, {
139 "span": 22
140 }, _isSlot(_slot = (0, _vue.createVNode)("div", {
141 "class": "".concat(prefixCls, "-loading-block")
142 }, null)) ? _slot : {
143 default: function _default() {
144 return [_slot];
145 }
146 })) ? _slot2 : {
147 default: function _default() {
148 return [_slot2];
149 }
150 }), (0, _vue.createVNode)(_row.default, {
151 "gutter": 8
152 }, {
153 default: function _default() {
154 return [(0, _vue.createVNode)(_col.default, {
155 "span": 8
156 }, _isSlot(_slot3 = (0, _vue.createVNode)("div", {
157 "class": "".concat(prefixCls, "-loading-block")
158 }, null)) ? _slot3 : {
159 default: function _default() {
160 return [_slot3];
161 }
162 }), (0, _vue.createVNode)(_col.default, {
163 "span": 15
164 }, _isSlot(_slot4 = (0, _vue.createVNode)("div", {
165 "class": "".concat(prefixCls, "-loading-block")
166 }, null)) ? _slot4 : {
167 default: function _default() {
168 return [_slot4];
169 }
170 })];
171 }
172 }), (0, _vue.createVNode)(_row.default, {
173 "gutter": 8
174 }, {
175 default: function _default() {
176 return [(0, _vue.createVNode)(_col.default, {
177 "span": 6
178 }, _isSlot(_slot5 = (0, _vue.createVNode)("div", {
179 "class": "".concat(prefixCls, "-loading-block")
180 }, null)) ? _slot5 : {
181 default: function _default() {
182 return [_slot5];
183 }
184 }), (0, _vue.createVNode)(_col.default, {
185 "span": 18
186 }, _isSlot(_slot6 = (0, _vue.createVNode)("div", {
187 "class": "".concat(prefixCls, "-loading-block")
188 }, null)) ? _slot6 : {
189 default: function _default() {
190 return [_slot6];
191 }
192 })];
193 }
194 }), (0, _vue.createVNode)(_row.default, {
195 "gutter": 8
196 }, {
197 default: function _default() {
198 return [(0, _vue.createVNode)(_col.default, {
199 "span": 13
200 }, _isSlot(_slot7 = (0, _vue.createVNode)("div", {
201 "class": "".concat(prefixCls, "-loading-block")
202 }, null)) ? _slot7 : {
203 default: function _default() {
204 return [_slot7];
205 }
206 }), (0, _vue.createVNode)(_col.default, {
207 "span": 9
208 }, _isSlot(_slot8 = (0, _vue.createVNode)("div", {
209 "class": "".concat(prefixCls, "-loading-block")
210 }, null)) ? _slot8 : {
211 default: function _default() {
212 return [_slot8];
213 }
214 })];
215 }
216 }), (0, _vue.createVNode)(_row.default, {
217 "gutter": 8
218 }, {
219 default: function _default() {
220 return [(0, _vue.createVNode)(_col.default, {
221 "span": 4
222 }, _isSlot(_slot9 = (0, _vue.createVNode)("div", {
223 "class": "".concat(prefixCls, "-loading-block")
224 }, null)) ? _slot9 : {
225 default: function _default() {
226 return [_slot9];
227 }
228 }), (0, _vue.createVNode)(_col.default, {
229 "span": 3
230 }, _isSlot(_slot10 = (0, _vue.createVNode)("div", {
231 "class": "".concat(prefixCls, "-loading-block")
232 }, null)) ? _slot10 : {
233 default: function _default() {
234 return [_slot10];
235 }
236 }), (0, _vue.createVNode)(_col.default, {
237 "span": 16
238 }, _isSlot(_slot11 = (0, _vue.createVNode)("div", {
239 "class": "".concat(prefixCls, "-loading-block")
240 }, null)) ? _slot11 : {
241 default: function _default() {
242 return [_slot11];
243 }
244 })];
245 }
246 })]);
247 var hasActiveTabKey = activeTabKey !== undefined;
248 var tabsProps = (_tabsProps = {
249 size: 'large'
250 }, _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);
251 var head;
252 var tabs = tabList && tabList.length ? (0, _vue.createVNode)(_tabs.default, tabsProps, _isSlot(_slot12 = tabList.map(function (item) {
253 var temp = item.tab,
254 slots = item.slots;
255 var name = slots === null || slots === void 0 ? void 0 : slots.tab;
256 var tab = temp !== undefined ? temp : $slots[name] ? $slots[name](item) : null;
257 return (0, _vue.createVNode)(TabPane, {
258 "tab": tab,
259 "key": item.key,
260 "disabled": item.disabled
261 }, null);
262 })) ? _slot12 : {
263 default: function _default() {
264 return [_slot12];
265 }
266 }) : null;
267 var titleDom = (0, _propsUtil.getComponent)(this, 'title');
268 var extraDom = (0, _propsUtil.getComponent)(this, 'extra');
269
270 if (titleDom || extraDom || tabs) {
271 head = (0, _vue.createVNode)("div", {
272 "class": "".concat(prefixCls, "-head"),
273 "style": headStyle
274 }, [(0, _vue.createVNode)("div", {
275 "class": "".concat(prefixCls, "-head-wrapper")
276 }, [titleDom && (0, _vue.createVNode)("div", {
277 "class": "".concat(prefixCls, "-head-title")
278 }, _isSlot(titleDom) ? titleDom : {
279 default: function _default() {
280 return [titleDom];
281 }
282 }), extraDom && (0, _vue.createVNode)("div", {
283 "class": "".concat(prefixCls, "-extra")
284 }, _isSlot(extraDom) ? extraDom : {
285 default: function _default() {
286 return [extraDom];
287 }
288 })]), tabs]);
289 }
290
291 var cover = (0, _propsUtil.getComponent)(this, 'cover');
292 var coverDom = cover ? (0, _vue.createVNode)("div", {
293 "class": "".concat(prefixCls, "-cover")
294 }, _isSlot(cover) ? cover : {
295 default: function _default() {
296 return [cover];
297 }
298 }) : null;
299 var body = (0, _vue.createVNode)("div", {
300 "class": "".concat(prefixCls, "-body"),
301 "style": bodyStyle
302 }, [loading ? loadingBlock : children]);
303 var actions = (0, _propsUtil.getComponent)(this, 'actions');
304 var actionDom = actions && actions.length ? (0, _vue.createVNode)("ul", {
305 "class": "".concat(prefixCls, "-actions")
306 }, [this.getAction(actions)]) : null;
307 return (0, _vue.createVNode)("div", {
308 "class": classString,
309 "ref": "cardContainerRef"
310 }, [head, coverDom, children ? body : null, actionDom]);
311 }
312});
313var _default2 = Card;
314exports.default = _default2;
\No newline at end of file