med-table
Version:
Wrapper over table of primeng library for Ministry of Health
45 lines • 10.3 kB
JavaScript
import { get } from 'lodash';
import { Component, Input, ViewChild } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "../../../services/med-table.service";
import * as i2 from "primeng/table";
import * as i3 from "primeng/multiselect";
import * as i4 from "primeng/api";
import * as i5 from "@angular/forms";
export class FilterSelectComponent {
constructor(store, cd) {
this.store = store;
this.cd = cd;
}
get filterSelectOptions() {
if (this.settings.lazy) {
return this.store.getFilterSelectData(this.key) || [];
}
const filteredData = this.filterDataHandler.filter(this.store.filters, this.key);
const options = filteredData.map(obj => get(obj, this.key)).filter(Boolean);
return [...new Set(options)]; // delete duplicates
}
ngAfterViewInit() {
this.cd.detectChanges();
}
onFilter({ filter }) {
const regexp = new RegExp(filter, 'i');
this.selectRef._filteredOptions = this.filterSelectOptions.filter((value) => regexp.test(value));
}
}
FilterSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: FilterSelectComponent, deps: [{ token: i1.MedTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
FilterSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: FilterSelectComponent, selector: "filter-select", inputs: { key: "key", settings: "settings", filterDataHandler: "filterDataHandler" }, viewQueries: [{ propertyName: "selectRef", first: true, predicate: ["selectRef"], descendants: true }], ngImport: i0, template: "<p-columnFilter [field]=\"key\" matchMode=\"in\" [showMenu]=\"false\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-multiSelect\n #selectRef\n placeholder=\"\u0412\u0441\u0456\"\n styleClass=\"filter-select\"\n [ngModel]=\"value\"\n [options]=\"filterSelectOptions\"\n (onChange)=\"filter($event.value)\"\n (onFilter)=\"onFilter($event)\"\n >\n </p-multiSelect>\n </ng-template>\n</p-columnFilter>\n", styles: [":host ::ng-deep .filter-select .p-inputtext{min-width:180px}:host ::ng-deep .filter-select .p-multiselect-items{max-width:360px}:host ::ng-deep .filter-select .p-multiselect-item{white-space:break-spaces}\n"], components: [{ type: i2.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping"] }, { type: i3.MultiSelect, selector: "p-multiSelect", inputs: ["style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "label", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "autoZIndex", "baseZIndex", "filterBy", "virtualScroll", "itemSize", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "scrollHeight", "defaultLabel", "placeholder", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onPanelShow", "onPanelHide"] }], directives: [{ type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: FilterSelectComponent, decorators: [{
type: Component,
args: [{ selector: 'filter-select', template: "<p-columnFilter [field]=\"key\" matchMode=\"in\" [showMenu]=\"false\">\n <ng-template pTemplate=\"filter\" let-value let-filter=\"filterCallback\">\n <p-multiSelect\n #selectRef\n placeholder=\"\u0412\u0441\u0456\"\n styleClass=\"filter-select\"\n [ngModel]=\"value\"\n [options]=\"filterSelectOptions\"\n (onChange)=\"filter($event.value)\"\n (onFilter)=\"onFilter($event)\"\n >\n </p-multiSelect>\n </ng-template>\n</p-columnFilter>\n", styles: [":host ::ng-deep .filter-select .p-inputtext{min-width:180px}:host ::ng-deep .filter-select .p-multiselect-items{max-width:360px}:host ::ng-deep .filter-select .p-multiselect-item{white-space:break-spaces}\n"] }]
}], ctorParameters: function () { return [{ type: i1.MedTableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { key: [{
type: Input
}], settings: [{
type: Input
}], filterDataHandler: [{
type: Input
}], selectRef: [{
type: ViewChild,
args: ['selectRef']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWQtdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL2ZpbHRlcnMvZmlsdGVyLXNlbGVjdC9maWx0ZXItc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZC10YWJsZS9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVycy9maWx0ZXItc2VsZWN0L2ZpbHRlci1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM3QixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQWdELE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBVzFHLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFBb0IsS0FBc0IsRUFBVSxFQUFxQjtRQUFyRCxVQUFLLEdBQUwsS0FBSyxDQUFpQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQW1CO0lBQUcsQ0FBQztJQVE3RSxJQUFJLG1CQUFtQjtRQUNyQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3ZEO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakYsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVFLE9BQU8sQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7SUFDcEQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQXVCO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsU0FBaUIsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUcsQ0FBQzs7a0hBMUJVLHFCQUFxQjtzR0FBckIscUJBQXFCLG1QQ1psQyxvZUFjQTsyRkRGYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsZUFBZTtzSUFPaEIsR0FBRztzQkFBWCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVrQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBDaGFuZ2VEZXRlY3RvclJlZiwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNZWRUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tZWQtdGFibGUuc2VydmljZSc7XG5pbXBvcnQgeyBNZWRUYWJsZVNldHRpbmdzTG9jYWwgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9NZWRUYWJsZVNldHRpbmdzTG9jYWwnO1xuaW1wb3J0IHsgSUZpbHRlckRhdGFIYW5kbGVyIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvRmlsdGVyRGF0YUhhbmRsZXIvRmlsdGVyRGF0YUhhbmRsZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmaWx0ZXItc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlci1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItc2VsZWN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyU2VsZWN0Q29tcG9uZW50PFQ+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IE1lZFRhYmxlU2VydmljZSwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgQElucHV0KCkga2V5ITogc3RyaW5nO1xuICBASW5wdXQoKSBzZXR0aW5ncyE6IE1lZFRhYmxlU2V0dGluZ3NMb2NhbDtcbiAgQElucHV0KCkgZmlsdGVyRGF0YUhhbmRsZXIhOiBJRmlsdGVyRGF0YUhhbmRsZXI8VD47XG5cbiAgQFZpZXdDaGlsZCgnc2VsZWN0UmVmJykgc2VsZWN0UmVmITogRWxlbWVudFJlZjtcblxuICBnZXQgZmlsdGVyU2VsZWN0T3B0aW9ucygpOiBzdHJpbmdbXSB7XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MubGF6eSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0RmlsdGVyU2VsZWN0RGF0YSh0aGlzLmtleSkgfHwgW107XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gdGhpcy5maWx0ZXJEYXRhSGFuZGxlci5maWx0ZXIodGhpcy5zdG9yZS5maWx0ZXJzLCB0aGlzLmtleSk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGZpbHRlcmVkRGF0YS5tYXAob2JqID0+IGdldChvYmosIHRoaXMua2V5KSkuZmlsdGVyKEJvb2xlYW4pO1xuICAgIHJldHVybiBbLi4ubmV3IFNldChvcHRpb25zKV07IC8vIGRlbGV0ZSBkdXBsaWNhdGVzXG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBvbkZpbHRlcih7IGZpbHRlciB9OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cChmaWx0ZXIsICdpJyk7XG4gICAgKHRoaXMuc2VsZWN0UmVmIGFzIGFueSkuX2ZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuZmlsdGVyU2VsZWN0T3B0aW9ucy5maWx0ZXIoKHZhbHVlKSA9PiByZWdleHAudGVzdCh2YWx1ZSkpO1xuICB9XG59XG4iLCI8cC1jb2x1bW5GaWx0ZXIgW2ZpZWxkXT1cImtleVwiIG1hdGNoTW9kZT1cImluXCIgW3Nob3dNZW51XT1cImZhbHNlXCI+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmaWx0ZXJcIiBsZXQtdmFsdWUgbGV0LWZpbHRlcj1cImZpbHRlckNhbGxiYWNrXCI+XG4gICAgPHAtbXVsdGlTZWxlY3RcbiAgICAgICNzZWxlY3RSZWZcbiAgICAgIHBsYWNlaG9sZGVyPVwi0JLRgdGWXCJcbiAgICAgIHN0eWxlQ2xhc3M9XCJmaWx0ZXItc2VsZWN0XCJcbiAgICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcbiAgICAgIFtvcHRpb25zXT1cImZpbHRlclNlbGVjdE9wdGlvbnNcIlxuICAgICAgKG9uQ2hhbmdlKT1cImZpbHRlcigkZXZlbnQudmFsdWUpXCJcbiAgICAgIChvbkZpbHRlcik9XCJvbkZpbHRlcigkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9wLW11bHRpU2VsZWN0PlxuICA8L25nLXRlbXBsYXRlPlxuPC9wLWNvbHVtbkZpbHRlcj5cbiJdfQ==