aurelia-form
Version:
Makes working with forms just a tad more pleasant.
85 lines (53 loc) • 1.7 kB
JavaScript
import {bindable, customElement, bindingMode, inject} from 'aurelia-framework';
import {resolvedView} from 'aurelia-view-manager';
import {Configuration} from 'aurelia-config';
('spoonx/form', 'form-group')
('form-group')
(Configuration.of('aurelia-form'))
export class FormGroup {
({defaultBindingMode: bindingMode.twoWay}) value = null;
classes;
elementClasses = this.config.defaultElementClasses;
labelClasses = this.config.defaultLabelClasses;
element = 'input';
placeholder = '';
state;
name;
label;
error;
message;
type = 'text';
behavior;
readonly = false;
disabled = false;
autofocus;
required;
options;
multiple = false;
selectOptions = [];
optionLabel;
translate;
config;
constructor(config) {
this.config = config;
this.behavior = config.defaultBehavior;
}
is(oneOf, then, source) {
if (typeof oneOf === 'string') {
oneOf = oneOf.split(',').map(one => one.trim());
}
source = source || this.element;
then = then || true;
return oneOf.indexOf(source) > -1 ? then : false;
}
byPattern(pattern, defaults, overrides = '') {
let regex = new RegExp(pattern, 'gi');
if (regex.test(overrides)) {
defaults = defaults.replace(regex, '');
}
return `${defaults} ${overrides}`.replace(' ', ' ').trim();
}
when(conditional, value, otherwise) {
return conditional ? value : (otherwise || '');
}
}