From b380327169f1acbd52aa5668b4fe5364a34a03d2 Mon Sep 17 00:00:00 2001 From: Sebastian Qvarfordt Date: Thu, 2 Apr 2020 11:10:35 +0200 Subject: [PATCH] Changes as suggested in PR and rewrite of BottomLink to TypeScript --- ...BottomLink.test.js => BottomLink.test.tsx} | 0 .../{BottomLink.js => BottomLink.tsx} | 66 ++++++++++--------- .../{InfoCard.test.js => InfoCard.test.tsx} | 0 .../core/src/layout/InfoCard/InfoCard.tsx | 44 ++++--------- .../layout/InfoCard/{index.js => index.ts} | 0 5 files changed, 46 insertions(+), 64 deletions(-) rename packages/core/src/layout/InfoCard/{BottomLink.test.js => BottomLink.test.tsx} (100%) rename packages/core/src/layout/InfoCard/{BottomLink.js => BottomLink.tsx} (52%) rename packages/core/src/layout/InfoCard/{InfoCard.test.js => InfoCard.test.tsx} (100%) rename packages/core/src/layout/InfoCard/{index.js => index.ts} (100%) diff --git a/packages/core/src/layout/InfoCard/BottomLink.test.js b/packages/core/src/layout/InfoCard/BottomLink.test.tsx similarity index 100% rename from packages/core/src/layout/InfoCard/BottomLink.test.js rename to packages/core/src/layout/InfoCard/BottomLink.test.tsx diff --git a/packages/core/src/layout/InfoCard/BottomLink.js b/packages/core/src/layout/InfoCard/BottomLink.tsx similarity index 52% rename from packages/core/src/layout/InfoCard/BottomLink.js rename to packages/core/src/layout/InfoCard/BottomLink.tsx index 5dafa72978..9c4fe64196 100644 --- a/packages/core/src/layout/InfoCard/BottomLink.js +++ b/packages/core/src/layout/InfoCard/BottomLink.tsx @@ -14,16 +14,16 @@ * limitations under the License. */ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; +import React, { FC } from 'react'; import { Link } from '@material-ui/core'; -import { Divider, ListItemText, withStyles } from '@material-ui/core'; +import { Divider, ListItemText, makeStyles } from '@material-ui/core'; import { ListItem, ListItemIcon } from '@material-ui/core'; import ArrowIcon from '@material-ui/icons/ArrowForward'; import grey from '@material-ui/core/colors/grey'; import Box from '@material-ui/core/Box'; +import { BackstageTheme } from '../../theme/theme'; -const styles = theme => ({ +const useStyles = makeStyles(theme => ({ root: { maxWidth: 'fit-content', padding: theme.spacing(2, 2, 2, 2.5) @@ -31,33 +31,37 @@ const styles = theme => ({ boxTitle: { margin: 0, color: grey[900] - } -}) -class BottomLink extends Component { - static propTypes = { - link: PropTypes.string, - title: PropTypes.string, - onClick: PropTypes.func, - }; + }, +})); - render() { - const { link, title, onClick, classes } = this.props; - return ( -
- - - - - {title} - - - - - - -
- ); - } +export type Props = { + link: string; + title: string; + onClick?: (event: React.MouseEvent) => void; +}; + +const BottomLink: FC = ({ + link, + title, + onClick, +}) => { + const classes = useStyles(); + + return ( +
+ + + + + {title} + + + + + + +
+ ); } -export default withStyles(styles)(BottomLink); \ No newline at end of file +export default BottomLink; \ No newline at end of file diff --git a/packages/core/src/layout/InfoCard/InfoCard.test.js b/packages/core/src/layout/InfoCard/InfoCard.test.tsx similarity index 100% rename from packages/core/src/layout/InfoCard/InfoCard.test.js rename to packages/core/src/layout/InfoCard/InfoCard.test.tsx diff --git a/packages/core/src/layout/InfoCard/InfoCard.tsx b/packages/core/src/layout/InfoCard/InfoCard.tsx index 26337d1968..354b556686 100644 --- a/packages/core/src/layout/InfoCard/InfoCard.tsx +++ b/packages/core/src/layout/InfoCard/InfoCard.tsx @@ -25,7 +25,7 @@ import { makeStyles, } from '@material-ui/core'; import ErrorBoundary from '../ErrorBoundary/ErrorBoundary'; -import BottomLink from './BottomLink'; +import BottomLink, { Props as BottomLinkProps } from './BottomLink'; import { BackstageTheme } from '../../theme/theme'; const useStyles = makeStyles(theme => ({ @@ -34,19 +34,18 @@ const useStyles = makeStyles(theme => ({ }, })); -const BoldHeader = withStyles({ +const BoldHeader = withStyles(theme => ({ title: { fontWeight: 700 }, - subheader: { paddingTop: '2px' }, -})(CardHeader); + subheader: { paddingTop: theme.spacing(1) }, +}))(CardHeader); -const CardActionsTopRight = withStyles({ +const CardActionsTopRight = withStyles(theme => ({ root: { display: 'inline-block', - paddingRight: '16px', - paddingTop: '16px', + padding: theme.spacing(8, 8, 0, 0), float: 'right', }, -})(CardActions); +}))(CardActions); const VARIANT_STYLES = { card: { @@ -124,12 +123,12 @@ type Props = { title?: ReactNode; subheader?: ReactNode; divider?: boolean; - deepLink?: object; + deepLink?: BottomLinkProps; slackChannel?: string; variant?: string; style?: object; cardStyle?: object; - children: ReactNode; + children?: ReactNode; headerStyle?: object; headerProps?: object; actionsClassName?: string; @@ -145,8 +144,6 @@ const InfoCard: FC = ({ deepLink, slackChannel = '#backstage', variant, - style, - cardStyle, children, headerStyle, headerProps, @@ -156,18 +153,6 @@ const InfoCard: FC = ({ actionsTopRight, }) => { const classes = useStyles(); - if (style) { - // eslint-disable-next-line no-console - console.warn( - 'InfoCard: using `style` property directly, consider migrating your style to variant in InfoCard', - ); - } - if (cardStyle) { - // eslint-disable-next-line no-console - console.warn( - 'InfoCard: using `cardStyle` property directly, consider migrating your style to variant in InfoCard', - ); - } /** * If variant is specified, we build up styles for that particular variant for both @@ -187,15 +172,8 @@ const InfoCard: FC = ({ }); } - // Apply the passed styles on top - const computedStyle = { ...calculatedStyle, ...style }; - const computedCardStyle = { - ...calculatedCardStyle, - ...cardStyle, - }; - return ( - + {title && ( <> @@ -213,7 +191,7 @@ const InfoCard: FC = ({ {actionsTopRight} )} {divider && } - + {children} {actions && ( diff --git a/packages/core/src/layout/InfoCard/index.js b/packages/core/src/layout/InfoCard/index.ts similarity index 100% rename from packages/core/src/layout/InfoCard/index.js rename to packages/core/src/layout/InfoCard/index.ts