2
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2025-09-06 10:50:21 +08:00
discourse/app/assets/javascripts/discourse/mixins/user-fields-validation.js.es6
Arpit Jalan b9c94aa234 FEATURE: add required user fields to invite accept form
UX: make "accept invitation" page consistent with sign up modal
2017-06-12 20:43:07 +05:30

35 lines
1 KiB
JavaScript

import InputValidation from 'discourse/models/input-validation';
import { on, default as computed } from 'ember-addons/ember-computed-decorators';
export default Ember.Mixin.create({
@on('init')
_createUserFields() {
if (!this.site) { return; }
let userFields = this.site.get('user_fields');
if (userFields) {
userFields = _.sortBy(userFields, 'position').map(function(f) {
return Ember.Object.create({ value: null, field: f });
});
}
this.set('userFields', userFields);
},
// Validate required fields
@computed('userFields.@each.value')
userFieldsValidation() {
let userFields = this.get('userFields');
if (userFields) { userFields = userFields.filterBy('field.required'); }
if (!Ember.isEmpty(userFields)) {
const anyEmpty = userFields.any(uf => {
const val = uf.get('value');
return !val || Ember.isEmpty(val);
});
if (anyEmpty) {
return InputValidation.create({ failed: true });
}
}
return InputValidation.create({ ok: true });
}
});