From 223fcc6ea2652ec8dc4ff240fb6092cef0dc8271 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Mon, 21 Sep 2020 14:22:44 -0400 Subject: [PATCH] Create EmailHeader component w/ docs --- src/components/EmailHeader/EmailHeader.js | 73 +++++++++++++++++++++++ src/components/EmailHeader/EmailHeader.md | 9 +++ src/components/EmailHeader/index.js | 1 + 3 files changed, 83 insertions(+) create mode 100644 src/components/EmailHeader/EmailHeader.js create mode 100644 src/components/EmailHeader/EmailHeader.md create mode 100644 src/components/EmailHeader/index.js diff --git a/src/components/EmailHeader/EmailHeader.js b/src/components/EmailHeader/EmailHeader.js new file mode 100644 index 0000000..3af9c0c --- /dev/null +++ b/src/components/EmailHeader/EmailHeader.js @@ -0,0 +1,73 @@ +import React from "react"; +import PropTypes from "prop-types"; +import { Card, CardHeader, makeStyles } from "@material-ui/core"; +import UserAvatar from "../UserAvatar/"; +import webqueue2Theme from "../../theme"; + +export default function EmailHeader({name, date, email}){ + + const theme = webqueue2Theme(false); + const useStyles = makeStyles({ + "verticalPadding": { + paddingTop: theme.spacing(1), + paddingBottom: theme.spacing(1), + }, + "removeCardHeaderPadding": { + padding: "0" + } + }); + const classes = useStyles(); + + /** + * Returns the title for the user. + * @param {string} name Name of the user. + * @param {string} email Email address of the user. + * @example + * // Has alias and name + * return "campb303 (Justin Campbell)" + * // Has alias but no name + * return "campb303" + * // Has no alias and no name + * return "" + * @returns {string} + */ + function buildTitle(name, email){ + let title = ""; + const isNotEmpty = (value) => { + return value === "" || value === null ? false : true; + }; + if (isNotEmpty(name)){ + title += `${name}`; + }; + if (isNotEmpty(email)){ + title += ` <${email}>` + } + return title; + }; + + return( + + } + title={buildTitle(name, email)} + subheader={Date(date)} + classes={{root: classes.removeCardHeaderPadding}} + /> + + ); +}; + +EmailHeader.propTypes = { + /** Name of the user. */ + "name": PropTypes.string, + /** Date of the message. */ + "date": PropTypes.string, + /** Email address of the user. */ + "email": PropTypes.string +}; + +EmailHeader.defaultProps = { + "name": "", + "date": "", + "email": "" +}; \ No newline at end of file diff --git a/src/components/EmailHeader/EmailHeader.md b/src/components/EmailHeader/EmailHeader.md new file mode 100644 index 0000000..e163f38 --- /dev/null +++ b/src/components/EmailHeader/EmailHeader.md @@ -0,0 +1,9 @@ +Description of EmailHeader. + +```jsx +import EmailHeader from "./EmailHeader"; + +``` +```jsx static + +``` \ No newline at end of file diff --git a/src/components/EmailHeader/index.js b/src/components/EmailHeader/index.js new file mode 100644 index 0000000..d4df79e --- /dev/null +++ b/src/components/EmailHeader/index.js @@ -0,0 +1 @@ +export { default as EmailHeader } from "./EmailHeader"; \ No newline at end of file