UNPKG

@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
/** * @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