UNPKG

corporate-frontend-mithril

Version:

Corporate frontend MithrilJS modules

94 lines (76 loc) 2.06 kB
const strings = require('../../lib/helpers/strings'); const validate = require('../../lib/validate'); module.exports = function() { let _id = `form-checkbox-${strings.random()}`; let _name = ''; let _label = ''; let _style = ''; let _checked = false; let _required = false; let _vFn = null; let _isValidFn = null; let _validationOptions = {}; return { get id() { return _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; }, get checked() { return _checked; }, /** * set checked will update the checkbox checked state, on or off */ set checked(v) { _checked = v ? true : false; }, set required(v) { _required = v ? true : false; _validationOptions.required = _required; }, set vFn(v) { _vFn = v; }, set isValidFn(v) { _isValidFn = v; }, get attrs() { return Object.assign( {'id' : _id}, _name && {'name': _name}, {'type' : 'checkbox'}, {'data-required' : _required}, {'checked' : _checked}, { onclick: (e)=> { _checked = !_checked; if(_vFn) { _vFn({v:e.target.checked}); } if(_isValidFn) { _isValidFn(!validate.exec({ value: e.target.checked, options: _validationOptions, })); } }}, ); }, }; };