From d3120ffe40b87f1bfb9e1b112de3a58854e9a91b Mon Sep 17 00:00:00 2001
From: Hermann Blum <hermannsblum@yahoo.de>
Date: Sat, 17 Mar 2018 18:01:25 +0100
Subject: [PATCH] input field connected to validation

---
 src/views/elements.js | 29 ++++++++++-------------------
 1 file changed, 10 insertions(+), 19 deletions(-)

diff --git a/src/views/elements.js b/src/views/elements.js
index ece2c28..448700d 100644
--- a/src/views/elements.js
+++ b/src/views/elements.js
@@ -1,32 +1,23 @@
 import m from 'mithril';
-import { IconButton } from 'polythene-mithril';
+import { IconButton, TextField } from 'polythene-mithril';
 
-export class inputGroup {
-  constructor(vnode) {
+export class textInput {
+  constructor({ attrs: { getErrors } }) {
     // Link the error-getting function from the binding
     this.getErrors = () => [];
-    if (vnode.attrs.getErrors) {
-      this.getErrors = vnode.attrs.getErrors;
+    if (getErrors) {
+      this.getErrors = getErrors;
     }
   }
 
-  view(vnode) {
+  view({ attrs }) {
     // set display-settings accoridng to error-state
-    let errorField = null;
-    let groupClasses = vnode.attrs.classes ? vnode.attrs.classes : '';
     const errors = this.getErrors();
-    if (errors.length > 0) {
-      errorField = m('span.help-block', `Error: ${errors.join(', ')}`);
-      groupClasses += ' has-error';
-    }
 
-    return m('div.form-group', { class: groupClasses }, [
-      m(`label[for=${vnode.attrs.name}]`, vnode.attrs.title),
-      m(`input[name=${vnode.attrs.name}][id=${vnode.attrs.name}].form-control`, {
-        value: vnode.attrs.value, onchange: vnode.attrs.onchange,
-      }),
-      errorField,
-    ]);
+    const attributes = Object.assign({}, attrs);
+    attributes.valid = errors.length > 0;
+    attributes.error = errors.join(', ');
+    return m(TextField, attributes);
   }
 }
 
-- 
GitLab