@knora/search
Version:
Knora ui module: search
101 lines • 12.1 kB
JavaScript
import * as tslib_1 from "tslib";
import { Component, EventEmitter, Inject, Input, Output } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
// https://stackoverflow.com/questions/45661010/dynamic-nested-reactive-form-expressionchangedafterithasbeencheckederror
var resolvedPromise = Promise.resolve(null);
var SelectResourceClassComponent = /** @class */ (function () {
function SelectResourceClassComponent(fb) {
this.fb = fb;
// event emitted to parent component once a resource class is selected by the user
this.resourceClassSelectedEvent = new EventEmitter();
}
Object.defineProperty(SelectResourceClassComponent.prototype, "resourceClasses", {
// getter method for resource classes (used in template)
get: function () {
return this._resourceClasses;
},
// setter method for resource classes when being updated by parent component
set: function (value) {
this.resourceClassSelected = undefined; // reset on updates
this._resourceClasses = value;
},
enumerable: true,
configurable: true
});
/**
* Returns the Iri of the selected resource class.
*
* @returns the Iri of the selected resource class or false in case no resource class is selected.
*/
SelectResourceClassComponent.prototype.getResourceClassSelected = function () {
if (this.resourceClassSelected !== undefined && this.resourceClassSelected !== null) {
return this.resourceClassSelected;
}
else {
return false;
}
};
/**
* Initalizes the FormGroup for the resource class selection.
* The initial value is set to null.
*/
SelectResourceClassComponent.prototype.initForm = function () {
var _this = this;
// build a form for the resource class selection
this.form = this.fb.group({
resourceClass: [null] // resource class selection is optional
});
// store and emit Iri of the resource class when selected
this.form.valueChanges.subscribe(function (data) {
_this.resourceClassSelected = data.resourceClass;
_this.resourceClassSelectedEvent.emit(_this.resourceClassSelected);
});
};
SelectResourceClassComponent.prototype.ngOnInit = function () {
this.initForm();
// add form to the parent form group
this.formGroup.addControl('resourceClass', this.form);
};
SelectResourceClassComponent.prototype.ngOnChanges = function () {
var _this = this;
if (this.form !== undefined) {
// resource classes have been reinitialized
// reset form
resolvedPromise.then(function () {
// remove this form from the parent form group
_this.formGroup.removeControl('resourceClass');
_this.initForm();
// add form to the parent form group
_this.formGroup.addControl('resourceClass', _this.form);
});
}
};
SelectResourceClassComponent.ctorParameters = function () { return [
{ type: FormBuilder, decorators: [{ type: Inject, args: [FormBuilder,] }] }
]; };
tslib_1.__decorate([
Input(),
tslib_1.__metadata("design:type", FormGroup)
], SelectResourceClassComponent.prototype, "formGroup", void 0);
tslib_1.__decorate([
Input(),
tslib_1.__metadata("design:type", Array),
tslib_1.__metadata("design:paramtypes", [Array])
], SelectResourceClassComponent.prototype, "resourceClasses", null);
tslib_1.__decorate([
Output(),
tslib_1.__metadata("design:type", Object)
], SelectResourceClassComponent.prototype, "resourceClassSelectedEvent", void 0);
SelectResourceClassComponent = tslib_1.__decorate([
Component({
selector: 'kui-select-resource-class',
template: "<mat-form-field *ngIf=\"resourceClasses.length > 0\" class=\"large-field\">\n <mat-select placeholder=\"Select a Resource Class (optional)\" [formControl]=\"form.controls['resourceClass']\">\n <mat-option [value]=\"null\">no selection</mat-option>\n <!-- undo selection of a resource class -->\n <mat-option *ngFor=\"let resourceClass of resourceClasses\" [value]=\"resourceClass.id\">{{ resourceClass.label }}\n </mat-option>\n </mat-select>\n</mat-form-field>\n",
styles: [""]
}),
tslib_1.__param(0, Inject(FormBuilder)),
tslib_1.__metadata("design:paramtypes", [FormBuilder])
], SelectResourceClassComponent);
return SelectResourceClassComponent;
}());
export { SelectResourceClassComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXJlc291cmNlLWNsYXNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Brbm9yYS9zZWFyY2gvIiwic291cmNlcyI6WyJsaWIvZXh0ZW5kZWQtc2VhcmNoL3NlbGVjdC1yZXNvdXJjZS1jbGFzcy9zZWxlY3QtcmVzb3VyY2UtY2xhc3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4RCx3SEFBd0g7QUFDeEgsSUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQU85QztJQTJCSSxzQ0FBMEMsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFYekQsa0ZBQWtGO1FBQ3hFLCtCQUEwQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFXbEUsQ0FBQztJQXRCRCxzQkFBSSx5REFBZTtRQUtuQix3REFBd0Q7YUFDeEQ7WUFDSSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUNqQyxDQUFDO1FBVkQsNEVBQTRFO2FBRTVFLFVBQW9CLEtBQTJCO1lBQzNDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxTQUFTLENBQUMsQ0FBQyxtQkFBbUI7WUFDM0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUNsQyxDQUFDOzs7T0FBQTtJQXFCRDs7OztPQUlHO0lBQ0gsK0RBQXdCLEdBQXhCO1FBQ0ksSUFBSSxJQUFJLENBQUMscUJBQXFCLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxJQUFJLEVBQUU7WUFDakYsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7U0FDckM7YUFBTTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNLLCtDQUFRLEdBQWhCO1FBQUEsaUJBV0M7UUFWRyxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN0QixhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyx1Q0FBdUM7U0FDaEUsQ0FBQyxDQUFDO1FBRUgseURBQXlEO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFDLElBQUk7WUFDbEMsS0FBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDaEQsS0FBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCwrQ0FBUSxHQUFSO1FBRUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLG9DQUFvQztRQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTFELENBQUM7SUFFRCxrREFBVyxHQUFYO1FBQUEsaUJBbUJDO1FBakJHLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFFekIsMkNBQTJDO1lBQzNDLGFBQWE7WUFDYixlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUVqQiw4Q0FBOEM7Z0JBQzlDLEtBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUU5QyxLQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBRWhCLG9DQUFvQztnQkFDcEMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUxRCxDQUFDLENBQUMsQ0FBQztTQUVOO0lBQ0wsQ0FBQzs7Z0JBN0Q2QyxXQUFXLHVCQUEzQyxNQUFNLFNBQUMsV0FBVzs7SUF6QnZCO1FBQVIsS0FBSyxFQUFFOzBDQUFZLFNBQVM7bUVBQUM7SUFJOUI7UUFEQyxLQUFLLEVBQUU7MENBQ21CLEtBQUs7aURBQUwsS0FBSzt1RUFHL0I7SUFRUztRQUFULE1BQU0sRUFBRTs7b0ZBQXlEO0lBakJ6RCw0QkFBNEI7UUFMeEMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLDJCQUEyQjtZQUNyQyx5ZUFBcUQ7O1NBRXhELENBQUM7UUE0QmdCLG1CQUFBLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtpREFBYSxXQUFXO09BM0JoRCw0QkFBNEIsQ0EwRnhDO0lBQUQsbUNBQUM7Q0FBQSxBQTFGRCxJQTBGQztTQTFGWSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJlc291cmNlQ2xhc3MgfSBmcm9tICdAa25vcmEvY29yZSc7XG5cbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ1NjYxMDEwL2R5bmFtaWMtbmVzdGVkLXJlYWN0aXZlLWZvcm0tZXhwcmVzc2lvbmNoYW5nZWRhZnRlcml0aGFzYmVlbmNoZWNrZWRlcnJvclxuY29uc3QgcmVzb2x2ZWRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2t1aS1zZWxlY3QtcmVzb3VyY2UtY2xhc3MnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtcmVzb3VyY2UtY2xhc3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NlbGVjdC1yZXNvdXJjZS1jbGFzcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdFJlc291cmNlQ2xhc3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgICBASW5wdXQoKSBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICAgIC8vIHNldHRlciBtZXRob2QgZm9yIHJlc291cmNlIGNsYXNzZXMgd2hlbiBiZWluZyB1cGRhdGVkIGJ5IHBhcmVudCBjb21wb25lbnRcbiAgICBASW5wdXQoKVxuICAgIHNldCByZXNvdXJjZUNsYXNzZXModmFsdWU6IEFycmF5PFJlc291cmNlQ2xhc3M+KSB7XG4gICAgICAgIHRoaXMucmVzb3VyY2VDbGFzc1NlbGVjdGVkID0gdW5kZWZpbmVkOyAvLyByZXNldCBvbiB1cGRhdGVzXG4gICAgICAgIHRoaXMuX3Jlc291cmNlQ2xhc3NlcyA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8vIGdldHRlciBtZXRob2QgZm9yIHJlc291cmNlIGNsYXNzZXMgKHVzZWQgaW4gdGVtcGxhdGUpXG4gICAgZ2V0IHJlc291cmNlQ2xhc3NlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlQ2xhc3NlcztcbiAgICB9XG5cbiAgICAvLyBldmVudCBlbWl0dGVkIHRvIHBhcmVudCBjb21wb25lbnQgb25jZSBhIHJlc291cmNlIGNsYXNzIGlzIHNlbGVjdGVkIGJ5IHRoZSB1c2VyXG4gICAgQE91dHB1dCgpIHJlc291cmNlQ2xhc3NTZWxlY3RlZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvLyBhdmFpbGFibGUgcmVzb3VyY2UgY2xhc3NlcyBmb3Igc2VsZWN0aW9uXG4gICAgcHJpdmF0ZSBfcmVzb3VyY2VDbGFzc2VzOiBBcnJheTxSZXNvdXJjZUNsYXNzPjtcblxuICAgIC8vIHN0b3JlcyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHJlc291cmNlIGNsYXNzXG4gICAgcHJpdmF0ZSByZXNvdXJjZUNsYXNzU2VsZWN0ZWQ6IHN0cmluZztcblxuICAgIGZvcm06IEZvcm1Hcm91cDtcblxuICAgIGNvbnN0cnVjdG9yIChASW5qZWN0KEZvcm1CdWlsZGVyKSBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIElyaSBvZiB0aGUgc2VsZWN0ZWQgcmVzb3VyY2UgY2xhc3MuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgSXJpIG9mIHRoZSBzZWxlY3RlZCByZXNvdXJjZSBjbGFzcyBvciBmYWxzZSBpbiBjYXNlIG5vIHJlc291cmNlIGNsYXNzIGlzIHNlbGVjdGVkLlxuICAgICAqL1xuICAgIGdldFJlc291cmNlQ2xhc3NTZWxlY3RlZCgpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5yZXNvdXJjZUNsYXNzU2VsZWN0ZWQgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnJlc291cmNlQ2xhc3NTZWxlY3RlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2VDbGFzc1NlbGVjdGVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGFsaXplcyB0aGUgRm9ybUdyb3VwIGZvciB0aGUgcmVzb3VyY2UgY2xhc3Mgc2VsZWN0aW9uLlxuICAgICAqIFRoZSBpbml0aWFsIHZhbHVlIGlzIHNldCB0byBudWxsLlxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdEZvcm0oKSB7XG4gICAgICAgIC8vIGJ1aWxkIGEgZm9ybSBmb3IgdGhlIHJlc291cmNlIGNsYXNzIHNlbGVjdGlvblxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgIHJlc291cmNlQ2xhc3M6IFtudWxsXSAvLyByZXNvdXJjZSBjbGFzcyBzZWxlY3Rpb24gaXMgb3B0aW9uYWxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gc3RvcmUgYW5kIGVtaXQgSXJpIG9mIHRoZSByZXNvdXJjZSBjbGFzcyB3aGVuIHNlbGVjdGVkXG4gICAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc291cmNlQ2xhc3NTZWxlY3RlZCA9IGRhdGEucmVzb3VyY2VDbGFzcztcbiAgICAgICAgICAgIHRoaXMucmVzb3VyY2VDbGFzc1NlbGVjdGVkRXZlbnQuZW1pdCh0aGlzLnJlc291cmNlQ2xhc3NTZWxlY3RlZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuXG4gICAgICAgIHRoaXMuaW5pdEZvcm0oKTtcblxuICAgICAgICAvLyBhZGQgZm9ybSB0byB0aGUgcGFyZW50IGZvcm0gZ3JvdXBcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCgncmVzb3VyY2VDbGFzcycsIHRoaXMuZm9ybSk7XG5cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcblxuICAgICAgICBpZiAodGhpcy5mb3JtICE9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgICAgLy8gcmVzb3VyY2UgY2xhc3NlcyBoYXZlIGJlZW4gcmVpbml0aWFsaXplZFxuICAgICAgICAgICAgLy8gcmVzZXQgZm9ybVxuICAgICAgICAgICAgcmVzb2x2ZWRQcm9taXNlLnRoZW4oKCkgPT4ge1xuXG4gICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHRoaXMgZm9ybSBmcm9tIHRoZSBwYXJlbnQgZm9ybSBncm91cFxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3Jlc291cmNlQ2xhc3MnKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdEZvcm0oKTtcblxuICAgICAgICAgICAgICAgIC8vIGFkZCBmb3JtIHRvIHRoZSBwYXJlbnQgZm9ybSBncm91cFxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woJ3Jlc291cmNlQ2xhc3MnLCB0aGlzLmZvcm0pO1xuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=