UNPKG

ngx-nebular-formly

Version:

Ngx Formly integration for Nebular UI

68 lines 9.77 kB
import { Pipe } from '@angular/core'; import { Observable, of as observableOf } from 'rxjs'; import { map } from 'rxjs/operators'; export class FormlySelectOptionsPipe { transform(options, field) { if (!(options instanceof Observable)) { options = observableOf(options); } return options.pipe(map((value) => this.transformOptions(value, field))); } transformOptions(options, field) { const to = this.transformSelectProps(field); const opts = []; const groups = {}; console.log(options); options.forEach((option) => { const o = this.transformOption(option, to); if (o.group) { const id = groups[o.label]; if (id === undefined) { groups[o.label] = opts.push(o) - 1; } else { o.group.forEach((o) => opts[id].group.push(o)); } } else { opts.push(o); } }); if (field && field.templateOptions) { field.templateOptions._flatOptions = !Object.keys(groups).length; } return opts; } transformOption(option, to) { const group = to.groupProp(option); if (Array.isArray(group)) { return { label: to.labelProp(option), group: group.map((opt) => this.transformOption(opt, to)), }; } option = { label: to.labelProp(option), value: to.valueProp(option), disabled: !!to.disabledProp(option), }; if (group) { return { label: group, group: [option] }; } return option; } transformSelectProps(field) { const to = field && field.templateOptions ? field.templateOptions : {}; const selectPropFn = (prop) => (typeof prop === 'function' ? prop : (o) => o[prop]); return { groupProp: selectPropFn(to.groupProp || 'group'), labelProp: selectPropFn(to.labelProp || 'label'), valueProp: selectPropFn(to.valueProp || 'value'), disabledProp: selectPropFn(to.disabledProp || 'disabled'), }; } } FormlySelectOptionsPipe.decorators = [ { type: Pipe, args: [{ name: 'formlySelectOptions' },] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLW9wdGlvbnMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25lYnVsYXItZm9ybWx5L3NyYy9saWIvc2VsZWN0LXBpcGUvdHJhbnNmb3JtLW9wdGlvbnMucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsSUFBSSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBaUJyQyxNQUFNLE9BQU8sdUJBQXVCO0lBQzNCLFNBQVMsQ0FBQyxPQUFZLEVBQUUsS0FBeUI7UUFDdEQsSUFBSSxDQUFDLENBQUMsT0FBTyxZQUFZLFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDakM7UUFFRCxPQUFRLE9BQTJCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE9BQWMsRUFBRSxLQUF5QjtRQUNoRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsTUFBTSxJQUFJLEdBQW9CLEVBQUUsQ0FBQztRQUNqQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDekIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFN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QUFxQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiBhcyBvYnNlcnZhYmxlT2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW50ZXJmYWNlIElTZWxlY3RPcHRpb24ge1xuICBsYWJlbDogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHZhbHVlPzogYW55O1xuICBncm91cD86IElTZWxlY3RPcHRpb25bXTtcbn1cblxudHlwZSBJVHJhbnNmb3JtT3B0aW9uID0gUGFydGlhbDx7XG4gIGxhYmVsUHJvcDogKG9wdGlvbjogYW55KSA9PiBzdHJpbmc7XG4gIHZhbHVlUHJvcDogKG9wdGlvbjogYW55KSA9PiBhbnk7XG4gIGRpc2FibGVkUHJvcDogKG9wdGlvbjogYW55KSA9PiBib29sZWFuO1xuICBncm91cFByb3A6IChvcHRpb246IGFueSkgPT4gc3RyaW5nO1xufT47XG5cbkBQaXBlKHsgbmFtZTogJ2Zvcm1seVNlbGVjdE9wdGlvbnMnIH0pXG5leHBvcnQgY2xhc3MgRm9ybWx5U2VsZWN0T3B0aW9uc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHVibGljIHRyYW5zZm9ybShvcHRpb25zOiBhbnksIGZpZWxkPzogRm9ybWx5RmllbGRDb25maWcpOiBPYnNlcnZhYmxlPElTZWxlY3RPcHRpb25bXT4ge1xuICAgIGlmICghKG9wdGlvbnMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSkge1xuICAgICAgb3B0aW9ucyA9IG9ic2VydmFibGVPZihvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKG9wdGlvbnMgYXMgT2JzZXJ2YWJsZTxhbnk+KS5waXBlKG1hcCgodmFsdWUpID0+IHRoaXMudHJhbnNmb3JtT3B0aW9ucyh2YWx1ZSwgZmllbGQpKSk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybU9wdGlvbnMob3B0aW9uczogYW55W10sIGZpZWxkPzogRm9ybWx5RmllbGRDb25maWcpOiBJU2VsZWN0T3B0aW9uW10ge1xuICAgIGNvbnN0IHRvID0gdGhpcy50cmFuc2Zvcm1TZWxlY3RQcm9wcyhmaWVsZCk7XG4gICAgY29uc3Qgb3B0czogSVNlbGVjdE9wdGlvbltdID0gW107XG4gICAgY29uc3QgZ3JvdXBzID0ge307XG5cbiAgICBjb25zb2xlLmxvZyhvcHRpb25zKTtcbiAgICBvcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4ge1xuICAgICAgY29uc3QgbyA9IHRoaXMudHJhbnNmb3JtT3B0aW9uKG9wdGlvbiwgdG8pO1xuICAgICAgaWYgKG8uZ3JvdXApIHtcbiAgICAgICAgY29uc3QgaWQgPSBncm91cHNbby5sYWJlbF07XG4gICAgICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZ3JvdXBzW28ubGFiZWxdID0gb3B0cy5wdXNoKG8pIC0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvLmdyb3VwLmZvckVhY2goKG8pID0+IG9wdHNbaWRdLmdyb3VwLnB1c2gobykpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRzLnB1c2gobyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoZmllbGQgJiYgZmllbGQudGVtcGxhdGVPcHRpb25zKSB7XG4gICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuX2ZsYXRPcHRpb25zID0gIU9iamVjdC5rZXlzKGdyb3VwcykubGVuZ3RoO1xuICAgIH1cblxuICAgIHJldHVybiBvcHRzO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1PcHRpb24ob3B0aW9uOiBhbnksIHRvOiBJVHJhbnNmb3JtT3B0aW9uKTogSVNlbGVjdE9wdGlvbiB7XG4gICAgY29uc3QgZ3JvdXAgPSB0by5ncm91cFByb3Aob3B0aW9uKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShncm91cCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxhYmVsOiB0by5sYWJlbFByb3Aob3B0aW9uKSxcbiAgICAgICAgZ3JvdXA6IGdyb3VwLm1hcCgob3B0KSA9PiB0aGlzLnRyYW5zZm9ybU9wdGlvbihvcHQsIHRvKSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIG9wdGlvbiA9IHtcbiAgICAgIGxhYmVsOiB0by5sYWJlbFByb3Aob3B0aW9uKSxcbiAgICAgIHZhbHVlOiB0by52YWx1ZVByb3Aob3B0aW9uKSxcbiAgICAgIGRpc2FibGVkOiAhIXRvLmRpc2FibGVkUHJvcChvcHRpb24pLFxuICAgIH07XG5cbiAgICBpZiAoZ3JvdXApIHtcbiAgICAgIHJldHVybiB7IGxhYmVsOiBncm91cCwgZ3JvdXA6IFtvcHRpb25dIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtU2VsZWN0UHJvcHMoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKTogSVRyYW5zZm9ybU9wdGlvbiB7XG4gICAgY29uc3QgdG8gPSBmaWVsZCAmJiBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMgPyBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMgOiB7fTtcbiAgICBjb25zdCBzZWxlY3RQcm9wRm4gPSAocHJvcDogYW55KSA9PiAodHlwZW9mIHByb3AgPT09ICdmdW5jdGlvbicgPyBwcm9wIDogKG8pID0+IG9bcHJvcF0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdyb3VwUHJvcDogc2VsZWN0UHJvcEZuKHRvLmdyb3VwUHJvcCB8fCAnZ3JvdXAnKSxcbiAgICAgIGxhYmVsUHJvcDogc2VsZWN0UHJvcEZuKHRvLmxhYmVsUHJvcCB8fCAnbGFiZWwnKSxcbiAgICAgIHZhbHVlUHJvcDogc2VsZWN0UHJvcEZuKHRvLnZhbHVlUHJvcCB8fCAndmFsdWUnKSxcbiAgICAgIGRpc2FibGVkUHJvcDogc2VsZWN0UHJvcEZuKHRvLmRpc2FibGVkUHJvcCB8fCAnZGlzYWJsZWQnKSxcbiAgICB9O1xuICB9XG59XG4iXX0=