Advertisement
Guest User

Untitled

a guest
Oct 21st, 2017
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  
  3. //  bootstrap-form-validation-renderer.js
  4.  
  5. export class BootstrapFormValidationRenderer {
  6.  
  7.   render(instruction) {
  8.     for (let { result, elements } of instruction.unrender) {
  9.       for (let element of elements) {
  10.         this.remove(result, element)
  11.       }
  12.     }
  13.  
  14.     for (let { result, elements } of instruction.render) {
  15.       for (let element of elements) {
  16.         this.add(result, element)
  17.       }
  18.     }
  19.   }
  20.  
  21.   remove(result, element) {
  22.     const formGroup = element.closest('.form-group');
  23.     if (!formGroup) {
  24.       return;
  25.     }
  26.  
  27.     const message = formGroup.querySelector('#bs-validation-message-' + result.id);
  28.     // also works:    const message = formGroup.querySelector(`#bs-validation-message-${result.id}`);
  29.  
  30.     // doesn't work:  const message = formGroup.querySelector('#bs-validation-message-${result.id}');
  31.     // doesn't work:  const message = formGroup.querySelector('"bs-validation-message-" + result.id');
  32.  
  33.     if (message) {
  34.       element.parentNode.removeChild(message);
  35.       if (formGroup.querySelectorAll('.help-block.validation-message').length === 0) {
  36.         formGroup.classList.remove('has-error');
  37.       }
  38.     }
  39.   }
  40.  
  41.   add(result, element) {
  42.     const formGroup = element.closest('.form-group');
  43.     if (result.valid) {
  44.       return;
  45.     }
  46.  
  47.     formGroup.classList.add('has-error');
  48.  
  49.     const message = document.createElement('span');
  50.     message.id = "bs-validation-message-" + result.id;
  51.     message.className = 'help-block validation-message';
  52.     message.textContent = result.message;
  53.     element.parentNode.insertBefore(message, element.nextSibling);
  54.   }
  55.  
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement