diff options
author | Santhosh C <csesanthosh15@gmail.com> | 2022-05-18 23:33:07 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-18 13:03:07 -0500 |
commit | 3c9f6f1f9d44ac484e0e76f5cd0563f76461ca9b (patch) | |
tree | e39a37a28846cda6ca30baf0a74663b97932751e /src/components/ui | |
parent | 6.0.0-nightly.40 [skip ci] (diff) | |
download | ferdium-app-3c9f6f1f9d44ac484e0e76f5cd0563f76461ca9b.tar.gz ferdium-app-3c9f6f1f9d44ac484e0e76f5cd0563f76461ca9b.tar.zst ferdium-app-3c9f6f1f9d44ac484e0e76f5cd0563f76461ca9b.zip |
Remove duplicated Button.js component (#176)
Diffstat (limited to 'src/components/ui')
-rw-r--r-- | src/components/ui/Button.js | 92 | ||||
-rw-r--r-- | src/components/ui/button/index.tsx | 16 |
2 files changed, 11 insertions, 97 deletions
diff --git a/src/components/ui/Button.js b/src/components/ui/Button.js deleted file mode 100644 index 882b39e69..000000000 --- a/src/components/ui/Button.js +++ /dev/null | |||
@@ -1,92 +0,0 @@ | |||
1 | import { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { observer, inject } from 'mobx-react'; | ||
4 | import Loader from 'react-loader'; | ||
5 | import classnames from 'classnames'; | ||
6 | |||
7 | // Can this file be merged into the './/button/index.tsx' file? | ||
8 | class Button extends Component { | ||
9 | static propTypes = { | ||
10 | className: PropTypes.string, | ||
11 | label: PropTypes.string.isRequired, | ||
12 | disabled: PropTypes.bool, | ||
13 | onClick: PropTypes.func, | ||
14 | type: PropTypes.string, | ||
15 | buttonType: PropTypes.string, | ||
16 | loaded: PropTypes.bool, | ||
17 | htmlForm: PropTypes.string, | ||
18 | stores: PropTypes.shape({ | ||
19 | settings: PropTypes.shape({ | ||
20 | app: PropTypes.shape({ | ||
21 | accentColor: PropTypes.string.isRequired, | ||
22 | }).isRequired, | ||
23 | }).isRequired, | ||
24 | }).isRequired, | ||
25 | }; | ||
26 | |||
27 | static defaultProps = { | ||
28 | className: null, | ||
29 | disabled: false, | ||
30 | onClick: () => {}, | ||
31 | type: 'button', | ||
32 | buttonType: '', | ||
33 | loaded: true, | ||
34 | htmlForm: '', | ||
35 | }; | ||
36 | |||
37 | render() { | ||
38 | const { | ||
39 | label, | ||
40 | className, | ||
41 | disabled, | ||
42 | onClick, | ||
43 | type, | ||
44 | buttonType, | ||
45 | loaded, | ||
46 | htmlForm, | ||
47 | } = this.props; | ||
48 | |||
49 | const buttonProps = { | ||
50 | className: classnames({ | ||
51 | 'franz-form__button': true, | ||
52 | [`franz-form__button--${buttonType}`]: buttonType, | ||
53 | [`${className}`]: className, | ||
54 | }), | ||
55 | type, | ||
56 | }; | ||
57 | |||
58 | if (disabled) { | ||
59 | buttonProps.disabled = true; | ||
60 | } | ||
61 | |||
62 | if (onClick) { | ||
63 | buttonProps.onClick = onClick; | ||
64 | } | ||
65 | |||
66 | if (htmlForm) { | ||
67 | buttonProps.form = htmlForm; | ||
68 | } | ||
69 | |||
70 | return ( | ||
71 | // disabling rule as button has type defined in `buttonProps` | ||
72 | /* eslint-disable react/button-has-type */ | ||
73 | <button {...buttonProps}> | ||
74 | <Loader | ||
75 | loaded={loaded} | ||
76 | lines={10} | ||
77 | scale={0.4} | ||
78 | color={ | ||
79 | buttonType !== 'secondary' | ||
80 | ? '#FFF' | ||
81 | : this.props.stores.settings.app.accentColor | ||
82 | } | ||
83 | component="span" | ||
84 | /> | ||
85 | {label} | ||
86 | </button> | ||
87 | /* eslint-enable react/button-has-type */ | ||
88 | ); | ||
89 | } | ||
90 | } | ||
91 | |||
92 | export default inject('stores')(observer(Button)); | ||
diff --git a/src/components/ui/button/index.tsx b/src/components/ui/button/index.tsx index 11369dcbd..9c64e909a 100644 --- a/src/components/ui/button/index.tsx +++ b/src/components/ui/button/index.tsx | |||
@@ -30,12 +30,17 @@ interface IProps extends IFormField, WithStylesProps<typeof styles> { | |||
30 | icon?: string; | 30 | icon?: string; |
31 | href?: string; | 31 | href?: string; |
32 | target?: string; | 32 | target?: string; |
33 | htmlForm?: string; | ||
33 | } | 34 | } |
34 | 35 | ||
35 | let buttonTransition: string = 'none'; | 36 | let buttonTransition: string = 'none'; |
36 | let loaderContainerTransition: string = 'none'; | 37 | let loaderContainerTransition: string = 'none'; |
37 | 38 | ||
38 | if (window && window.matchMedia('(prefers-reduced-motion: no-preference)')) { | 39 | if ( |
40 | typeof window !== 'undefined' && | ||
41 | window && | ||
42 | window.matchMedia('(prefers-reduced-motion: no-preference)') | ||
43 | ) { | ||
39 | buttonTransition = 'background .5s, opacity 0.3s'; | 44 | buttonTransition = 'background .5s, opacity 0.3s'; |
40 | loaderContainerTransition = 'all 0.3s'; | 45 | loaderContainerTransition = 'all 0.3s'; |
41 | } | 46 | } |
@@ -187,10 +192,10 @@ class ButtonComponent extends Component<IProps> { | |||
187 | icon, | 192 | icon, |
188 | href, | 193 | href, |
189 | target, | 194 | target, |
195 | htmlForm, | ||
190 | } = this.props; | 196 | } = this.props; |
191 | 197 | ||
192 | const { busy } = this.state; | 198 | const { busy } = this.state; |
193 | |||
194 | let showLoader = false; | 199 | let showLoader = false; |
195 | if (loaded) { | 200 | if (loaded) { |
196 | showLoader = !loaded; | 201 | showLoader = !loaded; |
@@ -235,6 +240,7 @@ class ButtonComponent extends Component<IProps> { | |||
235 | })} | 240 | })} |
236 | disabled={disabled} | 241 | disabled={disabled} |
237 | data-type="franz-button" | 242 | data-type="franz-button" |
243 | {...(htmlForm && { form: htmlForm })} | ||
238 | > | 244 | > |
239 | {content} | 245 | {content} |
240 | </button> | 246 | </button> |
@@ -259,6 +265,6 @@ class ButtonComponent extends Component<IProps> { | |||
259 | } | 265 | } |
260 | } | 266 | } |
261 | 267 | ||
262 | export const Button = injectStyle(styles, { injectTheme: true })( | 268 | const Button = injectStyle(styles, { injectTheme: true })(ButtonComponent); |
263 | ButtonComponent, | 269 | |
264 | ); | 270 | export default Button; |