@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
104 lines • 14.6 kB
JavaScript
import { Component, Input } from '@angular/core';
import { FormControl } from '@angular/forms';
import { debounceTime, map } from 'rxjs/operators';
import { UserValue } from '../../../data-fields/user-field/models/user-value';
import { AbstractHeaderModeComponent } from '../abstract-header-mode.component';
import * as i0 from "@angular/core";
import * as i1 from "@angular/material/dialog";
export class AbstractSearchModeComponent extends AbstractHeaderModeComponent {
_dialog;
/**
* The time that must elapse since last keypress in search input before a search request is sent
*/
SEARCH_DEBOUNCE_TIME = 600;
subHeaderColumn;
subClearHeader;
formControls = [];
headerService;
constructor(_dialog) {
super();
this._dialog = _dialog;
}
ngOnInit() {
this.subHeaderColumn = this.headerService.headerColumnCount$.subscribe(newCount => this.updateHeaderCount(newCount));
this.subClearHeader = this.headerService.clearHeaderSearch$.subscribe(columnNumber => this.clearInput(columnNumber));
}
ngOnDestroy() {
this.subClearHeader.unsubscribe();
this.subHeaderColumn.unsubscribe();
}
/**
* Updates the underlying objects to match the new desired number of columns.
*
* If the new number of columns is greater than the current one, the columns will be filled with default/blank values.
*
* If the new number of columns is smaller than the current one, the superfluous columns will be removed.
*
* @param newCount the new number of columns
*/
updateHeaderCount(newCount) {
if (newCount < this.formControls.length) {
this.formControls = this.formControls.slice(0, newCount);
return;
}
while (this.formControls.length < newCount) {
this.addNewColumn();
}
}
/**
* Adds a new column to the headers search and binds it's FormControl to the service
*/
addNewColumn() {
const formControl = new FormControl();
const i = this.formControls.length;
formControl.valueChanges.pipe(debounceTime(this.SEARCH_DEBOUNCE_TIME), map(value => value instanceof UserValue ? value.id : value)).subscribe(value => {
this.headerService.headerSearchInputChanged(i, value);
});
this.formControls.push(formControl);
}
/**
* Opens a user assign side menu component and sets the selected user as value of the form control object
* that corresponds to the given column.
*
* If no user is selected the value of the corresponding form control si cleared.
* @param column the index of the columns that should have it's form control value set to the selected user
* @param component is the component that we want to open
*/
selectAbstractUser(column, component) {
let valueReturned = false;
const dialogRef = this._dialog.open(component, {
panelClass: "dialog-responsive"
});
dialogRef.afterClosed().subscribe($event => {
if ($event.data) {
this.formControls[column].setValue($event.data.fullName);
this.formControls[column].setValue($event.data, { emitModelToViewChange: false });
valueReturned = true;
}
else if (!valueReturned) {
this.formControls[column].setValue(undefined);
}
});
}
/**
* Clears the value of the form control object in the given column
* @param column the index of the column that should have it's value cleared
*/
clearInput(column) {
if (column >= 0 && column < this.formControls.length) {
this.formControls[column].setValue(undefined);
}
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractSearchModeComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AbstractSearchModeComponent, selector: "ncc-abstract-seatch-mode", inputs: { headerService: "headerService" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractSearchModeComponent, decorators: [{
type: Component,
args: [{
selector: 'ncc-abstract-seatch-mode',
template: ''
}]
}], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { headerService: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtc2VhcmNoLW1vZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLW1vZGVzL3NlYXJjaC1tb2RlL2Fic3RyYWN0LXNlYXJjaC1tb2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBMEIsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxZQUFZLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRzVFLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDOzs7QUFROUUsTUFBTSxPQUFnQiwyQkFBNEIsU0FBUSwyQkFBMkI7SUFjM0Q7SUFadEI7O09BRUc7SUFDTyxvQkFBb0IsR0FBRyxHQUFHLENBQUM7SUFDM0IsZUFBZSxDQUFlO0lBQzlCLGNBQWMsQ0FBZTtJQUVoQyxZQUFZLEdBQXVCLEVBQUUsQ0FBQztJQUd0QyxhQUFhLENBQXdCO0lBRTVDLFlBQXNCLE9BQWtCO1FBQ3BDLEtBQUssRUFBRSxDQUFDO1FBRFUsWUFBTyxHQUFQLE9BQU8sQ0FBVztJQUV4QyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNySCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENB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QUEyQjtrQkFKaEQsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxRQUFRLEVBQUUsRUFBRTtpQkFDZjs4RUFhVSxhQUFhO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0SGVhZGVyU2VydmljZX0gZnJvbSAnLi4vLi4vYWJzdHJhY3QtaGVhZGVyLXNlcnZpY2UnO1xuaW1wb3J0IHtGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtVc2VyVmFsdWV9IGZyb20gJy4uLy4uLy4uL2RhdGEtZmllbGRzL3VzZXItZmllbGQvbW9kZWxzL3VzZXItdmFsdWUnO1xuaW1wb3J0IHtTaWRlTWVudVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NpZGUtbWVudS9zZXJ2aWNlcy9zaWRlLW1lbnUuc2VydmljZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Fic3RyYWN0SGVhZGVyTW9kZUNvbXBvbmVudH0gZnJvbSAnLi4vYWJzdHJhY3QtaGVhZGVyLW1vZGUuY29tcG9uZW50JztcbmltcG9ydCB7VXNlckxpc3RJbmplY3RlZERhdGF9IGZyb20gJy4uLy4uLy4uL3NpZGUtbWVudS9jb250ZW50LWNvbXBvbmVudHMvdXNlci1hc3NpZ24vbW9kZWwvdXNlci1saXN0LWluamVjdGVkLWRhdGEnO1xuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLWFic3RyYWN0LXNlYXRjaC1tb2RlJyxcbiAgICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RTZWFyY2hNb2RlQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RIZWFkZXJNb2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRpbWUgdGhhdCBtdXN0IGVsYXBzZSBzaW5jZSBsYXN0IGtleXByZXNzIGluIHNlYXJjaCBpbnB1dCBiZWZvcmUgYSBzZWFyY2ggcmVxdWVzdCBpcyBzZW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIFNFQVJDSF9ERUJPVU5DRV9USU1FID0gNjAwO1xuICAgIHByb3RlY3RlZCBzdWJIZWFkZXJDb2x1bW46IFN1YnNjcmlwdGlvbjtcbiAgICBwcm90ZWN0ZWQgc3ViQ2xlYXJIZWFkZXI6IFN1YnNjcmlwdGlvbjtcblxuICAgIHB1YmxpYyBmb3JtQ29udHJvbHM6IEFycmF5PEZvcm1Db250cm9sPiA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGVhZGVyU2VydmljZTogQWJzdHJhY3RIZWFkZXJTZXJ2aWNlO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9kaWFsb2c6IE1hdERpYWxvZykge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnN1YkhlYWRlckNvbHVtbiA9IHRoaXMuaGVhZGVyU2VydmljZS5oZWFkZXJDb2x1bW5Db3VudCQuc3Vic2NyaWJlKG5ld0NvdW50ID0+IHRoaXMudXBkYXRlSGVhZGVyQ291bnQobmV3Q291bnQpKTtcbiAgICAgICAgdGhpcy5zdWJDbGVhckhlYWRlciA9IHRoaXMuaGVhZGVyU2VydmljZS5jbGVhckhlYWRlclNlYXJjaCQuc3Vic2NyaWJlKGNvbHVtbk51bWJlciA9PiB0aGlzLmNsZWFySW5wdXQoY29sdW1uTnVtYmVyKSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3ViQ2xlYXJIZWFkZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zdWJIZWFkZXJDb2x1bW4udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSB1bmRlcmx5aW5nIG9iamVjdHMgdG8gbWF0Y2ggdGhlIG5ldyBkZXNpcmVkIG51bWJlciBvZiBjb2x1bW5zLlxuICAgICAqXG4gICAgICogSWYgdGhlIG5ldyBudW1iZXIgb2YgY29sdW1ucyBpcyBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgb25lLCB0aGUgY29sdW1ucyB3aWxsIGJlIGZpbGxlZCB3aXRoIGRlZmF1bHQvYmxhbmsgdmFsdWVzLlxuICAgICAqXG4gICAgICogSWYgdGhlIG5ldyBudW1iZXIgb2YgY29sdW1ucyBpcyBzbWFsbGVyIHRoYW4gdGhlIGN1cnJlbnQgb25lLCB0aGUgc3VwZXJmbHVvdXMgY29sdW1ucyB3aWxsIGJlIHJlbW92ZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmV3Q291bnQgdGhlIG5ldyBudW1iZXIgb2YgY29sdW1uc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCB1cGRhdGVIZWFkZXJDb3VudChuZXdDb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChuZXdDb3VudCA8IHRoaXMuZm9ybUNvbnRyb2xzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbHMgPSB0aGlzLmZvcm1Db250cm9scy5zbGljZSgwLCBuZXdDb3VudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAodGhpcy5mb3JtQ29udHJvbHMubGVuZ3RoIDwgbmV3Q291bnQpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkTmV3Q29sdW1uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgbmV3IGNvbHVtbiB0byB0aGUgaGVhZGVycyBzZWFyY2ggYW5kIGJpbmRzIGl0J3MgRm9ybUNvbnRyb2wgdG8gdGhlIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWRkTmV3Q29sdW1uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICAgICAgICBjb25zdCBpID0gdGhpcy5mb3JtQ29udHJvbHMubGVuZ3RoO1xuICAgICAgICBmb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSh0aGlzLlNFQVJDSF9ERUJPVU5DRV9USU1FKSxcbiAgICAgICAgICAgIG1hcCh2YWx1ZSA9PiB2YWx1ZSBpbnN0YW5jZW9mIFVzZXJWYWx1ZSA/IHZhbHVlLmlkIDogdmFsdWUpXG4gICAgICAgICkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyU2VydmljZS5oZWFkZXJTZWFyY2hJbnB1dENoYW5nZWQoaSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbHMucHVzaChmb3JtQ29udHJvbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgYSB1c2VyIGFzc2lnbiBzaWRlIG1lbnUgY29tcG9uZW50IGFuZCBzZXRzIHRoZSBzZWxlY3RlZCB1c2VyIGFzIHZhbHVlIG9mIHRoZSBmb3JtIGNvbnRyb2wgb2JqZWN0XG4gICAgICogdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgZ2l2ZW4gY29sdW1uLlxuICAgICAqXG4gICAgICogSWYgbm8gdXNlciBpcyBzZWxlY3RlZCB0aGUgdmFsdWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgZm9ybSBjb250cm9sIHNpIGNsZWFyZWQuXG4gICAgICogQHBhcmFtIGNvbHVtbiB0aGUgaW5kZXggb2YgdGhlIGNvbHVtbnMgdGhhdCBzaG91bGQgaGF2ZSBpdCdzIGZvcm0gY29udHJvbCB2YWx1ZSBzZXQgdG8gdGhlIHNlbGVjdGVkIHVzZXJcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50IGlzIHRoZSBjb21wb25lbnQgdGhhdCB3ZSB3YW50IHRvIG9wZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0QWJzdHJhY3RVc2VyKGNvbHVtbjogbnVtYmVyLCBjb21wb25lbnQ6IFR5cGU8YW55Pik6IHZvaWQge1xuICAgICAgICBsZXQgdmFsdWVSZXR1cm5lZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLl9kaWFsb2cub3Blbihjb21wb25lbnQsIHtcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFwiZGlhbG9nLXJlc3BvbnNpdmVcIlxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCRldmVudCA9PiB7XG4gICAgICAgICAgICBpZiAoJGV2ZW50LmRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sc1tjb2x1bW5dLnNldFZhbHVlKCgkZXZlbnQuZGF0YSBhcyBVc2VyVmFsdWUpLmZ1bGxOYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sc1tjb2x1bW5dLnNldFZhbHVlKCRldmVudC5kYXRhIGFzIFVzZXJWYWx1ZSwge2VtaXRNb2RlbFRvVmlld0NoYW5nZTogZmFsc2V9KTtcbiAgICAgICAgICAgICAgICB2YWx1ZVJldHVybmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlUmV0dXJuZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sc1tjb2x1bW5dLnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFycyB0aGUgdmFsdWUgb2YgdGhlIGZvcm0gY29udHJvbCBvYmplY3QgaW4gdGhlIGdpdmVuIGNvbHVtblxuICAgICAqIEBwYXJhbSBjb2x1bW4gdGhlIGluZGV4IG9mIHRoZSBjb2x1bW4gdGhhdCBzaG91bGQgaGF2ZSBpdCdzIHZhbHVlIGNsZWFyZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY2xlYXJJbnB1dChjb2x1bW46IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoY29sdW1uID49IDAgJiYgY29sdW1uIDwgdGhpcy5mb3JtQ29udHJvbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sc1tjb2x1bW5dLnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=