diff options
Diffstat (limited to 'src/components')
-rw-r--r-- | src/components/settings/account/AccountDashboard.js | 86 | ||||
-rw-r--r-- | src/components/settings/navigation/SettingsNavigation.js | 28 | ||||
-rw-r--r-- | src/components/settings/services/EditServiceForm.js | 2 | ||||
-rw-r--r-- | src/components/settings/user/EditUserForm.js | 8 | ||||
-rw-r--r-- | src/components/ui/Input.js | 1 |
5 files changed, 90 insertions, 35 deletions
diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js index 4992f0913..e6ccdaac7 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', |
@@ -167,17 +171,21 @@ export default class AccountDashboard extends Component { | |||
167 | </h2> | 171 | </h2> |
168 | {user.organization && `${user.organization}, `} | 172 | {user.organization && `${user.organization}, `} |
169 | {user.email}<br /> | 173 | {user.email}<br /> |
170 | {!user.isPremium && ( | 174 | {!user.isEnterprise && !user.isPremium && ( |
171 | <span className="badge badge">{intl.formatMessage(messages.accountTypeBasic)}</span> | 175 | <span className="badge badge">{intl.formatMessage(messages.accountTypeBasic)}</span> |
172 | )} | 176 | )} |
173 | {user.isPremium && ( | 177 | {user.isPremium && ( |
174 | <span className="badge badge--premium">{intl.formatMessage(messages.accountTypePremium)}</span> | 178 | <span className="badge badge--premium">{intl.formatMessage(messages.accountTypePremium)}</span> |
175 | )} | 179 | )} |
180 | {user.isEnterprise && ( | ||
181 | <span className="badge badge--success">{intl.formatMessage(messages.accountTypeEnterprise)}</span> | ||
182 | )} | ||
176 | </div> | 183 | </div> |
177 | <Link to="/settings/user/edit" className="button"> | 184 | {!user.isSSO && ( |
178 | {intl.formatMessage(messages.accountEditButton)} | 185 | <Link to="/settings/user/edit" className="button"> |
179 | </Link> | 186 | {intl.formatMessage(messages.accountEditButton)} |
180 | 187 | </Link> | |
188 | )} | ||
181 | {user.emailValidated} | 189 | {user.emailValidated} |
182 | </div> | 190 | </div> |
183 | </div> | 191 | </div> |
@@ -230,6 +238,33 @@ export default class AccountDashboard extends Component { | |||
230 | ) | 238 | ) |
231 | )} | 239 | )} |
232 | 240 | ||
241 | {user.isEnterprise && ( | ||
242 | <div className="account"> | ||
243 | <div className="account__box"> | ||
244 | <h2>{user.company.name}</h2> | ||
245 | <p> | ||
246 | Technical contact: | ||
247 | <Link | ||
248 | className="link" | ||
249 | target="_blank" | ||
250 | to={`mailto:${user.company.contact.technical}?subject=Franz`} | ||
251 | > | ||
252 | {user.company.contact.technical} | ||
253 | </Link> | ||
254 | <br /> | ||
255 | General contact: | ||
256 | <Link | ||
257 | className="link" | ||
258 | target="_blank" | ||
259 | to={`mailto:${user.company.contact.default}?subject=Franz`} | ||
260 | > | ||
261 | {user.company.contact.default} | ||
262 | </Link> | ||
263 | </p> | ||
264 | </div> | ||
265 | </div> | ||
266 | )} | ||
267 | |||
233 | {user.isMiner && ( | 268 | {user.isMiner && ( |
234 | <div className="account franz-form"> | 269 | <div className="account franz-form"> |
235 | <div className="account__box account__box"> | 270 | <div className="account__box account__box"> |
@@ -244,7 +279,7 @@ export default class AccountDashboard extends Component { | |||
244 | </div> | 279 | </div> |
245 | )} | 280 | )} |
246 | 281 | ||
247 | {!user.isPremium && ( | 282 | {!user.isEnterprise && !user.isPremium && ( |
248 | isLoadingPlans ? ( | 283 | isLoadingPlans ? ( |
249 | <Loader /> | 284 | <Loader /> |
250 | ) : ( | 285 | ) : ( |
@@ -259,28 +294,29 @@ export default class AccountDashboard extends Component { | |||
259 | ) | 294 | ) |
260 | )} | 295 | )} |
261 | 296 | ||
262 | <div className="account franz-form"> | 297 | {!user.isEnterprise && ( |
263 | <div className="account__box"> | 298 | <div className="account franz-form"> |
264 | <h2>{intl.formatMessage(messages.headlineDangerZone)}</h2> | 299 | <div className="account__box"> |
265 | {!isDeleteAccountSuccessful && ( | 300 | <h2>{intl.formatMessage(messages.headlineDangerZone)}</h2> |
266 | <div className="account__subscription"> | 301 | {!isDeleteAccountSuccessful && ( |
267 | <p>{intl.formatMessage(messages.deleteInfo)}</p> | 302 | <div className="account__subscription"> |
268 | <Button | 303 | <p>{intl.formatMessage(messages.deleteInfo)}</p> |
269 | label={intl.formatMessage(messages.deleteAccount)} | 304 | <Button |
270 | buttonType="danger" | 305 | label={intl.formatMessage(messages.deleteAccount)} |
271 | onClick={() => deleteAccount()} | 306 | buttonType="danger" |
272 | loaded={!isLoadingDeleteAccount} | 307 | onClick={() => deleteAccount()} |
273 | /> | 308 | loaded={!isLoadingDeleteAccount} |
274 | </div> | 309 | /> |
275 | )} | 310 | </div> |
276 | {isDeleteAccountSuccessful && ( | 311 | )} |
277 | <p>{intl.formatMessage(messages.deleteEmailSent)}</p> | 312 | {isDeleteAccountSuccessful && ( |
278 | )} | 313 | <p>{intl.formatMessage(messages.deleteEmailSent)}</p> |
314 | )} | ||
315 | </div> | ||
279 | </div> | 316 | </div> |
280 | </div> | 317 | )} |
281 | </div> | 318 | </div> |
282 | )} | 319 | )} |
283 | |||
284 | </div> | 320 | </div> |
285 | <ReactTooltip place="right" type="dark" effect="solid" /> | 321 | <ReactTooltip place="right" type="dark" effect="solid" /> |
286 | </div> | 322 | </div> |
diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js index 66539f324..620f09189 100644 --- a/src/components/settings/navigation/SettingsNavigation.js +++ b/src/components/settings/navigation/SettingsNavigation.js | |||
@@ -1,6 +1,7 @@ | |||
1 | import React, { Component } from 'react'; | 1 | import React, { Component } from 'react'; |
2 | import PropTypes from 'prop-types'; | 2 | import PropTypes from 'prop-types'; |
3 | import { defineMessages, intlShape } from 'react-intl'; | 3 | import { defineMessages, intlShape } from 'react-intl'; |
4 | import { inject, observer } from 'mobx-react'; | ||
4 | 5 | ||
5 | import Link from '../../ui/Link'; | 6 | import Link from '../../ui/Link'; |
6 | 7 | ||
@@ -31,6 +32,7 @@ const messages = defineMessages({ | |||
31 | }, | 32 | }, |
32 | }); | 33 | }); |
33 | 34 | ||
35 | @inject('stores') @observer | ||
34 | export default class SettingsNavigation extends Component { | 36 | export 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 { data: user } = this.props.stores.user; | ||
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 | {user.clientSettings && user.clientSettings.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 | |||
101 | SettingsNavigation.wrappedComponent.propTypes = { | ||
102 | stores: PropTypes.shape({ | ||
103 | user: PropTypes.shape({ | ||
104 | data: 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 f6f2df2f3..e23dfa9f6 100644 --- a/src/components/settings/services/EditServiceForm.js +++ b/src/components/settings/services/EditServiceForm.js | |||
@@ -324,7 +324,7 @@ export default class EditServiceForm extends Component { | |||
324 | </div> | 324 | </div> |
325 | <div className="settings__controls"> | 325 | <div className="settings__controls"> |
326 | {/* Delete Button */} | 326 | {/* Delete Button */} |
327 | {action === 'edit' && deleteButton} | 327 | {action === 'edit' && user.clientSettings.userCanManageServices && deleteButton} |
328 | 328 | ||
329 | {/* Save Button */} | 329 | {/* Save Button */} |
330 | {isSaving || isValidatingCustomUrl ? ( | 330 | {isSaving || isValidatingCustomUrl ? ( |
diff --git a/src/components/settings/user/EditUserForm.js b/src/components/settings/user/EditUserForm.js index f36887fc2..1ac8be80f 100644 --- a/src/components/settings/user/EditUserForm.js +++ b/src/components/settings/user/EditUserForm.js | |||
@@ -46,6 +46,7 @@ export default class EditServiceForm extends Component { | |||
46 | form: PropTypes.instanceOf(Form).isRequired, | 46 | form: PropTypes.instanceOf(Form).isRequired, |
47 | onSubmit: PropTypes.func.isRequired, | 47 | onSubmit: PropTypes.func.isRequired, |
48 | isSaving: PropTypes.bool.isRequired, | 48 | isSaving: PropTypes.bool.isRequired, |
49 | isEnterprise: PropTypes.bool.isRequired, | ||
49 | }; | 50 | }; |
50 | 51 | ||
51 | static defaultProps = { | 52 | static defaultProps = { |
@@ -72,6 +73,7 @@ export default class EditServiceForm extends Component { | |||
72 | // user, | 73 | // user, |
73 | status, | 74 | status, |
74 | form, | 75 | form, |
76 | isEnterprise, | ||
75 | isSaving, | 77 | isSaving, |
76 | } = this.props; | 78 | } = this.props; |
77 | const { intl } = this.context; | 79 | const { intl } = this.context; |
@@ -105,8 +107,10 @@ export default class EditServiceForm extends Component { | |||
105 | <Input field={form.$('lastname')} /> | 107 | <Input field={form.$('lastname')} /> |
106 | </div> | 108 | </div> |
107 | <Input field={form.$('email')} /> | 109 | <Input field={form.$('email')} /> |
108 | <Radio field={form.$('accountType')} /> | 110 | {!isEnterprise && ( |
109 | {form.$('accountType').value === 'company' && ( | 111 | <Radio field={form.$('accountType')} /> |
112 | )} | ||
113 | {!isEnterprise && form.$('accountType').value === 'company' && ( | ||
110 | <Input field={form.$('organization')} /> | 114 | <Input field={form.$('organization')} /> |
111 | )} | 115 | )} |
112 | <h2>{intl.formatMessage(messages.headlinePassword)}</h2> | 116 | <h2>{intl.formatMessage(messages.headlinePassword)}</h2> |
diff --git a/src/components/ui/Input.js b/src/components/ui/Input.js index 0bb9f23bf..69c95702b 100644 --- a/src/components/ui/Input.js +++ b/src/components/ui/Input.js | |||
@@ -97,6 +97,7 @@ export default class Input extends Component { | |||
97 | onBlur={field.onBlur} | 97 | onBlur={field.onBlur} |
98 | onFocus={field.onFocus} | 98 | onFocus={field.onFocus} |
99 | ref={(element) => { this.inputElement = element; }} | 99 | ref={(element) => { this.inputElement = element; }} |
100 | disabled={field.disabled} | ||
100 | /> | 101 | /> |
101 | {suffix && ( | 102 | {suffix && ( |
102 | <span className="franz-form__input-suffix">{suffix}</span> | 103 | <span className="franz-form__input-suffix">{suffix}</span> |