ruffer-pattern-portfolio
Version:
This is the end result from https://dev.to/swyx/quick-guide-to-setup-your-react--typescript-storybook-design-system-1c51
69 lines (68 loc) • 3.6 kB
JavaScript
"use strict";
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = __importStar(require("react"));
var react_redux_1 = require("react-redux");
var react_bootstrap_1 = require("react-bootstrap");
var LoadingSection_1 = require("../LoadingSection/LoadingSection");
exports.Card = function (props) {
var defaulHeader = {
title: "Card - Title",
subtitle: "Card - SubTitle",
color: ''
};
var defaultImage = {
variant: "top",
src: ''
};
var loading = props.loading, _a = props.header, header = _a === void 0 ? defaulHeader : _a, _b = props.image, image = _b === void 0 ? defaultImage : _b, content = props.content, className = props.className, link = props.link, backgroundColor = props.backgroundColor, children = props.children;
if (loading) {
return (react_1.default.createElement(react_bootstrap_1.Card, { className: "shadow", style: { backgroundColor: backgroundColor } },
react_1.default.createElement(LoadingSection_1.LoadingSection, { className: "w-75" }),
react_1.default.createElement(LoadingSection_1.LoadingSection, { className: "w-50 h-50" }),
react_1.default.createElement(LoadingSection_1.LoadingSection, { className: "w-50 h-50" }),
react_1.default.createElement(LoadingSection_1.LoadingSection, { className: "w-25 h-50" })));
}
// TODO: Render this block in TypeScript
var titleColor = '#9ae48f';
var cardTitle;
var cardSubTitle;
if (header) {
if (header.title) {
titleColor = header.color ? header.color : titleColor;
cardTitle =
(react_1.default.createElement(react_bootstrap_1.Card.Title, { style: { textTransform: 'uppercase', color: titleColor,
textOverflow: 'ellipsis', overflow: 'hidden', whiteSpace: 'nowrap' } }, header.title));
}
if (header.subtitle) {
cardSubTitle =
(react_1.default.createElement(react_bootstrap_1.Card.Subtitle, { className: "mb-2 text-muted", style: { textOverflow: 'ellipsis' } }, header.subtitle));
}
}
var cardBody;
var cardBodyColor = '#000';
if (content) {
cardBodyColor = content.color ? content.color : cardBodyColor;
cardBody =
(react_1.default.createElement(react_bootstrap_1.Card.Text, { style: { fontSize: '45px', color: cardBodyColor } }, content.text));
}
var cardImg;
if (image) {
cardImg = (react_1.default.createElement(react_bootstrap_1.Card.Img, { src: image.src }));
}
var cardContent = (react_1.default.createElement(react_bootstrap_1.Card, { style: { backgroundColor: backgroundColor } },
react_1.default.createElement(react_bootstrap_1.Card.Body, null,
cardImg,
cardTitle,
cardSubTitle,
cardBody,
children)));
return (react_1.default.createElement(react_1.Fragment, null, link ? (react_1.default.createElement("a", { className: className, href: link, style: { textDecoration: 'none' } }, cardContent)) : (react_1.default.createElement("div", { className: className }, cardContent))));
};
exports.default = react_redux_1.connect()(exports.Card);