UNPKG

3.93 kBJavaScriptView Raw
1import _extends from 'babel-runtime/helpers/extends';
2import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
3import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';
4import _inherits from 'babel-runtime/helpers/inherits';
5
6var _class, _temp;
7
8/* eslint-disable valid-jsdoc */
9import React from 'react';
10import PropTypes from 'prop-types';
11import classNames from 'classnames';
12import ConfigProvider from '../config-provider';
13import BulletHeader from './bullet-header';
14import CollapseContent from './collapse-content';
15import CardMedia from './media';
16import CardActions from './actions';
17import { obj } from '../util';
18
19var pickOthers = obj.pickOthers;
20
21/**
22 * Card
23 * @order 0
24 */
25
26var Card = (_temp = _class = function (_React$Component) {
27 _inherits(Card, _React$Component);
28
29 function Card() {
30 _classCallCheck(this, Card);
31
32 return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));
33 }
34
35 Card.prototype.render = function render() {
36 var _classNames;
37
38 var _props = this.props,
39 prefix = _props.prefix,
40 className = _props.className,
41 title = _props.title,
42 subTitle = _props.subTitle,
43 extra = _props.extra,
44 showTitleBullet = _props.showTitleBullet,
45 showHeadDivider = _props.showHeadDivider,
46 children = _props.children,
47 rtl = _props.rtl,
48 contentHeight = _props.contentHeight,
49 free = _props.free,
50 actions = _props.actions,
51 hasBorder = _props.hasBorder,
52 media = _props.media;
53
54
55 var cardCls = classNames((_classNames = {}, _classNames[prefix + 'card'] = true, _classNames[prefix + 'card-free'] = free, _classNames[prefix + 'card-noborder'] = !hasBorder, _classNames[prefix + 'card-show-divider'] = showHeadDivider, _classNames[prefix + 'card-hide-divider'] = !showHeadDivider, _classNames), className);
56
57 var others = pickOthers(Object.keys(Card.propTypes), this.props);
58
59 others.dir = rtl ? 'rtl' : undefined;
60
61 return React.createElement(
62 'div',
63 _extends({}, others, { className: cardCls }),
64 media && React.createElement(
65 CardMedia,
66 null,
67 media
68 ),
69 React.createElement(BulletHeader, { title: title, subTitle: subTitle, extra: extra, showTitleBullet: showTitleBullet }),
70 free ? children : React.createElement(
71 CollapseContent,
72 { contentHeight: contentHeight },
73 children
74 ),
75 actions && React.createElement(
76 CardActions,
77 null,
78 actions
79 )
80 );
81 };
82
83 return Card;
84}(React.Component), _class.displayName = 'Card', _class.propTypes = _extends({}, ConfigProvider.propTypes, {
85 prefix: PropTypes.string,
86 rtl: PropTypes.bool,
87 /**
88 * 卡片的上的图片 / 视频
89 */
90 media: PropTypes.node,
91 /**
92 * 卡片的标题
93 */
94 title: PropTypes.node,
95 /**
96 * 卡片的副标题
97 */
98 subTitle: PropTypes.node,
99 /**
100 * 卡片操作组,位置在卡片底部
101 */
102 actions: PropTypes.node,
103 /**
104 * 是否显示标题的项目符号
105 */
106 showTitleBullet: PropTypes.bool,
107 /**
108 * 是否展示头部的分隔线
109 */
110 showHeadDivider: PropTypes.bool,
111 /**
112 * 内容区域的固定高度
113 */
114 contentHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
115 /**
116 * 标题区域的用户自定义内容
117 */
118 extra: PropTypes.node,
119 /**
120 * 是否开启自由模式,开启后card 将使用子组件配合使用, 设置此项后 title, subtitle, 等等属性都将失效
121 */
122 free: PropTypes.bool,
123 /**
124 * 是否带边框
125 * @version 1.24
126 */
127 hasBorder: PropTypes.bool,
128 className: PropTypes.string,
129 children: PropTypes.node
130}), _class.defaultProps = {
131 prefix: 'next-',
132 free: false,
133 showTitleBullet: true,
134 showHeadDivider: true,
135 hasBorder: true,
136 contentHeight: 120
137}, _temp);
138Card.displayName = 'Card';
139export { Card as default };
\No newline at end of file