diff --git a/src/views/elements.js b/src/views/elements.js index ece2c2859126f14f21f6e9822b40d7a671b320eb..448700d320dbd928297c1e5644e7767e0716a5a1 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); } }