UNPKG

corporate-frontend-mithril

Version:

Corporate frontend MithrilJS modules

110 lines (89 loc) 2.43 kB
const strings = require('../../lib/helpers/strings'); const validate = require('../../lib/validate'); module.exports = function() { let _id = `text-input-${strings.random()}`; let _name = ''; let _label = ''; let _style = ''; let _validMsg = ''; let _type = 'text'; let _presets = ''; let _required = false; let _vFn = null; let _isValidFn = null; let _validationOptions = {}; return { get id() { return _id; }, set id(v) { _id = v ? v : _id; }, get name() { return _name; }, set name(v) { _name = v; }, get label() { return _label; }, set label(v) { _label = v; }, get style() { return _style ? _style : ''; }, set style(v) { _style = v; }, set type(v='text') { _type = v; }, set required(v) { _required = v ? true : false; _validationOptions.required = _required; }, set presets(v) { _presets = v; _validationOptions.presets = v; }, set vFn(v) { _vFn = v; }, set isValidFn(v) { _isValidFn = v; }, get attrs() { return Object.assign( {'id' : _id}, {'placeholder' : _label}, _name && {'name': _name}, {'data-type' : _type}, {'data-required' : _required}, _presets && {'data-presets' : _presets}, { onkeyup: (e)=> { if(_vFn) { _vFn({v:e.target.value}); } if(_isValidFn) { _validMsg = validate.exec({ value: e.target.value, options: _validationOptions, }); _isValidFn(!_validMsg); } }}, ); }, get tooltipAttrs() { return { 'data-balloon': _validMsg || '', 'data-balloon-pos': 'up', }; }, get tooltipState() { return _validMsg ? '.b-tooltip--force-show' : ''; }, }; };