UNPKG

@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
/** * @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]="id + '_' + i" [value]="option.value" [formControl]="formControl.get(option.key)" [formlyAttributes]="field"> <label class="custom-control-label" [for]="id + '_' + i"> {{ option.value }} </label> </div> ` }] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGljaGVja2JveC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtZm9ybWx5L2Jvb3RzdHJhcC8iLCJzb3VyY2VzIjpbImxpYi90eXBlcy9tdWx0aWNoZWNrYm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sa0JBQWtCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWlCbEMsTUFBTSwrQkFBZ0MsU0FBUSxTQUFTOzs7Ozs7SUFFckQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFVLEVBQUUsS0FBd0I7UUFDdkQsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sWUFBWSxVQUFVLEVBQUU7WUFDdkQsTUFBTSxJQUFJLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO1NBQ3pGOztRQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNwRSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekUsT0FBTyxHQUFHLENBQUM7U0FDWixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRVAsT0FBTyxJQUFJLFNBQVMsQ0FDbEIsUUFBUSxFQUNSLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQzFELEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQ3JFLENBQUM7S0FDSDs7O1lBaENGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsNEJBQTRCO2dCQUN0QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0dBV1Q7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRUeXBlLCBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtbHktZmllbGQtbXVsdGljaGVja2JveCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1jaGVja2JveFwiICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgdG8ub3B0aW9uczsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgIDxpbnB1dCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgW2lkXT1cImlkICsgJ18nICsgaVwiXG4gICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2wuZ2V0KG9wdGlvbi5rZXkpXCJcbiAgICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsXCIgW2Zvcl09XCJpZCArICdfJyArIGlcIj5cbiAgICAgICAge3sgb3B0aW9uLnZhbHVlIH19XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlGaWVsZE11bHRpQ2hlY2tib3ggZXh0ZW5kcyBGaWVsZFR5cGUge1xuXG4gIHN0YXRpYyBjcmVhdGVDb250cm9sKG1vZGVsOiBhbnksIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgaWYgKGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5vcHRpb25zIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBbRm9ybWx5IEVycm9yXSBZb3UgY2Fubm90IHBhc3MgYW4gT2JzZXJ2YWJsZSB0byBhIG11bHRpY2hlY2tib3ggeWV0LmApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2xzID0gZmllbGQudGVtcGxhdGVPcHRpb25zLm9wdGlvbnMucmVkdWNlKChvYmosIG9wdGlvbikgPT4ge1xuICAgICAgb2JqW29wdGlvbi5rZXldID0gbmV3IEZvcm1Db250cm9sKG1vZGVsID8gbW9kZWxbb3B0aW9uLmtleV0gOiB1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LCB7fSk7XG5cbiAgICByZXR1cm4gbmV3IEZvcm1Hcm91cChcbiAgICAgIGNvbnRyb2xzLFxuICAgICAgZmllbGQudmFsaWRhdG9ycyA/IGZpZWxkLnZhbGlkYXRvcnMudmFsaWRhdGlvbiA6IHVuZGVmaW5lZCxcbiAgICAgIGZpZWxkLmFzeW5jVmFsaWRhdG9ycyA/IGZpZWxkLmFzeW5jVmFsaWRhdG9ycy52YWxpZGF0aW9uIDogdW5kZWZpbmVkLFxuICAgICk7XG4gIH1cblxufVxuIl19