Skip to content

Commit 30f1e3b

Browse files
author
Marco Segreto
committed
Refactor TextButton
So that it is it's own component with documentation. I also removed some unnecessary use cases of inheriting from it.
1 parent b47e437 commit 30f1e3b

File tree

11 files changed

+77
-25
lines changed

11 files changed

+77
-25
lines changed

app/javascript/ui/admin/AdminAudienceModal.js

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import styled from 'styled-components'
44
import { Flex, Box } from 'reflexbox'
55
import { map, capitalize } from 'lodash'
66
import Modal from '~/ui/global/modals/Modal'
7-
import { TextButton } from '~/ui/global/styled/buttons'
7+
import { FormButton } from '~/ui/global/styled/buttons'
88
import { FieldContainer, Label } from '~/ui/global/styled/forms'
99
import HorizontalDivider from '~shared/components/atoms/HorizontalDivider'
1010
import v from '~/utils/variables'
@@ -23,14 +23,6 @@ const SelectedOption = styled.span`
2323
`
2424
SelectedOption.displayName = 'SelectedOption'
2525

26-
const CloseModalButton = styled(TextButton)`
27-
background: ${v.colors.black};
28-
border-radius: 20px;
29-
width: 183px;
30-
height: 40px;
31-
color: ${v.colors.white};
32-
`
33-
3426
@inject('apiStore', 'uiStore')
3527
@observer
3628
class AdminAudienceModal extends React.Component {
@@ -107,14 +99,14 @@ class AdminAudienceModal extends React.Component {
10799
{this.renderCriteria()}
108100
{showModalButton && (
109101
<div style={{ textAlign: 'center', paddingBottom: '2rem' }}>
110-
<CloseModalButton
102+
<FormButton
111103
data-cy="CloseModalButton"
112104
onClick={this.handleClose}
113105
width={200}
114106
className="adminAudienceModalButton"
115107
>
116108
{feedbackAudienceMenuOpen ? 'Add Audience' : 'Close'}
117-
</CloseModalButton>
109+
</FormButton>
118110
</div>
119111
)}
120112
</React.Fragment>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import PropTypes from 'prop-types'
2+
import styled from 'styled-components'
3+
4+
import v from '~/utils/variables'
5+
6+
/**
7+
* Button that's just text with no background styling.
8+
*/
9+
const TextButton = styled.button`
10+
text-transform: uppercase;
11+
max-width: ${props => (props.maxWidth ? `${props.maxWidth}px` : 'none')};
12+
font-family: ${v.fonts.sans};
13+
font-size: ${props => props.fontSizeEm}rem;
14+
font-weight: 500;
15+
letter-spacing: 0.09375rem;
16+
cursor: pointer;
17+
color: ${props => props.color};
18+
border: none;
19+
background: none;
20+
`
21+
TextButton.propTypes = {
22+
/** Color for the button text */
23+
color: PropTypes.oneOf(Object.values(v.colors)),
24+
/** Font size in ems for the button text */
25+
fontSizeEm: PropTypes.number,
26+
maxWidth: PropTypes.number,
27+
}
28+
TextButton.defaultProps = {
29+
color: v.colors.commonDarkest,
30+
fontSizeEm: 0.9375,
31+
maxWidth: null,
32+
}
33+
TextButton.displayName = 'TextButton'
34+
/** @component */
35+
export default TextButton
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
Default button style
2+
3+
```jsx
4+
<TextButton>
5+
Action
6+
</TextButton>
7+
```
8+
9+
10+
"More" grid card button
11+
12+
```jsx
13+
<TextButton fontSizeEm={0.75}>
14+
Action
15+
</TextButton>
16+
```
17+
18+
```jsx
19+
import v from '../../utils/variables'
20+
;<TextButton color={v.colors.primaryDark}>
21+
Action
22+
</TextButton>
23+
```

app/javascript/ui/grid/GridCard.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,8 @@ import ActionMenu from '~/ui/grid/ActionMenu'
1313
import CardActionHolder from '~/ui/icons/CardActionHolder'
1414

1515
import EditButton from '~/ui/reporting/EditButton'
16-
import {
17-
NamedActionButton,
18-
CollectionCoverTextButton,
19-
} from '~/ui/global/styled/buttons'
16+
import TextButton from '~/ui/global/TextButton'
17+
import { NamedActionButton } from '~/ui/global/styled/buttons'
2018
import FullScreenIcon from '~/ui/icons/FullScreenIcon'
2119
import Loader from '~/ui/layout/Loader'
2220
import Download from '~/ui/grid/Download'
@@ -543,7 +541,7 @@ class GridCard extends React.Component {
543541
</StyledGridCardInner>
544542
{record.isCreativeDifferenceChartCover && (
545543
<BottomRightActionHolder onClick={this.handleMoreCoverClick}>
546-
<CollectionCoverTextButton>More…</CollectionCoverTextButton>
544+
<TextButton fontSizeEm={0.75}>More…</TextButton>
547545
</BottomRightActionHolder>
548546
)}
549547
<CollectionCardsTagEditorModal

app/javascript/ui/groups/GroupModify.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import PropTypes from 'prop-types'
22
import { action, observable } from 'mobx'
33
import { observer, PropTypes as MobxPropTypes } from 'mobx-react'
44
import parameterize from 'parameterize'
5-
import { FormButton, TextButton } from '~/ui/global/styled/buttons'
5+
import { FormButton } from '~/ui/global/styled/buttons'
6+
import TextButton from '~/ui/global/TextButton'
67
import { SmallHelperText, SubduedText } from '~/ui/global/styled/typography'
78
import {
89
FieldContainer,

app/javascript/ui/organizations/OrganizationPeople.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Fragment } from 'react'
22
import PropTypes from 'prop-types'
33
import { observer, PropTypes as MobxPropTypes } from 'mobx-react'
44
import styled from 'styled-components'
5-
import { TextButton } from '~/ui/global/styled/buttons'
5+
import TextButton from '~/ui/global/TextButton'
66
import { FormSpacer } from '~/ui/global/styled/forms'
77
import { Row, RowItemRight } from '~/ui/global/styled/layout'
88
import {

app/javascript/ui/test_collections/AudienceSettings/AddAudienceModal.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ import {
1919
getCriterionByName,
2020
criteriaLimitByGroup,
2121
} from '~/ui/test_collections/AudienceSettings/AudienceCriteria'
22-
import { FormButton, TextButton } from '~/ui/global/styled/buttons'
22+
import TextButton from '~/ui/global/TextButton'
23+
import { FormButton } from '~/ui/global/styled/buttons'
2324
import {
2425
Checkbox,
2526
CheckboxSelectOption,

app/javascript/ui/test_collections/ConfirmPriceModal.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import Dialog from '@material-ui/core/Dialog'
55
import DialogContent from '@material-ui/core/DialogContent'
66
import PaperAirplane from '~/ui/test_collections/PaperAirplane'
77
import { ModalCloseButton } from '~/ui/global/modals/Modal'
8-
import { FormButton, TextButton } from '~/ui/global/styled/buttons'
8+
import { FormButton } from '~/ui/global/styled/buttons'
9+
import TextButton from '~/ui/global/TextButton'
910
import {
1011
DisplayText,
1112
SpecialDisplayHeading,

app/javascript/ui/users/MoveHelperModal.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ import FormControl from '@material-ui/core/FormControl'
88
import FormControlLabel from '@material-ui/core/FormControlLabel'
99
import ICONS from '~/ui/icons/dialogIcons'
1010
const { CloseIcon } = ICONS
11-
import { TextButton, FormButton } from '~/ui/global/styled/buttons'
11+
import { FormButton } from '~/ui/global/styled/buttons'
12+
import TextButton from '~/ui/global/TextButton'
1213
import { Checkbox } from '~/ui/global/styled/forms'
1314
import {
1415
SpecialDisplayHeading,

babel.config.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
// This file is currently being used by styleguidist but should be merged with
2-
// .babelrc at some point.
3-
41
module.exports = function(api) {
2+
// Cache the returned value forever and don't call this function again.
3+
api.cache(true)
4+
55
return {
66
sourceType: 'unambiguous',
77
exclude: /node_modules/,

0 commit comments

Comments
 (0)