aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/ui
diff options
context:
space:
mode:
authorLibravatar Santhosh C <csesanthosh15@gmail.com>2022-05-18 23:33:07 +0530
committerLibravatar GitHub <noreply@github.com>2022-05-18 13:03:07 -0500
commit3c9f6f1f9d44ac484e0e76f5cd0563f76461ca9b (patch)
treee39a37a28846cda6ca30baf0a74663b97932751e /src/components/ui
parent6.0.0-nightly.40 [skip ci] (diff)
downloadferdium-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.js92
-rw-r--r--src/components/ui/button/index.tsx16
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 @@
1import { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer, inject } from 'mobx-react';
4import Loader from 'react-loader';
5import classnames from 'classnames';
6
7// Can this file be merged into the './/button/index.tsx' file?
8class 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
92export 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
35let buttonTransition: string = 'none'; 36let buttonTransition: string = 'none';
36let loaderContainerTransition: string = 'none'; 37let loaderContainerTransition: string = 'none';
37 38
38if (window && window.matchMedia('(prefers-reduced-motion: no-preference)')) { 39if (
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
262export const Button = injectStyle(styles, { injectTheme: true })( 268const Button = injectStyle(styles, { injectTheme: true })(ButtonComponent);
263 ButtonComponent, 269
264); 270export default Button;