Skip to content

Commit 7b9761f

Browse files
committed
Implement TypeScript typings
1 parent dde6e00 commit 7b9761f

File tree

8 files changed

+45
-35
lines changed

8 files changed

+45
-35
lines changed

src/Dashboard/Dashboard.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,10 @@ import KeyMetrics from './KeyMetrics/'
1111
import SubscriptionsRecent from './SubscriptionsRecent/'
1212
import SubscriptionsBreakdown from './SubscriptionsBreakdown/'
1313

14-
const Dashboard = () => {
14+
const Dashboard: React.FC = () => {
1515
return (
1616
<BasePageContainer>
17-
<BasePageToolbar
18-
title={'Dashboard'}
19-
actions={<DashboardActions />}
20-
></BasePageToolbar>
17+
<BasePageToolbar title={'Dashboard'} ActionsComponent={DashboardActions} />
2118
<Grid container spacing={3}>
2219
<KeyMetrics />
2320
<Grid item xs={12}>

src/_common/BasePageToolbar/BasePageToolbar.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,26 @@ export interface IBasePageToolbarProps {
1111
titleContainer?: string
1212
actionsContainer?: string
1313
}
14-
title: React.ReactNode
15-
actions: React.ReactNode
14+
title?: string
15+
TitleComponent?: React.ComponentType
16+
ActionsComponent?: React.ComponentType
1617
}
1718

1819
const BasePageToolbar: React.FC<IBasePageToolbarProps> = (props) => {
1920
const classes = useStyles()
2021
const externalClasses = props.classes || {}
22+
const ActionsComponent = props.ActionsComponent || null
2123

2224
const Title =
2325
typeof props.title === 'string' ? (
2426
<Typography variant="h4" component="h1">
2527
{props.title}
2628
</Typography>
2729
) : (
28-
props.title
30+
props.TitleComponent
2931
)
30-
// const TitleComponent = props.titleComponent
3132

32-
const Actions = props.actions
33-
// const ActionsComponent = props.actionsComponent
33+
const Actions = ActionsComponent && <ActionsComponent />
3434

3535
return (
3636
<Grid
@@ -46,7 +46,7 @@ const BasePageToolbar: React.FC<IBasePageToolbarProps> = (props) => {
4646
container
4747
className={clsx(classes.titleContainer, externalClasses.titleContainer)}
4848
>
49-
{Title && Title}
49+
{Title}
5050
</Grid>
5151
<Grid
5252
item
@@ -56,7 +56,7 @@ const BasePageToolbar: React.FC<IBasePageToolbarProps> = (props) => {
5656
container
5757
className={clsx(classes.actionsContainer, externalClasses.titleContainer)}
5858
>
59-
{Actions && Actions}
59+
{Actions}
6060
</Grid>
6161
</Grid>
6262
)

src/_common/BaseTable/BaseTablePagination.js renamed to src/_common/BaseTable/BaseTablePagination.tsx

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import React from 'react'
2-
import PropTypes from 'prop-types'
3-
import { TablePagination, IconButton } from '@material-ui/core'
1+
import React, { MouseEvent } from 'react'
2+
import { TablePagination, TablePaginationProps, IconButton } from '@material-ui/core'
3+
import { TablePaginationActionsProps } from '@material-ui/core/TablePagination/TablePaginationActions'
44
import { useTheme, makeStyles } from '@material-ui/core/styles'
55

66
import {
@@ -10,25 +10,34 @@ import {
1010
LastPage as LastPageIcon,
1111
} from '@material-ui/icons/'
1212

13-
const BaseTablePaginationActions = (props) => {
13+
import { ITheme } from '_theme/'
14+
15+
export interface IBaseTablePaginationActionsProps {
16+
count: number
17+
page: number
18+
rowsPerPage: number
19+
onChangePage: (event: React.MouseEvent<HTMLButtonElement>, newPage: number) => void
20+
}
21+
22+
const BaseTablePaginationActions: React.FC<TablePaginationActionsProps> = (props) => {
1423
const classes = useStyles()
1524
const theme = useTheme()
16-
const { count, page, itemsPerPage, onChangePage } = props
25+
const { count, page, rowsPerPage, onChangePage } = props
1726

18-
const handleFirstPageButtonClick = (event) => {
27+
const handleFirstPageButtonClick = (event: MouseEvent<HTMLButtonElement>) => {
1928
onChangePage(event, 0)
2029
}
2130

22-
const handleBackButtonClick = (event) => {
31+
const handleBackButtonClick = (event: MouseEvent<HTMLButtonElement>) => {
2332
onChangePage(event, page - 1)
2433
}
2534

26-
const handleNextButtonClick = (event) => {
35+
const handleNextButtonClick = (event: MouseEvent<HTMLButtonElement>) => {
2736
onChangePage(event, page + 1)
2837
}
2938

30-
const handleLastPageButtonClick = (event) => {
31-
onChangePage(event, Math.max(0, Math.ceil(count / itemsPerPage) - 1))
39+
const handleLastPageButtonClick = (event: MouseEvent<HTMLButtonElement>) => {
40+
onChangePage(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1))
3241
}
3342

3443
return (
@@ -49,14 +58,14 @@ const BaseTablePaginationActions = (props) => {
4958
</IconButton>
5059
<IconButton
5160
onClick={handleNextButtonClick}
52-
disabled={page >= Math.ceil(count / itemsPerPage) - 1}
61+
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
5362
aria-label="next page"
5463
>
5564
{theme.direction === 'rtl' ? <KeyboardArrowLeft /> : <KeyboardArrowRight />}
5665
</IconButton>
5766
<IconButton
5867
onClick={handleLastPageButtonClick}
59-
disabled={page >= Math.ceil(count / itemsPerPage) - 1}
68+
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
6069
aria-label="last page"
6170
>
6271
{theme.direction === 'rtl' ? <FirstPageIcon /> : <LastPageIcon />}
@@ -65,7 +74,9 @@ const BaseTablePaginationActions = (props) => {
6574
)
6675
}
6776

68-
const BaseTablePagination = (props) => {
77+
export type IBaseTablePaginationProps = TablePaginationProps
78+
79+
const BaseTablePagination: React.FC<IBaseTablePaginationProps> = (props) => {
6980
const { count, page, rowsPerPage, onChangePage, onChangeRowsPerPage = () => {} } = props
7081

7182
return (
@@ -86,19 +97,11 @@ const BaseTablePagination = (props) => {
8697
)
8798
}
8899

89-
const useStyles = makeStyles((theme) => ({
100+
const useStyles = makeStyles<ITheme>((theme) => ({
90101
root: {
91102
flexShrink: 0,
92103
marginLeft: theme.spacing(2.5),
93104
},
94105
}))
95106

96-
BaseTablePagination.propTypes = {
97-
count: PropTypes.number.isRequired,
98-
page: PropTypes.number.isRequired,
99-
rowsPerPage: PropTypes.number.isRequired,
100-
onChangePage: PropTypes.func.isRequired,
101-
onChangeRowsPerPage: PropTypes.func,
102-
}
103-
104107
export default BaseTablePagination
File renamed without changes.

src/_common/BaseTitle/BaseTitle.js

Whitespace-only changes.

src/_common/BaseTitle/BaseTitle.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import React from 'react'
2+
3+
const BaseTitle: React.FC = () => {
4+
return <div></div>
5+
}
6+
7+
export default BaseTitle

src/_common/BaseTitle/index.js

Whitespace-only changes.

src/_common/BaseTitle/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import BaseTitle from './BaseTitle'
2+
3+
export { BaseTitle }

0 commit comments

Comments
 (0)