@carbon/ibm-security
Version:
Carbon for Cloud & Cognitive IBM Security UI components
107 lines (105 loc) • 5.09 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.namespace = exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _classnames2 = _interopRequireDefault(require("classnames"));
var _propTypes = require("prop-types");
var _react = _interopRequireWildcard(require("react"));
var _namespace = require("../../globals/namespace");
var _excluded = ["className", "children", "label", "link", "header", "body", "footer", "onClick"];
/**
* @file Card.
* @copyright IBM Security 2019, 2021
*/
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
var namespace = exports.namespace = (0, _namespace.getComponentNamespace)('card');
var Card = function Card(_ref) {
var className = _ref.className,
children = _ref.children,
label = _ref.label,
link = _ref.link,
header = _ref.header,
body = _ref.body,
footer = _ref.footer,
onClick = _ref.onClick,
other = (0, _objectWithoutProperties2.default)(_ref, _excluded);
var cardHeader = header && /*#__PURE__*/_react.default.createElement("div", {
className: "".concat(namespace, "__header")
}, header.tag && /*#__PURE__*/_react.default.createElement("p", {
className: "".concat(namespace, "__header__tag")
}, header.tag), header.image && /*#__PURE__*/_react.default.createElement("img", {
className: "".concat(namespace, "__header__image"),
alt: label,
src: header.image
}), /*#__PURE__*/_react.default.createElement("h1", {
className: "".concat(namespace, "__header__title")
}, header.title));
var cardBody = body && /*#__PURE__*/_react.default.createElement("div", {
className: "".concat(namespace, "__body")
}, body.text && /*#__PURE__*/_react.default.createElement("p", {
className: "".concat(namespace, "__body__text")
}, body.text), body.children);
var cardFooter = footer && /*#__PURE__*/_react.default.createElement("div", {
className: "".concat(namespace, "__footer")
}, footer.children);
var content = /*#__PURE__*/_react.default.createElement(_react.Fragment, null, cardHeader, cardBody, cardFooter, children);
var classNames = (0, _classnames2.default)(namespace, className, (0, _defineProperty2.default)({}, "".concat(namespace, "__link"), link));
return link ? /*#__PURE__*/_react.default.createElement("a", (0, _extends2.default)({
className: classNames,
href: link,
"aria-label": label,
onClick: onClick
}, other), content) : /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
className: classNames
}, other), content);
};
/** Card child elements. */
var children = (0, _propTypes.oneOfType)([_propTypes.array, _propTypes.element, _propTypes.string]);
Card.defaultProps = {
body: null,
children: null,
className: '',
footer: null,
header: null,
label: '',
link: null,
onClick: null
};
Card.propTypes = {
/** @type {Record<string, any>} An object list of body props. */
body: (0, _propTypes.shape)({
children: children,
/** @type {string} The text of the body. */
text: _propTypes.string
}),
children: children,
/** @type {string} The class. */
className: _propTypes.string,
/** @type {Record<string, any>} An object list of footer props. */
footer: (0, _propTypes.shape)({
children: children
}),
/** @type {Record<string, any>} An object list of header props. */
header: (0, _propTypes.shape)({
/** @type {string} The image of the header. */
image: _propTypes.string,
/** @type {string} Card header tag. */
tag: _propTypes.node,
/** @type {string} The title of the header. */
title: _propTypes.string.isRequired
}),
/** @type {string} The alt tag content for an image, if included in the header object. */
label: _propTypes.string,
/** @type {string} The link. */
link: _propTypes.string,
/** @type {string} Click handler. */
onClick: _propTypes.func
};
var _default = exports.default = Card;