mirror of https://github.com/vector-im/riot-web
				
				
				
			Merge pull request #3071 from matrix-org/t3chguy/authentication_password_field
Switch ugly password boxes to Field or styled inputpull/21833/head
						commit
						9591e6b0d3
					
				|  | @ -55,4 +55,8 @@ limitations under the License. | |||
| 
 | ||||
| .mx_InteractiveAuthEntryComponents_termsPolicy { | ||||
|     display: block; | ||||
| } | ||||
| } | ||||
| 
 | ||||
| .mx_InteractiveAuthEntryComponents_passwordSection { | ||||
|     width: 300px; | ||||
| } | ||||
|  |  | |||
|  | @ -21,3 +21,7 @@ limitations under the License. | |||
| .mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section { | ||||
|     margin-top: 60px; | ||||
| } | ||||
| 
 | ||||
| .mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section .mx_Field { | ||||
|     width: 300px; | ||||
| } | ||||
|  |  | |||
|  | @ -81,16 +81,10 @@ export const PasswordAuthEntry = React.createClass({ | |||
| 
 | ||||
|     getInitialState: function() { | ||||
|         return { | ||||
|             passwordValid: false, | ||||
|             password: "", | ||||
|         }; | ||||
|     }, | ||||
| 
 | ||||
|     focus: function() { | ||||
|         if (this.refs.passwordField) { | ||||
|             this.refs.passwordField.focus(); | ||||
|         } | ||||
|     }, | ||||
| 
 | ||||
|     _onSubmit: function(e) { | ||||
|         e.preventDefault(); | ||||
|         if (this.props.busy) return; | ||||
|  | @ -98,23 +92,21 @@ export const PasswordAuthEntry = React.createClass({ | |||
|         this.props.submitAuthDict({ | ||||
|             type: PasswordAuthEntry.LOGIN_TYPE, | ||||
|             user: this.props.matrixClient.credentials.userId, | ||||
|             password: this.refs.passwordField.value, | ||||
|             password: this.state.password, | ||||
|         }); | ||||
|     }, | ||||
| 
 | ||||
|     _onPasswordFieldChange: function(ev) { | ||||
|         // enable the submit button iff the password is non-empty
 | ||||
|         this.setState({ | ||||
|             passwordValid: Boolean(this.refs.passwordField.value), | ||||
|             password: ev.target.value, | ||||
|         }); | ||||
|     }, | ||||
| 
 | ||||
|     render: function() { | ||||
|         let passwordBoxClass = null; | ||||
| 
 | ||||
|         if (this.props.errorText) { | ||||
|             passwordBoxClass = 'error'; | ||||
|         } | ||||
|         const passwordBoxClass = classnames({ | ||||
|             "error": this.props.errorText, | ||||
|         }); | ||||
| 
 | ||||
|         let submitButtonOrSpinner; | ||||
|         if (this.props.busy) { | ||||
|  | @ -124,7 +116,7 @@ export const PasswordAuthEntry = React.createClass({ | |||
|             submitButtonOrSpinner = ( | ||||
|                 <input type="submit" | ||||
|                     className="mx_Dialog_primary" | ||||
|                     disabled={!this.state.passwordValid} | ||||
|                     disabled={!this.state.password} | ||||
|                 /> | ||||
|             ); | ||||
|         } | ||||
|  | @ -138,17 +130,21 @@ export const PasswordAuthEntry = React.createClass({ | |||
|             ); | ||||
|         } | ||||
| 
 | ||||
|         const Field = sdk.getComponent('elements.Field'); | ||||
| 
 | ||||
|         return ( | ||||
|             <div> | ||||
|                 <p>{ _t("To continue, please enter your password.") }</p> | ||||
|                 <form onSubmit={this._onSubmit}> | ||||
|                     <label htmlFor="passwordField">{ _t("Password:") }</label> | ||||
|                     <input | ||||
|                         name="passwordField" | ||||
|                         ref="passwordField" | ||||
|                 <form onSubmit={this._onSubmit} className="mx_InteractiveAuthEntryComponents_passwordSection"> | ||||
|                     <Field | ||||
|                         id="mx_InteractiveAuthEntryComponents_password" | ||||
|                         className={passwordBoxClass} | ||||
|                         onChange={this._onPasswordFieldChange} | ||||
|                         type="password" | ||||
|                         name="passwordField" | ||||
|                         label={_t('Password')} | ||||
|                         autoFocus={true} | ||||
|                         value={this.state.password} | ||||
|                         onChange={this._onPasswordFieldChange} | ||||
|                     /> | ||||
|                     <div className="mx_button_row"> | ||||
|                         { submitButtonOrSpinner } | ||||
|  |  | |||
|  | @ -36,7 +36,7 @@ export default class DeactivateAccountDialog extends React.Component { | |||
|         this._onEraseFieldChange = this._onEraseFieldChange.bind(this); | ||||
| 
 | ||||
|         this.state = { | ||||
|             confirmButtonEnabled: false, | ||||
|             password: "", | ||||
|             busy: false, | ||||
|             shouldErase: false, | ||||
|             errStr: null, | ||||
|  | @ -45,7 +45,7 @@ export default class DeactivateAccountDialog extends React.Component { | |||
| 
 | ||||
|     _onPasswordFieldChange(ev) { | ||||
|         this.setState({ | ||||
|             confirmButtonEnabled: Boolean(ev.target.value), | ||||
|             password: ev.target.value, | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|  | @ -104,7 +104,7 @@ export default class DeactivateAccountDialog extends React.Component { | |||
|         } | ||||
| 
 | ||||
|         const okLabel = this.state.busy ? <Loader /> : _t('Deactivate Account'); | ||||
|         const okEnabled = this.state.confirmButtonEnabled && !this.state.busy; | ||||
|         const okEnabled = this.state.password && !this.state.busy; | ||||
| 
 | ||||
|         let cancelButton = null; | ||||
|         if (!this.state.busy) { | ||||
|  | @ -113,6 +113,8 @@ export default class DeactivateAccountDialog extends React.Component { | |||
|             </button>; | ||||
|         } | ||||
| 
 | ||||
|         const Field = sdk.getComponent('elements.Field'); | ||||
| 
 | ||||
|         return ( | ||||
|             <BaseDialog className="mx_DeactivateAccountDialog" | ||||
|                 onFinished={this.props.onFinished} | ||||
|  | @ -167,10 +169,12 @@ export default class DeactivateAccountDialog extends React.Component { | |||
|                         </p> | ||||
| 
 | ||||
|                         <p>{ _t("To continue, please enter your password:") }</p> | ||||
|                         <input | ||||
|                         <Field | ||||
|                             id="mx_DeactivateAccountDialog_password" | ||||
|                             type="password" | ||||
|                             placeholder={_t("password")} | ||||
|                             label={_t('Password')} | ||||
|                             onChange={this._onPasswordFieldChange} | ||||
|                             value={this.state.password} | ||||
|                             ref={(e) => {this._passwordField = e;}} | ||||
|                             className={passwordBoxClass} | ||||
|                         /> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 J. Ryan Stinnett
						J. Ryan Stinnett