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