ngx-nebular-formly
Version:
Ngx Formly integration for Nebular UI
68 lines • 9.77 kB
JavaScript
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=