@ngx-performance-ui/ui
Version:
Ngx Performance UI - UI
182 lines • 13.9 kB
JavaScript
/**
* @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