@fdot/angular-staff
Version:
The angular-staff package wraps service calls to FDOT Staff API and also includes pipes and components based on bootstrap 4. ## Installation The angular staff package use a peer dependency of ng-bootstrap so you will need to also perform an NPM install
130 lines (129 loc) • 11.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { AngularStaffService } from './../angular-staff.service';
import { Component, Input, Output, EventEmitter } from '@angular/core';
import { debounceTime, distinctUntilChanged, tap, switchMap, catchError } from 'rxjs/operators';
import { of } from 'rxjs';
export class StaffSelectorComponent {
/**
* @param {?} staffService
*/
constructor(staffService) {
this.staffService = staffService;
this.selected = new EventEmitter();
this.searching = false;
this.searchFailed = false;
this.search = (text$) => text$.pipe(debounceTime(300), distinctUntilChanged(), tap(() => this.searching = true), switchMap((term) => term && term.length > 2 ?
this.staffService.SearchActiveStaffByName(term).pipe(tap(() => this.searchFailed = false), catchError(() => {
this.searchFailed = true;
return of([]);
}))
: of([])), tap(() => this.searching = false));
this.formatter = (result) => {
if (result != null) {
return this.staffService.Format(result, this.format);
}
return '';
};
}
/**
* @param {?} value
* @return {?}
*/
set value(value) {
this._value = value;
this.staffService.GetStaffById(value).subscribe((s) => {
if (s) {
this.model = s;
this.selected.emit(s);
}
});
}
/**
* @return {?}
*/
get value() {
return this._value;
}
/**
* @return {?}
*/
ngOnInit() {
}
/**
* @return {?}
*/
onBlur() {
if (typeof this.model !== 'object') {
this.model = null;
this.selected.emit(null);
}
}
/**
* @param {?} event
* @return {?}
*/
itemSelected(event) {
if (event) {
this.selected.emit(event.item);
}
}
}
StaffSelectorComponent.decorators = [
{ type: Component, args: [{
// tslint:disable-next-line:component-selector
selector: 'fdot-staff-selector',
template: `<div class="form-group">
<input type="text" class="form-control" [class.is-invalid]="searchFailed" [(ngModel)]="model" [ngbTypeahead]="search" placeholder="{{placeholder}}"
[editable]="false" (blur)="onBlur()" [resultFormatter]="formatter" (selectItem)="itemSelected($event)" [inputFormatter]="formatter"
/>
<span *ngIf="searching">searching...</span>
<div class="invalid-feedback" *ngIf="searchFailed">No results found</div>
</div>`,
styles: [``]
},] },
];
/** @nocollapse */
StaffSelectorComponent.ctorParameters = () => [
{ type: AngularStaffService, },
];
StaffSelectorComponent.propDecorators = {
"selected": [{ type: Output },],
"format": [{ type: Input },],
"placeholder": [{ type: Input },],
"value": [{ type: Input },],
};
function StaffSelectorComponent_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
StaffSelectorComponent.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
StaffSelectorComponent.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
StaffSelectorComponent.propDecorators;
/** @type {?} */
StaffSelectorComponent.prototype.selected;
/** @type {?} */
StaffSelectorComponent.prototype.model;
/** @type {?} */
StaffSelectorComponent.prototype.format;
/** @type {?} */
StaffSelectorComponent.prototype.placeholder;
/** @type {?} */
StaffSelectorComponent.prototype._value;
/** @type {?} */
StaffSelectorComponent.prototype.searching;
/** @type {?} */
StaffSelectorComponent.prototype.searchFailed;
/** @type {?} */
StaffSelectorComponent.prototype.search;
/** @type {?} */
StaffSelectorComponent.prototype.formatter;
/** @type {?} */
StaffSelectorComponent.prototype.staffService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZmYtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZkb3QvYW5ndWxhci1zdGFmZi8iLCJzb3VyY2VzIjpbImxpYi9zdGFmZi1zZWxlY3Rvci9zdGFmZi1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hHLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFldEMsTUFBTTs7OztJQUVKLFlBQW9CLFlBQWlDO1FBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjt3QkFHZixJQUFJLFlBQVksRUFBZTt5QkF5QnpELEtBQUs7NEJBQ0YsS0FBSztzQkFZWCxDQUFDLEtBQXlCLEVBQTZCLEVBQUUsQ0FDaEUsS0FBSyxDQUFDLElBQUksQ0FDUixZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLG9CQUFvQixFQUFFLEVBQ3RCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUNoQyxTQUFTLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNsRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsRUFDcEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDekIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNmLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQ1QsRUFDRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FDbEM7eUJBUVMsQ0FBQyxNQUFtQixFQUFVLEVBQUU7WUFDMUMsRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3REO1lBQ0QsTUFBTSxDQUFDLEVBQUUsQ0FBQztTQUNYO0tBckV5RDs7Ozs7UUFjdEQsS0FBSyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBYyxFQUFFLEVBQUU7WUFDakUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN2QjtTQUNGLENBQUMsQ0FBQzs7Ozs7SUFHTCxJQUFJLEtBQUs7UUFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjs7OztJQUtELFFBQVE7S0FDUDs7OztJQUVELE1BQU07UUFDSixFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQjtLQUNGOzs7OztJQW1CRCxZQUFZLENBQUMsS0FBa0M7UUFDN0MsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQztLQUNGOzs7WUE1RUYsU0FBUyxTQUFDOztnQkFFVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixRQUFRLEVBQUU7Ozs7OztPQU1MO2dCQUNMLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQzthQUNiOzs7O1lBakJRLG1CQUFtQjs7O3lCQXNCekIsTUFBTTt1QkFJTixLQUFLOzRCQUVMLEtBQUs7c0JBS0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWZmTWVtYmVyIH0gZnJvbSAnLi4vbW9kZWxzL3N0YWZmbWVtYmVyLm1vZGVsJztcclxuaW1wb3J0IHsgQW5ndWxhclN0YWZmU2VydmljZSB9IGZyb20gJy4vLi4vYW5ndWxhci1zdGFmZi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YXAsIHN3aXRjaE1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTmdiVHlwZWFoZWFkU2VsZWN0SXRlbUV2ZW50IH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL3R5cGVhaGVhZC90eXBlYWhlYWRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ2Zkb3Qtc3RhZmYtc2VsZWN0b3InLFxyXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtjbGFzcy5pcy1pbnZhbGlkXT1cInNlYXJjaEZhaWxlZFwiIFsobmdNb2RlbCldPVwibW9kZWxcIiBbbmdiVHlwZWFoZWFkXT1cInNlYXJjaFwiIHBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCJcclxuICAgIFtlZGl0YWJsZV09XCJmYWxzZVwiIChibHVyKT1cIm9uQmx1cigpXCIgW3Jlc3VsdEZvcm1hdHRlcl09XCJmb3JtYXR0ZXJcIiAoc2VsZWN0SXRlbSk9XCJpdGVtU2VsZWN0ZWQoJGV2ZW50KVwiIFtpbnB1dEZvcm1hdHRlcl09XCJmb3JtYXR0ZXJcIlxyXG4gIC8+XHJcbiAgPHNwYW4gKm5nSWY9XCJzZWFyY2hpbmdcIj5zZWFyY2hpbmcuLi48L3NwYW4+XHJcbiAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInNlYXJjaEZhaWxlZFwiPk5vIHJlc3VsdHMgZm91bmQ8L2Rpdj5cclxuPC9kaXY+YCxcclxuICBzdHlsZXM6IFtgYF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFN0YWZmU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0YWZmU2VydmljZTogQW5ndWxhclN0YWZmU2VydmljZSkgeyB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8U3RhZmZNZW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxTdGFmZk1lbWJlcj4oKTtcclxuXHJcbiAgbW9kZWw6IFN0YWZmTWVtYmVyO1xyXG4gIEBJbnB1dCgpXHJcbiAgZm9ybWF0OiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIF92YWx1ZTogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5zdGFmZlNlcnZpY2UuR2V0U3RhZmZCeUlkKHZhbHVlKS5zdWJzY3JpYmUoKHM6IFN0YWZmTWVtYmVyKSA9PiB7XHJcbiAgICAgIGlmIChzKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbCA9IHM7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCB2YWx1ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgc2VhcmNoRmFpbGVkID0gZmFsc2U7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKCkge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLm1vZGVsICE9PSAnb2JqZWN0Jykge1xyXG4gICAgICB0aGlzLm1vZGVsID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VhcmNoID0gKHRleHQkOiBPYnNlcnZhYmxlPHN0cmluZz4pOiBPYnNlcnZhYmxlPFN0YWZmTWVtYmVyW10+ID0+XHJcbiAgICB0ZXh0JC5waXBlKFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgdGFwKCgpID0+IHRoaXMuc2VhcmNoaW5nID0gdHJ1ZSksXHJcbiAgICAgIHN3aXRjaE1hcCgodGVybTogc3RyaW5nKSA9PiB0ZXJtICYmIHRlcm0ubGVuZ3RoID4gMiA/XHJcbiAgICAgICAgdGhpcy5zdGFmZlNlcnZpY2UuU2VhcmNoQWN0aXZlU3RhZmZCeU5hbWUodGVybSkucGlwZShcclxuICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnNlYXJjaEZhaWxlZCA9IGZhbHNlKSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaEZhaWxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICAgICAgICB9KSlcclxuICAgICAgICA6IG9mKFtdKVxyXG4gICAgICApLFxyXG4gICAgICB0YXAoKCkgPT4gdGhpcy5zZWFyY2hpbmcgPSBmYWxzZSlcclxuICAgICk7XHJcblxyXG4gIGl0ZW1TZWxlY3RlZChldmVudDogTmdiVHlwZWFoZWFkU2VsZWN0SXRlbUV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KGV2ZW50Lml0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0dGVyID0gKHJlc3VsdDogU3RhZmZNZW1iZXIpOiBzdHJpbmcgPT4ge1xyXG4gICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnN0YWZmU2VydmljZS5Gb3JtYXQocmVzdWx0LCB0aGlzLmZvcm1hdCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG59Il19