UNPKG

@ngx-performance-ui/ui

Version:
182 lines 13.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ViewEncapsulation, ChangeDetectionStrategy, forwardRef, Input, Injector, } from '@angular/core'; import { AbstractNgModelComponent } from '@ngx-performance-ui/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import compare from 'just-compare'; /** * @record */ export function ListboxItem() { } if (false) { /** @type {?} */ ListboxItem.prototype.text; /** @type {?|undefined} */ ListboxItem.prototype.value; /** @type {?|undefined} */ ListboxItem.prototype.classes; } export class ListboxComponent extends AbstractNgModelComponent { /** * @param {?} injector */ constructor(injector) { super(injector); this.injector = injector; this.items = []; this.classes = ''; this.activeClass = 'active'; this.title = ''; this.isFilterShow = true; this.filterPlaceholder = ''; this.multiple = false; this.filterValue = ''; this.trackByFn = (/** * @param {?} index * @param {?} item * @return {?} */ (index, item) => item.text || index); } /** * @param {?} item * @return {?} */ onClick(item) { if (!this.multiple) { compare(this.value, item) ? (this.value = (/** @type {?} */ ({}))) : (this.value = item); return; } if (!this.value || !Array.isArray(this.value) || !this.value.length) this.value = []; /** @type {?} */ const index = this.value.findIndex((/** * @param {?} val * @return {?} */ val => compare(val, item))); if (index > -1) { this.value = [...this.value.slice(0, index), ...this.value.slice(index + 1)]; } else { /** @type {?} */ const cloneItem = Object.assign({}, item); delete cloneItem.classes; this.value = [...this.value, cloneItem]; } this.cdRef.detectChanges(); } /** * @param {?} item * @return {?} */ isActive(item) { if (!this.multiple) { return compare(this.value, item); } if (!this.value || !((/** @type {?} */ (this.value))).length) return; /** @type {?} */ const cloneItem = Object.assign({}, item); delete cloneItem.classes; return ((/** @type {?} */ (this.value))).findIndex((/** * @param {?} val * @return {?} */ val => compare(val, cloneItem))) > -1; } } ListboxComponent.decorators = [ { type: Component, args: [{ selector: 'p-listbox', template: ` <div class="card"> <div class="card-header"> <div class="col-12 px-0"> <h5>{{ title }}</h5> </div> <div *ngIf="isFilterShow" class="col-12 px-0 mt-2"> <div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text"><fa-icon [icon]="['fas', 'search']"></fa-icon></span> </div> <p-input [(ngModel)]="filterValue" [attr.placeholder]="filterPlaceholder" classes="bg-transparent" class="w-75" ></p-input> </div> </div> </div> <ul class="list-group list-group-flush {{ classes }}"> <li *pFor=" let item of items; filterValue: filterValue; filterContain: true; filterKey: 'text'; trackBy: trackByFn " [ngClass]="[isActive(item) ? activeClass : '']" (click)="onClick(item)" style="cursor: pointer" class="list-group-item {{ item.classes }}" > {{ item.text }} </li> </ul> </div> `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ () => ListboxComponent)), multi: true, }, ] }] } ]; /** @nocollapse */ ListboxComponent.ctorParameters = () => [ { type: Injector } ]; ListboxComponent.propDecorators = { items: [{ type: Input }], classes: [{ type: Input }], activeClass: [{ type: Input }], title: [{ type: Input }], isFilterShow: [{ type: Input }], filterPlaceholder: [{ type: Input }], multiple: [{ type: Input }] }; if (false) { /** @type {?} */ ListboxComponent.prototype.items; /** @type {?} */ ListboxComponent.prototype.classes; /** @type {?} */ ListboxComponent.prototype.activeClass; /** @type {?} */ ListboxComponent.prototype.title; /** @type {?} */ ListboxComponent.prototype.isFilterShow; /** @type {?} */ ListboxComponent.prototype.filterPlaceholder; /** @type {?} */ ListboxComponent.prototype.multiple; /** @type {?} */ ListboxComponent.prototype.filterValue; /** @type {?} */ ListboxComponent.prototype.trackByFn; /** @type {?} */ ListboxComponent.prototype.injector; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXBlcmZvcm1hbmNlLXVpL3VpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvbGlzdGJveC9saXN0Ym94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLFVBQVUsRUFDVixLQUFLLEVBRUwsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sT0FBTyxNQUFNLGNBQWMsQ0FBQzs7OztBQUVuQyxpQ0FJQzs7O0lBSEMsMkJBQWE7O0lBQ2IsNEJBQVk7O0lBQ1osOEJBQWlCOztBQXNEbkIsTUFBTSxPQUFPLGdCQUFpQixTQUFRLHdCQUFxRDs7OztJQW9CekYsWUFBbUIsUUFBa0I7UUFDbkMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBREMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWxCckMsVUFBSyxHQUFrQixFQUFFLENBQUM7UUFFakIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUVyQixnQkFBVyxHQUFXLFFBQVEsQ0FBQztRQUUvQixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRW5CLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBRTdCLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUUvQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRW5DLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRXpCLGNBQVM7Ozs7O1FBQWlDLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLEVBQUM7SUFJOUUsQ0FBQzs7Ozs7SUFFRCxPQUFPLENBQUMsSUFBaUI7UUFDdkIs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QUV6QixxQ0FBOEU7O0lBRWxFLG9DQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIEluamVjdG9yLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0TmdNb2RlbENvbXBvbmVudCB9IGZyb20gJ0BuZ3gtcGVyZm9ybWFuY2UtdWkvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCBjb21wYXJlIGZyb20gJ2p1c3QtY29tcGFyZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdGJveEl0ZW0ge1xuICB0ZXh0OiBzdHJpbmc7XG4gIHZhbHVlPzogYW55O1xuICBjbGFzc2VzPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwLWxpc3Rib3gnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBweC0wXCI+XG4gICAgICAgICAgPGg1Pnt7IHRpdGxlIH19PC9oNT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0ZpbHRlclNob3dcIiBjbGFzcz1cImNvbC0xMiBweC0wIG10LTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgbWItM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLXByZXBlbmRcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCI+PGZhLWljb24gW2ljb25dPVwiWydmYXMnLCAnc2VhcmNoJ11cIj48L2ZhLWljb24+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8cC1pbnB1dFxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlclZhbHVlXCJcbiAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwiZmlsdGVyUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICBjbGFzc2VzPVwiYmctdHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInctNzVcIlxuICAgICAgICAgICAgPjwvcC1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDx1bCBjbGFzcz1cImxpc3QtZ3JvdXAgIGxpc3QtZ3JvdXAtZmx1c2gge3sgY2xhc3NlcyB9fVwiPlxuICAgICAgICA8bGlcbiAgICAgICAgICAqcEZvcj1cIlxuICAgICAgICAgICAgbGV0IGl0ZW0gb2YgaXRlbXM7XG4gICAgICAgICAgICBmaWx0ZXJWYWx1ZTogZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICBmaWx0ZXJDb250YWluOiB0cnVlO1xuICAgICAgICAgICAgZmlsdGVyS2V5OiAndGV4dCc7XG4gICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5Rm5cbiAgICAgICAgICBcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIltpc0FjdGl2ZShpdGVtKSA/IGFjdGl2ZUNsYXNzIDogJyddXCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGljayhpdGVtKVwiXG4gICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxuICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIHt7IGl0ZW0uY2xhc3NlcyB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBpdGVtLnRleHQgfX1cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExpc3Rib3hDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlzdGJveENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0TmdNb2RlbENvbXBvbmVudDxMaXN0Ym94SXRlbSB8IExpc3Rib3hJdGVtW10+IHtcbiAgQElucHV0KClcbiAgaXRlbXM6IExpc3Rib3hJdGVtW10gPSBbXTtcblxuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSBhY3RpdmVDbGFzczogc3RyaW5nID0gJ2FjdGl2ZSc7XG5cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpIGlzRmlsdGVyU2hvdzogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgZmlsdGVyUGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZmlsdGVyVmFsdWU6IHN0cmluZyA9ICcnO1xuXG4gIHRyYWNrQnlGbjogVHJhY2tCeUZ1bmN0aW9uPExpc3Rib3hJdGVtPiA9IChpbmRleCwgaXRlbSkgPT4gaXRlbS50ZXh0IHx8IGluZGV4O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cblxuICBvbkNsaWNrKGl0ZW06IExpc3Rib3hJdGVtKSB7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICBjb21wYXJlKHRoaXMudmFsdWUsIGl0ZW0pID8gKHRoaXMudmFsdWUgPSB7fSBhcyBMaXN0Ym94SXRlbSkgOiAodGhpcy52YWx1ZSA9IGl0ZW0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWx1ZSB8fCAhQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSB8fCAhdGhpcy52YWx1ZS5sZW5ndGgpIHRoaXMudmFsdWUgPSBbXTtcblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy52YWx1ZS5maW5kSW5kZXgodmFsID0+IGNvbXBhcmUodmFsLCBpdGVtKSk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZS5zbGljZSgwLCBpbmRleCksIC4uLnRoaXMudmFsdWUuc2xpY2UoaW5kZXggKyAxKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNsb25lSXRlbSA9IHsgLi4uaXRlbSB9O1xuICAgICAgZGVsZXRlIGNsb25lSXRlbS5jbGFzc2VzO1xuICAgICAgdGhpcy52YWx1ZSA9IFsuLi50aGlzLnZhbHVlLCBjbG9uZUl0ZW1dO1xuICAgIH1cbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGlzQWN0aXZlKGl0ZW06IExpc3Rib3hJdGVtKSB7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICByZXR1cm4gY29tcGFyZSh0aGlzLnZhbHVlLCBpdGVtKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsdWUgfHwgISh0aGlzLnZhbHVlIGFzIExpc3Rib3hJdGVtW10pLmxlbmd0aCkgcmV0dXJuO1xuICAgIGNvbnN0IGNsb25lSXRlbSA9IHsgLi4uaXRlbSB9O1xuICAgIGRlbGV0ZSBjbG9uZUl0ZW0uY2xhc3NlcztcbiAgICByZXR1cm4gKHRoaXMudmFsdWUgYXMgTGlzdGJveEl0ZW1bXSkuZmluZEluZGV4KHZhbCA9PiBjb21wYXJlKHZhbCwgY2xvbmVJdGVtKSkgPiAtMTtcbiAgfVxufVxuIl19