@ngx-formly/bootstrap
Version:
ngx-formly is an Angular 2 module which has a Components to help customize and render JavaScript/JSON configured forms. The formly-form Component and the FormlyConfig service are very powerful and bring unmatched maintainability to your application's form
45 lines (44 loc) • 5.12 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Component } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';
import { FieldType } from '@ngx-formly/core';
import { Observable } from 'rxjs';
export class FormlyFieldMultiCheckbox extends FieldType {
/**
* @param {?} model
* @param {?} field
* @return {?}
*/
static createControl(model, field) {
if (field.templateOptions.options instanceof Observable) {
throw new Error(`[Formly Error] You cannot pass an Observable to a multicheckbox yet.`);
}
/** @type {?} */
const controls = field.templateOptions.options.reduce((obj, option) => {
obj[option.key] = new FormControl(model ? model[option.key] : undefined);
return obj;
}, {});
return new FormGroup(controls, field.validators ? field.validators.validation : undefined, field.asyncValidators ? field.asyncValidators.validation : undefined);
}
}
FormlyFieldMultiCheckbox.decorators = [
{ type: Component, args: [{
selector: 'formly-field-multicheckbox',
template: `
<div class="custom-control custom-checkbox" *ngFor="let option of to.options; let i = index;">
<input class="custom-control-input" type="checkbox"
[ ]="id + '_' + i"
[ ]="option.value"
[ ]="formControl.get(option.key)"
[ ]="field">
<label class="custom-control-label" [for]="id + '_' + i">
{{ option.value }}
</label>
</div>
`
}] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGljaGVja2JveC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtZm9ybWx5L2Jvb3RzdHJhcC8iLCJzb3VyY2VzIjpbImxpYi90eXBlcy9tdWx0aWNoZWNrYm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sa0JBQWtCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWlCbEMsTUFBTSwrQkFBZ0MsU0FBUSxTQUFTOzs7Ozs7SUFFckQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFVLEVBQUUsS0FBd0I7UUFDdkQsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sWUFBWSxVQUFVLEVBQUU7WUFDdkQsTUFBTSxJQUFJLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO1NBQ3pGOztRQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNwRSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekUsT0FBTyxHQUFHLENBQUM7U0FDWixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRVAsT0FBTyxJQUFJLFNBQVMsQ0FDbEIsUUFBUSxFQUNSLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQzFELEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQ3JFLENBQUM7S0FDSDs7O1lBaENGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsNEJBQTRCO2dCQUN0QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0dBV1Q7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRUeXBlLCBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtbHktZmllbGQtbXVsdGljaGVja2JveCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgdG8ub3B0aW9uczsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgIDxpbnB1dCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgW2lkXT1cImlkICsgJ18nICsgaVwiXG4gICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2wuZ2V0KG9wdGlvbi5rZXkpXCJcbiAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsXCIgW2Zvcl09XCJpZCArICdfJyArIGlcIj5cbiAgICAgICAge3sgb3B0aW9uLnZhbHVlIH19XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlGaWVsZE11bHRpQ2hlY2tib3ggZXh0ZW5kcyBGaWVsZFR5cGUge1xuXG4gIHN0YXRpYyBjcmVhdGVDb250cm9sKG1vZGVsOiBhbnksIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgaWYgKGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5vcHRpb25zIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBbRm9ybWx5IEVycm9yXSBZb3UgY2Fubm90IHBhc3MgYW4gT2JzZXJ2YWJsZSB0byBhIG11bHRpY2hlY2tib3ggeWV0LmApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2xzID0gZmllbGQudGVtcGxhdGVPcHRpb25zLm9wdGlvbnMucmVkdWNlKChvYmosIG9wdGlvbikgPT4ge1xuICAgICAgb2JqW29wdGlvbi5rZXldID0gbmV3IEZvcm1Db250cm9sKG1vZGVsID8gbW9kZWxbb3B0aW9uLmtleV0gOiB1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LCB7fSk7XG5cbiAgICByZXR1cm4gbmV3IEZvcm1Hcm91cChcbiAgICAgIGNvbnRyb2xzLFxuICAgICAgZmllbGQudmFsaWRhdG9ycyA/IGZpZWxkLnZhbGlkYXRvcnMudmFsaWRhdGlvbiA6IHVuZGVmaW5lZCxcbiAgICAgIGZpZWxkLmFzeW5jVmFsaWRhdG9ycyA/IGZpZWxkLmFzeW5jVmFsaWRhdG9ycy52YWxpZGF0aW9uIDogdW5kZWZpbmVkLFxuICAgICk7XG4gIH1cblxufVxuIl19