piceaTech/ember-rapid-forms

View on GitHub
addon/mixins/input-errors.js

Summary

Maintainability
A
0 mins
Test Coverage
import Mixin from '@ember/object/mixin';

export default Mixin.create({
  init() {
    this._super();
    this.set('visibleErrors', {});
  },

  showErrors() {
    this.changeErrorsVisibility(true);
  },

  hideErrors() {
    this.changeErrorsVisibility(false);
  },

  changeErrorsVisibility(visible) {
    const validatableAttributes = this.get('validations.validatableAttributes');
    const dependentValidationKeys = this.get('dependentValidationKeys');

    this.eachAttribute((key) => {
      this.set(`visibleErrors.${key}`, visible);
    });

    this.eachRelationship((key) => {
      this.set(`visibleErrors.${key}`, visible);
    });

    if (validatableAttributes) {
      validatableAttributes.forEach((key) => {
        this.set(`visibleErrors.${key}`, visible);
      });
    }

    if (dependentValidationKeys) {
      Object.keys(dependentValidationKeys).forEach((key) => {
        if (key.indexOf('.') === -1) {
          this.set(`visibleErrors.${key}`, visible);
        }
      });
    }
  }
});