Show busy indicator, focus first field (#4997)
This commit is contained in:
parent
1879dbca8a
commit
5df3f5d136
@ -60,8 +60,11 @@ class PasswordManager extends Component {
|
||||
store = new Store(this.context.api, this.props.account);
|
||||
|
||||
render () {
|
||||
const { busy } = this.store;
|
||||
|
||||
return (
|
||||
<Portal
|
||||
busy={ busy }
|
||||
buttons={ this.renderDialogActions() }
|
||||
onClose={ this.onClose }
|
||||
open
|
||||
@ -133,8 +136,6 @@ class PasswordManager extends Component {
|
||||
}
|
||||
|
||||
renderPage () {
|
||||
const { busy, isRepeatValid, newPassword, passwordHint } = this.store;
|
||||
|
||||
return (
|
||||
<Tabs
|
||||
inkBarStyle={ TABS_INKBAR_STYLE }
|
||||
@ -149,29 +150,7 @@ class PasswordManager extends Component {
|
||||
}
|
||||
onActive={ this.onActivateTestTab }
|
||||
>
|
||||
<Form className={ styles.form }>
|
||||
<div>
|
||||
<Input
|
||||
disabled={ busy }
|
||||
hint={
|
||||
<FormattedMessage
|
||||
id='passwordChange.testPassword.hint'
|
||||
defaultMessage='your account password'
|
||||
/>
|
||||
}
|
||||
label={
|
||||
<FormattedMessage
|
||||
id='passwordChange.testPassword.label'
|
||||
defaultMessage='password'
|
||||
/>
|
||||
}
|
||||
onChange={ this.onEditTestPassword }
|
||||
onSubmit={ this.testPassword }
|
||||
submitOnBlur={ false }
|
||||
type='password'
|
||||
/>
|
||||
</div>
|
||||
</Form>
|
||||
{ this.renderTabTest() }
|
||||
</Tab>
|
||||
<Tab
|
||||
label={
|
||||
@ -182,103 +161,151 @@ class PasswordManager extends Component {
|
||||
}
|
||||
onActive={ this.onActivateChangeTab }
|
||||
>
|
||||
<Form className={ styles.form }>
|
||||
<div>
|
||||
<Input
|
||||
disabled={ busy }
|
||||
hint={
|
||||
<FormattedMessage
|
||||
id='passwordChange.currentPassword.hint'
|
||||
defaultMessage='your current password for this account'
|
||||
/>
|
||||
}
|
||||
label={
|
||||
<FormattedMessage
|
||||
id='passwordChange.currentPassword.label'
|
||||
defaultMessage='current password'
|
||||
/>
|
||||
}
|
||||
onChange={ this.onEditCurrentPassword }
|
||||
type='password'
|
||||
/>
|
||||
<Input
|
||||
disabled={ busy }
|
||||
hint={
|
||||
<FormattedMessage
|
||||
id='passwordChange.passwordHint.hint'
|
||||
defaultMessage='hint for the new password'
|
||||
/>
|
||||
}
|
||||
label={
|
||||
<FormattedMessage
|
||||
id='passwordChange.passwordHint.label'
|
||||
defaultMessage='(optional) new password hint'
|
||||
/>
|
||||
}
|
||||
onChange={ this.onEditNewPasswordHint }
|
||||
value={ passwordHint }
|
||||
/>
|
||||
<div className={ styles.passwords }>
|
||||
<div className={ styles.password }>
|
||||
<Input
|
||||
disabled={ busy }
|
||||
hint={
|
||||
<FormattedMessage
|
||||
id='passwordChange.newPassword.hint'
|
||||
defaultMessage='the new password for this account'
|
||||
/>
|
||||
}
|
||||
label={
|
||||
<FormattedMessage
|
||||
id='passwordChange.newPassword.label'
|
||||
defaultMessage='new password'
|
||||
/>
|
||||
}
|
||||
onChange={ this.onEditNewPassword }
|
||||
onSubmit={ this.changePassword }
|
||||
submitOnBlur={ false }
|
||||
type='password'
|
||||
/>
|
||||
</div>
|
||||
<div className={ styles.password }>
|
||||
<Input
|
||||
disabled={ busy }
|
||||
error={
|
||||
isRepeatValid
|
||||
? null
|
||||
: <FormattedMessage
|
||||
id='passwordChange.repeatPassword.error'
|
||||
defaultMessage='the supplied passwords do not match'
|
||||
/>
|
||||
}
|
||||
hint={
|
||||
<FormattedMessage
|
||||
id='passwordChange.repeatPassword.hint'
|
||||
defaultMessage='repeat the new password for this account'
|
||||
/>
|
||||
}
|
||||
label={
|
||||
<FormattedMessage
|
||||
id='passwordChange.repeatPassword.label'
|
||||
defaultMessage='repeat new password'
|
||||
/>
|
||||
}
|
||||
onChange={ this.onEditNewPasswordRepeat }
|
||||
onSubmit={ this.changePassword }
|
||||
submitOnBlur={ false }
|
||||
type='password'
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<PasswordStrength input={ newPassword } />
|
||||
</div>
|
||||
</Form>
|
||||
{ this.renderTabChange() }
|
||||
</Tab>
|
||||
</Tabs>
|
||||
);
|
||||
}
|
||||
|
||||
renderTabTest () {
|
||||
const { actionTab, busy } = this.store;
|
||||
|
||||
if (actionTab !== TEST_ACTION) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<Form className={ styles.form }>
|
||||
<div>
|
||||
<Input
|
||||
autoFocus
|
||||
disabled={ busy }
|
||||
hint={
|
||||
<FormattedMessage
|
||||
id='passwordChange.testPassword.hint'
|
||||
defaultMessage='your account password'
|
||||
/>
|
||||
}
|
||||
label={
|
||||
<FormattedMessage
|
||||
id='passwordChange.testPassword.label'
|
||||
defaultMessage='password'
|
||||
/>
|
||||
}
|
||||
onChange={ this.onEditTestPassword }
|
||||
onSubmit={ this.testPassword }
|
||||
submitOnBlur={ false }
|
||||
type='password'
|
||||
/>
|
||||
</div>
|
||||
</Form>
|
||||
);
|
||||
}
|
||||
|
||||
renderTabChange () {
|
||||
const { actionTab, busy, isRepeatValid, newPassword, passwordHint } = this.store;
|
||||
|
||||
if (actionTab !== CHANGE_ACTION) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<Form className={ styles.form }>
|
||||
<div>
|
||||
<Input
|
||||
autoFocus
|
||||
disabled={ busy }
|
||||
hint={
|
||||
<FormattedMessage
|
||||
id='passwordChange.currentPassword.hint'
|
||||
defaultMessage='your current password for this account'
|
||||
/>
|
||||
}
|
||||
label={
|
||||
<FormattedMessage
|
||||
id='passwordChange.currentPassword.label'
|
||||
defaultMessage='current password'
|
||||
/>
|
||||
}
|
||||
onChange={ this.onEditCurrentPassword }
|
||||
type='password'
|
||||
/>
|
||||
<Input
|
||||
disabled={ busy }
|
||||
hint={
|
||||
<FormattedMessage
|
||||
id='passwordChange.passwordHint.hint'
|
||||
defaultMessage='hint for the new password'
|
||||
/>
|
||||
}
|
||||
label={
|
||||
<FormattedMessage
|
||||
id='passwordChange.passwordHint.label'
|
||||
defaultMessage='(optional) new password hint'
|
||||
/>
|
||||
}
|
||||
onChange={ this.onEditNewPasswordHint }
|
||||
value={ passwordHint }
|
||||
/>
|
||||
<div className={ styles.passwords }>
|
||||
<div className={ styles.password }>
|
||||
<Input
|
||||
disabled={ busy }
|
||||
hint={
|
||||
<FormattedMessage
|
||||
id='passwordChange.newPassword.hint'
|
||||
defaultMessage='the new password for this account'
|
||||
/>
|
||||
}
|
||||
label={
|
||||
<FormattedMessage
|
||||
id='passwordChange.newPassword.label'
|
||||
defaultMessage='new password'
|
||||
/>
|
||||
}
|
||||
onChange={ this.onEditNewPassword }
|
||||
onSubmit={ this.changePassword }
|
||||
submitOnBlur={ false }
|
||||
type='password'
|
||||
/>
|
||||
</div>
|
||||
<div className={ styles.password }>
|
||||
<Input
|
||||
disabled={ busy }
|
||||
error={
|
||||
isRepeatValid
|
||||
? null
|
||||
: <FormattedMessage
|
||||
id='passwordChange.repeatPassword.error'
|
||||
defaultMessage='the supplied passwords do not match'
|
||||
/>
|
||||
}
|
||||
hint={
|
||||
<FormattedMessage
|
||||
id='passwordChange.repeatPassword.hint'
|
||||
defaultMessage='repeat the new password for this account'
|
||||
/>
|
||||
}
|
||||
label={
|
||||
<FormattedMessage
|
||||
id='passwordChange.repeatPassword.label'
|
||||
defaultMessage='repeat new password'
|
||||
/>
|
||||
}
|
||||
onChange={ this.onEditNewPasswordRepeat }
|
||||
onSubmit={ this.changePassword }
|
||||
submitOnBlur={ false }
|
||||
type='password'
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<PasswordStrength input={ newPassword } />
|
||||
</div>
|
||||
</Form>
|
||||
);
|
||||
}
|
||||
|
||||
renderDialogActions () {
|
||||
const { actionTab, busy, isRepeatValid } = this.store;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user