aboutsummaryrefslogtreecommitdiffstats
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/settings/account/AccountDashboard.js86
-rw-r--r--src/components/settings/navigation/SettingsNavigation.js28
-rw-r--r--src/components/settings/services/EditServiceForm.js4
-rw-r--r--src/components/settings/user/EditUserForm.js8
-rw-r--r--src/components/ui/Input.js1
5 files changed, 92 insertions, 35 deletions
diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js
index 2fcfdfc9a..ede519fd6 100644
--- a/src/components/settings/account/AccountDashboard.js
+++ b/src/components/settings/account/AccountDashboard.js
@@ -44,6 +44,10 @@ const messages = defineMessages({
44 id: 'settings.account.accountType.premium', 44 id: 'settings.account.accountType.premium',
45 defaultMessage: '!!!Premium Supporter Account', 45 defaultMessage: '!!!Premium Supporter Account',
46 }, 46 },
47 accountTypeEnterprise: {
48 id: 'settings.account.accountType.enterprise',
49 defaultMessage: '!!!Enterprise Account',
50 },
47 accountEditButton: { 51 accountEditButton: {
48 id: 'settings.account.account.editButton', 52 id: 'settings.account.account.editButton',
49 defaultMessage: '!!!Edit Account', 53 defaultMessage: '!!!Edit Account',
@@ -166,17 +170,21 @@ export default @observer class AccountDashboard extends Component {
166 </h2> 170 </h2>
167 {user.organization && `${user.organization}, `} 171 {user.organization && `${user.organization}, `}
168 {user.email}<br /> 172 {user.email}<br />
169 {!user.isPremium && ( 173 {!user.isEnterprise && !user.isPremium && (
170 <span className="badge badge">{intl.formatMessage(messages.accountTypeBasic)}</span> 174 <span className="badge badge">{intl.formatMessage(messages.accountTypeBasic)}</span>
171 )} 175 )}
172 {user.isPremium && ( 176 {user.isPremium && (
173 <span className="badge badge--premium">{intl.formatMessage(messages.accountTypePremium)}</span> 177 <span className="badge badge--premium">{intl.formatMessage(messages.accountTypePremium)}</span>
174 )} 178 )}
179 {user.isEnterprise && (
180 <span className="badge badge--success">{intl.formatMessage(messages.accountTypeEnterprise)}</span>
181 )}
175 </div> 182 </div>
176 <Link to="/settings/user/edit" className="button"> 183 {!user.isSSO && (
177 {intl.formatMessage(messages.accountEditButton)} 184 <Link to="/settings/user/edit" className="button">
178 </Link> 185 {intl.formatMessage(messages.accountEditButton)}
179 186 </Link>
187 )}
180 {user.emailValidated} 188 {user.emailValidated}
181 </div> 189 </div>
182 </div> 190 </div>
@@ -229,6 +237,33 @@ export default @observer class AccountDashboard extends Component {
229 ) 237 )
230 )} 238 )}
231 239
240 {user.isEnterprise && (
241 <div className="account">
242 <div className="account__box">
243 <h2>{user.company.name}</h2>
244 <p>
245 Technical contact:&nbsp;
246 <Link
247 className="link"
248 target="_blank"
249 to={`mailto:${user.company.contact.technical}?subject=Franz`}
250 >
251 {user.company.contact.technical}
252 </Link>
253 <br />
254 General contact:&nbsp;
255 <Link
256 className="link"
257 target="_blank"
258 to={`mailto:${user.company.contact.default}?subject=Franz`}
259 >
260 {user.company.contact.default}
261 </Link>
262 </p>
263 </div>
264 </div>
265 )}
266
232 {user.isMiner && ( 267 {user.isMiner && (
233 <div className="account franz-form"> 268 <div className="account franz-form">
234 <div className="account__box account__box"> 269 <div className="account__box account__box">
@@ -243,7 +278,7 @@ export default @observer class AccountDashboard extends Component {
243 </div> 278 </div>
244 )} 279 )}
245 280
246 {!user.isPremium && ( 281 {!user.isEnterprise && !user.isPremium && (
247 isLoadingPlans ? ( 282 isLoadingPlans ? (
248 <Loader /> 283 <Loader />
249 ) : ( 284 ) : (
@@ -258,28 +293,29 @@ export default @observer class AccountDashboard extends Component {
258 ) 293 )
259 )} 294 )}
260 295
261 <div className="account franz-form"> 296 {!user.isEnterprise && (
262 <div className="account__box"> 297 <div className="account franz-form">
263 <h2>{intl.formatMessage(messages.headlineDangerZone)}</h2> 298 <div className="account__box">
264 {!isDeleteAccountSuccessful && ( 299 <h2>{intl.formatMessage(messages.headlineDangerZone)}</h2>
265 <div className="account__subscription"> 300 {!isDeleteAccountSuccessful && (
266 <p>{intl.formatMessage(messages.deleteInfo)}</p> 301 <div className="account__subscription">
267 <Button 302 <p>{intl.formatMessage(messages.deleteInfo)}</p>
268 label={intl.formatMessage(messages.deleteAccount)} 303 <Button
269 buttonType="danger" 304 label={intl.formatMessage(messages.deleteAccount)}
270 onClick={() => deleteAccount()} 305 buttonType="danger"
271 loaded={!isLoadingDeleteAccount} 306 onClick={() => deleteAccount()}
272 /> 307 loaded={!isLoadingDeleteAccount}
273 </div> 308 />
274 )} 309 </div>
275 {isDeleteAccountSuccessful && ( 310 )}
276 <p>{intl.formatMessage(messages.deleteEmailSent)}</p> 311 {isDeleteAccountSuccessful && (
277 )} 312 <p>{intl.formatMessage(messages.deleteEmailSent)}</p>
313 )}
314 </div>
278 </div> 315 </div>
279 </div> 316 )}
280 </div> 317 </div>
281 )} 318 )}
282
283 </div> 319 </div>
284 <ReactTooltip place="right" type="dark" effect="solid" /> 320 <ReactTooltip place="right" type="dark" effect="solid" />
285 </div> 321 </div>
diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js
index 66539f324..46b2f82fc 100644
--- a/src/components/settings/navigation/SettingsNavigation.js
+++ b/src/components/settings/navigation/SettingsNavigation.js
@@ -1,6 +1,7 @@
1import React, { Component } from 'react'; 1import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { defineMessages, intlShape } from 'react-intl'; 3import { defineMessages, intlShape } from 'react-intl';
4import { inject, observer } from 'mobx-react';
4 5
5import Link from '../../ui/Link'; 6import Link from '../../ui/Link';
6 7
@@ -31,6 +32,7 @@ const messages = defineMessages({
31 }, 32 },
32}); 33});
33 34
35@inject('stores') @observer
34export default class SettingsNavigation extends Component { 36export default class SettingsNavigation extends Component {
35 static propTypes = { 37 static propTypes = {
36 serviceCount: PropTypes.number.isRequired, 38 serviceCount: PropTypes.number.isRequired,
@@ -42,17 +44,20 @@ export default class SettingsNavigation extends Component {
42 44
43 render() { 45 render() {
44 const { serviceCount } = this.props; 46 const { serviceCount } = this.props;
47 const { features } = this.props.stores.features;
45 const { intl } = this.context; 48 const { intl } = this.context;
46 49
47 return ( 50 return (
48 <div className="settings-navigation"> 51 <div className="settings-navigation">
49 <Link 52 {features.userCanManageServices && (
50 to="/settings/recipes" 53 <Link
51 className="settings-navigation__link" 54 to="/settings/recipes"
52 activeClassName="is-active" 55 className="settings-navigation__link"
53 > 56 activeClassName="is-active"
54 {intl.formatMessage(messages.availableServices)} 57 >
55 </Link> 58 {intl.formatMessage(messages.availableServices)}
59 </Link>
60 )}
56 <Link 61 <Link
57 to="/settings/services" 62 to="/settings/services"
58 className="settings-navigation__link" 63 className="settings-navigation__link"
@@ -92,3 +97,12 @@ export default class SettingsNavigation extends Component {
92 ); 97 );
93 } 98 }
94} 99}
100
101SettingsNavigation.wrappedComponent.propTypes = {
102 stores: PropTypes.shape({
103 features: PropTypes.shape({
104 features: PropTypes.object.isRequired,
105 }).isRequired,
106 }).isRequired,
107};
108
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js
index f9afe4c8d..777a95fcf 100644
--- a/src/components/settings/services/EditServiceForm.js
+++ b/src/components/settings/services/EditServiceForm.js
@@ -106,6 +106,7 @@ export default @observer class EditServiceForm extends Component {
106 return null; 106 return null;
107 }, 107 },
108 user: PropTypes.instanceOf(User).isRequired, 108 user: PropTypes.instanceOf(User).isRequired,
109 userCanManageServices: PropTypes.bool.isRequired,
109 action: PropTypes.string.isRequired, 110 action: PropTypes.string.isRequired,
110 form: PropTypes.instanceOf(Form).isRequired, 111 form: PropTypes.instanceOf(Form).isRequired,
111 onSubmit: PropTypes.func.isRequired, 112 onSubmit: PropTypes.func.isRequired,
@@ -168,6 +169,7 @@ export default @observer class EditServiceForm extends Component {
168 service, 169 service,
169 action, 170 action,
170 user, 171 user,
172 userCanManageServices,
171 form, 173 form,
172 isSaving, 174 isSaving,
173 isDeleting, 175 isDeleting,
@@ -326,7 +328,7 @@ export default @observer class EditServiceForm extends Component {
326 </div> 328 </div>
327 <div className="settings__controls"> 329 <div className="settings__controls">
328 {/* Delete Button */} 330 {/* Delete Button */}
329 {action === 'edit' && deleteButton} 331 {action === 'edit' && userCanManageServices && deleteButton}
330 332
331 {/* Save Button */} 333 {/* Save Button */}
332 {isSaving || isValidatingCustomUrl ? ( 334 {isSaving || isValidatingCustomUrl ? (
diff --git a/src/components/settings/user/EditUserForm.js b/src/components/settings/user/EditUserForm.js
index 6c0305089..b825f844a 100644
--- a/src/components/settings/user/EditUserForm.js
+++ b/src/components/settings/user/EditUserForm.js
@@ -45,6 +45,7 @@ export default @observer class EditServiceForm extends Component {
45 form: PropTypes.instanceOf(Form).isRequired, 45 form: PropTypes.instanceOf(Form).isRequired,
46 onSubmit: PropTypes.func.isRequired, 46 onSubmit: PropTypes.func.isRequired,
47 isSaving: PropTypes.bool.isRequired, 47 isSaving: PropTypes.bool.isRequired,
48 isEnterprise: PropTypes.bool.isRequired,
48 }; 49 };
49 50
50 static defaultProps = { 51 static defaultProps = {
@@ -71,6 +72,7 @@ export default @observer class EditServiceForm extends Component {
71 // user, 72 // user,
72 status, 73 status,
73 form, 74 form,
75 isEnterprise,
74 isSaving, 76 isSaving,
75 } = this.props; 77 } = this.props;
76 const { intl } = this.context; 78 const { intl } = this.context;
@@ -104,8 +106,10 @@ export default @observer class EditServiceForm extends Component {
104 <Input field={form.$('lastname')} /> 106 <Input field={form.$('lastname')} />
105 </div> 107 </div>
106 <Input field={form.$('email')} /> 108 <Input field={form.$('email')} />
107 <Radio field={form.$('accountType')} /> 109 {!isEnterprise && (
108 {form.$('accountType').value === 'company' && ( 110 <Radio field={form.$('accountType')} />
111 )}
112 {!isEnterprise && form.$('accountType').value === 'company' && (
109 <Input field={form.$('organization')} /> 113 <Input field={form.$('organization')} />
110 )} 114 )}
111 <h2>{intl.formatMessage(messages.headlinePassword)}</h2> 115 <h2>{intl.formatMessage(messages.headlinePassword)}</h2>
diff --git a/src/components/ui/Input.js b/src/components/ui/Input.js
index 7fc5b69b0..7bf6e1b00 100644
--- a/src/components/ui/Input.js
+++ b/src/components/ui/Input.js
@@ -96,6 +96,7 @@ export default @observer class Input extends Component {
96 onBlur={field.onBlur} 96 onBlur={field.onBlur}
97 onFocus={field.onFocus} 97 onFocus={field.onFocus}
98 ref={(element) => { this.inputElement = element; }} 98 ref={(element) => { this.inputElement = element; }}
99 disabled={field.disabled}
99 /> 100 />
100 {suffix && ( 101 {suffix && (
101 <span className="franz-form__input-suffix">{suffix}</span> 102 <span className="franz-form__input-suffix">{suffix}</span>