diff --git a/imports/helpers.js b/imports/helpers.js index c38a010..9f0c0f5 100644 --- a/imports/helpers.js +++ b/imports/helpers.js @@ -80,11 +80,12 @@ export function validatePassword(password = '', showMessage, clearMessage){ } }; -export function validateUsername(username, showMessage, clearMessage) { +export function validateUsername(username, showMessage, clearMessage, formState) { if ( username ) { return true; } else { - showMessage(T9n.get("error.usernameRequired"), 'warning', false, 'username'); + const fieldName = (passwordSignupFields() === 'USERNAME_ONLY' || formState === STATES.SIGN_UP) ? 'username' : 'usernameOrEmail'; + showMessage(T9n.get("error.usernameRequired"), 'warning', false, fieldName); return false; } } diff --git a/imports/ui/components/Field.jsx b/imports/ui/components/Field.jsx index 5741dd1..79e0076 100644 --- a/imports/ui/components/Field.jsx +++ b/imports/ui/components/Field.jsx @@ -12,7 +12,7 @@ export class Field extends React.Component { triggerUpdate() { // Trigger an onChange on inital load, to support browser prefilled values. const { onChange } = this.props; - if (this.input && this.input.value) { + if (this.input && onChange) { onChange({ target: { value: this.input.value } }); } } diff --git a/imports/ui/components/Form.jsx b/imports/ui/components/Form.jsx index f43578f..a4301c0 100644 --- a/imports/ui/components/Form.jsx +++ b/imports/ui/components/Form.jsx @@ -34,7 +34,7 @@ export class Form extends React.Component { ref={(ref) => this.form = ref} className={[className, ready ? "ready" : null].join(' ')} className="accounts-ui" - novalidate + noValidate > diff --git a/imports/ui/components/LoginForm.jsx b/imports/ui/components/LoginForm.jsx index a8e05cb..d0d1b9e 100644 --- a/imports/ui/components/LoginForm.jsx +++ b/imports/ui/components/LoginForm.jsx @@ -92,6 +92,7 @@ export class LoginForm extends Tracker.Component { } validateField(field, value) { + const { formState } = this.state; switch(field) { case 'email': return validateEmail(value, @@ -107,6 +108,7 @@ export class LoginForm extends Tracker.Component { return validateUsername(value, this.showMessage.bind(this), this.clearMessage.bind(this), + formState, ); } } @@ -425,7 +427,7 @@ export class LoginForm extends Tracker.Component { setDefaultFieldValues(defaults) { if (typeof defaults !== 'object') { throw new Error('Argument to setDefaultFieldValues is not of type object'); - } else if (localStorage) { + } else if (typeof localStorage !== 'undefined' && localStorage) { localStorage.setItem('accounts_ui', JSON.stringify({ passwordSignupFields: passwordSignupFields(), ...this.getDefaultFieldValues(), @@ -438,7 +440,7 @@ export class LoginForm extends Tracker.Component { * Helper to get field values when switching states in the form. */ getDefaultFieldValues() { - if (localStorage) { + if (typeof localStorage !== 'undefined' && localStorage) { const defaultFieldValues = JSON.parse(localStorage.getItem('accounts_ui') || null); if (defaultFieldValues && defaultFieldValues.passwordSignupFields === passwordSignupFields()) { @@ -451,7 +453,7 @@ export class LoginForm extends Tracker.Component { * Helper to clear field values when signing in, up or out. */ clearDefaultFieldValues() { - if (localStorage) { + if (typeof localStorage !== 'undefined' && localStorage) { localStorage.removeItem('accounts_ui'); } } @@ -906,12 +908,14 @@ export class LoginForm extends Tracker.Component { componentWillMount() { // XXX Check for backwards compatibility. - const container = document.createElement('div'); - ReactDOM.render(, container); - if (container.getElementsByClassName('message').length == 0) { - // Found backwards compatibility issue with 1.3.x - console.warn(`Implementations of Accounts.ui.Field must render message in v1.2.11. - https://github.com/studiointeract/accounts-ui/#deprecations`); + if (Meteor.isClient) { + const container = document.createElement('div'); + ReactDOM.render(, container); + if (container.getElementsByClassName('message').length == 0) { + // Found backwards compatibility issue with 1.3.x + console.warn(`Implementations of Accounts.ui.Field must render message in v1.2.11. + https://github.com/studiointeract/accounts-ui/#deprecations`); + } } }